diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/INSTALLER b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/INSTALLER similarity index 100% rename from Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/INSTALLER rename to Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/INSTALLER diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/METADATA b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/METADATA similarity index 99% rename from Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/METADATA rename to Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/METADATA index 88bc9a96..5a53fd0b 100644 --- a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/METADATA +++ b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pyOpenRPA -Version: 1.2.9 +Version: 1.2.10 Summary: First open source RPA platform for business Home-page: https://pyopenrpa.ru/ Author: Ivan Maslov diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/RECORD b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/RECORD similarity index 97% rename from Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/RECORD rename to Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/RECORD index 1d8d5a9c..39e28aa1 100644 --- a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/RECORD +++ b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/RECORD @@ -1,13 +1,13 @@ -pyOpenRPA-1.2.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pyOpenRPA-1.2.9.dist-info/METADATA,sha256=81hdNna5qHqWWH8e3tQ_vER-R7OPt3z-wu22rlHBLT8,4110 -pyOpenRPA-1.2.9.dist-info/RECORD,, -pyOpenRPA-1.2.9.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pyOpenRPA-1.2.9.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/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pyOpenRPA-1.2.10.dist-info/METADATA,sha256=V1vt_WDuk57Yfm0u-qNlXg6AZp5V6EacCKt6AD9wi_E,4111 +pyOpenRPA-1.2.10.dist-info/RECORD,, +pyOpenRPA-1.2.10.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyOpenRPA-1.2.10.dist-info/WHEEL,sha256=qB97nP5e4MrOsXW5bIU5cUn_KSVr10EV0l-GCHG9qNs,97 +pyOpenRPA-1.2.10.dist-info/top_level.txt,sha256=RPzwQXgYBRo_m5L3ZLs6Voh8aEkMeT29Xsul1w1qE0g,10 pyOpenRPA/Agent/A2O.py,sha256=PlIZZCTnVrYF2i6DSAi_KbzZfc2gtcBPmOerrEZq68U,1718 pyOpenRPA/Agent/O2A.py,sha256=XHl5nytUoUqfPvmYWh5auYo-s0GIThNmkOA9ON-JCis,5535 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/__pycache__/A2O.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/__pycache__/Basic.cpython-37.pyc,, 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/__main__.py,sha256=czJrc7_57WiO3EPIYfPeF_LG3pZsQVmuAYgbl_YXcVU,273 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/SettingsTemplate.py,sha256=Rp5XPeV2I4tCS2uf4Zkqm_ERJ6pZMg4-e5_lMqGJYLk,1453 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/ProcessBitness.py,sha256=WlKL-DklGaoTnchtapOTM_ydxSB4yOeo9lcG3zr2VME,4524 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__/__init__.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/HowToUse,sha256=TUXPZAFcse-PSlKFM6jcaYuuZZEmXOSSvgeqrbmIDoc,1473 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/Usage.py,sha256=KZG_jM1QnafsnQDeAtlYa2ChvBe-yigtrA971H0FjRg,2786 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__/Usage.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/test.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/REQUESTED b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/REQUESTED similarity index 100% rename from Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/REQUESTED rename to Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/REQUESTED diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/WHEEL b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/WHEEL similarity index 100% rename from Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/WHEEL rename to Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/WHEEL diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/top_level.txt b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/top_level.txt similarity index 100% rename from Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/top_level.txt rename to Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/top_level.txt diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py index aeafb4b0..ab47c335 100644 --- a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py +++ b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py @@ -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 Processor # Processor Queue from ..Tools import Usage +from ..Tools import License from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD import os @@ -216,6 +217,7 @@ def ProcessWOExeUpperUserListGet(): # Main def def Agent(inGSettings): + License.ConsoleVerify() lL = inGSettings["Logger"] global gSettings gSettings = inGSettings @@ -243,5 +245,6 @@ def Agent(inGSettings): lO2AThread.start() Usage.Process(inComponentStr="Agent") + # 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.']) \ No newline at end of file diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py index edbb7c0f..868f5646 100644 --- a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py +++ b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py @@ -10,6 +10,7 @@ from . import Processor from . import BackwardCompatibility # Backward compatibility from v1.1.13 from . import Core from . import Managers +from ..Tools import License from subprocess import CREATE_NEW_CONSOLE from .Utils import LoggerHandlerDumpLogList @@ -2707,6 +2708,7 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato """ lL = inGSettings["Logger"] # https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script + License.ConsoleVerify() if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True: OrchestratorRerunAsAdmin() else: diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py index ac58e69e..c11c0e76 100644 --- a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py +++ b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py @@ -7,6 +7,7 @@ import time from .Utils import ProcessCommunicator from . import Utils #For ProcessBitness from ..Tools import Usage +from ..Tools import License import re import copy @@ -1457,4 +1458,5 @@ def UIO_FocusHighlight(lWrapperObject,colour='green',thickness=2,fill=win32defin #Определить разрядность процесса lProcessBitnessStr = str(struct.calcsize("P") * 8) Usage.Process(inComponentStr="Robot") +License.ConsoleVerify() diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Tools/License.py b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Tools/License.py new file mode 100644 index 00000000..dd4a72b5 --- /dev/null +++ b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/Tools/License.py @@ -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) \ No newline at end of file diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/__init__.py b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/__init__.py index 5ad36e3a..b451831b 100644 --- a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/__init__.py +++ b/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA/__init__.py @@ -3,7 +3,7 @@ r""" The OpenRPA package (from UnicodeLabs) """ -__version__ = 'v1.2.9' +__version__ = 'v1.2.10' __all__ = [] __author__ = 'Ivan Maslov ' #from .Core import Robot \ No newline at end of file diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/INSTALLER b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/INSTALLER similarity index 100% rename from Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/INSTALLER rename to Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/INSTALLER diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/METADATA b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/METADATA similarity index 99% rename from Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/METADATA rename to Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/METADATA index 88bc9a96..5a53fd0b 100644 --- a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/METADATA +++ b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pyOpenRPA -Version: 1.2.9 +Version: 1.2.10 Summary: First open source RPA platform for business Home-page: https://pyopenrpa.ru/ Author: Ivan Maslov diff --git a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/RECORD b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/RECORD similarity index 97% rename from Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/RECORD rename to Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/RECORD index 1d8d5a9c..39e28aa1 100644 --- a/Resources/WPy32-3720/python-3.7.2/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/RECORD +++ b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/RECORD @@ -1,13 +1,13 @@ -pyOpenRPA-1.2.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pyOpenRPA-1.2.9.dist-info/METADATA,sha256=81hdNna5qHqWWH8e3tQ_vER-R7OPt3z-wu22rlHBLT8,4110 -pyOpenRPA-1.2.9.dist-info/RECORD,, -pyOpenRPA-1.2.9.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pyOpenRPA-1.2.9.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/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pyOpenRPA-1.2.10.dist-info/METADATA,sha256=V1vt_WDuk57Yfm0u-qNlXg6AZp5V6EacCKt6AD9wi_E,4111 +pyOpenRPA-1.2.10.dist-info/RECORD,, +pyOpenRPA-1.2.10.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pyOpenRPA-1.2.10.dist-info/WHEEL,sha256=qB97nP5e4MrOsXW5bIU5cUn_KSVr10EV0l-GCHG9qNs,97 +pyOpenRPA-1.2.10.dist-info/top_level.txt,sha256=RPzwQXgYBRo_m5L3ZLs6Voh8aEkMeT29Xsul1w1qE0g,10 pyOpenRPA/Agent/A2O.py,sha256=PlIZZCTnVrYF2i6DSAi_KbzZfc2gtcBPmOerrEZq68U,1718 pyOpenRPA/Agent/O2A.py,sha256=XHl5nytUoUqfPvmYWh5auYo-s0GIThNmkOA9ON-JCis,5535 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/__pycache__/A2O.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/__pycache__/Basic.cpython-37.pyc,, 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/__main__.py,sha256=czJrc7_57WiO3EPIYfPeF_LG3pZsQVmuAYgbl_YXcVU,273 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/SettingsTemplate.py,sha256=Rp5XPeV2I4tCS2uf4Zkqm_ERJ6pZMg4-e5_lMqGJYLk,1453 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/ProcessBitness.py,sha256=WlKL-DklGaoTnchtapOTM_ydxSB4yOeo9lcG3zr2VME,4524 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__/__init__.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/HowToUse,sha256=TUXPZAFcse-PSlKFM6jcaYuuZZEmXOSSvgeqrbmIDoc,1473 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/Usage.py,sha256=KZG_jM1QnafsnQDeAtlYa2ChvBe-yigtrA971H0FjRg,2786 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__/Usage.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/test.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/REQUESTED b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/REQUESTED similarity index 100% rename from Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/REQUESTED rename to Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/REQUESTED diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/WHEEL b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/WHEEL similarity index 100% rename from Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/WHEEL rename to Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/WHEEL diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/top_level.txt b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/top_level.txt similarity index 100% rename from Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.9.dist-info/top_level.txt rename to Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA-1.2.10.dist-info/top_level.txt diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py index aeafb4b0..ab47c335 100644 --- a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py +++ b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Agent/__Agent__.py @@ -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 Processor # Processor Queue from ..Tools import Usage +from ..Tools import License from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD import os @@ -216,6 +217,7 @@ def ProcessWOExeUpperUserListGet(): # Main def def Agent(inGSettings): + License.ConsoleVerify() lL = inGSettings["Logger"] global gSettings gSettings = inGSettings @@ -243,5 +245,6 @@ def Agent(inGSettings): lO2AThread.start() Usage.Process(inComponentStr="Agent") + # 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.']) \ No newline at end of file diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py index edbb7c0f..868f5646 100644 --- a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py +++ b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Orchestrator/__Orchestrator__.py @@ -10,6 +10,7 @@ from . import Processor from . import BackwardCompatibility # Backward compatibility from v1.1.13 from . import Core from . import Managers +from ..Tools import License from subprocess import CREATE_NEW_CONSOLE from .Utils import LoggerHandlerDumpLogList @@ -2707,6 +2708,7 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato """ lL = inGSettings["Logger"] # https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script + License.ConsoleVerify() if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True: OrchestratorRerunAsAdmin() else: diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py index ac58e69e..c11c0e76 100644 --- a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py +++ b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Robot/UIDesktop.py @@ -7,6 +7,7 @@ import time from .Utils import ProcessCommunicator from . import Utils #For ProcessBitness from ..Tools import Usage +from ..Tools import License import re import copy @@ -1457,4 +1458,5 @@ def UIO_FocusHighlight(lWrapperObject,colour='green',thickness=2,fill=win32defin #Определить разрядность процесса lProcessBitnessStr = str(struct.calcsize("P") * 8) Usage.Process(inComponentStr="Robot") +License.ConsoleVerify() diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Tools/License.py b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Tools/License.py new file mode 100644 index 00000000..dd4a72b5 --- /dev/null +++ b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/Tools/License.py @@ -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) \ No newline at end of file diff --git a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/__init__.py b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/__init__.py index 5ad36e3a..b451831b 100644 --- a/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/__init__.py +++ b/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/pyOpenRPA/__init__.py @@ -3,7 +3,7 @@ r""" The OpenRPA package (from UnicodeLabs) """ -__version__ = 'v1.2.9' +__version__ = 'v1.2.10' __all__ = [] __author__ = 'Ivan Maslov ' #from .Core import Robot \ No newline at end of file diff --git a/Sources/pyOpenRPA/Agent/__Agent__.py b/Sources/pyOpenRPA/Agent/__Agent__.py index aeafb4b0..ab47c335 100644 --- a/Sources/pyOpenRPA/Agent/__Agent__.py +++ b/Sources/pyOpenRPA/Agent/__Agent__.py @@ -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 Processor # Processor Queue from ..Tools import Usage +from ..Tools import License from subprocess import CREATE_NEW_CONSOLE # Flag to create new process in another CMD import os @@ -216,6 +217,7 @@ def ProcessWOExeUpperUserListGet(): # Main def def Agent(inGSettings): + License.ConsoleVerify() lL = inGSettings["Logger"] global gSettings gSettings = inGSettings @@ -243,5 +245,6 @@ def Agent(inGSettings): lO2AThread.start() Usage.Process(inComponentStr="Agent") + # 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.']) \ No newline at end of file diff --git a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py index edbb7c0f..868f5646 100644 --- a/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py +++ b/Sources/pyOpenRPA/Orchestrator/__Orchestrator__.py @@ -10,6 +10,7 @@ from . import Processor from . import BackwardCompatibility # Backward compatibility from v1.1.13 from . import Core from . import Managers +from ..Tools import License from subprocess import CREATE_NEW_CONSOLE from .Utils import LoggerHandlerDumpLogList @@ -2707,6 +2708,7 @@ def Orchestrator(inGSettings=None, inDumpRestoreBool = True, inRunAsAdministrato """ lL = inGSettings["Logger"] # https://stackoverflow.com/questions/130763/request-uac-elevation-from-within-a-python-script + License.ConsoleVerify() if not OrchestratorIsAdmin() and inRunAsAdministratorBool==True: OrchestratorRerunAsAdmin() else: diff --git a/Sources/pyOpenRPA/Robot/UIDesktop.py b/Sources/pyOpenRPA/Robot/UIDesktop.py index ac58e69e..c11c0e76 100644 --- a/Sources/pyOpenRPA/Robot/UIDesktop.py +++ b/Sources/pyOpenRPA/Robot/UIDesktop.py @@ -7,6 +7,7 @@ import time from .Utils import ProcessCommunicator from . import Utils #For ProcessBitness from ..Tools import Usage +from ..Tools import License import re import copy @@ -1457,4 +1458,5 @@ def UIO_FocusHighlight(lWrapperObject,colour='green',thickness=2,fill=win32defin #Определить разрядность процесса lProcessBitnessStr = str(struct.calcsize("P") * 8) Usage.Process(inComponentStr="Robot") +License.ConsoleVerify() diff --git a/Sources/pyOpenRPA/Tools/License.py b/Sources/pyOpenRPA/Tools/License.py new file mode 100644 index 00000000..dd4a72b5 --- /dev/null +++ b/Sources/pyOpenRPA/Tools/License.py @@ -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) \ No newline at end of file diff --git a/Sources/pyOpenRPA/__init__.py b/Sources/pyOpenRPA/__init__.py index 5ad36e3a..b451831b 100644 --- a/Sources/pyOpenRPA/__init__.py +++ b/Sources/pyOpenRPA/__init__.py @@ -3,7 +3,7 @@ r""" The OpenRPA package (from UnicodeLabs) """ -__version__ = 'v1.2.9' +__version__ = 'v1.2.10' __all__ = [] __author__ = 'Ivan Maslov ' #from .Core import Robot \ No newline at end of file diff --git a/v1.2.9 b/v1.2.10 similarity index 100% rename from v1.2.9 rename to v1.2.10