Ejemplo n.º 1
0
        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
Ejemplo n.º 2
0
    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 )