diff --git a/Ghidra/Features/Base/src/main/java/ghidra/util/GhidraJarBuilder.java b/Ghidra/Features/Base/src/main/java/ghidra/util/GhidraJarBuilder.java index 7ded06d9a2..3805428083 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/util/GhidraJarBuilder.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/util/GhidraJarBuilder.java @@ -20,6 +20,7 @@ import java.nio.file.Path; import java.util.*; import java.util.jar.*; import java.util.regex.Pattern; +import java.util.stream.Collectors; import java.util.zip.*; import generic.jar.*; @@ -44,7 +45,6 @@ public class GhidraJarBuilder implements GhidraLaunchable { private static final String LIBS_FILE_MODULE_KEY = "Module: "; // this is set in the buildGhidraJar batch/script files - private static final String GHIDRA_DIR = "Ghidra.Install.Root.Dir"; private static final String INVOCATION_NAME_PROPERTY = "GhidraJarBuilder.Name"; private static HashMap> libsMap = new HashMap<>(); private List rootGhidraDirs = new ArrayList<>(); @@ -961,14 +961,10 @@ public class GhidraJarBuilder implements GhidraLaunchable { System.err.println("arg " + i + ": " + args[i]); } String invocationName = System.getProperty(INVOCATION_NAME_PROPERTY); - String property = System.getProperty(GHIDRA_DIR); StringBuffer buf = new StringBuffer(); buf.append("\nUsage: "); buf.append(invocationName != null ? invocationName : "GhidraJarBuilder "); - if (property == null) { - buf.append(" [ ...] "); - } buf.append( " [-output ] [-srczip ] [-bin ] [-main ]\n"); System.err.println(buf.toString()); @@ -992,18 +988,16 @@ public class GhidraJarBuilder implements GhidraLaunchable { usage(args); } - List ghidraDirs = new ArrayList<>(); + List ghidraDirs = layout.getApplicationRootDirs() + .stream() + .map(f -> f.getFile(false)) + .collect(Collectors.toCollection(ArrayList::new)); File outputFile = null; File srczip = null; File extraBinDir = null; String mainClassArg = null; boolean usingGradle = false; - String property = System.getProperty(GHIDRA_DIR); - if (property != null) { - ghidraDirs.add(new File(property)); - } - for (int i = 0; i < args.length; i++) { String arg = args[i]; if (arg.equals("-output")) { diff --git a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/ServerAdmin.java b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/ServerAdmin.java index f5f3580822..080cb3f25b 100644 --- a/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/ServerAdmin.java +++ b/Ghidra/Features/GhidraServer/src/main/java/ghidra/server/ServerAdmin.java @@ -52,7 +52,7 @@ public class ServerAdmin implements GhidraLaunchable { * The following properties may be set: *
 	 *   UserAdmin.invocation - identifies the name of the application used when displaying usage text.
-	 *   UserAdmin.serverDir - identifies the server directory instead of passing on command line.
+	 *   UserAdmin.config - identifies the config file instead of passing on command line.
 	 * 
* @param args command line arguments */ @@ -75,22 +75,19 @@ public class ServerAdmin implements GhidraLaunchable { * The following properties may be set: *
 	 *   UserAdmin.invocation - identifies the name of the application used when displaying usage text.
-	 *   UserAdmin.serverDir - identifies the server directory instead of passing on command line.
+	 *   UserAdmin.config - identifies the config file instead of passing on command line.
 	 * 
* @param args command line arguments */ public void execute(String[] args) { - File serverDir = null; int ix = 0; - if (args.length != 0 && !args[0].startsWith("-")) { - serverDir = new File(args[ix++]); - } - else { - serverDir = getServerDirFromConfig(); - } + String configFilePath = args.length != 0 && !args[0].startsWith("-") ? args[ix++] + : System.getProperty(CONFIG_FILE_PROPERTY); + + serverDir = getServerDirFromConfig(configFilePath); if (serverDir == null || (args.length - ix) == 0) { displayUsage(""); System.exit(-1); @@ -423,13 +420,12 @@ public class ServerAdmin implements GhidraLaunchable { } } - private File getServerDirFromConfig() { - String p = System.getProperty(CONFIG_FILE_PROPERTY); - if (p == null) { + private File getServerDirFromConfig(String configFilePath) { + if (configFilePath == null) { return null; } - propertyUsed = true; - File configFile = new File(p); + + File configFile = new File(configFilePath); if (!configFile.exists()) { System.out.println("Config file not found: " + configFile.getAbsolutePath()); @@ -455,7 +451,7 @@ public class ServerAdmin implements GhidraLaunchable { } } - p = config.getProperty(SERVER_DIR_CONFIG_PROPERTY); + String p = config.getProperty(SERVER_DIR_CONFIG_PROPERTY); if (p == null) { return null; } diff --git a/Ghidra/RuntimeScripts/Windows/server/ghidraSvr.bat b/Ghidra/RuntimeScripts/Windows/server/ghidraSvr.bat index 98a2bc2310..0d8d500cb7 100644 --- a/Ghidra/RuntimeScripts/Windows/server/ghidraSvr.bat +++ b/Ghidra/RuntimeScripts/Windows/server/ghidraSvr.bat @@ -11,7 +11,7 @@ rem runtime which has been configured into the system PATH ahead of other Java rem it may be necessary to explicitly specify the path to the installation by setting JAVA_HOME rem below: -rem set JAVA_HOME= +rem set "JAVA_HOME=" setlocal enabledelayedexpansion @@ -50,7 +50,7 @@ if "%IS_ADMIN%"=="NO" ( rem Find the script directory rem %~dsp0 is location of current script under NT -set _REALPATH=%~dp0 +set "_REALPATH=%~dp0" set APP_NAME=ghidraSvr set APP_LONG_NAME=Ghidra Server @@ -64,26 +64,26 @@ if exist "%_REALPATH%..\Ghidra\" goto normal rem NOTE: If adjusting JAVA command assignment - do not attempt to add parameters (e.g., -d64, -version:1.7, etc.) rem Development Environment -set GHIDRA_HOME=%_REALPATH%..\..\..\.. -set WRAPPER_CONF=%_REALPATH%..\..\Common\server\server.conf -set DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\build\data -set CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\build\dev-meta\classpath.frag -set LS_CPATH=%GHIDRA_HOME%\GhidraBuild\LaunchSupport\bin\main +set "GHIDRA_HOME=%_REALPATH%..\..\..\.." +set "WRAPPER_CONF=%_REALPATH%..\..\Common\server\server.conf" +set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\build\data" +set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\build\dev-meta\classpath.frag" +set "LS_CPATH=%GHIDRA_HOME%\GhidraBuild\LaunchSupport\bin\main" goto lab1 :normal -set GHIDRA_HOME=%_REALPATH%.. -set WRAPPER_CONF=%_REALPATH%server.conf -set DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\data -set CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\data\classpath.frag -set LS_CPATH=%GHIDRA_HOME%\support\LaunchSupport.jar +set "GHIDRA_HOME=%_REALPATH%.." +set "WRAPPER_CONF=%_REALPATH%server.conf" +set "DATA_DIR=%GHIDRA_HOME%\%MODULE_DIR%\data" +set "CLASSPATH_FRAG=%GHIDRA_HOME%\%MODULE_DIR%\data\classpath.frag" +set "LS_CPATH=%GHIDRA_HOME%\support\LaunchSupport.jar" :lab1 rem set WRAPPER_HOME to unpacked yajsw location (crazy FOR syntax to set variable from command output) for /F "usebackq delims=" %%p in (`dir "%DATA_DIR%" /ad /b ^| findstr "^%WRAPPER_NAME_PREFIX%"`) do set WRAPPER_DIRNAME=%%p -set WRAPPER_HOME=%DATA_DIR%\%WRAPPER_DIRNAME% +set "WRAPPER_HOME=%DATA_DIR%\%WRAPPER_DIRNAME%" if not exist "%WRAPPER_HOME%\" ( echo. @@ -104,8 +104,8 @@ set ERROR=ERROR: JAVA_HOME is not set and no 'java' command could be found in yo goto reportError :findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA=%JAVA_HOME%\bin\java.exe +set "JAVA_HOME=%JAVA_HOME:"=%" +set "JAVA=%JAVA_HOME%\bin\java.exe" if exist "%JAVA%" goto lab2 set ERROR=ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -122,15 +122,7 @@ if "%JAVA_HOME%" == "" ( ) rem reestablish JAVA path based upon final JAVA_HOME -set JAVA=%JAVA_HOME%\bin\java.exe - -set OS_NAME=win32 -"%JAVA%" -version 2>&1 | findstr /I " 64-Bit " >NUL -if errorlevel 0 ( - set OS_NAME=win64 -) - -set OS_DIR=%GHIDRA_HOME%\%MODULE_DIR%\os\%OS_NAME% +set "JAVA=%JAVA_HOME%\bin\java.exe" :: set DEBUG=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=*:18888 diff --git a/Ghidra/RuntimeScripts/Windows/server/svrAdmin.bat b/Ghidra/RuntimeScripts/Windows/server/svrAdmin.bat index ea7993ca45..c561b73062 100644 --- a/Ghidra/RuntimeScripts/Windows/server/svrAdmin.bat +++ b/Ghidra/RuntimeScripts/Windows/server/svrAdmin.bat @@ -31,18 +31,18 @@ set MAXMEM=128M :: '% ~' dereferences the value in param 0 :: 'd' - drive :: 'p' - path (without filename) -set SCRIPT_DIR=%~dp0 +set "SCRIPT_DIR=%~dp0" :: Production Environment -set CONFIG=%SCRIPT_DIR%.\server.conf +set "CONFIG=%SCRIPT_DIR%.\server.conf" if exist "%CONFIG%" goto continue :: Development Environment -set CONFIG=%SCRIPT_DIR%..\..\Common\server\server.conf +set "CONFIG=%SCRIPT_DIR%..\..\Common\server\server.conf" :continue -set VMARGS=-DUserAdmin.invocation="%0" -DUserAdmin.config="%CONFIG%" +set VMARGS=-DUserAdmin.invocation="%0" -call "%~dp0\..\support\launch.bat" fg svrAdmin "%MAXMEM%" "%VMARGS%" ghidra.server.ServerAdmin %* +call "%~dp0\..\support\launch.bat" fg svrAdmin "%MAXMEM%" "%VMARGS%" ghidra.server.ServerAdmin "%CONFIG%" %* diff --git a/Ghidra/RuntimeScripts/Windows/server/svrInstall.bat b/Ghidra/RuntimeScripts/Windows/server/svrInstall.bat index 1314f8a174..2df9605318 100644 --- a/Ghidra/RuntimeScripts/Windows/server/svrInstall.bat +++ b/Ghidra/RuntimeScripts/Windows/server/svrInstall.bat @@ -3,7 +3,7 @@ setlocal rem Find the script directory rem %~dsp0 is location of current script under NT -set _REALPATH=%~dp0 +set "_REALPATH=%~dp0" call "%_REALPATH%\ghidraSvr" install diff --git a/Ghidra/RuntimeScripts/Windows/server/svrUninstall.bat b/Ghidra/RuntimeScripts/Windows/server/svrUninstall.bat index 75e1905064..ac5131418b 100644 --- a/Ghidra/RuntimeScripts/Windows/server/svrUninstall.bat +++ b/Ghidra/RuntimeScripts/Windows/server/svrUninstall.bat @@ -3,7 +3,7 @@ setlocal rem Find the script directory rem %~dsp0 is location of current script under NT -set _REALPATH=%~dp0 +set "_REALPATH=%~dp0" call "%_REALPATH%\ghidraSvr" uninstall diff --git a/Ghidra/RuntimeScripts/Windows/support/analyzeHeadless.bat b/Ghidra/RuntimeScripts/Windows/support/analyzeHeadless.bat index aa4545b18b..e972b07cae 100644 --- a/Ghidra/RuntimeScripts/Windows/support/analyzeHeadless.bat +++ b/Ghidra/RuntimeScripts/Windows/support/analyzeHeadless.bat @@ -24,7 +24,7 @@ set VMARG_LIST=-XX:ParallelGCThreads=2 set VMARG_LIST=%VMARG_LIST% -XX:CICompilerCount=2 :: store current path -set filepath=%~dp0 +set "filepath=%~dp0" :: Loop through parameters (if there aren't any, just continue) and store :: in params variable. diff --git a/Ghidra/RuntimeScripts/Windows/support/buildGhidraJar.bat b/Ghidra/RuntimeScripts/Windows/support/buildGhidraJar.bat index 1e618fa944..d32db375c9 100644 --- a/Ghidra/RuntimeScripts/Windows/support/buildGhidraJar.bat +++ b/Ghidra/RuntimeScripts/Windows/support/buildGhidraJar.bat @@ -8,9 +8,9 @@ setlocal set LAUNCH_MODE=fg :: Sets SCRIPT_DIR to the directory that contains this file (ends with '\') -set SCRIPT_DIR=%~dp0 +set "SCRIPT_DIR=%~dp0" -set GHIDRA_ROOT_DIR=%SCRIPT_DIR%..\Ghidra +set "GHIDRA_ROOT_DIR=%SCRIPT_DIR%..\Ghidra" if exist "%GHIDRA_ROOT_DIR%" goto continue echo This script does not support development mode use diff --git a/Ghidra/RuntimeScripts/Windows/support/createPdbXmlFiles.bat b/Ghidra/RuntimeScripts/Windows/support/createPdbXmlFiles.bat index 44826dd39e..10a7c7d8f0 100644 --- a/Ghidra/RuntimeScripts/Windows/support/createPdbXmlFiles.bat +++ b/Ghidra/RuntimeScripts/Windows/support/createPdbXmlFiles.bat @@ -11,16 +11,16 @@ setlocal REM Get parent of current folder -set SCRIPT_DIR=%~dp0 +set "SCRIPT_DIR=%~dp0" -set GHIDRA_DIR=%SCRIPT_DIR%..\Ghidra +set "GHIDRA_DIR=%SCRIPT_DIR%..\Ghidra" set OS_DIR=os REM Production Environment if exist "%GHIDRA_DIR%" goto continue REM Development Environment -set GHIDRA_DIR=%SCRIPT_DIR%..\..\.. +set "GHIDRA_DIR=%SCRIPT_DIR%..\..\.." set OS_DIR=build\os :continue @@ -35,7 +35,7 @@ if exist "%PROGRAMFILES(X86)%" ( set OS_TYPE=win32 ) -set PDB_EXE=%GHIDRA_DIR%\Features\PDB\%OS_DIR%\%OS_TYPE%\pdb.exe +set "PDB_EXE=%GHIDRA_DIR%\Features\PDB\%OS_DIR%\%OS_TYPE%\pdb.exe" if not exist "%PDB_EXE%" ( echo "%PDB_EXE% not found" diff --git a/Ghidra/RuntimeScripts/Windows/support/pythonRun.bat b/Ghidra/RuntimeScripts/Windows/support/pythonRun.bat index bc934c12a1..650e9f172b 100644 --- a/Ghidra/RuntimeScripts/Windows/support/pythonRun.bat +++ b/Ghidra/RuntimeScripts/Windows/support/pythonRun.bat @@ -26,6 +26,6 @@ set VMARG_LIST=-XX:ParallelGCThreads=2 set VMARG_LIST=%VMARG_LIST% -XX:CICompilerCount=2 :: store current path -set filepath=%~dp0 +set "filepath=%~dp0" call "%filepath%launch.bat" %LAUNCH_MODE% Ghidra-Python "%MAXMEM%" "%VMARG_LIST%" ghidra.python.PythonRun %params%