implementation of logging through fprint
This commit is contained in:
		
							
								
								
									
										34
									
								
								ippigeon.py
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								ippigeon.py
									
									
									
									
									
								
							@@ -59,13 +59,13 @@ if linux:
 | 
			
		||||
    #fprint(hostname)
 | 
			
		||||
 | 
			
		||||
def netstat_done(res):
 | 
			
		||||
    fprint("netstat done, processing")
 | 
			
		||||
    fprint("netstat done, processing", settings)
 | 
			
		||||
    procdata_res = pool.apply_async(netstat.process, (res,), callback=process_done)
 | 
			
		||||
    #netstat.process(res)
 | 
			
		||||
 | 
			
		||||
def process_done(res):
 | 
			
		||||
    if settings["running"] == True:
 | 
			
		||||
        fprint("uploading to sftp...")
 | 
			
		||||
        fprint("uploading to sftp...", settings)
 | 
			
		||||
        #ssh.sftp_send_data(res, config, datafile)
 | 
			
		||||
        procdata_res = pool.apply_async(ssh.sftp_send_data, (config, datafile, 'send'), callback=upload_done)
 | 
			
		||||
    
 | 
			
		||||
@@ -74,16 +74,16 @@ def upload_done(res):
 | 
			
		||||
 | 
			
		||||
def login_done(res):
 | 
			
		||||
    if not res:
 | 
			
		||||
        fprint("Login failure")
 | 
			
		||||
        fprint("Login failure", settings)
 | 
			
		||||
        settings["message"] = "Login failure"
 | 
			
		||||
    else:
 | 
			
		||||
        fprint("Login result in main: " + str(res))
 | 
			
		||||
        fprint("Login result in main: " + str(res), settings)
 | 
			
		||||
        settings["loggedin"] = res
 | 
			
		||||
        settings["continueui"] = True
 | 
			
		||||
 | 
			
		||||
def blockdata_done(res):
 | 
			
		||||
    global settings
 | 
			
		||||
    fprint("FINISHED downloading block data")
 | 
			
		||||
    fprint("FINISHED downloading block data", settings)
 | 
			
		||||
    tmpkill = settings["kill"]
 | 
			
		||||
    settings["kill"] = False
 | 
			
		||||
    #block_res = pool.apply_async(block.block_conn, (config, datafile, res, settings))
 | 
			
		||||
@@ -91,29 +91,29 @@ def blockdata_done(res):
 | 
			
		||||
    tmplist = settings["badapps"]
 | 
			
		||||
    
 | 
			
		||||
    for x in block_pids:
 | 
			
		||||
        fprint(x)
 | 
			
		||||
        fprint(x, settings)
 | 
			
		||||
        if not x in tmplist:
 | 
			
		||||
            tmplist.append(x)
 | 
			
		||||
    settings["badapps"] = tmplist
 | 
			
		||||
    fprint(settings["badapps"])
 | 
			
		||||
    fprint(settings["badapps"], settings)
 | 
			
		||||
    
 | 
			
		||||
    tmplist = settings["badips"]
 | 
			
		||||
    for x in block_ips:
 | 
			
		||||
        fprint(x)
 | 
			
		||||
        fprint(x, settings)
 | 
			
		||||
        if not x in tmplist:
 | 
			
		||||
            tmplist.append(x)
 | 
			
		||||
    settings["badips"] = tmplist
 | 
			
		||||
    fprint(settings["badips"])
 | 
			
		||||
    fprint(settings["badips"], settings)
 | 
			
		||||
 | 
			
		||||
    settings["kill"] = tmpkill
 | 
			
		||||
 | 
			
		||||
    tmplist = settings["badlines"]
 | 
			
		||||
    for x in block_data:
 | 
			
		||||
        fprint(x)
 | 
			
		||||
        fprint(x, settings)
 | 
			
		||||
        if not x in tmplist:
 | 
			
		||||
            tmplist.append(x)
 | 
			
		||||
    settings["badlines"] = tmplist
 | 
			
		||||
    fprint(settings["badlines"])
 | 
			
		||||
    fprint(settings["badlines"], settings)
 | 
			
		||||
 | 
			
		||||
    settings["newdata"] = True
 | 
			
		||||
        
 | 
			
		||||
