77 lines
2.3 KiB
C
77 lines
2.3 KiB
C
#include "config.h"
|
|
|
|
void parse_config_or_exit(ProxyConfig *config,
|
|
int argc, char **argv)
|
|
{
|
|
config->upstream_addr = TOASTY_STR("127.0.0.1");
|
|
config->upstream_port = 9000;
|
|
|
|
config->local_addr = HTTP_STR("127.0.0.1");
|
|
config->local_port = 8080;
|
|
|
|
config->reuse_addr = false;
|
|
config->trace_bytes = false;
|
|
|
|
for (int i = 1; i < argc; i++) {
|
|
|
|
if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h")) {
|
|
printf("TODO: print help\n");
|
|
exit(0);
|
|
}
|
|
|
|
if (!strcmp(argv[i], "--upstream-addr")) {
|
|
|
|
i++;
|
|
if (i == argc) {
|
|
fprintf(stderr, "Error: Missing value after %s\n", argv[i-1]);
|
|
exit(-1);
|
|
}
|
|
config->upstream_addr = (ToastyString) { argv[i], strlen(argv[i]) };
|
|
|
|
} else if (!strcmp(argv[i], "--upstream-port")) {
|
|
|
|
i++;
|
|
if (i == argc) {
|
|
fprintf(stderr, "Error: Missing value after %s\n", argv[i-1]);
|
|
exit(-1);
|
|
}
|
|
int tmp = atoi(argv[i]);
|
|
if (tmp < 1 || tmp > UINT16_MAX) {
|
|
fprintf(stderr, "Error: Invalid port %s\n", argv[i]);
|
|
exit(-1);
|
|
}
|
|
config->upstream_port = (uint16_t) tmp;
|
|
|
|
} else if (!strcmp(argv[i], "--local-addr")) {
|
|
|
|
i++;
|
|
if (i == argc) {
|
|
fprintf(stderr, "Error: Missing value after %s\n", argv[i-1]);
|
|
exit(-1);
|
|
}
|
|
config->local_addr = (HTTP_String) { argv[i], strlen(argv[i]) };
|
|
|
|
} else if (!strcmp(argv[i], "--local-port")) {
|
|
|
|
i++;
|
|
if (i == argc) {
|
|
fprintf(stderr, "Error: Missing value after %s\n", argv[i-1]);
|
|
exit(-1);
|
|
}
|
|
int tmp = atoi(argv[i]);
|
|
if (tmp < 1 || tmp > UINT16_MAX) {
|
|
fprintf(stderr, "Error: Invalid port %s\n", argv[i]);
|
|
exit(-1);
|
|
}
|
|
config->local_port = (uint16_t) tmp;
|
|
} else if(!strcmp(argv[i], "--reuse-addr")) {
|
|
config->reuse_addr = true;
|
|
} else if(!strcmp(argv[i], "--trace-bytes")) {
|
|
config->trace_bytes = true;
|
|
} else {
|
|
fprintf(stderr, "Error: Invalid option %s\n", argv[i]);
|
|
exit(-1);
|
|
}
|
|
}
|
|
}
|