Changeset 948bbae for apps/jetty


Ignore:
Timestamp:
Mar 14, 2018 3:25:05 PM (2 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
b9d5cdf
Parents:
6eb09bd
Message:

Jetty: Register HTTPS eepsite with port mapper (ticket #2159)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/jetty/java/src/net/i2p/jetty/JettyStart.java

    r6eb09bd r948bbae  
    3535import net.i2p.util.PortMapper;
    3636
     37import org.eclipse.jetty.server.AbstractNetworkConnector;
    3738import org.eclipse.jetty.server.Connector;
    38 import org.eclipse.jetty.server.NetworkConnector;
    3939import org.eclipse.jetty.server.Server;
    4040import org.eclipse.jetty.util.component.LifeCycle;
     
    5959    private final I2PAppContext _context;
    6060    private volatile ClientAppState _state;
    61     private volatile int _port;
     61    private volatile int _port, _sslPort;
    6262
    6363    /**
     
    137137                    try {
    138138                        lc.start();
    139                         if (_context != null && _context.portMapper().getPort(PortMapper.SVC_EEPSITE) <= 0) {
     139                        if (_context != null) {
     140                            PortMapper pm = _context.portMapper();
    140141                            if (lc instanceof Server) {
    141142                                Server server = (Server) lc;
    142143                                Connector[] connectors = server.getConnectors();
    143                                 if (connectors.length > 0) {
    144                                     Connector conn = connectors[0];
    145                                     if (conn instanceof NetworkConnector) {
    146                                         NetworkConnector nconn = (NetworkConnector) conn;
     144                                for (int i = 0; i < connectors.length; i++) {
     145                                    Connector conn = connectors[i];
     146                                    if (conn instanceof AbstractNetworkConnector) {
     147                                        AbstractNetworkConnector nconn = (AbstractNetworkConnector) conn;
    147148                                        int port = nconn.getPort();
    148149                                        if (port > 0) {
    149                                             _port = port;
    150150                                            String host = nconn.getHost();
    151                                             if (host.equals("0.0.0.0") || host.equals("::"))
     151                                            if (host.equals("0.0.0.0"))
    152152                                                host = "127.0.0.1";
    153                                             _context.portMapper().register(PortMapper.SVC_EEPSITE, host, port);
     153                                            else if (host.equals("::"))
     154                                                host = "::1";
     155                                            // see ConnectionFactory javadoc, but from testing, it ends with /1.1
     156                                            boolean isSSL = nconn.getConnectionFactory("SSL-http/1.1") != null;
     157                                            String svc;
     158                                            if (isSSL) {
     159                                                _sslPort = port;
     160                                                svc = PortMapper.SVC_HTTPS_EEPSITE;
     161                                            } else {
     162                                                _port = port;
     163                                                svc = PortMapper.SVC_EEPSITE;
     164                                            }
     165                                            if (pm.getPort(svc) <= 0)
     166                                                pm.register(svc, host, port);
    154167                                        }
    155168                                    }
     
    195208                }
    196209            }
    197             if (_context != null && _port > 0 && _context.portMapper().getPort(PortMapper.SVC_EEPSITE) == _port) {
    198                 _port = 0;
    199                 _context.portMapper().unregister(PortMapper.SVC_EEPSITE);
     210            if (_context != null) {
     211                PortMapper pm = _context.portMapper();
     212                if (_port > 0 && pm.getPort(PortMapper.SVC_EEPSITE) == _port) {
     213                    _port = 0;
     214                    pm.unregister(PortMapper.SVC_EEPSITE);
     215                }
     216                if (_sslPort > 0 && pm.getPort(PortMapper.SVC_HTTPS_EEPSITE) == _sslPort) {
     217                    _sslPort = 0;
     218                    pm.unregister(PortMapper.SVC_HTTPS_EEPSITE);
     219                }
    200220            }
    201221            changeState(STOPPED);
Note: See TracChangeset for help on using the changeset viewer.