@@ -121,7 +121,7 @@ def killall():
 | 
			
		||||
    kids = active_children()
 | 
			
		||||
    for kid in kids:
 | 
			
		||||
        kid.kill()
 | 
			
		||||
    fprint("Every child has been killed")
 | 
			
		||||
    fprint("Every child has been killed", settings)
 | 
			
		||||
    os.kill(os.getpid(), 9) # dirty kill of self
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -145,7 +145,7 @@ def mainloop(pool):
 | 
			
		||||
        if netdata_res is None or netdata_res.ready():
 | 
			
		||||
            #rawdata = netdata_res.get()
 | 
			
		||||
            #procdata_res = pool.apply_async(process_netstat, (rawdata))
 | 
			
		||||
            fprint("netstat starting")
 | 
			
		||||
            fprint("netstat starting", settings)
 | 
			
		||||
            netdata_res = pool.apply_async(netstat.start, callback=netstat_done)
 | 
			
		||||
            #fprint(netdata_res.successful())
 | 
			
		||||
    
 | 
			
		||||
@@ -204,7 +204,7 @@ def mainloop(pool):
 | 
			
		||||
            badproto = line[1]
 | 
			
		||||
            badip = line[4]
 | 
			
		||||
            badport = line[5]
 | 
			
		||||
            fprint("Firewalling " + badip + ":" + str(badport))
 | 
			
		||||
            fprint("Firewalling " + badip + ":" + str(badport), settings)
 | 
			
		||||
            cmd = 'New-NetFirewallRule -DisplayName "IPPigeon Security Rule ' + badip + ':' + str(badport) + '" -Group "IPPigeon" -Direction Outbound -LocalPort Any -Protocol ' + badproto + ' -Action Block -RemoteAddress ' + badip + ' -RemotePort ' + str(badport)
 | 
			
		||||
            run_cmd(cmd)
 | 
			
		||||
        
 | 
			
		||||
@@ -216,8 +216,9 @@ def mainloop(pool):
 | 
			
		||||
        with open(find_data_file('config.yml'), 'w') as filewrite:
 | 
			
		||||
            #global config
 | 
			
		||||
            yaml.dump(config, filewrite)
 | 
			
		||||
        fprint("Config saved!")
 | 
			
		||||
 | 
			
		||||
        fprint("Config saved!", settings)
 | 
			
		||||
    
 | 
			
		||||
        
 | 
			
		||||
    sleep(interval / (interval * config["core"]["clockspeed"]))
 | 
			
		||||
    counter += 1
 | 
			
		||||
    if counter == interval * config["core"]["clockspeed"]:
 | 
			
		||||
@@ -273,6 +274,7 @@ if __name__ == '__main__':
 | 
			
		||||
            settings["fwll"] = 0
 | 
			
		||||
            settings["running"] = config["core"]["autostart"]
 | 
			
		||||
            settings["newdata"] = False
 | 
			
		||||
            settings["logMsg"] = list()
 | 
			
		||||
            killme = manager.Value('d', 0)
 | 
			
		||||
            #killme = False
 | 
			
		||||
            # launch background UI app as process
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								netstat.py
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								netstat.py
									
									
									
									
									
								
							@@ -4,6 +4,7 @@ from util import fprint
 | 
			
		||||
from util import run_cmd
 | 
			
		||||
from util import win32
 | 
			
		||||
from util import linux
 | 
			
		||||
from ippigeon import settings
 | 
			
		||||
import util
 | 
			
		||||
import time
 | 
			
		||||
import csv
 | 
			
		||||
@@ -12,12 +13,12 @@ import csv
 | 
			
		||||
 | 
			
		||||
