[java-idp-plugin-jetty] 01/01: WIP

Rod Widdowson rdw at steadingsoftware.com
Sun Aug 17 13:07:33 UTC 2025


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch dev/BatfileWIP
in repository java-idp-plugin-jetty.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-jetty.git;a=commit;h=3e229189d56600aa9289f99a3c8c8ef05d560bb7

commit 3e229189d56600aa9289f99a3c8c8ef05d560bb7
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sun Aug 17 13:56:05 2025 +0100

    WIP
---
 .../shibboleth/idp/module/jetty/config-jetty.bat   | 94 +++++++++++++++++----
 .../shibboleth/idp/module/jetty/module.properties  | 31 ++++++-
 .../net/shibboleth/idp/module/jetty/runjetty.bat   | 21 +++--
 .../net/shibboleth/idp/module/jetty/runjetty.sh    |  2 -
 .../shibboleth/idp/module/jetty/setjettybase.bat   | 97 ++++++++++++++++++++++
 .../idp/module/jetty/setjettyversion.bat           | 14 ++++
 .../idp/module/jetty/setprocrunversion.bat         | 24 ++++++
 7 files changed, 251 insertions(+), 32 deletions(-)

diff --git a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/config-jetty.bat b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/config-jetty.bat
index 4c747f0..cddbbc2 100644
--- a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/config-jetty.bat
+++ b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/config-jetty.bat
@@ -1,4 +1,8 @@
 @echo off
+
+REM
+REM We do not want any environment changes we make to escape
+REM
 setlocal
 
 REM We need a JVM
@@ -7,18 +11,29 @@ if not defined JAVA_HOME  (
   exit /b
 )
 
+set IDP_HOME_WINDOWS=%~dp0..
+set IDP_HOME_UNIX=%IDP_HOME_WINDOWS:\=/%
+set JETTY_TMP=%IDP_HOME_WINDOWS%\jetty-dist\jetty-tmp
+set PRUNSRV=%PROCRUN_HOME%\amd64\prunsrv.exe
+
 if not exist "%JAVA_HOME%\bin\server\jvm.dll" (
   echo Error: %JAVA_HOME%\bin\server\jvm.dll not found
   exit /b
 )
 
-set IDP_HOME_WINDOWS=%~dp0..
-set JETTY_BASE=%~dp0..\jetty-base
-set JETTY_HOME=%~dp0..\jetty-home
-set PRUNSRV=%IDP_HOME_WINDOWS%\shibd_idp\amd64\prunsrv.exe
+if not exist "%JETTY_HOME%\start.jar" (
+  echo Error: %JETTY_HOME%\start.jar not found
+  exit /b
+)
+
+if not exist "%JETTY_BASE%\start.d\idp.ini" (
+  echo Error: %JETTY_BASE%\start.d\idp.ini not found
+  exit /b
+)
 
