Alex 'AdUser' Z
9 years ago
commit
4e3b557857
12 changed files with 176 additions and 0 deletions
@ -0,0 +1,9 @@ |
|||||||
|
SET(CNAME "f2b") |
||||||
|
SET(VERSION 0.07) |
||||||
|
|
||||||
|
PROJECT(${CNAME} C) |
||||||
|
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) |
||||||
|
|
||||||
|
SET(CMAKE_INSTALL_PREFIX "/usr/local") |
||||||
|
|
||||||
|
ADD_SUBDIRECTORY (src) |
@ -0,0 +1,6 @@ |
|||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON) |
||||||
|
|
||||||
|
add_executable(f2b "main.c" "logfile.c" "log.c") |
||||||
|
|
||||||
|
install(TARGETS f2b |
||||||
|
RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") |
@ -0,0 +1,11 @@ |
|||||||
|
#ifndef F2B_COMMON_H_ |
||||||
|
#define F2B_COMMON_H_ |
||||||
|
|
||||||
|
#include <assert.h> |
||||||
|
#include <errno.h> |
||||||
|
#include <stdio.h> |
||||||
|
#include <stdbool.h> |
||||||
|
#include <stdlib.h> |
||||||
|
#include <string.h> |
||||||
|
|
||||||
|
#endif /* F2B_COMMON_H_ */ |
@ -0,0 +1,16 @@ |
|||||||
|
#include "jail.h" |
||||||
|
|
||||||
|
/*
|
||||||
|
size_t |
||||||
|
f2b_jail_poll(const jail_t *jail) { |
||||||
|
size_t processed = 0; |
||||||
|
char logline[LOGLINE_MAX] = { '\0' }; |
||||||
|
|
||||||
|
for (f2b_logfile_t *file = jail->logfiles; file != NULL; file = file->next) { |
||||||
|
if (f2b_logfile_getline(file, logline) < 0) |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
return processed; |
||||||
|
} |
||||||
|
*/ |
@ -0,0 +1,15 @@ |
|||||||
|
#ifndef F2B_JAIL_H_ |
||||||
|
#define F2B_JAIL_H_ |
||||||
|
|
||||||
|
#include "logfile.h" |
||||||
|
#include "match.h" |
||||||
|
|
||||||
|
#define LOGLINE_MAX 2048 |
||||||
|
|
||||||
|
typedef struct f2b_jail_t { |
||||||
|
char name[32]; |
||||||
|
f2b_match_t *matches; |
||||||
|
f2b_logfile_t *logfiles; |
||||||
|
}; |
||||||
|
|
||||||
|
#endif /* F2B_JAIL_H_ */ |
@ -0,0 +1,21 @@ |
|||||||
|
#include <stdarg.h> |
||||||
|
#include <stdio.h> |
||||||
|
#include <string.h> |
||||||
|
|
||||||
|
#include "common.h" |
||||||
|
#include "log.h" |
||||||
|
|
||||||
|
#define LOGLINE_MAX 1024 |
||||||
|
|
||||||
|
void log_msg(log_msgtype_t l, const char *fmt, ...) { |
||||||
|
va_list args; |
||||||
|
char line[LOGLINE_MAX] = ""; |
||||||
|
char msg[LOGLINE_MAX] = ""; |
||||||
|
|
||||||
|
va_start(args, fmt); |
||||||
|
snprintf(msg, sizeof(msg), fmt, args); |
||||||
|
va_end(args); |
||||||
|
strncat(line, msg, sizeof(line)); |
||||||
|
|
||||||
|
return; |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
#ifndef F2B_LOG_H_ |
||||||
|
#define F2B_LOG_H_ |
||||||
|
|
||||||
|
typedef enum { |
||||||
|
log_debug = 0, |
||||||
|
log_info = 1, |
||||||
|
log_note = 1, |
||||||
|
log_warn = 2, |
||||||
|
log_error = 3, |
||||||
|
log_fatal = 4 |
||||||
|
} log_msgtype_t; |
||||||
|
|
||||||
|
void log_msg (log_msgtype_t l, const char *fmt, ...); |
||||||
|
|
||||||
|
#endif /* F2B_LOG_H_ */ |
@ -0,0 +1,46 @@ |
|||||||
|
#include <sys/stat.h> |
||||||
|
|
||||||
|
#include "common.h" |
||||||
|
#include "log.h" |
||||||
|
#include "logfile.h" |
||||||
|
|
||||||
|
bool |
||||||
|
f2b_logfile_open(f2b_logfile_t *file, const char *filename) { |
||||||
|
struct stat st; |
||||||
|
|
||||||
|
assert(file != NULL); |
||||||
|
assert(filename != NULL); |
||||||
|
|
||||||
|
memset(file, 0x0, sizeof(f2b_logfile_t)); |
||||||
|
|
||||||
|
if (stat(filename, &st) != 0) { |
||||||
|
log_msg(log_error, "can't open file %s: %s", filename, strerror(errno)); |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
strncpy(file->path, filename, sizeof(file->path)); |
||||||
|
memcpy(&file->st, &st, sizeof(st)); |
||||||
|
|
||||||
|
if ((file->fd = fopen(filename, "r")) == NULL) { |
||||||
|
log_msg(log_error, "can't open file %s: %s", filename, strerror(errno)); |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
if (fseek(file->fd, 0, SEEK_END) < 0) { |
||||||
|
log_msg(log_error, "can't seek to end of file %s: %s", filename, strerror(errno)); |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
f2b_logfile_close(const f2b_logfile_t *file); |
||||||
|
|
||||||
|
bool |
||||||
|
f2b_logfile_rotated(const f2b_logfile_t *file); |
||||||
|
|
||||||
|
ssize_t |
||||||
|
f2b_logfile_getline(const f2b_logfile_t *file, const char *buf, size_t bufsize) { |
||||||
|
return -1; |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
#ifndef F2B_LOGFILE_H_ |
||||||
|
#define F2B_LOGFILE_H_ |
||||||
|
|
||||||
|
#include <limits.h> |
||||||
|
#include <sys/stat.h> |
||||||
|
|
||||||
|
typedef struct { |
||||||
|
struct f2b_logfile_t *next; |
||||||
|
char path[PATH_MAX]; |
||||||
|
FILE *fd; |
||||||
|
struct stat st; |
||||||
|
} f2b_logfile_t; |
||||||
|
|
||||||
|
#endif /* F2B_LOGFILE_H_ */ |
@ -0,0 +1,8 @@ |
|||||||
|
#include "common.h" |
||||||
|
#include "logfile.h" |
||||||
|
#include "match.h" |
||||||
|
|
||||||
|
int main() { |
||||||
|
printf("Hello world!\n"); |
||||||
|
return 0; |
||||||
|
} |
Loading…
Reference in new issue