def process(data):
 | 
			
		||||
    setup_child()
 | 
			
		||||
    fprint("netstat processing")
 | 
			
		||||
    fprint("netstat processing", settings)
 | 
			
		||||
    if win32:
 | 
			
		||||
        #output = data.stdout
 | 
			
		||||
        #print(output)
 | 
			
		||||
        output = data.stdout.decode().split('\r\n') # split stdout into lines
 | 
			
		||||
        #print(output)
 | 
			
		||||
        print("data", data)
 | 
			
		||||
        if output[0].find("The requested operation requires elevation.") >= 0:
 | 
			
		||||
            #print("test3")
 | 
			
		||||
            raise PermissionError("Unable to acquire netstat data without admin!")
 | 
			
		||||
@@ -68,13 +69,13 @@ def process(data):
 | 
			
		||||
        with open(find_data_file(util.datafile), "w", newline="") as f:
 | 
			
		||||
            writer = csv.writer(f)
 | 
			
		||||
            writer.writerows(output2)
 | 
			
		||||
        fprint("done creating csv")
 | 
			
		||||
        fprint("done creating csv", settings)
 | 
			
		||||
    
 | 
			
		||||
    if linux:
 | 
			
		||||
        output = data.stdout.decode().split('\n') # split stdout into lines
 | 
			
		||||
        output = [i for i in output if i]
 | 
			
		||||
        if output[0].find("Not all processes could be identified") >= 0:
 | 
			
		||||
            fprint("Not enough permissions")
 | 
			
		||||
            fprint("Not enough permissions", settings)
 | 
			
		||||
            raise PermissionError("Unable to acquire netstat data without admin!")
 | 
			
		||||
        output2 = list()
 | 
			
		||||
        output2.append([util.sysid, util.userid, util.sysdom, util.time()]) # add metadata
 | 
			
		||||
@@ -106,20 +107,20 @@ def process(data):
 | 
			
		||||
        with open(find_data_file(util.datafile), "w", newline="") as f:
 | 
			
		||||
            writer = csv.writer(f)
 | 
			
		||||
            writer.writerows(output2)
 | 
			
		||||
        fprint("done creating csv")
 | 
			
		||||
        fprint("done creating csv", settings)
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
def start():
 | 
			
		||||
    setup_child()
 | 
			
		||||
    fprint("netstat started")
 | 
			
		||||
    fprint("netstat started", settings)
 | 
			
		||||
    
 | 
			
		||||
    if win32:
 | 
			
		||||
        data = run_cmd("netstat -n -o -b")
 | 
			
		||||
        fprint("data acquired")
 | 
			
		||||
        fprint("data acquired", settings)
 | 
			
		||||
        return data
 | 
			
		||||
 | 
			
		||||
    if linux:
 | 
			
		||||
        data = run_cmd("netstat -atunpw")
 | 
			
		||||
        fprint("data acquired")
 | 
			
		||||
        fprint("data acquired", settings)
 | 
			
		||||
        return data
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										88
									
								
								panel.py
									
									
									
									
									
								
							
							
						
						
									
										88
									
								
								panel.py
									
									
									
									
									
								
							@@ -1,4 +1,6 @@
 | 
			
		||||
import glob
 | 
			
		||||
import logging
 | 
			
		||||
import sys
 | 
			
		||||
import wx
 | 
			
		||||
import wx.lib.buttons as buttons
 | 
			
		||||
import numpy as np
 | 
			
		||||
@@ -47,7 +49,7 @@ class OtherFrame(wx.Frame):
 | 
			
		||||
        self.Show()
 | 
			
		||||
 | 
			
		||||
    def on_edit(self, event):
 | 
			
		||||
        fprint('in on_edit')
 | 
			
		||||
        fprint('in on_edit', settings)
 | 
			
		||||
 | 
			
		||||
    def on_window(self, event):
 | 
			
		||||
       return
 | 
			
		||||
