Merge branch 'master' of gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot

This commit is contained in:
annampak 2017-09-29 19:17:19 +03:00
commit 0a982bd290
12 changed files with 93 additions and 134 deletions

View File

@ -254,7 +254,6 @@
</dependency>
<!-- Various libs -->
<dependency>
<groupId>org.apache.commons</groupId>

View File

@ -1,25 +1,13 @@
package controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import dao.entities.DMPDao;
import entities.DMP;
@Controller
public class UIController {

View File

@ -6,9 +6,6 @@ import java.util.UUID;
import org.springframework.util.MultiValueMap;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import entities.DMP;
import entities.DMPProfile;
import entities.DataRepository;

View File

@ -1,59 +1,39 @@
package rest;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.UUID;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.apache.commons.lang3.SerializationUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import dao.entities.DMPDao;
import dao.entities.DMPProfileDao;
import dao.entities.DMPResearcherDao;
import dao.entities.DataRepositoryDao;
import dao.entities.DatasetDao;
import dao.entities.DatasetProfileDao;
import dao.entities.DatasetProfileRulesetDao;
import dao.entities.DatasetProfileViewstyleDao;
import dao.entities.DatasetRegistryDao;
import dao.entities.DatasetServiceDao;
import dao.entities.OrganisationDao;
import dao.entities.ProjectDao;
import dao.entities.RegistryDao;
import dao.entities.ResearcherDao;
import dao.entities.ServiceDao;
import entities.DMP;
import entities.DMPProfile;
import entities.DataRepository;
import entities.Dataset;
import entities.DatasetProfile;
import entities.DatasetProfileRuleset;
import entities.DatasetProfileViewstyle;
import entities.DatasetRegistry;
import entities.DatasetService;
import entities.Organisation;
import entities.Project;
import entities.Registry;
import entities.Service;
import helpers.Transformers;

View File

@ -0,0 +1,72 @@
package rest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLEncoder;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin
public class Proxy {
private String allowedHost;
public Proxy(String allowedHost) throws MalformedURLException {
this.allowedHost = new URL(allowedHost).getHost();
}
@RequestMapping(method = RequestMethod.GET, value = { "/proxy" }, produces="application/json")
public @ResponseBody ResponseEntity<Object> proxy(@RequestParam("url") String remoteUrl) {
StringBuffer response = new StringBuffer();
URL url;
try {
URL tempUrl = new URL(remoteUrl);
// URI uri = new URI(scheme, userInfo, host, port, path, query, fragment);
URI uri = new URI(tempUrl.getProtocol(), null, tempUrl.getHost(), tempUrl.getPort(), tempUrl.getPath(), (tempUrl.getQuery()!=null)?URLEncoder.encode(tempUrl.getQuery()):null, tempUrl.getRef());
url = uri.toURL();
if(!url.getHost().equals(allowedHost))
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("{'reason': 'You are not allowed to proxy -> "+url.getHost()+"'}");
//if allowed, proceed
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Accept", "application/vnd.api+json; charset=utf-8");
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) { // success
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
response.append(inputLine);
in.close();
} else {
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("{'reason': 'Remote server responded with: "+responseCode+"'}");
}
return ResponseEntity.status(HttpStatus.OK).body(response.toString());
} catch (IOException | URISyntaxException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("{'reason': 'Could not proxy to given host'}");
}
}
}

View File

@ -25,7 +25,7 @@ public class CustomAuthenticationProvider implements AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
/*
if (authentication != null) {
// check whether the token is valid
String token = (String)authentication.getCredentials();
@ -47,7 +47,9 @@ public class CustomAuthenticationProvider implements AuthenticationProvider {
}
else
throw new AuthenticationServiceException("Authentication failed");
*/
return new UsernamePasswordAuthenticationToken("", "", new ArrayList<>());
}

View File

@ -8,7 +8,6 @@ import java.sql.Types;
import java.util.UUID;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.usertype.UserType;

View File

@ -7,7 +7,6 @@ import java.sql.SQLException;
import java.sql.Types;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.usertype.UserType;

