Class RouterConsoleRunner

java.lang.Object
net.i2p.router.web.RouterConsoleRunner
All Implemented Interfaces:
ClientApp, RouterApp

public class RouterConsoleRunner
extends Object
implements RouterApp
Start the router console.
  • Field Details

  • Constructor Details

    • RouterConsoleRunner

      public RouterConsoleRunner​(RouterContext ctx, ClientAppManager mgr, String[] args)
        non-SSL:
        RouterConsoleRunner
        RouterConsoleRunner 7657
        RouterConsoleRunner 7657 127.0.0.1
        RouterConsoleRunner 7657 127.0.0.1,::1
        RouterConsoleRunner 7657 127.0.0.1,::1 ./webapps/
      
        SSL:
        RouterConsoleRunner -s 7657
        RouterConsoleRunner -s 7657 127.0.0.1
        RouterConsoleRunner -s 7657 127.0.0.1,::1
        RouterConsoleRunner -s 7657 127.0.0.1,::1 ./webapps/
      
        If using both, non-SSL must be first:
        RouterConsoleRunner 7657 127.0.0.1 -s 7667
        RouterConsoleRunner 7657 127.0.0.1 -s 7667 127.0.0.1
        RouterConsoleRunner 7657 127.0.0.1,::1 -s 7667 127.0.0.1,::1
        RouterConsoleRunner 7657 127.0.0.1,::1 -s 7667 127.0.0.1,::1 ./webapps/
        
      Parameters:
      args - second arg may be a comma-separated list of bind addresses, for example ::1,127.0.0.1 On XP, the other order (127.0.0.1,::1) fails the IPV6 bind, because 127.0.0.1 will bind ::1 also. But even though it's bound to both, we can't connect to [::1]:7657 for some reason. So the wise choice is ::1,127.0.0.1
  • Method Details

    • main

      public static void main​(String[] args)
    • startup

      public void startup()
      Description copied from interface: ClientApp
      Do not take a long time. Do not block. Start threads here if necessary. Client must call ClientAppManager.notify() at least once within this method to change the state from INITIALIZED to something else. Will not be called multiple times on the same object.
      Specified by:
      startup in interface ClientApp
      Since:
      0.9.4
    • shutdown

      public void shutdown​(String[] args)
      Description copied from interface: ClientApp
      Do not take a long time. Do not block. Use a thread if necessary. If previously running, client must call ClientAppManager.notify() at least once within this method to change the state to STOPPING or STOPPED. May be called multiple times on the same object, in any state.
      Specified by:
      shutdown in interface ClientApp
      Parameters:
      args - generally null but could be stopArgs from clients.config
      Since:
      0.9.4
    • getState

      public ClientAppState getState()
      Description copied from interface: ClientApp
      The current state of the ClientApp.
      Specified by:
      getState in interface ClientApp
      Returns:
      non-null
      Since:
      0.9.4
    • getName

      public String getName()
      Description copied from interface: ClientApp
      The generic name of the ClientApp, used for registration, e.g. "console". Do not translate.
      Specified by:
      getName in interface ClientApp
      Returns:
      non-null
      Since:
      0.9.4
    • getDisplayName

      public String getDisplayName()
      Description copied from interface: ClientApp
      The display name of the ClientApp, used in user interfaces. The app must translate.
      Specified by:
      getDisplayName in interface ClientApp
      Returns:
      non-null
      Since:
      0.9.4
    • getConsoleServer

      Server getConsoleServer()
      To get to Jetty
      Returns:
      may be null or stopped perhaps
      Since:
      Jetty 6 since it doesn't have Server.getServers()
    • getConsoleServer

      static Server getConsoleServer​(I2PAppContext ctx)
      To get to Jetty. Warning, this will NOT work during shutdown, because changeState(STOPPING) will unregister us first.
      Returns:
      may be null or stopped perhaps
      Since:
      0.9.38
    • jettyVersion

      public static String jettyVersion()
      Since:
      0.8.13, moved from LogsHelper in 0.9.33
    • startConsole

      public void startConsole()
      http://irc.codehaus.org/display/JETTY/Porting+to+jetty6
              Server
                      HandlerCollection
                              HostCheckHandler (extends GzipHandler)
                                      ContextHandlerCollection
                                              LocaleWebAppHandler (routerconsole)
                                                      SessionHandler
                                                      SecurityHandler
                                                      ServletHandler
                                                              servlets...
                                              WebAppContext (i2psnark)
                                              WebAppContext (i2ptunnel)
                                              WebAppContext (imagegen)
                                              WebAppContext (susidns)
                                              WebAppContext (susimail)
                                              WebAppContext (for each plugin with a .war)
                              DefaultHandler
                              RequestLogHandler (opt)
      
      Porting to Jetty 9: http://dev.eclipse.org/mhonarc/lists/jetty-dev/msg01952.html You are missing a few facts about Jetty 9.1 ... First, there are no longer any blocking connectors. Its all async / nio connectors now. (mainly because that's the direction that the servlet api 3.1 is taking) Next, there is only 1 connector. The ServerConnector. However, it takes 1 or more ConnectionFactory implementations to know how to handle the incoming connection. We have factories for HTTP (0.9 thru 1.1), SPDY, SSL-http, and SSL-npn so far. This list of factories will expand as the future of connectivity to web servers is ever growing (think HTTP/2) Use the embedded examples for help understanding this. http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyConnectors.java?id=jetty-9.1.0.RC0
    • initialize

      static void initialize​(RouterContext ctx, WebAppContext context)
      Set up basic security constraints for the webapp. Add all users and passwords.
    • webAppProperties

      public static Properties webAppProperties​(I2PAppContext ctx)
      Since:
      0.9.4
    • webAppProperties

      public static Properties webAppProperties​(String dir)
    • storeWebAppProperties

      public static void storeWebAppProperties​(RouterContext ctx, Properties props)