Add UI import, add login to UI, etc
This commit is contained in:
		
							
								
								
									
										2
									
								
								auth.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								auth.py
									
									
									
									
									
								
							@@ -20,6 +20,8 @@ def login(config, user, password, sysid):
 | 
			
		||||
    if output == False:
 | 
			
		||||
        filename = sysid + "fail.txt"
 | 
			
		||||
        if ssh.check_for_file(config, filename, 'receivelogin') == False:
 | 
			
		||||
            # ALERT: DIRTY HACK: SECURITY VULNERABILITY
 | 
			
		||||
            #return True
 | 
			
		||||
            raise ValueError("Unable to determine login status")
 | 
			
		||||
        else:
 | 
			
		||||
            return False
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										138
									
								
								helloWorld.py
									
									
									
									
									
								
							
							
						
						
									
										138
									
								
								helloWorld.py
									
									
									
									
									
								
							@@ -1,138 +0,0 @@
 | 
			
		||||
import glob
 | 
			
		||||
import wx
 | 
			
		||||
import wx.adv
 | 
			
		||||
import os
 | 
			
		||||
from time import sleep
 | 
			
		||||
from multiprocessing import Process, Pipe
 | 
			
		||||
from sys import platform
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TRAY_TOOLTIP = 'IP Pigeon' 
 | 
			
		||||
TRAY_ICON = 'icon.png' 
 | 
			
		||||
 | 
			
		||||
"""if platform == "linux" or platform == "linux2":
 | 
			
		||||
    # linux
 | 
			
		||||
elif platform == "darwin":
 | 
			
		||||
    # OS X
 | 
			
		||||
elif platform == "win32":
 | 
			
		||||
    # Windows...
 | 
			
		||||
"""
 | 
			
		||||
displaydata = None
 | 
			
		||||
settings = None
 | 
			
		||||
 | 
			
		||||
class ServerPanel(wx.Panel):    
 | 
			
		||||
    def __init__(self, parent):
 | 
			
		||||
        super().__init__(parent)
 | 
			
		||||
        main_sizer = wx.BoxSizer(wx.VERTICAL)
 | 
			
		||||
        self.row_obj_dict = {}
 | 
			
		||||
 | 
			
		||||
        self.list_ctrl = wx.ListCtrl(
 | 
			
		||||
            self, size=(-1, 100), 
 | 
			
		||||
            style=wx.LC_REPORT | wx.BORDER_SUNKEN
 | 
			
		||||
        )
 | 
			
		||||
        self.list_ctrl.InsertColumn(0, 'Server name', width=140)
 | 
			
		||||
        self.list_ctrl.InsertColumn(1, 'Port number', width=140)
 | 
			
		||||
        self.list_ctrl.InsertColumn(2, 'Status', width=200)
 | 
			
		||||
        main_sizer.Add(self.list_ctrl, 0, wx.ALL | wx.EXPAND, 5)        
 | 
			
		||||
        start_button = wx.Button(self, label='Start')
 | 
			
		||||
        start_button.Bind(wx.EVT_BUTTON, self.on_edit)
 | 
			
		||||
        stop_button = wx.Button(self, label='Stop')
 | 
			
		||||
        stop_button.Bind(wx.EVT_BUTTON, self.on_edit)
 | 
			
		||||
        main_sizer.Add(start_button, 0, wx.ALL | 100, 5)        
 | 
			
		||||
        main_sizer.Add(stop_button, 0, wx.ALL | 100, 5)
 | 
			
		||||
        self.SetSizer(main_sizer)
 | 
			
		||||
 | 
			
		||||
    def on_edit(self, event):
 | 
			
		||||
        print('in on_edit')
 | 
			
		||||
 | 
			
		||||
    def update_mp3_listing(self, folder_path):
 | 
			
		||||
        print(folder_path)
 | 
			
		||||
 | 
			
		||||
class ServerFrame(wx.Frame):    
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        super().__init__(parent=None,
 | 
			
		||||
                         title='Server Dashboard')
 | 
			
		||||
        self.panel = ServerPanel(self)
 | 
			
		||||
        self.Show()
 | 
			
		||||
 | 
			
		||||
### Taskbar Icon
 | 
			
		||||
 | 
			
		||||
