def __init__(self, eap_output_queue, radius_output_queue, src_mac, timer_scheduler, auth_handler, failure_handler, logoff_handler, log_prefix): """ Args: auth_handler (callable): callable that takes input of src_mac. Called on EAP-Success. eap_output_queue (Queue): where to put Messages to send to supplicant failure_handler (callable): callable that takes input of src_mac. Called on EAP-Failure. logoff_handler (callable): callable that takes input of src_mac. Called on EAP-Logoff. radius_output_queue (Queue): where to put Messages to send to AAA server src_mac (MacAddress): MAC address this statemachine (sm) belongs to. timer_scheduler (Scheduler): where to put timer events. (useful for Retransmits) """ self.eap_output_messages = eap_output_queue self.radius_output_messages = radius_output_queue self.src_mac = src_mac self.timer_scheduler = timer_scheduler self.auth_handler = auth_handler self.failure_handler = failure_handler self.logoff_handler = logoff_handler self.machine = Machine(model=self, states=FullEAPStateMachine.STATES, transitions=FullEAPStateMachine.TRANSITIONS, queued=True, initial=FullEAPStateMachine.NO_STATE) # TODO dynamically assign this or make a way to give it multiple methods # and self.m is the one currently in use. # if we want to deal with each method locally. self.m = MPassthrough() # pylint: disable=invalid-name logname = ".SM - %s" % self.src_mac self.logger = get_logger(log_prefix + logname)
def __init__(self, radius_output_queue, src_mac, timer_scheduler, auth_handler, failure_handler, log_prefix): """ Args: auth_handler (callable): callable that takes input of src_mac. Called on MAB-Success failure_handler (callable): callable that takes input of src_mac. Called on MAB-Failure. radius_output_queue (Queue): where to put Messages to send to AAA server src_mac (MacAddress): MAC address this statemachine (sm) belongs to. timer_scheduler (Scheduler): where to put timer events. (useful for Retransmits) log_prefix (String): the prefix used when outputting logs """ self.radius_output_messages = radius_output_queue self.src_mac = src_mac self.timer_scheduler = timer_scheduler self.auth_handler = auth_handler self.failure_handler = failure_handler self.aaa_sent_count = 0 self.set_timer = None self.machine = Machine( model=self, states=MacAuthenticationBypassStateMachine.STATES, transitions=MacAuthenticationBypassStateMachine.TRANSITIONS, queued=True, initial=MacAuthenticationBypassStateMachine.DISABLED) self.logger = get_logger(log_prefix) self.reset_variables() self.port_enabled = True self.eth_received = True
def __init__(self, interface_name, logger=None, auth_handler=None, failure_handler=None, logoff_handler=None, radius_server_ip=None, radius_server_port=None, radius_server_secret=None, chewie_id=None): self.interface_name = interface_name self.log_name = Chewie.__name__ if logger: self.log_name = logger.name + "." + Chewie.__name__ self.logger = get_logger(self.log_name) self.auth_handler = auth_handler self.failure_handler = failure_handler self.logoff_handler = logoff_handler self.radius_server_ip = radius_server_ip self.radius_secret = radius_server_secret self.radius_server_port = self.RADIUS_UDP_PORT if radius_server_port: self.radius_server_port = radius_server_port self.radius_listen_ip = "0.0.0.0" self.radius_listen_port = 0 self.chewie_id = "44-44-44-44-44-44:" # used by the RADIUS Attribute # 'Called-Station' in Access-Request if chewie_id: self.chewie_id = chewie_id self.state_machines = {} # port_id_str: { mac : state_machine} self.port_to_eapol_id = { } # port_id: last ID used in preemptive identity request. # TODO for port_to_eapol_id - may want to set ID to null (-1...) if sent from the # state machine. self.port_status = {} # port_id: status (true=up, false=down) self.port_to_identity_job = {} # port_id: timerJob self.eap_output_messages = Queue() self.radius_output_messages = Queue() self.radius_lifecycle = RadiusLifecycle(self.radius_secret, self.chewie_id, self.logger) self.timer_scheduler = timer_scheduler.TimerScheduler(self.logger) self.eap_socket = None self.mab_socket = None self.pool = None self.eventlets = None self.radius_socket = None self.interface_index = None self.eventlets = []
def __init__( self, listen_ip, listen_port, server_ip, # pylint: disable=too-many-arguments server_port, log_prefix): self.socket = None self.listen_ip = listen_ip self.listen_port = listen_port self.server_ip = server_ip self.server_port = server_port self.logger = get_logger(log_prefix)
def __init__(self, port_id, log_prefix, timer_scheduler, eap_output_messages, radius_output_messages): self.port_id = port_id self.logger = get_logger(log_prefix) self.supplicant_output_messages = eap_output_messages self.radius_output_messages = radius_output_messages self.state_machines = {} # mac : state_machine self.current_preemtive_eapol_id = None self.port_status = False # port_id: status (true=up, false=down) self.identity_job = None # timerJob self.session_job = None # timerJob self.timer_scheduler = timer_scheduler
def __init__(self, interface_name, logger=None, auth_handler=None, failure_handler=None, logoff_handler=None, radius_server_ip=None, radius_server_port=None, radius_server_secret=None, chewie_id=None): self.interface_name = interface_name self.logger = get_logger(logger.name + "." + Chewie.__name__) self.auth_handler = auth_handler self.failure_handler = failure_handler self.logoff_handler = logoff_handler self.radius_server_ip = radius_server_ip self.radius_secret = radius_server_secret self.radius_server_port = self.RADIUS_UDP_PORT if radius_server_port: self.radius_server_port = radius_server_port self.radius_listen_ip = "0.0.0.0" self.radius_listen_port = 0 self.chewie_id = "44-44-44-44-44-44:" # used by the RADIUS Attribute # 'Called-Station' in Access-Request if chewie_id: self.chewie_id = chewie_id self.state_machines = {} # mac: state_machine self.eap_output_messages = Queue() self.radius_output_messages = Queue() self.radius_lifecycle = RadiusLifecycle(self.radius_secret, self.chewie_id, self.logger) self.timer_scheduler = timer_scheduler.TimerScheduler(self.logger) self.eap_socket = None self.pool = None self.eventlets = None self.radius_socket = None self.interface_index = None self.eventlets = []
def __init__(self, interface_name, log_prefix): self.socket = None self.interface_index = None self.interface_name = interface_name self.logger = get_logger(log_prefix)