Opened 4 years ago

Closed 4 years ago

#2038 closed enhancement (no response)

Pluggable Reseeding Logic

Reported by: ocean1 Owned by:
Priority: minor Milestone: undecided
Component: router/netdb Version: 0.9.31
Keywords: Cc:
Parent Tickets: Sensitive: no



We need to be able to provide a custom implementation of the reseeding logic that a router uses when it first starts up. This goes beyond simply customizing the reseed urls (which can be done using a System property) to implementing a custom reseeding flow based on PKI. (The user has a Cert and the Cert is used to determine where she gets her reseeds.)


  • ReseedChecker? should be an interface.
  • The NetworkDatabaseFacade? interface should expose a 'setReseeder(Reseeder)'.
  • I2P should provide some sort of pluggable service framework so that the I2PAppContext can instantiate a configurable implementation of the Reseeder interface and pass it to the NetworkDatabaseFacade?.


Change History (2)

comment:1 Changed 4 years ago by zzz

Component: router/generalrouter/netdb
Priority: majorminor
Status: newinfoneeded_new
Type: taskenhancement

As I stated on IRC, this is unlikely to happen. We have lots of configuration options already, that you can set up via your installer:

  • A setting to disable reseeding completely
  • A way to bundle RIs in the installer, to avoid reseeding at all
  • A setting for the list of reseed URLs
  • A directory for the su3 certificates, to be placed there by the installer

all of these config options are there to enable customization by users or by embedded applications.

On IRC it seemed that this was driven by the lack of an installer for your embedded application, so you had no way to include certificates. If so, that seems to be the issue. Put the certs where they're supposed to be.

If you do want a custom reseed implementation for some reason, just rewrite ReseedChecker?, or subclass it, there's no reason for us to "provide some sort of pluggable service framework".

If you have some specific reseed architecture in mind (other than just changing URLs and certificates) that would require some 'framework' please provide details.

comment:2 Changed 4 years ago by zzz

Resolution: no response
Status: infoneeded_newclosed

no response.

Proxies added for 0.9.33 (#423 and #1130) and orchid could be done easily (#1841).
We didn't need or want a 'pluggable' infrastructure for those because we are still using HTTPS, just fetching through a proxy.

If we wanted some non-HTTPS way to get reseeds (say via bittorrent, as we do with router updates) then a pluggable (registration) system would be necessary.

But reseed is mostly for just-after-installation, so as I said above, this is mostly an installer problem. Even if we did have an interface, you'd need code to run very early after startup to get your reseed code registered quick before the reseed started. The timing would be messy.

Closing wontfix. If you have a rebuttal and can make a case, feel free to reopen.

Note: See TracTickets for help on using tickets.