1 #include "osrf_router.h"
2 #include "opensrf/osrfConfig.h"
3 #include "opensrf/utils.h"
4 #include "opensrf/logging.h"
7 osrfRouter* __osrfRouter = NULL;
9 void routerSignalHandler( int signal ) {
10 warning_handler("Received signal [%d], cleaning up...", signal );
12 osrfRouterFree(__osrfRouter);
16 static int __setupRouter( char* config, char* context );
19 int main( int argc, char* argv[] ) {
22 fatal_handler( "Usage: %s <path_to_config_file> <config_context>", argv[0] );
26 char* config = strdup( argv[1] );
27 char* context = strdup( argv[2] );
28 init_proc_title( argc, argv );
29 set_proc_title( "OpenSRF Router" );
31 return __setupRouter( config, context );
37 int __setupRouter( char* config, char* context ) {
39 fprintf(stderr, "Launching router with config %s and config context %s", config, context );
40 osrfConfig* cfg = osrfConfigInit( config, context );
41 osrfConfigSetDefaultConfig(cfg);
44 char* server = osrfConfigGetValue(NULL, "/transport/server");
45 char* port = osrfConfigGetValue(NULL, "/transport/port");
46 char* username = osrfConfigGetValue(NULL, "/transport/username");
47 char* password = osrfConfigGetValue(NULL, "/transport/password");
48 char* resource = osrfConfigGetValue(NULL, "/transport/resource");
50 /* set up the logger */
51 char* level = osrfConfigGetValue(NULL, "/loglevel");
52 char* log_file = osrfConfigGetValue(NULL, "/logfile");
55 if(level) llevel = atoi(level);
57 if(!log_init( llevel, log_file ))
58 fprintf(stderr, "Unable to init logging, going to stderr...\n" );
63 info_handler( "Router connecting as: server: %s port: %s "
64 "user: %s resource: %s", server, port, username, resource );
67 if(port) iport = atoi( port );
69 osrfStringArray* tclients = osrfNewStringArray(4);
70 osrfStringArray* tservers = osrfNewStringArray(4);
71 osrfConfigGetValueList(NULL, tservers, "/trusted_domains/server" );
72 osrfConfigGetValueList(NULL, tclients, "/trusted_domains/client" );
75 for( i = 0; i != tservers->size; i++ )
76 info_handler( "Router adding trusted server: %s", osrfStringArrayGetString( tservers, i ) );
78 for( i = 0; i != tclients->size; i++ )
79 info_handler( "Router adding trusted client: %s", osrfStringArrayGetString( tclients, i ) );
81 if( tclients->size == 0 || tservers->size == 0 )
82 fatal_handler("We need trusted servers and trusted client to run the router...");
84 osrfRouter* router = osrfNewRouter( server,
85 username, resource, password, iport, tclients, tservers );
87 signal(SIGHUP,routerSignalHandler);
88 signal(SIGINT,routerSignalHandler);
89 signal(SIGTERM,routerSignalHandler);
91 if( (osrfRouterConnect(router)) != 0 ) {
92 fprintf(stderr, "!!!! Unable to connect router to jabber server %s... exiting", server );
96 free(server); free(port);
97 free(username); free(password);
99 __osrfRouter = router;
101 osrfRouterRun( router );