def create_menu_item(menu, label, func):
 | 
			
		||||
    item = wx.MenuItem(menu, -1, label)
 | 
			
		||||
    menu.Bind(wx.EVT_MENU, func, id=item.GetId())
 | 
			
		||||
    menu.Append(item)
 | 
			
		||||
    return item
 | 
			
		||||
 | 
			
		||||
class TaskBarIcon(wx.adv.TaskBarIcon):
 | 
			
		||||
    def __init__(self, frame):
 | 
			
		||||
        self.frame = frame
 | 
			
		||||
        super(TaskBarIcon, self).__init__()
 | 
			
		||||
        self.set_icon(TRAY_ICON)
 | 
			
		||||
        self.Bind(wx.adv.EVT_TASKBAR_LEFT_DOWN, self.on_left_down)
 | 
			
		||||
 | 
			
		||||
    def CreatePopupMenu(self):
 | 
			
		||||
        menu = wx.Menu()
 | 
			
		||||
        create_menu_item(menu, 'Control Panel', self.on_open)
 | 
			
		||||
        menu.AppendSeparator()
 | 
			
		||||
        create_menu_item(menu, 'Exit', self.on_exit)
 | 
			
		||||
        return menu
 | 
			
		||||
 | 
			
		||||
    def set_icon(self, path):
 | 
			
		||||
        icon = wx.Icon(path)
 | 
			
		||||
        self.SetIcon(icon, TRAY_TOOLTIP)
 | 
			
		||||
 | 
			
		||||
    def on_left_down(self, event):      
 | 
			
		||||
        print ('Tray icon was left-clicked.')
 | 
			
		||||
 | 
			
		||||
    def on_open(self, event):
 | 
			
		||||
        foreground()
 | 
			
		||||
        #self.close_popup()
 | 
			
		||||
 | 
			
		||||
    def on_exit(self, event):
 | 
			
		||||
        wx.CallAfter(self.Destroy)
 | 
			
		||||
        self.close_popup()
 | 
			
		||||
 | 
			
		||||
    def close_popup(self):
 | 
			
		||||
        self.frame.Close()
 | 
			
		||||
 | 
			
		||||
class TaskbarApp(wx.App):
 | 
			
		||||
    def OnInit(self):
 | 
			
		||||
        frame=wx.Frame(None)
 | 
			
		||||
        self.SetTopWindow(frame)
 | 
			
		||||
        TaskBarIcon(frame)
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
class FullApp(wx.App):
 | 
			
		||||
    def OnInit(self):
 | 
			
		||||
        fullframe=ServerFrame()
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
def background():
 | 
			
		||||
    app = TaskbarApp(False)
 | 
			
		||||
    #with Manager() as manager:
 | 
			
		||||
    app.MainLoop()
 | 
			
		||||
        #displaydata = manager.list()
 | 
			
		||||
        #settings = manager.list()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        #rawdata = manager.list()
 | 
			
		||||
        #logdata = manager.list()
 | 
			
		||||
        #uploaddata = manager.list()
 | 
			
		||||
        #downloaddata = manager.list()
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
def open_fg(outputdata, uisettings):
 | 
			
		||||
    app = FullApp(False)
 | 
			
		||||
    app.MainLoop()
 | 
			
		||||
 | 
			
		||||
def foreground():
 | 
			
		||||
    # Open the foreground in a separate process so that UI acts independently of the taskbar icon
 | 
			
		||||
    p = Process(target=open_fg, args=(displaydata, settings))
 | 
			
		||||
    p.start()
 | 
			
		||||
    #p.join()
 | 
			
		||||
    print("Launched foreground")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    background()
 | 
			
		||||
							
								
								
									
										23
									
								
								ippigeon.py
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								ippigeon.py
									
									
									
									
									
								
							@@ -13,12 +13,14 @@ import util
 | 
			
		||||
import netstat
 | 
			
		||||
import ssh
 | 
			
		||||
import auth
 | 
			
		||||
import panel
 | 
			
		||||
 | 
			
		||||
displaydata = None
 | 
			
		||||
settings = None
 | 
			
		||||
netdata_res = None
 | 
			
		||||
procdata_res = None
 | 
			
		||||
killme = None
 | 
			
		||||
ppanel = None
 | 
			
		||||
datafile = ""
 | 
			
		||||
#print(datafile)
 | 
			
		||||
config = None
 | 
			
		||||
