gutted chopchop
[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/logging.h"
5
6
7 int main( int argc, char* argv[] ) {
8
9         if( argc < 3 ) {
10                 fprintf( stderr, "Usage: %s <config_file> <config_context>\n", argv[0] );
11                 exit(0);
12         }
13
14         osrfConfig* cfg = osrfConfigInit( argv[1], argv[2] );
15
16         init_proc_title( argc, argv );
17         set_proc_title( "ChopChop" );
18
19         char* domain            = osrfConfigGetValue(cfg, "/domain");
20         char* secret            = osrfConfigGetValue(cfg, "/secret");
21         char* sport                     = osrfConfigGetValue(cfg, "/port");
22         char* s2sport           = osrfConfigGetValue(cfg, "/s2sport");
23         char* listenaddr        = osrfConfigGetValue(cfg, "/listen_address");
24         char* llevel            = osrfConfigGetValue(cfg, "/loglevel");
25         char* lfile                     = osrfConfigGetValue(cfg, "/logfile");
26
27         if(!(domain && secret && sport && listenaddr && llevel && lfile && s2sport)) {
28                 fprintf(stderr, "Configuration error for ChopChop - missing key ingredient\n");
29                 return -1;
30         }
31
32         int port = atoi(sport);
33         int s2port = atoi(s2sport);
34         int level = atoi(llevel);
35         log_init(level, lfile);
36
37         fprintf(stderr, "Attempting to launch ChopChop with:\n"
38                         "domain: %s\nport: %s\nlisten address: %s\nlog level: %s\nlog file: %s\n",
39                         domain, sport, listenaddr, llevel, lfile );
40
41         osrfChatServer* server = osrfNewChatServer(domain, secret, s2port);
42
43         if( osrfChatServerConnect( server, port, s2port, listenaddr ) != 0 ) 
44                 return fatal_handler("ChopChop unable to bind to port %d on %s", port, listenaddr);
45
46         daemonize();
47         osrfChatServerWait( server );
48
49         osrfChatServerFree( server );
50         log_free();
51         osrfConfigFree(cfg);
52
53         return 0;
54
55 }
56