View File

@ -1,85 +0,0 @@
//package types;
//
//import java.io.Serializable;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.sql.Types;
//import org.hibernate.HibernateException;
//import org.hibernate.engine.spi.SharedSessionContractImplementor;
//
///**
// * Store and retrieve a PostgreSQL "xml" column as a Java string.
// */
//public class SQLXMLType implements org.hibernate.usertype.UserType {
//
// private final int[] sqlTypesSupported = new int[] { Types.VARCHAR };
//
// public int[] sqlTypes() {
// return sqlTypesSupported;
// }
//
// public Class returnedClass() {
// return String.class;
// }
//
// public boolean equals(Object x, Object y) throws HibernateException {
// if (x == null) {
// return y == null;
// } else {
// return x.equals(y);
// }
// }
//
// public int hashCode(Object x) throws HibernateException {
// return x == null ? null : x.hashCode();
// }
//
// public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {
// assert(names.length == 1);
// String xmldoc = rs.getString( names[0] );
// return rs.wasNull() ? null : xmldoc;
// }
//
// public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
// if (value == null) {
// st.setNull(index, Types.OTHER);
// } else {
// st.setObject(index, value, Types.OTHER);
// }
// }
//
// public Object deepCopy(Object value) throws HibernateException {
// if (value == null)
// return null;
// return new String( (String)value );
// }
//
// public boolean isMutable() {
// return false;
// }
//
// public Serializable disassemble(Object value) throws HibernateException {
// return (String) value;
// }
//
// public Object assemble(Serializable cached, Object owner) throws HibernateException {
// return (String) cached;
// }
//
// public Object replace(Object original, Object target, Object owner) throws HibernateException {
// return original;
// }
//
// public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner)
// throws HibernateException, SQLException {
// // TODO Auto-generated method stub
// return null;
// }
//
// public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session)
// throws HibernateException, SQLException {
// // TODO Auto-generated method stub
//
// }
//}

View File

@ -11,10 +11,8 @@
<context:property-placeholder location="classpath*:**/dmp.properties" />
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
@ -26,14 +24,15 @@
<property name="jpaDialect" ref="jpaDialect" />
</bean>
<bean id="proxy" class="rest.Proxy">
<constructor-arg type = "String" value = "${proxy.allowed.host}"/>
</bean>
<bean id="springApplicationContext" class="dao.SpringJpaDaoFactory" />
<bean id="databaseColumnType" class="typedefinition.PostgreSQLDatabaseColumnType" />
<!-- <bean id="securityConfig" class="security.SecurityConfig" /> -->
<!-- <bean id="securityWebApplicationInitializer" class="security.SecurityWebApplicationInitializer" /> -->
<bean id="tokenAuthenticationFilter" class="security.TokenAuthenticationFilter" />
<bean id="customAuthenticationProvider" class="security.CustomAuthenticationProvider" />

View File

@ -10,10 +10,16 @@
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<context:property-placeholder location="classpath*:**/dmp.properties" />
<mvc:resources mapping="resources/**" location="/resources/" />
<mvc:annotation-driven />
<context:component-scan base-package="rest" />
<bean id="proxy" class="rest.Proxy">
<constructor-arg type = "String" value = "${proxy.allowed.host}"/>
</bean>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/" />

View File

@ -5,11 +5,14 @@
##########################Persistence##########################################
persistence.jdbc.driver = org.postgresql.Driver
persistence.jdbc.url = jdbc:postgresql://develdb1.madgik.di.uoa.gr:5432/dmptool
persistence.dbusername = dmptool
persistence.dbpassword = dmpt00lu$r
persistence.jdbc.url = jdbc:postgresql://host:5432/dbname
persistence.dbusername = valid-user
persistence.dbpassword = valid-pass
##########################/Persistence##########################################
###################Allowed Proxy Service Host ############################
proxy.allowed.host = https://eestore.paas2.uninett.no
#######################################################
########################Persistence/Hibernate Generic#############################
persistence.hibernate.show_sql = false