@@ -67,6 +69,8 @@ def login_done(res):
 | 
			
		||||
        settings["message"] = "Login failure"
 | 
			
		||||
    else:
 | 
			
		||||
        fprint("Login result in main: " + str(res))
 | 
			
		||||
        settings["loggedin"] = res
 | 
			
		||||
        settings["continueui"] = True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def killall():
 | 
			
		||||
@@ -84,6 +88,7 @@ def mainloop(pool):
 | 
			
		||||
    global procdata_res
 | 
			
		||||
    global rawdata
 | 
			
		||||
    global killme
 | 
			
		||||
    global ppanel
 | 
			
		||||
    #print(killme)
 | 
			
		||||
    if killme.value > 0:
 | 
			
		||||
        #print("killing")
 | 
			
		||||
@@ -99,11 +104,27 @@ def mainloop(pool):
 | 
			
		||||
            #fprint(netdata_res.successful())
 | 
			
		||||
    
 | 
			
		||||
    # runs every 50ms
 | 
			
		||||
    
 | 
			
		||||
    if settings["continueui"] == True:
 | 
			
		||||
        settings["continueui"] = False
 | 
			
		||||
        if ppanel is not None:
 | 
			
		||||
            # login panel is already open
 | 
			
		||||
            ppanel.terminate()
 | 
			
		||||
            ppanel = Process(target=panel.openwindow, args=(displaydata,settings,killme))
 | 
			
		||||
            ppanel.start()  
 | 
			
		||||
 | 
			
		||||
    if settings["showui"] == True:
 | 
			
		||||
        settings["showui"] = False
 | 
			
		||||
        ppanel = Process(target=panel.openwindow, args=(displaydata,settings,killme))
 | 
			
		||||
        ppanel.start()   
 | 
			
		||||
 | 
			
		||||
    if settings["login"] == True:
 | 
			
		||||
        login_res = pool.apply_async(auth.login, (config, settings["username"], settings["password"], sysid), callback=login_done)
 | 
			
		||||
        #fprint(auth.login(config, settings["username"], settings["password"], sysid))
 | 
			
		||||
        settings["login"] = False
 | 
			
		||||
        
 | 
			
		||||
         
 | 
			
		||||
 | 
			
		||||
    sleep(interval / (interval * 20.0))
 | 
			
		||||
    counter += 1
 | 
			
		||||
    if counter == interval * 20:
 | 
			
		||||
@@ -145,6 +166,8 @@ if __name__ == '__main__':
 | 
			
		||||
            settings = manager.dict() # configuration 
 | 
			
		||||
            settings["login"] = False
 | 
			
		||||
            settings["loggedin"] = False
 | 
			
		||||
            settings["showui"] = False
 | 
			
		||||
            settings["continueui"] = False
 | 
			
		||||
            killme = manager.Value('d', 0)
 | 
			
		||||
            #killme = False
 | 
			
		||||
            # launch background UI app as process
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24117
									
								
								output.log
									
									
									
									
									
								
							
							
						
						
									
										24117
									
								
								output.log
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -2,3 +2,4 @@ fabric
 | 
			
		||||
paramiko
 | 
			
		||||
wxpython
 | 
			
		||||
cx_Freeze
 | 
			
		||||
pandas
 | 
			
		||||
@@ -45,8 +45,8 @@ class TaskBarIcon(wx.adv.TaskBarIcon):
 | 
			
		||||
        fprint ('Tray icon was left-clicked.')
 | 
			
		||||
 | 
			
		||||
    def on_open(self, event):
 | 
			
		||||
        foreground()
 | 
			
		||||
        #self.close_popup()
 | 
			
		||||
        settings["showui"] = True
 | 
			
		||||
        self.close_popup()
 | 
			
		||||
 | 
			
		||||
    def on_login(self, event):
 | 
			
		||||
        settings["username"] = "frontend"
 | 
			
		||||
@@ -55,10 +55,11 @@ class TaskBarIcon(wx.adv.TaskBarIcon):
 | 
			
		||||
 | 
			
		||||
    def on_exit(self, event):
 | 
			
		||||
        wx.CallAfter(self.Destroy)
 | 
			
		||||
        self.close_popup()
 | 
			
		||||
        #print("kill cmd")
 | 
			
		||||
        global killme
 | 
			
		||||
        killme.value += 1
 | 
			
		||||
        self.close_popup()
 | 
			
		||||
        #print("kill cmd")
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
    def close_popup(self):
 | 
			
		||||
        self.frame.Close()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user