[Title] set package server password for start/stop command
authorhataejun <taejun.ha@samsung.com>
Sat, 18 Aug 2012 06:43:38 +0000 (15:43 +0900)
committerhataejun <taejun.ha@samsung.com>
Sat, 18 Aug 2012 06:43:38 +0000 (15:43 +0900)
[Type]
[Module]
[Priority]
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

pkg-svr
src/pkg_server/SocketRegisterListener.rb
src/pkg_server/packageServer.rb
src/pkg_server/serverOptParser.rb

diff --git a/pkg-svr b/pkg-svr
index b3a96f82a8c66ac1efa33c11a9a6dd1f01aa91be..5149a92530d33b4788d3989d61ada0d1e7314a5b 100755 (executable)
--- 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
index 0ce88f190cb92fb6e544e0477438f02d90d8a5f8..fd162736655ba279bb33d117dc537b4256a4c464 100644 (file)
@@ -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 
 
index ca8db5c304bf9781dee93c5de428b1b704d9bd10..7bc5e040ea6845417fc5c90583811226d21c9f16 100644 (file)
@@ -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
        
index bb3ed91454337dac997c5b7544ce5484832a309c..753ea89db25b6772c763d0cff652dc64e511644b 100644 (file)
@@ -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 <server name> -p <port>"
+                       raise ArgumentError, "Usage: pkg-svr start -n <server name> -p <port> -w <password>"
                end
        when "stop"
                if options[:port].empty? then
-                       raise ArgumentError, "Usage: pkg-svr stop -n <server name> -p <port>"
+                       raise ArgumentError, "Usage: pkg-svr stop -n <server name> -p <port> -w <password>"
                end
        when "sync"
        when "list"
@@ -134,8 +135,8 @@ def option_parse
         + "\t" + "pkg-svr gen-snapshot -n <server name> -d <distribution> -s <snapshot name> [-b <base snapshot name>] " + "\n"  \
         + "\t" + "pkg-svr sync -n <server name> -d <distribution> [--force] " + "\n"  \
         + "\t" + "pkg-svr clean -n <server name> -d <distribution> [-s <snapshot list>] " + "\n" \
-        + "\t" + "pkg-svr start -n <server name> -p <port>" + "\n" \
-        + "\t" + "pkg-svr stop -n <server name> -p <port>" + "\n" \
+        + "\t" + "pkg-svr start -n <server name> -p <port> -w <password>" + "\n" \
+        + "\t" + "pkg-svr stop -n <server name> -p <port> -w <password>" + "\n" \
         + "\t" + "pkg-svr list [-n <server name>] " + "\n" \
         + "\n" + "Options:" + "\n"
 
@@ -185,6 +186,10 @@ def option_parse
             options[:port] = port
         end
                
+               opts.on( '-w', '--passwd <password>', 'password for package server' ) do|passwd|
+            options[:passwd] = passwd
+        end
+
                opts.on( '--recursive', 'remove all depends packages' ) do
             options[:recursive] = true
         end