Track down bug where default section didn't work without SSIDs

(also increase verbosity)
This commit is contained in:
Mike 2018-10-02 02:21:40 -07:00
parent 966f5d48ab
commit c7ab0bcb5d

View File

@ -65,9 +65,13 @@ class SSHConfiger:
if ( "ssh_dir" not in self._config.keys() ): if ( "ssh_dir" not in self._config.keys() ):
self.die("Config file needs key \"ssh_dir\" inside \"config\" section") self.die("Config file needs key \"ssh_dir\" inside \"config\" section")
ssh_dir = self._config["ssh_dir"] ssh_dir = self._config["ssh_dir"]
self.log("SSH Dir: " + str(ssh_dir))
# Determine which ssh config file we should use # Determine which ssh config file we should use
ssh_config_name = self.determine_ssh_config_name() ssh_config_name = self.determine_ssh_config_name()
self.log("Determined ssh config name: " + str(ssh_config_name))
if not ssh_config_name:
self.die("Unable to determine appropriate ssh config name; Quitting")
# Make paths # Make paths
ssh_config_path_link = os.path.join(ssh_dir, "config") ssh_config_path_link = os.path.join(ssh_dir, "config")
@ -105,29 +109,54 @@ class SSHConfiger:
if ( self._action_command != "up" ): if ( self._action_command != "up" ):
return None return None
#
self.log("Attempting to determine SSH config name")
# Check each section # Check each section
found_ssh_config_name = None found_ssh_config_name = None
for section_name in self._targets: for section_name in self._targets:
# #
section = self._targets[section_name] section = self._targets[section_name]
self.log("Examining section: " + str(section_name))
# Must match at least one interface # Don't examine default if anything is picked already
if ( self._action_interface not in section["adapters"] ): if section_name == "default" and found_ssh_config_name:
self.log("Skipping default section because we've already found at least one match: " + str(found_ssh_config_name))
continue continue
# # Check the interface
interface_ssid = self.get_interface_ssid(self._action_interface) interface_matched = False
if (
# Matches, if current interface found in adapters
self._action_interface in section["adapters"]
# Can also match if we're in section "default"
or section_name == "default"
):
interface_matched = True
if not interface_matched:
self.log("Section \"" + str(section_name) + "\" didn't match any interfaces; Skipping")
continue
# Must also match at least one SSID # Grab the SSID this adapter is currently connected to
if ( interface_ssid not in section["ssids"] ): interface_ssid = self.get_interface_ssid(self._action_interface)
if not interface_ssid:
self.log("Interface \"" + str(interface_ssid) + "\" isn't connected to anything ... ")
self.log("Interface \"" + str(self._action_interface) + "\" is currently connected to: \"" + str(interface_ssid) + "\"")
# Must also match at least one SSID,
# OR we're in the default section
if interface_ssid not in section["ssids"] and section_name != "default":
self.log("Did not find SSID \"" + interface_ssid + "\" in section ssids: " + str(section["ssids"]))
continue continue
# Found a match! # Found a match!
found_ssh_config_name = section["ssh_config_name"] found_ssh_config_name = section["ssh_config_name"]
self.log("Found matching ssh config name: " + str(found_ssh_config_name))
# Didn't find anything? Go default ... # Didn't find anything? Go default ...
if (found_ssh_config_name == None): if (not found_ssh_config_name):
if ( "default" in self._targets.keys() ): if ( "default" in self._targets.keys() ):
if ( "ssh_config_name" in self._targets["default"].keys() ): if ( "ssh_config_name" in self._targets["default"].keys() ):
found_ssh_config_name = self._targets["default"]["ssh_config_name"] found_ssh_config_name = self._targets["default"]["ssh_config_name"]
@ -172,6 +201,7 @@ class SSHConfiger:
continue continue
# #
self.log("Parsing config target: \"" + section + "\"")
target = { target = {
"adapters" : [], "adapters" : [],
"ssids" : [] "ssids" : []
@ -197,6 +227,7 @@ class SSHConfiger:
# #
targets[section] = target targets[section] = target
self.log("Parsed config for config target \"" + section + "\": " + str(target))
# #
self._config = config self._config = config