From cd9984a07faa169ac1500a3662a7c6279e2ad6c7 Mon Sep 17 00:00:00 2001 From: hataejun Date: Sat, 18 Aug 2012 15:43:38 +0900 Subject: [PATCH] [Title] set package server password for start/stop command [Type] [Module] [Priority] [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- pkg-svr | 4 ++-- src/pkg_server/SocketRegisterListener.rb | 22 ++++++++++++++++++---- src/pkg_server/packageServer.rb | 16 +++++++++++----- src/pkg_server/serverOptParser.rb | 13 +++++++++---- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/pkg-svr b/pkg-svr index b3a96f8..5149a92 100755 --- a/pkg-svr +++ b/pkg-svr @@ -111,9 +111,9 @@ begin when "clean" server.clean( option[:dist], option[:snaps] ) when "start" - server.start( option[:port] ) + server.start( option[:port], option[:passwd] ) when "stop" - server.stop( option[:port] ) + server.stop( option[:port], option[:passwd] ) else raise RuntimeError, "input option incorrect : #{option[:cmd]}" end diff --git a/src/pkg_server/SocketRegisterListener.rb b/src/pkg_server/SocketRegisterListener.rb index 0ce88f1..fd16273 100644 --- a/src/pkg_server/SocketRegisterListener.rb +++ b/src/pkg_server/SocketRegisterListener.rb @@ -123,7 +123,7 @@ class SocketRegisterListener tok = line.split("|").map { |x| x.strip } if tok.count < 3 then @log.error "Received Wrong REQ : #{line}" - BuildCommServer.send(req, "ERROR,Invalid REQ format") + BuildCommServer.send(req, "ERROR|Invalid REQ format") return end dist_name = tok[1].strip @@ -156,12 +156,26 @@ class SocketRegisterListener def handle_cmd_stop( line, req ) @log.info "Received STOP REQ" - @parent_server.finish = true BuildCommServer.send_begin(req) - BuildCommServer.send(req,"SUCC") + + tok = line.split("|").map { |x| x.strip } + if tok.count < 2 then + @log.error "Received Wrong REQ : #{line}" + BuildCommServer.send(req, "ERROR|Invalid REQ format") + return + end + passwd = tok[1].strip + + if @parent_server.passwd.eql? passwd then + @parent_server.finish = true + @log.info "Package server stop flag set" + BuildCommServer.send(req,"SUCC") + else + @log.info "Received stop command, but passwd mismatched : #{passwd}" + BuildCommServer.send(req,"ERROR|Password mismatched!") + end BuildCommServer.send_end(req) BuildCommServer.disconnect(req) - @log.info "Package server stop" end end diff --git a/src/pkg_server/packageServer.rb b/src/pkg_server/packageServer.rb index ca8db5c..7bc5e04 100644 --- a/src/pkg_server/packageServer.rb +++ b/src/pkg_server/packageServer.rb @@ -45,7 +45,7 @@ class PackageServer attr_accessor :finish, :port attr_accessor :incoming_path attr_accessor :distribution_list - attr_accessor :sync_interval + attr_accessor :sync_interval, :passwd # initialize def initialize (id) @@ -59,6 +59,7 @@ class PackageServer @test_time=0 #test time in mili-seconds @lock_file=nil @sync_interval = 3600 + @passwd = "" update_config_information(id) @@ -442,7 +443,7 @@ class PackageServer end # start server daemon - def start( port ) + def start( port, passwd ) @log.info "Package server Start..." # set port number. default port is 3333 @port = port @@ -457,6 +458,9 @@ class PackageServer autosync = DistSync.new(self) autosync.start + # set password + @passwd = passwd + # main loop @log.info "Entering main loop..." if @test_time > 0 then start_time = Time.now end @@ -475,7 +479,7 @@ class PackageServer end # stop server daemon - def stop( port ) + def stop( port, passwd ) # set port number. default port is 3333 @port = port @finish = false @@ -484,12 +488,14 @@ class PackageServer if client.nil? then raise RuntimeError, "Server does not listen in #{@port} port" end - client.send("STOP") + + client.send("STOP|#{passwd}") + ret = client.receive_data if ret[0].strip.eql? "SUCC" then @log.output( "Package server is stopped", Log::LV_USER) else - @log.output( "Package server return error message", Log::LV_USER) + @log.output( "Package server return error message : #{ret}", Log::LV_USER) end client.terminate diff --git a/src/pkg_server/serverOptParser.rb b/src/pkg_server/serverOptParser.rb index bb3ed91..753ea89 100644 --- a/src/pkg_server/serverOptParser.rb +++ b/src/pkg_server/serverOptParser.rb @@ -46,6 +46,7 @@ def set_default( options ) options[:recursive] = false options[:origin_pkg_name] = "" options[:origin_pkg_os] = "" + options[:passwd] = "" end def option_error_check( options ) @@ -89,11 +90,11 @@ def option_error_check( options ) end when "start" if options[:port].empty? then - raise ArgumentError, "Usage: pkg-svr start -n -p " + raise ArgumentError, "Usage: pkg-svr start -n -p -w " end when "stop" if options[:port].empty? then - raise ArgumentError, "Usage: pkg-svr stop -n -p " + raise ArgumentError, "Usage: pkg-svr stop -n -p -w " end when "sync" when "list" @@ -134,8 +135,8 @@ def option_parse + "\t" + "pkg-svr gen-snapshot -n -d -s [-b ] " + "\n" \ + "\t" + "pkg-svr sync -n -d [--force] " + "\n" \ + "\t" + "pkg-svr clean -n -d [-s ] " + "\n" \ - + "\t" + "pkg-svr start -n -p " + "\n" \ - + "\t" + "pkg-svr stop -n -p " + "\n" \ + + "\t" + "pkg-svr start -n -p -w " + "\n" \ + + "\t" + "pkg-svr stop -n -p -w " + "\n" \ + "\t" + "pkg-svr list [-n ] " + "\n" \ + "\n" + "Options:" + "\n" @@ -185,6 +186,10 @@ def option_parse options[:port] = port end + opts.on( '-w', '--passwd ', 'password for package server' ) do|passwd| + options[:passwd] = passwd + end + opts.on( '--recursive', 'remove all depends packages' ) do options[:recursive] = true end -- 2.34.1