Skip to content

Commit

Permalink
Adding improment to wireless conection list and status tray
Browse files Browse the repository at this point in the history
  • Loading branch information
ericbsd committed Nov 26, 2017
1 parent dd51948 commit 7110738
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 105 deletions.
87 changes: 45 additions & 42 deletions src/net_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ def scanWifiBssid(bssid, wificard):
return info


def ifnetworkup():
pass


def wlan_list():
crd = Popen(ncard, shell=True, stdout=PIPE,close_fds=True,
universal_newlines=True)
Expand All @@ -79,6 +83,7 @@ def wired_list():
wiredlist.append(wnc)
return wiredlist


def ifwificardadded():
wifis = 'sysctl -in net.wlan.devices'
wifinics = Popen(wifis, shell=True, stdout=PIPE, close_fds=True, universal_newlines=True)
Expand Down Expand Up @@ -134,8 +139,8 @@ def bssidsn(bssid, wificard):


def scanSsid(ssid, wificard):
grepListScanv = "ifconfig -v %s list scan | grep -a %s" % (wificard, ssid)
wifi = Popen(grepListScanv + ssid, shell=True, stdout=PIPE, close_fds=True,
grepListScanv = "ifconfig -v %s list scan | grep %s" % (wificard, ssid)
wifi = Popen(grepListScanv, shell=True, stdout=PIPE, close_fds=True,
universal_newlines=True)
info = wifi.stdout.readlines()[0].rstrip().split(' ')
info = list(filter(None, info))
Expand Down Expand Up @@ -178,60 +183,57 @@ def ifWlan():
else:
return False

def defaultcard():
cmd = "netstat -r | grep default"
nics = Popen(cmd, shell=True, stdout=PIPE, close_fds=True,
universal_newlines=True)
device = nics.stdout.readlines()
if len(device) == 0:
return None
else:
return list(filter(None, device[0].rstrip().split()))[3]


def ifWlanDisable(wificard):
if ifWlan() is True:
cmd = "doas ifconfig %s list scan" % wificard
nics = Popen(cmd, shell=True, stdout=PIPE, close_fds=True,
universal_newlines=True)
if "" == nics.stdout.read():
return True
else:
return False
else:
cmd = "ifconfig %s list scan" % wificard
nics = Popen(cmd, shell=True, stdout=PIPE, close_fds=True,
universal_newlines=True)
if "" == nics.stdout.read():
return True
else:
return False


def ifStatue(wificard):
if ifWlan() is True:
cmd = "doas ifconfig %s" % wificard
wl = Popen(cmd, shell=True, stdout=PIPE, close_fds=True,
universal_newlines=True)
wlout = wl.stdout.read()
if "associated" in wlout:
return True
else:
return False
cmd = "ifconfig %s" % wificard
wl = Popen(cmd, shell=True, stdout=PIPE, close_fds=True,
universal_newlines=True)
wlout = wl.stdout.read()
if "associated" in wlout:
return True
else:
return False


def get_ssid(wificard):
wlan = Popen('doas ifconfig %s | grep ssid' % wificard,
wlan = Popen('ifconfig %s | grep ssid' % wificard,
shell=True, stdout=PIPE, close_fds=True,
universal_newlines=True)
return wlan.stdout.readlines()[0].rstrip().split()[1]


def netstate():
wlist = wlan_list()
if wiredonlineinfo() is True:
state = 200
elif ifWlan() is False and wiredonlineinfo() is False:
state = None
elif len(wlist) == 0 and wiredonlineinfo() is False:
state = None
elif ifStatue(wlist[0]) is False and wiredonlineinfo() is False:
state = None
else:
ssid = get_ssid(wlist[0])
scn = scanSsid(ssid)
def netstate(defaultdev):
if defaultdev is None:
return None
elif 'wlan' in defaultdev:
ssid = get_ssid(defaultdev)
scn = scanSsid(ssid, defaultdev)
sn = scn[4]
sig = int(sn.partition(':')[0])
noise = int(sn.partition(':')[2])
state = (sig - noise) * 4
return state

return (sig - noise) * 4
else:
return 200

def wifiListe(wificard):
scanv = "ifconfig -v %s list scan | grep -va BSSID" % wificard
Expand All @@ -241,18 +243,19 @@ def wifiListe(wificard):
wlist = []
for line in wifi.stdout:
if line[0] == " ":
leftover = [line[83:].strip()]
ssid = ["Unknown"]
newline = line[33:]
newline = line[:83]
else:
leftover = [line[83:].strip()]
ssid = [line[:33].strip()]
newline = line[33:]
info = newline.split(' ')
newline = line[:83].strip()
info = newline[33:].split(' ')
info = list(filter(None, info))
newinfo = ssid + info
newinfo = ssid + info + leftover
wlist.append(newinfo)
return wlist


def barpercent(sn):
sig = int(sn.partition(':')[0])
noise = int(sn.partition(':')[2])
Expand Down
129 changes: 66 additions & 63 deletions src/trayicon.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
from net_api import stopallnetwork, startallnetwork, connectToSsid
from net_api import ifWlanInRc, disableWifi, enableWifi, bssidsn, wired_list
from authentication import Authentication, Open_Wpa_Supplicant
from net_api import wifiListe, conectionStatus, ifcardisonline
from net_api import wifiListe, conectionStatus, ifcardisonline, defaultcard
from net_api import ifcardconnected, restartnetworkcard, wlan_list
encoding = locale.getpreferredencoding()

Expand Down Expand Up @@ -82,21 +82,18 @@ def position(menu, icon):
self.nmMenu.popup(None, None, Gtk.StatusIcon.position_menu, status_icon, button, time)



def nm_menu(self):
self.menu = Gtk.Menu()
e_title = Gtk.MenuItem()
e_title.set_label("Ethernet Network")
e_title.set_sensitive(False)
self.menu.append(e_title)
self.menu.append(Gtk.SeparatorMenuItem())
if ifWlan() is False and wiredonlineinfo() is False:
open_item = Gtk.MenuItem("Enable Networking")
open_item.connect("activate", self.openNetwork)
self.menu.append(open_item)
else:
wiredlist = wired_list()
wlanlist = wlan_list()
if len(wiredlist) != 0:
cardnum = 1
for netcard in wired_list():
for netcard in wiredlist:
if ifcardisonline(netcard) is True:
wired_item = Gtk.MenuItem("Wired %s Connected" % cardnum)
wired_item.connect("activate", self.restartcardconnection, netcard)
Expand All @@ -117,67 +114,72 @@ def nm_menu(self):
self.menu.append(disconnected)
cardnum += 1
self.menu.append(Gtk.SeparatorMenuItem())
if ifWlanInRc() is False:
pass
else:
w_title = Gtk.MenuItem()
w_title.set_label("WiFi Network")
w_title.set_sensitive(False)
self.menu.append(w_title)
if len(wlanlist) != 0:
w_title = Gtk.MenuItem()
w_title.set_label("WiFi Network")
w_title.set_sensitive(False)
self.menu.append(w_title)
self.menu.append(Gtk.SeparatorMenuItem())
wifinum = 1
for wificard in wlan_list():
if ifWlanDisable(wificard) is True:
wd_title = Gtk.MenuItem()
wd_title.set_label("WiFi %s Disabled" % wifinum)
wd_title.set_sensitive(False)
self.menu.append(wd_title)
enawifi = Gtk.MenuItem("Enable Wifi %s" % wifinum)
enawifi.connect("activate", self.enable_Wifi, wificard)
self.menu.append(enawifi)
elif ifStatue(wificard) is False:
d_title = Gtk.MenuItem()
d_title.set_label("WiFi %s Disconnected" % wifinum)
d_title.set_sensitive(False)
self.menu.append(d_title)
self.wifiListMenu(wificard, None, False)
diswifi = Gtk.MenuItem("Disable Wifi %s" % wifinum)
diswifi.connect("activate", self.disable_Wifi, wificard)
self.menu.append(diswifi)
else:
ssid = get_ssid(wificard)
wc_title = Gtk.MenuItem("WiFi %s Connected" % wifinum)
wc_title.set_sensitive(False)
self.menu.append(wc_title)
bar = bssidsn(ssid, wificard)
connection_item = Gtk.ImageMenuItem(ssid)
connection_item.set_image(self.openwifi(bar))
connection_item.show()
disconnect_item = Gtk.MenuItem("Disconnect from %s" % ssid)
disconnect_item.connect("activate", self.disconnectfromwifi,
wificard)
self.menu.append(connection_item)
self.menu.append(disconnect_item)
self.wifiListMenu(wificard, ssid, True)
diswifi = Gtk.MenuItem("Disable Wifi %s" % wifinum)
diswifi.connect("activate", self.disable_Wifi, wificard)
self.menu.append(diswifi)
self.menu.append(Gtk.SeparatorMenuItem())
wifinum = 1
for wificard in wlan_list():
if ifWlanDisable(wificard) is True and ifWlanInRc() is True:
wd_title = Gtk.MenuItem()
wd_title.set_label("WiFi %s Disabled" % wifinum)
wd_title.set_sensitive(False)
self.menu.append(wd_title)
elif ifStatue(wificard) is False:
d_title = Gtk.MenuItem()
d_title.set_label("WiFi %s Disconnected" % wifinum)
d_title.set_sensitive(False)
self.menu.append(d_title)
self.wifiListMenu(wificard)
else:
wc_title = Gtk.MenuItem("WiFi %s Connected" % wifinum)
wc_title.set_sensitive(False)
self.menu.append(wc_title)
bar = bssidsn(get_ssid(wificard), wificard)
connection_item = Gtk.ImageMenuItem(get_ssid(wificard))
connection_item.set_image(self.openwifi(bar))
connection_item.show()
disconnect_item = Gtk.MenuItem("Disconnect from %s" % get_ssid(wificard))
disconnect_item.connect("activate",
self.disconnectfromwifi, wificard)
self.menu.append(connection_item)
self.menu.append(disconnect_item)
self.wifiListMenu(wificard)
if ifWlanDisable(wificard) is True:
enawifi = Gtk.MenuItem("Enable Wifi %s" % wifinum)
enawifi.connect("activate", self.enable_Wifi, wificard)
self.menu.append(enawifi)
elif ifWlanDisable(wificard) is False:
diswifi = Gtk.MenuItem("Disable Wifi %s" % wifinum)
diswifi.connect("activate", self.disable_Wifi, wificard)
self.menu.append(diswifi)
self.menu.append(Gtk.SeparatorMenuItem())
wifinum += 1
wifinum += 1
if ifWlan() is False and wiredonlineinfo() is False:
open_item = Gtk.MenuItem("Enable Networking")
open_item.connect("activate", self.openNetwork)
self.menu.append(open_item)
else:
close_item = Gtk.MenuItem("Disable Networking")
close_item.connect("activate", self.closeNetwork)
self.menu.append(close_item)
close_manager = Gtk.MenuItem("Close Network Manager")
close_manager.connect("activate", self.stop_manager)
self.menu.append(close_manager)
close_manager = Gtk.MenuItem("Close Network Manager")
close_manager.connect("activate", self.stop_manager)
self.menu.append(close_manager)
self.menu.show_all()
return self.menu

def wifiListMenu(self, wificard):
def wifiListMenu(self, wificard, ssid, passes):
wiconncmenu = Gtk.Menu()
avconnmenu = Gtk.MenuItem("Available Connections")
avconnmenu.set_submenu(wiconncmenu)
for wifiData in wifiListe(wificard):
if ifStatue(wificard) is True:
if get_ssid(wificard) == wifiData[0]:
if passes is True:
if ssid == wifiData[0]:
pass
else:
menu_item = Gtk.ImageMenuItem(wifiData[0])
Expand Down Expand Up @@ -290,13 +292,14 @@ def securewifi(self, bar):
img.show()
return img

def update_everything(self):
self.check()
def update_everything(self, defaultdev):
self.check(defaultdev)

def checkloop(self):
while True:
defaultdev = defaultcard()
self.nmMenu = self.nm_menu()
GLib.idle_add(self.update_everything)
GLib.idle_add(self.update_everything, defaultdev)
#self.trayStatus()
sleep(20)
self.checkfornewcard()
Expand All @@ -306,8 +309,8 @@ def checkfornewcard(self):
if isanewnetworkcardinstall() is True:
call("doas netcardmgr", shell=True)

def check(self):
state = netstate()
def check(self, defaultdev):
state = netstate(defaultdev)
if state == 200:
self.statusIcon.set_from_icon_name('nm-adhoc')
elif state is None:
Expand Down

0 comments on commit 7110738

Please sign in to comment.