@@ -173,11 +175,20 @@ class ServerPanel(wx.Panel):
 | 
			
		||||
        start_button.SetBackgroundColour((205, 215, 206))
 | 
			
		||||
        start_button.Bind(wx.EVT_BUTTON, self.on_start)
 | 
			
		||||
        #start_button.Bind(wx.EVT_ENTER_WINDOW, self.on_start)
 | 
			
		||||
 | 
			
		||||
        stop_button = wx.Button(self, label='Stop IPPigeon')
 | 
			
		||||
        stop_button.SetBackgroundColour('#F08080')
 | 
			
		||||
 | 
			
		||||
        secondary_frame_button = wx.Button(self, label='Settings')
 | 
			
		||||
        secondary_frame_button.Bind(wx.EVT_BUTTON, self.on_window)
 | 
			
		||||
 | 
			
		||||
        log_button = wx.Button(self, label='Logs')
 | 
			
		||||
        log_button.Bind(wx.EVT_BUTTON, self.on_log)
 | 
			
		||||
 | 
			
		||||
        #self.log_window = wx.LogWindow(self, 'Log Window', True)
 | 
			
		||||
    
 | 
			
		||||
        #show_log_button = wx.Button(self, wx.NewId(), 'Show Log')
 | 
			
		||||
        #show_log_button.Bind(wx.EVT_BUTTON, self._show_log)    
 | 
			
		||||
        # wx.BORDER(stop_button, wx.BORDER_NONE)
 | 
			
		||||
        stop_button.Bind(wx.EVT_BUTTON, self.on_stop)
 | 
			
		||||
        self.main_sizer.Add(self.statustext, 0,  wx.CENTER | wx.ALL | 100, 5)
 | 
			
		||||
@@ -186,6 +197,7 @@ class ServerPanel(wx.Panel):
 | 
			
		||||
        self.main_sizer.Add(secondary_frame_button, 0, wx.CENTER | wx.ALL | 100, 5)
 | 
			
		||||
        self.SetSizer(self.main_sizer)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def handle_columns(self):
 | 
			
		||||
        for col in range(len(COLUMN_NAMES)):
 | 
			
		||||
            self.list_ctrl.InsertColumn(0, COLUMN_NAMES[col], width=COLUMN_SIZES[col])
 | 
			
		||||
@@ -203,12 +215,13 @@ class ServerPanel(wx.Panel):
 | 
			
		||||
        else:
 | 
			
		||||
            wx.CallLater(1000, self.updatedata)
 | 
			
		||||
            return
 | 
			
		||||
        fprint("updatedata called")
 | 
			
		||||
        fprint("updatedata called", settings)
 | 
			
		||||
        loaddata()
 | 
			
		||||
        #logData.doLogging(logData)
 | 
			
		||||
        if self.list_ctrl.DeleteAllItems():
 | 
			
		||||
            fprint("Items deleted")
 | 
			
		||||
            fprint("Items deleted", settings)
 | 
			
		||||
        else:
 | 
			
		||||
            fprint("Unable to delete")
 | 
			
		||||
            fprint("Unable to delete", settings)
 | 
			
		||||
        for i in range(len(TEST_FILE)):
 | 
			
		||||
            if str(TEST_FILE.iloc[i, 4]).find("TIME_WAIT") >= 0 or str(TEST_FILE.iloc[i, 4]).find("FIN_WAIT_2") >= 0:
 | 
			
		||||
                continue
 | 
			
		||||
