Package net.i2p.router.startup
Class ClientAppConfig
java.lang.Object
net.i2p.router.startup.ClientAppConfig
Contains a really simple ClientApp "structure" and some static methods
so they can be used both by LoadClientAppsJob and by the configuration
page in the router console.
clients.config format: Lines are of the form clientApp.x.prop=val, where x is the app number. App numbers MUST start with 0 and be consecutive. Properties are as follows: main: Full class name. Required. The main() method in this class will be run. name: Name to be displayed on console. args: Arguments to the main class, separated by spaces or tabs. Arguments containing spaces or tabs may be quoted with ' or " delay: Seconds before starting, default 120 onBoot: {true|false}, default false, forces a delay of 0, overrides delay setting startOnLoad: {true|false} Is the client to be run at all? Default true The following additional properties are used only by plugins: stopargs: Arguments to stop the client. uninstallargs: Arguments to stop the client. classpath: Additional classpath elements for the client, separated by commas. The following substitutions are made in the args, stopargs, uninstallargs, and classpath lines, for plugins only: $I2P: The base I2P install directory $CONFIG: The user's configuration directory (e.g. ~/.i2p) $PLUGIN: This plugin's directory (e.g. ~/.i2p/plugins/foo) All properties except "main" are optional. Lines starting with "#" are comments. If the delay is less than zero, the client is run immediately, in the same thread, so that exceptions may be propagated to the console. In this case, the client should either throw an exception, return quickly, or spawn its own thread. If the delay is greater than or equal to zero, it will be run in a new thread, and exceptions will be logged but not propagated to the console.
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic File
configDir
(I2PAppContext ctx) static File
configFile
(I2PAppContext ctx) static boolean
This works for both split and non-split config.boolean
Matches on class, args, and name onlystatic List<ClientAppConfig>
getClientApps
(File cfgFile) static List<ClientAppConfig>
int
hashCode()
static boolean
static void
writeClientAppConfig
(I2PAppContext ctx, List<ClientAppConfig> apps) Classpath and stopargs not supported.static void
writeClientAppConfig
(I2PAppContext ctx, ClientAppConfig app) Classpath and stopargs not supported.
-
Field Details
-
className
-
clientName
-
args
-
disabled
public boolean disabled -
delay
public final long delay -
classpath
- Since:
- 0.7.12
-
stopargs
- Since:
- 0.7.12
-
uninstallargs
- Since:
- 0.7.12
-
configFile
File configFile- Since:
- 0.9.42
-
-
Constructor Details
-
Method Details
-
isSplitConfig
-
configFile
-
configDir
-
getClientApps
-
getClientApps
- Throws:
IOException
-
writeClientAppConfig
Classpath and stopargs not supported. All other apps in the file will be deleted. Do not use if multiple apps in a single file - use writeClientAppConfig(ctx, apps). If app.configFile is null, a new file will be created and assigned.- Throws:
IOException
- Since:
- 0.9.42
-
writeClientAppConfig
public static void writeClientAppConfig(I2PAppContext ctx, List<ClientAppConfig> apps) throws IOException Classpath and stopargs not supported. All other apps in the files will be deleted. Do not add apps with this method - use writeClientAppConfig(ctx, app). Do not delete apps with this method - use deleteClientAppConfig().- Throws:
IOException
- Since:
- 0.9.42 split out from above
-
deleteClientAppConfig
This works for both split and non-split config. If this is the only config in the file, the file will be deleted; otherwise the file will be saved with the remaining configs.- Returns:
- success
- Throws:
IllegalArgumentException
- if cac has a null configfileIOException
- Since:
- 0.9.42
-
hashCode
public int hashCode() -
equals
Matches on class, args, and name only
-