diff --git a/build.xml b/build.xml
index ddc27baad8..162064b05d 100644
--- a/build.xml
+++ b/build.xml
@@ -305,7 +305,7 @@
-
+
diff --git a/history.txt b/history.txt
index 4e0957f47e..51e030805c 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,126 @@
+2009-06-29 zzz
+ * Big directory rework:
+ Eliminate all uses of the current working directory, and
+ set up multiple directories specified by absolute paths for various uses.
+
+ Add a WorkingDir class to create a user config directory and
+ migrate certain files to it for new installs.
+ The directory will be $HOME/.i2p on linux and %APPDATA%\I2P on Windows,
+ or as specified in the system property -Di2p.dir.config=/path/to/i2pdir
+ All files except for the base install and temp files will be
+ in the config directory by default.
+ Temp files will be in a i2p-xxxxx subdirectory of the system temp directory
+ specified by the system property java.io.tmpdir.
+
+ Convert all file opens in the code to be relative to a specific directory,
+ as specified in the context. Code and applications should never open
+ files relative to the current working directory (e.g. new File("foo")).
+ All files should be accessed in the appropriate context directory,
+ e.g. new File(_context.getAppDir(), "foo").
+
+ The router.config file location may be specified as a system property on the
+ java command line with -Drouter.configLocation=/path/to/router.config
+ All directories may be specified as properties in the router.config file.
+
+ There will be no migration from an existing installation
+ unless the system property -Di2p.dir.migrate=true is set.
+ If there is no migration, it will continue to use $I2P for all files,
+ except for temporary and PID files.
+
+ The following linux scripts are now customized with the install path at,
+ installation, and may be moved to /usr/local/bin and run from any
+ working directory:
+ eepget, i2prouter, runplain.sh
+
+ For new installs, the i2p base directory ($I2P) may be read-only
+ if updates are disabled. The only time i2p should write to the base directory
+ is to unzip the update file. Updates are downloaded to the config dir. If, upon
+ restart, the base dir is not writable, it will log a message and continue.
+
+ Additional information, copied from I2PAppContext:
+
+ * Directories. These are all set at instantiation and will not be changed by
+ * subsequent property changes.
+ * All properties, if set, should be absolute paths.
+ *
+ * Name Property Method Files
+ * ----- -------- ----- -----
+ * Base i2p.dir.base getBaseDir() lib/, webapps/, docs/, geoip/, licenses/, ...
+ * Temp i2p.dir.temp getTempDir() Temporary files
+ * PID i2p.dir.pid getPIDDir() router.ping
+ * Config i2p.dir.config getConfigDir() *.config, hosts.txt, addressbook/, ...
+ *
+ * (the following all default to the same as Config)
+ *
+ * Router i2p.dir.router getRouterDir() netDb/, peerProfiles/, router.*, keyBackup/, ...
+ * Log i2p.dir.log getLogDir() logs/
+ * App i2p.dir.app getAppDir() eepsite/, ...
+ *
+ * Note that the router can't control where the wrapper actually puts its files.
+
+ All these will be set appropriately in a Router Context.
+ In an I2P App Context, all except Temp and PID will be the current working directory.
+
+ Related changes:
+ i2prouter:
+ - Don't cd to script location, no longer required
+ jbigi, cpuid:
+ - Extract files from jar to temp dir, load from that dir, then
+ copy to the base dir if we have permissions (and failing silently
+ if we don't), so we have optimized libs and no complaints
+ when we have a read-only base dir.
+ logs.jsp:
+ - Get wrapper log location from a property too
+ - Display log file locations
+ RouterLaunch:
+ - If no wrapper, put wrapper.log in system temp dir
+ unless specified with -Dwrapper.logfile=/path/to/wrapper.log
+ or it already exists in CWD (for backward compatibility)
+ - Append rather than replace wrapper.log
+ - Pass wrapper log location to router as a property, so that logs.jsp can find it
+ runplain.sh:
+ - Add path substitution to runplain.sh on install
+ - Pass I2P base dir to the router as a property
+ Systray:
+ - Fix NPE if no config file
+ wrapper.config:
+ - Put wrapper.log in system temp dir for new installs
+ - Pass I2P base dir to the router as a property
+
+2009-06-29 zzz
+ * HTTP Proxy:
+ - Add simple web server for "proxy.i2p" to serve
+ images and CSS for the error pages
+ - Take CSS out of the error pages; use internal server
+ for CSS, image, and favicon
+ * i2psnark build:
+ - Move FetchAndAdd to static inner class
+ - Fix standalone build to include i2psnark.jar since classes
+ aren't in the .war anymore
+ - Have standalone jetty use I2PAppContext temp directory
+ - Replace launch-i2psnark.jar with launch-i2psnark script,
+ since RunStandalone is in i2p.jar
+ - Clean up jetty-i2psnark.xml, turn off jetty logging
+ - Remove standalone build from the pkg target in the main build.xml
+ * Jbigi, CPUID:
+ - Reduce memory demand on startup from 4MB to 4KB each
+ * NetDb: Fix an NPE on early shutdown
+ * Reseeding / NetDb:
+ - Move reseeding from the routerconsole app to
+ the router, so that we can bootstrap an embedded router lacking a routerconsole
+ (iMule or android for example), without additional modifications.
+ This allows better integration between the reseeding function
+ and the netDb.
+ - Call reseed from PersistentDataStore, not from the
+ routerconsole init, and start seeding as soon as the netdb has read
+ the netDb/ directory, not when the console starts.
+ - Wake up the netdb reader as soon as reseeding is done,
+ rather than waiting up to 60s.
+ - Don't display the reseed button on the console until the
+ netdb initialization is done.
+ * RouterConsoleRunner:
+ - Catch a class not found error better
+
2009-06-29 zzz
* Console: Convert table headers to to prep for CSS changes
* Console CSS: Move css file, make a classic theme to prep for CSS changes
|