@@ -236,19 +249,29 @@ class ServerPanel(wx.Panel):
 | 
			
		||||
        wx.CallLater(1000, self.updatedata)
 | 
			
		||||
 | 
			
		||||
    def on_start(self, event):
 | 
			
		||||
        fprint('in on_start')
 | 
			
		||||
        fprint('in on_start', settings)
 | 
			
		||||
        settings["running"] = True
 | 
			
		||||
 | 
			
		||||
    def on_stop(self, event):
 | 
			
		||||
        fprint('in on_stop')
 | 
			
		||||
        fprint('in on_stop', settings)
 | 
			
		||||
        settings["running"] = False
 | 
			
		||||
        util.clear_fwll()
 | 
			
		||||
 | 
			
		||||
    def on_window(self, event):
 | 
			
		||||
        fprint("open settings")
 | 
			
		||||
        fprint("open settings", settings)
 | 
			
		||||
        dg = GetData(parent = None)
 | 
			
		||||
        dg.ShowModal()
 | 
			
		||||
 | 
			
		||||
    def on_log(self, event):
 | 
			
		||||
        fprint("open log", settings)
 | 
			
		||||
        dg = logData(parent = None)
 | 
			
		||||
        #fprint("attempting logLoop", settings)
 | 
			
		||||
        logData.logLoop(dg)
 | 
			
		||||
        #fprint("did logLoop work?", settings)
 | 
			
		||||
        dg.ShowModal()
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def ShowImage(self, imageFile):
 | 
			
		||||
        if imageFile == "":
 | 
			
		||||
            self.bitmap = wx.StaticBitmap(self, -1, size=(0, 0))
 | 
			
		||||
@@ -277,19 +300,64 @@ def openwindow(data, sets, kill):
 | 
			
		||||
    displaydata = data
 | 
			
		||||
    settings = sets
 | 
			
		||||
    if settings["loggedin"]:
 | 
			
		||||
        fprint("Creating server panel")
 | 
			
		||||
        fprint("Creating server panel", settings)
 | 
			
		||||
        loaddata()
 | 
			
		||||
        app = wx.App(False)
 | 
			
		||||
        frame = OtherFrame()
 | 
			
		||||
        frame.SetIcon(wx.Icon(find_data_file("icon.ico"), wx.BITMAP_TYPE_ICO))
 | 
			
		||||
        app.MainLoop()
 | 
			
		||||
    else:
 | 
			
		||||
        fprint("Creating login panel")
 | 
			
		||||
        fprint("Creating login panel", settings)
 | 
			
		||||
        
 | 
			
		||||
        app = wx.App(False)
 | 
			
		||||
        frame = ServerFrame()
 | 
			
		||||
        frame.SetIcon(wx.Icon(find_data_file("icon.ico"), wx.BITMAP_TYPE_ICO))
 | 
			
		||||
        app.MainLoop()
 | 
			
		||||
class RedirectText(object):
 | 
			
		||||
    def __init__(self,aWxTextCtrl):
 | 
			
		||||
        self.out = aWxTextCtrl
 | 
			
		||||
 | 
			
		||||
    def write(self,string):
 | 
			
		||||
        self.out.WriteText(string)
 | 
			
		||||
 | 
			
		||||
