# license update info

dev-linux
Иван Маслов 3 years ago
parent 902647e706
commit 4a52f687af

@ -1,6 +1,6 @@
Metadata-Version: 2.1 Metadata-Version: 2.1
Name: pyOpenRPA Name: pyOpenRPA
Version: 1.2.9 Version: 1.2.10
Summary: First open source RPA platform for business Summary: First open source RPA platform for business
Home-page: https://pyopenrpa.ru/ Home-page: https://pyopenrpa.ru/
Author: Ivan Maslov Author: Ivan Maslov

@ -1,13 +1,13 @@
pyOpenRPA-1.2.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 pyOpenRPA-1.2.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
pyOpenRPA-1.2.9.dist-info/METADATA,sha256=81hdNna5qHqWWH8e3tQ_vER-R7OPt3z-wu22rlHBLT8,4110 pyOpenRPA-1.2.10.dist-info/METADATA,sha256=V1vt_WDuk57Yfm0u-qNlXg6AZp5V6EacCKt6AD9wi_E,4111
pyOpenRPA-1.2.9.dist-info/RECORD,, pyOpenRPA-1.2.10.dist-info/RECORD,,
pyOpenRPA-1.2.9.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA-1.2.10.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pyOpenRPA-1.2.9.dist-info/WHEEL,sha256=qB97nP5e4MrOsXW5bIU5cUn_KSVr10EV0l-GCHG9qNs,97 pyOpenRPA-1.2.10.dist-info/WHEEL,sha256=qB97nP5e4MrOsXW5bIU5cUn_KSVr10EV0l-GCHG9qNs,97
pyOpenRPA-1.2.9.dist-info/top_level.txt,sha256=RPzwQXgYBRo_m5L3ZLs6Voh8aEkMeT29Xsul1w1qE0g,10 pyOpenRPA-1.2.10.dist-info/top_level.txt,sha256=RPzwQXgYBRo_m5L3ZLs6Voh8aEkMeT29Xsul1w1qE0g,10
pyOpenRPA/Agent/A2O.py,sha256=PlIZZCTnVrYF2i6DSAi_KbzZfc2gtcBPmOerrEZq68U,1718 pyOpenRPA/Agent/A2O.py,sha256=PlIZZCTnVrYF2i6DSAi_KbzZfc2gtcBPmOerrEZq68U,1718
pyOpenRPA/Agent/O2A.py,sha256=XHl5nytUoUqfPvmYWh5auYo-s0GIThNmkOA9ON-JCis,5535 pyOpenRPA/Agent/O2A.py,sha256=XHl5nytUoUqfPvmYWh5auYo-s0GIThNmkOA9ON-JCis,5535
pyOpenRPA/Agent/Processor.py,sha256=xNZfQ_HcV-qm_x90tBLKYJqvnENiTqHSoUk2LhDfqWQ,6346 pyOpenRPA/Agent/Processor.py,sha256=xNZfQ_HcV-qm_x90tBLKYJqvnENiTqHSoUk2LhDfqWQ,6346
pyOpenRPA/Agent/__Agent__.py,sha256=PKwNsM59YRKwWk-vtC2mX32jKdPoP1YkpEOl5LtRZCw,12628 pyOpenRPA/Agent/__Agent__.py,sha256=gqKxqu9XEEdgLNRvAlaGqDaQR2sgn_n_Vskf8dv2cQo,12692
pyOpenRPA/Agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA/Agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pyOpenRPA/Agent/__pycache__/A2O.cpython-37.pyc,, pyOpenRPA/Agent/__pycache__/A2O.cpython-37.pyc,,
pyOpenRPA/Agent/__pycache__/O2A.cpython-37.pyc,, pyOpenRPA/Agent/__pycache__/O2A.cpython-37.pyc,,
@ -75,7 +75,7 @@ pyOpenRPA/Orchestrator/Web/Index.js,sha256=YACiZAvjr6NmFlDhQu6urkJp49BX7L8WJU9p-
pyOpenRPA/Orchestrator/Web/Index.xhtml,sha256=XGPCG-qaFsAcoaXnZe1mEjPEqwcVQZ3NVPjtKX8gV4c,19192 pyOpenRPA/Orchestrator/Web/Index.xhtml,sha256=XGPCG-qaFsAcoaXnZe1mEjPEqwcVQZ3NVPjtKX8gV4c,19192
pyOpenRPA/Orchestrator/Web/__pycache__/Basic.cpython-37.pyc,, pyOpenRPA/Orchestrator/Web/__pycache__/Basic.cpython-37.pyc,,
pyOpenRPA/Orchestrator/Web/favicon.ico,sha256=6S8XwSQ_3FXPpaX6zYkf8uUewVXO9bHnrrDHEoWrEgw,112922 pyOpenRPA/Orchestrator/Web/favicon.ico,sha256=6S8XwSQ_3FXPpaX6zYkf8uUewVXO9bHnrrDHEoWrEgw,112922
pyOpenRPA/Orchestrator/__Orchestrator__.py,sha256=wIRuMdoOwudlchdoMua0u2jO5AxCeATw0RSsQ9bKreo,150251 pyOpenRPA/Orchestrator/__Orchestrator__.py,sha256=HS1DiB0t2NqcgijH6Fsjfe_QyGbIlPrgDOBGBlgkmjs,150309
pyOpenRPA/Orchestrator/__init__.py,sha256=nJhjYtBXKOUNX_yNu1rRFk5y9cDz6AFiL0M6KgX_utQ,207 pyOpenRPA/Orchestrator/__init__.py,sha256=nJhjYtBXKOUNX_yNu1rRFk5y9cDz6AFiL0M6KgX_utQ,207
pyOpenRPA/Orchestrator/__main__.py,sha256=czJrc7_57WiO3EPIYfPeF_LG3pZsQVmuAYgbl_YXcVU,273 pyOpenRPA/Orchestrator/__main__.py,sha256=czJrc7_57WiO3EPIYfPeF_LG3pZsQVmuAYgbl_YXcVU,273
pyOpenRPA/Orchestrator/__pycache__/BackwardCompatibility.cpython-37.pyc,, pyOpenRPA/Orchestrator/__pycache__/BackwardCompatibility.cpython-37.pyc,,
@ -269,7 +269,7 @@ pyOpenRPA/Robot/OrchestratorConnector.py,sha256=JUtdiUXCruqUqBD19gJBl9jk_b-tpWWx
pyOpenRPA/Robot/README.md,sha256=e2hKh7Tx6DAsX6jY_hBDhguL1L2Wiv6iugDB5otMzIA,2293 pyOpenRPA/Robot/README.md,sha256=e2hKh7Tx6DAsX6jY_hBDhguL1L2Wiv6iugDB5otMzIA,2293
pyOpenRPA/Robot/SettingsTemplate.py,sha256=Rp5XPeV2I4tCS2uf4Zkqm_ERJ6pZMg4-e5_lMqGJYLk,1453 pyOpenRPA/Robot/SettingsTemplate.py,sha256=Rp5XPeV2I4tCS2uf4Zkqm_ERJ6pZMg4-e5_lMqGJYLk,1453
pyOpenRPA/Robot/Test.py,sha256=qXr990nXiFZX5SNv6QN9GLb_U4HZRmJnbZR2qSnwilY,2878 pyOpenRPA/Robot/Test.py,sha256=qXr990nXiFZX5SNv6QN9GLb_U4HZRmJnbZR2qSnwilY,2878
pyOpenRPA/Robot/UIDesktop.py,sha256=HTlU1QLaVXD6XLaKLTgL_FAJisTxNEnH2fD7JjhqF1o,82868 pyOpenRPA/Robot/UIDesktop.py,sha256=BI5SqXXFbhsvq1sZ1eCDuil8Gz5XwkWBluIKA9zxFts,82922
pyOpenRPA/Robot/Utils/JSONNormalize.py,sha256=aIuVzuZDazhxkCOzoOjfhHVz66mp2FWdfPv5E7KWF5Y,3890 pyOpenRPA/Robot/Utils/JSONNormalize.py,sha256=aIuVzuZDazhxkCOzoOjfhHVz66mp2FWdfPv5E7KWF5Y,3890
pyOpenRPA/Robot/Utils/ProcessBitness.py,sha256=WlKL-DklGaoTnchtapOTM_ydxSB4yOeo9lcG3zr2VME,4524 pyOpenRPA/Robot/Utils/ProcessBitness.py,sha256=WlKL-DklGaoTnchtapOTM_ydxSB4yOeo9lcG3zr2VME,4524
pyOpenRPA/Robot/Utils/ProcessCommunicator.py,sha256=8GfmLnOvAdosmt7YNT86uEV9cjhKippssCX62wOMJwM,8039 pyOpenRPA/Robot/Utils/ProcessCommunicator.py,sha256=8GfmLnOvAdosmt7YNT86uEV9cjhKippssCX62wOMJwM,8039
@ -309,6 +309,7 @@ pyOpenRPA/Studio/__pycache__/Studio.cpython-37.pyc,,
pyOpenRPA/Studio/__pycache__/ValueVerify.cpython-37.pyc,, pyOpenRPA/Studio/__pycache__/ValueVerify.cpython-37.pyc,,
pyOpenRPA/Studio/__pycache__/__init__.cpython-37.pyc,, pyOpenRPA/Studio/__pycache__/__init__.cpython-37.pyc,,
pyOpenRPA/Studio/__pycache__/__main__.cpython-37.pyc,, pyOpenRPA/Studio/__pycache__/__main__.cpython-37.pyc,,
pyOpenRPA/Tools/License.py,sha256=MZT93njRtECNs4fWdD-x-x8dDBnpRaYRszR9s1cMRxk,9857
pyOpenRPA/Tools/RobotDB/ExcelCom.py,sha256=hp0dvXOEC7Au00ueh7pqxkdixV-PC-km7tCt-wRunYs,343 pyOpenRPA/Tools/RobotDB/ExcelCom.py,sha256=hp0dvXOEC7Au00ueh7pqxkdixV-PC-km7tCt-wRunYs,343
pyOpenRPA/Tools/RobotDB/HowToUse,sha256=TUXPZAFcse-PSlKFM6jcaYuuZZEmXOSSvgeqrbmIDoc,1473 pyOpenRPA/Tools/RobotDB/HowToUse,sha256=TUXPZAFcse-PSlKFM6jcaYuuZZEmXOSSvgeqrbmIDoc,1473
pyOpenRPA/Tools/RobotDB/RobotDB.py,sha256=qtGu8PS2atd0L8taCNpk-08Qpxp8Qz1lqwAcBkyLFLM,1655 pyOpenRPA/Tools/RobotDB/RobotDB.py,sha256=qtGu8PS2atd0L8taCNpk-08Qpxp8Qz1lqwAcBkyLFLM,1655
@ -343,9 +344,10 @@ pyOpenRPA/Tools/SafeSource/__pycache__/__main__.cpython-37.pyc,,
pyOpenRPA/Tools/StopSafe.py,sha256=BNTtMmvsRE1Wtri3EkwhoBi6gGOjEPRQnJSV1C03c84,2176 pyOpenRPA/Tools/StopSafe.py,sha256=BNTtMmvsRE1Wtri3EkwhoBi6gGOjEPRQnJSV1C03c84,2176
pyOpenRPA/Tools/Usage.py,sha256=KZG_jM1QnafsnQDeAtlYa2ChvBe-yigtrA971H0FjRg,2786 pyOpenRPA/Tools/Usage.py,sha256=KZG_jM1QnafsnQDeAtlYa2ChvBe-yigtrA971H0FjRg,2786
pyOpenRPA/Tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA/Tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pyOpenRPA/Tools/__pycache__/License.cpython-37.pyc,,
pyOpenRPA/Tools/__pycache__/StopSafe.cpython-37.pyc,, pyOpenRPA/Tools/__pycache__/StopSafe.cpython-37.pyc,,
pyOpenRPA/Tools/__pycache__/Usage.cpython-37.pyc,, pyOpenRPA/Tools/__pycache__/Usage.cpython-37.pyc,,
pyOpenRPA/Tools/__pycache__/__init__.cpython-37.pyc,, pyOpenRPA/Tools/__pycache__/__init__.cpython-37.pyc,,
pyOpenRPA/__init__.py,sha256=2ZxDo2fMx1Nxo5NCHXxK_NMfn527JwAo9lw-ZCHREcE,174 pyOpenRPA/__init__.py,sha256=4aJTw5pSiHsrvQTiFi8fWcdeqXTzzmSyucUP3mrB3EE,175
pyOpenRPA/__pycache__/__init__.cpython-37.pyc,, pyOpenRPA/__pycache__/__init__.cpython-37.pyc,,
pyOpenRPA/test.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA/test.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

