PyPtt 2.1.2__tar.gz → 2.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyptt-2.1.2 → pyptt-2.1.3}/PKG-INFO +1 -1
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/PTT.py +4 -2
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/__init__.py +1 -1
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_del_post.py +41 -12
- pyptt-2.1.3/PyPtt/ssl_config.py +24 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt.egg-info/PKG-INFO +1 -1
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_del_post.py +62 -0
- pyptt-2.1.2/PyPtt/ssl_config.py +0 -24
- {pyptt-2.1.2 → pyptt-2.1.3}/LICENSE +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_bucket.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_call_status.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_change_pw.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_comment.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_board_info.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_board_list.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_bottom_post_list.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_favourite_board.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_newest_index.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_post_index.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_post_list.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_time.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_user.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_get_waterball.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_give_money.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_has_new_mail.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_loginout.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_mail.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_mark_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_reply_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_search_user.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_set_board_title.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/_api_util.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/api_server.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/check_value.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/command.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/config.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/connect_core.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/data_type.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/exceptions.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/i18n.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/lang_en_US.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/lang_zh_TW.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/lib_util.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/log.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/screens.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt/service.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt.egg-info/SOURCES.txt +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt.egg-info/dependency_links.txt +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt.egg-info/requires.txt +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/PyPtt.egg-info/top_level.txt +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/README.md +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/pyproject.toml +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/setup.cfg +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/setup.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_bucket.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_change_pw.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_comment.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_exceptions.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_fast_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_board_info.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_board_list.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_bottom_post_list.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_content_formula.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_favourite_boards.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_mail.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_newest_index.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_post_list.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_post_list_parser.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_post_parser.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_time.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_user.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_get_waterball.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_give_money.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_i18n.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_init.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_logger.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_mail_send_and_del.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_mark_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_parse_query_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_pyte_parity.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_reply_post.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_search_user.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_service.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_set_board_title.py +0 -0
- {pyptt-2.1.2 → pyptt-2.1.3}/tests/test_vt100_parser.py +0 -0
|
@@ -1071,7 +1071,7 @@ class API:
|
|
|
1071
1071
|
|
|
1072
1072
|
return _api_get_bottom_post_list.get_bottom_post_list(self, board)
|
|
1073
1073
|
|
|
1074
|
-
def del_post(self, board: str, aid: Optional[str] = None, index: int = 0) -> None:
|
|
1074
|
+
def del_post(self, board: str, aid: Optional[str] = None, index: int = 0, reason: Optional[str] = None) -> None:
|
|
1075
1075
|
"""
|
|
1076
1076
|
刪除文章。
|
|
1077
1077
|
|
|
@@ -1079,6 +1079,7 @@ class API:
|
|
|
1079
1079
|
board (str): 看板名稱。
|
|
1080
1080
|
aid (str): 文章編號。
|
|
1081
1081
|
index (int): 文章編號。
|
|
1082
|
+
reason (str): 板主刪除他人文章時,加註於刪除後標題的理由(僅板主刪除他板友文章時有效)。
|
|
1082
1083
|
|
|
1083
1084
|
Returns:
|
|
1084
1085
|
None
|
|
@@ -1089,6 +1090,7 @@ class API:
|
|
|
1089
1090
|
NoSuchBoard: 看板不存在。
|
|
1090
1091
|
NoSuchPost: 文章不存在。
|
|
1091
1092
|
NoPermission: 沒有權限。
|
|
1093
|
+
ParameterError: 對自己的文章傳入 reason(加註理由僅適用於版主刪除他人文章)。
|
|
1092
1094
|
|
|
1093
1095
|
範例::
|
|
1094
1096
|
|
|
@@ -1103,7 +1105,7 @@ class API:
|
|
|
1103
1105
|
ptt_bot.logout()
|
|
1104
1106
|
"""
|
|
1105
1107
|
|
|
1106
|
-
_api_del_post.del_post(self, board, aid, index)
|
|
1108
|
+
_api_del_post.del_post(self, board, aid, index, reason)
|
|
1107
1109
|
|
|
1108
1110
|
def get_post_list(self, board: str, limit: int = 20, offset: int = 0) -> list[dict]:
|
|
1109
1111
|
"""
|
|
@@ -14,7 +14,7 @@ from . import log
|
|
|
14
14
|
from . import screens
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def del_post(api, board: str, post_aid: Optional[str] = None, post_index: int = 0) -> None:
|
|
17
|
+
def del_post(api, board: str, post_aid: Optional[str] = None, post_index: int = 0, reason: Optional[str] = None) -> None:
|
|
18
18
|
_api_util.one_thread(api)
|
|
19
19
|
|
|
20
20
|
if not api.is_registered_user:
|
|
@@ -27,6 +27,8 @@ def del_post(api, board: str, post_aid: Optional[str] = None, post_index: int =
|
|
|
27
27
|
if post_aid is not None:
|
|
28
28
|
check_value.check_type(post_aid, str, 'PostAID')
|
|
29
29
|
check_value.check_type(post_index, int, 'PostIndex')
|
|
30
|
+
if reason is not None:
|
|
31
|
+
check_value.check_type(reason, str, 'reason')
|
|
30
32
|
|
|
31
33
|
if len(board) == 0:
|
|
32
34
|
raise exceptions.ParameterError(f'board error parameter: {board}')
|
|
@@ -64,6 +66,13 @@ def del_post(api, board: str, post_aid: Optional[str] = None, post_index: int =
|
|
|
64
66
|
log.logger.info(i18n.delete_post, '...', i18n.success)
|
|
65
67
|
return
|
|
66
68
|
|
|
69
|
+
# PTT only offers the "R加註理由" annotation when a moderator deletes
|
|
70
|
+
# another user's post. On your own post the reason can never be applied,
|
|
71
|
+
# so reject it rather than silently dropping it.
|
|
72
|
+
if reason and api.ptt_id.lower() == post_info[data_type.PostField.author].lower():
|
|
73
|
+
raise exceptions.ParameterError(
|
|
74
|
+
'reason is only valid when a moderator deletes another user\'s post')
|
|
75
|
+
|
|
67
76
|
if check_author:
|
|
68
77
|
if api.ptt_id.lower() != post_info[data_type.PostField.author].lower():
|
|
69
78
|
log.logger.info(i18n.delete_post, '...', i18n.fail)
|
|
@@ -90,20 +99,40 @@ def del_post(api, board: str, post_aid: Optional[str] = None, post_index: int =
|
|
|
90
99
|
def confirm_delete_handler(screen):
|
|
91
100
|
api.confirm = True
|
|
92
101
|
|
|
102
|
+
# A board moderator deleting another user's post gets an extra
|
|
103
|
+
# "R加註理由" option that lets us annotate the title shown after deletion.
|
|
104
|
+
use_reason = bool(reason) and not check_author
|
|
105
|
+
|
|
106
|
+
def confirm_delete_response(screen):
|
|
107
|
+
if use_reason and '加註理由' in screen:
|
|
108
|
+
return 'r' + command.enter
|
|
109
|
+
return 'y' + command.enter
|
|
110
|
+
|
|
93
111
|
target_list = [
|
|
94
112
|
connect_core.TargetUnit('請按任意鍵繼續', response=' '),
|
|
95
|
-
connect_core.TargetUnit('請確定刪除(Y/N
|
|
96
|
-
max_match=1),
|
|
97
|
-
connect_core.TargetUnit(screens.Target.InBoard, break_detect=True),
|
|
113
|
+
connect_core.TargetUnit('請確定刪除(Y/N', response=confirm_delete_response,
|
|
114
|
+
handler=confirm_delete_handler, max_match=1),
|
|
98
115
|
]
|
|
99
116
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
if use_reason:
|
|
118
|
+
target_list.append(
|
|
119
|
+
connect_core.TargetUnit(
|
|
120
|
+
'請輸入刪除後要顯示的標題',
|
|
121
|
+
response=command.ctrl_e + ' ' + reason + command.enter,
|
|
122
|
+
max_match=1))
|
|
123
|
+
target_list.append(
|
|
124
|
+
connect_core.TargetUnit(
|
|
125
|
+
'請再次確定是否要用上述理由刪除(Y/N',
|
|
126
|
+
response='y' + command.enter,
|
|
127
|
+
max_match=1))
|
|
128
|
+
|
|
129
|
+
target_list.append(
|
|
130
|
+
connect_core.TargetUnit(screens.Target.InBoard, break_detect=True))
|
|
131
|
+
|
|
132
|
+
api.connect_core.send(cmd, target_list)
|
|
133
|
+
|
|
134
|
+
if not api.confirm:
|
|
135
|
+
log.logger.info(i18n.delete_post, '...', i18n.fail)
|
|
136
|
+
raise exceptions.NoPermission(i18n.no_permission)
|
|
108
137
|
|
|
109
138
|
log.logger.info(i18n.delete_post, '...', i18n.success)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
key = """-----BEGIN EC PARAMETERS-----
|
|
2
|
+
BggqhkjOPQMBBw==
|
|
3
|
+
-----END EC PARAMETERS-----
|
|
4
|
+
-----BEGIN EC PRIVATE KEY-----
|
|
5
|
+
MHcCAQEEIEkOJyMNiLY15Dbj6KQAQzcL8VCnyWHTZRAtIku05VDZoAoGCCqGSM49
|
|
6
|
+
AwEHoUQDQgAEKUSVL5IptOLhRvvjbwASpbMm2u9g5bB+JzwZFipu7YcP/M3O/hdn
|
|
7
|
+
itOTx/TQ1WUZzOO1K8VVP+PiJ848Gf7oXQ==
|
|
8
|
+
-----END EC PRIVATE KEY-----
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
cert = """-----BEGIN CERTIFICATE-----
|
|
12
|
+
MIIB6DCCAY8CFBQB2jo2W/VcD/OwELD8q619nPFLMAoGCCqGSM49BAMCMHcxCzAJ
|
|
13
|
+
BgNVBAYTAlRXMQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0eTEVMBMGA1UE
|
|
14
|
+
CgwMT3JnYW5pemF0aW9uMRwwGgYDVQQLDBNPcmdhbml6YXRpb25hbCBVbml0MRQw
|
|
15
|
+
EgYDVQQDDAtDb21tb24gTmFtZTAeFw0yNjA2MjkxMzI5MjNaFw0zNjA2MjYxMzI5
|
|
16
|
+
MjNaMHcxCzAJBgNVBAYTAlRXMQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0
|
|
17
|
+
eTEVMBMGA1UECgwMT3JnYW5pemF0aW9uMRwwGgYDVQQLDBNPcmdhbml6YXRpb25h
|
|
18
|
+
bCBVbml0MRQwEgYDVQQDDAtDb21tb24gTmFtZTBZMBMGByqGSM49AgEGCCqGSM49
|
|
19
|
+
AwEHA0IABClElS+SKbTi4Ub7428AEqWzJtrvYOWwfic8GRYqbu2HD/zNzv4XZ4rT
|
|
20
|
+
k8f00NVlGczjtSvFVT/j4ifOPBn+6F0wCgYIKoZIzj0EAwIDRwAwRAIgXp4Ylzan
|
|
21
|
+
xWWkNTM2MrkPDIy06zA6vLWkKaXNaTRbc+8CICnfggxFK7IrkX5Z7ZOstjCaO+kd
|
|
22
|
+
/xwJcAEv99IpTAr/
|
|
23
|
+
-----END CERTIFICATE-----
|
|
24
|
+
"""
|
|
@@ -4,6 +4,7 @@ import time
|
|
|
4
4
|
import pytest
|
|
5
5
|
|
|
6
6
|
import PyPtt
|
|
7
|
+
from tests import config
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
def test_del_own_post(ptt_bots):
|
|
@@ -86,3 +87,64 @@ def test_del_other_post_permission_error(ptt_bots):
|
|
|
86
87
|
# 5. Try to delete it and expect a permission error
|
|
87
88
|
with pytest.raises(PyPtt.NoPermission):
|
|
88
89
|
ptt_bot.del_post(board=board, index=target_index)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def test_del_own_post_with_reason_raises(ptt_bots):
|
|
93
|
+
"""Passing a reason for your own post is rejected: the annotation only
|
|
94
|
+
applies when a moderator deletes another user's post."""
|
|
95
|
+
for ptt_bot in ptt_bots:
|
|
96
|
+
post_title = f"PyPtt Reason Reject Test {int(time.time())}"
|
|
97
|
+
ptt_bot.post(board='Test', title_index=1, title=post_title,
|
|
98
|
+
content="This is a test post for deletion.")
|
|
99
|
+
time.sleep(1)
|
|
100
|
+
|
|
101
|
+
newest_index = ptt_bot.get_newest_index(PyPtt.NewIndex.BOARD, board='Test')
|
|
102
|
+
index = -1
|
|
103
|
+
for i in range(5):
|
|
104
|
+
post_data = ptt_bot.get_post('Test', index=newest_index - i)
|
|
105
|
+
if post_data['author'].startswith(ptt_bot.ptt_id) and \
|
|
106
|
+
post_data['title'] == f"[測試] {post_title}":
|
|
107
|
+
index = newest_index - i
|
|
108
|
+
break
|
|
109
|
+
assert index != -1
|
|
110
|
+
|
|
111
|
+
# reason on your own post must raise, and must NOT delete it
|
|
112
|
+
with pytest.raises(PyPtt.exceptions.ParameterError):
|
|
113
|
+
ptt_bot.del_post(board='Test', index=index, reason='測試理由')
|
|
114
|
+
|
|
115
|
+
# clean up: a plain delete still works
|
|
116
|
+
ptt_bot.del_post(board='Test', index=index)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def test_del_other_post_with_reason_as_moderator(ptt_bots):
|
|
120
|
+
"""Tests that a board moderator can delete another user's post and
|
|
121
|
+
annotate a reason on the resulting title."""
|
|
122
|
+
if not config.MOD_BOARD:
|
|
123
|
+
pytest.skip('MOD_BOARD env var not set')
|
|
124
|
+
for ptt_bot in ptt_bots:
|
|
125
|
+
if ptt_bot.host != PyPtt.HOST.PTT1:
|
|
126
|
+
continue # MOD_BOARD is a PTT1 board
|
|
127
|
+
|
|
128
|
+
board = config.MOD_BOARD
|
|
129
|
+
newest_index = ptt_bot.get_newest_index(PyPtt.NewIndex.BOARD, board=board)
|
|
130
|
+
|
|
131
|
+
# Find a recent existing post on MOD_BOARD not authored by the bot.
|
|
132
|
+
target_index = -1
|
|
133
|
+
for i in range(10):
|
|
134
|
+
index_to_check = newest_index - i
|
|
135
|
+
try:
|
|
136
|
+
post = ptt_bot.get_post(board, index=index_to_check, query=True)
|
|
137
|
+
if post[PyPtt.PostField.post_status] == PyPtt.PostStatus.EXISTS and not post['author'].startswith(
|
|
138
|
+
ptt_bot.ptt_id):
|
|
139
|
+
target_index = index_to_check
|
|
140
|
+
break
|
|
141
|
+
except PyPtt.NoSuchPost:
|
|
142
|
+
continue
|
|
143
|
+
|
|
144
|
+
if target_index == -1:
|
|
145
|
+
pytest.skip(f"Could not find a recent post by another user on {board} for host {ptt_bot.host}")
|
|
146
|
+
|
|
147
|
+
ptt_bot.del_post(board=board, index=target_index, reason='PyPtt 自動測試刪文理由')
|
|
148
|
+
|
|
149
|
+
deleted_post = ptt_bot.get_post(board, index=target_index, query=True)
|
|
150
|
+
assert deleted_post[PyPtt.PostField.post_status] == PyPtt.PostStatus.DELETED_BY_MODERATOR
|
pyptt-2.1.2/PyPtt/ssl_config.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
key = """-----BEGIN EC PARAMETERS-----
|
|
2
|
-
BggqhkjOPQMBBw==
|
|
3
|
-
-----END EC PARAMETERS-----
|
|
4
|
-
-----BEGIN EC PRIVATE KEY-----
|
|
5
|
-
MHcCAQEEIFxFRO1jNtGmuhLNAdh+bbaPqEl8jXy2OnIDJ7xcYpKQoAoGCCqGSM49
|
|
6
|
-
AwEHoUQDQgAEWh3ZP/+oUkac+bXn6m1DpFOQ8ZxJO6R1AurOgK8Q+Dwr0mS/0+nO
|
|
7
|
-
wwE63McobMsFUiGM3t3YdzfKnlTAECNlbw==
|
|
8
|
-
-----END EC PRIVATE KEY-----
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
cert = """-----BEGIN CERTIFICATE-----
|
|
12
|
-
MIIB6TCCAY8CFB0+cdUrN+Ovk+BQN8KWG1vDyrW5MAoGCCqGSM49BAMCMHcxCzAJ
|
|
13
|
-
BgNVBAYTAlRXMQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0eTEVMBMGA1UE
|
|
14
|
-
CgwMT3JnYW5pemF0aW9uMRwwGgYDVQQLDBNPcmdhbml6YXRpb25hbCBVbml0MRQw
|
|
15
|
-
EgYDVQQDDAtDb21tb24gTmFtZTAeFw0yNjA1MjUxNDI4MzdaFw0zNjA1MjIxNDI4
|
|
16
|
-
MzdaMHcxCzAJBgNVBAYTAlRXMQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0
|
|
17
|
-
eTEVMBMGA1UECgwMT3JnYW5pemF0aW9uMRwwGgYDVQQLDBNPcmdhbml6YXRpb25h
|
|
18
|
-
bCBVbml0MRQwEgYDVQQDDAtDb21tb24gTmFtZTBZMBMGByqGSM49AgEGCCqGSM49
|
|
19
|
-
AwEHA0IABFod2T//qFJGnPm15+ptQ6RTkPGcSTukdQLqzoCvEPg8K9Jkv9PpzsMB
|
|
20
|
-
OtzHKGzLBVIhjN7d2Hc3yp5UwBAjZW8wCgYIKoZIzj0EAwIDSAAwRQIhAMQMHvf4
|
|
21
|
-
CIY36vOEAMrop9Z0RNEGTPF+EQjj95BZNsayAiBxUKgbC3Sdw34xKfUSdO/K3fP7
|
|
22
|
-
ou/8qOK+MUBXLV73zw==
|
|
23
|
-
-----END CERTIFICATE-----
|
|
24
|
-
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|