mistserver/src/output/mist_out.cpp

57 lines
1.5 KiB
C++

#include OUTPUTTYPE
#include <mist/config.h>
#include <mist/socket.h>
#include <mist/defines.h>
/*LTS-START*/
#ifdef GEOIP
#define GEOIPV4 "GeoIP.dat"
#define GEOIPV6 "GeoIPv6.dat"
#endif
/*LTS-END*/
int spawnForked(Socket::Connection & S){
mistOut tmp(S);
return tmp.run();
}
int main(int argc, char * argv[]) {
Util::Config conf(argv[0]);
mistOut::init(&conf);
/*LTS-START*/
#ifdef GEOIP
mistOut::geoIP4 = GeoIP_open("/usr/share/GeoIP/" GEOIPV4, GEOIP_STANDARD | GEOIP_CHECK_CACHE);
if (!mistOut::geoIP4){
mistOut::geoIP4 = GeoIP_open(GEOIPV4, GEOIP_STANDARD | GEOIP_CHECK_CACHE);
}
mistOut::geoIP6 = GeoIP_open("/usr/share/GeoIP/" GEOIPV6, GEOIP_STANDARD | GEOIP_CHECK_CACHE);
if (!mistOut::geoIP6){
mistOut::geoIP6 = GeoIP_open(GEOIPV6, GEOIP_STANDARD | GEOIP_CHECK_CACHE);
}
if (!mistOut::geoIP4 || !mistOut::geoIP6){
DEBUG_MSG(DLVL_FAIL, "Could not load all GeoIP databases. %s: %s, %s: %s", GEOIPV4, mistOut::geoIP4?"success":"fail", GEOIPV6, mistOut::geoIP6?"success":"fail");
}
#endif
/*LTS-END*/
if (conf.parseArgs(argc, argv)) {
if (conf.getBool("json")) {
std::cout << mistOut::capa.toString() << std::endl;
return -1;
}
conf.activate();
if (mistOut::listenMode()){
conf.serveForkedSocket(spawnForked);
}else{
Socket::Connection S(fileno(stdout),fileno(stdin) );
mistOut tmp(S);
return tmp.run();
}
}
/*LTS-START*/
#ifdef GEOIP
GeoIP_delete(mistOut::geoIP4);
GeoIP_delete(mistOut::geoIP6);
#endif
/*LTS-END*/
return 0;
}