def __server_thread(self): """Thread function to (re)connect active connection to remote host. .. warning:: Do not call this directly, for internal use only. """ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if not isWindows(): sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('', self.remotePort)) sock.listen(1) while True: accept_result = sock.accept() if accept_result is None: continue (self.sock, (sourceIP, sourcePort)) = accept_result # setup socket self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) # make socket nonblocking self.sock.setblocking(0) # start the receiver thread self._start_receiver() sock.close() return
def get_reg(REG_PATH, name): if isWindows(): import _winreg if REG_PATH.split("\\")[0] == "HKEY_LOCAL_MACHINE": rootName = _winreg.HKEY_LOCAL_MACHINE elif REG_PATH.split("\\")[0] == "HKEY_CLASSES_ROOT": rootName = _winreg.HKEY_CLASSES_ROOT elif REG_PATH.split("\\")[0] == "HKEY_CURRENT_USER": rootName = _winreg.HKEY_CURRENT_USER elif REG_PATH.split("\\")[0] == "HKEY_USERS": rootName = _winreg.HKEY_USERS elif REG_PATH.split("\\")[0] == "HKEY_CURRENT_CONFIG": rootName = _winreg.HKEY_CURRENT_CONFIG else: rootName = "" REG_PATH = "" print "no find root name :", REG_PATH.split("\\")[0] REG_PATH = REG_PATH[len(REG_PATH.split("\\")[0]) + 1:] try: registry_key = _winreg.OpenKey(rootName, REG_PATH, 0, _winreg.KEY_READ) value, regtype = _winreg.QueryValueEx(registry_key, name) _winreg.CloseKey(registry_key) return value except WindowsError, e: print "get_reg error,message : ", e return None
def clearWebexPackage(): """clear webex package @param filePath: service path on windows @type filePath: string @return: operation result @rtype: tuple """ result = False,'clear package fail' if isWindows(): resultlist=[] resultlist=[] directoryList = ['C:\Users\Administrator\AppData\Local\Webex', 'C:\Users\Administrator\AppData\LocalLow\Webex', 'C:\ProgramData\Webex'] for dire in directoryList: print 'delete directory :' + dire p = subprocess.Popen(('rd /s /q '+dire),shell = True) ret = p.wait() print 'delete directory result :' + str(ret) p.kill() resultlist.append(ret) filePathList = [r'C:\Windows\Downloaded Program Files\ieatgpc.dll', r'C:\Users\Administrator\AppData\Roaming\Mozilla\plugins\npatgpc.dll', r'C:\Program Files\Google\Chrome\Application\Plugins\npatgpc.dll', r'C:\Program Files (x86)\Google\Chrome\Application\Plugins\npatgpc.dll', r'C:\Program Files\Mozilla Firefox\browser\plugins\npatgpc.dll', r'C:\Program Files (x86)\Mozilla Firefox\browser\plugins\npatgpc.dll', r'C:\Users\Administrator\AppData\Local\WebEx\ChromeNativeHost\ciscowebexstart.exe'] for file in filePathList: print 'delete file :' + file p = subprocess.Popen(('del /f /s /q /a '+'"'+file+'"'),shell = True) ret = p.wait() print 'delete file result :' + str(ret) p.kill() resultlist.append(ret) for resultT in resultlist: if resultT in [0,1,2]: result = True,'' elif isMacOSX(): resultlist=[] p6=subprocess.Popen('rm -rf ~/Library/Application\ Support/WebEx\ Folder',shell=True) ret6 = p6.wait() resultlist.append(ret6) for resultT in resultlist: if resultT in [0]: result = True,'' return result
def start(self): """Starts the server and returns. It will launch a listener running in background to wait for incoming connections.""" self.listenSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if not isWindows(): self.listenSock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.listenSock.bind(('', self.port)) self.listenSock.listen(1) self.listenSock.setblocking(0) self.listenThread = threading.Thread(target=self._listen_thread, args=(), name="secsgem_hsmsMultiPassiveServer_listenThread_{}".format(self.port)) self.listenThread.start() self.logger.debug("listening")
def getBrowserPID(self): """return webdriver process ID @return: browser process ID @rtype: int """ if self.browserName.lower() == "firefox": return self.myDriver.binary.process.pid elif self.browserName.lower() == "ie": if isWindows(): s = 'iexplore.exe' im = '"IMAGENAME eq %s"'%s cmd = "tasklist /NH /FI %s"%im cmd = '''for /f \"tokens=2 delims=,"'''+''' %F'''+" in ('tasklist /nh /fi %s"%im+" /fo csv') do @echo %~F" s = os.popen(cmd).read() pidlist = s.split("\n") # print "filter(None, pidlist)",filter(None, pidlist) return filter(None, pidlist)
def stopMeeting(self): """kill meeting process. @return: True when stop meeting successfully,otherwise return False and message @rtype: tuple """ if isWindows() : toKillProccessList = ["IEDriverServer.exe","chromedriver.exe"] resultlist = [] if self.serviceType.lower() == "mc" or self.serviceType.lower() == "ec" or self.serviceType.lower() == "tc" : toKillProccessList.append("atmgr.exe") elif self.serviceType.lower() == "sc": toKillProccessList.append("atscmgr.exe") toKillProccessList.append("OUTLOOK.EXE") for processName in toKillProccessList: p=subprocess.Popen(("taskkill /f /im " + processName),shell=True) ret = p.wait() resultlist.append(ret) for resultT in resultlist: if resultT not in [0]: return False,'stop meeting fail' return True,'' elif isMacOSX(): p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE) out, err = p.communicate() if self.serviceType.lower() == "mc": processName = "Meeting Center" elif self.serviceType.lower() == "ec": processName = "Event Center" elif self.serviceType.lower() == "tc": processName = "Training Center" elif self.serviceType.lower() == "sc": processName = "Session Center" for line in out.splitlines(): # print line if processName in line: pid = int(line.split(None, 1)[0]) os.kill(pid, signal.SIGKILL) return True,''
def set_reg(REG_PATH, name, valueType, value): # print "value = ",value if isWindows(): import _winreg if REG_PATH.split("\\")[0] == "HKEY_LOCAL_MACHINE": rootName = _winreg.HKEY_LOCAL_MACHINE elif REG_PATH.split("\\")[0] == "HKEY_CLASSES_ROOT": rootName = _winreg.HKEY_CLASSES_ROOT elif REG_PATH.split("\\")[0] == "HKEY_CURRENT_USER": rootName = _winreg.HKEY_CURRENT_USER elif REG_PATH.split("\\")[0] == "HKEY_USERS": rootName = _winreg.HKEY_USERS elif REG_PATH.split("\\")[0] == "HKEY_CURRENT_CONFIG": rootName = _winreg.HKEY_CURRENT_CONFIG else: rootName = "" REG_PATH = "" print "no find root name :", REG_PATH.split("\\")[0] REG_PATH = REG_PATH[len(REG_PATH.split("\\")[0]) + 1:] try: _winreg.CreateKey(rootName, REG_PATH) registry_key = _winreg.OpenKey(rootName, REG_PATH, 0, _winreg.KEY_WRITE) if valueType == "REG_SZ": _winreg.SetValueEx(registry_key, name, 0, _winreg.REG_SZ, value) else: _winreg.SetValueEx(registry_key, name, 0, _winreg.REG_DWORD, value) _winreg.CloseKey(registry_key) return True except WindowsError, e: print "set regitry,error is :", e return False
def check_process(): """监测进程信息""" # 监测进程 # 复制进程名 process_list = list(settings.REQUIRE_PROCESS_LIST) for p in psutil.process_iter(): try: # 监测文件描述符是否超过最大值 if common.isWindows(): fds = p.get_num_handles() if fds > settings.MAX_HANDLES_FDS: common.logger.warn(u"进程", p.name, "的句柄数超过最大值: ", fds) else: fds = p.get_num_fds() if fds > settings.MAX_HANDLES_FDS: common.logger.warn(u"进程", p.name, "的文件描述符数超过最大值: ", fds) # 监测目标进程是否正在运行 if p.name.lower() in settings.REQUIRE_PROCESS_LIST and p.is_running(): # 检测到则移除 process_list.remove(p.name.lower()) except Exception, e: pass
def replaceFile(filePath='',IsChrome = False): """replace GPC File and so on @param filePath: service path on windows @type filePath: string @param IsChrome: whether to copy chrome addon file,default is copy this file. @type IsChrome: boolean @return: operation result @rtype: boolean """ if isWindows(): print "start replace some DLL file......" fileFatherPath = r'C:\ProgramData\Webex\Webex' fileChildPath = filePath cashPath = r'C:\Users\Administrator\AppData\LocalLow\WebEx' programPath = r'C:\ProgramData\WebEx' downloadPath = r'C:\Windows\Downloaded Program Files' pluginPath = r'C:\Users\Administrator\AppData\Roaming\Mozilla\plugins' pluginPath1 = r'C:\Program Files\Google\Chrome\Application\Plugins' pluginPath2 = r'C:\Program Files (x86)\Google\Chrome\Application\Plugins' pluginPath3 = r'C:\Program Files\Mozilla Firefox\browser\plugins' pluginPath4 = r'C:\Program Files (x86)\Mozilla Firefox\browser\plugins' ChromeAddOnPath = r'C:\Users\Administrator\AppData\Local\WebEx' ChromeAddOnPath2 = r'C:\Users\Administrator\AppData\Local\WebEx\ChromeNativeHost' mountFilePath = r'\\tanfs.eng.webex.com\engta\share\clientta\ComponentFile_Pipeline\webex-windows-plugin\release' mountFilePathForChromeAddOn = r'\\tanfs.eng.webex.com\engta\share\clientta\ComponentFile_Pipeline\webex-chrome-addon\release' filePathList=[programPath,cashPath,downloadPath,pluginPath, fileFatherPath,fileChildPath,pluginPath1,pluginPath2,ChromeAddOnPath,ChromeAddOnPath2] for fileTemp in filePathList: # print 'fileTemp==',fileTemp if not os.path.exists(fileTemp): try: os.mkdir(fileTemp) except Exception,e: print e mountfileList = [] for (dirpath, dirnames, filenames) in os.walk(mountFilePath): mountfileList.extend(filenames) break fileT='' for fileT in mountfileList: if fileT in ['atgpcext.dll','atinst.exe']: try: copyfile(mountFilePath+'\\'+fileT,fileChildPath+'\\'+fileT) except Exception,e: print e if fileT in ['npatgpc.dll']: try: if not os.path.exists(pluginPath): os.makedirs(pluginPath) if not os.path.exists(pluginPath1): os.makedirs(pluginPath1) if not os.path.exists(pluginPath2): os.makedirs(pluginPath2) if not os.path.exists(pluginPath3): os.makedirs(pluginPath3) if not os.path.exists(pluginPath4): os.makedirs(pluginPath4) copyfile(mountFilePath+'\\'+fileT,pluginPath+'\\'+fileT) copyfile(mountFilePath+'\\'+fileT,pluginPath1+'\\'+fileT) copyfile(mountFilePath+'\\'+fileT,pluginPath2+'\\'+fileT) copyfile(mountFilePath+'\\'+fileT,pluginPath3+'\\'+fileT) copyfile(mountFilePath+'\\'+fileT,pluginPath4+'\\'+fileT) except Exception,e: print e
mkParam = '&SN=' + meetingKey else: startAction = "HM" mkParam = '&MK=' + meetingKey url = self.siteUrl + 'm.php?AT=' + startAction + mkParam #'https://pl.qa.webex.com/fr26java2/m.php?AT=HM&MK=' + meetingKey # print 'start meeting url=', url self.log.fdbg(os.path.normpath(__file__) + '==>startMeeting : url = ' + url) self.myDriver.get(url) try: currentUrl=str(self.myDriver.current_url) except Exception,e: self.log.fdbg(os.path.normpath(__file__) + '==>get meeting Url exception message :' + str(e)) self.log.fdbg(os.path.normpath(__file__) + '==>after start meeting Url' + currentUrl) #time.sleep(2) if isWindows(): from common.win.wStdWindow import PyWinWindow from common.PyWindow import mouseOperateOnWindow,getChildWindowListByClass import win32gui as win32 from common.input import mouseClick,mouseMove if self.browserName.lower() == 'ie' and self.downloadType.lower() in ['activex','tfs'] and not jmtFlag : tryTimes = 0 installButtonList = [] oBrowser = [] windowsList=getChildWindowListByClass(win32.GetDesktopWindow(),'',20,False,None)#find broswer object for window1 in windowsList: for pid1 in self.getBrowserPID(): if window1.getProcessId() == int(pid1): oBrowser.append(window1) if 0 != len(oBrowser): while len(installButtonList) == 0 and tryTimes <= 30: