#Robot RDPActive settings
from pyOpenRPA . Robot import OrchestratorConnector
from pyOpenRPA . Tools import RobotRDPActive # For RobotRDPActive folder purposes
import os
import logging
import datetime
import sys
#Definitions
lOrchestratorHost = " localhost "
lOrchestratorPort = 8081
lOrchestratorProtocol = " http "
lOrchestratorAuthToken = " 1992-04-03-0643-ru-b4ff-openrpa52zzz "
lRobotRDPActiveFolderPath = ' \\ ' . join ( RobotRDPActive . __file__ . split ( ' \\ ' ) [ : - 1 ] )
#print(f"{os.path.join(lRobotRDPActiveFolderPath,'SessionDefs.py')}")
def Settings ( ) :
mDict = {
" RDPList " :
[
{
" Host " : " 77.77.22.22 " , # Host address
" Port " : " 7777 " , # RDP Port
" Login " : " test " , # Login
" Password " : " test " , # Password
" Screen " : {
" Width " : 1680 , #Width of the remote desktop in pixels
" Height " : 1050 , #Height of the remote desktop in pixels
# "640x480" or "1680x1050" or "FullScreen". If Resolution not exists set full screen
" FlagUseAllMonitors " : False , # True or False
" DepthBit " : " 32 " # "32" or "24" or "16" or "15"
} ,
" SharedDriveList " : [ " c " ] , # List of the Root sesion hard drives
###### Will updated in program ############
" SessionHex " : " " , # Hex is created when robot runs
" SessionIsWindowExistBool " : False , # Flag if the RDP window is exist, old name "FlagSessionIsActive". Check every n seconds
" SessionIsWindowResponsibleBool " : False # Flag if RDP window is responsible (recieve commands). Check every nn seconds. If window is Responsible - window is Exist too
}
] ,
" ResponsibilityCheckIntervalSec " : None , # Seconds interval when Robot check the RDP responsibility. if None - dont check
" FullScreenSessionIndex " : None , #Index of the current session which is full screened, None is no session in fullscreen
" Logger " : logging . getLogger ( " RobotRDPActive " ) ,
" OrchestratorToRobotStorage " : {
" FullScreenSessionIndex " : None , #Index of the session which is full screen in GUI. None if no session in full screen
" IgnoreIndexList " : [ ]
} ,
" OrchestratorToRobotResetStorage " : {
" SafeTurnOff " : False , #Control from orchestrator to safety turn off robot
" ActivityList " : [
#{
# "ModulePath": f"{os.path.join(lRobotRDPActiveFolderPath,'SessionDefs.py')}", # "Session\\SessionDefs.py"
# "DefName":"test", # Function name
# "ArgList":[1,2,3], # Args list
# "ArgDict":{"ttt":1,"222":2,"dsd":3} # Args dictionary
#}
]
} ,
" OrchestratorConnector " : {
#Fill below
} ,
" OrchestratorConnectorTerminateAll " : OrchestratorConnector . IntervalTerminateAll , #Call this function when program must be shutted down (to kill threads from OrchestratorConnector)
" Scheduler " : None # !!! Will be filled below
}
###############
# Scheduler operations for RDP
###############
mDict [ " Scheduler " ] = {
" ActivityTimeCheckLoopSeconds " : 5 , #Количество секунд, между циклами проверки действий
" ActivityTimeList " : [
{
" TimeHH:MM " : " 22:23 " , #Time [HH:MM] to trigger activity
" WeekdayList " : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] , #List of the weekday index when activity is applicable, Default [1,2,3,4,5,6,7]
" Activity " : {
" ModulePath " : f " { os . path . join ( lRobotRDPActiveFolderPath , ' GlobalDictSessionIndex_Defs.py ' ) } " , # "Session\\SessionDefs.py"
" DefName " : " ProcessStop " , # Function name
" ArgList " : [ ] , # Args list
" ArgDict " : { " inGlobalDict " : mDict , " inSessionIndex " : 0 , " inProcessName " : " notepad.exe " , " inFlagForceClose " : True } # Args dictionary
}
} ,
{
" TimeHH:MMStart " : " 12:40 " , #Time [HH:MM] to trigger activity
" TimeHH:MMStop " : " 17:10 " ,
" ActivityIntervalSeconds " : 5 ,
" WeekdayList " : [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] , #List of the weekday index when activity is applicable, Default [1,2,3,4,5,6,7]
" Activity " : {
" ModulePath " : f " { os . path . join ( lRobotRDPActiveFolderPath , ' GlobalDictSessionIndex_Defs.py ' ) } " , # "RobotRDPActive\\SessionDefs.py"
" DefName " : " ProcessStartIfNotRunning " , # Function name
" ArgList " : [ ] , # Args list
" ArgDict " : { " inGlobalDict " : mDict , " inSessionIndex " : 0 , " inProcessName " : " notepad.exe " , " inFilePath " : " notepad " } # Args dictionary
}
}
]
}
######################
#OrchestratorConnector
######################
mDict [ " OrchestratorConnector " ] = {
" IntervalDataSendAsync " : [
{
" Interval " : 2.7 ,
" RobotStorage " : mDict ,
" RobotStorageKey " : " RDPList " ,
" OrchestratorKeyList " : [ " Storage " , " RobotRDPActive " , " RobotToOrchestratorStorage " , " RDPList " ] ,
" OrchestratorProtocol " : lOrchestratorProtocol ,
" OrchestratorHost " : lOrchestratorHost ,
" OrchestratorPort " : lOrchestratorPort ,
" OrchestratorAuthToken " : lOrchestratorAuthToken
} ,
{
" Interval " : 2.7 ,
" RobotStorage " : mDict ,
" RobotStorageKey " : " RDPList " ,
" OrchestratorKeyList " : [ " Storage " , " RobotRDPActive " , " RobotToOrchestratorStorage " , " FullScreenSessionIndex " ] ,
" OrchestratorProtocol " : lOrchestratorProtocol ,
" OrchestratorHost " : lOrchestratorHost ,
" OrchestratorPort " : lOrchestratorPort ,
" OrchestratorAuthToken " : lOrchestratorAuthToken
}
] ,
" IntervalDataReceiveResetAsync " : [
{
" Interval " : 3.3 ,
" RobotStorage " : mDict ,
" RobotStorageKey " : " OrchestratorToRobotResetStorage " ,
" RobotResetValue " : mDict [ " OrchestratorToRobotResetStorage " ] ,
" OrchestratorKeyList " : [ " Storage " , " RobotRDPActive " , " OrchestratorToRobotResetStorage " ] ,
" OrchestratorProtocol " : lOrchestratorProtocol ,
" OrchestratorHost " : lOrchestratorHost ,
" OrchestratorPort " : lOrchestratorPort ,
" OrchestratorAuthToken " : lOrchestratorAuthToken
}
] ,
" IntervalDataReceiveAsync " : [
{
" Interval " : 1.5 ,
" RobotStorage " : mDict ,
" RobotStorageKey " : " OrchestratorToRobotStorage " ,
" OrchestratorKeyList " : [ " Storage " , " RobotRDPActive " , " OrchestratorToRobotStorage " ] ,
" OrchestratorProtocol " : lOrchestratorProtocol ,
" OrchestratorHost " : lOrchestratorHost ,
" OrchestratorPort " : lOrchestratorPort ,
" OrchestratorAuthToken " : lOrchestratorAuthToken
}
]
}
#Turn off many warnings from orchestrator connector logger
OrchestratorConnector . LoggerSetLevelError ( )
#Run OrchestratorConnector initialization
OrchestratorConnector . ConfigurationInit ( mDict [ " OrchestratorConnector " ] )
#########################
#Создать файл логирования
# add filemode="w" to overwrite
if not os . path . exists ( " Reports " ) :
os . makedirs ( " Reports " )
##########################
#Подготовка логгера Robot
#########################
mRobotLogger = mDict [ " Logger " ]
mRobotLogger . setLevel ( logging . INFO ) #logging.DEBUG
# create the logging file handler
mRobotLoggerFH = logging . FileHandler ( " Reports \ ReportRobotRDPActive_ " + datetime . datetime . now ( ) . strftime ( " % Y_ % m_ %d " ) + " .log " )
mRobotLoggerFormatter = logging . Formatter ( ' %(asctime)s - %(name)s - %(levelname)s - %(message)s ' )
mRobotLoggerFH . setFormatter ( mRobotLoggerFormatter )
# add handler to logger object
mRobotLogger . addHandler ( mRobotLoggerFH )
####################Add console output
if mDict [ " Logs " ] [ " FlagShowInConsole " ] :
handler = logging . StreamHandler ( sys . stdout )
handler . setFormatter ( lRobotLoggerFormatter )
mRobotLogger . addHandler ( handler )
############################################
return mDict