1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.openr66.proxy;
21
22 import org.waarp.common.logging.SysErrLogger;
23 import org.waarp.common.logging.WaarpLogger;
24 import org.waarp.common.logging.WaarpLoggerFactory;
25 import org.waarp.common.logging.WaarpSlf4JLoggerFactory;
26 import org.waarp.common.utility.WaarpShutdownHook;
27 import org.waarp.common.utility.WaarpSystemUtil;
28 import org.waarp.openr66.proxy.configuration.ConfigurationProxyR66;
29 import org.waarp.openr66.proxy.configuration.FileBasedConfiguration;
30
31 import static org.waarp.openr66.protocol.configuration.Configuration.*;
32
33
34
35
36 public class R66Proxy {
37 private static WaarpLogger logger;
38
39 private R66Proxy() {
40 }
41
42
43
44
45 public static void main(final String[] args) {
46 WaarpLoggerFactory.setDefaultFactoryIfNotSame(
47 new WaarpSlf4JLoggerFactory(null));
48 logger = WaarpLoggerFactory.getLogger(R66Proxy.class);
49 if (args.length < 1) {
50 logger.error("Needs the configuration file as first argument");
51 return;
52 }
53 configuration = new ConfigurationProxyR66();
54 if (initialize(args[0])) {
55 logger.warn("Proxy OpenR66 starts for " + configuration.getHostId());
56 SysErrLogger.FAKE_LOGGER.syserr(
57 "Proxy OpenR66 starts for " + configuration.getHostId());
58 } else {
59 logger.error(
60 "Cannot start Proxy OpenR66 for " + configuration.getHostId());
61 SysErrLogger.FAKE_LOGGER.syserr(
62 "Cannot start Proxy OpenR66 for " + configuration.getHostId());
63 WaarpSystemUtil.systemExit(1);
64 }
65 }
66
67 public static boolean initialize(final String config) {
68 if (logger == null) {
69 logger = WaarpLoggerFactory.getLogger(R66Proxy.class);
70 }
71 if (!FileBasedConfiguration.setConfigurationProxyFromXml(configuration,
72 config)) {
73 logger.error("Needs a correct configuration file as first argument");
74 return false;
75 }
76 try {
77 configuration.serverStartup();
78 } catch (final Throwable e) {
79 logger.error("Startup of Proxy is in error", e);
80 WaarpShutdownHook.terminate(false);
81 return false;
82 }
83 return true;
84 }
85
86 }