Dokumentace k souboru sp_proxy.c

Proměnné | Funkce

Proměnné (6)

JménoTypPočáteční hodnotaDokumentace
func*threadfunc?funkce pro thread
pop3sint?socket na POP3
smtpsint?socket na SMTP
sockint?socket pro thread
valid_charchar[256]?platne znaky v emailu
whitelist_lockpthread_mutex_t?lock na zmenu whitelistu

Funkce (28)

ModifikátorJménoParametryDokumentace
voidadd_to_whitelist(config *cfg,const char *line)zapise adresu do whitelistu
intemail_in_list(tree *list,const char *email)vraci 1 pokud je email v seznamu list, jinak 0
const char *get_cmd_param(const char *cmd,const char *input)otestuje jestli vstup input zacina na cmd a vrati
odkaz na prvni nemezerovy znak za prikazem cmd, nebo NULL, pokud to neni spravny prikaz
voidinit_config(int argc,char **argv)nahraje konfiguracni soubor a pak ho (eventuelne) upravi podle commandline parametru
intis_canonical_email(const char *string,int s_len)vraci true, pokud podretezec retezce string delky strlen je email fe formatu user@domena
voidline_checkwhitelist(config *cfg,char *line)ZKONTROLUJE jestli radka neobsahuje ^RCPT TO:(.*)$
a pokud ano, prida \1 do whitelistu
voidlog_error()posle do logu chybovou hlasku podle kodu v ERRNO
voidlog_init()inicializuje logovani hlasek
voidlog_message(int priority,const char *err)zaloguje hlasky. Typicky do syslogu, ale pri debugovani i na STDOUT
voidlog_messagef(int priority, const char *fmt,...)jako log_message(), ale s formatovanym retezcem jako u printf
intmain(int argc,char **argv)main - hlavni funkce programu
voidmain_rebind(int change_smtp,int change_pop3)zmeni sockety, pokud je po zmene konfigurace nuntno naslouchat na jinych portech
voidmake_vch_table()inicializuje tabulku valid_char
voidmessage_dots(charbuffer *b,int cnt)Escape na tecky v smtp komunikaci
cnt==-1: z .. na jednom radku udela .
cnt==+1: z . na jednom radku udela ..
voidnet_thread(thread_rec *t)wrapper kolem funkce socketu. Funkce (vnitrni) po sobe socket nezvira, to dela tato funkce
voidnet_thread_run(thread_rec t)spusti sitovy thread s danou funkcin a socketem
char *parse_email(const char *email)rozparsuje email z formatu typu "neco"
a podobnych na normalizovany tvar user@domena
intpipe_filter(charbuffer *msg,charbuffer *msg_out,pid_t pid,int h_in,int h_out)zapise obsah msg do h_in, zaroven vyzvedne obsah z h_out do
bufferu msg_out, a po ukonceni procesu pid vrati jeho navratovou hodnotu
intpop3_handler(int s,config *cfg)POP3 socket handler
intrun_classificator(charbuffer *b_message,const char *prog)na zpravu spusti klasifikator dle nastaveni a vrati hodnotu zpravy
voidrun_pipe(const char *prog, int *h_in,int *h_out,pid_t *pid)spusti program a k nemu oboustrannou pipe - vrati handle na zapis do programu (h_in) a handle na cteni programu (h_out)
Vrati tez pid child procesu (aby se dalo cekat pres waitpid, az vypise vsechen vystup)
voidrun_postaction(charbuffer *b_message,priority_list *filt,int state)na zpravu spusti programy postaction dle nastaveni
voidrun_postfilter(charbuffer *b_message,priority_list *filt,int state)na zpravu spusti programy postfilter dle nastaveni
charbufferrun_prefilter(charbuffer *b_message,priority_list *filt)spusti na zpravy b_message prefilter, vrati prefiltrovanou zpravu
intrun_prog(charbuffer *msg,const char *prog,programtype pt)spusti program, msg je buffer, ktery obsahuje vstupni zpravu, pokud pt je
pt_subjectmark, nebo pt_filter, bude nahrazena vystupni zpravou
voidrun_programlist(charbuffer *msg,priority_list *filt,int state,programtype pt)spusti vsechny programy postupne v jejich poradi ze seznamu list
na zpravu msg, programy dostanou parametry state a pt
voidrun_subjmark(charbuffer *b_message,priority_list *filt,int state)na zpravu spusti znackovac Subjectu dle nastaveni
intsmtp_handler(int s,config *cfg)
SMTP proxy - start double pipe, pass input/output unchanged, if input is
^RCPT TO:(.*)$
then add $1 to whitelist (maybe: only if 250 response code received)
if input is DATA, then wait for .

Dokumentace z 29.01.2004 01:50:02