mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-05-23 02:10:47 +08:00
GP-3053: Control over tmp dir location in GhidraServer
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user