use of com.bluenimble.platform.server.security.impls.DefaultApiRequestSigner in project serverless by bluenimble.
the class FileSystemApiServer method start.
@Override
public void start() throws ServerStartupException {
long startTime = System.currentTimeMillis();
// check under tenant
File keysFile = null;
if (tenantHome != null) {
keysFile = new File(tenantHome, ConfigKeys.RootKeysFile);
}
if (keysFile == null || !keysFile.isFile() || !keysFile.exists()) {
// check under the runtime home
keysFile = new File(runtimeHome, ConfigKeys.RootKeysFile);
}
if (!keysFile.exists()) {
// check under the install home
keysFile = new File(installHome, ConfigKeys.RootKeysFile);
}
ClassLoader bluenimbleClassLoader = FileSystemApiServer.class.getClassLoader();
try {
boolean rootKeysEncrypted = Json.getBoolean(descriptor, ConfigKeys.RootKeysEncrypted, true);
// exit if not found
if (!keysFile.exists()) {
// create
keys = JsonKeyPair.create();
((JsonKeyPair) keys).store(new File(installHome, ConfigKeys.RootKeysFile), rootKeysEncrypted);
}
setup();
if (keys == null) {
keys = new JsonKeyPair(keysFile, rootKeysEncrypted);
}
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
FileSystemApiServer.this.stop();
}
});
// messages
File mFile = new File(installHome, ConfigKeys.DefaultMessages);
if (mFile.exists()) {
messages.putAll(Json.load(mFile));
}
pluginsRegistry = (PluginsRegistry) BeanUtils.create(bluenimbleClassLoader, Json.getObject(descriptor, ConfigKeys.PluginsRegistry));
pluginsRegistry.init(this, new File(installHome, ConfigKeys.Folders.Plugins));
// init tracer
JsonObject oTracer = Json.getObject(descriptor, ConfigKeys.Tracer);
if (!Json.isNullOrEmpty(oTracer)) {
tracer = (Tracer) BeanUtils.create(bluenimbleClassLoader, oTracer, pluginsRegistry);
}
if (tracer != null) {
tracer.onInstall(this);
} else {
tracer = NoTracing.Instance;
}
tracer.log(Tracer.Level.Info, "Instance Config:\n{0}", descriptor);
mapProvider = (MapProvider) BeanUtils.create(bluenimbleClassLoader, Json.getObject(descriptor, ConfigKeys.MapProvider), pluginsRegistry);
if (mapProvider == null) {
mapProvider = new DefaultMapProvider();
}
ClusterPeerFactory clusterPeerFactory = (ClusterPeerFactory) BeanUtils.create(bluenimbleClassLoader, Json.getObject(descriptor, ConfigKeys.ClusterPeerFactory), pluginsRegistry);
if (clusterPeerFactory == null) {
clusterPeerFactory = new DefaultClusterPeerFactory();
}
peer = clusterPeerFactory.create();
interceptor = (ApiInterceptor) BeanUtils.create(bluenimbleClassLoader, Json.getObject(descriptor, ConfigKeys.Interceptor), pluginsRegistry);
if (interceptor == null) {
interceptor = new DefaultApiInterceptor();
}
interceptor.init(this);
serviceValidator = (ApiServiceValidator) BeanUtils.create(bluenimbleClassLoader, Json.getObject(descriptor, ConfigKeys.ServiceValidator), pluginsRegistry);
if (serviceValidator == null) {
serviceValidator = new DefaultApiServiceValidator();
}
requestSigner = (ApiRequestSigner) BeanUtils.create(bluenimbleClassLoader, Json.getObject(descriptor, ConfigKeys.RequestSigner), pluginsRegistry);
if (requestSigner == null) {
requestSigner = new DefaultApiRequestSigner();
}
requestVisitor = (ApiRequestVisitor) BeanUtils.create(bluenimbleClassLoader, Json.getObject(descriptor, ConfigKeys.RequestVisitor), pluginsRegistry);
if (requestVisitor == null) {
requestVisitor = new DefaultApiRequestVisitor();
}
pluginsRegistry.start();
} catch (Throwable th) {
throw new ServerStartupException(th.getMessage(), th);
}
installSpaces();
if (keyStoreManager != null) {
keyStoreManager.start();
}
tracer.log(Tracer.Level.Info, "Instance started @ {0} - in {1} Millis", new Date(), String.valueOf(System.currentTimeMillis() - startTime));
tracer.log(Tracer.Level.Info, "With Root Keys {0} [{1}]", keys.accessKey(), keys.expiryDate() == null ? "Never Expires" : Lang.toString(keys.expiryDate(), Lang.DEFAULT_DATE_FORMAT));
if (!failed.isEmpty()) {
Iterator<String> names = failed.keySet().iterator();
while (names.hasNext()) {
String name = names.next();
printFailed(name, failed.get(name));
}
}
// clear failed exceptions
failed.clear();
}
Aggregations