예제 #1
0
 def check_interfaces(normal_interface, wii_u_interface):
     if normal_interface == wii_u_interface:
         LoggerCli.throw(
             Exception(
                 "The Wii U and normal interfaces cannot be the same."))
     try:
         InterfaceUtil.get_mac(normal_interface)
         InterfaceUtil.get_mac(wii_u_interface)
     except ValueError:
         LoggerCli.throw(Exception("Invalid interface selected."))
예제 #2
0
 def get_key(self):
     LoggerCli.info("Getting key")
     wii_u_interface = Args.args.wii_u_interface
     try:
         InterfaceUtil.get_mac(wii_u_interface)
     except ValueError:
         LoggerCli.throw(Exception("Invalid interface selected."))
     if len(Args.args.wps_pin) != 4:
         LoggerCli.throw(Exception("WPS PIN should be 4 digits"))
     self.prompt_unmanaged(wii_u_interface)
     self.create_temp_config_file()
     self.wpa_supplicant = WpaSupplicant()
     self.wpa_supplicant.get_psk(constants.PATH_CONF_CONNECT_TMP,
                                 wii_u_interface, Args.args.wps_pin)
     self.wpa_supplicant.add_status_change_listener(self.status_changed_key)
     self.getting_key = True
     while self.getting_key:
         time.sleep(1)
예제 #3
0
 def button_clicked(self, event):
     if self.getting_psk:
         messagebox.showerror("Running",
                              "A pairing attempt is already im progress.")
         return
     number = str(event.widget.number)
     LoggerGui.debug(
         "A suit button was clicked"
     )  # Don't log numbers as the code can be derived from that
     code = self.entry_pair_code.get()
     code += number
     self.set_code_text(code)
     wii_u_interface = self.dropdown_wii_u.get()
     if not wii_u_interface:
         messagebox.showerror("No Interface",
                              "An interface must be selected.")
         self.activate()
         return
     try:
         InterfaceUtil.get_mac(wii_u_interface)
     except ValueError:
         messagebox.showerror(
             "Interface Error",
             "The selected Interface is no longer available.")
         self.activate()
         return
     if InterfaceUtil.is_managed_by_network_manager(wii_u_interface):
         set_unmanaged = messagebox.askokcancel(
             "Managed Interface",
             "This interface is managed by Network Manager. To use it with DRC Sim it needs "
             "to be set to unmanaged. Network Manager will not be able to control the interface"
             " after this.\nSet %s to unmanaged?" % wii_u_interface)
         if set_unmanaged:
             InterfaceUtil.set_unmanaged_by_network_manager(wii_u_interface)
         else:
             messagebox.showerror(
                 "Managed Interface",
                 "Selected Wii U interface is managed by Network Manager.")
             self.activate()
             return
     if len(code) == 4:
         self.getting_psk = True
         self.set_code_text("")
         self.get_psk(code, wii_u_interface)
예제 #4
0
 def start_server(self, event=None):
     """
     Try to start wpa_supplicant and connect to a Wii U.
     :param event: Determines if this was a user initiated start.
     :return: None
     """
     if event:
         LoggerGui.debug("User clicked start server button")
     LoggerGui.debug("Start server called")
     if self.label_backend_status["text"] != DrcSimC.STOPPED and \
             (self.label_wpa_status["text"] not in (WpaSupplicant.DISCONNECTED, WpaSupplicant.TERMINATED)):
         messagebox.showerror("Running", "Server is already running")
         return
     if not os.path.exists(constants.PATH_CONF_CONNECT):
         messagebox.showerror(
             "Auth Error",
             "No auth details found. Use the \"Get Key\" tab to pair with a Wii U."
         )
         self.activate()
         return
     self.normal_interface = self.dropdown_normal_interface.get()
     self.wii_u_interface = self.dropdown_wiiu_interface.get()
     if not self.normal_interface or not self.wii_u_interface:
         messagebox.showerror("Interface Error",
                              "Two interfaces need to be selected.")
         self.activate()
         return
     if self.normal_interface == self.wii_u_interface:
         messagebox.showerror(
             "Interface Error",
             "The selected normal and Wii U interfaces must be different.")
         self.activate()
         return
     try:
         InterfaceUtil.get_mac(self.normal_interface)
         InterfaceUtil.get_mac(self.wii_u_interface)
     except ValueError:
         messagebox.showerror(
             "Interface Error",
             "The selected Interface is no longer available.")
         self.activate()
         return
     if InterfaceUtil.is_managed_by_network_manager(self.wii_u_interface):
         set_unmanaged = messagebox.askokcancel(
             "Managed Interface",
             "This interface is managed by Network Manager. To use it with DRC Sim it needs "
             "to be set to unmanaged. Network Manager will not be able to control the interface"
             " after this.\nSet %s to unmanaged?" % self.wii_u_interface)
         if set_unmanaged:
             InterfaceUtil.set_unmanaged_by_network_manager(
                 self.wii_u_interface)
         else:
             messagebox.showerror(
                 "Managed Interface",
                 "Selected Wii U interface is managed by Network Manager.")
             self.activate()
             return
     LoggerGui.debug("Starting wpa supplicant")
     self.wpa_supplicant = WpaSupplicant()
     self.wpa_supplicant.add_status_change_listener(self.wpa_status_changed)
     self.wpa_supplicant.connect(constants.PATH_CONF_CONNECT,
                                 self.wii_u_interface)
     self.label_backend_status.config(text="WAITING")