summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xserver/scireserver.pl29
1 files changed, 18 insertions, 11 deletions
diff --git a/server/scireserver.pl b/server/scireserver.pl
index d7181bd..6ea7543 100755
--- a/server/scireserver.pl
+++ b/server/scireserver.pl
@@ -17,16 +17,22 @@ Dumper(\%conf);
my $identified = 0; #Global variable to determine if already identified or not.
# Somehow this feels insecure.
+sub debug {
+ my $line = shift;
+ if ($conf{debug}) {
+ print STDERR "$line\n";
+ }
+}
+
#Connect to the Database.
my $connect_string = "DBI:$conf{db_type}:$conf{db_name};host=$conf{db_host}";
-print STDERR "Connecting to $connect_string\n";
+debug("Connecting to $connect_string");
#my $dbh = DBI->connect($connect_string, $conf{db_user}, $conf{db_passwd}, { RaiseError => 1 } )
# or die "Could not connect to database: $DBI::errstr";
while(<>) {
chomp( my $line = $_);
- print STDERR "Handling single-line response\n";
- print STDERR "DEBUG: line is: $line\n";
+ debug("DEBUG: line is: $line");
if($line =~ /^QUIT$/) {
print "OK\n";
exit;
@@ -83,6 +89,7 @@ sub read_config_file {
# print "Conf file $conf_file read.\n";
}
+
#New clients must be registered so they can be given a key to use (perhaps for job file transfers?) for authentication. This must be allowed before identifying.
sub register_client {
my ($mac,$ip) = @_;
@@ -93,34 +100,34 @@ sub register_client {
my ($query, $status_id, $id);
eval {
$query = 'SELECT statusid FROM client_status WHERE statusname = "Pending"';
- print STDERR "DEBUG: Query is $query\n";
+ debug("DEBUG: Query is $query");
$status_id = "4"; #db.conn.GetRow($query)
};
($@) and print "ERROR Could not get status id: $DBI::errstr";
eval {
$query = 'LOCK TABLES `gacl_axo_seq` WRITE';
- print STDERR "DEBUG: Query is $query\n";
+ debug("DEBUG: Query is $query");
#execute it
$query = 'SELECT id FROM `gacl_axo_seq`';
- print STDERR "DEBUG: Query is $query\n";
+ debug("DEBUG: Query is $query");
$id = "56"; #execute $query
$query = 'UPDATE `gacl_axo_seq` SET id=%s';
- print STDERR "DEBUG: Query is $query\n";
+ debug("DEBUG: Query is $query");
#execute with $id
$query = 'UNLOCK TABLES';
- print STDERR "DEBUG: Query is $query\n";
+ debug("DEBUG: Query is $query");
};
($@) and print "ERROR during fetching of id sequence: $DBI::errstr";
eval {
$query = 'INSERT INFO `gacl_axo` (id,section_value,value,order_value,name,hidden VALUES (%s,"clients",%s,1,%s,0)';
- print STDERR "DEBUG: Query is $query\n";
+ debug("DEBUG: Query is $query");
#execute with $id, $hostname, $hostname
#NOTE: not sure if this query is still valid. may be using id instead of hostname for one of those two now.
$query = 'INSERT INTO clients (clientid,digest,cert,hostname,mac,ip,status) VALUES (%s,%s,%s,%s,%s,%s,%s)';
- print STDERR "DEBUG: Query is $query\n";
+ debug("DEBUG: Query is $query");
#execute with $id, client_cert.digest("sha1"),crypto.dump_certificate(crypto.FILETYPE_PEM,client_cert),$hostname,$mac,$ip,$status_id))
};
($@) and print "ERROR Could not insert client with $query: $DBI::errstr";
@@ -136,7 +143,7 @@ sub identify_client {
$fingerprint =~ /^[A-Za-z0-9]+$/ or print "ERROR invalid fingerprint!\n";
#Validate your inputs!
my $query = 'SELECT client_status.statusname FROM clients JOIN client_status on (clients.status = client_status.statusid) WHERE clients.digest=%s';
- print STDERR "Query is $query , key is $fingerprint\n";
+ debug("DEBUG: Query is $query");
$identified = 1;
print "OK\n";
}