rsanchez
2014-09-26 b593a097d2ada3ebda4a2440c256f8dae533cb7e
#2021 feature - Added packaging to Maven building and command line
commands [start|stop]
1 files deleted
7 files added
2 files modified
changed files
securis/etc/build/files/README patch | view | blame | history
securis/etc/build/files/config/log4j2.xml patch | view | blame | history
securis/etc/build/files/config/securis-server.properties patch | view | blame | history
securis/etc/build/files/securis-server.bat patch | view | blame | history
securis/etc/build/files/securis-server.sh patch | view | blame | history
securis/etc/build/pro/mvn_descriptor.xml patch | view | blame | history
securis/pom.xml patch | view | blame | history
securis/src/main/java/net/curisit/securis/MainApp.java patch | view | blame | history
securis/src/main/java/net/curisit/securis/SeCurisServer.java patch | view | blame | history
securis/src/main/resources/log4j2.xml patch | view | blame | history
securis/etc/build/files/README
....@@ -0,0 +1,10 @@
1
+SeCuris server
2
+==============
3
+
4
+Updated doc: https://redmine.curistec.com/projects/securis/wiki/HowToSeCurisClient
5
+
6
+Creation of a request file
7
+For a manual activation, a request file should be sent to SeCuris administrator, to create a request file we can execute:
8
+
9
+ $ ./securis-server.sh start
10
+
securis/etc/build/files/config/log4j2.xml
....@@ -0,0 +1,42 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Configuration>
3
+ <Appenders>
4
+
5
+ <RollingFileAppender name="defaultFile" fileName="${sys:user.home}/.SeCuris/logs/securis-server.log" append="true"
6
+ filePattern="${sys:user.home}/.SeCuris/logs/securis-server-%d{yyyy-MM-dd-HH}.log.gz">
7
+ <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
8
+ <Policies>
9
+ <TimeBasedTriggeringPolicy interval="1" modulate="true" />
10
+ </Policies>
11
+ <DefaultRolloverStrategy max="10"/>
12
+ </RollingFileAppender>
13
+ <Async name="defaultFileAsync" includeLocation="true">
14
+ <AppenderRef ref="defaultFile"/>
15
+ </Async>
16
+
17
+ <Console name="stdout" target="SYSTEM_OUT">
18
+ <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
19
+ </Console>
20
+
21
+ <Console name="console" target="SYSTEM_OUT">
22
+ <PatternLayout pattern="%m%n"/>
23
+ </Console>
24
+
25
+ </Appenders>
26
+ <Loggers>
27
+
28
+ <Logger name="net.curisit" level="INFO" additivity="false">
29
+ <AppenderRef ref="defaultFileAsync"/>
30
+ <AppenderRef ref="stdout"/>
31
+ </Logger>
32
+
33
+ <Logger name="console" level="INFO" additivity="false">
34
+ <AppenderRef ref="console"/>
35
+ </Logger>
36
+
37
+ <Root level="INFO" >
38
+ <AppenderRef ref="stdout"/>
39
+ </Root>
40
+
41
+ </Loggers>
42
+</Configuration>
securis/etc/build/files/config/securis-server.properties
....@@ -0,0 +1,14 @@
1
+#########################################################################
2
+# #
3
+# Modify the current file using the proper values for you environment #
4
+# #
5
+#########################################################################
6
+
7
+license.server.hostname = 0.0.0.0
8
+license.server.port = 9080
9
+license.server.ssl.port = 9443
10
+
11
+ssl.keystore.path = /Users/rob/.ssh/keys/securis.pkcs12
12
+ssl.keystore.type = PKCS12
13
+ssl.keystore.password = curist3c
14
+ssl.keystore.alias =
securis/etc/build/files/securis-server.bat
....@@ -0,0 +1,4 @@
1
+@echo off
2
+
3
+set CLASSPATH="config;libs\*"
4
+java -client -cp "%CLASSPATH%" net.curisit.securis.License %*
securis/etc/build/files/securis-server.sh
....@@ -0,0 +1,4 @@
1
+#!/bin/bash
2
+
3
+export CLASSPATH="config:libs/*"
4
+java -cp "$CLASSPATH" net.curisit.securis.SeCurisServer $@
securis/etc/build/pro/mvn_descriptor.xml
....@@ -0,0 +1,39 @@
1
+ <assembly
2
+xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
3
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
5
+ <id>packager</id>
6
+ <formats>
7
+ <format>zip</format>
8
+ <format>tar.gz</format>
9
+ </formats>
10
+ <includeBaseDirectory>false</includeBaseDirectory>
11
+ <fileSets>
12
+ <fileSet>
13
+ <directory>${basedir}/etc/build/files</directory>
14
+ <includes>
15
+ <include>**/*</include>
16
+ </includes>
17
+ <excludes>
18
+ <exclude>*.sh</exclude>
19
+ </excludes>
20
+ <outputDirectory>.</outputDirectory>
21
+ </fileSet>
22
+ <fileSet>
23
+ <directory>${basedir}/etc/build/files</directory>
24
+ <includes>
25
+ <include>*.sh</include>
26
+ </includes>
27
+ <fileMode>755</fileMode>
28
+ <outputDirectory>.</outputDirectory>
29
+ </fileSet>
30
+ </fileSets>
31
+ <dependencySets>
32
+ <dependencySet>
33
+ <outputDirectory>/libs</outputDirectory>
34
+ <useProjectArtifact>true</useProjectArtifact>
35
+ <unpack>false</unpack>
36
+ <scope>runtime</scope>
37
+ </dependencySet>
38
+ </dependencySets>
39
+</assembly>
securis/pom.xml
....@@ -1,8 +1,8 @@
11 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
22 <modelVersion>4.0.0</modelVersion>
33 <groupId>net.curisit</groupId>
4
- <artifactId>securis</artifactId>
5
- <version>0.0.1-SNAPSHOT</version>
4
+ <artifactId>securis-server</artifactId>
5
+ <version>0.0.2-SNAPSHOT</version>
66 <name>SeCuris</name>
77 <description>CurisTEC Server Licenses</description>
88 <dependencies>
....@@ -62,7 +62,21 @@
6262 <target>1.7</target>
6363 </configuration>
6464 </plugin>
65
- </plugins>
65
+ <plugin>
66
+ <artifactId>maven-assembly-plugin</artifactId>
67
+ <version>2.4</version>
68
+ <configuration>
69
+ <formats>
70
+ <format>zip</format>
71
+ <format>tar.gz</format>
72
+ </formats>
73
+ <descriptors>
74
+ <descriptor>etc/build/pro/mvn_descriptor.xml</descriptor>
75
+ </descriptors>
76
+ <appendAssemblyId>false</appendAssemblyId>
77
+ </configuration>
78
+ </plugin>
79
+ </plugins>
6680 </build>
6781 <repositories>
6882 <repository>
securis/src/main/java/net/curisit/securis/MainApp.java
deleted file mode 100644
....@@ -1,143 +0,0 @@
1
-package net.curisit.securis;
2
-
3
-import java.net.URI;
4
-import java.security.KeyStore;
5
-import java.util.Properties;
6
-
7
-import javax.inject.Inject;
8
-import javax.inject.Named;
9
-
10
-import net.curisit.securis.ioc.RequestsModule;
11
-import net.curisit.securis.ioc.SecurisModule;
12
-
13
-import org.apache.logging.log4j.LogManager;
14
-import org.apache.logging.log4j.Logger;
15
-import org.eclipse.jetty.http.HttpVersion;
16
-import org.eclipse.jetty.server.Handler;
17
-import org.eclipse.jetty.server.HttpConfiguration;
18
-import org.eclipse.jetty.server.HttpConnectionFactory;
19
-import org.eclipse.jetty.server.SecureRequestCustomizer;
20
-import org.eclipse.jetty.server.Server;
21
-import org.eclipse.jetty.server.ServerConnector;
22
-import org.eclipse.jetty.server.SslConnectionFactory;
23
-import org.eclipse.jetty.server.handler.ContextHandlerCollection;
24
-import org.eclipse.jetty.server.handler.ResourceHandler;
25
-import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
26
-import org.eclipse.jetty.servlet.FilterHolder;
27
-import org.eclipse.jetty.servlet.ServletContextHandler;
28
-import org.eclipse.jetty.servlet.ServletHolder;
29
-import org.eclipse.jetty.util.resource.Resource;
30
-import org.eclipse.jetty.util.ssl.SslContextFactory;
31
-import org.eclipse.jetty.util.thread.QueuedThreadPool;
32
-import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
33
-import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
34
-
35
-import com.google.inject.Guice;
36
-import com.google.inject.Injector;
37
-import com.google.inject.Key;
38
-import com.google.inject.name.Names;
39
-import com.google.inject.persist.PersistFilter;
40
-import com.google.inject.persist.jpa.JpaPersistModule;
41
-import com.itextpdf.text.pdf.security.KeyStoreUtil;
42
-
43
-public class MainApp {
44
-
45
- private static final Logger LOG = LogManager.getLogger(MainApp.class);
46
-
47
- private static Server server;
48
- private static Injector injector = null;
49
-
50
- @Inject
51
- @Named("base-uri")
52
- private URI uri;
53
-
54
- public static void main(String[] args) throws Exception {
55
- LOG.info("SeCuris init...");
56
-
57
- SecurisModule securisModule = new SecurisModule();
58
- JpaPersistModule jpaPersistModule = new JpaPersistModule("localdb");
59
- Properties props = new Properties();
60
- props.put("javax.persistence.jdbc.password", securisModule.getPassword());
61
- props.put("javax.persistence.jdbc.url", securisModule.getUrl(securisModule.getAppDir()));
62
- LOG.info("BD Url: {} {}", securisModule.getUrl(securisModule.getAppDir()), securisModule.getPassword());
63
- jpaPersistModule.properties(props);
64
-
65
- injector = Guice.createInjector(securisModule, new RequestsModule(), jpaPersistModule);
66
-
67
- startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
68
- while (true) {
69
- Thread.currentThread().sleep(100);
70
- }
71
- }
72
-
73
- private static void startServer(URI uri) throws Exception {
74
- System.out.println("Starting jetty...");
75
-
76
- QueuedThreadPool threadPool = new QueuedThreadPool();
77
- threadPool.setMaxThreads(50);
78
-
79
- server = new Server(9997);
80
- ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
81
- context.setContextPath("/");
82
- context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));
83
-
84
- context.setInitParameter("resteasy.role.based.security", "true");
85
- context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName());
86
- context.addFilter(new FilterHolder(injector.getInstance(PersistFilter.class)), "/*", null);
87
- ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
88
- sh.setName("resteasy");
89
- context.addServlet(sh, "/*");
90
-
91
- ResourceHandler staticResources = new ResourceHandler();
92
- staticResources.setBaseResource(Resource.newResource(MainApp.class.getResource("/static").toURI()));
93
- staticResources.setWelcomeFiles(new String[] {
94
- "/main.html"
95
- });
96
- context.setHandler(staticResources);
97
-
98
- ErrorPageErrorHandler errorHandler = new ErrorPageErrorHandler();
99
- context.setErrorHandler(errorHandler);
100
- LOG.info("Error Handlers: " + context.getErrorHandler());
101
- ContextHandlerCollection contexts = new ContextHandlerCollection();
102
-
103
- contexts.setHandlers(new Handler[] {
104
- staticResources, context
105
- });
106
-
107
- HttpConfiguration http_config = new HttpConfiguration();
108
- http_config.setSecureScheme("https");
109
- http_config.setSecurePort(8443);
110
- http_config.setOutputBufferSize(32768);
111
- http_config.setSendServerVersion(true);
112
- http_config.setSendDateHeader(false);
113
-
114
-
115
- HttpConfiguration https_config = new HttpConfiguration(http_config);
116
- https_config.addCustomizer(new SecureRequestCustomizer());
117
-
118
- SslContextFactory sslContextFactory = new SslContextFactory();
119
- sslContextFactory.setKeyStorePath("/Users/rob/.ssh/keys/securis.pkcs12");
120
- sslContextFactory.setKeyStoreType("PKCS12");
121
- sslContextFactory.setKeyStorePassword("curist3c");
122
- //sslContextFactory.setCertAlias("1");
123
-// sslContextFactory.setKeyManagerPassword("curist3c");
124
-// sslContextFactory.setTrustStorePath("/Users/rob/.ssh/keys/keystore");
125
-// sslContextFactory.setTrustStorePassword("curist3c");
126
- sslContextFactory.checkKeyStore();
127
- sslContextFactory.setNeedClientAuth(false);
128
- LOG.info("Protocol: {}", sslContextFactory.getProtocol());
129
-
130
- ServerConnector sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(https_config));
131
- sslConnector.setPort(8443);
132
- sslConnector.setHost("securis.curistec.com");
133
- server.addConnector( sslConnector );
134
-
135
- server.setHandler(context);
136
- server.setStopAtShutdown(true);
137
- server.start();
138
- server.join();
139
-
140
- LOG.info("Started server in: http://127.0.0.1:9997/");
141
- }
142
-
143
-}
securis/src/main/java/net/curisit/securis/SeCurisServer.java
....@@ -0,0 +1,234 @@
1
+package net.curisit.securis;
2
+
3
+import java.io.File;
4
+import java.io.IOException;
5
+import java.lang.management.ManagementFactory;
6
+import java.net.URI;
7
+import java.net.URISyntaxException;
8
+import java.util.Properties;
9
+
10
+import javax.inject.Inject;
11
+import javax.inject.Named;
12
+
13
+import net.curisit.securis.ioc.RequestsModule;
14
+import net.curisit.securis.ioc.SecurisModule;
15
+
16
+import org.apache.commons.io.FileUtils;
17
+import org.apache.logging.log4j.LogManager;
18
+import org.apache.logging.log4j.Logger;
19
+import org.eclipse.jetty.http.HttpVersion;
20
+import org.eclipse.jetty.server.Handler;
21
+import org.eclipse.jetty.server.HttpConfiguration;
22
+import org.eclipse.jetty.server.HttpConnectionFactory;
23
+import org.eclipse.jetty.server.SecureRequestCustomizer;
24
+import org.eclipse.jetty.server.Server;
25
+import org.eclipse.jetty.server.ServerConnector;
26
+import org.eclipse.jetty.server.SslConnectionFactory;
27
+import org.eclipse.jetty.server.handler.ContextHandlerCollection;
28
+import org.eclipse.jetty.server.handler.ResourceHandler;
29
+import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
30
+import org.eclipse.jetty.servlet.FilterHolder;
31
+import org.eclipse.jetty.servlet.ServletContextHandler;
32
+import org.eclipse.jetty.servlet.ServletHolder;
33
+import org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener;
34
+import org.eclipse.jetty.util.component.LifeCycle;
35
+import org.eclipse.jetty.util.resource.Resource;
36
+import org.eclipse.jetty.util.ssl.SslContextFactory;
37
+import org.eclipse.jetty.util.thread.QueuedThreadPool;
38
+import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
39
+import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
40
+
41
+import com.google.inject.Guice;
42
+import com.google.inject.Injector;
43
+import com.google.inject.Key;
44
+import com.google.inject.name.Names;
45
+import com.google.inject.persist.PersistFilter;
46
+import com.google.inject.persist.jpa.JpaPersistModule;
47
+
48
+public class SeCurisServer {
49
+
50
+ private static final Logger LOG = LogManager.getLogger(SeCurisServer.class);
51
+ private static final Logger CONSOLE = LogManager.getLogger("console");
52
+
53
+ private static final String PID_FILE = System.getProperty("user.home") + "/.SeCuris/securis-server.pid";
54
+
55
+ private static Server server;
56
+ private static Injector injector = null;
57
+
58
+ @Inject
59
+ @Named("base-uri")
60
+ private URI uri;
61
+
62
+ private static void showHelp() {
63
+ CONSOLE.info("Execute SeCuris server using:");
64
+ CONSOLE.info(" $ ./securis-server.sh {start|stop}");
65
+ }
66
+
67
+ public static void main(String[] args) throws Exception {
68
+ String command;
69
+ if (args.length > 0) {
70
+ command = args[0].toLowerCase();
71
+ } else {
72
+ command = "start";
73
+ }
74
+
75
+ switch (command) {
76
+ case "start":
77
+ startServer();
78
+ break;
79
+ case "stop":
80
+ stopServer();
81
+ break;
82
+
83
+ default:
84
+ showHelp();
85
+ System.exit(-1);
86
+ }
87
+ }
88
+
89
+ private static void stopServer() {
90
+ if (!new File(PID_FILE).exists()) {
91
+ CONSOLE.error("SeCuris server is NOT running or PID file is missing");
92
+ System.exit(-3);
93
+ }
94
+ try {
95
+ int pid = Integer.parseInt(FileUtils.readFileToString(new File(PID_FILE)));
96
+ Runtime.getRuntime().exec("kill -SIGINT " + pid);
97
+ new File(PID_FILE).delete();
98
+ CONSOLE.info("SeCuris server process stopped sucessfully (PID: {})", pid);
99
+ } catch (NumberFormatException | IOException e) {
100
+ LOG.error("Error getting SeCuris server process PID from file: {}", PID_FILE);
101
+ }
102
+ }
103
+
104
+ private static void startServer() {
105
+
106
+ if (new File(PID_FILE).exists()) {
107
+ try {
108
+ CONSOLE.error("SeCuris server is already running with PID: {}", FileUtils.readFileToString(new File(PID_FILE)));
109
+ } catch (IOException e) {
110
+ LOG.error("Unexpected error", e);
111
+ }
112
+ System.exit(-2);
113
+ }
114
+
115
+ SecurisModule securisModule = new SecurisModule();
116
+ JpaPersistModule jpaPersistModule = new JpaPersistModule("localdb");
117
+ Properties props = new Properties();
118
+ props.put("javax.persistence.jdbc.password", securisModule.getPassword());
119
+ props.put("javax.persistence.jdbc.url", securisModule.getUrl(securisModule.getAppDir()));
120
+ LOG.info("BD Url: {} {}", securisModule.getUrl(securisModule.getAppDir()), securisModule.getPassword());
121
+ jpaPersistModule.properties(props);
122
+
123
+ injector = Guice.createInjector(securisModule, new RequestsModule(), jpaPersistModule);
124
+
125
+ try {
126
+ startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
127
+
128
+ } catch (SeCurisException e) {
129
+ CONSOLE.error("Error launching the SeCuris server, {}", e);
130
+ }
131
+ }
132
+
133
+ private static void savePID() throws SeCurisException {
134
+ String runtimeName = ManagementFactory.getRuntimeMXBean().getName();
135
+ // runtimeName contains something like: "12345@localhost"
136
+ String pid = runtimeName.substring(0, runtimeName.indexOf('@'));
137
+ try {
138
+ FileUtils.writeStringToFile(new File(PID_FILE), pid);
139
+ CONSOLE.info("SeCuris server process started sucessfully (PID: {})", pid);
140
+ } catch (IOException e) {
141
+ LOG.error("Error saving pid file", e);
142
+ throw new SeCurisException("Error saving pid file");
143
+ }
144
+ }
145
+
146
+ private static void startServer(URI uri) throws SeCurisException {
147
+ System.out.println("Starting jetty...");
148
+
149
+ QueuedThreadPool threadPool = new QueuedThreadPool();
150
+ threadPool.setMaxThreads(50);
151
+
152
+ server = new Server(9997);
153
+ ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
154
+ context.setContextPath("/");
155
+ context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));
156
+
157
+ context.setInitParameter("resteasy.role.based.security", "true");
158
+ context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName());
159
+ context.addFilter(new FilterHolder(injector.getInstance(PersistFilter.class)), "/*", null);
160
+ ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
161
+ sh.setName("resteasy");
162
+ context.addServlet(sh, "/*");
163
+
164
+ ResourceHandler staticResources = new ResourceHandler();
165
+ try {
166
+ staticResources.setBaseResource(Resource.newResource(SeCurisServer.class.getResource("/static").toURI()));
167
+ } catch (IOException | URISyntaxException e) {
168
+ LOG.error("Error configuring static resources", e);
169
+ throw new SeCurisException("Error configuring static resources");
170
+ }
171
+ staticResources.setWelcomeFiles(new String[] {
172
+ "/main.html"
173
+ });
174
+ context.setHandler(staticResources);
175
+
176
+ ErrorPageErrorHandler errorHandler = new ErrorPageErrorHandler();
177
+ context.setErrorHandler(errorHandler);
178
+ LOG.info("Error Handlers: " + context.getErrorHandler());
179
+ ContextHandlerCollection contexts = new ContextHandlerCollection();
180
+
181
+ contexts.setHandlers(new Handler[] {
182
+ staticResources, context
183
+ });
184
+
185
+ HttpConfiguration http_config = new HttpConfiguration();
186
+ http_config.setSecureScheme("https");
187
+ http_config.setSecurePort(8443);
188
+ http_config.setOutputBufferSize(32768);
189
+ http_config.setSendServerVersion(true);
190
+ http_config.setSendDateHeader(false);
191
+
192
+
193
+ HttpConfiguration https_config = new HttpConfiguration(http_config);
194
+ https_config.addCustomizer(new SecureRequestCustomizer());
195
+
196
+ SslContextFactory sslContextFactory = new SslContextFactory();
197
+ sslContextFactory.setKeyStorePath("/Users/rob/.ssh/keys/securis.pkcs12");
198
+ sslContextFactory.setKeyStoreType("PKCS12");
199
+ sslContextFactory.setKeyStorePassword("curist3c");
200
+ //sslContextFactory.setCertAlias("1");
201
+// sslContextFactory.setKeyManagerPassword("curist3c");
202
+// sslContextFactory.setTrustStorePath("/Users/rob/.ssh/keys/keystore");
203
+// sslContextFactory.setTrustStorePassword("curist3c");
204
+ sslContextFactory.checkKeyStore();
205
+ sslContextFactory.setNeedClientAuth(false);
206
+ LOG.info("Protocol: {}", sslContextFactory.getProtocol());
207
+
208
+ ServerConnector sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(https_config));
209
+ sslConnector.setPort(8443);
210
+ sslConnector.setHost("securis.curistec.com");
211
+ server.addConnector( sslConnector );
212
+
213
+ server.setHandler(context);
214
+ server.setStopAtShutdown(true);
215
+ server.addLifeCycleListener(new ServerStoppedListener());
216
+ try {
217
+ server.start();
218
+ savePID();
219
+ server.join();
220
+ } catch (Exception e) {
221
+ LOG.error("Error starting SeCurisServer", e);
222
+ throw new SeCurisException("Error starting SeCurisServer");
223
+ }
224
+
225
+ }
226
+
227
+ static class ServerStoppedListener extends AbstractLifeCycleListener {
228
+ @Override public void lifeCycleStopped(LifeCycle event) {
229
+ if (new File(PID_FILE).exists())
230
+ new File(PID_FILE).delete();
231
+ }
232
+ }
233
+
234
+}
securis/src/main/resources/log4j2.xml
....@@ -2,22 +2,39 @@
22 <Configuration>
33 <Appenders>
44
5
- <File name="defaultFile" fileName="${sys:user.home}/.SeCuris/log/securis.log" append="false">
5
+ <RollingFile name="defaultFile" fileName="${sys:user.home}/.SeCuris/logs/securis-server.log" append="true"
6
+ filePattern="${sys:user.home}/.SeCuris/logs/securis-server-%d{yyyy-MM-dd-HH}.log.gz">
67 <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
7
- </File>
8
-
8
+ <Policies>
9
+ <TimeBasedTriggeringPolicy interval="1" modulate="true" />
10
+ </Policies>
11
+ <DefaultRolloverStrategy max="10"/>
12
+ </RollingFile>
13
+ <Async name="defaultFileAsync" includeLocation="true">
14
+ <AppenderRef ref="defaultFile"/>
15
+ </Async>
16
+
917 <Console name="stdout" target="SYSTEM_OUT">
1018 <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
19
+ </Console>
20
+
21
+ <Console name="console" target="SYSTEM_OUT">
22
+ <PatternLayout pattern="%m%n"/>
1123 </Console>
1224
1325 </Appenders>
1426 <Loggers>
1527
16
- <Logger name="net.curisit" level="INFO">
17
- <AppenderRef ref="defaultFile"/>
28
+ <Logger name="net.curisit" level="INFO" additivity="false">
29
+ <AppenderRef ref="defaultFileAsync"/>
30
+ <AppenderRef ref="stdout"/>
1831 </Logger>
19
-
20
- <Root level="OFF">
32
+
33
+ <Logger name="console" level="INFO" additivity="false">
34
+ <AppenderRef ref="console"/>
35
+ </Logger>
36
+
37
+ <Root level="INFO" >
2138 <AppenderRef ref="stdout"/>
2239 </Root>
2340