00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <stdio.h>
00021
00022 #include <ListenSocket.h>
00023 #include "SMTPSocket.h"
00024 #include "NukeHandler.h"
00025 #include "../Minion/config.h"
00026 #include <signal.h>
00027 #include <Utility.h>
00028
00029 #define DEB(x)
00030
00031
00032 static int m_quit = 0;
00033
00034
00035 #ifndef _WIN32
00036 void sigint(int s)
00037 {
00038 DEB( printf("sigint\n");)
00039 m_quit++;
00040 }
00041
00042 void sighup(int s)
00043 {
00044 DEB( printf("sighup\n");)
00045 m_quit++;
00046 }
00047
00048 void sigusr1(int s)
00049 {
00050 }
00051
00052 void sigusr2(int s)
00053 {
00054 }
00055
00056 void sigpipe(int s)
00057 {
00058 }
00059
00060 void siginit(void)
00061 {
00062 signal(SIGINT, (__sighandler_t)sigint);
00063 signal(SIGHUP, (__sighandler_t)sighup);
00064 signal(SIGUSR1, (__sighandler_t)sigusr1);
00065 signal(SIGUSR2, (__sighandler_t)sigusr2);
00066 signal(SIGPIPE, (__sighandler_t)sigpipe);
00067 }
00068 #endif
00069
00070
00071 void run()
00072 {
00073 size_t sz = 0;
00074 NukeHandler h;
00075 ListenSocket<SMTPSocket> l(h);
00076
00077 if (l.Bind(25, 20))
00078 {
00079 exit(-1);
00080 }
00081 h.Add(&l);
00082 while (!m_quit)
00083 {
00084 h.Select(1, 0);
00085 if (h.GetCount() != sz)
00086 {
00087 sz = h.GetCount();
00088 h.ViewSockets();
00089 }
00090 }
00091 }
00092
00093
00094 int main(int argc,char *argv[])
00095 {
00096 siginit();
00097 parse_config(argc,argv,"nuke.cfg");
00098 run();
00099 }
00100
00101