Beispiel #1
0
static int
process_args(spedye_conf_t *conf, int argc, char *argv[])
{
  char *arg = NULL;
  char *p = NULL;
  int i;

  /* TODO: support configuration file for complex configurations */

  for (i = 0; i < argc; i++) {
    if (long_arg("-b", "--bind", i, argc, argv, &arg)) {
      i++;

      p = strrchr(arg, ':');
      if (p) {
        conf->listeners->port = atoi(p+1);
        *p = '\0';
      }

      if (strcmp("*", arg) == 0) {
        conf->listeners->address = strdup("0.0.0.0");
      }
      else {
        conf->listeners->address = strdup(arg);
      }
      /* TODO: proper parse IP:port, handle v6 */
      continue;
    }

    if (long_arg("-f", "--forward", i, argc, argv, &arg)) {
      i++;

      p = strrchr(arg, ':');

      if (p) {
        conf->listeners->vhosts->destport = atoi(p+1);
        *p = '\0';
      }

      conf->listeners->vhosts->destaddress = strdup(arg);
    }

  }
  conf->worker_count = 10;
  return 0;
}
Beispiel #2
0
void spawner_new_c::init_arguments() {
    parser.set_dividers(c_lst("=", ":").vector());

    console_argument_parser_c *console_default_parser = new console_argument_parser_c();
    environment_variable_parser_c *environment_default_parser = new environment_variable_parser_c();

    console_default_parser->add_argument_parser(c_lst(short_arg("tl")),
        environment_default_parser->add_argument_parser(c_lst("SP_TIME_LIMIT"),
            new microsecond_argument_parser_c(restrictions[restriction_processor_time_limit]))
    )->set_description("Time limit (user process time)");
    console_default_parser->add_argument_parser(c_lst(short_arg("d")),
        environment_default_parser->add_argument_parser(c_lst("SP_DEADLINE"),
            new microsecond_argument_parser_c(restrictions[restriction_user_time_limit]))
            )->set_description("Time limit (wallclock time)");;
    console_default_parser->add_argument_parser(c_lst(short_arg("s")),
        environment_default_parser->add_argument_parser(c_lst("SP_SECURITY_LEVEL"),
            new bool_restriction_argument_parser_c(restrictions[restriction_security_limit]))
    );
    console_default_parser->add_argument_parser(c_lst(short_arg("ml")),
        environment_default_parser->add_argument_parser(c_lst("SP_MEMORY_LIMIT"),
            new byte_argument_parser_c(restrictions[restriction_memory_limit]))
    )->set_description("Memory limit");
    console_default_parser->add_argument_parser(c_lst(short_arg("wl")),
        environment_default_parser->add_argument_parser(c_lst("SP_WRITE_LIMIT"),
            new byte_argument_parser_c(restrictions[restriction_write_limit]))
    )->set_description("Output size limit");
    console_default_parser->add_argument_parser(c_lst(short_arg("lr")),
        environment_default_parser->add_argument_parser(c_lst("SP_LOAD_RATIO"),
            new percent_argument_parser_c(restrictions[restriction_load_ratio]))
    )->set_description("Declared idle processor load is below this (default: 5%)");
    console_default_parser->add_argument_parser(c_lst(short_arg("y")),
        environment_default_parser->add_argument_parser(c_lst("SP_IDLE_TIME_LIMIT"),
            new microsecond_argument_parser_c(restrictions[restriction_idle_time_limit]))
    )->set_description("Idleness time limit");

    console_default_parser->add_argument_parser(c_lst(short_arg("u")),
        environment_default_parser->add_argument_parser(c_lst("SP_USER"),
            new string_argument_parser_c(options.login))
    );
    console_default_parser->add_argument_parser(c_lst(short_arg("p")),
        environment_default_parser->add_argument_parser(c_lst("SP_PASSWORD"),
            new string_argument_parser_c(options.password))
    );

    console_default_parser->add_argument_parser(c_lst(short_arg("sr")),
        environment_default_parser->add_argument_parser(c_lst("SP_REPORT_FILE"),
            new string_argument_parser_c(options.report_file))
    )->set_description("Save report to file");

    console_default_parser->add_argument_parser(c_lst(short_arg("env")),
        environment_default_parser->add_argument_parser(c_lst("SP_ENVIRONMENT"),
            new environment_mode_argument_parser_c(options.environmentMode))
    )->set_description("Control environment variables for <executable> (default: inherit)");

    console_default_parser->add_argument_parser(c_lst(short_arg("D")),
        new options_callback_argument_parser_c(&options, &options_class::add_environment_variable)
    )->set_description("Define additional environment variable for <executable>");

    console_default_parser->add_argument_parser(c_lst(short_arg("ff"), long_arg("file-flags")),
        new options_callback_argument_parser_c(&options, &options_class::add_stdoutput)
    )->set_description("Define default file opening flags (f - force flush, e - exclusively open)");

    console_default_parser->add_argument_parser(c_lst(short_arg("so"), long_arg("out")),
        environment_default_parser->add_argument_parser(c_lst("SP_OUTPUT_FILE"),
            new options_callback_argument_parser_c(&options, &options_class::add_stdoutput))
    )->set_description("Redirect standard output stream to ([*[<file-flags>]:]<filename>|*[[<pipe-flags>]:]null|std|<index>.stdin)");
    console_default_parser->add_argument_parser(c_lst(short_arg("i"), long_arg("in")),
        environment_default_parser->add_argument_parser(c_lst("SP_INPUT_FILE"),
            new options_callback_argument_parser_c(&options, &options_class::add_stdinput))
    )->set_description("Redirect standard input stream from ([*[<file-flags>]:]<filename>|*[[<pipe-flags>]:]null|std|<index>.stdout)");
    console_default_parser->add_argument_parser(c_lst(short_arg("e"), short_arg("se"), long_arg("err")),
        environment_default_parser->add_argument_parser(c_lst("SP_ERROR_FILE"),
            new options_callback_argument_parser_c(&options, &options_class::add_stderror))
    )->set_description("Redirect standard error stream to ([*[<file-flags>]:]<filename>|*[[<pipe-flags>]:]null|std|<index>.stderr)");

    console_default_parser->add_argument_parser(c_lst(short_arg("runas"), long_arg("delegated")),
        environment_default_parser->add_argument_parser(c_lst("SP_RUNAS"), new boolean_argument_parser_c(options.delegated))
    );
    console_default_parser->add_argument_parser(c_lst(short_arg("ho")),
        environment_default_parser->add_argument_parser(c_lst("SP_HIDE_OUTPUT"), new boolean_argument_parser_c(options.hide_output))
    )->set_description("Do not display report on console");
    console_default_parser->add_argument_parser(c_lst(short_arg("hr")),
        environment_default_parser->add_argument_parser(c_lst("SP_HIDE_REPORT"), new boolean_argument_parser_c(options.hide_report))
    )->set_description("Do not display report on console");

    console_default_parser->add_argument_parser(c_lst(short_arg("sw")),
        environment_default_parser->add_argument_parser(c_lst("SP_SHOW_WINDOW"), new inverted_boolean_argument_parser_c(options.hide_gui))
    );

    console_default_parser->add_argument_parser(c_lst(long_arg("debug")),
        environment_default_parser->add_argument_parser(c_lst("SP_DEBUG"), new boolean_argument_parser_c(options.debug))
    );

    console_default_parser->add_argument_parser(c_lst(short_arg("mi"), long_arg("monitorInterval")),
        environment_default_parser->add_argument_parser(c_lst("SP_MONITOR_INTERVAL"),
            new microsecond_argument_parser_c(options.monitorInterval))
    )->set_description("Sleep interval for a monitoring thread (default: 0.001s)");

    console_default_parser->add_flag_parser(c_lst(short_arg("c"), long_arg("systempath")),
        environment_default_parser->add_argument_parser(c_lst("SP_SYSTEM_PATH"), new boolean_argument_parser_c(options.use_cmd))
    )->set_description("Search <executable> in system path");
    console_default_parser->add_argument_parser(c_lst(short_arg("wd")),
        environment_default_parser->add_argument_parser(c_lst("SP_DIRECTORY"), new string_argument_parser_c(options.working_directory))
    )->set_description("Set working directory");

    console_default_parser->add_flag_parser(c_lst(short_arg("j"), long_arg("json")),
        environment_default_parser->add_argument_parser(c_lst("SP_JSON"), new boolean_argument_parser_c(options.json))
    )->set_description("Use JSON for reporting");

    console_default_parser->add_argument_parser(c_lst(long_arg("separator")),
        environment_default_parser->add_argument_parser(c_lst("SP_SEPARATOR"),
            new callback_argument_parser_c<settings_parser_c*, void(settings_parser_c::*)(const std::string&)>(&parser, &settings_parser_c::set_separator))
    );

    console_default_parser->add_argument_parser(c_lst(short_arg("process-count")),
        new time_argument_parser_c<degree_default>(restrictions[restriction_processes_count_limit]));

    console_default_parser->add_argument_parser(c_lst(long_arg("shared-memory")),
        environment_default_parser->add_argument_parser(c_lst("SP_SHARED_MEMORY"), new string_argument_parser_c(options.shared_memory))
    );

    console_default_parser->add_flag_parser(c_lst(long_arg("controller")),
        new boolean_argument_parser_c(options.controller));

    console_default_parser->add_flag_parser(c_lst(SEPARATOR_ARGUMENT),
        new callback_argument_parser_c<spawner_new_c*, void(spawner_new_c::*)(const std::string&)>(&(*this), &spawner_new_c::on_separator));

    //ADD_CONSOLE_ENVIRONMENT_ARGUMENT(old_spawner, c_lst(long_arg("program")), c_lst("SP_PROGRAM"),   options.session_id, STRING_CONVERT);

    parser.add_parser(console_default_parser);
    parser.add_parser(environment_default_parser);
}
Beispiel #3
0
void settings_parser_c::set_separator(const std::string &s) {
    separator = long_arg(s);
}