diff --git a/VERSION b/VERSION index 55485e1..3eefcb9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.8.9 +1.0.0 diff --git a/requirements-dev.txt b/requirements-dev.txt index 565e903..15b81ec 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,8 +5,9 @@ pycodestyle pylint pylint-quotes pytest +pytest-asyncio pytype semver grpclib wechaty-puppet~=0.3dev2 -pre-commit \ No newline at end of file +pre-commit \ No newline at end of file diff --git a/setup.py b/setup.py index 191476e..a504a78 100644 --- a/setup.py +++ b/setup.py @@ -13,8 +13,8 @@ def versioning(version: str) -> str: minor = sem_ver['minor'] patch = str(sem_ver['patch']) - if minor % 2: - patch = 'dev' + patch + # if minor % 2: + # patch = 'dev' + patch fin_ver = '%d.%d.%s' % ( major, diff --git a/src/wechaty_puppet_service/config.py b/src/wechaty_puppet_service/config.py index d6d64f5..3a088be 100644 --- a/src/wechaty_puppet_service/config.py +++ b/src/wechaty_puppet_service/config.py @@ -28,6 +28,41 @@ CHUNK_SIZE = 1024 * 1024 +TLS_CA_CERT = '''-----BEGIN CERTIFICATE----- +MIIFxTCCA62gAwIBAgIUYddLAoa8JnLzJ80l2u5vGuFsaEIwDQYJKoZIhvcNAQEL +BQAwcjELMAkGA1UEBhMCVVMxFjAUBgNVBAgMDVNhbiBGcmFuY2lzY28xEjAQBgNV +BAcMCVBhbG8gQWx0bzEQMA4GA1UECgwHV2VjaGF0eTELMAkGA1UECwwCQ0ExGDAW +BgNVBAMMD3dlY2hhdHktcm9vdC1jYTAeFw0yMTA4MDkxNTQ4NTJaFw0zMTA4MDcx +NTQ4NTJaMHIxCzAJBgNVBAYTAlVTMRYwFAYDVQQIDA1TYW4gRnJhbmNpc2NvMRIw +EAYDVQQHDAlQYWxvIEFsdG8xEDAOBgNVBAoMB1dlY2hhdHkxCzAJBgNVBAsMAkNB +MRgwFgYDVQQDDA93ZWNoYXR5LXJvb3QtY2EwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDulLjOZhzQ58TSQ7TfWNYgdtWhlc+5L9MnKb1nznVRhzAkZo3Q +rPLRW/HDjlv2OEbt4nFLaQgaMmc1oJTUVGDBDlrzesI/lJh7z4eA/B0z8eW7f6Cw +/TGc8lgzHvq7UIE507QYPhvfSejfW4Prw+90HJnuodriPdMGS0n9AR37JPdQm6sD +iMFeEvhHmM2SXRo/o7bll8UDZi81DoFu0XuTCx0esfCX1W5QWEmAJ5oAdjWxJ23C +lxI1+EjwBQKXGqp147VP9+pwpYW5Xxpy870kctPBHKjCAti8Bfo+Y6dyWz2UAd4w +4BFRD+18C/TgX+ECl1s9fsHMY15JitcSGgAIz8gQX1OelECaTMRTQfNaSnNW4LdS +sXMQEI9WxAU/W47GCQFmwcJeZvimqDF1QtflHSaARD3O8tlbduYqTR81LJ63bPoy +9e1pdB6w2bVOTlHunE0YaGSJERALVc1xz40QpPGcZ52mNCb3PBg462RQc77yv/QB +x/P2RC1y0zDUF2tP9J29gTatWq6+D4MhfEk2flZNyzAgJbDuT6KAIJGzOB1ZJ/MG +o1gS13eTuZYw24LElrhd1PrR6OHK+lkyYzqUPYMulUg4HzaZIDclfHKwAC4lecKm +zC5q9jJB4m4SKMKdzxvpIOfdahoqsZMg34l4AavWRqPTpwEU0C0dboNA/QIDAQAB +o1MwUTAdBgNVHQ4EFgQU0rey3QPklTOgdhMJ9VIA6KbZ5bAwHwYDVR0jBBgwFoAU +0rey3QPklTOgdhMJ9VIA6KbZ5bAwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQsFAAOCAgEAx2uyShx9kLoB1AJ8x7Vf95v6PX95L/4JkJ1WwzJ9Dlf3BcCI7VH7 +Fp1dnQ6Ig7mFqSBDBAUUBWAptAnuqIDcgehI6XAEKxW8ZZRxD877pUNwZ/45tSC4 +b5U5y9uaiNK7oC3LlDCsB0291b3KSOtevMeDFoh12LcliXAkdIGGTccUxrH+Cyij +cBOc+EKGJFBdLqcjLDU4M6QdMMMFOdfXyAOSpYuWGYqrxqvxQjAjvianEyMpNZWM +lajggJqiPhfF67sZTB2yzvRTmtHdUq7x+iNOVonOBcCHu31aGxa9Py91XEr9jaIQ +EBdl6sycLxKo8mxF/5tyUOns9+919aWNqTOUBmI15D68bqhhOVNyvsb7aVURIt5y +6A7Sj4gSBR9P22Ba6iFZgbvfLn0zKLzjlBonUGlSPf3rSIYUkawICtDyYPvK5mi3 +mANgIChMiOw6LYCPmmUVVAWU/tDy36kr9ZV9YTIZRYAkWswsJB340whjuzvZUVaG +DgW45GPR6bGIwlFZeqCwXLput8Z3C8Sw9bE9vjlB2ZCpjPLmWV/WbDlH3J3uDjgt +9PoALW0sOPhHfYklH4/rrmsSWMYTUuGS/HqxrEER1vpIOOb0hIiAWENDT/mruq22 +VqO8MHX9ebjInSxPmhYOlrSZrOgEcogyMB4Z0SOtKVqPnkWmdR5hatU= +-----END CERTIFICATE-----''' + + def get_token() -> Optional[str]: """ get the token from environment variable diff --git a/src/wechaty_puppet_service/puppet.py b/src/wechaty_puppet_service/puppet.py index c9a7ce6..a60f099 100644 --- a/src/wechaty_puppet_service/puppet.py +++ b/src/wechaty_puppet_service/puppet.py @@ -21,6 +21,7 @@ from __future__ import annotations import json +import ssl from typing import Callable, Optional, List from functools import reduce from dataclasses import asdict @@ -79,6 +80,7 @@ from wechaty_puppet_service.config import ( get_endpoint, get_token, + TLS_CA_CERT ) from wechaty_puppet_service.utils import ( extract_host_and_port, @@ -373,6 +375,7 @@ async def message_send_file(self, conversation_id: str, :param file: :return: """ + self.puppet_stub.message_send_contact() response = await self.puppet_stub.message_send_file( conversation_id=conversation_id, filebox=file.to_json_str() @@ -907,6 +910,10 @@ def _init_puppet(self) -> None: ) host, port = extract_host_and_port(self.options.end_point) + + context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + context.load_verify_locations(cadata=TLS_CA_CERT) + self.channel = Channel(host=host, port=port) # pylint: disable=W0212