From 247b188aecb31a1016b822d0fed7f070e529e2be Mon Sep 17 00:00:00 2001 From: age Date: Tue, 21 Aug 2007 22:12:23 +0000 Subject: [PATCH] * network plugin displays mac address --- plugins/network/form_network.cs | 5 +++++ plugins/network/language.hdf | 1 + plugins/network/network.py | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/plugins/network/form_network.cs b/plugins/network/form_network.cs index 7dcd3b6..126a114 100644 --- a/plugins/network/form_network.cs +++ b/plugins/network/form_network.cs @@ -89,6 +89,11 @@ +

+ : + + () +

checked diff --git a/plugins/network/language.hdf b/plugins/network/language.hdf index 604bedd..b5a21e0 100644 --- a/plugins/network/language.hdf +++ b/plugins/network/language.hdf @@ -13,6 +13,7 @@ Text { NM = Netmask GW = Gateway DHCP = Configure the network interface automatically (Caution, please read help!) + Interface = Network device } Button { diff --git a/plugins/network/network.py b/plugins/network/network.py index d728a42..4a8fb96 100644 --- a/plugins/network/network.py +++ b/plugins/network/network.py @@ -229,6 +229,8 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin): self.hdf[self.hdf_prefix + "gw.oc4"] = oc4 if self.prefs.has_key("_dhcp"): self.hdf[self.hdf_prefix + "dhcp"] = str(self.prefs["_dhcp"]) + self.hdf[self.hdf_prefix + "interface"] = str(self.__get_interface()) + self.hdf[self.hdf_prefix + "mac"] = str(self.__get_interface_mac(self.__get_interface())) def __get_current_ip(self, address_type="ip"): @@ -372,6 +374,24 @@ class network(cryptobox.plugins.base.CryptoBoxPlugin): else: return DEFAULT_INTERFACE + def __get_interface_mac(self, interface="None"): + """Return the MAC address of the given network interface + """ + import re, string + proc = subprocess.Popen( + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, + shell = False, + args = ["ip", "link", "show", interface] ) + proc.wait() + if proc.returncode != 0: + self.cbox.log.warn("[network] error from ip command: %s" % str(proc.stderr.read())) + self.cbox.log.warn("[network] failed to determine MAC address on: %s" % interface) + output = str(proc.stdout.read()) + regex = re.compile('[0-9a-f][0-9a-f]:+') + mac = regex.findall(output) + mac = string.join(mac[:5], "") + return mac def __IP_is_valid(self, ip1, ip2, ip3, ip4): try: