diff --git a/dmp-backend/pom.xml b/dmp-backend/pom.xml index 799574d81..4bd8416a8 100644 --- a/dmp-backend/pom.xml +++ b/dmp-backend/pom.xml @@ -254,7 +254,6 @@ - org.apache.commons diff --git a/dmp-backend/src/main/java/controller/UIController.java b/dmp-backend/src/main/java/controller/UIController.java index f2abddd96..2f1a2d66f 100644 --- a/dmp-backend/src/main/java/controller/UIController.java +++ b/dmp-backend/src/main/java/controller/UIController.java @@ -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 { diff --git a/dmp-backend/src/main/java/helpers/Transformers.java b/dmp-backend/src/main/java/helpers/Transformers.java index a37f198de..7f1f35f74 100644 --- a/dmp-backend/src/main/java/helpers/Transformers.java +++ b/dmp-backend/src/main/java/helpers/Transformers.java @@ -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; diff --git a/dmp-backend/src/main/java/rest/BackendInterface.java b/dmp-backend/src/main/java/rest/BackendInterface.java index c31a769d1..6d3a67b2e 100644 --- a/dmp-backend/src/main/java/rest/BackendInterface.java +++ b/dmp-backend/src/main/java/rest/BackendInterface.java @@ -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; diff --git a/dmp-backend/src/main/java/rest/Proxy.java b/dmp-backend/src/main/java/rest/Proxy.java new file mode 100644 index 000000000..a8e480d93 --- /dev/null +++ b/dmp-backend/src/main/java/rest/Proxy.java @@ -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 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'}"); + } + + } + +} diff --git a/dmp-backend/src/main/java/security/CustomAuthenticationProvider.java b/dmp-backend/src/main/java/security/CustomAuthenticationProvider.java index dd797a0bc..c4674c643 100644 --- a/dmp-backend/src/main/java/security/CustomAuthenticationProvider.java +++ b/dmp-backend/src/main/java/security/CustomAuthenticationProvider.java @@ -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<>()); } diff --git a/dmp-backend/src/main/java/typedefinition/UUIDType.java b/dmp-backend/src/main/java/typedefinition/UUIDType.java index 51e07e8cf..c81e919a7 100644 --- a/dmp-backend/src/main/java/typedefinition/UUIDType.java +++ b/dmp-backend/src/main/java/typedefinition/UUIDType.java @@ -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; diff --git a/dmp-backend/src/main/java/typedefinition/XMLType.java b/dmp-backend/src/main/java/typedefinition/XMLType.java index ec153d888..81091f90f 100644 --- a/dmp-backend/src/main/java/typedefinition/XMLType.java +++ b/dmp-backend/src/main/java/typedefinition/XMLType.java @@ -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; diff --git a/dmp-backend/src/main/java/types/SQLXMLType.java b/dmp-backend/src/main/java/types/SQLXMLType.java deleted file mode 100644 index 02a56242c..000000000 --- a/dmp-backend/src/main/java/types/SQLXMLType.java +++ /dev/null @@ -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 -// -// } -//} \ No newline at end of file diff --git a/dmp-backend/src/main/webapp/WEB-INF/applicationContext.xml b/dmp-backend/src/main/webapp/WEB-INF/applicationContext.xml index 0f6721e4b..40ada7523 100644 --- a/dmp-backend/src/main/webapp/WEB-INF/applicationContext.xml +++ b/dmp-backend/src/main/webapp/WEB-INF/applicationContext.xml @@ -11,9 +11,7 @@ - - @@ -26,13 +24,14 @@ + + + + + - - - - - + diff --git a/dmp-backend/src/main/webapp/WEB-INF/dmp-backend-rest-servlet.xml b/dmp-backend/src/main/webapp/WEB-INF/dmp-backend-rest-servlet.xml index 30257cfd3..8c473efe2 100644 --- a/dmp-backend/src/main/webapp/WEB-INF/dmp-backend-rest-servlet.xml +++ b/dmp-backend/src/main/webapp/WEB-INF/dmp-backend-rest-servlet.xml @@ -10,10 +10,16 @@ http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> + + + + + + diff --git a/dmp-backend/src/main/webapp/WEB-INF/dmp.properties b/dmp-backend/src/main/webapp/WEB-INF/dmp.properties index 5fe107785..743c06c7a 100644 --- a/dmp-backend/src/main/webapp/WEB-INF/dmp.properties +++ b/dmp-backend/src/main/webapp/WEB-INF/dmp.properties @@ -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