From 7b73aad3fcbda657a915fe0d7c3b6c63ad131f6a Mon Sep 17 00:00:00 2001 From: Philip Marzullo Date: Thu, 20 Jan 2022 09:21:23 -0500 Subject: [PATCH] 0005200: Allow specification of local user/password for running Windows service --- symmetric-server/src/main/deploy/conf/sym_service.conf | 1 + .../org/jumpmind/symmetric/wrapper/WindowsService.java | 10 +++++++++- .../org/jumpmind/symmetric/wrapper/WrapperConfig.java | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/symmetric-server/src/main/deploy/conf/sym_service.conf b/symmetric-server/src/main/deploy/conf/sym_service.conf index 816bc7a7e3..628800afe3 100644 --- a/symmetric-server/src/main/deploy/conf/sym_service.conf +++ b/symmetric-server/src/main/deploy/conf/sym_service.conf @@ -92,6 +92,7 @@ wrapper.displayname=SymmetricDS wrapper.description=Database Synchronization wrapper.run.as.user= +wrapper.run.as.password= #******************************************************************** # Wrapper Windows NT/2000/XP Service Properties diff --git a/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WindowsService.java b/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WindowsService.java index 92917aeb30..88e08f2470 100644 --- a/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WindowsService.java +++ b/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WindowsService.java @@ -345,10 +345,18 @@ public void install() { } dependencies = sb.append("\0").toString(); } + String runAsUser = config.getRunAsUser(); + if (runAsUser != null && runAsUser.trim().length() == 0) { + runAsUser = null; + } + String runAsPassword = config.getRunAsPassword(); + if (runAsPassword != null && runAsPassword.trim().length() == 0) { + runAsPassword = null; + } service = advapi.CreateService(manager, config.getName(), config.getDisplayName(), Winsvc.SERVICE_ALL_ACCESS, WinsvcEx.SERVICE_WIN32_OWN_PROCESS, config.isAutoStart() || config.isDelayStart() ? WinsvcEx.SERVICE_AUTO_START : WinsvcEx.SERVICE_DEMAND_START, WinsvcEx.SERVICE_ERROR_NORMAL, - commandToString(getWrapperCommand("init", true)), null, null, dependencies, null, null); + commandToString(getWrapperCommand("init", true)), null, null, dependencies, runAsUser, runAsPassword); if (service != null) { Advapi32Ex.SERVICE_DESCRIPTION desc = new Advapi32Ex.SERVICE_DESCRIPTION(config.getDescription()); advapi.ChangeServiceConfig2(service, WinsvcEx.SERVICE_CONFIG_DESCRIPTION, desc); diff --git a/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WrapperConfig.java b/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WrapperConfig.java index 75481d617d..b6cb108209 100644 --- a/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WrapperConfig.java +++ b/symmetric-wrapper/src/main/java/org/jumpmind/symmetric/wrapper/WrapperConfig.java @@ -148,6 +148,10 @@ public List getOptions() { public String getRunAsUser() { return getProperty(prop, "wrapper.run.as.user", ""); } + + public String getRunAsPassword() { + return getProperty(prop, "wrapper.run.as.password", ""); + } public List getApplicationParameters() { return getListProperty(prop, "wrapper.app.parameter");