class logData(wx.Dialog):
 | 
			
		||||
    def __init__(self, parent):
 | 
			
		||||
        wx.Dialog.__init__(self, parent, wx.ID_ANY, "Logs: ", size = (800,500))
 | 
			
		||||
        self.p = wx.Panel(self, wx.ID_ANY)
 | 
			
		||||
        #self.logBox = wx.BoxSizer(wx.VERTICAL)
 | 
			
		||||
        self.logsTitle  = wx.StaticText(self.p, label="Logs", pos=(20,20))
 | 
			
		||||
        self.logs = wx.TextCtrl(self.p, pos=(20,40), size= (700, 400), style=wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
 | 
			
		||||
        self.logs.WriteText("init\n")
 | 
			
		||||
        #keepLoop = False
 | 
			
		||||
 | 
			
		||||
    def logLoop(self):
 | 
			
		||||
        self.logs.WriteText("before while loop\n")
 | 
			
		||||
        i=0
 | 
			
		||||
        if (settings["logMsg"] is not None):
 | 
			
		||||
            while(i < len(settings["logMsg"])):
 | 
			
		||||
                #for i in range(len(settings["logMsg"])):
 | 
			
		||||
                #self.logs.WriteText("in while loop\n")
 | 
			
		||||
                self.logs.WriteText(settings["logMsg"][i])
 | 
			
		||||
                self.logs.WriteText("\n")
 | 
			
		||||
                i+=1
 | 
			
		||||
        else:
 | 
			
		||||
            self.logs.WriteText("settings is none :(")
 | 
			
		||||
            settings["logMsg"].add("init string for list")
 | 
			
		||||
            logData.logLoop(self)
 | 
			
		||||
        self.logs.WriteText("after while loop\n")
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        #redir = RedirectText(self.logs)
 | 
			
		||||
        #sys.stdout = redir
 | 
			
		||||
        #self.logs.WriteText(redir)
 | 
			
		||||
 | 
			
		||||
        #self.logs.LoadFile('output.log')
 | 
			
		||||
    
 | 
			
		||||
    #def doLogging(self):
 | 
			
		||||
        #self.logs.WriteText("hi from doLogging\n")
 | 
			
		||||
        #self.logs.WriteText(settings["logMsg"])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GetData(wx.Dialog):
 | 
			
		||||
    def __init__(self, parent):
 | 
			
		||||
@@ -338,7 +406,7 @@ class GetData(wx.Dialog):
 | 
			
		||||
 | 
			
		||||
    def OnQuit(self, event):
 | 
			
		||||
        # save changes
 | 
			
		||||
        fprint("saving changes...")
 | 
			
		||||
        fprint("saving changes...", settings)
 | 
			
		||||
        config = settings["config"]
 | 
			
		||||
        config["sftp"]["host"] = self.hostnametext.GetValue()
 | 
			
		||||
        config["sftp"]["user"] = self.usertext.GetValue()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								ssh.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								ssh.py
									
									
									
									
									
								
							@@ -5,25 +5,25 @@ from util import setup_child
 | 
			
		||||
from util import fprint
 | 
			
		||||
from invoke import exceptions
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
settings = None
 | 
			
		||||
def sftp_send_data(config, filename, filetype):
 | 
			
		||||
    setup_child()
 | 
			
		||||
    fprint("Connecting over SSH to " + config['sftp']['host'])
 | 
			
		||||
    fprint("Connecting over SSH to " + config['sftp']['host'], settings)
 | 
			
		||||
    c = Connection(host=config['sftp']['host'], user=config['sftp']['user'], port=config['sftp']['port'], connect_kwargs={"key_filename": find_data_file(config['sftp']['keyfile']),})
 | 
			
		||||
    fprint("Sending data over SFTP: " + filename)
 | 
			
		||||
    fprint(c.put(find_data_file(filename), remote=config['sftp']['filepath'][filetype]))
 | 
			
		||||
    fprint("Data sent over SFTP successfully")
 | 
			
		||||
    fprint("Sending data over SFTP: " + filename, settings)
 | 
			
		||||
    fprint(c.put(find_data_file(filename), remote=config['sftp']['filepath'][filetype]), settings)
 | 
			
		||||
    fprint("Data sent over SFTP successfully", settings)
 | 
			
		||||
    #command = 'ls ' + config['sftp']['filepath'][filetype]
 | 
			
		||||
    #fprint(c.run(command))
 | 
			
		||||
 | 
			
		||||
def check_for_file(config, filename, location):
 | 
			
		||||
    setup_child()
 | 
			
		||||
    fprint("Connecting over SSH to " + config['sftp']['host'])
 | 
			
		||||
    fprint("Connecting over SSH to " + config['sftp']['host'], settings)
 | 
			
		||||
    c = Connection(host=config['sftp']['host'], user=config['sftp']['user'], port=config['sftp']['port'], connect_kwargs={"key_filename": find_data_file(config['sftp']['keyfile']),})
 | 
			
		||||
    fprint("Checking for existence of file " + config['sftp']['filepath'][location] + "/" + filename)
 | 
			
		||||
    fprint("Checking for existence of file " + config['sftp']['filepath'][location] + "/" + filename, settings)
 | 
			
		||||
    try:
 | 
			
		||||
        res = c.run("ls -l " + config['sftp']['filepath'][location] + "/" + filename, hide=True)
 | 
			
		||||
        fprint("File " + filename + " exists!")
 | 
			
		||||
        fprint("File " + filename + " exists!", settings)
 | 
			
		||||
        return c.run("cat " + config['sftp']['filepath'][location] + "/" + filename, hide=True)
 | 
			
		||||
    except exceptions.UnexpectedExit:
 | 
			
		||||
        return False
 | 
			
		||||
@@ -32,9 +32,9 @@ def run_ssh(config, command, location):
 | 
			
		||||
    setup_child()
 | 
			
		||||
    fprint("Connecting over SSH to " + config['sftp']['host'])
 | 
			
		||||
    c = Connection(host=config['sftp']['host'], user=config['sftp']['user'], port=config['sftp']['port'], connect_kwargs={"key_filename": find_data_file(config['sftp']['keyfile']),})
 | 
			
		||||
    fprint("cd to " + config['sftp']['filepath'][location])
 | 
			
		||||
    fprint("cd to " + config['sftp']['filepath'][location], settings)
 | 
			
		||||
    with c.cd(config['sftp']['filepath'][location]):
 | 
			
		||||
        fprint("Running ssh command: " + command)
 | 
			
		||||
        fprint("Running ssh command: " + command, settings)
 | 
			
		||||
        res = c.run(command, hide=True, asynchronous=True)
 | 
			
		||||
        return res
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ class TaskBarIcon(wx.adv.TaskBarIcon):
 | 
			
		||||
    def CreatePopupMenu(self):
 | 
			
		||||
        menu = wx.Menu()
 | 
			
		||||
        create_menu_item(menu, 'Control Panel', self.on_open)
 | 
			
		||||
        #create_menu_item(menu, 'Login test', self.on_login)
 | 
			
		||||
        create_menu_item(menu, 'Login test', self.on_login)
 | 
			
		||||
        menu.AppendSeparator()
 | 
			
		||||
        create_menu_item(menu, 'Exit', self.on_exit)
 | 
			
		||||
        return menu
 | 
			
		||||
@@ -42,7 +42,7 @@ class TaskBarIcon(wx.adv.TaskBarIcon):
 | 
			
		||||
        self.SetIcon(icon, TRAY_TOOLTIP)
 | 
			
		||||
 | 
			
		||||
    def on_left_down(self, event):      
 | 
			
		||||
        fprint ('Tray icon was left-clicked.')
 | 
			
		||||
        fprint ('Tray icon was left-clicked.', settings)
 | 
			
		||||
 | 
			
		||||
    def on_open(self, event):
 | 
			
		||||
        settings["showui"] = True
 | 
			
		||||
@@ -81,7 +81,7 @@ def background(data, sets, kill):
 | 
			
		||||
    app = TaskbarApp(False)
 | 
			
		||||
    displaydata = data
 | 
			
		||||
    settings = sets
 | 
			
		||||
    fprint("Creating taskbar icon")
 | 
			
		||||
    fprint("Creating taskbar icon", settings)
 | 
			
		||||
    app.MainLoop()
 | 
			
		||||
        
 | 
			
		||||
TRAY_ICON = find_data_file('icon.png')
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								util.py
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								util.py
									
									
									
									
									
								
							@@ -7,11 +7,13 @@ import time as t
 | 
			
		||||
from time import sleep
 | 
			
		||||
import uuid
 | 
			
		||||
 | 
			
		||||
logMsg = ""
 | 
			
		||||
logCont = ""
 | 
			
		||||
win32 = platform == "win32"
 | 
			
		||||
linux = platform == "linux" or platform == "linux2"
 | 
			
		||||
macos = platform == "darwin"
 | 
			
		||||
datafile = ""
 | 
			
		||||
 | 
			
		||||
settings=None
 | 
			
		||||
if win32:
 | 
			
		||||
    sysid = hex(uuid.getnode())
 | 
			
		||||
    datafile += sysid
 | 
			
		||||
@@ -43,21 +45,28 @@ def time():
 | 
			
		||||
def kill(pid):
 | 
			
		||||
    setup_child()
 | 
			
		||||
    if pid > 0:
 | 
			
		||||
        fprint("Killing PID " + str(pid))
 | 
			
		||||
        fprint("Killing PID " + str(pid), settings)
 | 
			
		||||
        os.kill(int(pid), 9)
 | 
			
		||||
        fprint("Signal 9 sent to PID " + str(pid))
 | 
			
		||||
        fprint("Signal 9 sent to PID " + str(pid), settings)
 | 
			
		||||
 | 
			
		||||
def fprint(msg):
 | 
			
		||||
def fprint(msg, settings = None):
 | 
			
		||||
    #if not getattr(sys, "frozen", False):
 | 
			
		||||
    setup_child()
 | 
			
		||||
    setup_child(settings)
 | 
			
		||||
    try:
 | 
			
		||||
        frm = inspect.stack()[1]
 | 
			
		||||
        
 | 
			
		||||
        mod = inspect.getmodule(frm[0])
 | 
			
		||||
        print('[' + mod.__name__ + ":" + frm.function + ']:', str(msg))
 | 
			
		||||
        logMsg = '[' + mod.__name__ + ":" + frm.function + ']:' + str(msg)
 | 
			
		||||
        
 | 
			
		||||
        print(logMsg)
 | 
			
		||||
        if (settings is not None):
 | 
			
		||||
            tmpList = settings["logMsg"]
 | 
			
		||||
            tmpList.append(logMsg)
 | 
			
		||||
            settings["logMsg"] = tmpList
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        try:
 | 
			
		||||
            print('[????:' + frm.function + ']:', str(msg))
 | 
			
		||||
            print(e)
 | 
			
		||||
        except:
 | 
			
		||||
            print('[????]:', str(msg))
 | 
			
		||||
        
 | 
			
		||||
@@ -86,28 +95,38 @@ def run_cmd(cmd):
 | 
			
		||||
        #else:
 | 
			
		||||
        #    print("alt")
 | 
			
		||||
        startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW    # , "-WindowStyle", "hidden"
 | 
			
		||||
        fprint("running PS command: " + cmd)
 | 
			
		||||
        fprint("running PS command: " + cmd, settings)
 | 
			
		||||
        completed = subprocess.run(["powershell", "-Command", cmd], capture_output=True, startupinfo=startupinfo)
 | 
			
		||||
        fprint("ran PS command successfully")
 | 
			
		||||
        fprint("ran PS command successfully", settings)
 | 
			
		||||
        #completed = subprocess.run(["powershell", "-WindowStyle", "hidden", "-Command", cmd], capture_output=True, startupinfo=startupinfo)
 | 
			
		||||
        return completed
 | 
			
		||||
    if linux:
 | 
			
		||||
        fprint("running sh command: " + cmd)
 | 
			
		||||
        fprint("running sh command: " + cmd, settings)
 | 
			
		||||
        completed = subprocess.run(["sh", "-c", cmd], capture_output=True)
 | 
			
		||||
        fprint("ran sh command successfully")
 | 
			
		||||
        fprint("ran sh command successfully", settings)
 | 
			
		||||
        return completed
 | 
			
		||||
 | 
			
		||||
def setup_child():
 | 
			
		||||
def setup_child(sets=None):
 | 
			
		||||
    if not getattr(sys, "frozen", False):
 | 
			
		||||
        sys.stdout = Logger(filename=find_data_file("output.log"))
 | 
			
		||||
        sys.stderr = Logger(filename=find_data_file("output.log"))
 | 
			
		||||
    if sets is not None:
 | 
			
		||||
        settings = sets
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Logger(object):
 | 
			
		||||
    def __init__(self, filename="output.log"):
 | 
			
		||||
        self.string = ""
 | 
			
		||||
        self.log = open(filename, "a")
 | 
			
		||||
        self.terminal = sys.stdout
 | 
			
		||||
 | 
			
		||||
    def write(self, message):
 | 
			
		||||
        self.string += message
 | 
			
		||||
        self.string += "\n"
 | 
			
		||||
 | 
			
		||||
        self.log.write(message)
 | 
			
		||||
        #close(filename)
 | 
			
		||||
        #self.log = open(filename, "a")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user