diff --git a/.~lock.out.csv# b/.~lock.out.csv# new file mode 100644 index 0000000..6a09b02 --- /dev/null +++ b/.~lock.out.csv# @@ -0,0 +1 @@ +,FRAMEWORKWIN/Cole,frameworkwin,19.09.2022 20:57,file:///C:/Users/Cole/AppData/Roaming/LibreOffice/4; \ No newline at end of file diff --git a/__pycache__/core.cpython-310.pyc b/__pycache__/core.cpython-310.pyc new file mode 100644 index 0000000..6cf9b68 Binary files /dev/null and b/__pycache__/core.cpython-310.pyc differ diff --git a/core.py b/core.py index e69de29..f2e6eb8 100644 --- a/core.py +++ b/core.py @@ -0,0 +1,64 @@ +import glob +import wx +import wx.adv +import os +from time import sleep +from sys import platform + +TRAY_TOOLTIP = 'IP Pigeon' +TRAY_ICON = 'icon.png' + +displaydata = None +settings = None + +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 + +def background(data, sets): + app = TaskbarApp(False) + displaydata = data + settings = sets + app.MainLoop() + \ No newline at end of file diff --git a/helloWorld.py b/helloWorld.py index 4ef67bc..16e9dd3 100644 --- a/helloWorld.py +++ b/helloWorld.py @@ -109,16 +109,17 @@ class FullApp(wx.App): def background(): app = TaskbarApp(False) - with Manager() as manager: - displaydata = manager.list() - settings = manager.list() + #with Manager() as manager: + app.MainLoop() + #displaydata = manager.list() + #settings = manager.list() - """rawdata = manager.list() - logdata = manager.list() - uploaddata = manager.list() - downloaddata = manager.list()""" - app.MainLoop() + #rawdata = manager.list() + #logdata = manager.list() + #uploaddata = manager.list() + #downloaddata = manager.list() + def open_fg(outputdata, uisettings): app = FullApp(False) diff --git a/main.py b/main.py index 6ab3d85..5930beb 100644 --- a/main.py +++ b/main.py @@ -1,14 +1,95 @@ import core +import os +import subprocess +from multiprocessing import Process, Manager, Pool, TimeoutError, freeze_support +from sys import platform +from time import sleep +import csv + +displaydata = None +settings = None +netdata_res = None +procdata_res = None + +def run_ps(cmd): + if platform == "win32": + completed = subprocess.run(["powershell", "-Command", cmd], capture_output=True) + return completed + +def netstat(): + print("netstat started") + data = run_ps("netstat -n -o") + return data + +def netstat_done(res): + print("netstat done") + procdata_res = pool.apply_async(process_netstat, (res,)) + #netdata_res = pool.apply_async(netstat) + +def process_netstat(data): + print("netstat processing") + #if platform == 'win32': + #output = data.stdout + #print(output) + output = data.stdout.decode().split('\r\n') + + output2 = list(range(len(output))) + for x in range(len(output)): + output2[x] = output[x].split(" ") + output2[x] = [i for i in output2[x] if i] + output2 = [i for i in output2 if i] + print(output2) + output2 = output2[2:] + with open("out.csv", "w", newline="") as f: + writer = csv.writer(f) + writer.writerows(output2) + print("done") + + +def mainloop(pool): + # worker pool: netstat, netstat cleanup, upload, download, ui tasks + print("start loop") + global netdata_res + global procdata_res + global rawdata + #print(res.get(timeout=1)) + if netdata_res is None or netdata_res.ready(): + #rawdata = netdata_res.get() + #procdata_res = pool.apply_async(process_netstat, (rawdata)) + print("netstat starting") + netdata_res = pool.apply_async(netstat, callback=netstat_done) + sleep(10) if __name__ == '__main__': + freeze_support() # required if packaged into EXE # create manager to share data to me, background, foreground + # create worker pool + with Pool(processes=5) as pool: + with Manager() as manager: + displaydata = manager.list(range(2)) # data to be printed + settings = manager.list(range(20)) # configuration + # launch background UI app as process + p = Process(target=core.background, args=(displaydata,settings)) + p.start() + #p.join() # not a foreground job, so let's not join it + keeprunning = True + + # initial setup + #netdata_res = pool.apply_async(netstat, callback=netstat_done) + + + # launch loop + while(keeprunning): + mainloop(pool) + + + + + # launch main, non-blocking, loop + + - # launch background app as process - # create worker pool - # launch main, non-blocking, loop -def mainloop(): - # worker pool: netstat, netstat cleanup, upload, download, ui tasks \ No newline at end of file diff --git a/out.csv b/out.csv new file mode 100644 index 0000000..d406940 --- /dev/null +++ b/out.csv @@ -0,0 +1,65 @@ +TCP,100.106.209.107:51133,192.168.1.216:445,ESTABLISHED,4 +TCP,100.106.209.107:51134,192.168.1.11:445,ESTABLISHED,4 +TCP,100.106.209.107:56843,192.168.1.173:5000,ESTABLISHED,5936 +TCP,104.194.122.206:49413,40.83.240.146:443,ESTABLISHED,6108 +TCP,104.194.122.206:50750,199.38.182.118:443,ESTABLISHED,8076 +TCP,104.194.122.206:50786,54.148.242.254:443,ESTABLISHED,8008 +TCP,104.194.122.206:50818,104.192.142.11:443,ESTABLISHED,8008 +TCP,104.194.122.206:51107,18.156.90.224:80,ESTABLISHED,8076 +TCP,104.194.122.206:51451,172.245.94.35:22067,ESTABLISHED,8896 +TCP,104.194.122.206:52328,20.42.73.139:443,ESTABLISHED,6048 +TCP,104.194.122.206:52348,142.250.191.170:443,ESTABLISHED,8008 +TCP,104.194.122.206:52354,142.250.191.170:443,ESTABLISHED,8008 +TCP,127.0.0.1:4742,127.0.0.1:50778,ESTABLISHED,8116 +TCP,127.0.0.1:5354,127.0.0.1:49670,ESTABLISHED,4076 +TCP,127.0.0.1:5354,127.0.0.1:49674,ESTABLISHED,4076 +TCP,127.0.0.1:6363,127.0.0.1:49761,ESTABLISHED,8116 +TCP,127.0.0.1:7039,127.0.0.1:49765,ESTABLISHED,8116 +TCP,127.0.0.1:10055,127.0.0.1:50174,ESTABLISHED,11608 +TCP,127.0.0.1:10632,127.0.0.1:50407,ESTABLISHED,11836 +TCP,127.0.0.1:15907,127.0.0.1:49698,ESTABLISHED,8116 +TCP,127.0.0.1:16619,127.0.0.1:49767,ESTABLISHED,8116 +TCP,127.0.0.1:16950,127.0.0.1:49772,ESTABLISHED,8116 +TCP,127.0.0.1:17311,127.0.0.1:50397,ESTABLISHED,11608 +TCP,127.0.0.1:19231,127.0.0.1:50409,ESTABLISHED,11836 +TCP,127.0.0.1:19492,127.0.0.1:50160,ESTABLISHED,5544 +TCP,127.0.0.1:21968,127.0.0.1:50395,ESTABLISHED,8116 +TCP,127.0.0.1:22890,127.0.0.1:50792,ESTABLISHED,8116 +TCP,127.0.0.1:22921,127.0.0.1:49762,ESTABLISHED,8116 +TCP,127.0.0.1:23938,127.0.0.1:50405,ESTABLISHED,11608 +TCP,127.0.0.1:25001,127.0.0.1:50406,ESTABLISHED,11836 +TCP,127.0.0.1:26068,127.0.0.1:50408,ESTABLISHED,11836 +TCP,127.0.0.1:28488,127.0.0.1:50402,ESTABLISHED,11608 +TCP,127.0.0.1:31770,127.0.0.1:49766,ESTABLISHED,8116 +TCP,127.0.0.1:41112,127.0.0.1:50530,ESTABLISHED,8076 +TCP,127.0.0.1:49670,127.0.0.1:5354,ESTABLISHED,4280 +TCP,127.0.0.1:49674,127.0.0.1:5354,ESTABLISHED,4280 +TCP,127.0.0.1:49698,127.0.0.1:15907,ESTABLISHED,8116 +TCP,127.0.0.1:49761,127.0.0.1:6363,ESTABLISHED,8116 +TCP,127.0.0.1:49762,127.0.0.1:22921,ESTABLISHED,8116 +TCP,127.0.0.1:49765,127.0.0.1:7039,ESTABLISHED,8116 +TCP,127.0.0.1:49766,127.0.0.1:31770,ESTABLISHED,8116 +TCP,127.0.0.1:49767,127.0.0.1:16619,ESTABLISHED,8116 +TCP,127.0.0.1:49772,127.0.0.1:16950,ESTABLISHED,8116 +TCP,127.0.0.1:50160,127.0.0.1:19492,ESTABLISHED,5544 +TCP,127.0.0.1:50174,127.0.0.1:10055,ESTABLISHED,11608 +TCP,127.0.0.1:50395,127.0.0.1:21968,ESTABLISHED,11608 +TCP,127.0.0.1:50397,127.0.0.1:17311,ESTABLISHED,11608 +TCP,127.0.0.1:50402,127.0.0.1:28488,ESTABLISHED,11608 +TCP,127.0.0.1:50405,127.0.0.1:23938,ESTABLISHED,11608 +TCP,127.0.0.1:50406,127.0.0.1:25001,ESTABLISHED,11608 +TCP,127.0.0.1:50407,127.0.0.1:10632,ESTABLISHED,11836 +TCP,127.0.0.1:50408,127.0.0.1:26068,ESTABLISHED,11836 +TCP,127.0.0.1:50409,127.0.0.1:19231,ESTABLISHED,11836 +TCP,127.0.0.1:50530,127.0.0.1:41112,ESTABLISHED,14552 +TCP,127.0.0.1:50778,127.0.0.1:4742,ESTABLISHED,8116 +TCP,127.0.0.1:50792,127.0.0.1:22890,ESTABLISHED,8116 +TCP,127.0.0.1:51758,127.0.0.1:51759,ESTABLISHED,8008 +TCP,127.0.0.1:51759,127.0.0.1:51758,ESTABLISHED,8008 +TCP,127.0.0.1:51760,127.0.0.1:51761,ESTABLISHED,10420 +TCP,127.0.0.1:51761,127.0.0.1:51760,ESTABLISHED,10420 +TCP,127.0.0.1:51977,127.0.0.1:51978,ESTABLISHED,17828 +TCP,127.0.0.1:51978,127.0.0.1:51977,ESTABLISHED,17828 +TCP,127.0.0.1:51986,127.0.0.1:51987,ESTABLISHED,17244 +TCP,127.0.0.1:51987,127.0.0.1:51986,ESTABLISHED,17244 +TCP,[2620:f3:8000:5060:5939:a4c0:4f5b:113f]:52372,[2606:4700:3035::ac43:ca7b]:443,TIME_WAIT,0