run_update = True elif os.path.split( req.parsed_uri[apache.URI_PATH] )[1] == "logoff" : run_update = True sess = Session.Session( req ) req.subprocess_env['sessid'] = sess.id() if sess.is_new() : if req.user : # NOTE : proper expiration time is not set on the cookie sess.set_timeout( default_session_timeout ) sess['UUID'] = req.user sess['HOSTNAME'] = node['hostname'] sess['DISTRO'] = node['distro'] sess['CHANNELS'] = node.get( "channels" , "*" ) sess.save() callbacks.run_stage( "alive" , ( sess ,) ) else : sess.invalidate() cookies = Cookie.get_cookies( req ) if cookies.get( "pysid" ) : req.log_error( "authenhandler : Trying to access with an obsolete session %s" % cookies["pysid"] ) req.status = apache.HTTP_UNAUTHORIZED return apache.DONE else : if req.user : # A double authentication (header + session) is attempted if req.user != sess['UUID'] : sess.invalidate() req.log_error( "authenhandler : Requested reauthentication for '%s' with session from '%s'" % ( req.user , sess['UUID'] ) ) req.status = apache.HTTP_UNAUTHORIZED return apache.DONE
if args['UUID'] == "__REQUEST__" : try : args['UUID'] = db.get_uuid( args['HOSTNAME'] ) except database.KeyNotFound , ex : if not uuid : # NOTE : this is actually a protocol mismatch ?? msg = "uuid module not available to fulfill __REQUEST__ petition from %s" % args['HOSTNAME'] req.log_error( "register handler : %s" % msg , apache.APLOG_CRIT ) return send_error( req , "UUID cannot be generated" ) args['UUID'] = "%s" % uuid.uuid4() error_msg.append( "UUID %s" % args['UUID'] ) try : dbvalues = db.add_node( args , req ) messages = callbacks.run_stage( "register" , ( args['UUID'] , dbvalues ) ) if messages : error_msg.extend( messages ) map( lambda x : req.log_error( "register handler : %s" % x , apache.APLOG_WARNING ) , messages ) except database.KeyExists , ex : dbvalues = db.get_node( args['UUID'] ) if dbvalues['hostname'] == args['HOSTNAME'] : # FIXME : Implement update record code error_msg.append( "System already registered" ) map( lambda x : req.log_error( "register handler : %s" % x , apache.APLOG_INFO ) , error_msg ) try : db.update_node( dbvalues , args , req ) messages = callbacks.run_stage( "register" , ( args['UUID'] , dbvalues ) ) if messages : error_msg.extend( messages ) map( lambda x : req.log_error( "register handler : %s" % x , apache.APLOG_WARNING ) , messages )