use of org.openntf.openliberty.domino.reverseproxy.ReverseProxyConfig in project openliberty-domino by OpenNTF.
the class ReverseProxyHttpService method notifyMessage.
@Override
public void notifyMessage(EventObject event) {
if (event instanceof ReverseProxyConfigChangedEvent) {
this.targets.values().forEach(ComponentModule::destroyModule);
ReverseProxyConfig config = ((ReverseProxyConfigChangedEvent) event).getSource();
this.enabled = config.isEnabled(this);
this.targets = buildModules(config.getTargets());
}
}
use of org.openntf.openliberty.domino.reverseproxy.ReverseProxyConfig in project openliberty-domino by OpenNTF.
the class AdminNSFProxyConfigProvider method createConfiguration.
@SuppressWarnings("unchecked")
@Override
public ReverseProxyConfig createConfiguration() {
ReverseProxyConfig result = new ReverseProxyConfig();
RuntimeConfigurationProvider runtimeConfig = OpenLibertyUtil.findRequiredExtension(RuntimeConfigurationProvider.class);
result.dominoHostName = runtimeConfig.getDominoHostName();
result.dominoHttpPort = runtimeConfig.getDominoPort();
result.dominoHttps = runtimeConfig.isDominoHttps();
try {
DominoThreadFactory.getExecutor().submit(() -> {
try {
Session session = NotesFactory.createSession();
try {
Database adminNsf = AdminNSFUtil.getAdminDatabase(session);
Document config = AdminNSFUtil.getConfigurationDocument(adminNsf);
// Load the main config
boolean connectorHeaders = runtimeConfig.isUseDominoConnectorHeaders();
readConfigurationDocument(result, config, connectorHeaders);
if (!result.isGlobalEnabled()) {
return;
}
Collection<String> namesList = AdminNSFUtil.getCurrentServerNamesList();
// Look for proxy-enabled webapps
View targetsView = adminNsf.getView(VIEW_REVERSEPROXYTARGETS);
targetsView.setAutoUpdate(false);
targetsView.refresh();
ViewNavigator nav = targetsView.createViewNav();
nav.setEntryOptions(ViewNavigator.VN_ENTRYOPT_NOCOUNTDATA);
ViewEntry entry = nav.getFirst();
while (entry != null) {
Vector<?> columnValues = entry.getColumnValues();
List<String> dominoServers;
Object dominoServersObj = columnValues.get(4);
if (dominoServersObj instanceof String) {
dominoServers = Arrays.asList((String) dominoServersObj);
} else {
dominoServers = (List<String>) dominoServersObj;
}
boolean shouldRun = AdminNSFUtil.isNamesListMatch(namesList, dominoServers);
if (shouldRun) {
// Format: http://localhost:80
String baseUri = (String) columnValues.get(1);
// $NON-NLS-1$
boolean useXForwardedFor = "Y".equals(columnValues.get(2));
// $NON-NLS-1$
boolean useWsHeaders = "Y".equals(columnValues.get(3));
// Now read the children to build targets
ViewEntry childEntry = nav.getChild(entry);
while (childEntry != null) {
Vector<?> childValues = childEntry.getColumnValues();
// Format: foo
String contextPath = (String) childValues.get(0);
// $NON-NLS-1$
URI uri = URI.create(baseUri + "/" + contextPath);
ReverseProxyTarget target = new ReverseProxyTarget(uri, useXForwardedFor, useWsHeaders);
result.addTarget(contextPath, target);
childEntry.recycle(childValues);
ViewEntry tempChild = childEntry;
childEntry = nav.getNextSibling(childEntry);
tempChild.recycle();
}
}
entry.recycle(columnValues);
ViewEntry tempEntry = entry;
entry = nav.getNextSibling(entry);
tempEntry.recycle();
}
} finally {
session.recycle();
}
return;
} catch (Throwable e) {
e.printStackTrace(OpenLibertyLog.instance.out);
throw new RuntimeException(e);
}
}).get();
if (result.isGlobalEnabled()) {
// Determine the local server port from the server doc
DominoThreadFactory.getExecutor().submit(() -> {
try {
Session session = NotesFactory.createSession();
try {
String serverName = session.getUserName();
// $NON-NLS-1$ //$NON-NLS-2$
Database names = session.getDatabase("", "names.nsf");
// $NON-NLS-1$
View servers = names.getView("$Servers");
Document serverDoc = servers.getDocumentByKey(serverName);
// Mirror Domino's maximum entity size
// $NON-NLS-1$
long maxEntitySize = serverDoc.getItemValueInteger("HTTP_MaxContentLength");
if (maxEntitySize == 0) {
maxEntitySize = Long.MAX_VALUE;
}
result.maxEntitySize = maxEntitySize;
} finally {
session.recycle();
}
} catch (Exception e) {
e.printStackTrace(OpenLibertyLog.instance.out);
throw new RuntimeException(e);
}
}).get();
}
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace(OpenLibertyLog.instance.out);
throw new RuntimeException(e);
}
return result;
}
use of org.openntf.openliberty.domino.reverseproxy.ReverseProxyConfig in project openliberty-domino by OpenNTF.
the class StandaloneReverseProxyService method notifyMessage.
@Override
public void notifyMessage(EventObject event) {
if (event instanceof ReverseProxyConfigChangedEvent) {
ReverseProxyConfig config = ((ReverseProxyConfigChangedEvent) event).getSource();
int newHash = config.hashCode();
if (this.configHash != newHash) {
this.config = config;
this.configHash = newHash;
refreshServer();
}
}
}
Aggregations