Beispiel #1
0
    def cli_login(self, username, password, ip):
        
        indata = self.check_input(username, password, ip)
        dhcp = Dhcp()    
        auth = Auth(indata['username'],indata['password'])
        firewall = Firewall()
        mac = dhcp.find_mac(indata['ip_addr'])
        data = Data()

        if mac == False:
            # ip/mac pair does not exist in leasefile
            print "FEIL Mac/IP combo"
            sys.exit(conf.exit_status.ip_mac_mismatch_error)
        elif auth.login() != True:
            print "Login failed."
            self.log.info("LOGIN FAILED: "+indata['username']+" at "+ indata['ip_addr'])
            #sys.exit(conf.exit_status.login_error)
            sys.exit(1)
        dbcheck = data.mark_user_active(indata['username'],mac,indata['ip_addr'])
        if not dbcheck[0]:
            print "LOGIN FAILED, duplicates."
            print "User: %s \nMAC: %s \nIPv4: %s" % (dbcheck[1],dbcheck[2],dbcheck[3])
            sys.exit(conf.exit_status.user_already_logged_in)
        else:
            firewall.accept_ip4(indata['ip_addr'])

        ## DATABASE GOES HERE

        #data.add_row(indata['username'],mac,indata['ip_addr'],"IPv6")
        self.log.info("LOGIN OK: "+indata['username']+" at "+ indata['ip_addr'])
#        print lease[1]+" "+lease[0]
        ### WRITE SOMETHING TO A LOGFILE? (this goes to stdout)
        print "Login successful, {0} at ip {1}".format(indata['username'], indata['ip_addr'])        
        return True
Beispiel #2
0
    def ip4(self, username, password, ip):

        log = Log(conf.files.loginlog)
        indata = self.check_input(username, password, ip)
        dhcp = Dhcp()
        auth = Auth(indata['username'], indata['password'])
        firewall = Firewall()
        #        dhcp = DHCP(None)   ## Uses default leasefile given in conf.py
        #        lease = 1 #dhcp.get_ipv4_lease(indata['ip_addr']);
        mac = dhcp.find_mac(indata['ip_addr'])
        data = Data()

        if mac == False:
            # ip/mac pair does not exist in leasefile
            print "FEIL Mac/IP combo"
            exit(conf.exit_status.ip_mac_mismatch_error)
        elif auth.login() != True:
            print "Login failed."
            log.info("LOGIN FAILED: " + indata['username'] + " at " +
                     indata['ip_addr'])
            exit(conf.exit_status.login_error)
        else:
            firewall.accept_ip4(indata['ip_addr'])

## DATABASE GOES HERE
        log.info("LOGIN OK: " + indata['username'] + " at " +
                 indata['ip_addr'])
        data.DbAddRow(indata['username'], mac, indata['ip_addr'], "IPv6")
        #	    print lease[1]+" "+lease[0]
        ### WRITE SOMETHING TO A LOGFILE? (this goes to stdout)
        print "Login successful, {0} at ip {1}".format(indata['username'],
                                                       indata['ip_addr'])

        return
Beispiel #3
0
    def ip4(self,username, password, ip):
        indata = self.check_input(username, password, ip)
        dhcp = Dhcp()    
        auth = Auth(indata['username'],indata['password'])
        firewall = Firewall()
        mac = dhcp.find_mac(indata['ip_addr'])
        data = Data()
        
        if not os.getuid() == 0:
            cmd = 'sudo /usr/local/bin/dynfw login %s %s %s' % (ip, username, password)
            #code = subprocess.call(cmd)
            code = subprocess.call(['sudo', '/usr/local/bin/dynfw', 'login', ip, username, password])
            self.log.warn("NEED SUDO. \nCommand: %s \nExit code: %s" % (cmd, code))
            return code == 0
            
        if not mac:
            # ip/mac pair does not exist in leasefile
            print "FEIL Mac/IP combo"
            return False
#            exit(conf.exit_status.ip_mac_mismatch_error)
        elif auth.login() != True:
            print "Login failed."
            self.log.info("LOGIN FAILED: "+indata['username']+" at "+ indata['ip_addr'])
            return False
#            exit(conf.exit_status.login_error)
        dbcheck = data.mark_user_active(indata['username'],mac,indata['ip_addr'])
        if not dbcheck[0]:
            self.log.info( "LOGIN FAILED, duplicates.")
            self.log.info( "User: %s \nMAC: %s \nIPv4: %s" % (dbcheck[3],dbcheck[2],dbcheck[1]))
            return False
        else:
            firewall.accept_ip4(indata['ip_addr'])

        ## DATABASE GOES HERE
        self.log.info("LOGIN OK: "+indata['username']+" at "+ indata['ip_addr'])
        #data.add_row(indata['username'],mac,indata['ip_addr'],"IPv6")
#        print lease[1]+" "+lease[0]
        ### WRITE SOMETHING TO A LOGFILE? (this goes to stdout)
        print "Login successful, {0} at ip {1}".format(indata['username'], indata['ip_addr'])        
        return True