Logger and config refactor
This commit is contained in:
@ -726,8 +726,8 @@ int client_connection_handler(client_ctx_t *ctx, sock *client, unsigned long cli
|
|||||||
|
|
||||||
clock_gettime(CLOCK_MONOTONIC, &begin);
|
clock_gettime(CLOCK_MONOTONIC, &begin);
|
||||||
|
|
||||||
if (dns_server[0] != 0) {
|
if (config.dns_server[0] != 0) {
|
||||||
sprintf(buf, "dig @%s +short +time=1 -x %s", dns_server, ctx->addr);
|
sprintf(buf, "dig @%s +short +time=1 -x %s", config.dns_server, ctx->addr);
|
||||||
FILE *dig = popen(buf, "r");
|
FILE *dig = popen(buf, "r");
|
||||||
if (dig == NULL) {
|
if (dig == NULL) {
|
||||||
error("Unable to start dig: %s", strerror(errno));
|
error("Unable to start dig: %s", strerror(errno));
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
config_t config;
|
config_t config;
|
||||||
char geoip_dir[256], dns_server[256];
|
|
||||||
|
|
||||||
int config_load(const char *filename) {
|
int config_load(const char *filename) {
|
||||||
FILE *file = fopen(filename, "r");
|
FILE *file = fopen(filename, "r");
|
||||||
@ -77,10 +76,10 @@ int config_load(const char *filename) {
|
|||||||
} else if (section == 0) {
|
} else if (section == 0) {
|
||||||
if (len > 10 && strncmp(ptr, "geoip_dir", 9) == 0 && (ptr[9] == ' ' || ptr[9] == '\t')) {
|
if (len > 10 && strncmp(ptr, "geoip_dir", 9) == 0 && (ptr[9] == ' ' || ptr[9] == '\t')) {
|
||||||
source = ptr + 9;
|
source = ptr + 9;
|
||||||
target = geoip_dir;
|
target = config.geoip_dir;
|
||||||
} else if (len > 11 && strncmp(ptr, "dns_server", 10) == 0 && (ptr[10] == ' ' || ptr[10] == '\t')) {
|
} else if (len > 11 && strncmp(ptr, "dns_server", 10) == 0 && (ptr[10] == ' ' || ptr[10] == '\t')) {
|
||||||
source = ptr + 10;
|
source = ptr + 10;
|
||||||
target = dns_server;
|
target = config.dns_server;
|
||||||
} else {
|
} else {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -52,10 +52,11 @@ typedef struct {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
host_config_t hosts[CONFIG_MAX_HOST_CONFIG];
|
host_config_t hosts[CONFIG_MAX_HOST_CONFIG];
|
||||||
cert_config_t certs[CONFIG_MAX_CERT_CONFIG];
|
cert_config_t certs[CONFIG_MAX_CERT_CONFIG];
|
||||||
|
char geoip_dir[256];
|
||||||
|
char dns_server[256];
|
||||||
} config_t;
|
} config_t;
|
||||||
|
|
||||||
extern config_t config;
|
extern config_t config;
|
||||||
extern char geoip_dir[256], dns_server[256];
|
|
||||||
|
|
||||||
int config_load(const char *filename);
|
int config_load(const char *filename);
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#define PROXY_COMPRESS 6
|
#define PROXY_COMPRESS 6
|
||||||
|
|
||||||
#ifndef SERVER_NAME
|
#ifndef SERVER_NAME
|
||||||
# define SERVER_NAME "revproxy"
|
# define SERVER_NAME "reverse proxy"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "http.h"
|
#include "http.h"
|
||||||
|
10
src/logger.c
10
src/logger.c
@ -20,9 +20,11 @@
|
|||||||
|
|
||||||
#define LOG_MAX_MSG_SIZE 2048
|
#define LOG_MAX_MSG_SIZE 2048
|
||||||
#define LOG_BUF_SIZE 16
|
#define LOG_BUF_SIZE 16
|
||||||
#define LOG_NAME_LEN 8
|
#define LOG_NAME_LEN 12
|
||||||
#define LOG_PREFIX_LEN 256
|
#define LOG_PREFIX_LEN 256
|
||||||
|
|
||||||
|
#define LOG_PREFIX "[%-8s][%-6s]"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
log_lvl_t lvl;
|
log_lvl_t lvl;
|
||||||
char name[LOG_NAME_LEN];
|
char name[LOG_NAME_LEN];
|
||||||
@ -58,7 +60,7 @@ static const char *level_keywords[] = {
|
|||||||
static void err(const char *restrict msg) {
|
static void err(const char *restrict msg) {
|
||||||
char err_buf[64];
|
char err_buf[64];
|
||||||
strerror_r(errno, err_buf, sizeof(err_buf));
|
strerror_r(errno, err_buf, sizeof(err_buf));
|
||||||
fprintf(stderr, ERR_STR "[logger][%6s] %s: %s" CLR_STR "\n", level_keywords[LOG_CRITICAL], msg, err_buf);
|
fprintf(stderr, ERR_STR LOG_PREFIX " %s: %s" CLR_STR "\n", "logger", level_keywords[LOG_CRITICAL], msg, err_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void logmsgf(log_lvl_t level, const char *restrict format, ...) {
|
void logmsgf(log_lvl_t level, const char *restrict format, ...) {
|
||||||
@ -83,7 +85,7 @@ void logmsgf(log_lvl_t level, const char *restrict format, ...) {
|
|||||||
if (!logger_alive) {
|
if (!logger_alive) {
|
||||||
// no logger thread running
|
// no logger thread running
|
||||||
// simply write to stdout without synchronization
|
// simply write to stdout without synchronization
|
||||||
printf("%s[%-6s][%-6s]%s%s ", color, (name != NULL) ? (char *) name : "", level_keywords[level], CLR_STR, (prefix != NULL) ? (char *) prefix : "");
|
printf("%s" LOG_PREFIX "%s%s ", color, (name != NULL) ? (char *) name : "", level_keywords[level], CLR_STR, (prefix != NULL) ? (char *) prefix : "");
|
||||||
vprintf(buf, args);
|
vprintf(buf, args);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
} else {
|
} else {
|
||||||
@ -212,7 +214,7 @@ static void *logger_thread(void *arg) {
|
|||||||
log_msg_t *msg = &buffer.msgs[buffer.wr];
|
log_msg_t *msg = &buffer.msgs[buffer.wr];
|
||||||
buffer.wr = (buffer.wr + 1) % LOG_BUF_SIZE;
|
buffer.wr = (buffer.wr + 1) % LOG_BUF_SIZE;
|
||||||
|
|
||||||
printf("%s[%-6s][%-6s]%s%s %s\n",
|
printf("%s" LOG_PREFIX "%s%s %s\n",
|
||||||
(msg->lvl <= LOG_ERROR) ? ERR_STR : ((msg->lvl <= LOG_WARNING) ? WRN_STR : ""),
|
(msg->lvl <= LOG_ERROR) ? ERR_STR : ((msg->lvl <= LOG_WARNING) ? WRN_STR : ""),
|
||||||
(msg->name[0] != 0) ? (char *) msg->name : "", level_keywords[msg->lvl], CLR_STR,
|
(msg->name[0] != 0) ? (char *) msg->name : "", level_keywords[msg->lvl], CLR_STR,
|
||||||
(msg->prefix[0] != 0) ? (char *) msg->prefix : "", msg->txt);
|
(msg->prefix[0] != 0) ? (char *) msg->prefix : "", msg->txt);
|
||||||
|
@ -200,7 +200,7 @@ int main(int argc, char *const argv[]) {
|
|||||||
signal(SIGINT, terminate_gracefully);
|
signal(SIGINT, terminate_gracefully);
|
||||||
signal(SIGTERM, terminate_gracefully);
|
signal(SIGTERM, terminate_gracefully);
|
||||||
|
|
||||||
if ((ret = geoip_init(geoip_dir)) != 0) {
|
if ((ret = geoip_init(config.geoip_dir)) != 0) {
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
critical("Unable to initialize geoip");
|
critical("Unable to initialize geoip");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user