@ -2,6 +2,7 @@ import threading, socket, getpass, sys, uuid, subprocess, base64, psutil, getpas
from . import O2A, A2O # Data flow Orchestrator To Agent from . import O2A, A2O # Data flow Orchestrator To Agent
from . import Processor # Processor Queue from . import Processor # Processor Queue
from ..Tools import Usage from ..Tools import Usage
from ..Tools import License
from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD
import os import os
@ -216,6 +217,7 @@ def ProcessWOExeUpperUserListGet():
# Main def # Main def
def Agent(inGSettings): def Agent(inGSettings):
License.ConsoleVerify()
lL = inGSettings["Logger"] lL = inGSettings["Logger"]
global gSettings global gSettings
gSettings = inGSettings gSettings = inGSettings
@ -243,5 +245,6 @@ def Agent(inGSettings):
lO2AThread.start() lO2AThread.start()
Usage.Process(inComponentStr="Agent") Usage.Process(inComponentStr="Agent")
# Send log that Agent has been started # Send log that Agent has been started
A2O.LogListSend(inGSettings=inGSettings, inLogList=[f'Host: {inGSettings["AgentDict"]["HostNameUpperStr"]}, User: {inGSettings["AgentDict"]["UserUpperStr"]}, Agent has been started.']) A2O.LogListSend(inGSettings=inGSettings, inLogList=[f'Host: {inGSettings["AgentDict"]["HostNameUpperStr"]}, User: {inGSettings["AgentDict"]["UserUpperStr"]}, Agent has been started.'])