-for /f "tokens=* USEBACKQ" %%F in (`type "%JETTY_BASE%\jetty.base.linux"`) do (
-    SET IDP_HOME_UNIX=%%F
+if not exist "%PRUNSRV%" (
+  echo Error: %PRUNSRV% not found
+  exit /b
 )
 
 if "%1" EQU "UNINSTALL" (
@@ -29,7 +44,7 @@ if "%1" EQU "UNINSTALL" (
 
 if "%1" EQU "EDIT" (
     @echo on
-    start /d "%IDP_HOME_WINDOWS%\shibd_idp" prunmgr //ES/Shibd_idp
+    start /d "%PROCRUN_HOME%" prunmgr //ES/Shibd_idp
     exit /b
 )
 
@@ -45,24 +60,68 @@ if NOT "%2" EQU "" (
    SET PR_SERVICEPASSWORD=%PASSWORD%
 ) else (
     SET USERNAME=LocalService
+    SET PR_SERVICEUSER=
+    SET PR_SERVICEPASSWORD=
 )
 
-
 REM
 REM First up create and configure the procrun instance which will run jetty
 REM This is described in
 REM https://commons.apache.org/proper/commons-daemon/procrun.html
 REM And what is set comes from the jetty documentation
 REM
-SET PORTPASS=%random%-%random%-%random%-%random%
+REM We use use PR_xxx for parameters to keep things legible and to allow for spaces in paths.
+REM But before we do anything we need make sure there is nothing rogue in our environment.
+REM
+SET PR_DESCRIPTION=
+SET PR_DISPLAYNAME=
+SET PR_INSTALL=
+SET PR_STARTUP=
+SET PR_TYPE=
+SET PR_DEPENDSON=
+SET PR_ENVIRONMENT=
+SET PR_USER=
+SET PR_PASSWORD=
+SET PR_LIBRARYPATH=
+SET PR_JAVAHOME=
+SET PR_JVM=
+SET PR_JVMOPTIONS=
+SET PR_JVMOPTIONS9=
+SET PR_CLASSPATH=
+SET PR_JVMMS=
+SET PR_JVMMX=
+SET PR_JVMSS=
+SET PR_STARTMODE=
+SET PR_STARTIMAGE=
+SET PR_STARTPATH=
+SET PR_STARTCLASS=
+SET PR_STARTMETHOD=
+SET PR_STARTPARAMS=
+SET PR_STOPMODE=
+SET PR_STOPIMAGE=
+SET PR_STOPPATH=
+SET PR_STOPCLASS=
+SET PR_STOPMETHOD=
+SET PR_STOPPARAMS=
+SET PR_STOPTIMEOUT=
+SET PR_LOGPATH=
+SET PR_LOGPREFIX=
+SET PR_LOGLEVEL=
+SET PR_LOGJNIMESSAGES=
+SET PR_STDOUTPUT=
+SET PR_STDERROR=
+SET PR_PIDFILE=
 
 REM
-REM Use PR_xxx for parameters to keep things legible and to allow for spaces in paths
+REM Now set up the things we do want to set
 REM
+
+SET PORTPASS=%random%-%random%-%random%-%random%
+
 SET PR_DISPLAYNAME=Shibboleth IdP Daemon
 SET PR_DESCRIPTION=Runs the Jetty Container
-SET PR_CLASSPATH=%JETTY_HOME%\start.jar
-SET PR_JVMOPTIONS=-Didp.home=%IDP_HOME_UNIX%;-Djdk.tls.ephemeralDHKeySize=2048;-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog;-Djava.io.tmpdir=%JETTY_BASE%\tmp;-Dlogback.configurationFile=%JETTY_BASE%\resources\logback.xml;-XX:+UseG1GC
+SET PR_CLASSPATH=%%JETTY_HOME%%\start.jar
+SET PR_JVMOPTIONS=-Didp.home=%IDP_HOME_UNIX%;-Djdk.tls.ephemeralDHKeySize=2048;-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog;-Djava.io.tmpdir=%JETTY_TMP%;-Dlogback.configurationFile=%JETTY_BASE%\resources\logback.xml;-XX:+UseG1GC
 SET PR_JVMMX=2048
 SET PR_JVM=auto
 SET PR_JAVAHOME=%JAVA_HOME%
@@ -92,17 +151,18 @@ REM
 call "%~dp0\setacl.bat" %USERNAME%
 
 REM
-REM We also need to lock down jetty-base-tmp
+REM We also need to create and lock down jetty-tmp
 REM
-echo Setting FULL ACL on %JETTY_BASE%\tmp directory for SYSTEM,  Administrators and %USERNAME%
-icacls "%JETTY_BASE%\tmp" /t /inheritance:r /grant:r "SYSTEM:(OI)(CI)(F)" "Administrators:(OI)(CI)(F)" "%USERNAME%:(OI)(CI)(F)" /q
+mkdir %JETTY_TMP%
+echo Setting FULL ACL on %JETTY_TMP% directory for SYSTEM,  Administrators and %USERNAME%
+icacls "%JETTY_TMP%" /t /inheritance:r /grant:r "SYSTEM:(OI)(CI)(F)" "Administrators:(OI)(CI)(F)" "%USERNAME%:(OI)(CI)(F)" /q
 if ERRORLEVEL 1 (
    echo Error: Could not set ACL
    exit /b
 )
 
-echo Setting FULL ACL on %JETTY_BASE%\tmp directory content for SYSTEM,  Administrators and %USERNAME%
-icacls "%JETTY_BASE%\tmp" /t /inheritance:r /grant:r SYSTEM:F Administrators:F "%USERNAME%:F" /q
+echo Setting FULL ACL on %~dp0..jetty-dist\jetty-tmp content for SYSTEM,  Administrators and %USERNAME%
+icacls "%JETTY_TMP%" /t /inheritance:r /grant:r SYSTEM:F Administrators:F "%USERNAME%:F" /q
 if ERRORLEVEL 1 (
   echo Error: Could not set ACL
   exit /b
diff --git a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/module.properties b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/module.properties
index 6f398a3..dcc3eea 100644
--- a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/module.properties
+++ b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/module.properties
@@ -74,6 +74,7 @@ jetty.module.13.src = /net/shibboleth/idp/module/jetty/runjetty.bat
 jetty.module.13.dest = bin/runjetty.bat
 jetty.module.13.nonwindows = false
 jetty.module.13.windows = true
+jetty.module.13.replace = true
 
 jetty.module.14.src = /net/shibboleth/idp/module/jetty/runjetty.sh
 jetty.module.14.dest = bin/runjetty.sh
@@ -85,23 +86,45 @@ jetty.module.15.src = /net/shibboleth/idp/module/jetty/config-jetty.bat
 jetty.module.15.dest = bin/config-jetty.bat
 jetty.module.15.nonwindows = false
 jetty.module.15.windows = true
+jetty.module.15.replace = true
 
 jetty.module.16.src = /net/shibboleth/idp/module/jetty/downloadjetty.bat
 jetty.module.16.dest = bin/downloadjetty.bat
 jetty.module.16.nonwindows = false
 jetty.module.16.windows = true
+jetty.module.16.replace = true
 
 jetty.module.17.src = /net/shibboleth/idp/module/jetty/downloadjetty.sh
 jetty.module.17.dest = bin/downloadjetty.sh
 jetty.module.17.nonwindows = true
 jetty.module.17.windows = false
 jetty.module.17.exec = true
+jetty.module.17.replace = true
 
 jetty.module.18.src = /net/shibboleth/idp/module/jetty/downloadprocrun.bat
 jetty.module.18.dest = bin/downloadprocrun.bat
 jetty.module.18.nonwindows = false
 jetty.module.18.windows = true
-
-jetty.module.19.src = /net/shibboleth/idp/module/jetty/jetty-base-download-keystore.gpg
-jetty.module.19.dest = credentials/jetty-base-download-keystore.gpg
-jetty.module.19.replace = false
\ No newline at end of file
+jetty.module.18.replace = true
+
+jetty.module.19.src = /net/shibboleth/idp/module/jetty/setprocrunversion.bat
+jetty.module.19.dest = bin/setprocrunversion.bat
+jetty.module.19.nonwindows = false
+jetty.module.19.windows = true
+jetty.module.19.replace = true
+
+jetty.module.20.src = /net/shibboleth/idp/module/jetty/setjettyversion.bat
+jetty.module.20.dest = bin/setjettyversion.bat
+jetty.module.20.nonwindows = false
+jetty.module.20.windows = true
+jetty.module.20.replace = true
+
+jetty.module.21.src = /net/shibboleth/idp/module/jetty/setjettybase.bat
+jetty.module.21.dest = bin/setjettybase.bat
+jetty.module.21.nonwindows = false
+jetty.module.21.windows = true
+jetty.module.21.replace = true
+
+jetty.module.22.src = /net/shibboleth/idp/module/jetty/jetty-base-download-keystore.gpg
+jetty.module.22.dest = credentials/jetty-base-download-keystore.gpg
+jetty.module.22.replace = false
\ No newline at end of file
diff --git a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.bat b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.bat
index fe6f4bb..4760ffc 100644
--- a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.bat
+++ b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.bat
@@ -1,7 +1,6 @@
- at echo off
+rem @echo off
 setlocal
 
-
 REM We need a JVM
 if not defined JAVA_HOME  (
   echo Error: JAVA_HOME is not defined.
@@ -18,17 +17,17 @@ if not exist %JAVACMD% (
 )
 
 set IDP_HOME_WINDOWS=%~dp0..
-
-for /f "tokens=* USEBACKQ" %%F in (`type %~dp0..\jetty-base\jetty.base.linux`) do (
-SET IDP_HOME_UNIX=%%F
-)
+SET IDP_HOME_UNIX=%IDP_HOME_WINDOWS:\=/%
+SET JETTY_TMP=%IDP_HOME_WINDOWS%\jetty-dist\jetty-tmp
 
 if not defined JETTY_HOME (
-   set JETTY_HOME=%IDP_HOME_WINDOWS%\jetty-home
+  echo Error: JETTY_HOME not defined.
+  exit /b
 )
 
 if not defined JETTY_BASE (
-   set JETTY_BASE=%IDP_HOME_WINDOWS%\jetty-base
+  echo Error: JETTY_BASE not defined.
+  exit /b
 )
 
 if not exist "%JETTY_HOME%\start.jar" (
@@ -36,12 +35,16 @@ if not exist "%JETTY_HOME%\start.jar" (
   exit /b
 )
 
+if not exist "%JETTY_TMP%" (
+   mkdir %JETTY_TMP%
+)
+
 if not exist "%JETTY_BASE%\start.d" (
   echo Error: JETTY_BASE does not point to a Jetty Base
   exit /b
 )
 
-set JVM_ARGS=-Didp.home="%IDP_HOME_UNIX%" -Djdk.tls.ephemeralDHKeySize=2048 -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog -Djava.io.tmpdir="%JETTY_BASE%/tmp" -XX:+UseG1GC
+set JVM_ARGS=-Didp.home="%IDP_HOME_UNIX%" -Djdk.tls.ephemeralDHKeySize=2048 -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog -Djava.io.tmpdir="%JETTY_TMP%" -XX:+UseG1GC
 
 
 SET JETTY_ARGS=jetty.base="%JETTY_BASE%" jetty.logging.dir="%IDP_HOME_WINDOWS%\logs"
diff --git a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.sh b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.sh
index 598719c..9631562 100644
--- a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.sh
+++ b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/runjetty.sh
@@ -27,14 +27,12 @@ fi
 
 IDP_HOME=$(realpath ${LOCATION}/..)
 
-JETTY_HOME=$LOCATION/../jetty-home
 if [ ! -e "$JETTY_HOME/start.jar" ] ; then
   echo "Error: JETTY_HOME is not defined correctly."
   echo " $JETTY_HOME/start.jar not found"
   exit 1
 fi
 
-JETTY_BASE=$LOCATION/../jetty-base
 if [ ! -d "$JETTY_BASE/start.d" ] ; then
   echo "Error: JETTY_BASE is not defined correctly."
   echo " $JETTY_BASE/start.d not found"
diff --git a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setjettybase.bat b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setjettybase.bat
new file mode 100644
index 0000000..f16bf44
--- /dev/null
+++ b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setjettybase.bat
@@ -0,0 +1,97 @@
+REM @echo off
+
+set IDP_HOME_WINDOWS=%~dp0..
+if not exist %IDP_HOME_WINDOWS%\jetty-base-%1% (
+   echo Error: jetty-base-%1% not installed
+   exit /b
+)
+
+set JETTY_BASE=%IDP_HOME_WINDOWS%\jetty-base-%1%
+setx /m JETTY_BASE %JETTY_BASE%
+echo JETTY_BASE set to be %JETTY_BASE%
+
+sc qc shibd_idp > nul 2>&1
+
+REM below reads if error level > 1 then ....
+if errorlevel 1 (
+   echo Procrun not installed, skipping further configuration
+   exit /b
+)
+
+REM
+REM we do no wantany of these variables polluting the environment
+REM
+setlocal
+set IDP_HOME_UNIX=%IDP_HOME_WINDOWS:\=/%
+set JETTY_TMP=%IDP_HOME_WINDOWS%\jetty-dist\jetty-tmp
+set PRUNSRV=%PROCRUN_HOME%\amd64\prunsrv.exe
+
+REM
+REM As per config-jetty we will set the shibd_idp parameters according to 
+REM https://commons.apache.org/proper/commons-daemon/procrun.html
+REM
+REM Annoyingly, the PR_xxx trick always appends so we run //US twice
+REM once to set the first parameter via the --Option thing
+REM and a second time to append the rest of the stuff.
+REM
+REM Make sure there are no parameters set (otherwise they will be appended
+REM to our exiting settings.
+REM
+SET PR_DESCRIPTION=
+SET PR_DISPLAYNAME=
+SET PR_INSTALL=
+SET PR_STARTUP=
+SET PR_TYPE=
+SET PR_DEPENDSON=
+SET PR_ENVIRONMENT=
+SET PR_USER=
+SET PR_PASSWORD=
+SET PR_SERVICEUSER=
+SET PR_SERVICEPASSWORD=
+SET PR_LIBRARYPATH=
+SET PR_JAVAHOME=
+SET PR_JVM=
+SET PR_JVMOPTIONS=
+SET PR_JVMOPTIONS9=
+SET PR_CLASSPATH=
+SET PR_JVMMS=
+SET PR_JVMMX=
+SET PR_JVMSS=
+SET PR_STARTMODE=
+SET PR_STARTIMAGE=
+SET PR_STARTPATH=
+SET PR_STARTCLASS=
+SET PR_STARTMETHOD=
+SET PR_STARTPARAMS=
+SET PR_STOPMODE=
+SET PR_STOPIMAGE=
+SET PR_STOPPATH=
+SET PR_STOPCLASS=
+SET PR_STOPMETHOD=
+SET PR_STOPPARAMS=
+SET PR_STOPTIMEOUT=
+SET PR_LOGPATH=
+SET PR_LOGPREFIX=
+SET PR_LOGLEVEL=
+SET PR_LOGJNIMESSAGES=
+SET PR_STDOUTPUT=
+SET PR_STDERROR=
+SET PR_PIDFILE=
+
+REM
+REM Force a reser if the three things we want to change
+REM
+%PRUNSRV%  //US/Shibd_idp --JvmOptions=-Didp.home=%IDP_HOME_UNIX% --StartParams=STOP_PORT=8963 --StopParams=--stop;STOP_PORT=8963
+
+REM
+REM And set up the rest to be appended
+REM
+SET PORTPASS=%random%-%random%-%random%-%random%
+SET PR_JVMOPTIONS=-Djdk.tls.ephemeralDHKeySize=2048;-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog;-Djava.io.tmpdir=%JETTY_TMP%;-Dlogback.configurationFile=%JETTY_BASE%\resources\logback.xml;-XX:+UseG1GC
+SET PR_STARTPARAMS=STOP.KEY=%PORTPASS%;jetty.base=%JETTY_BASE%;jetty.logging.dir=%IDP_HOME_WINDOWS%\logs
+SET PR_STOPPARAMS=%PR_STARTPARAMS%
+
+%PRUNSRV%  //US/Shibd_idp
+
+echo Restart shibd_idp to start using this version
+
diff --git a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setjettyversion.bat b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setjettyversion.bat
new file mode 100644
index 0000000..e0c7cae
--- /dev/null
+++ b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setjettyversion.bat
@@ -0,0 +1,14 @@
+ at echo off
+
+set IDP_HOME_WINDOWS=%~dp0..
+if not exist %IDP_HOME_WINDOWS%\jetty-dist\jetty-home-%1% (
+   echo Error: Jetty version %1% has not be downloaded and unpacked
+   exit /b
+)
+
+set JETTY_HOME=%IDP_HOME_WINDOWS%\jetty-dist\jetty-home-%1%
+setx /m JETTY_HOME %JETTY_HOME%
+
+echo JETTY_HOME set to be %JETTY_HOME%
+echo Restart the IdP to start using this version
+
diff --git a/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setprocrunversion.bat b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setprocrunversion.bat
new file mode 100644
index 0000000..f9abc14
--- /dev/null
+++ b/jetty-impl/src/main/resources/net/shibboleth/idp/module/jetty/setprocrunversion.bat
@@ -0,0 +1,24 @@
+ at echo off
+
+set IDP_HOME_WINDOWS=%~dp0..
+if not exist %IDP_HOME_WINDOWS%\jetty-dist\commons-daemon-%1% (
+   echo Error: Procrun version %1% has not be downloaded and unpacked
+   exit /b
+)
+
+set PROCRUN_HOME=%IDP_HOME_WINDOWS%\jetty-dist\commons-daemon-%1%
+setx /m PROCRUN_HOME %PROCRUN_HOME%
+
+echo PROCRUN_HOME set to be %PROCRUN_HOME%
+
+sc qc shibd_idp > nul 2>&1
+
+if ERRORLEVEL 1 (
+   echo NOTE shibd_idp service has not been configured yet
+   exit /b
+)
+
+sc config shibd_idp binpath="%procrun_home%\amd64\prunsrv.exe //RS//Shibd_idp
+echo Restart shibd_idp to start using this version"
+
+

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list