Exemplo n.º 1
0
  /**
   * We need to make sure to set the server port before anything is injected -- otherwise we run the
   * risk of running on a completely different port than what is passed on the command line!
   *
   * @param cmd The command line.
   * @param read The model
   */
  private void processCommandLine(final CommandLine cmd, final Model model) {

    if (cmd == null) {
      // Can be true for testing.
      log.error("No command line?");
      return;
    }
    final Settings set = model.getSettings();
    if (cmd.hasOption(Cli.OPTION_SERVER_PORT)) {
      final String serverPortStr = cmd.getOptionValue(Cli.OPTION_SERVER_PORT);
      log.debug("Using command-line proxy port: " + serverPortStr);
      final int serverPort = Integer.parseInt(serverPortStr);
      set.setServerPort(serverPort);
    } else {
      final int existing = set.getServerPort();
      if (existing < 1024) {
        log.debug("Using random give mode proxy port...");
        set.setServerPort(LanternUtils.randomPort());
      }
    }
    log.info("Running give mode proxy on port: {}", set.getServerPort());

    if (cmd.hasOption(Cli.OPTION_KEYSTORE)) {
      LanternUtils.setFallbackKeystorePath(cmd.getOptionValue(Cli.OPTION_KEYSTORE));
    }

    final String ctrlOpt = Cli.OPTION_CONTROLLER_ID;
    if (cmd.hasOption(ctrlOpt)) {
      LanternClientConstants.setControllerId(cmd.getOptionValue(ctrlOpt));
    }

    final String insOpt = Cli.OPTION_INSTANCE_ID;
    if (cmd.hasOption(insOpt)) {
      model.setInstanceId(cmd.getOptionValue(insOpt));
    }

    final String fbOpt = Cli.OPTION_AS_FALLBACK;
    if (cmd.hasOption(fbOpt)) {
      LanternUtils.setFallbackProxy(true);
    }

    final String secOpt = Cli.OPTION_OAUTH2_CLIENT_SECRETS_FILE;
    if (cmd.hasOption(secOpt)) {
      loadOAuth2ClientSecretsFile(cmd.getOptionValue(secOpt), set);
    }

    final String credOpt = Cli.OPTION_OAUTH2_USER_CREDENTIALS_FILE;
    if (cmd.hasOption(credOpt)) {
      loadOAuth2UserCredentialsFile(cmd.getOptionValue(credOpt), set);
    }

    final String ripOpt = Cli.OPTION_REPORT_IP;
    if (cmd.hasOption(ripOpt)) {
      model.setReportIp(cmd.getOptionValue(ripOpt));
    }

    // final Settings set = LanternHub.settings();

    set.setUseTrustedPeers(parseOptionDefaultTrue(cmd, Cli.OPTION_TRUSTED_PEERS));
    set.setUseAnonymousPeers(parseOptionDefaultTrue(cmd, Cli.OPTION_ANON_PEERS));
    set.setUseLaeProxies(parseOptionDefaultTrue(cmd, Cli.OPTION_LAE));
    set.setUseCentralProxies(parseOptionDefaultTrue(cmd, Cli.OPTION_CENTRAL));
    set.setUdpProxyPriority(
        cmd.getOptionValue(Cli.OPTION_UDP_PROXY_PRIORITY, "lower").toUpperCase());

    final boolean tcp = parseOptionDefaultTrue(cmd, Cli.OPTION_TCP);
    final boolean udp = parseOptionDefaultTrue(cmd, Cli.OPTION_UDP);
    IceConfig.setTcp(tcp);
    IceConfig.setUdp(udp);
    set.setTcp(tcp);
    set.setUdp(udp);

    /*
    if (cmd.hasOption(OPTION_USER)) {
        set.setUserId(cmd.getOptionValue(OPTION_USER));
    }
    if (cmd.hasOption(OPTION_PASS)) {
        set.(cmd.getOptionValue(OPTION_PASS));
    }
    */

    if (cmd.hasOption(Cli.OPTION_ACCESS_TOK)) {
      set.setAccessToken(cmd.getOptionValue(Cli.OPTION_ACCESS_TOK));
    }

    if (cmd.hasOption(Cli.OPTION_REFRESH_TOK)) {
      final String refresh = cmd.getOptionValue(Cli.OPTION_REFRESH_TOK);
      set.setRefreshToken(refresh);
      Events.asyncEventBus().post(new RefreshTokenEvent(refresh));
    }
    // option to disable use of keychains in local privacy
    if (cmd.hasOption(Cli.OPTION_DISABLE_KEYCHAIN)) {
      log.info("Disabling use of system keychains");
      set.setKeychainEnabled(false);
    } else {
      set.setKeychainEnabled(true);
    }

    if (cmd.hasOption(Cli.OPTION_PASSWORD_FILE)) {
      loadLocalPasswordFile(cmd.getOptionValue(Cli.OPTION_PASSWORD_FILE));
    }

    if (cmd.hasOption(Cli.OPTION_PUBLIC_API)) {
      set.setBindToLocalhost(false);
    }

    log.info("Running API on port: {}", StaticSettings.getApiPort());
    if (cmd.hasOption(Cli.OPTION_LAUNCHD)) {
      log.debug("Running from launchd or launchd set on command line");
      model.setLaunchd(true);
    } else {
      model.setLaunchd(false);
    }

    if (cmd.hasOption(Cli.OPTION_GIVE)) {
      model.getSettings().setMode(Mode.give);
    } else if (cmd.hasOption(Cli.OPTION_GET)) {
      model.getSettings().setMode(Mode.get);
    }
  }