GP-3053: Control over tmp dir location in GhidraServer

This commit is contained in:
Ryan Kurtz
2023-02-23 13:07:15 -05:00
parent 4b50ba28a9
commit e2c3d53a05
3 changed files with 52 additions and 39 deletions
+23 -17
View File
@@ -5,6 +5,9 @@
# Initial Working Directory (i.e., absolute installation directory path)
wrapper.working.dir=${ghidra_home}
# Temporary directory (set WRAPPER_TMPDIR in ghidraSvr(.bat) script to modify this)
wrapper.tmp.path=${wrapper_tmpdir}
# Mac OS X launchd plist directory
wrapper.launchd.dir=/Library/LaunchDaemons
@@ -26,37 +29,40 @@ wrapper.java.additional.2=-DApplicationRollingFileAppender.maxBackupIndex=10
# Ensure that classpath_frag is defined for service startup
wrapper.java.additional.3=-Dclasspath_frag=${classpath_frag}
# Java temporary directory (set WRAPPER_TMPDIR in ghidraSvr(.bat) script to modify this)
wrapper.java.additional.4=-Djava.io.tmpdir=${wrapper_tmpdir}
# JNA temporary directory (set WRAPPER_TMPDIR in ghidraSvr(.bat) script to modify this).
# Note that YAJSW relies on jna_tmpdir (underscore). We set jna.tmpdir in case the Ghidra Server ever wants to do JNA.
wrapper.java.additional.5=-Djna.tmpdir=${wrapper_tmpdir}
# Limit server to specific TLS protocols for all secure connections.
# NOTE: multiple protocols must be separated with a semi-colon (e.g., TLSv1.2;TLSv1.3).
wrapper.java.additional.4=-Dghidra.tls.server.protocols=TLSv1.2;TLSv1.3
wrapper.java.additional.6=-Dghidra.tls.server.protocols=TLSv1.2;TLSv1.3
# A suitable cacerts file must be installed when using PKI authentication
#wrapper.java.additional.5=-Dghidra.cacerts=./Ghidra/cacerts
#wrapper.java.additional.7=-Dghidra.cacerts=./Ghidra/cacerts
# If Ghidra clients must authenticate the server, the server will need to install
# a server key/certificate in a secure location (e.g., /etc/pki/...)
# and specify the location and password via the properties below.
# Be sure to properly set permissions on the Ghidra installation and this file
# if using these settings.
#wrapper.java.additional.6=-Dghidra.keystore=
#wrapper.java.additional.7=-Dghidra.password=
# Temporary Directory Setting - uncomment the following setting to override the Java default.
# This may be necessary on certain Windows platforms when installing as a service.
#wrapper.java.additional.8=-Djava.io.tmpdir=C:\\Windows\\Temp
#wrapper.java.additional.8=-Dghidra.keystore=
#wrapper.java.additional.9=-Dghidra.password=
# Enable/Disable use of compression for DataBuffer serialization and Block Streams
wrapper.java.additional.9=-Ddb.buffers.DataBuffer.compressedOutput=true
wrapper.java.additional.10=-Ddb.buffers.DataBuffer.compressedOutput=true
# Uncomment to enable remote debug support
# The debug address will listen on all network interfaces, if desired the '*' may be
# set to a specific interface IP address (e.g., 127.0.0.1) if you wish to restrict.
# During debug it may be necessary to increase timeout values to prevent the wrapper
# from restarting the server due to unresponsiveness.
#wrapper.java.additional.10=-Xdebug
#wrapper.java.additional.11=-Xnoagent
#wrapper.java.additional.12=-Djava.compiler=NONE
#wrapper.java.additional.13=-Xrunjdwp:transport=dt_socket\,server=y\,suspend=n\,address=*:18200
#wrapper.java.additional.11=-Xdebug
#wrapper.java.additional.12=-Xnoagent
#wrapper.java.additional.13=-Djava.compiler=NONE
#wrapper.java.additional.14=-Xrunjdwp:transport=dt_socket\,server=y\,suspend=n\,address=*:18200
#wrapper.startup.timeout=0
#wrapper.ping.timeout=0
@@ -67,10 +73,10 @@ wrapper.java.additional.9=-Ddb.buffers.DataBuffer.compressedOutput=true
# Uncomment to enable remote use of jvisualvm for profiling
# See JMX documentation for more information: http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html
#wrapper.java.additional.14=-Dcom.sun.management.jmxremote.port=9010
#wrapper.java.additional.15=-Dcom.sun.management.jmxremote.local.only=false
#wrapper.java.additional.16=-Dcom.sun.management.jmxremote.authenticate=false
#wrapper.java.additional.17=-Dcom.sun.management.jmxremote.ssl=false
#wrapper.java.additional.15=-Dcom.sun.management.jmxremote.port=9010
#wrapper.java.additional.16=-Dcom.sun.management.jmxremote.local.only=false
#wrapper.java.additional.17=-Dcom.sun.management.jmxremote.authenticate=false
#wrapper.java.additional.18=-Dcom.sun.management.jmxremote.ssl=false
# YAJSW will by default assume a POSIX spawn for Linux and Mac OS X systems, unfortunately it has
# not yet been implemented for Mac OS X. The default process support within YAJSW for Mac OS X is
+12 -7
View File
@@ -56,6 +56,7 @@ APP_LONG_NAME="Ghidra Server"
MODULE_DIR="Ghidra/Features/GhidraServer"
WRAPPER_NAME_PREFIX=yajsw
SERVICE_NAME=org.rzo.yajsw.$APP_NAME
WRAPPER_TMPDIR="${TMPDIR:-/tmp}"
# Resolve symbolic link if present and get the directory this script lives in.
# NOTE: "readlink -f" is best but works on Linux only, "readlink" will only work if your PWD
@@ -137,6 +138,10 @@ fi
JAVA_CMD="${JAVA_HOME}/bin/java"
VMARGS=()
VMARGS+=("-Djna_tmpdir=${WRAPPER_TMPDIR}")
VMARGS+=("-Djava.io.tmpdir=${WRAPPER_TMPDIR}")
enableForkHack() {
# use of fork_hack only needed for Mac OS X
@@ -180,7 +185,7 @@ EOF
checkInstall() {
# capture status text
RESULT=$(java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" "${JAVA_CMD}" -jar "${WRAPPER_HOME}/wrapper.jar" -q "${WRAPPER_CONF}" | grep "Installed :" | sed -E "s/Installed : //")
RESULT=$(java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" wrapper_tmpdir="${WRAPPER_TMPDIR}" "${JAVA_CMD}" "${VMARGS[@]}" -jar "${WRAPPER_HOME}/wrapper.jar" -q "${WRAPPER_CONF}" | grep "Installed :" | sed -E "s/Installed : //")
if [ "${RESULT}" = "true" ]; then
return 0
fi
@@ -190,31 +195,31 @@ checkInstall() {
console() {
echo "Running ${APP_LONG_NAME}..."
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" "${JAVA_CMD}" -jar "${WRAPPER_HOME}/wrapper.jar" -c "${WRAPPER_CONF}"
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" wrapper_tmpdir="${WRAPPER_TMPDIR}" "${JAVA_CMD}" "${VMARGS[@]}" -jar "${WRAPPER_HOME}/wrapper.jar" -c "${WRAPPER_CONF}"
}
start() {
echo "Starting ${APP_LONG_NAME}..."
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" "${JAVA_CMD}" -jar "${WRAPPER_HOME}/wrapper.jar" -t "${WRAPPER_CONF}"
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" wrapper_tmpdir="${WRAPPER_TMPDIR}" "${JAVA_CMD}" "${VMARGS[@]}" -jar "${WRAPPER_HOME}/wrapper.jar" -t "${WRAPPER_CONF}"
}
stopit() {
echo "Stopping ${APP_LONG_NAME}..."
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" "${JAVA_CMD}" -jar "${WRAPPER_HOME}/wrapper.jar" -p "${WRAPPER_CONF}"
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" wrapper_tmpdir="${WRAPPER_TMPDIR}" "${JAVA_CMD}" "${VMARGS[@]}" -jar "${WRAPPER_HOME}/wrapper.jar" -p "${WRAPPER_CONF}"
}
install() {
echo "Installing ${APP_LONG_NAME}..."
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" "${JAVA_CMD}" -jar "${WRAPPER_HOME}/wrapper.jar" -i "${WRAPPER_CONF}"
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" wrapper_tmpdir="${WRAPPER_TMPDIR}" "${JAVA_CMD}" "${VMARGS[@]}" -jar "${WRAPPER_HOME}/wrapper.jar" -i "${WRAPPER_CONF}"
}
uninstall() {
echo "Uninstalling ${APP_LONG_NAME}..."
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" "${JAVA_CMD}" -jar "${WRAPPER_HOME}/wrapper.jar" -r "${WRAPPER_CONF}"
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" wrapper_tmpdir="${WRAPPER_TMPDIR}" "${JAVA_CMD}" "${VMARGS[@]}" -jar "${WRAPPER_HOME}/wrapper.jar" -r "${WRAPPER_CONF}"
}
status() {
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" "${JAVA_CMD}" -jar "${WRAPPER_HOME}/wrapper.jar" -q "${WRAPPER_CONF}"
java="${JAVA_CMD}" ghidra_home="${GHIDRA_HOME}" classpath_frag="${CLASSPATH_FRAG}" wrapper_tmpdir="${WRAPPER_TMPDIR}" "${JAVA_CMD}" "${VMARGS[@]}" -jar "${WRAPPER_HOME}/wrapper.jar" -q "${WRAPPER_CONF}"
}
case "$1" in
@@ -64,12 +64,11 @@ if "%IS_ADMIN%"=="NO" (
if "%OPTION%"=="restart" goto adminFail
)
set APP_NAME=ghidraSvr
set APP_LONG_NAME=Ghidra Server
set MODULE_DIR=Ghidra\Features\GhidraServer
set WRAPPER_NAME_PREFIX=yajsw
set "APP_NAME=ghidraSvr"
set "APP_LONG_NAME=Ghidra Server"
set "MODULE_DIR=Ghidra\Features\GhidraServer"
set "WRAPPER_NAME_PREFIX=yajsw"
set "wrapper_tmpdir=%TEMP%"
if exist "%SERVER_DIR%\..\Ghidra\" goto normal
@@ -137,31 +136,34 @@ if "%JAVA_HOME%" == "" (
rem reestablish JAVA path based upon final JAVA_HOME
set "java=%JAVA_HOME%\bin\java.exe"
set VMARGS=-Djava.io.tmpdir="%wrapper_tmpdir%"
set VMARGS=%VMARGS% -Djna_tmpdir="%wrapper_tmpdir%"
:: set DEBUG=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:18888
if "%OPTION%"=="console" (
start "%APP_LONG_NAME%" "%java%" %DEBUG% -jar "%WRAPPER_HOME%/wrapper.jar" -c "%WRAPPER_CONF%"
start "%APP_LONG_NAME%" "%java%" %VMARGS% %DEBUG% -jar "%WRAPPER_HOME%/wrapper.jar" -c "%WRAPPER_CONF%"
echo Use Ctrl-C in Ghidra Console to terminate...
) else if "%OPTION%"=="status" (
"%java%" -jar "%WRAPPER_HOME%/wrapper.jar" -q "%WRAPPER_CONF%"
"%java%" %VMARGS% -jar "%WRAPPER_HOME%/wrapper.jar" -q "%WRAPPER_CONF%"
) else if "%OPTION%"=="start" (
"%java%" %DEBUG% -jar "%WRAPPER_HOME%/wrapper.jar" -t "%WRAPPER_CONF%"
"%java%" %VMARGS% %DEBUG% -jar "%WRAPPER_HOME%/wrapper.jar" -t "%WRAPPER_CONF%"
) else if "%OPTION%"=="stop" (
"%java%" -jar "%WRAPPER_HOME%/wrapper.jar" -p "%WRAPPER_CONF%"
"%java%" %VMARGS% -jar "%WRAPPER_HOME%/wrapper.jar" -p "%WRAPPER_CONF%"
) else if "%OPTION%"=="restart" (
"%java%" -jar "%WRAPPER_HOME%/wrapper.jar" -p "%WRAPPER_CONF%"
"%java%" -jar "%WRAPPER_HOME%/wrapper.jar" -t "%WRAPPER_CONF%"
"%java%" %VMARGS% -jar "%WRAPPER_HOME%/wrapper.jar" -p "%WRAPPER_CONF%"
"%java%" %VMARGS% -jar "%WRAPPER_HOME%/wrapper.jar" -t "%WRAPPER_CONF%"
) else if "%OPTION%"=="install" (
"%java%" -jar "%WRAPPER_HOME%/wrapper.jar" -i "%WRAPPER_CONF%"
"%java%" -jar "%WRAPPER_HOME%/wrapper.jar" -t "%WRAPPER_CONF%"
"%java%" %VMARGS% -jar "%WRAPPER_HOME%/wrapper.jar" -i "%WRAPPER_CONF%"
"%java%" %VMARGS% -jar "%WRAPPER_HOME%/wrapper.jar" -t "%WRAPPER_CONF%"
) else if "%OPTION%"=="uninstall" (
"%java%" -jar "%WRAPPER_HOME%/wrapper.jar" -r "%WRAPPER_CONF%"
"%java%" %VMARGS% -jar "%WRAPPER_HOME%/wrapper.jar" -r "%WRAPPER_CONF%"
) else (
goto usage