diff --git a/Orchestrator/orchestratorProcessor.py b/Orchestrator/orchestratorProcessor.py index 3c005e3f..4e914add 100644 --- a/Orchestrator/orchestratorProcessor.py +++ b/Orchestrator/orchestratorProcessor.py @@ -5,8 +5,12 @@ import pdb import os import sys import subprocess +import win32ts #Глобальная переменная - все глобальные значения программы global mGlobalDict + +#Включить WTS (WIN32TS) +mWTSServer = lWTSServer = win32ts.WTSOpenServer("localhost") #{ # actionList: # [ @@ -25,6 +29,9 @@ global mGlobalDict # }, # { # type: +# }, +# { +# type: # } # ] # @@ -65,5 +72,24 @@ def ProcessingRun(inConfigurationDict): if lItem["type"]=="ActivityRestartOrchestrator": os.execl(sys.executable,os.path.abspath(__file__),*sys.argv) sys.exit(0) + #Обработка команды ActivitySessionCheckSetActive + if lItem["type"]=="ActivitySessionCheckSetActive": + lResult["actionListResult"][-1] = {**lResult["actionListResult"][-1], **{"result":{"IsActivated":False}}} + lPID = os.getpid() + #pdb.set_trace() + lSessionId = win32ts.ProcessIdToSessionId(lPID) + lSessionList = win32ts.WTSEnumerateSessions(lWTSServer) + #При попытке закрыть сервер возникает ошибка + #win32ts.WTSCloseServer(lWTSServer) + #Наложить фильтр + lSessionFiltered = [d for d in lSessionList if d["SessionId"]==lSessionId] + #Выполнить переход в активное состояние , если State != 0 + if lSessionFiltered[0]["State"] != 0: + lCMDCodeTSCON = "tscon " + str(lSeessionId) + " /dest:console" + lCMDCode="cmd /c "+lCMDCodeTSCON + subprocess.Popen(lCMDCode) + lResult["actionListResult"][-1] = {**lResult["actionListResult"][-1], **{"result":{"IsActivated":True}}} + #Выключить соединение + #Вернуть результат - return lResult \ No newline at end of file + return lResult