| securis/pom.xml | patch | view | blame | history | |
| securis/src/main/java/net/curisit/securis/AuthFilter.java | patch | view | blame | history | |
| securis/src/main/java/net/curisit/securis/MainApp.java | patch | view | blame | history | |
| securis/src/main/java/net/curisit/securis/RestServicesApplication.java | patch | view | blame | history | |
| securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java | patch | view | blame | history | |
| securis/src/main/java/net/curisit/securis/ioc/SecurisModule.java | patch | view | blame | history | |
| securis/src/main/java/net/curisit/securis/services/BasicServices.java | patch | view | blame | history | |
| securis/src/main/java/net/curisit/securis/services/LicenseServices.java | patch | view | blame | history | |
| securis/src/main/resources/static/index.html | patch | view | blame | history | |
| securis/src/main/resources/static/login.html | patch | view | blame | history | |
| securis/src/main/resources/static/main.html | patch | view | blame | history |
securis/pom.xml
.. .. @@ -7,16 +7,6 @@ 7 7 <description>CurisTEC Server Licenses</description> 8 8 <dependencies> 9 9 <dependency> 10 - <groupId>com.sun.jersey</groupId>11 - <artifactId>jersey-grizzly2</artifactId>12 - <version>1.18</version>13 - </dependency>14 - <dependency>15 - <groupId>org.glassfish.jersey.media</groupId>16 - <artifactId>jersey-media-json-jackson</artifactId>17 - <version>2.4.1</version>18 - </dependency>19 - <dependency>20 10 <groupId>commons-lang</groupId> 21 11 <artifactId>commons-lang</artifactId> 22 12 <version>2.6</version> .. .. @@ -27,9 +17,29 @@ 27 17 <version>0.0.1-SNAPSHOT</version> 28 18 </dependency> 29 19 <dependency> 30 - <groupId>com.sun.jersey.contribs</groupId>31 - <artifactId>jersey-guice</artifactId>32 - <version>1.18</version>20 + <groupId>javax.servlet</groupId>21 + <artifactId>javax.servlet-api</artifactId>22 + <version>3.1.0</version>23 + </dependency>24 + <dependency>25 + <groupId>org.eclipse.jetty</groupId>26 + <artifactId>jetty-webapp</artifactId>27 + <version>9.0.7.v20131107</version>28 + </dependency>29 + <dependency>30 + <groupId>org.jboss.resteasy</groupId>31 + <artifactId>resteasy-guice</artifactId>32 + <version>3.0.5.Final</version>33 + </dependency>34 + <dependency>35 + <groupId>org.jboss.resteasy</groupId>36 + <artifactId>resteasy-jaxrs</artifactId>37 + <version>3.0.5.Final</version>38 + </dependency>39 + <dependency>40 + <groupId>org.jboss.resteasy</groupId>41 + <artifactId>resteasy-jackson-provider</artifactId>42 + <version>3.0.5.Final</version>33 43 </dependency> 34 44 </dependencies> 35 45 <build> securis/src/main/java/net/curisit/securis/AuthFilter.java
.. .. @@ -0,0 +1,76 @@ 1 +package net.curisit.securis;2 +3 +import java.io.IOException;4 +import java.security.Principal;5 +6 +import javax.inject.Singleton;7 +import javax.servlet.Filter;8 +import javax.servlet.FilterChain;9 +import javax.servlet.FilterConfig;10 +import javax.servlet.ServletException;11 +import javax.servlet.ServletRequest;12 +import javax.servlet.ServletResponse;13 +import javax.servlet.annotation.WebFilter;14 +import javax.servlet.http.HttpServletRequest;15 +import javax.servlet.http.HttpServletRequestWrapper;16 +17 +@Singleton18 +@WebFilter(urlPatterns = "/*")19 +public class AuthFilter implements Filter {20 +21 + @Override22 + public void init(FilterConfig fc) throws ServletException {23 + }24 +25 + @Override26 + public void doFilter(ServletRequest sr, ServletResponse sr1, FilterChain fc) throws IOException, ServletException {27 + HttpServletRequest req = (HttpServletRequest) sr;28 +29 + // System.out.println("filter: " + req.getRequestURI() + " user: " + sr.getParameter("user"));30 + if (sr.getParameter("user") != null) {31 + // ResteasyProviderFactory.pushContext(User.class, new User(sr.getParameter("user")));32 + fc.doFilter(new UserRoleRequestWrapper("user", sr.getParameter("user"), req), sr1);33 + } else {34 + fc.doFilter(req, sr1);35 + }36 +37 + }38 +39 + @Override40 + public void destroy() {41 + }42 +43 + private class UserRoleRequestWrapper extends HttpServletRequestWrapper {44 +45 + private String role;46 + private String user;47 +48 + public UserRoleRequestWrapper(String role, String user, HttpServletRequest request) {49 + super(request);50 + this.role = role;51 + this.user = user;52 + }53 +54 + @Override55 + public boolean isUserInRole(String role) {56 + if (this.role == null) {57 + return super.isUserInRole(role);58 + }59 + return this.role.equals(role);60 + }61 +62 + @Override63 + public Principal getUserPrincipal() {64 + if (this.user == null) {65 + return super.getUserPrincipal();66 + }67 +68 + return new Principal() {69 + @Override70 + public String getName() {71 + return user;72 + }73 + };74 + }75 + }76 +}securis/src/main/java/net/curisit/securis/MainApp.java
.. .. @@ -1,15 +1,19 @@ 1 1 package net.curisit.securis; 2 2 3 -import java.io.IOException;4 3 import java.net.URI; 5 -import java.util.Arrays;6 4 7 5 import javax.inject.Inject; 8 6 import javax.inject.Named; 9 7 8 +import net.curisit.securis.ioc.RequestsModule;10 9 import net.curisit.securis.ioc.SecurisModule; 11 10 12 -import org.glassfish.grizzly.http.server.HttpServer;11 +import org.eclipse.jetty.server.Server;12 +import org.eclipse.jetty.servlet.FilterHolder;13 +import org.eclipse.jetty.servlet.ServletContextHandler;14 +import org.eclipse.jetty.servlet.ServletHolder;15 +import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;16 +import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;13 17 import org.slf4j.Logger; 14 18 import org.slf4j.LoggerFactory; 15 19 .. .. @@ -17,39 +21,51 @@ 17 21 import com.google.inject.Injector; 18 22 import com.google.inject.Key; 19 23 import com.google.inject.name.Names; 20 -import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;21 -import com.sun.jersey.api.core.PackagesResourceConfig;22 -import com.sun.jersey.api.core.ResourceConfig;23 -import com.sun.jersey.core.spi.component.ioc.IoCComponentProviderFactory;24 -import com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory;25 24 26 25 public class MainApp { 27 26 28 27 private static final Logger log = LoggerFactory.getLogger(MainApp.class); 29 28 30 - private static HttpServer mHttpServer;29 + private static Server server;31 30 private static Injector injector = null; 32 31 33 32 @Inject 34 33 @Named("base-uri") 35 34 private URI uri; 36 35 37 - public static void main(String[] args) throws IOException, InterruptedException {36 + public static void main(String[] args) throws Exception {38 37 log.info("SeCuris init..."); 39 38 40 - injector = Guice.createInjector(Arrays.asList(new SecurisModule()));41 - mHttpServer = startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));39 + injector = Guice.createInjector(new SecurisModule(), new RequestsModule());40 + // createBiDirectionalGuiceBridge(ServiceLocatorFactory.getInstance().create("default"), new SecurisModule());41 + startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));42 42 while (true) { 43 43 Thread.currentThread().sleep(100); 44 44 } 45 45 } 46 46 47 - private static HttpServer startServer(URI uri) throws IOException {48 - System.out.println("Starting grizzly2...");49 - ResourceConfig rc = new PackagesResourceConfig("net.curisit.securis.services", "org.codehaus.jackson.jaxrs");50 - IoCComponentProviderFactory ioc = new GuiceComponentProviderFactory(rc, injector);47 + private static void startServer(URI uri) throws Exception {48 + System.out.println("Starting jetty...");49 + // ResourceConfig rc = new PackagesResourceConfig("net.curisit.securis.services", "org.codehaus.jackson.jaxrs");50 + // IoCComponentProviderFactory ioc = new GuiceComponentProviderFactory(rc, injector);51 + server = new Server(9997);52 + ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);53 + context.setContextPath("/");54 + context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));51 55 52 - return GrizzlyServerFactory.createHttpServer(uri, rc, ioc);56 + ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);57 + context.setInitParameter("resteasy.role.based.security", "true");58 + context.addFilter(new FilterHolder(injector.getInstance(AuthFilter.class)), "/*", null);59 + // context.addServlet(DefaultServlet.class, "/*");60 + context.addServlet(sh, "/*");61 +62 + server.setHandler(context);63 + server.start();64 + server.join();65 + // rc.packages("net.curisit.securis.services", "org.codehaus.jackson.jaxrs");66 +67 + // new CLStaticHttpHandler(new URLClassLoader(new URL[] {new URL("file:///home/username/staticfiles.jar")})), "/www")68 +53 69 } 54 70 55 71 } securis/src/main/java/net/curisit/securis/RestServicesApplication.java
.. .. @@ -0,0 +1,28 @@ 1 +package net.curisit.securis;2 +3 +import java.util.HashSet;4 +import java.util.Set;5 +6 +import javax.ws.rs.core.Application;7 +8 +import net.curisit.securis.services.BasicServices;9 +import net.curisit.securis.services.LicenseServices;10 +11 +import org.slf4j.Logger;12 +import org.slf4j.LoggerFactory;13 +14 +public class RestServicesApplication extends Application {15 +16 + private static final Logger log = LoggerFactory.getLogger(RestServicesApplication.class);17 +18 + @Override19 + public Set<Class<?>> getClasses() {20 + Set<Class<?>> classes = new HashSet<>();21 + classes.add(LicenseServices.class);22 + classes.add(BasicServices.class);23 +24 + log.info("Returnes classes for services: {}", classes);25 + return classes;26 + }27 +28 +}securis/src/main/java/net/curisit/securis/ioc/RequestsModule.java
.. .. @@ -0,0 +1,28 @@ 1 +package net.curisit.securis.ioc;2 +3 +import net.curisit.securis.services.BasicServices;4 +import net.curisit.securis.services.LicenseServices;5 +6 +import org.eclipse.jetty.server.Authentication.User;7 +import org.jboss.resteasy.plugins.guice.RequestScoped;8 +import org.jboss.resteasy.plugins.guice.ext.RequestScopeModule;9 +import org.jboss.resteasy.spi.ResteasyProviderFactory;10 +11 +import com.google.inject.Provides;12 +13 +public class RequestsModule extends RequestScopeModule {14 +15 + @Override16 + protected void configure() {17 + super.configure();18 + bind(BasicServices.class);19 + bind(LicenseServices.class);20 + }21 +22 + @Provides23 + @RequestScoped24 + public User provideUser() {25 + return ResteasyProviderFactory.getContextData(User.class);26 + }27 +28 +}securis/src/main/java/net/curisit/securis/ioc/SecurisModule.java
.. .. @@ -7,8 +7,6 @@ 7 7 import java.util.List; 8 8 import java.util.Properties; 9 9 10 -import javafx.application.Application;11 -12 10 import javax.inject.Named; 13 11 import javax.inject.Singleton; 14 12 import javax.ws.rs.core.UriBuilder; .. .. @@ -22,20 +20,10 @@ 22 20 23 21 public class SecurisModule extends AbstractModule { 24 22 25 - Application app = null;26 -27 23 private static final int DEFAULT_PORT = 9997; 28 24 private static final String PROPERTIES_FILE_NAME = "/server.properties"; 29 25 30 26 private static final Logger log = LoggerFactory.getLogger(SecurisModule.class); 31 -32 - public SecurisModule(Application app) {33 - this.app = app;34 - }35 -36 - public SecurisModule() {37 - this.app = null;38 - }39 27 40 28 @Override 41 29 protected void configure() { .. .. @@ -89,8 +77,14 @@ 89 77 return Arrays.asList("/db/schema.sql"); 90 78 } 91 79 92 - protected Application getApp() {93 - return this.app;94 - }80 + // @Provides81 + // @Singleton82 + // public HelloWorld provideHelloWorld() {83 + // if (args.length > 0 && args[0].equals("fi")) {84 + // return new HelloWorldFI();85 + // } else {86 + // return new HelloWorldPL();87 + // }88 + // }95 89 96 90 } securis/src/main/java/net/curisit/securis/services/BasicServices.java
.. .. @@ -0,0 +1,135 @@ 1 +package net.curisit.securis.services;2 +3 +import java.io.IOException;4 +import java.net.URI;5 +6 +import javax.servlet.http.HttpServletRequest;7 +import javax.ws.rs.FormParam;8 +import javax.ws.rs.GET;9 +import javax.ws.rs.POST;10 +import javax.ws.rs.Path;11 +import javax.ws.rs.Produces;12 +import javax.ws.rs.core.Context;13 +import javax.ws.rs.core.MediaType;14 +import javax.ws.rs.core.Response;15 +import javax.ws.rs.core.Response.Status;16 +import javax.ws.rs.core.UriBuilder;17 +18 +import org.apache.commons.io.IOUtils;19 +import org.slf4j.Logger;20 +import org.slf4j.LoggerFactory;21 +22 +/**23 + * Basic services for login a nd basic app wrkflow24 + *25 + * @author roberto <roberto.sanchez@curisit.net>26 + */27 +@Path("/")28 +public class BasicServices {29 +30 + // private LicenseHelper licenseHelper = InjectorFactory.getInjector().getInstance(LicenseHelper.class);31 + private static final Logger log = LoggerFactory.getLogger(BasicServices.class);32 +33 + public BasicServices() {34 + }35 +36 + /**37 + *38 + * @return the server version in format majorVersion.minorVersion39 + */40 + @GET41 + @Produces(42 + { MediaType.TEXT_HTML })43 + public Response index() {44 +45 + URI uri = UriBuilder.fromUri("/login").build();46 + return Response.seeOther(uri).build();47 + // return Response.ok().entity("License server").build();48 + }49 +50 + @GET51 + @Path("/login")52 + @Produces(53 + { MediaType.TEXT_HTML })54 + public Response login() {55 + try {56 + String index = IOUtils.toString(this.getClass().getResourceAsStream("/static/login.html"));57 + return Response.ok().entity(index).build();58 + } catch (IOException e) {59 + // TODO Auto-generated catch block60 + e.printStackTrace();61 + }62 + return Response.serverError().build();63 + }64 +65 + @POST66 + @Path("/login")67 + @Produces(68 + { MediaType.TEXT_HTML })69 + public Response login(@FormParam("user") String user, @FormParam("password") String password, @Context HttpServletRequest request) {70 + log.info("Request: " + request.getParameter("user"));71 + log.info("user/pass: {} == {} ? ", user, password);72 + // log.info("user: {} == {} ? " + request.getParameter("user"), user);73 + URI uri = UriBuilder.fromUri("/main").build();74 + return Response.seeOther(uri).build();75 + }76 +77 + /**78 + * @return the version of the three entities that can be synchronized (Users, DataSet and Settings)79 + */80 + @GET81 + @Path("/main")82 + @Produces(83 + { MediaType.TEXT_HTML })84 + public Response main() {85 + try {86 + String index = IOUtils.toString(this.getClass().getResourceAsStream("/static/main.html"));87 + return Response.ok().entity(index).build();88 + } catch (IOException e) {89 + // TODO Auto-generated catch block90 + e.printStackTrace();91 + }92 + return Response.status(Status.FORBIDDEN).build();93 +94 + }95 + //96 + // private <T> ServiceResponse<T> buildErrorResponse(ServiceResponse<T> response, String msgErrorCode) {97 + // response.setSuccess(false);98 + // response.setErrorMessage(localManager.getString(msgErrorCode));99 + // response.setErrorMessageCode(msgErrorCode);100 + // return response;101 + // }102 + //103 + // private Date calculateCaducation() {104 + // Integer licenseExpiration = systemParams.getParamAsInt(SystemParams.Keys.CONFIG_SERVER_LICENSE_EXPIRATION);105 + // if (licenseExpiration == null)106 + // licenseExpiration = DEFAULT_LICENSE_EXPIRATION;107 + // return Utils.addDays(new Date(), licenseExpiration);108 + // }109 + //110 + // private boolean validateLicense(String license) {111 + // BasicApplication ba = basicApplicationDao.findByLicense(license);112 + // return (ba != null);113 + // }114 + //115 + // private boolean validateVersion(int minorVersion, int majorVersion) {116 + // return (versionManager.getMajorVersion() == majorVersion);117 + // }118 + //119 + // private BasicApplication findBasicApp(String license) {120 + // BasicApplication ba = basicApplicationDao.findByLicense(license);121 + // return ba;122 + // }123 + //124 + // private License generateLicense() {125 + // // TODO complete all field of the license126 + // License license = new License();127 + // license.setCustomerCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CUSTOMER_CODE));128 + // license.setCSCode(systemParams.getParam(SystemParams.Keys.CONFIG_COMMON_CS_CODE));129 + // license.setCRCLogo("00000000");130 + // license.setExpirationDate(calculateCaducation());131 + // license.setInstallCode(codeGenerator.generateInstalationNumber());132 + // return license;133 + // }134 +135 +}securis/src/main/java/net/curisit/securis/services/LicenseServices.java
.. .. @@ -1,22 +1,25 @@ 1 1 package net.curisit.securis.services; 2 2 3 +import java.io.IOException;3 4 import java.net.URI; 4 5 import java.text.MessageFormat; 5 6 6 -import javax.inject.Inject;7 7 import javax.inject.Named; 8 +import javax.servlet.http.HttpServletRequest;8 9 import javax.ws.rs.DefaultValue; 9 10 import javax.ws.rs.GET; 10 11 import javax.ws.rs.Path; 11 12 import javax.ws.rs.PathParam; 12 13 import javax.ws.rs.Produces; 13 14 import javax.ws.rs.QueryParam; 15 +import javax.ws.rs.core.Context;14 16 import javax.ws.rs.core.MediaType; 15 17 import javax.ws.rs.core.Response; 16 18 17 19 import net.curisit.integrity.beans.ServerConfigVersions; 18 20 import net.curisit.integrity.beans.ServiceResponse; 19 21 22 +import org.apache.commons.io.IOUtils;20 23 import org.slf4j.Logger; 21 24 import org.slf4j.LoggerFactory; 22 25 .. .. @@ -27,14 +30,13 @@ 27 30 // private LicenseHelper licenseHelper = InjectorFactory.getInjector().getInstance(LicenseHelper.class); 28 31 private static final Logger log = LoggerFactory.getLogger(LicenseServices.class); 29 32 30 - private static final int DEFAULT_LICENSE_EXPIRATION = 3650; // 10 years;33 + private static final int DEFAULT_LICENSE_EXPIRATION = 365;31 34 private static final String LICENSE_STRING = "CurisIntegrity Config Server v{0}.{1}"; 32 35 33 - @Inject36 + @com.google.inject.Inject34 37 @Named("base-uri") 35 38 private URI uri; 36 39 37 - @Inject38 40 public LicenseServices() { 39 41 } 40 42 .. .. @@ -43,10 +45,16 @@ 43 45 * @return the server version in format majorVersion.minorVersion 44 46 */ 45 47 @GET 46 - @Path("/")47 48 @Produces( 48 - { MediaType.TEXT_PLAIN })49 - public Response currentVersion() {49 + { MediaType.TEXT_HTML })50 + public Response index() {51 + try {52 + String index = IOUtils.toString(this.getClass().getResourceAsStream("/static/index.html"));53 + return Response.ok().entity(index).build();54 + } catch (IOException e) {55 + // TODO Auto-generated catch block56 + e.printStackTrace();57 + }50 58 return Response.ok().entity(MessageFormat.format(LICENSE_STRING, 0, 1)).build(); 51 59 } 52 60 .. .. @@ -54,8 +62,9 @@ 54 62 @Path("/dummy") 55 63 @Produces( 56 64 { MediaType.TEXT_PLAIN }) 57 - public Response dummy() {58 - return Response.ok().entity(uri.toString()).build();65 + public Response dummy(@Context HttpServletRequest request) {66 + log.info("Request: " + request.getPathInfo());67 + return Response.ok().entity((uri == null)).build();59 68 } 60 69 61 70 /** securis/src/main/resources/static/index.html
.. .. @@ -0,0 +1,5 @@ 1 +<html>2 + <body>3 + <h1>INDEX example !!!</h1>4 + </body>5 +</html>securis/src/main/resources/static/login.html
.. .. @@ -0,0 +1,17 @@ 1 +<!DOCTYPE html>2 +<html>3 + <head>4 + <title>CurisTEC License server</title>5 + </head>6 + <body>7 + <h1>LOGIN example !!!</h1>8 +9 + <form action="/login" method="POST">10 + <label>User:</label><input type="text" name="user" id="user">11 + <br/>12 + <label>Password:</label><input type="text" name="password" id="password">13 + <button type="submit">Login</button>14 + </form>15 +16 + </body>17 +</html>securis/src/main/resources/static/main.html
.. .. @@ -0,0 +1,5 @@ 1 +<html>2 + <body>3 + <h1>Main page</h1>4 + </body>5 +</html>