securis/pom.xml
.. .. @@ -33,12 +33,17 @@ 33 33 </dependency> 34 34 <dependency> 35 35 <groupId>org.jboss.resteasy</groupId> 36 - <artifactId>resteasy-jaxrs</artifactId>36 + <artifactId>resteasy-jackson-provider</artifactId>37 37 <version>3.0.5.Final</version> 38 38 </dependency> 39 39 <dependency> 40 40 <groupId>org.jboss.resteasy</groupId> 41 - <artifactId>resteasy-jackson-provider</artifactId>41 + <artifactId>resteasy-multipart-provider</artifactId>42 + <version>3.0.5.Final</version>43 + </dependency>44 + <dependency>45 + <groupId>org.jboss.resteasy</groupId>46 + <artifactId>resteasy-jaxrs</artifactId>42 47 <version>3.0.5.Final</version> 43 48 </dependency> 44 49 </dependencies> securis/src/main/java/net/curisit/securis/DefaultExceptionHandler.java
.. .. @@ -1,28 +1,45 @@ 1 1 package net.curisit.securis; 2 2 3 +import javax.servlet.http.HttpServletRequest;3 4 import javax.ws.rs.ForbiddenException; 5 +import javax.ws.rs.core.Context;4 6 import javax.ws.rs.core.MediaType; 5 7 import javax.ws.rs.core.Response; 6 8 import javax.ws.rs.core.Response.Status; 9 +import javax.ws.rs.core.SecurityContext;7 10 import javax.ws.rs.ext.ExceptionMapper; 8 11 import javax.ws.rs.ext.Provider; 9 12 13 +import org.slf4j.Logger;14 +import org.slf4j.LoggerFactory;15 +10 16 @Provider 11 17 public class DefaultExceptionHandler implements ExceptionMapper<Exception> { 18 + private static final Logger log = LoggerFactory.getLogger(DefaultExceptionHandler.class);12 19 13 20 public static final String ERROR_MESSAGE_HEADER = "X-SECURIS-ERROR"; 14 21 15 22 public DefaultExceptionHandler() { 16 - MainApp.log.info("Creating DefaultExceptionHandler ");23 + log.info("Creating DefaultExceptionHandler ");17 24 } 25 +26 + @Context27 + HttpServletRequest request;28 + @Context29 + SecurityContext bsc;18 30 19 31 @Override 20 32 public Response toResponse(Exception e) { 21 33 // log.info("Creating DefaultExceptionHandler "); 22 34 // e.printStackTrace(); 23 - if (e instanceof ForbiddenException)35 + if (e instanceof ForbiddenException) {36 + log.warn("Unauthorized access to {}, user: {}", request.getPathInfo(), bsc.getUserPrincipal());24 37 return Response.status(Status.UNAUTHORIZED).header(ERROR_MESSAGE_HEADER, "Unathorized access to the application").type(MediaType.APPLICATION_JSON).build(); 38 + }25 39 40 + log.error("Unexpected error accesing to '{}' by user: {}", request.getPathInfo(), bsc.getUserPrincipal());41 + log.error("Request sent from {}, with User-Agent: {}", request.getRemoteHost(), request.getHeader("User-Agent"));42 + log.error("Request url: " + request.getRequestURL(), e);26 43 return Response.serverError().header(ERROR_MESSAGE_HEADER, "Unexpected error: " + e.toString()).type(MediaType.APPLICATION_JSON).build(); 27 44 } 28 45 } securis/src/main/java/net/curisit/securis/services/LicenseServices.java
.. .. @@ -6,8 +6,11 @@ 6 6 7 7 import javax.inject.Named; 8 8 import javax.servlet.http.HttpServletRequest; 9 +import javax.ws.rs.Consumes;9 10 import javax.ws.rs.DefaultValue; 11 +import javax.ws.rs.FormParam;10 12 import javax.ws.rs.GET; 13 +import javax.ws.rs.POST;11 14 import javax.ws.rs.Path; 12 15 import javax.ws.rs.PathParam; 13 16 import javax.ws.rs.Produces; .. .. @@ -20,11 +23,13 @@ 20 23 import net.curisit.integrity.beans.ServiceResponse; 21 24 22 25 import org.apache.commons.io.IOUtils; 26 +import org.jboss.resteasy.annotations.providers.multipart.MultipartForm;27 +import org.jboss.resteasy.annotations.providers.multipart.PartType;23 28 import org.slf4j.Logger; 24 29 import org.slf4j.LoggerFactory; 25 30 26 31 // The Java class will be hosted at the URI path "/myresource" 27 -@Path("/license")32 +@Path("/test")28 33 public class LicenseServices { 29 34 30 35 // private LicenseHelper licenseHelper = InjectorFactory.getInjector().getInstance(LicenseHelper.class); .. .. @@ -38,6 +43,7 @@ 38 43 private URI uri; 39 44 40 45 public LicenseServices() { 46 +41 47 } 42 48 43 49 /** .. .. @@ -70,55 +76,56 @@ 70 76 /** 71 77 * @return the version of the three entities that can be synchronized (Users, DataSet and Settings) 72 78 */ 79 + @POST80 + @Path("/upload1")81 + @Consumes(MediaType.MULTIPART_FORM_DATA)82 + @Produces(83 + { MediaType.APPLICATION_JSON })84 + public Response testFile1(@MultipartForm FileUploadForm mfdi) {85 + log.info("FORM: texto: {}, file: {}", mfdi.getTexto(), new String(mfdi.getFile()));86 + return Response.ok("OK").build();87 + }88 +73 89 @GET 74 90 @Path("/current/{license}") 75 91 @Produces( 76 92 { MediaType.APPLICATION_JSON }) 77 - public ServiceResponse<ServerConfigVersions> status(@PathParam("license") String license, @DefaultValue("-1") @QueryParam("minorVersion") int minorVersion, @DefaultValue("-1") @QueryParam("majorVersion") int majorVersion) {93 + public ServiceResponse<ServerConfigVersions> testFile(@PathParam("license") String license, @DefaultValue("-1") @QueryParam("minorVersion") int minorVersion, @DefaultValue("-1") @QueryParam("majorVersion") int majorVersion) {78 94 79 95 log.info("Called 'current' service with license: {}", license); 80 96 ServiceResponse<ServerConfigVersions> response = new ServiceResponse<ServerConfigVersions>(); 81 97 82 98 return response; 83 99 } 84 - //85 - // private <T> ServiceResponse<T> buildErrorResponse(ServiceResponse<T> response, String msgErrorCode) {86 - // response.setSuccess(false);87 - // response.setErrorMessage(localManager.getString(msgErrorCode));88 - // response.setErrorMessageCode(msgErrorCode);89 - // return response;90 - // }91 - //92 - // private Date calculateCaducation() {93 - // Integer licenseExpiration = systemParams.getParamAsInt(SystemParams.Keys.CONFIG_SERVER_LICENSE_EXPIRATION);94 - // if (licenseExpiration == null)95 - // licenseExpiration = DEFAULT_LICENSE_EXPIRATION;96 - // return Utils.addDays(new Date(), licenseExpiration);97 - // }98 - //99 - // private boolean validateLicense(String license) {100 - // BasicApplication ba = basicApplicationDao.findByLicense(license);101 - // return (ba != null);102 - // }103 - //104 - // private boolean validateVersion(int minorVersion, int majorVersion) {105 - // return (versionManager.getMajorVersion() == majorVersion);106 - // }107 - //108 - // private BasicApplication findBasicApp(String license) {109 - // BasicApplication ba = basicApplicationDao.findByLicense(license);110 - // return ba;111 - // }112 - //113 - // private License generateLicense() {114 - // // TODO complete all field of the license115 - // License license = new License();116 - // license.setCustomerCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CUSTOMER_CODE));117 - // license.setCSCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CS_CODE));118 - // license.setCRCLogo("00000000");119 - // license.setExpirationDate(calculateCaducation());120 - // license.setInstallCode(codeGenerator.generateInstalationNumber());121 - // return license;122 - // }123 100 101 + public static class FileUploadForm {102 +103 + @FormParam("file1")104 + @PartType("application/octet-stream")105 + private byte[] file;106 +107 + @FormParam("texto1")108 + @PartType("text/plain")109 + private String texto;110 +111 + public FileUploadForm() {112 + }113 +114 + public byte[] getFile() {115 + return file;116 + }117 +118 + public void setFile(byte[] file) {119 + this.file = file;120 + }121 +122 + public void setTexto(final String texto) {123 + this.texto = texto;124 + }125 +126 + public String getTexto() {127 + return texto;128 + }129 +130 + }124 131 } securis/src/main/resources/static/js/angular-animate.min.jssimilarity index 100%rename from securis/src/main/resources/static/js/angular-animate.min.jsrename to securis/src/main/resources/static/js/angular/angular-animate.min.js
securis/src/main/resources/static/js/angular-resource.min.jssimilarity index 100%rename from securis/src/main/resources/static/js/angular-resource.min.jsrename to securis/src/main/resources/static/js/angular/angular-resource.min.js
securis/src/main/resources/static/js/angular-route.min.jssimilarity index 100%rename from securis/src/main/resources/static/js/angular-route.min.jsrename to securis/src/main/resources/static/js/angular/angular-route.min.js
securis/src/main/resources/static/js/angular.min.jssimilarity index 100%rename from securis/src/main/resources/static/js/angular.min.jsrename to securis/src/main/resources/static/js/angular/angular.min.js
securis/src/main/resources/static/js/angular.min.js.mapsimilarity index 100%rename from securis/src/main/resources/static/js/angular.min.js.maprename to securis/src/main/resources/static/js/angular/angular.min.js.map
securis/src/main/resources/static/js/chosen.jssimilarity index 100%rename from securis/src/main/resources/static/js/chosen.jsrename to securis/src/main/resources/static/js/angular/chosen.js
securis/src/main/resources/static/js/toaster.jssimilarity index 100%rename from securis/src/main/resources/static/js/toaster.jsrename to securis/src/main/resources/static/js/angular/toaster.js
securis/src/main/resources/static/js/bootstrap-dialog.jssimilarity index 100%rename from securis/src/main/resources/static/js/bootstrap-dialog.jsrename to securis/src/main/resources/static/js/vendor/bootstrap-dialog.js
securis/src/main/resources/static/js/bootstrap.min.jssimilarity index 100%rename from securis/src/main/resources/static/js/bootstrap.min.jsrename to securis/src/main/resources/static/js/vendor/bootstrap.min.js
securis/src/main/resources/static/js/glyphicons-halflings-regular.woffsimilarity index 100%rename from securis/src/main/resources/static/js/glyphicons-halflings-regular.woffrename to securis/src/main/resources/static/js/vendor/glyphicons-halflings-regular.woffBinary files differ
securis/src/main/resources/static/js/jquery.min.jssimilarity index 100%rename from securis/src/main/resources/static/js/jquery.min.jsrename to securis/src/main/resources/static/js/vendor/jquery.min.js
securis/src/main/resources/static/js/jquery.min.mapsimilarity index 100%rename from securis/src/main/resources/static/js/jquery.min.maprename to securis/src/main/resources/static/js/vendor/jquery.min.map
securis/src/main/resources/static/js/store.jssimilarity index 100%rename from securis/src/main/resources/static/js/store.jsrename to securis/src/main/resources/static/js/vendor/store.js
securis/src/main/resources/static/js/store.min.jssimilarity index 100%rename from securis/src/main/resources/static/js/store.min.jsrename to securis/src/main/resources/static/js/vendor/store.min.js
securis/src/main/resources/static/main.html
.. .. @@ -35,29 +35,29 @@ 35 35 <!-- /container --> 36 36 <script src="/js/vendor/modernizr-2.6.2.min.js"></script> 37 37 <script 38 - src="/js/jquery.min.js"></script>38 + src="/js/vendor/jquery.min.js"></script>39 39 <script type="text/javascript" 40 - src="/js/bootstrap.min.js"></script>40 + src="/js/vendor/bootstrap.min.js"></script>41 41 <script type="text/javascript" 42 - src="/js/angular.min.js"></script>42 + src="/js/vendor/bootstrap-dialog.js"></script>43 43 <script type="text/javascript" 44 - src="/js/angular-route.min.js"></script>44 + src="/js/angular/angular.min.js"></script>45 45 <script type="text/javascript" 46 - src="/js/angular-resource.min.js"></script>46 + src="/js/angular/angular-route.min.js"></script>47 47 <script type="text/javascript" 48 - src="/js/angular-resource.min.js"></script>48 + src="/js/angular/angular-resource.min.js"></script>49 49 <script type="text/javascript" 50 - src="/js/bootstrap-dialog.js"></script>50 + src="/js/angular/angular-resource.min.js"></script>51 51 <script type="text/javascript" 52 - src="/js/toaster.js"></script>52 + src="/js/angular/toaster.js"></script>53 53 <script type="text/javascript" 54 - src="/js/toaster.js"></script>54 + src="/js/angular/toaster.js"></script>55 55 <script type="text/javascript" 56 56 src="/js/vendor/chosen.jquery.js"></script> 57 57 <script type="text/javascript" 58 - src="/js/chosen.js"></script>58 + src="/js/angular/chosen.js"></script>59 59 <script type="text/javascript" 60 - src="/js/store.min.js"></script>60 + src="/js/vendor/store.min.js"></script>61 61 62 62 <script type="text/javascript" src="js/i18n.js"></script> 63 63 <script type="text/javascript" src="js/main.js"></script>