浏览代码

allow env override to disable browser launch

tags/2.0.1
Jonathan Cobb 3 年前
父节点
当前提交
03c4dc868e
共有 1 个文件被更改,包括 34 次插入17 次删除
  1. +34
    -17
      wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/BrowserLauncherListener.java

+ 34
- 17
wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/BrowserLauncherListener.java 查看文件

@@ -7,34 +7,40 @@ import org.cobbzilla.wizard.server.RestServerLifecycleListenerBase;
import org.cobbzilla.wizard.server.config.RestServerConfiguration;

import java.awt.*;
import java.util.Map;

import static java.awt.Desktop.isDesktopSupported;
import static java.lang.Boolean.parseBoolean;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;
import static org.cobbzilla.util.daemon.ZillaRuntime.empty;

@Slf4j
public class BrowserLauncherListener extends RestServerLifecycleListenerBase {

public static final String DEFAULT_DISABLE_BROWSER_LAUNCH_ENV_VAR = "DISABLE_BROWSER_AUTO_LAUNCH";

public String getDisableBrowserAutoLaunchEnvVarName() { return DEFAULT_DISABLE_BROWSER_LAUNCH_ENV_VAR; }

@Override public void onStart(RestServer server) {
final RestServerConfiguration config = server.getConfiguration();
final String baseUri = config.getPublicUriBase();
final Thread appThread = new Thread(new Runnable() {
@Override public void run() {
final Desktop desktop = isDesktopSupported() ? Desktop.getDesktop() : null;
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(URIUtil.toUri(baseUri));
} catch (Exception e) {
final String msg = "onStart: error launching default browser with url '" + baseUri + "': " + e;
log.error(msg, e);
die(msg, e);
}
} else {
// no browser. tell the user where the server is listening via log statement
final String versionInfo = server.getConfiguration().hasVersion()
? "\nVersion: " + server.getConfiguration().getVersion()
: "";
log.info("\n\n"+server.getConfiguration().getServerName()+" Successfully Started"+versionInfo+"\n\nNot launching browser: System lacks a browser and/or desktop window manager.\n\nWeb UI is: "+baseUri+"\nAPI is: "+baseUri+"/api\nHit Control-C to stop the server\n");
final Thread appThread = new Thread(() -> {
final boolean allowLaunch = configAllowsBrowserLaunch(config);
final Desktop desktop = allowLaunch && isDesktopSupported() ? Desktop.getDesktop() : null;
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(URIUtil.toUri(baseUri));
} catch (Exception e) {
final String msg = "onStart: error launching default browser with url '" + baseUri + "': " + e;
log.error(msg, e);
die(msg, e);
}
} else {
// no browser. tell the user where the server is listening via log statement
final String versionInfo = server.getConfiguration().hasVersion()
? "\nVersion: " + server.getConfiguration().getVersion()
: "";
log.info("\n\n"+server.getConfiguration().getServerName()+" Successfully Started"+versionInfo+"\n\nNot launching browser: System lacks a browser and/or desktop window manager.\n\nWeb UI is: "+baseUri+"\nAPI is: "+baseUri+"/api\nHit Control-C to stop the server\n");
}
});
appThread.setName(BrowserLauncherListener.class.getSimpleName());
@@ -43,4 +49,15 @@ public class BrowserLauncherListener extends RestServerLifecycleListenerBase {

super.onStart(server);
}

public boolean configAllowsBrowserLaunch(RestServerConfiguration config) {
final Map<String, String> env = config.getEnvironment();
final String varName = getDisableBrowserAutoLaunchEnvVarName();
if (empty(varName)) {
log.warn("configAllowsBrowserLaunch: getDisableBrowserAutoLaunchEnvVarName() returned empty, not disabling");
return true;
}
return !parseBoolean(env.get(varName));
}

}

正在加载...
取消
保存