README.txt
changeset 46 875902155b06
parent 18 84fa30ea0b0d
child 59 a8776c046a53
equal deleted inserted replaced
45:b65e0d8469c3 46:875902155b06
     6 
     6 
     7 Per compilar-lo fent servir tcc (que suporta c99, és fàcil d'instal·lar, etc.
     7 Per compilar-lo fent servir tcc (que suporta c99, és fàcil d'instal·lar, etc.
     8    (Tiny C Compiler, http://fabrice.bellard.free.fr/tcc/ ):
     8    (Tiny C Compiler, http://fabrice.bellard.free.fr/tcc/ ):
     9 $ make -f Makefile.tcc
     9 $ make -f Makefile.tcc
    10 
    10 
    11 Per a testejar el programa, hi ha un petit script de test que requereix bash.
    11 Per a testejar una mica el programa, hi ha un petit script de test que
       
    12 requereix bash.
    12 Per a execultar-lo:
    13 Per a execultar-lo:
    13 $ ./test.sh
    14 $ ./test.sh
    14 
    15 
    15 
    16 
    16 Els fitxers:
    17 Els fitxers:
    21    syslog_in_unix <usocket>  Crea i escolta el socket unix per missatges
    22    syslog_in_unix <usocket>  Crea i escolta el socket unix per missatges
    22    syslog_kernel             Executa els anteriors programes, i llegeix de tots
    23    syslog_kernel             Executa els anteriors programes, i llegeix de tots
    23                              alhora.
    24                              alhora.
    24    unix_writer <usocket>     Programa per escriure a un Unix socket
    25    unix_writer <usocket>     Programa per escriure a un Unix socket
    25 
    26 
       
    27 
       
    28 Configuració del programa:
       
    29 --------------------------------------
       
    30 La configuració la trobem al fitxer "syslog.conf". Aquests són els seus
       
    31 valors per defecte (a config.c):
       
    32 from_unix=unixlog
       
    33 from_npipe=disabled
       
    34 from_udp=disabled
       
    35 to_udp_host=localhost
       
    36 to_udp_port=1235
       
    37 tcp_manager=1234   (No s'utilitza encara!)
       
    38 log_file=file.log
       
    39 
       
    40 No hi poden haver espais; el format és <paràmetre>=<valor> per cada línia.
       
    41 Si el fitxer de configuració "syslog.conf" no defineix res d'un paràmetre,
       
    42 valdrà el valor per defecte.
       
    43 Si a un paràmetre li donem el valor "disabled", la part afectada no estarà
       
    44 activa.
       
    45 
    26 Notes:
    46 Notes:
    27 --------------------------------------
    47 --------------------------------------
    28 El programa està escrit en c99.
    48 El programa està escrit en c99.
    29 
    49 
    30 El programa no gestiona bé lectures de múltiples missatges per crida read().
    50 El programa no gestiona bé lectures de múltiples missatges per cada crida
    31 Això és perquè encara en prou feines hem implementat alguna cosa de la
    51 read(). Només pot llegir un missatge per crida.
       
    52 Això és perquè encara en prou feines he implementat alguna cosa de la
    32 rfc 3164.
    53 rfc 3164.
    33 
    54 
    34 Els syslog_in_* entenen el missatge "close", cosa que fa que morin. Si moren
    55 Els syslog_in_* entenen el missatge "close", cosa que fa que morin. Si moren
    35 tots els fills de syslog_kernel, el kernel també mor.
    56 tots els fills de syslog_kernel, el kernel també mor.
    36 
    57 
    37 El fitxer syslog_in_udp té una variable global que indica si es farà servir
    58 Al fitxer syslog_in_udp se li pot passar el paràmetre de port en negatiu,
    38 IPv6 o no en temps d'execució.
    59 cosa que vol dir que escoltarà també per IPv6 al port "-(port)" donat. Si es
       
    60 dóna en positiu, només escoltarà IPv4.
    39 
    61 
    40 El codi de llegir la "named pipe" intenta fer el possible amb locks i
    62 El codi de llegir la "named pipe" intenta fer el possible amb locks i
    41 reobertures de la pipe de manera que no es perdi mai la lectura de la
    63 reobertures de la pipe de manera que no es perdi mai la lectura de la
    42 named pipe donada.
    64 named pipe donada.
       
    65 
       
    66 Els syslog_in_* ignoren el senyal HUP. El syslog_in_unix capta SIGTERM i
       
    67 SIGINT, perquè a més de tancar els handles, també ha de tancar el unix socket.
       
    68 
       
    69 El syslog_kernel pot passar missatges a un servidor udp. També pot escriure
       
    70 els missatges rebuts a un fitxer de log.
       
    71 
       
    72 El syslog_kernel entén els senyals:
       
    73 - SIGHUP - rellegir i reaplicar el que digui el fitxer de configuració.
       
    74 - SIGTERM o SIGINT - matar els fills, i després morir ell.
       
    75   (Atenció - si apretem Control-C des d'un xterm, envia SIGINT al grup de
       
    76   processos del terminal; així, si hem executat el kernel, els fills
       
    77   rebran SIGINT igualment)
       
    78 
       
    79 No he implementat el SIGUSR1 per a buidar el caché de missatges rebuts a disc.
       
    80 
       
    81 El programa dóna informació de debug per stderr.
       
    82 
       
    83 El programa no és gaire "error-safe": si no es compleixen certes condicions,
       
    84 el programa simplement abortarà - a vegades amb assert(). De tota manera,
       
    85 tots els casos crítics crec que estan sota control.