@ -10,6 +10,7 @@ from . import Processor
from . import BackwardCompatibility # Backward compatibility from v1.1.13 from . import BackwardCompatibility # Backward compatibility from v1.1.13
from . import Core from . import Core
from . import Managers from . import Managers
from ..Tools import License
from subprocess import CREATE_NEW_CONSOLE from subprocess import CREATE_NEW_CONSOLE
from .Utils import LoggerHandlerDumpLogList from .Utils import LoggerHandlerDumpLogList
@ -2707,6 +2708,7 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato
""" """
lL = inGSettings["Logger"] lL = inGSettings["Logger"]
# https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script # https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script
License.ConsoleVerify()
if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True: if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True:
OrchestratorRerunAsAdmin() OrchestratorRerunAsAdmin()
else: else:

@ -7,6 +7,7 @@ import time
from .Utils import ProcessCommunicator from .Utils import ProcessCommunicator
from . import Utils #For ProcessBitness from . import Utils #For ProcessBitness
from ..Tools import Usage from ..Tools import Usage
from ..Tools import License
import re import re
import copy import copy
@ -1457,4 +1458,5 @@ def UIO_FocusHighlight(lWrapperObject,colour='green',thickness=2,fill=win32defin
#Определить разрядность процесса #Определить разрядность процесса
lProcessBitnessStr = str(struct.calcsize("P") * 8) lProcessBitnessStr = str(struct.calcsize("P") * 8)
Usage.Process(inComponentStr="Robot") Usage.Process(inComponentStr="Robot")
License.ConsoleVerify()

@ -0,0 +1,159 @@
"""
pyOpenRPA open license
pyOpenRPA открытая лицензия
Copyright (c) 2019 Ivan Maslov
Правообладатель: 2019 Маслов Иван Дмитриевич
Текст лицензии см. в файле: LICENSE.PDF (в корне репозитория) или по адресу: https://pyopenrpa.ru/license/oferta.pdf
https://stackoverflow.com/questions/40574732/windows-data-storage-for-all-users
certificate.key
"""
import os
import sys
import time
gProgramDataPathStr = "C:\\ProgramData"
gProgramDataPORPathStr = os.path.join(gProgramDataPathStr, "pyOpenRPA")
gProgramDataCertificateFilePathStr = os.path.join(gProgramDataPORPathStr, "certificate.key")
# TODO Изменить права, чтобы другие пользователи могли править
if not os.path.exists(gProgramDataPORPathStr): os.mkdir(gProgramDataPORPathStr)
def CertificateExists() -> bool:
"""Check if the certificate key has been inserted
:return: True - certificate key has been inserted; False - not has been inserted
:rtype: bool
"""
return os.path.exists(gProgramDataCertificateFilePathStr)
def CertificateKeySet(inCertificateKeyStr: str):
"""Get the certificate key string
:param inCertificateKeyStr: Certificate key string (see license.pdf)
:type inCertificateKeyStr: str
"""
lFile = open(gProgramDataCertificateFilePathStr, "w", encoding="utf8")
lFile.write(inCertificateKeyStr)
lFile.close()
def CertificateKeyGet() -> str or None:
"""Get the certificate key from file
:return: Certificate key (see license.pdf)
:rtype: str or None (if key is not set)
"""
lCertificateKeyStr=None
if CertificateExists():
lFile = open(gProgramDataCertificateFilePathStr, "r", encoding="utf8")
lCertificateKeyStr = lFile.read()
lFile.close()
return lCertificateKeyStr
def ConsoleVerify() -> bool:
""" Write info about certificate which has been detected on the machine
:return: true - certificate exists
:rtype: bool
"""
lCertificateExistsBool = True
lCertificateKeyStr = CertificateKeyGet()
if lCertificateKeyStr is None:
lTextStr = """
Цифровой сертификат pyOpenRPA не обнаружен.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
print(lTextStr)
lCertificateExistsBool = False
time.sleep(5)
ConsoleAccept()
else:
lTextStr = """
Обнаружен цифровой сертификат pyOpenRPA: {0}.
Проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
""".format(lCertificateKeyStr)
print(lTextStr)
return lCertificateExistsBool
def ConsoleAccept():
""" Start pyOpenRPA activation master
:return: _description_
:rtype: str
"""
lText="""
"""
print(lText)
time.sleep(2)
lText="""
(RUS LANGUAGE)
***********************************************
Добро пожаловать в систему активации pyOpenRPA!
***********************************************
pyOpenRPA - это открытое программное обеспечение класса RPA, которое разработано и зарегистрировано на территории Российской Федерации (Автор Иван Маслов, 2019г.). Все исходные коды доступны неограниченному кругу лиц для просмотра.
Данное ПО позволяет решить любые задачи, относящиеся к классу программной роботизации RPA.
Перед использованием просим убедиться в том, что Вы обладаете действующим цифровым сертификатом pyOpenRPA (далее сертификат).
Данный сертификат является свидетельством того, что Вы наделены правами в отношении pyOpenRPA в соответствии с законодательством Российской Федерации.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
#print(os.get_terminal_size())
print(lText)
lCertificateKeyStr = input("Укажите код сертификата:")
CertificateKeySet(inCertificateKeyStr=lCertificateKeyStr)

@ -3,7 +3,7 @@ r"""
The OpenRPA package (from UnicodeLabs) The OpenRPA package (from UnicodeLabs)
""" """
__version__ = 'v1.2.9' __version__ = 'v1.2.10'
__all__ = [] __all__ = []
__author__ = 'Ivan Maslov <ivan.maslov@unicodelabs.ru>' __author__ = 'Ivan Maslov <ivan.maslov@unicodelabs.ru>'
#from .Core import Robot #from .Core import Robot

@ -1,6 +1,6 @@
Metadata-Version: 2.1 Metadata-Version: 2.1
Name: pyOpenRPA Name: pyOpenRPA
Version: 1.2.9 Version: 1.2.10
Summary: First open source RPA platform for business Summary: First open source RPA platform for business
Home-page: https://pyopenrpa.ru/ Home-page: https://pyopenrpa.ru/
Author: Ivan Maslov Author: Ivan Maslov

@ -1,13 +1,13 @@
pyOpenRPA-1.2.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 pyOpenRPA-1.2.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
pyOpenRPA-1.2.9.dist-info/METADATA,sha256=81hdNna5qHqWWH8e3tQ_vER-R7OPt3z-wu22rlHBLT8,4110 pyOpenRPA-1.2.10.dist-info/METADATA,sha256=V1vt_WDuk57Yfm0u-qNlXg6AZp5V6EacCKt6AD9wi_E,4111
pyOpenRPA-1.2.9.dist-info/RECORD,, pyOpenRPA-1.2.10.dist-info/RECORD,,
pyOpenRPA-1.2.9.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA-1.2.10.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pyOpenRPA-1.2.9.dist-info/WHEEL,sha256=qB97nP5e4MrOsXW5bIU5cUn_KSVr10EV0l-GCHG9qNs,97 pyOpenRPA-1.2.10.dist-info/WHEEL,sha256=qB97nP5e4MrOsXW5bIU5cUn_KSVr10EV0l-GCHG9qNs,97
pyOpenRPA-1.2.9.dist-info/top_level.txt,sha256=RPzwQXgYBRo_m5L3ZLs6Voh8aEkMeT29Xsul1w1qE0g,10 pyOpenRPA-1.2.10.dist-info/top_level.txt,sha256=RPzwQXgYBRo_m5L3ZLs6Voh8aEkMeT29Xsul1w1qE0g,10
pyOpenRPA/Agent/A2O.py,sha256=PlIZZCTnVrYF2i6DSAi_KbzZfc2gtcBPmOerrEZq68U,1718 pyOpenRPA/Agent/A2O.py,sha256=PlIZZCTnVrYF2i6DSAi_KbzZfc2gtcBPmOerrEZq68U,1718
pyOpenRPA/Agent/O2A.py,sha256=XHl5nytUoUqfPvmYWh5auYo-s0GIThNmkOA9ON-JCis,5535 pyOpenRPA/Agent/O2A.py,sha256=XHl5nytUoUqfPvmYWh5auYo-s0GIThNmkOA9ON-JCis,5535
pyOpenRPA/Agent/Processor.py,sha256=xNZfQ_HcV-qm_x90tBLKYJqvnENiTqHSoUk2LhDfqWQ,6346 pyOpenRPA/Agent/Processor.py,sha256=xNZfQ_HcV-qm_x90tBLKYJqvnENiTqHSoUk2LhDfqWQ,6346
pyOpenRPA/Agent/__Agent__.py,sha256=PKwNsM59YRKwWk-vtC2mX32jKdPoP1YkpEOl5LtRZCw,12628 pyOpenRPA/Agent/__Agent__.py,sha256=gqKxqu9XEEdgLNRvAlaGqDaQR2sgn_n_Vskf8dv2cQo,12692
pyOpenRPA/Agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA/Agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pyOpenRPA/Agent/__pycache__/A2O.cpython-37.pyc,, pyOpenRPA/Agent/__pycache__/A2O.cpython-37.pyc,,
pyOpenRPA/Agent/__pycache__/O2A.cpython-37.pyc,, pyOpenRPA/Agent/__pycache__/O2A.cpython-37.pyc,,
@ -75,7 +75,7 @@ pyOpenRPA/Orchestrator/Web/Index.js,sha256=YACiZAvjr6NmFlDhQu6urkJp49BX7L8WJU9p-
pyOpenRPA/Orchestrator/Web/Index.xhtml,sha256=XGPCG-qaFsAcoaXnZe1mEjPEqwcVQZ3NVPjtKX8gV4c,19192 pyOpenRPA/Orchestrator/Web/Index.xhtml,sha256=XGPCG-qaFsAcoaXnZe1mEjPEqwcVQZ3NVPjtKX8gV4c,19192
pyOpenRPA/Orchestrator/Web/__pycache__/Basic.cpython-37.pyc,, pyOpenRPA/Orchestrator/Web/__pycache__/Basic.cpython-37.pyc,,
pyOpenRPA/Orchestrator/Web/favicon.ico,sha256=6S8XwSQ_3FXPpaX6zYkf8uUewVXO9bHnrrDHEoWrEgw,112922 pyOpenRPA/Orchestrator/Web/favicon.ico,sha256=6S8XwSQ_3FXPpaX6zYkf8uUewVXO9bHnrrDHEoWrEgw,112922
pyOpenRPA/Orchestrator/__Orchestrator__.py,sha256=wIRuMdoOwudlchdoMua0u2jO5AxCeATw0RSsQ9bKreo,150251 pyOpenRPA/Orchestrator/__Orchestrator__.py,sha256=HS1DiB0t2NqcgijH6Fsjfe_QyGbIlPrgDOBGBlgkmjs,150309
pyOpenRPA/Orchestrator/__init__.py,sha256=nJhjYtBXKOUNX_yNu1rRFk5y9cDz6AFiL0M6KgX_utQ,207 pyOpenRPA/Orchestrator/__init__.py,sha256=nJhjYtBXKOUNX_yNu1rRFk5y9cDz6AFiL0M6KgX_utQ,207
pyOpenRPA/Orchestrator/__main__.py,sha256=czJrc7_57WiO3EPIYfPeF_LG3pZsQVmuAYgbl_YXcVU,273 pyOpenRPA/Orchestrator/__main__.py,sha256=czJrc7_57WiO3EPIYfPeF_LG3pZsQVmuAYgbl_YXcVU,273
pyOpenRPA/Orchestrator/__pycache__/BackwardCompatibility.cpython-37.pyc,, pyOpenRPA/Orchestrator/__pycache__/BackwardCompatibility.cpython-37.pyc,,
@ -269,7 +269,7 @@ pyOpenRPA/Robot/OrchestratorConnector.py,sha256=JUtdiUXCruqUqBD19gJBl9jk_b-tpWWx
pyOpenRPA/Robot/README.md,sha256=e2hKh7Tx6DAsX6jY_hBDhguL1L2Wiv6iugDB5otMzIA,2293 pyOpenRPA/Robot/README.md,sha256=e2hKh7Tx6DAsX6jY_hBDhguL1L2Wiv6iugDB5otMzIA,2293
pyOpenRPA/Robot/SettingsTemplate.py,sha256=Rp5XPeV2I4tCS2uf4Zkqm_ERJ6pZMg4-e5_lMqGJYLk,1453 pyOpenRPA/Robot/SettingsTemplate.py,sha256=Rp5XPeV2I4tCS2uf4Zkqm_ERJ6pZMg4-e5_lMqGJYLk,1453
pyOpenRPA/Robot/Test.py,sha256=qXr990nXiFZX5SNv6QN9GLb_U4HZRmJnbZR2qSnwilY,2878 pyOpenRPA/Robot/Test.py,sha256=qXr990nXiFZX5SNv6QN9GLb_U4HZRmJnbZR2qSnwilY,2878
pyOpenRPA/Robot/UIDesktop.py,sha256=HTlU1QLaVXD6XLaKLTgL_FAJisTxNEnH2fD7JjhqF1o,82868 pyOpenRPA/Robot/UIDesktop.py,sha256=BI5SqXXFbhsvq1sZ1eCDuil8Gz5XwkWBluIKA9zxFts,82922
pyOpenRPA/Robot/Utils/JSONNormalize.py,sha256=aIuVzuZDazhxkCOzoOjfhHVz66mp2FWdfPv5E7KWF5Y,3890 pyOpenRPA/Robot/Utils/JSONNormalize.py,sha256=aIuVzuZDazhxkCOzoOjfhHVz66mp2FWdfPv5E7KWF5Y,3890
pyOpenRPA/Robot/Utils/ProcessBitness.py,sha256=WlKL-DklGaoTnchtapOTM_ydxSB4yOeo9lcG3zr2VME,4524 pyOpenRPA/Robot/Utils/ProcessBitness.py,sha256=WlKL-DklGaoTnchtapOTM_ydxSB4yOeo9lcG3zr2VME,4524
pyOpenRPA/Robot/Utils/ProcessCommunicator.py,sha256=8GfmLnOvAdosmt7YNT86uEV9cjhKippssCX62wOMJwM,8039 pyOpenRPA/Robot/Utils/ProcessCommunicator.py,sha256=8GfmLnOvAdosmt7YNT86uEV9cjhKippssCX62wOMJwM,8039
@ -309,6 +309,7 @@ pyOpenRPA/Studio/__pycache__/Studio.cpython-37.pyc,,
pyOpenRPA/Studio/__pycache__/ValueVerify.cpython-37.pyc,, pyOpenRPA/Studio/__pycache__/ValueVerify.cpython-37.pyc,,
pyOpenRPA/Studio/__pycache__/__init__.cpython-37.pyc,, pyOpenRPA/Studio/__pycache__/__init__.cpython-37.pyc,,
pyOpenRPA/Studio/__pycache__/__main__.cpython-37.pyc,, pyOpenRPA/Studio/__pycache__/__main__.cpython-37.pyc,,
pyOpenRPA/Tools/License.py,sha256=MZT93njRtECNs4fWdD-x-x8dDBnpRaYRszR9s1cMRxk,9857
pyOpenRPA/Tools/RobotDB/ExcelCom.py,sha256=hp0dvXOEC7Au00ueh7pqxkdixV-PC-km7tCt-wRunYs,343 pyOpenRPA/Tools/RobotDB/ExcelCom.py,sha256=hp0dvXOEC7Au00ueh7pqxkdixV-PC-km7tCt-wRunYs,343
pyOpenRPA/Tools/RobotDB/HowToUse,sha256=TUXPZAFcse-PSlKFM6jcaYuuZZEmXOSSvgeqrbmIDoc,1473 pyOpenRPA/Tools/RobotDB/HowToUse,sha256=TUXPZAFcse-PSlKFM6jcaYuuZZEmXOSSvgeqrbmIDoc,1473
pyOpenRPA/Tools/RobotDB/RobotDB.py,sha256=qtGu8PS2atd0L8taCNpk-08Qpxp8Qz1lqwAcBkyLFLM,1655 pyOpenRPA/Tools/RobotDB/RobotDB.py,sha256=qtGu8PS2atd0L8taCNpk-08Qpxp8Qz1lqwAcBkyLFLM,1655
@ -343,9 +344,10 @@ pyOpenRPA/Tools/SafeSource/__pycache__/__main__.cpython-37.pyc,,
pyOpenRPA/Tools/StopSafe.py,sha256=BNTtMmvsRE1Wtri3EkwhoBi6gGOjEPRQnJSV1C03c84,2176 pyOpenRPA/Tools/StopSafe.py,sha256=BNTtMmvsRE1Wtri3EkwhoBi6gGOjEPRQnJSV1C03c84,2176
pyOpenRPA/Tools/Usage.py,sha256=KZG_jM1QnafsnQDeAtlYa2ChvBe-yigtrA971H0FjRg,2786 pyOpenRPA/Tools/Usage.py,sha256=KZG_jM1QnafsnQDeAtlYa2ChvBe-yigtrA971H0FjRg,2786
pyOpenRPA/Tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA/Tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
pyOpenRPA/Tools/__pycache__/License.cpython-37.pyc,,
pyOpenRPA/Tools/__pycache__/StopSafe.cpython-37.pyc,, pyOpenRPA/Tools/__pycache__/StopSafe.cpython-37.pyc,,
pyOpenRPA/Tools/__pycache__/Usage.cpython-37.pyc,, pyOpenRPA/Tools/__pycache__/Usage.cpython-37.pyc,,
pyOpenRPA/Tools/__pycache__/__init__.cpython-37.pyc,, pyOpenRPA/Tools/__pycache__/__init__.cpython-37.pyc,,
pyOpenRPA/__init__.py,sha256=2ZxDo2fMx1Nxo5NCHXxK_NMfn527JwAo9lw-ZCHREcE,174 pyOpenRPA/__init__.py,sha256=4aJTw5pSiHsrvQTiFi8fWcdeqXTzzmSyucUP3mrB3EE,175
pyOpenRPA/__pycache__/__init__.cpython-37.pyc,, pyOpenRPA/__pycache__/__init__.cpython-37.pyc,,
pyOpenRPA/test.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 pyOpenRPA/test.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

@ -2,6 +2,7 @@ import threading, socket, getpass, sys, uuid, subprocess, base64, psutil, getpas
from . import O2A, A2O # Data flow Orchestrator To Agent from . import O2A, A2O # Data flow Orchestrator To Agent
from . import Processor # Processor Queue from . import Processor # Processor Queue
from ..Tools import Usage from ..Tools import Usage
from ..Tools import License
from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD
import os import os
@ -216,6 +217,7 @@ def ProcessWOExeUpperUserListGet():
# Main def # Main def
def Agent(inGSettings): def Agent(inGSettings):
License.ConsoleVerify()
lL = inGSettings["Logger"] lL = inGSettings["Logger"]
global gSettings global gSettings
gSettings = inGSettings gSettings = inGSettings
@ -243,5 +245,6 @@ def Agent(inGSettings):
lO2AThread.start() lO2AThread.start()
Usage.Process(inComponentStr="Agent") Usage.Process(inComponentStr="Agent")
# Send log that Agent has been started # Send log that Agent has been started
A2O.LogListSend(inGSettings=inGSettings, inLogList=[f'Host: {inGSettings["AgentDict"]["HostNameUpperStr"]}, User: {inGSettings["AgentDict"]["UserUpperStr"]}, Agent has been started.']) A2O.LogListSend(inGSettings=inGSettings, inLogList=[f'Host: {inGSettings["AgentDict"]["HostNameUpperStr"]}, User: {inGSettings["AgentDict"]["UserUpperStr"]}, Agent has been started.'])

@ -10,6 +10,7 @@ from . import Processor
from . import BackwardCompatibility # Backward compatibility from v1.1.13 from . import BackwardCompatibility # Backward compatibility from v1.1.13
from . import Core from . import Core
from . import Managers from . import Managers
from ..Tools import License
from subprocess import CREATE_NEW_CONSOLE from subprocess import CREATE_NEW_CONSOLE
from .Utils import LoggerHandlerDumpLogList from .Utils import LoggerHandlerDumpLogList
@ -2707,6 +2708,7 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato
""" """
lL = inGSettings["Logger"] lL = inGSettings["Logger"]
# https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script # https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script
License.ConsoleVerify()
if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True: if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True:
OrchestratorRerunAsAdmin() OrchestratorRerunAsAdmin()
else: else:

@ -7,6 +7,7 @@ import time
from .Utils import ProcessCommunicator from .Utils import ProcessCommunicator
from . import Utils #For ProcessBitness from . import Utils #For ProcessBitness
from ..Tools import Usage from ..Tools import Usage
from ..Tools import License
import re import re
import copy import copy
@ -1457,4 +1458,5 @@ def UIO_FocusHighlight(lWrapperObject,colour='green',thickness=2,fill=win32defin
#Определить разрядность процесса #Определить разрядность процесса
lProcessBitnessStr = str(struct.calcsize("P") * 8) lProcessBitnessStr = str(struct.calcsize("P") * 8)
Usage.Process(inComponentStr="Robot") Usage.Process(inComponentStr="Robot")
License.ConsoleVerify()

@ -0,0 +1,159 @@
"""
pyOpenRPA open license
pyOpenRPA открытая лицензия
Copyright (c) 2019 Ivan Maslov
Правообладатель: 2019 Маслов Иван Дмитриевич
Текст лицензии см. в файле: LICENSE.PDF (в корне репозитория) или по адресу: https://pyopenrpa.ru/license/oferta.pdf
https://stackoverflow.com/questions/40574732/windows-data-storage-for-all-users
certificate.key
"""
import os
import sys
import time
gProgramDataPathStr = "C:\\ProgramData"
gProgramDataPORPathStr = os.path.join(gProgramDataPathStr, "pyOpenRPA")
gProgramDataCertificateFilePathStr = os.path.join(gProgramDataPORPathStr, "certificate.key")
# TODO Изменить права, чтобы другие пользователи могли править
if not os.path.exists(gProgramDataPORPathStr): os.mkdir(gProgramDataPORPathStr)
def CertificateExists() -> bool:
"""Check if the certificate key has been inserted
:return: True - certificate key has been inserted; False - not has been inserted
:rtype: bool
"""
return os.path.exists(gProgramDataCertificateFilePathStr)
def CertificateKeySet(inCertificateKeyStr: str):
"""Get the certificate key string
:param inCertificateKeyStr: Certificate key string (see license.pdf)
:type inCertificateKeyStr: str
"""
lFile = open(gProgramDataCertificateFilePathStr, "w", encoding="utf8")
lFile.write(inCertificateKeyStr)
lFile.close()
def CertificateKeyGet() -> str or None:
"""Get the certificate key from file
:return: Certificate key (see license.pdf)
:rtype: str or None (if key is not set)
"""
lCertificateKeyStr=None
if CertificateExists():
lFile = open(gProgramDataCertificateFilePathStr, "r", encoding="utf8")
lCertificateKeyStr = lFile.read()
lFile.close()
return lCertificateKeyStr
def ConsoleVerify() -> bool:
""" Write info about certificate which has been detected on the machine
:return: true - certificate exists
:rtype: bool
"""
lCertificateExistsBool = True
lCertificateKeyStr = CertificateKeyGet()
if lCertificateKeyStr is None:
lTextStr = """
Цифровой сертификат pyOpenRPA не обнаружен.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
print(lTextStr)
lCertificateExistsBool = False
time.sleep(5)
ConsoleAccept()
else:
lTextStr = """
Обнаружен цифровой сертификат pyOpenRPA: {0}.
Проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
""".format(lCertificateKeyStr)
print(lTextStr)
return lCertificateExistsBool
def ConsoleAccept():
""" Start pyOpenRPA activation master
:return: _description_
:rtype: str
"""
lText="""
"""
print(lText)
time.sleep(2)
lText="""
(RUS LANGUAGE)
***********************************************
Добро пожаловать в систему активации pyOpenRPA!
***********************************************
pyOpenRPA - это открытое программное обеспечение класса RPA, которое разработано и зарегистрировано на территории Российской Федерации (Автор Иван Маслов, 2019г.). Все исходные коды доступны неограниченному кругу лиц для просмотра.
Данное ПО позволяет решить любые задачи, относящиеся к классу программной роботизации RPA.
Перед использованием просим убедиться в том, что Вы обладаете действующим цифровым сертификатом pyOpenRPA (далее сертификат).
Данный сертификат является свидетельством того, что Вы наделены правами в отношении pyOpenRPA в соответствии с законодательством Российской Федерации.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
#print(os.get_terminal_size())
print(lText)
lCertificateKeyStr = input("Укажите код сертификата:")
CertificateKeySet(inCertificateKeyStr=lCertificateKeyStr)

@ -3,7 +3,7 @@ r"""
The OpenRPA package (from UnicodeLabs) The OpenRPA package (from UnicodeLabs)
""" """
__version__ = 'v1.2.9' __version__ = 'v1.2.10'
__all__ = [] __all__ = []
__author__ = 'Ivan Maslov <ivan.maslov@unicodelabs.ru>' __author__ = 'Ivan Maslov <ivan.maslov@unicodelabs.ru>'
#from .Core import Robot #from .Core import Robot

@ -2,6 +2,7 @@ import threading, socket, getpass, sys, uuid, subprocess, base64, psutil, getpas
from . import O2A, A2O # Data flow Orchestrator To Agent from . import O2A, A2O # Data flow Orchestrator To Agent
from . import Processor # Processor Queue from . import Processor # Processor Queue
from ..Tools import Usage from ..Tools import Usage
from ..Tools import License
from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD
import os import os
@ -216,6 +217,7 @@ def ProcessWOExeUpperUserListGet():
# Main def # Main def
def Agent(inGSettings): def Agent(inGSettings):
License.ConsoleVerify()
lL = inGSettings["Logger"] lL = inGSettings["Logger"]
global gSettings global gSettings
gSettings = inGSettings gSettings = inGSettings
@ -243,5 +245,6 @@ def Agent(inGSettings):
lO2AThread.start() lO2AThread.start()
Usage.Process(inComponentStr="Agent") Usage.Process(inComponentStr="Agent")
# Send log that Agent has been started # Send log that Agent has been started
A2O.LogListSend(inGSettings=inGSettings, inLogList=[f'Host: {inGSettings["AgentDict"]["HostNameUpperStr"]}, User: {inGSettings["AgentDict"]["UserUpperStr"]}, Agent has been started.']) A2O.LogListSend(inGSettings=inGSettings, inLogList=[f'Host: {inGSettings["AgentDict"]["HostNameUpperStr"]}, User: {inGSettings["AgentDict"]["UserUpperStr"]}, Agent has been started.'])

@ -10,6 +10,7 @@ from . import Processor
from . import BackwardCompatibility # Backward compatibility from v1.1.13 from . import BackwardCompatibility # Backward compatibility from v1.1.13
from . import Core from . import Core
from . import Managers from . import Managers
from ..Tools import License
from subprocess import CREATE_NEW_CONSOLE from subprocess import CREATE_NEW_CONSOLE
from .Utils import LoggerHandlerDumpLogList from .Utils import LoggerHandlerDumpLogList
@ -2707,6 +2708,7 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato
""" """
lL = inGSettings["Logger"] lL = inGSettings["Logger"]
# https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script # https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script
License.ConsoleVerify()
if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True: if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True:
OrchestratorRerunAsAdmin() OrchestratorRerunAsAdmin()
else: else:

@ -7,6 +7,7 @@ import time
from .Utils import ProcessCommunicator from .Utils import ProcessCommunicator
from . import Utils #For ProcessBitness from . import Utils #For ProcessBitness
from ..Tools import Usage from ..Tools import Usage
from ..Tools import License
import re import re
import copy import copy
@ -1457,4 +1458,5 @@ def UIO_FocusHighlight(lWrapperObject,colour='green',thickness=2,fill=win32defin
#Определить разрядность процесса #Определить разрядность процесса
lProcessBitnessStr = str(struct.calcsize("P") * 8) lProcessBitnessStr = str(struct.calcsize("P") * 8)
Usage.Process(inComponentStr="Robot") Usage.Process(inComponentStr="Robot")
License.ConsoleVerify()

@ -0,0 +1,159 @@
"""
pyOpenRPA open license
pyOpenRPA открытая лицензия
Copyright (c) 2019 Ivan Maslov
Правообладатель: 2019 Маслов Иван Дмитриевич
Текст лицензии см. в файле: LICENSE.PDF (в корне репозитория) или по адресу: https://pyopenrpa.ru/license/oferta.pdf
https://stackoverflow.com/questions/40574732/windows-data-storage-for-all-users
certificate.key
"""
import os
import sys
import time
gProgramDataPathStr = "C:\\ProgramData"
gProgramDataPORPathStr = os.path.join(gProgramDataPathStr, "pyOpenRPA")
gProgramDataCertificateFilePathStr = os.path.join(gProgramDataPORPathStr, "certificate.key")
# TODO Изменить права, чтобы другие пользователи могли править
if not os.path.exists(gProgramDataPORPathStr): os.mkdir(gProgramDataPORPathStr)
def CertificateExists() -> bool:
"""Check if the certificate key has been inserted
:return: True - certificate key has been inserted; False - not has been inserted
:rtype: bool
"""
return os.path.exists(gProgramDataCertificateFilePathStr)
def CertificateKeySet(inCertificateKeyStr: str):
"""Get the certificate key string
:param inCertificateKeyStr: Certificate key string (see license.pdf)
:type inCertificateKeyStr: str
"""
lFile = open(gProgramDataCertificateFilePathStr, "w", encoding="utf8")
lFile.write(inCertificateKeyStr)
lFile.close()
def CertificateKeyGet() -> str or None:
"""Get the certificate key from file
:return: Certificate key (see license.pdf)
:rtype: str or None (if key is not set)
"""
lCertificateKeyStr=None
if CertificateExists():
lFile = open(gProgramDataCertificateFilePathStr, "r", encoding="utf8")
lCertificateKeyStr = lFile.read()
lFile.close()
return lCertificateKeyStr
def ConsoleVerify() -> bool:
""" Write info about certificate which has been detected on the machine
:return: true - certificate exists
:rtype: bool
"""
lCertificateExistsBool = True
lCertificateKeyStr = CertificateKeyGet()
if lCertificateKeyStr is None:
lTextStr = """
Цифровой сертификат pyOpenRPA не обнаружен.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
print(lTextStr)
lCertificateExistsBool = False
time.sleep(5)
ConsoleAccept()
else:
lTextStr = """
Обнаружен цифровой сертификат pyOpenRPA: {0}.
Проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
""".format(lCertificateKeyStr)
print(lTextStr)
return lCertificateExistsBool
def ConsoleAccept():
""" Start pyOpenRPA activation master
:return: _description_
:rtype: str
"""
lText="""
"""
print(lText)
time.sleep(2)
lText="""
(RUS LANGUAGE)
***********************************************
Добро пожаловать в систему активации pyOpenRPA!
***********************************************
pyOpenRPA - это открытое программное обеспечение класса RPA, которое разработано и зарегистрировано на территории Российской Федерации (Автор Иван Маслов, 2019г.). Все исходные коды доступны неограниченному кругу лиц для просмотра.
Данное ПО позволяет решить любые задачи, относящиеся к классу программной роботизации RPA.
Перед использованием просим убедиться в том, что Вы обладаете действующим цифровым сертификатом pyOpenRPA (далее сертификат).
Данный сертификат является свидетельством того, что Вы наделены правами в отношении pyOpenRPA в соответствии с законодательством Российской Федерации.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/certificate
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
#print(os.get_terminal_size())
print(lText)
lCertificateKeyStr = input("Укажите код сертификата:")
CertificateKeySet(inCertificateKeyStr=lCertificateKeyStr)

@ -3,7 +3,7 @@ r"""
The OpenRPA package (from UnicodeLabs) The OpenRPA package (from UnicodeLabs)
""" """
__version__ = 'v1.2.9' __version__ = 'v1.2.10'
__all__ = [] __all__ = []
__author__ = 'Ivan Maslov <ivan.maslov@unicodelabs.ru>' __author__ = 'Ivan Maslov <ivan.maslov@unicodelabs.ru>'
#from .Core import Robot #from .Core import Robot
Loading…
Cancel
Save