Skip to content

Commit bf6fa80

Browse files
author
Roy
committed
Merge branch 'multi_arch_support'
2 parents 58bae1a + fc75e95 commit bf6fa80

8 files changed

Lines changed: 3097 additions & 2969 deletions

File tree

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
from sonatype/nexus3:3.41.1
1+
FROM ccr.ccs.tencentyun.com/webankpartners/nexus3:3.86.2
22
LABEL maintainer = "Webank CTB Team"
33
USER root
44
RUN rm -f /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/ubi.repo
5-
ADD build/Centos-8.repo /etc/yum.repos.d/ubi.repo
5+
ADD build/Centos-9.repo /etc/yum.repos.d/base.repo
66
ADD artifacts-corepy/requirements.txt /tmp/requirements.txt
77
ADD artifacts-corepy/dist/* /tmp/
88
RUN mkdir -p /etc/artifacts_corepy/
@@ -12,7 +12,7 @@ ADD artifacts-corepy/etc/* /etc/artifacts_corepy/
1212
ADD nexus-data.tar.gz /nexus-data-init
1313

1414
# Install && Clean up
15-
RUN microdnf clean all && microdnf makecache && microdnf -y install python3 python3-devel swig openssl-devel gcc libev-devel make && \
15+
RUN microdnf clean all && microdnf makecache && microdnf -y install expat python3 python3-devel swig openssl-devel gcc libev-devel make && \
1616
pip3 install -i http://mirrors.tencentyun.com/pypi/simple/ --trusted-host mirrors.tencentyun.com -r /tmp/requirements.txt && \
1717
pip3 install /tmp/*.whl && microdnf -y remove python3-devel swig openssl-devel gcc libev-devel make && rm -rf /tmp/* && microdnf clean all
1818
ADD build/start_all.sh /scripts/start_all.sh

Dockerfile_nonexus

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM python:3.8-slim-buster
1+
FROM ccr.ccs.tencentyun.com/webankpartners/python:3.8.20-slim-bullseye
22
LABEL maintainer = "Webank CTB Team"
33
RUN sed -i 's/deb.debian.org/mirrors.tencentyun.com/g' /etc/apt/sources.list
44
RUN sed -i 's/security.debian.org/mirrors.tencentyun.com/g' /etc/apt/sources.list

Makefile

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,39 @@
11
current_dir=$(shell pwd)
2-
version=$(shell bash ./build/version.sh)
2+
version=${PLUGIN_VERSION}
33
date=$(shell date +%Y%m%d%H%M%S)
4-
project_name=$(shell basename "${current_dir}")
4+
project_name ?= $(shell basename "${current_dir}")
55
remote_docker_image_registry=ccr.ccs.tencentyun.com/webankpartners/wecube-plugins-artifacts
6-
with_nexus='true'
6+
arch ?= amd64 # 默认amd64,可选 ARCH=amd64/arm64
7+
with_nexus ?= true # 默认true,可选 WITH_NEXUS=true/false
8+
ifeq ($(with_nexus),true)
9+
dockerfile := Dockerfile
10+
else
11+
dockerfile := Dockerfile_nonexus
12+
endif
713

8-
clean_py:
9-
rm -rf $(current_dir)/artifacts-corepy/dist/
1014

11-
build_py: clean_py
15+
16+
clean:
17+
rm -rf package
18+
rm -rf artifacts-corepy/dist/
19+
rm -rf artifacts-ui/dist/
20+
21+
build: clean
1222
pip3 install wheel
1323
cd artifacts-corepy && python3 setup.py bdist_wheel
14-
cd artifacts-ui && npm install --force && npm run plugin
24+
docker run --rm -v $(current_dir):/home/node/app -w /home/node/app node:16.20.2 sh -c "npm set registry https://mirrors.cloud.tencent.com/npm/ && cd /home/node/app/artifacts-ui && npm install --force && npm run plugin"
1525

16-
image_py: build_py
26+
image: build
27+
ifeq ($(with_nexus),true)
1728
wget -O nexus-data.tar.gz https://wecube-1259801214.cos.ap-guangzhou.myqcloud.com/nexus-data/nexus-data.tar.gz
18-
@if [ $(with_nexus) == 'true' ]; \
19-
then \
20-
docker build -t $(project_name):$(version) .; \
21-
else \
22-
docker build -t $(project_name):$(version) -f Dockerfile_nonexus .; \
23-
fi
29+
endif
30+
ifeq ($(arch),arm64)
31+
docker buildx build --platform linux/arm64 -t $(project_name):$(version) -f $(dockerfile) . --load
32+
else
33+
docker build -t $(project_name):$(version) -f $(dockerfile) .
34+
endif
2435

25-
package_py: image_py
36+
package: image
2637
rm -rf package
2738
mkdir -p package
2839
cd package && docker save $(project_name):$(version) -o image.tar
@@ -32,13 +43,13 @@ package_py: image_py
3243
cd package && sed -i "s~{{VERSION}}~$(version)~g" register.xml
3344
cd artifacts-ui/dist && zip -r ui.zip .
3445
cd package && cp ../artifacts-ui/dist/ui.zip .
35-
cd package && zip -r $(project_name)-$(version).zip .
46+
cd package && zip -r $(project_name)-$(version)-$(arch).zip .
3647
docker rmi $(project_name):$(version)
3748

38-
upload_py: package_py
49+
upload: package
3950
$(eval container_id:=$(shell docker run -v $(current_dir)/package:/package -itd --entrypoint=/bin/sh minio/mc))
4051
docker exec $(container_id) mc config host add wecubeS3 $(s3_server_url) $(s3_access_key) $(s3_secret_key) wecubeS3
41-
docker exec $(container_id) mc cp /package/$(project_name)-$(version).zip wecubeS3/wecube-plugin-package-bucket
52+
docker exec $(container_id) mc cp /package/$(project_name)-$(version)-$(arch).zip wecubeS3/wecube-plugin-package-bucket
4253
docker stop $(container_id)
4354
docker rm -f $(container_id)
44-
rm -rf $(project_name)-$(version).zip
55+
rm -rf $(project_name)-$(version)-$(arch).zip

artifacts-corepy/artifacts_corepy/common/wecube.py

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import base64
1010
import logging
1111
import random
12+
from cryptography.hazmat.primitives import serialization
1213

1314
from talos.core import config
1415
from talos.core.i18n import _
@@ -18,16 +19,48 @@
1819
CONF = config.CONF
1920

2021

22+
def rsa_pkcs1_v15_pad(message: bytes, key_size: int) -> bytes:
23+
"""
24+
Implements PKCS#1 v1.5 padding for private key encryption.
25+
Block = 0x00 | 0x01 | PS(0xff...) | 0x00 | message
26+
"""
27+
max_msg_len = key_size - 11
28+
if len(message) > max_msg_len:
29+
raise ValueError("Message too long")
30+
ps = b"\xff" * (key_size - len(message) - 3)
31+
return b"\x00\x01" + ps + b"\x00" + message
32+
33+
2134
def encrypt(message, rsa_key):
22-
import M2Crypto.RSA
23-
template = '''-----BEGIN PRIVATE KEY-----
24-
%s
25-
-----END PRIVATE KEY-----'''
26-
key_pem = template % rsa_key
27-
privat_key = M2Crypto.RSA.load_key_string(key_pem.encode())
28-
ciphertext = privat_key.private_encrypt(message.encode(), M2Crypto.RSA.pkcs1_padding)
29-
encrypted_message = base64.b64encode(ciphertext).decode()
30-
return encrypted_message
35+
key_pem = f"""-----BEGIN PRIVATE KEY-----
36+
{rsa_key}
37+
-----END PRIVATE KEY-----"""
38+
private_key = serialization.load_pem_private_key(
39+
key_pem.encode(),
40+
password=None,
41+
)
42+
numbers = private_key.private_numbers()
43+
n = numbers.public_numbers.n
44+
d = numbers.d
45+
# Key size in bytes
46+
key_size = (n.bit_length() + 7) // 8
47+
# PKCS#1 v1.5 padding
48+
padded = rsa_pkcs1_v15_pad(message.encode(), key_size)
49+
# Raw RSA private key exponentiation (like M2Crypto.private_encrypt)
50+
ciphertext_int = pow(int.from_bytes(padded, "big"), d, n)
51+
ciphertext = ciphertext_int.to_bytes(key_size, "big")
52+
return base64.b64encode(ciphertext).decode()
53+
54+
# def encrypt(message, rsa_key):
55+
# import M2Crypto.RSA
56+
# template = '''-----BEGIN PRIVATE KEY-----
57+
# %s
58+
# -----END PRIVATE KEY-----'''
59+
# key_pem = template % rsa_key
60+
# privat_key = M2Crypto.RSA.load_key_string(key_pem.encode())
61+
# ciphertext = privat_key.private_encrypt(message.encode(), M2Crypto.RSA.pkcs1_padding)
62+
# encrypted_message = base64.b64encode(ciphertext).decode()
63+
# return encrypted_message
3164

3265

3366
class WeCubeClient(utils.ClientMixin):

artifacts-corepy/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# of appearance. Changing the order has an impact on the overall integration
33
# process, which may cause wedges in the gate later.
44
greenlet==1.1.2
5-
talos-api==1.3.6
5+
talos-api
66
requests==2.27.1
77
requests_toolbelt==1.0.0
88
pyjwt<2.0.0
@@ -13,5 +13,5 @@ gunicorn==21.2.0
1313
apscheduler==3.10.4
1414
pytz==2023.3.post1
1515
# for platform login encryption, apt install swig
16-
M2Crypto==0.40.1
16+
cryptography==46.0.3
1717
pymysql

0 commit comments

Comments
 (0)