You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Sources/pyOpenRPA/Utils/License.py

169 lines
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""
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
from pyOpenRPA.Tools import CrossOS
if CrossOS.IS_WINDOWS_BOOL: gProgramDataPathStr = "C:\\ProgramData"
if CrossOS.IS_LINUX_BOOL: gProgramDataPathStr = os.path.expanduser("~/.config")
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 = False
if "PYOPENRPA_NODISP" not in os.environ:
lCertificateExistsBool = True
lCertificateKeyStr = CertificateKeyGet()
if lCertificateKeyStr is None:
lTextStr = """
Цифровой сертификат pyOpenRPA не обнаружен.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/verification
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
print(lTextStr)
os.environ["PYOPENRPA_NODISP"]="1"
lCertificateExistsBool = False
time.sleep(5)
ConsoleAccept()
else:
lTextStr = """
Обнаружен цифровой сертификат pyOpenRPA: {0}.
Проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/verification
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
""".format(lCertificateKeyStr)
print(lTextStr)
os.environ["PYOPENRPA_NODISP"]="1"
return lCertificateExistsBool
def ConsoleAccept():
""" Start pyOpenRPA activation master
:return: _description_
:rtype: str
"""
if "PYOPENRPA_NODISP" not in os.environ:
lText="""
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░ ░░░░░ ░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░ ░░░░░ ░░░░░░░░░░░░
░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░░░░
░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░░░░
░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░
░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░ ░░░░░
░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░░░
░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░░░░░░░
░░░░░ ░░ ░░░░░ ░░ ░░░░░░░░░░░░░░
░░░░░░░ ░░░░░ ░░░░░░░░░░░░░░░░
░░░░░░░░░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░ ░░░ ░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░ ░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
"""
print(lText)
time.sleep(2)
lText="""
(RUS LANGUAGE)
***********************************************
Добро пожаловать в систему активации pyOpenRPA!
***********************************************
pyOpenRPA - это открытое программное обеспечение класса RPA, которое разработано и зарегистрировано на территории Российской Федерации (Автор Иван Маслов, 2019г.). Все исходные коды доступны неограниченному кругу лиц для просмотра.
Данное ПО позволяет решить любые задачи, относящиеся к классу программной роботизации RPA.
Перед использованием просим убедиться в том, что Вы обладаете действующим цифровым сертификатом pyOpenRPA (далее сертификат).
Данный сертификат является свидетельством того, что Вы наделены правами в отношении pyOpenRPA в соответствии с законодательством Российской Федерации.
Получить или проверить сертификат, а также ознакомиться с текстом лицензионного соглашения Вы можете по адресу:
https://pyopenrpa.ru/verification
Операция формирования сертификата является автоматизированной и занимает несколько секунд.
pyOpenRPA не использует какие-либо инструменты физической блокировки функциональности своего ПО.
По всем вопросам Вы можете обратиться к правообладателю, контакты см. по адресу:
https://pyopenrpa.ru/Index/pyOpenRPA_product_service.pdf
Используя ПО pyOpenRPA Вы осознаете свою ответственность в случаях нарушения лицензионного законодательства и совершения неправомерных действий.
ВНИМАНИЕ! НЕЗНАНИЕ ЗАКОНА НЕ ОСВОБОЖДАЕТ ОТ ОТВЕТСТВЕННОСТИ.
"""
#print(os.get_terminal_size())
print(lText)
os.environ["PYOPENRPA_NODISP"]="1"
lCertificateKeyStr = input("Укажите код сертификата:")
CertificateKeySet(inCertificateKeyStr=lCertificateKeyStr)