Changeset 343
- Timestamp:
- 02/20/06 18:11:57 (3 years ago)
- Files:
-
- nepenthes/trunk/LICENSE (added)
- nepenthes/trunk/Makefile.in (deleted)
- nepenthes/trunk/aclocal.m4 (deleted)
- nepenthes/trunk/conf/nepenthes.conf.dist (modified) (1 diff)
- nepenthes/trunk/config.guess (deleted)
- nepenthes/trunk/config.h.in (deleted)
- nepenthes/trunk/config.sub (deleted)
- nepenthes/trunk/configure (deleted)
- nepenthes/trunk/depcomp (deleted)
- nepenthes/trunk/install-sh (deleted)
- nepenthes/trunk/ltmain.sh (deleted)
- nepenthes/trunk/missing (deleted)
- nepenthes/trunk/modules/Makefile.in (deleted)
- nepenthes/trunk/modules/dnsresolve-adns/Makefile.in (deleted)
- nepenthes/trunk/modules/download-creceive/Makefile.in (deleted)
- nepenthes/trunk/modules/download-csend/Makefile.in (deleted)
- nepenthes/trunk/modules/download-curl/Makefile.in (deleted)
- nepenthes/trunk/modules/download-ftp/CTRLDialogue.cpp (modified) (2 diffs)
- nepenthes/trunk/modules/download-ftp/Makefile.am (modified) (1 diff)
- nepenthes/trunk/modules/download-ftp/Makefile.in (deleted)
- nepenthes/trunk/modules/download-ftp/download-ftp.conf.dist (added)
- nepenthes/trunk/modules/download-ftp/download-ftp.cpp (modified) (6 diffs)
- nepenthes/trunk/modules/download-ftp/download-ftp.hpp (modified) (1 diff)
- nepenthes/trunk/modules/download-http/Makefile.in (deleted)
- nepenthes/trunk/modules/download-http/download-http.cpp (modified) (1 diff)
- nepenthes/trunk/modules/download-link/Makefile.in (deleted)
- nepenthes/trunk/modules/download-nepenthes/Makefile.in (deleted)
- nepenthes/trunk/modules/download-rcp/Makefile.in (deleted)
- nepenthes/trunk/modules/download-tftp/Makefile.in (deleted)
- nepenthes/trunk/modules/geolocation-geoip/Makefile.in (deleted)
- nepenthes/trunk/modules/geolocation-hostip/Makefile.in (deleted)
- nepenthes/trunk/modules/geolocation-ip2location/Makefile.in (deleted)
- nepenthes/trunk/modules/log-download/Makefile.in (deleted)
- nepenthes/trunk/modules/log-irc/Makefile.in (deleted)
- nepenthes/trunk/modules/log-prelude (added)
- nepenthes/trunk/modules/log-prelude/log-prelude.cpp (added)
- nepenthes/trunk/modules/log-prelude/log-prelude.hpp (added)
- nepenthes/trunk/modules/log-surfnet/Makefile.in (deleted)
- nepenthes/trunk/modules/module-bridge (added)
- nepenthes/trunk/modules/module-bridge/BridgeDialogueAccept.cpp (added)
- nepenthes/trunk/modules/module-bridge/BridgeDialogueAccept.hpp (added)
- nepenthes/trunk/modules/module-bridge/BridgeDialogueConnect.cpp (added)
- nepenthes/trunk/modules/module-bridge/BridgeDialogueConnect.hpp (added)
- nepenthes/trunk/modules/module-bridge/Makefile.am (added)
- nepenthes/trunk/modules/module-bridge/module-bridge.conf.dist (added)
- nepenthes/trunk/modules/module-bridge/module-bridge.cpp (added)
- nepenthes/trunk/modules/module-bridge/module-bridge.hpp (added)
- nepenthes/trunk/modules/module-portwatch/Makefile.in (deleted)
- nepenthes/trunk/modules/shellcode-generic/Makefile.in (deleted)
- nepenthes/trunk/modules/shellemu-winnt/Makefile.in (deleted)
- nepenthes/trunk/modules/submit-file/Makefile.in (deleted)
- nepenthes/trunk/modules/submit-gotek (added)
- nepenthes/trunk/modules/submit-gotek/Makefile.am (added)
- nepenthes/trunk/modules/submit-gotek/gotekCTRLDialougue.cpp (added)
- nepenthes/trunk/modules/submit-gotek/gotekCTRLDialougue.hpp (added)
- nepenthes/trunk/modules/submit-gotek/gotekDATADialougue.cpp (added)
- nepenthes/trunk/modules/submit-gotek/gotekDATADialougue.hpp (added)
- nepenthes/trunk/modules/submit-gotek/submit-gotek.conf.dist (added)
- nepenthes/trunk/modules/submit-gotek/submit-gotek.cpp (added)
- nepenthes/trunk/modules/submit-gotek/submit-gotek.hpp (added)
- nepenthes/trunk/modules/submit-nepenthes/Makefile.in (deleted)
- nepenthes/trunk/modules/submit-norman/Makefile.in (deleted)
- nepenthes/trunk/modules/submit-xmlrpc/Makefile.in (deleted)
- nepenthes/trunk/modules/upload-http/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-asn1/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-bagle/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-dameware/Makefile.develop (added)
- nepenthes/trunk/modules/vuln-dameware/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-dcom/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-iis/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-kuang2/Kuang2Dialogue.cpp (modified) (1 diff)
- nepenthes/trunk/modules/vuln-kuang2/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-lsass/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-msdtc/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-msmq/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-mssql/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-mydoom/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-netbiosname/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-netdde/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-optix/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-pnp/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-sasserftpd/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-ssh/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-sub7/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-upnp/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-veritas/Makefile.in (deleted)
- nepenthes/trunk/modules/vuln-wins/Makefile.in (deleted)
- nepenthes/trunk/modules/x-1/Makefile.in (deleted)
- nepenthes/trunk/modules/x-2/Makefile.in (deleted)
- nepenthes/trunk/modules/x-3/Makefile.in (deleted)
- nepenthes/trunk/modules/x-4/Makefile.in (deleted)
- nepenthes/trunk/modules/x-5/Makefile.in (deleted)
- nepenthes/trunk/modules/x-6/Makefile.in (deleted)
- nepenthes/trunk/modules/x-6/x-6.cpp (modified) (2 diffs)
- nepenthes/trunk/modules/x-7/Makefile.in (deleted)
- nepenthes/trunk/modules/x-8/Makefile.in (deleted)
- nepenthes/trunk/nepenthes-core/Makefile.in (deleted)
- nepenthes/trunk/nepenthes-core/include/Makefile.in (deleted)
- nepenthes/trunk/nepenthes-core/src/Makefile.in (deleted)
- nepenthes/trunk/nepenthes-core/src/Nepenthes.cpp (modified) (6 diffs)
- nepenthes/trunk/nepenthes.doxy (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
nepenthes/trunk/conf/nepenthes.conf.dist
r341 r343 24 24 "downloadcreceive.so", "", "" 25 25 // "downloadcurl.so", "download-curl.conf", "" 26 "downloadftp.so", " ",""26 "downloadftp.so", "download-ftp.conf", "" 27 27 "downloadhttp.so", "", "" 28 28 "downloadlink.so", "download-link.conf", "" nepenthes/trunk/modules/download-ftp/CTRLDialogue.cpp
r341 r343 390 390 logDebug("%s","System ... \n"); 391 391 392 // get local ip 393 int32_t sock = m_Socket->getSocket(); 394 395 // get name 396 socklen_t len = sizeof(struct sockaddr_in); 397 sockaddr_in addr; 398 399 getsockname(sock, (struct sockaddr *)&addr,&len); 400 401 logDebug("local ip is %s \n",inet_ntoa(addr.sin_addr)); 402 403 uint32_t ip = *(uint32_t *)&addr.sin_addr; 392 uint32_t ip; 393 uint16_t minport; 394 uint16_t maxport; 395 396 if ( g_FTPDownloadHandler->getRetrAddress() == 0 ) 397 { // no NAT settings 398 // get local ip 399 int32_t sock = m_Socket->getSocket(); 400 401 // get name 402 socklen_t len = sizeof(struct sockaddr_in); 403 sockaddr_in addr; 404 405 getsockname(sock, (struct sockaddr *)&addr,&len); 406 407 logDebug("local ip is %s \n",inet_ntoa(addr.sin_addr)); 408 409 ip = *(uint32_t *)&addr.sin_addr; 410 411 minport = rand()%40000+1024; 412 maxport = minport + 1000; 413 } else 414 { // nat settings, use external ip 415 ip = g_FTPDownloadHandler->getRetrAddress(); 416 minport = g_FTPDownloadHandler->getMinPort(); 417 maxport = g_FTPDownloadHandler->getMaxPort(); 418 419 } 420 404 421 uint16_t port = 0; 405 422 406 Socket *socket; 407 if ( (socket = g_Nepenthes->getSocketMgr()->bindTCPSocket(0,0,60,30)) == NULL ) 408 { 409 logCrit("Could not bind port %u \n",port); 423 Socket *socket=NULL; 424 425 426 for (uint16_t i =minport; i<maxport;i++) 427 { 428 if ( (socket = g_Nepenthes->getSocketMgr()->bindTCPSocket(0,i,60,30)) != NULL ) 429 { 430 if ( socket->getDialogst()->size() == 0 && socket->getFactories()->size() == 0 ) 431 { 432 logInfo("Found unused bind socket on port %i\n",i); 433 break; 434 } 435 } 436 437 } 438 439 if ( socket == NULL) 440 { 441 logCrit("Could not bind port in range %i -> %i \n",minport, maxport); 442 return; 410 443 } 411 444 … … 416 449 417 450 char *nmsg; 451 452 418 453 asprintf(&nmsg,"PORT %d,%d,%d,%d,%d,%d\r\n", 419 454 (int32_t)ip & 0xff, nepenthes/trunk/modules/download-ftp/Makefile.am
r321 r343 11 11 pkglib_LTLIBRARIES = downloadftp.la 12 12 13 downloadftp_la_SOURCES = CTRLDialogue.hpp FILEDialogue.hpp FTPContext.hpp download-ftp.hpp CTRLDialogue.cpp FTPContext.cpp FILEDialogue.cpp download-ftp.cpp 13 downloadftp_la_SOURCES = CTRLDialogue.hpp CTRLDialogue.cpp 14 downloadftp_la_SOURCES += FILEDialogue.hpp FILEDialogue.cpp 15 downloadftp_la_SOURCES += FTPContext.hpp FTPContext.cpp 16 downloadftp_la_SOURCES += download-ftp.hpp download-ftp.cpp 17 downloadftp_la_SOURCES += download-ftp.conf.dist 14 18 15 19 downloadftp_la_LDFLAGS = -module -no-undefined -avoid-version nepenthes/trunk/modules/download-ftp/download-ftp.cpp
r332 r343 49 49 #include "DNSManager.hpp" 50 50 #include "DNSResult.hpp" 51 52 #include "Config.hpp" 51 53 52 54 #ifdef STDTAGS … … 96 98 g_Nepenthes = nepenthes; 97 99 g_FTPDownloadHandler = this; 100 m_DNSCallbackName = "download-ftp dns callback"; 101 102 m_DynDNS = ""; 103 104 m_RetrAddress = 0; 98 105 } 99 106 … … 114 121 bool FTPDownloadHandler::Init() 115 122 { 123 if ( m_Config == NULL ) 124 { 125 logCrit("%s","I need a config\n"); 126 return false; 127 } 128 129 StringList sList; 130 try 131 { 132 if (m_Config->getValInt("download-ftp.use_nat") == 1) 133 { 134 sList = *m_Config->getValStringList("download-ftp.nat_settings.forwarded_ports"); 135 if ( sList.size() == 2 ) 136 { 137 m_MinPort = atoi(sList[0]); 138 m_MaxPort = atoi(sList[1]); 139 } 140 141 m_DynDNS = m_Config->getValString("download-ftp.nat_settings.dyndns"); 142 143 logInfo("download-ftp nat settings; uses %s for external ip and ports %i->%i for transferr\n", 144 m_DynDNS.c_str(), 145 m_MinPort, 146 m_MaxPort); 147 } 148 } catch ( ... ) 149 { 150 logCrit("%s","Error setting needed vars, check your config\n"); 151 return false; 152 } 153 116 154 m_ModuleManager = m_Nepenthes->getModuleMgr(); 117 155 REG_DOWNLOAD_HANDLER(this,"ftp"); … … 164 202 logPF(); 165 203 166 uint32_t host = inet_addr(down->getDownloadUrl()->getHost().c_str()); 167 168 if ((int32_t)host == -1) 169 { 170 logInfo("url %s has a dns as hostname, we have to resolve it \n", down->getUrl().c_str()); 171 g_Nepenthes->getDNSMgr()->addDNS(this,(char *)down->getDownloadUrl()->getHost().c_str(), down); 172 return true; 173 }else 174 { 175 logInfo("url has %s ip, we will download it now\n",down->getUrl().c_str()); 204 if ( m_DynDNS == "" ) 205 { 206 uint32_t host = inet_addr(down->getDownloadUrl()->getHost().c_str()); 207 208 if ( (int32_t)host == -1 ) 209 { 210 logInfo("url %s has a dns as hostname, we have to resolve it \n", down->getUrl().c_str()); 211 g_Nepenthes->getDNSMgr()->addDNS(this,(char *)down->getDownloadUrl()->getHost().c_str(), down); 212 return true; 213 } else 214 { 215 logInfo("url has %s ip, we will download it now\n",down->getUrl().c_str()); 216 Socket *socket = g_Nepenthes->getSocketMgr()->connectTCPHost(down->getLocalHost(),host,down->getDownloadUrl()->getPort(),30); 217 CTRLDialogue *dia = new CTRLDialogue(socket,down); 218 socket->addDialogue(dia); 219 FTPContext *context = new FTPContext(down,dia); 220 dia->setContext(context); 221 m_Contexts.push_back(context); 222 } 223 } else 224 { 225 logSpam("Resolving DynDNS %s for active ftp\n",m_DynDNS.c_str()); 226 g_Nepenthes->getDNSMgr()->addDNS(this,(char *)m_DynDNS.c_str(),down); 227 } 228 return true; 229 } 230 231 232 233 bool FTPDownloadHandler::dnsResolved(DNSResult *result) 234 { 235 logInfo("url %s resolved \n",result->getDNS().c_str()); 236 uint32_t host = result->getIP4List().front(); 237 Download *down = (Download *) result->getObject(); 238 if ( result->getDNS() != m_DynDNS ) 239 { // resolved domain for a download 176 240 Socket *socket = g_Nepenthes->getSocketMgr()->connectTCPHost(down->getLocalHost(),host,down->getDownloadUrl()->getPort(),30); 177 241 CTRLDialogue *dia = new CTRLDialogue(socket,down); … … 180 244 dia->setContext(context); 181 245 m_Contexts.push_back(context); 182 } 183 184 return true; 185 } 186 187 188 189 bool FTPDownloadHandler::dnsResolved(DNSResult *result) 190 { 191 logInfo("url %s resolved \n",result->getDNS().c_str()); 192 uint32_t host = result->getIP4List().front(); 246 }else 247 { // resolved dyndns 248 m_RetrAddress = host; 249 // resolve domain for download 250 uint32_t host = inet_addr(down->getDownloadUrl()->getHost().c_str()); 251 if ( (int32_t)host == -1 ) 252 { 253 logInfo("url %s has a dns as hostname, we have to resolve it \n", down->getUrl().c_str()); 254 g_Nepenthes->getDNSMgr()->addDNS(this,(char *)down->getDownloadUrl()->getHost().c_str(), down); 255 return true; 256 } else 257 { 258 logInfo("url has %s ip, we will download it now\n",down->getUrl().c_str()); 259 Socket *socket = g_Nepenthes->getSocketMgr()->connectTCPHost(down->getLocalHost(),host,down->getDownloadUrl()->getPort(),30); 260 CTRLDialogue *dia = new CTRLDialogue(socket,down); 261 socket->addDialogue(dia); 262 FTPContext *context = new FTPContext(down,dia); 263 dia->setContext(context); 264 m_Contexts.push_back(context); 265 } 266 } 267 return true; 268 } 269 270 bool FTPDownloadHandler::dnsFailure(DNSResult *result) 271 { 193 272 Download *down = (Download *) result->getObject(); 194 Socket *socket = g_Nepenthes->getSocketMgr()->connectTCPHost(down->getLocalHost(),host,down->getDownloadUrl()->getPort(),30); 195 CTRLDialogue *dia = new CTRLDialogue(socket,down); 196 socket->addDialogue(dia); 197 FTPContext *context = new FTPContext(down,dia); 198 dia->setContext(context); 199 m_Contexts.push_back(context); 200 201 return true; 202 } 203 204 bool FTPDownloadHandler::dnsFailure(DNSResult *result) 205 { 206 logWarn("url %s unresolved \n",result->getDNS().c_str()); 273 logWarn("url %s unresolved, dropping download %s \n",result->getDNS().c_str(),down->getUrl().c_str()); 274 275 276 delete down; 277 207 278 return true; 208 279 } … … 224 295 225 296 return false; 297 } 298 299 uint16_t FTPDownloadHandler::getMinPort() 300 { 301 return m_MinPort; 302 } 303 304 uint16_t FTPDownloadHandler::getMaxPort() 305 { 306 return m_MaxPort; 307 } 308 309 uint32_t FTPDownloadHandler::getRetrAddress() 310 { 311 return m_RetrAddress; 226 312 } 227 313 nepenthes/trunk/modules/download-ftp/download-ftp.hpp
r332 r343 64 64 65 65 bool removeContext(FTPContext *context); 66 67 uint16_t getMinPort(); 68 uint16_t getMaxPort(); 69 uint32_t getRetrAddress(); 66 70 protected: 67 71 list <FTPContext *> m_Contexts; 72 73 // we need those vars for NAT active ftp 74 string m_DynDNS; 75 uint16_t m_MinPort; 76 uint16_t m_MaxPort; 77 uint32_t m_RetrAddress; 68 78 }; 69 79 nepenthes/trunk/modules/download-http/download-http.cpp
r332 r343 143 143 bool HTTPDownloadHandler::dnsFailure(DNSResult *result) 144 144 { 145 logWarn("url %s unresolved \n",result->getDNS().c_str()); 145 logWarn("url %s unresolved, dropping download\n",result->getDNS().c_str()); 146 Download *down = (Download *) result->getObject(); 147 if (down != NULL) 148 { 149 delete down; 150 } 146 151 return true; 147 152 } nepenthes/trunk/modules/vuln-kuang2/Kuang2Dialogue.cpp
r332 r343 131 131 logInfo("Kuang2 File upload requested %s %i\n",m_FileName.c_str(),m_FileSize); 132 132 m_State = KUANG2_FILETRANSFERR; 133 m_Download = new Download(msg->get RemoteHost(),"kuang2://foo/bar",msg->getRemoteHost(),"some triggerline");133 m_Download = new Download(msg->getLocalHost(),"kuang2://foo/bar",msg->getRemoteHost(),"some triggerline"); 134 134 m_Buffer->clear(); 135 135 nepenthes/trunk/modules/x-6/x-6.cpp
r341 r343 168 168 ConsumeLevel X6Dialogue::incomingData(Message *msg) 169 169 { 170 char *message = strdup(msg->getMsg()); 170 char *freemessage = strdup(msg->getMsg()); 171 char *message = freemessage; 172 173 if (message == NULL) 174 { 175 return CL_ASSIGN; 176 } 171 177 172 178 for(uint32_t i=0;i < strlen(message);i++) … … 210 216 211 217 } 212 free(message); 218 219 if (freemessage != NULL) 220 { 221 free(freemessage); 222 } 213 223 214 224 // msg->getResponder()->doRespond("deine mutter\n",strlen("deine mutter\n")); nepenthes/trunk/nepenthes-core/src/Nepenthes.cpp
r341 r343 42 42 #include <grp.h> 43 43 #include <dirent.h> 44 #include <sys/utsname.h> 44 45 45 46 #include "Nepenthes.hpp" … … 1331 1332 { 1332 1333 case SIGHUP: 1333 printf("Got SIGHUP\nRereading Config File!\n");1334 logCrit("Got SIGHUP\nRereading Config File!\n"); 1334 1335 g_Nepenthes->reloadConfig(); 1335 1336 break; 1336 1337 1337 1338 case SIGINT: 1338 printf("Got SIGINT\nStopping NOW!\n");1339 logCrit("Got SIGINT\nStopping NOW!\n"); 1339 1340 g_Nepenthes->stop(); 1340 1341 break; 1341 1342 1342 1343 case SIGABRT: 1343 printf("%s\n", "Unhandled Exception");1344 logCrit("%s\n", "Unhandled Exception"); 1344 1345 exit(-1); 1345 1346 break; 1346 1347 1347 1348 case SIGSEGV: 1348 printf("%s\n", "Segmentation Fault");1349 logCrit("%s\n", "Segmentation Fault"); 1349 1350 exit(-1); 1350 1351 break; 1351 1352 1352 #ifndef HAVE_MSG_NOSIGNAL1353 // this wont work1354 // at least it did not work for me when i wanted to ignore SIGWINCH this way1355 // -- common1356 case SIGPIPE:1357 printf("Ignoring %i\n", iSignal);1358 signal(iSignal,SIG_IGN);1359 break;1360 #endif1361 1353 default: 1362 printf("Exit 'cause of %i\n", iSignal);1354 logCrit("Exit 'cause of %i\n", iSignal); 1363 1355 g_Nepenthes->stop(); 1364 1356 } … … 1399 1391 // signal(SIGKILL, SignalHandler); // 9 Term Kill signal 1400 1392 signal(SIGSEGV, SignalHandler); // 11 Core Invalid memory reference 1393 1394 /* I hate breaking this well formatted list, 1395 * but some systems lack 1396 * MSG_NOSIGNAL as send() option and 1397 * SO_NOSIGPIPE as setsockopt() feature 1398 * So we would get sigpipe when sending data on a closed connection ... 1399 * it sucks, but we have to ignore sigpipe on such systems (f.e. OpenBSD 3.8) 1400 */ 1401 #if !defined(HAVE_SO_NOSIGPIPE) && !defined(HAVE_MSG_NOSIGNAL) 1402 signal(SIGPIPE, SIG_IGN); // 13 Term Broken pipe: write to pipe with no readers 1403 #else 1401 1404 signal(SIGPIPE, SignalHandler); // 13 Term Broken pipe: write to pipe with no readers 1405 #endif 1406 // 1402 1407 signal(SIGALRM, SignalHandler); // 14 Term Timer signal from alarm(2) 1403 1408 signal(SIGTERM, SignalHandler); // 15 Term Termination signal … … 1416 1421 1417 1422 signal(SIGBUS, SignalHandler); // 10,7,10 Core Bus error (bad memory access) 1423 1418 1424 #ifdef HAVE_SIGPOLL 1419 1425 signal(SIGPOLL, SignalHandler); // Term Pollable event (Sys V). Synonym of SIGIO … … 1566 1572 } 1567 1573 1568 #ifdef __GNUG__ 1574 1575 #if defined(__GNUG__) 1569 1576 #define MY_COMPILER "g++" 1570 1577 /* 1571 #if ( __GNUC__ == 4 && __GNUC_MINOR__ == 0 ) // g++ 4 detection1572 #error " g++ 4 has bugs, dont use g++4 "1573 #error " nepenthes would compile using g++4, "1574 #error " but the async dns would fail as there is a bug somewhere outside nepenthes"1578 #if ( __GNUC__ == 4 && __GNUC_MINOR__ == 0 && __GNUC_PATCHLEVEL__ <= 2 ) // g++ 4 detection 1579 #error "MAKE SURE TO READ THIS" 1580 #error "g++ 4 has bugs, dont use it" 1581 #error "nepenthes would compile using g++4, but it will segfault while running" 1575 1582 #error "refer to http://nepenthes.sourceforge.net/documentation:readme:faq:gcc_4 for more information" 1583 #error "if you got no other compiler feel free to remove this section by commenting it out" 1584 #error "but don't complain when it does not work" 1585 #error "you can find it in Nepenthes.cpp around line 1569, just search for 'g++ 4 detection'" 1576 1586 #endif 1577 1587 */ 1588 #elif defined(__CYGWIN__) 1589 #define MY_COMPILER "cygwin" 1590 #else 1591 #define MY_COMPILER "unknown Compiler" 1592 #endif 1593 1594 1595 #if defined(__FreeBSD__) 1596 # define MY_OS "FreeBSD" 1597 #elif defined(linux) || defined (__linux) 1598 # define MY_OS "Linux" 1599 #elif defined (__MACOSX__) || defined (__APPLE__) 1600 # define MY_OS "Mac OS X" 1601 #elif defined(__NetBSD__) 1602 # define MY_OS "NetBSD" 1603 #elif defined(__OpenBSD__) 1604 # define MY_OS "OpenBSD" 1605 #elif defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) 1606 # define MY_OS "Windows" 1607 #elif defined(CYGWIN) 1608 # define MY_OS "Cygwin\Windows" 1578 1609 #else 1579 #define MY_COMPILER "unknown Compiler" 1580 #endif 1581 1610 # define MY_OS "Unknown OS" 1611 #endif 1612 1613 1614 #if defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA) 1615 # define MY_ARCH "Alpha" 1616 #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_X86_) || defined(__THW_INTEL) 1617 # define MY_ARCH "x86" 1618 #elif defined(__x86_64__) || defined(__amd64__) 1619 # define MY_ARCH "x86_64" 1620 #elif defined(__ia64__) || defined(_IA64) || defined(__IA64__) || defined(_M_IA64) 1621 # define MY_ARCH "Intel Architecture-64" 1622 #elif defined(__mips__) || defined(__mips) || defined(__MIPS__) 1623 # define MY_ARCH "MIPS" 1624 #elif defined(__hppa__) || defined(__hppa) 1625 # define MY_ARCH "PA RISC" 1626 #elif defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__) || defined(__ppc__) || defined(_M_PPC) || defined(__PPC) || defined(__PPC__) 1627 # define MY_ARCH "PowerPC" 1628 #elif defined(__THW_RS6000) || defined(_IBMR2) || defined(_POWER) || defined(_ARCH_PWR) || defined(_ARCH_PWR2) 1629 # define MY_ARCH "RS/6000" 1630 #elif defined(__sparc__) || defined(sparc) || defined(__sparc) 1631 # define MY_ARCH "SPARC" 1632 #else 1633 # define MY_ARCH "Unknown Architecture" 1634 #endif 1582 1635 1583 1636 void show_loghelp() … … 1599 1652 void show_version() 1600 1653 { 1654 struct utsname sysinfo; 1655 int i = uname(&sysinfo); 1656 1601 1657 printf("\n"); 1602 1658 printf("Nepenthes Version %s \n",VERSION); 1603 printf("Compiled on %s %s with %s %s \n",__DATE__, __TIME__,MY_COMPILER,__VERSION__); 1659 printf("Compiled on %s/%s at %s %s with %s %s \n",MY_OS,MY_ARCH,__DATE__, __TIME__,MY_COMPILER,__VERSION__); 1660 1661 if (i == 0) 1662 { 1663 printf("Started on %s running %s/%s release %s\n", 1664 sysinfo.nodename, 1665 sysinfo.sysname, 1666 sysinfo.machine, 1667 sysinfo.release 1668 ); 1669 } 1670 1604 1671 printf("\n"); 1605 1672 }
