r23658 - in /scripts/KGB/server: KGB kgb.conf.sample

dmn at users.alioth.debian.org dmn at users.alioth.debian.org
Mon Jul 28 13:05:27 UTC 2008


Author: dmn
Date: Mon Jul 28 13:05:25 2008
New Revision: 23658

URL: http://svn.debian.org/wsvn/?sc=1&rev=23658
Log:
add min_protocol_ver variable to config. server rejects requests with lower proto ver

Modified:
    scripts/KGB/server/KGB
    scripts/KGB/server/kgb.conf.sample

Modified: scripts/KGB/server/KGB
URL: http://svn.debian.org/wsvn/scripts/KGB/server/KGB?rev=23658&op=diff
==============================================================================
--- scripts/KGB/server/KGB (original)
+++ scripts/KGB/server/KGB Mon Jul 28 13:05:25 2008
@@ -74,6 +74,11 @@
 $conf->{soap}{service_name} ||= "KGB";
 $conf->{soap}{server_port}  ||= 9999;
 $conf->{soap}{server_addr}  ||= "127.0.0.1";
+$conf->{min_protocol_ver}   ||= 1;
+
+$conf->{min_protocol_ver} =~ /^[01]$/
+    or die "Unrecognised min_protocol_ver (".$conf->{min_protocol_ver}."). I only know about protocol 0 and 1.\n";
+
 foreach(keys %{$conf->{networks}}) {
     $conf->{networks}{$_}{nick}     ||= "KGB";
     $conf->{networks}{$_}{ircname}  ||= "KGB bot";
@@ -225,6 +230,12 @@
 sub do_commit_0 {
     my $kernel = $_[KERNEL];
     my $response = $_[ARG0];
+    unless($conf->{min_protocol_version} == 0) {
+        $kernel->post(SOAPServer => 'FAULT', $response, 'Client.Arguments',
+            "Protocol version 0 not welcome");
+        warn("Protocol version 0 rejected\n");
+        return
+    }
     my($repo_id, $passwd, $rev, $paths, $log, $author) = @_;
     unless($conf->{repositories}{$repo_id}) {
         $kernel->post(SOAPServer => 'FAULT', $response, 'Client.Arguments',
@@ -278,12 +289,20 @@
 	return do_commit_0(@{$params->{Array}});
     } 
     my $proto_ver = shift @{$params->{Array}};
+    unless($proto_ver =~ /^\d{1,5}$/
+        and $conf->{min_protocol_version} <= $proto_ver)
+    {
+        $kernel->post(SOAPServer => 'FAULT', $response, 'Client.Arguments',
+            "Protocol version $proto_ver not welcome");
+        warn("Protocol version $proto_ver rejected\n");
+        return
+    }
     if($proto_ver == 1) {
 	return do_commit_1(@{$params->{Array}})
     } else {
         $kernel->post(SOAPServer => 'FAULT', $response, 'Client.Arguments',
-            "Invalid protocol version ($protocol_ver)");
-        warn("Invalid protocol version ($protocol_ver)\n");
+            "Invalid protocol version ($proto_ver)");
+        warn("Invalid protocol version ($proto_ver)\n");
         return;
     }
 }

Modified: scripts/KGB/server/kgb.conf.sample
URL: http://svn.debian.org/wsvn/scripts/KGB/server/kgb.conf.sample?rev=23658&op=diff
==============================================================================
--- scripts/KGB/server/kgb.conf.sample (original)
+++ scripts/KGB/server/kgb.conf.sample Mon Jul 28 13:05:25 2008
@@ -21,3 +21,4 @@
     repos:
       - foo
 pid_dir: ~ 		# defaults to /var/run
+min_protocol_ver: 1     # anything less is rejected




More information about the Pkg-perl-cvs-commits mailing list