Begin to break config out into ini file
authorJeff Godin <jgodin@tadl.org>
Wed, 31 Jul 2013 17:54:06 +0000 (13:54 -0400)
committerJeff Godin <jgodin@tadl.org>
Wed, 31 Jul 2013 17:54:06 +0000 (13:54 -0400)
Begin to migrate from hardcoded variables to a configuration file.

Copy the example iNCIPit.ini-example file to iNCIPit.ini and make
your changes there.

At this point, only the username and password are moved to a config
file.

This commit introduces a new dependency on Config::Tiny

SECURITY NOTE:
You will want to take steps to protect your configuration file, and
ensure that it is NOT accessible via the web server.

Signed-off-by: Jeff Godin <jgodin@tadl.org>
iNCIPit.cgi
iNCIPit.ini-example [new file with mode: 0644]

index 625f57b..6e3a215 100644 (file)
@@ -34,8 +34,12 @@ use MARC::Field;
 use MARC::File::XML;
 use POSIX qw/strftime/;
 use DateTime;
+use Config::Tiny;
+
 my $U = "OpenILS::Application::AppUtils";
 
+my $conf = load_config( 'iNCIPit.ini' );
+
 my $xmlpost = CGI::XMLPost->new();
 my $xml     = $xmlpost->data();
 
@@ -77,6 +81,16 @@ if ( defined( $session{authtoken} ) ) {
     fail("Unable to perform action : Unknown Service Request");
 }
 
+# load and parse config file
+sub load_config {
+    my $file = shift;
+
+    my $Config = Config::Tiny->new;
+    $Config = Config::Tiny->read( $file ) ||
+        die( "Error reading config file ", $file, ": ", Config::Tiny->errstr, "\n" );
+    return $Config;
+}
+
 sub logit {
     my ( $msg, $func, $more_info ) = @_;
     open RESP_DATA, ">>resp_data.txt";
@@ -972,8 +986,8 @@ sub login {
  # XXX: local opensrf core conf filename should be in config.
  # XXX: STAFF account with ncip service related permissions should be in config.
     my $bootstrap = '/openils/conf/opensrf_core.xml';
-    my $uname     = "STAFF_EQUIVALENT_USERNAME_HERE";
-    my $password  = "STAFF_EQUIVALENT_PASSWORD";
+    my $uname     = $conf->{auth}->{username};
+    my $password  = $conf->{auth}->{password};
 
     # Bootstrap the client
     OpenSRF::System->bootstrap_client( config_file => $bootstrap );
@@ -1454,7 +1468,7 @@ sub place_simple_hold {
  # XXX: local opensrf core conf filename should be in config.
  # XXX: STAFF account with ncip service related permissions should be in config.
     osrf_connect("/openils/conf/opensrf_core.xml");
-    oils_login( "STAFF_EQUIVALENT_USERNAME", "STAFF_EQUIVALENT_PASSWORD" );
+    oils_login( $conf->{auth}->{username}, $conf->{auth}->{password} );
     my $ahr = Fieldmapper::action::hold_request->new();
     $ahr->hold_type('C');
     # The targeter doesn't like our special statuses, and changing the status after the targeter finishes is difficult because it runs asynchronously.  Our workaround is to create the hold frozen, unfreeze it, then run the targeter manually.
diff --git a/iNCIPit.ini-example b/iNCIPit.ini-example
new file mode 100644 (file)
index 0000000..7360699
--- /dev/null
@@ -0,0 +1,3 @@
+[auth]
+username = EXAMPLE
+password = EXAMPLE