mirror of
https://bitbucket.org/jsuto/piler.git
synced 2024-12-25 20:10:11 +01:00
introduced the server_id variable
This commit is contained in:
parent
28d12e9a52
commit
1d2ac1c117
@ -7,6 +7,11 @@
|
|||||||
; 5: debug
|
; 5: debug
|
||||||
verbosity=1
|
verbosity=1
|
||||||
|
|
||||||
|
; unique server id. If you have more than 1 piler hosts combined,
|
||||||
|
; then assign a unique value to each host. Possible values: 0-255
|
||||||
|
server_id=0
|
||||||
|
|
||||||
|
|
||||||
; piler daemon will use this user (and its group)
|
; piler daemon will use this user (and its group)
|
||||||
; it it was started by root
|
; it it was started by root
|
||||||
username=piler
|
username=piler
|
||||||
|
@ -91,6 +91,7 @@ struct _parse_rule config_parse_rules[] =
|
|||||||
{ "pidfile", "string", (void*) string_parser, offsetof(struct __config, pidfile), PIDFILE, MAXVAL-1},
|
{ "pidfile", "string", (void*) string_parser, offsetof(struct __config, pidfile), PIDFILE, MAXVAL-1},
|
||||||
{ "piler_header_field", "string", (void*) string_parser, offsetof(struct __config, piler_header_field), "", MAXVAL-1},
|
{ "piler_header_field", "string", (void*) string_parser, offsetof(struct __config, piler_header_field), "", MAXVAL-1},
|
||||||
{ "queuedir", "string", (void*) string_parser, offsetof(struct __config, queuedir), QUEUE_DIR, MAXVAL-1},
|
{ "queuedir", "string", (void*) string_parser, offsetof(struct __config, queuedir), QUEUE_DIR, MAXVAL-1},
|
||||||
|
{ "server_id", "integer", (void*) int_parser, offsetof(struct __config, server_id), "0", sizeof(int)},
|
||||||
{ "session_timeout", "integer", (void*) int_parser, offsetof(struct __config, session_timeout), "420", sizeof(int)},
|
{ "session_timeout", "integer", (void*) int_parser, offsetof(struct __config, session_timeout), "420", sizeof(int)},
|
||||||
{ "spam_header_line", "string", (void*) string_parser, offsetof(struct __config, spam_header_line), "", MAXVAL-1},
|
{ "spam_header_line", "string", (void*) string_parser, offsetof(struct __config, spam_header_line), "", MAXVAL-1},
|
||||||
{ "tls_enable", "integer", (void*) int_parser, offsetof(struct __config, tls_enable), "0", sizeof(int)},
|
{ "tls_enable", "integer", (void*) int_parser, offsetof(struct __config, tls_enable), "0", sizeof(int)},
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
struct __config {
|
struct __config {
|
||||||
|
int server_id;
|
||||||
char username[MAXVAL];
|
char username[MAXVAL];
|
||||||
|
|
||||||
char hostid[MAXVAL];
|
char hostid[MAXVAL];
|
||||||
|
@ -26,7 +26,7 @@ int import_message(char *filename, struct session_data *sdata, struct __data *da
|
|||||||
struct __counters counters;
|
struct __counters counters;
|
||||||
|
|
||||||
|
|
||||||
init_session_data(sdata);
|
init_session_data(sdata, cfg->server_id);
|
||||||
|
|
||||||
if(cfg->verbosity > 1) printf("processing: %s\n", filename);
|
if(cfg->verbosity > 1) printf("processing: %s\n", filename);
|
||||||
|
|
||||||
|
14
src/misc.c
14
src/misc.c
@ -211,13 +211,13 @@ int extractEmail(char *rawmail, char *email){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void create_id(char *id){
|
void create_id(char *id, unsigned char server_id){
|
||||||
int i;
|
int i;
|
||||||
unsigned char buf[RND_STR_LEN/2];
|
unsigned char buf[RND_STR_LEN/2];
|
||||||
|
|
||||||
memset(id, 0, SMALLBUFSIZE);
|
memset(id, 0, SMALLBUFSIZE);
|
||||||
|
|
||||||
get_random_bytes(buf, RND_STR_LEN/2);
|
get_random_bytes(buf, RND_STR_LEN/2, server_id);
|
||||||
|
|
||||||
for(i=0; i < RND_STR_LEN/2; i++){
|
for(i=0; i < RND_STR_LEN/2; i++){
|
||||||
sprintf(id, "%02x", buf[i]);
|
sprintf(id, "%02x", buf[i]);
|
||||||
@ -231,7 +231,7 @@ void create_id(char *id){
|
|||||||
* reading from pool
|
* reading from pool
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int get_random_bytes(unsigned char *buf, int len){
|
int get_random_bytes(unsigned char *buf, int len, unsigned char server_id){
|
||||||
int fd, ret=0;
|
int fd, ret=0;
|
||||||
struct taia now;
|
struct taia now;
|
||||||
char nowpack[TAIA_PACK];
|
char nowpack[TAIA_PACK];
|
||||||
@ -246,7 +246,9 @@ int get_random_bytes(unsigned char *buf, int len){
|
|||||||
fd = open(RANDOM_POOL, O_RDONLY);
|
fd = open(RANDOM_POOL, O_RDONLY);
|
||||||
if(fd == -1) return ret;
|
if(fd == -1) return ret;
|
||||||
|
|
||||||
if(readFromEntropyPool(fd, buf+12, len-12) != len-12){
|
*(buf + 12) = server_id;
|
||||||
|
|
||||||
|
if(readFromEntropyPool(fd, buf+12+1, len-12-1) != len-12-1){
|
||||||
syslog(LOG_PRIORITY, "%s: %s", ERR_CANNOT_READ_FROM_POOL, RANDOM_POOL);
|
syslog(LOG_PRIORITY, "%s: %s", ERR_CANNOT_READ_FROM_POOL, RANDOM_POOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,13 +449,13 @@ int is_email_address_on_my_domains(char *email, struct __config *cfg){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void init_session_data(struct session_data *sdata){
|
void init_session_data(struct session_data *sdata, unsigned char server_id){
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
||||||
sdata->fd = -1;
|
sdata->fd = -1;
|
||||||
|
|
||||||
create_id(&(sdata->ttmpfile[0]));
|
create_id(&(sdata->ttmpfile[0]), server_id);
|
||||||
unlink(sdata->ttmpfile);
|
unlink(sdata->ttmpfile);
|
||||||
|
|
||||||
snprintf(sdata->filename, SMALLBUFSIZE-1, "%s", sdata->ttmpfile);
|
snprintf(sdata->filename, SMALLBUFSIZE-1, "%s", sdata->ttmpfile);
|
||||||
|
@ -24,8 +24,8 @@ char *split(char *row, int ch, char *s, int size);
|
|||||||
char *split_str(char *row, char *what, char *s, int size);
|
char *split_str(char *row, char *what, char *s, int size);
|
||||||
int trimBuffer(char *s);
|
int trimBuffer(char *s);
|
||||||
int extractEmail(char *rawmail, char *email);
|
int extractEmail(char *rawmail, char *email);
|
||||||
void create_id(char *id);
|
void create_id(char *id, unsigned char server_id);
|
||||||
int get_random_bytes(unsigned char *buf, int len);
|
int get_random_bytes(unsigned char *buf, int len, unsigned char server_id);
|
||||||
int readFromEntropyPool(int fd, void *_s, size_t n);
|
int readFromEntropyPool(int fd, void *_s, size_t n);
|
||||||
int recvtimeout(int s, char *buf, int len, int timeout);
|
int recvtimeout(int s, char *buf, int len, int timeout);
|
||||||
int write1(int sd, char *buf, int use_ssl, SSL *ssl);
|
int write1(int sd, char *buf, int use_ssl, SSL *ssl);
|
||||||
@ -35,7 +35,7 @@ void write_pid_file(char *pidfile);
|
|||||||
int drop_privileges(struct passwd *pwd);
|
int drop_privileges(struct passwd *pwd);
|
||||||
|
|
||||||
int is_email_address_on_my_domains(char *email, struct __config *cfg);
|
int is_email_address_on_my_domains(char *email, struct __config *cfg);
|
||||||
void init_session_data(struct session_data *sdata);
|
void init_session_data(struct session_data *sdata, unsigned char server_id);
|
||||||
int read_from_stdin(struct session_data *sdata);
|
int read_from_stdin(struct session_data *sdata);
|
||||||
void strtolower(char *s);
|
void strtolower(char *s);
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ int main(int argc, char **argv){
|
|||||||
if(read_key(&cfg)) p_clean_exit(ERR_READING_KEY, 1);
|
if(read_key(&cfg)) p_clean_exit(ERR_READING_KEY, 1);
|
||||||
|
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg.server_id);
|
||||||
|
|
||||||
|
|
||||||
mysql_init(&(sdata.mysql));
|
mysql_init(&(sdata.mysql));
|
||||||
|
@ -348,7 +348,7 @@ int main(int argc, char **argv){
|
|||||||
|
|
||||||
setlocale(LC_CTYPE, cfg.locale);
|
setlocale(LC_CTYPE, cfg.locale);
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg.server_id);
|
||||||
|
|
||||||
i = is_purge_allowed(&sdata, &cfg);
|
i = is_purge_allowed(&sdata, &cfg);
|
||||||
if(i == 1){
|
if(i == 1){
|
||||||
|
@ -212,7 +212,7 @@ int main(int argc, char **argv){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg.server_id);
|
||||||
|
|
||||||
|
|
||||||
mysql_init(&(sdata.mysql));
|
mysql_init(&(sdata.mysql));
|
||||||
|
@ -54,7 +54,7 @@ int handle_smtp_session(int new_sd, struct __data *data, struct __config *cfg){
|
|||||||
|
|
||||||
state = SMTP_STATE_INIT;
|
state = SMTP_STATE_INIT;
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg->server_id);
|
||||||
sdata.tls = 0;
|
sdata.tls = 0;
|
||||||
|
|
||||||
bzero(&counters, sizeof(counters));
|
bzero(&counters, sizeof(counters));
|
||||||
@ -370,7 +370,7 @@ AFTER_PERIOD:
|
|||||||
unlink(sdata.ttmpfile);
|
unlink(sdata.ttmpfile);
|
||||||
unlink(sdata.tmpframe);
|
unlink(sdata.tmpframe);
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg->server_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
state = SMTP_STATE_MAIL_FROM;
|
state = SMTP_STATE_MAIL_FROM;
|
||||||
@ -476,7 +476,7 @@ AFTER_PERIOD:
|
|||||||
unlink(sdata.ttmpfile);
|
unlink(sdata.ttmpfile);
|
||||||
unlink(sdata.tmpframe);
|
unlink(sdata.tmpframe);
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg->server_id);
|
||||||
|
|
||||||
state = SMTP_STATE_HELO;
|
state = SMTP_STATE_HELO;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ int main(int argc, char **argv){
|
|||||||
load_rules(&sdata, &(data.archiving_rules), SQL_ARCHIVING_RULE_TABLE);
|
load_rules(&sdata, &(data.archiving_rules), SQL_ARCHIVING_RULE_TABLE);
|
||||||
load_rules(&sdata, &(data.retention_rules), SQL_RETENTION_RULE_TABLE);
|
load_rules(&sdata, &(data.retention_rules), SQL_RETENTION_RULE_TABLE);
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg.server_id);
|
||||||
|
|
||||||
sdata.sent = 0;
|
sdata.sent = 0;
|
||||||
sdata.delivered = 0;
|
sdata.delivered = 0;
|
||||||
|
@ -33,7 +33,7 @@ int main(int argc, char **argv){
|
|||||||
cfg = read_config(CONFIG_FILE);
|
cfg = read_config(CONFIG_FILE);
|
||||||
|
|
||||||
|
|
||||||
init_session_data(&sdata);
|
init_session_data(&sdata, cfg.server_id);
|
||||||
|
|
||||||
sdata.sent = 0;
|
sdata.sent = 0;
|
||||||
sdata.tot_len = st.st_size;
|
sdata.tot_len = st.st_size;
|
||||||
|
@ -40,7 +40,7 @@ int parse_it(char *filename, struct session_data *sdata, struct __data *data, st
|
|||||||
struct _state state;
|
struct _state state;
|
||||||
|
|
||||||
|
|
||||||
init_session_data(sdata);
|
init_session_data(sdata, cfg->server_id);
|
||||||
|
|
||||||
if(stat(filename, &st) != 0){
|
if(stat(filename, &st) != 0){
|
||||||
printf("cannot stat() %s\n", filename);
|
printf("cannot stat() %s\n", filename);
|
||||||
|
Loading…
Reference in New Issue
Block a user