patching up some more logging stuff
[OpenSRF.git] / src / jserver / osrf_chat_main.c
1 #include "osrf_chat.h"
2 #include "opensrf/osrfConfig.h"
3 #include <stdio.h>
4 #include "opensrf/log.h"
5 #include <syslog.h>
6
7
8 int main( int argc, char* argv[] ) {
9
10         if( argc < 3 ) {
11                 fprintf( stderr, "Usage: %s <config_file> <config_context>\n", argv[0] );
12                 exit(0);
13         }
14
15         osrfConfig* cfg = osrfConfigInit( argv[1], argv[2] );
16
17         init_proc_title( argc, argv );
18         set_proc_title( "ChopChop" );
19
20         char* domain            = osrfConfigGetValue(cfg, "/domain");
21         char* secret            = osrfConfigGetValue(cfg, "/secret");
22         char* sport                     = osrfConfigGetValue(cfg, "/port");
23         char* s2sport           = osrfConfigGetValue(cfg, "/s2sport");
24         char* listenaddr        = osrfConfigGetValue(cfg, "/listen_address");
25         char* llevel            = osrfConfigGetValue(cfg, "/loglevel");
26         char* lfile                     = osrfConfigGetValue(cfg, "/logfile");
27         char* facility          = osrfConfigGetValue(cfg, "/syslog");
28
29         if(!(domain && secret && sport && listenaddr && llevel && lfile && s2sport)) {
30                 fprintf(stderr, "Configuration error for ChopChop - missing key ingredient\n");
31                 return -1;
32         }
33
34         int port = atoi(sport);
35         int s2port = atoi(s2sport);
36         int level = atoi(llevel);
37
38         if(!lfile) { fprintf(stderr, "Log file needed\n"); return -1; }
39
40         if(!strcmp(lfile, "syslog")) {
41                 osrfLogInit( OSRF_LOG_TYPE_SYSLOG, "chochop", level );
42                 osrfLogSetSyslogFacility(osrfLogFacilityToInt(facility));
43
44         } else {
45                 osrfLogInit( OSRF_LOG_TYPE_FILE, "chopchop", level );
46                 osrfLogSetFile( lfile );
47         }
48
49         fprintf(stderr, "Attempting to launch ChopChop with:\n"
50                         "domain: %s\nport: %s\nlisten address: %s\nlog level: %s\nlog file: %s\n",
51                         domain, sport, listenaddr, llevel, lfile );
52
53         osrfChatServer* server = osrfNewChatServer(domain, secret, s2port);
54
55         if( osrfChatServerConnect( server, port, s2port, listenaddr ) != 0 ) {
56                 osrfLogError("ChopChop unable to bind to port %d on %s", port, listenaddr);
57                 return -1;
58         }
59
60         daemonize();
61         osrfChatServerWait( server );
62
63         osrfChatServerFree( server );
64         osrfConfigFree(cfg);
65
66         return 0;
67
68 }
69