Commit Graph

68 Commits

Author SHA1 Message Date
str4d 89dcceefee Core: type arguments, unused imports 2013-11-20 04:02:28 +00:00
zzz 6e19854e4c - NPE fix on signed udpates
- More work on snark updater
- Clean up imports
2012-10-21 13:34:23 +00:00
zzz 0b4401e64b - Lots of fixes for notifying when updates and checks are complete
- Fixes for NewsHelper stored timestamps
- Add getProperty(String, long) to context for sanity
- New methods and types
- Logging improvements
- Add failsafe TaskCleaner
2012-10-18 14:28:14 +00:00
zzz 4db4010abf propagate from branch 'i2p.i2p' (head 2da3b585b42d058e25909bc303d72277ae2463b5)
to branch 'i2p.i2p.zzz.update' (head ebbad994215dc2822e9a1776399864ed77a0e5a0)
2012-10-14 22:42:00 +00:00
zzz 3ceb83d40e * I2PAppContext: Improved synching in constructor 2012-10-07 20:48:25 +00:00
zzz e3133d88d7 javadoc 2012-09-28 18:42:17 +00:00
zzz 211782fae4 * Context: Make files final 2012-09-25 19:19:27 +00:00
zzz 20279d1597 propagate from branch 'i2p.i2p' (head 52d5a19210a344e0de43f6fe4d898d34f6c41829)
to branch 'i2p.i2p.zzz.update' (head d88c6abf9b4988ba892e435594cd74917ab9ab7f)
2012-09-25 15:04:49 +00:00
zzz 489f43529c booleanValue() -> parseBoolean() 2012-09-07 20:13:49 +00:00
zzz 6bfd916fef SimpleTimer (ticket #653):
- Move all remaining uses to SimpleTimer2
    - Deprecate
2012-09-01 13:14:15 +00:00
zzz 1ab8200c7f * Clone System properties before iterating to avoid
ConcurrentModificationException (ticket #680)
2012-08-06 14:45:37 +00:00
zzz e62b76d2cc Big refactor of the router console update subsystem, in preparation for
implementing out-of-console updaters like i2psnark.

- Add new update interfaces in net.i2p.update
- All update implementations moved to routerconsole update/
- Implement an UpdateManager that registers with the RouterContext
- UpdateManager handles multiple types of things to update
  (router, plugins, news, ...) and methods of updating (HTTP, ...)
- UpdateManager maintains list of installed, downloaded, and available versions of everything
- Define Updaters that can check for a new version and/or download an item
- Individual Updaters register with the UpdateManager obtained from
  I2PAppContext, identifying the type of update item and
  update method they can handle.
- Updaters need only core libs, no router.jar or routerconsole access required.
- All checks and updates are initiated via the UpdateManager.
- All status on checks and updates in-progress or completed are
  obtained from the UpdateManager. No more use of System properties
  to broadcast update state.
- All update and checker tasks are intantiated on demand and threaded;
  no more static references left over.
- Split out the Runners and Checkers from the Handlers and make the inheritance more sane.
- No more permanent NewsFetcher thread; run on the SimpleScheduler queue
  and thread a checker task only to fetch the news.
- No more static NewsFetcher instance in routerconsole.
  All helper methods that are still required are moved to NewsHelper.

The UpdateManager implements the policy for when to check and download.
All requests go through the UpdateManager.

For each update type, there's several parts:
    - The xxxUpdateHandler implements the Updater
    - The xxxUpdateChecker implements the UpdateTask for checking
    - The xxxUpdateRunner implements the UpdateTask for downloading

New and moved classes:

web/				update/
----				-------
new				ConsoleUpdateManager.java

new				PluginUpdateChecker.java from PluginUpdateChecker
PluginUpdateChecker 		-> PluginUpdateHandler.java
PluginUpdateHandler.java	-> PluginUpdateRunner

new				UnsignedUpdateHandler.java
UnsignedUpdateHandler		->  UnsignedUpdateRunner.java
new				UnsignedUpdateChecker from NewsFetcher

UpdateHandler.java remains
new				UpdateHandler.java
new				UpdateRunner.java from UpdateHandler

move				NewsHandler from NewsFetcher
new				NewsFetcher
new				NewsTimerTask

new				DummyHandler


Initial checkin. Unfinished, untested, unpolished.
2012-06-18 22:09:45 +00:00
zzz bafef846d9 * SimpleScheduler, SimpleTimer, SimpleTimer2: Replace static instances
with I2PAppContext-rooted references
2012-03-22 19:53:05 +00:00
zzz ec460794eb * PortMapper: New service for registering application ports in the context 2011-12-11 13:27:52 +00:00
zzz 579af7e3ad build fix 2011-11-16 13:29:26 +00:00
zzz ff499844a2 * Router: Move router.ping file from temp directory to config directory 2011-11-16 00:56:45 +00:00
zzz fd1c8c45a8 cleanup 2011-09-24 21:44:51 +00:00
zzz 3a1cd51bc7 split up big lock to avoid deadlocks 2011-07-28 18:22:31 +00:00
zzz dd4906258d javadoc 2011-07-08 13:47:49 +00:00
zzz 43044586d1 * AppContext: Add hasWrapper() method
* Shutdown:
    - Clear more resources in peer manager, netdb, stat manager,
      session key manager, naming service, tunnel dispatcher,
      OCMOSJ (result of testing with jvisualvm)
    - Don't call wrapper on shutdown (starting two threads) if we
      were started with runplain
2011-07-03 13:46:29 +00:00
zzz 9ad8f35bca * Shutdown:
- Kill the global app context
    - Recognize multi-router case
    - Fix RandomIterator, YKGenerator, DHBuilder, NTCPConnection
      hanging on to old context -
      probably other offenders not yet found
    - Fix DHBuilder thread not stopping
2011-06-17 18:37:02 +00:00
zzz 3c88c854bf more cleanup at shutdown 2011-06-14 19:27:46 +00:00
zzz 94af6550fa HMAC256 is used by Syndie 2011-06-02 13:30:33 +00:00
zzz 54fdfd823b - Drop deprecated NamingServices
- Add caching and b32 support to DummyNamingService
    - BlockfileNamingService Cleanups
2011-02-08 03:29:18 +00:00
zzz 97f93c64e6 Fix context properties initialization; history for test4 prop, -1 2011-01-31 15:44:00 +00:00
zzz e721ddd3a4 propagate from branch 'i2p.i2p.zzz.test4' (head 592b7d2b980e8cba19167fa064f25251296ed8bb)
to branch 'i2p.i2p' (head 0ba672eaca7076092389d2277dba231fdd34423b)
2011-01-31 13:42:36 +00:00
zzz 8da1e90226 * RouterContext: Clean up clock overrides
* PeerManager: Make calculators static, take out of router context
2011-01-19 16:40:48 +00:00
mathiasdm b963e2a855 propagate from branch 'i2p.i2p' (head 1b82a3bfd792b71321bcbd8f3b8344664db2dc45)
to branch 'i2p.i2p.mathiasdm.desktopgui' (head 4e485a19a83a3e30425e1b1a03836f35fa4ebb50)
2011-01-10 06:41:39 +00:00
mathiasdm 7710b22cfd Moved I2PProperties callback to the RouterContext. 2011-01-07 17:09:27 +00:00
zzz 087c7b86de findbugs core,client,crypto,data,stat,i2np 2011-01-07 00:15:35 +00:00
mathiasdm 2a6c763c31 Added support for callbacks when changes in I2PAppContext properties occur. 2011-01-03 18:37:29 +00:00
zzz 1a3b0d3812 * I2PAppContext: New getProperties() method
* i2ptunnel:
      - Use context properties as defaults
2011-01-03 14:26:22 +00:00
zzz f194f78953 use base 64 for temp dir name 2010-12-12 22:09:04 +00:00
zzz 19c6760ea7 * I2CP: Change from the internal pseudo-socket that was
implemented in 0.7.9 to an internal Queue that directly
      passes I2CPMessage objects. For in-JVM clients,
      this eliminates two writer threads per client and
      avoids the serialization/deserialization of I2CP messages.
2010-12-01 18:57:05 +00:00
zzz e940f51599 * SecureFile: New class, catch places that were missed,
add i2p.insecureFiles option to disable (default false)
2010-11-19 00:40:33 +00:00
zzz 2d601099f3 propagate from branch 'i2p.i2p.zzz.test' (head 128a31611abc6a88e58133f3bf6a577fe6dd5b1c)
to branch 'i2p.i2p.zzz.test4' (head fa9a871892517271eb2531b433fe80a2a713be9c)
2010-10-05 13:06:16 +00:00
zzz 2244142bd8 javadoc, comment out some main()s 2010-08-14 18:22:46 +00:00
zzz 4323036992 javadocs 2010-08-10 16:17:09 +00:00
zzz a1524241cb Set permissions on directories and files when they are created 2010-07-06 15:22:48 +00:00
zzz 9eab44128a * Random: Remove and deprecate some old classses 2010-03-08 00:48:56 +00:00
zzz ca9f174171 * Context: Add boolean getProperty methods 2010-03-02 22:52:26 +00:00
zzz 08e54c515e add isRouterContext() method 2009-12-19 16:37:44 +00:00
zzz c10ea84ade * NamingServices
- Move default reverseLookup to base class
      - Deprecate unused services
2009-11-28 14:37:07 +00:00
zzz 62a3da2fa6 javadoc updates for SKM changes 2009-08-30 16:04:28 +00:00
zzz bdd75793bc cleanup 2009-06-15 15:35:25 +00:00
zzz e8773f6a98 fix NPE for non-router invocations 2009-06-14 02:35:41 +00:00
zzz a16bcf8e51 pid dir defaults to system temp dir 2009-06-13 14:16:12 +00:00
zzz 524a25eb2c 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 files to it for new installs.
The directory will be $HOME/.i2p on linux and %APPDIR%\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.

The migration will copy all files from an existing installation,
except i2psnark/, with the system property -Di2p.dir.migrate=true.
Otherwise it will just set up a new directory with a minimal configuration.

The migration will also create a modified wrapper.config and (on linux only)
a modified i2prouter script, and place them in the config directory.

There are no changes to the installer or the default i2prouter, i2prouter.bat,
i2prouter, wrapper.config, runplain.sh, windows service installer/uninstaller,
etc. in this checkin.


    *  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
    *  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()	wrapper.log*, logs/
    *  PID	i2p.dir.pid	getPIDDir()	wrapper *.pid files, router.ping
    *  App	i2p.dir.app	getAppDir()	eepsite/, ...
    *
    *  Note that we 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 will be the current working directory.

Lightly tested so far, needs much more testing.
2009-06-04 19:14:40 +00:00
zzz e65c2e279b * Session Keys:
- Don't instantiate unused SessionKeyPersistenceHelper
      - Use TransientSessionKeyManager instead of PersistentSessionKeyManager
      - Add generics to TransientSessionKeyManager to help understand it
      - Change initial session map size to 64 (was 1024)
      - Prepare for per-destination SessionKeyManagers in ElGamalAESEngine
2009-05-29 10:00:06 +00:00
zzz 84bd8274ad * Router: Move addShutdownTask from Router to I2PAppContext
so that apps can register more easily
2009-02-25 00:05:30 +00:00