]> git.evergreen-ils.org Git - Evergreen.git/blob - OpenSRF/src/libstack/osrf_system.c
def7433ef1e6f31d3ca8511d26dc8265a9713eb9
[Evergreen.git] / OpenSRF / src / libstack / osrf_system.c
1 #include "osrf_system.h"
2
3 transport_client* global_client;
4
5 transport_client* osrf_system_get_transport_client() {
6         return global_client;
7 }
8
9 int osrf_system_bootstrap_client( char* config_file ) {
10
11         if( config_file == NULL )
12                 fatal_handler("No Config File Specified\n" );
13
14         config_reader_init( "opensrf.bootstrap", config_file ); 
15
16         char* log_file          = config_value( "opensrf.bootstrap", "//logs/client" );
17         char* log_level = config_value( "opensrf.bootstrap", "//bootstrap/debug" );
18         char* domain            = config_value( "opensrf.bootstrap", "//bootstrap/domains/domain1" ); /* just the first for now */
19         char* username          = config_value( "opensrf.bootstrap", "//bootstrap/username" );
20         char* password          = config_value( "opensrf.bootstrap", "//bootstrap/passwd" );
21         char* port                      = config_value( "opensrf.bootstrap", "//bootstrap/port" );
22         char* unixpath          = config_value( "opensrf.bootstrap", "//bootstrap/unixpath" );
23
24         int llevel = 0;
25         int iport = 0;
26         if(port) iport = atoi(port);
27
28         if                      (!strcmp(log_level, "ERROR"))   llevel = LOG_ERROR;
29         else if (!strcmp(log_level, "WARN"))    llevel = LOG_WARNING;
30         else if (!strcmp(log_level, "INFO"))    llevel = LOG_INFO;
31         else if (!strcmp(log_level, "DEBUG"))   llevel = LOG_DEBUG;
32
33         log_init( llevel, log_file );
34
35         info_handler("Bootstrapping system with domain %s, port %d, and unixpath %s", domain, iport, unixpath );
36
37         // XXX config values 
38         transport_client* client = client_init( domain, iport, unixpath, 0 );
39         char buf[256];
40         memset(buf,0,256);
41         char* host = getenv("HOSTNAME");
42         sprintf(buf, "client_%s_%d", host, getpid() );
43
44         if(client_connect( client, username, password, buf, 10, AUTH_DIGEST )) {
45                 global_client = client;
46         }
47
48         free(log_level);
49         free(log_file);
50         free(domain);
51         free(username);
52         free(password);
53         free(port);     
54         free(unixpath);
55
56         if(global_client)
57                 return 1;
58
59         return 0;
60 }
61
62 int osrf_system_shutdown() {
63         config_reader_free();
64         log_free();
65         client_disconnect( global_client );
66         client_free( global_client );
67         global_client = NULL;
68         return 1;
69 }
70
71
72
73