from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
from urllib.parse import quote
from tos import TosClientV2
from tos.models2 import PolicySignatureCondition
"ak": os.environ["VOLCENGINE_ACCESS_KEY_ID"],
"sk": os.environ["VOLCENGINE_ACCESS_KEY_SECRET"],
"endpoint": "tos-cn-beijing.volces.com",
"ak": os.environ["VOLCENGINE_ACCESS_KEY_ID"],
"sk": os.environ["VOLCENGINE_ACCESS_KEY_SECRET"],
"topic_id": "c1a58ff6-9439-4316-bb26-0f97f4f4****",
"endpoint": "tls-cn-beijing.volces.com",
LOG_TOKEN = f"https://{LOG_CONFIG['endpoint']}?AK={LOG_CONFIG['ak']}&SK={LOG_CONFIG['sk']}&TopicId={LOG_CONFIG['topic_id']}&Region={LOG_CONFIG['region']}"
PUBLIC_KEY_BASE64 = "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUF0NVd0K29BYnlQMDJEWGZZSXZqaApzRThRY25BQnRkOHJSSVVIWHE3TmkxUmRiVjliRG4wQ0Zsb0syZVYvRzJwWjZsMHJ1NGZXYWhjWHFGMDREeTRoCkRrRWRJcHhzWlBLcVh0c01LaVNxSlZoTmpJZXVoVVZpN1dSeUJtWWk0cXU3V1k5RE5UU2dCSHYyNGtrNWR6NEYKYWVXdHcvRGJJVDdzOFJaSkc3NllxOHRRQ25TREkvd2ZLOEZwQlo3WW1WL1hUT0lFeVR4N2ZhcWdod3VzeVh1aApPQjA2aGRIUklyMTk0R0RGM1RaQ1U3NUE1cTVIcHM2UGtTQjJ3eW15ZEovWXE1SU1Dc3d6UEhEYTR4d3lxbzJuCnNUK1hHVmNYUzNmT1NhMFBIWWw4aC95RWhpR2hkNUJyVjhrWUlUS0dhNWdUenBMOUMwTWV2U3A5OGZyaWtDOGgKKzlBQjlHNXlFRjZ4YVdQR3JvRTJiWmtONzZyZUo5MXhOczZwWEdpeWI3Z1k4VndpU2tpVi8vczZ0ZmE2Y3B1bQpZQ0FsSksrakJta05hc21ZdW5aUkVET25kQ1VDYlVlZHJIUnFQcThQc0p2Vmw4T3JwdFo5U2dKRVJRaEtld2pJCnJNczA5djU4VC9aaUpGa0VLK2NaN3hEV2ZaeFBMOFdtQU1mdEhsdXlYRTdWSjREMXZBSnUzbWNHdkJLNE9DYVYKalJqT2ZTai9xU2xsUUVOc1ZRUTBSTWFJZHY5L0pyM29yZW5LTzdOUUVablhOV0tpVExaK1VqOVdETXdqdTN4YQpUdTcvODRFWFFmRDFVYUlXWlhDKzdvYlNjcmhkTDY5TDNUTmt0cFljNU4vY2JJRWtHWFZPVGhqQ0tnNzJJMkJECnlXUWV3KzJWYVVSa2ZOWmZJMTFHT3kwQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQ=="
PUBLIC_KEY = base64.b64decode(PUBLIC_KEY_BASE64).decode('utf-8')
WEBSITE_URL = 'https://document-share.tos-cn-beijing.volces.com/v2/index.html'
"bucket": "bucket-demo",
"operator": "starts-with"
key = RSA.import_key(PUBLIC_KEY)
cipher = PKCS1_v1_5.new(key)
encrypted = cipher.encrypt(data.encode('utf-8'))
res = base64.b64encode(encrypted).decode('utf-8')
return base64.b64encode(data.encode('utf-8')).decode('utf-8')
if __name__ == '__main__':
region=TOS_CONFIG["region"],
endpoint=TOS_CONFIG["endpoint"]
res = client.pre_signed_policy_url(bucket=SHARECONFIG["bucket"],
conditions=[PolicySignatureCondition(key=SHARECONFIG["conditions"]["key"],
value=SHARECONFIG["conditions"]["value"],
operator=SHARECONFIG["conditions"][
expires=SHARECONFIG["expires"])
url = res.get_signed_url_for_list()
share_url = f"{WEBSITE_URL}?token={encode(url)}"
share_url += f"&logToken={quote(encrypt_data(LOG_TOKEN))}"
print('share_url:', share_url)