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
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
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
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)
@test_time=0 #test time in mili-seconds
@lock_file=nil
@sync_interval = 3600
+ @passwd = ""
update_config_information(id)
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
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
end
# stop server daemon
- def stop( port )
+ def stop( port, passwd )
# set port number. default port is 3333
@port = port
@finish = false
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
options[:recursive] = false
options[:origin_pkg_name] = ""
options[:origin_pkg_os] = ""
+ options[:passwd] = ""
end
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"
+ "\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"
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