From 38d117ee44d8bdd33ae4220c13a346b1143b8e9a Mon Sep 17 00:00:00 2001 From: FrankHan Date: Tue, 16 Dec 2025 11:50:05 +0800 Subject: [PATCH] =?UTF-8?q?[=E9=B8=BF=E8=92=99]=20=E5=9C=A8=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E7=BA=BF=E4=B8=AD=E5=A2=9E=E5=8A=A0=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E4=BB=93=E4=B8=8E=E4=B8=8A=E4=BC=A0=E5=8D=8E?= =?UTF-8?q?=E4=B8=BA=E4=BA=91=E7=A7=81=E4=BB=93=E6=B5=81=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=8E=E4=B8=BA=E4=BA=91=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E7=BA=BFWebhook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ohos.yml | 76 +++++++--- .../easytier-ohrs/ohpm_crypto.zip | Bin 0 -> 3478 bytes .../easytier-ohrs/package/README.md | 143 +++++++++++++++++- .../easytier-ohrs/package/oh-package.json5 | 14 +- 4 files changed, 209 insertions(+), 24 deletions(-) create mode 100644 easytier-contrib/easytier-ohrs/ohpm_crypto.zip diff --git a/.github/workflows/ohos.yml b/.github/workflows/ohos.yml index b94f1a4e..4342bafa 100644 --- a/.github/workflows/ohos.yml +++ b/.github/workflows/ohos.yml @@ -56,38 +56,43 @@ jobs: wget \ unzip \ git \ - pkg-config + pkg-config curl libgl1-mesa-dev expect sudo apt-get clean - - name: Download and extract native SDK - working-directory: ../../../ + - name: Get easytier version run: | - echo $PWD - wget -q \ - https://github.com/openharmony-rs/ohos-sdk/releases/download/v5.1.0/ohos-sdk-windows_linux-public.tar.gz.aa - wget -q \ - https://github.com/openharmony-rs/ohos-sdk/releases/download/v5.1.0/ohos-sdk-windows_linux-public.tar.gz.ab - cat ohos-sdk-windows_linux-public.tar.gz.aa ohos-sdk-windows_linux-public.tar.gz.ab > sdk.tar.gz - echo "Extracting native..." - mkdir sdk - tar -xzf sdk.tar.gz ohos-sdk/linux/native-linux-x64-5.1.0.107-Release.zip - tar -xzf sdk.tar.gz ohos-sdk/linux/toolchains-linux-x64-5.1.0.107-Release.zip - unzip -qq ohos-sdk/linux/native-linux-x64-5.1.0.107-Release.zip -d sdk - unzip -qq ohos-sdk/linux/toolchains-linux-x64-5.1.0.107-Release.zip -d sdk - ls -la sdk/native/llvm/bin/ - rm -rf ohos-sdk-windows_linux-public.tar.gz.aa ohos-sdk-windows_linux-public.tar.gz.ab ohos-sdk/ + EASYTIER_CARGO_VERSION=$(cargo metadata --format-version 1 --no-deps --manifest-path easytier/Cargo.toml \ + | jq -r '.packages[0].version') + EASYTIER_GIT_HASH=$(git -C easytier rev-parse --short HEAD) + EASYTIER_VERSION="${EASYTIER_CARGO_VERSION}-${EASYTIER_GIT_HASH}" + echo "EASYTIER_VERSION=${EASYTIER_VERSION}" >> $GITHUB_ENV + cd ./easytier-contrib/easytier-ohrs/package + jq --arg v "$EASYTIER_VERSION" '.version = $v' oh-package.json5 > oh-package.tmp.json5 + mv oh-package.tmp.json5 oh-package.json5 + + - name: Generate CHANGELOG.md for current commit + working-directory: ./easytier-contrib/easytier-ohrs/package + run: | + { + echo "## easytier-ohrs ${EASYTIER_VERSION}" + echo + git log -1 --pretty=format:"- %s" + echo + } > CHANGELOG.md + + - name: Setup HarmonyOS CLI tools + uses: ErBWs/setup-ohos@v1 - name: Download and Extract Custom SDK run: | wget https://github.com/FrankHan052176/Easytier-OHOS-sdk/releases/download/v1/ohos-sdk.zip -O /tmp/ohos-sdk.zip sudo unzip -o /tmp/ohos-sdk.zip -d /tmp/custom-sdk - sudo cp -rf /tmp/custom-sdk/linux/native/* $HOME/sdk/native - echo "Custom SDK files deployed to $HOME/sdk/native" - ls -a $HOME/sdk/native + sudo cp -rf /tmp/custom-sdk/linux/native/* $OHOS_NDK_HOME/native + echo "Custom SDK files deployed to $OHOS_NDK_HOME/native" + ls -a $OHOS_NDK_HOME/native - name: Setup build environment run: | - echo "OHOS_NDK_HOME=$HOME/sdk" >> $GITHUB_ENV echo "TARGET_ARCH=aarch64-linux-ohos" >> $GITHUB_ENV - name: Create clang wrapper script @@ -118,6 +123,35 @@ jobs: ohrs artifact mv package.har easytier-ohrs.har + - name: Publish To Center Ohpm + working-directory: ./easytier-contrib/easytier-ohrs + env: + OHPM_PUBLISH_CODE: ${{ secrets.OHPM_PUBLISH_CODE }} + OHPM_PRIVATE_KEY: ${{ secrets.OHPM_PRIVATE_KEY }} + OHPM_KEY_PASSPHRASE: ${{ secrets.OHPM_KEY_PASSPHRASE }} + run: | + ohpm config set publish_id "$OHPM_PUBLISH_CODE" + ohpm config set publish_registry https://ohpm.openharmony.cn/ohpm + TMP_DIR=$(mktemp -d) + PRIVATE_KEY_FILE="$TMP_DIR/private_key" + printf '%s' "$OHPM_PRIVATE_KEY" > "$PRIVATE_KEY_FILE" + chmod 600 "$PRIVATE_KEY_FILE" + ohpm config set key_path $PRIVATE_KEY_FILE + unzip ohpm_crypto.zip -d /home/runner/work/ + ohpm config set crypto_path /home/runner/work/ohpm_crypto + chmod 755 /home/runner/work/ohpm_crypto/* + PASSPHRASE="$(printf '%s' "$OHPM_KEY_PASSPHRASE" | tr -d '\r\n')" + ohpm config set key_passphrase "$PASSPHRASE" + ohpm publish easytier-ohrs.har + + - name: Publish To Private Ohpm + working-directory: ./easytier-contrib/easytier-ohrs + run: | + printf '%s' "${{ secrets.CODEARTS_PRIVATE_OHPM }}" > ~/.ohpm/.ohpmrc + ohpm config set strict_ssl false + ohpm publish easytier-ohrs.har + curl --header "Content-Type: application/json" --request POST --data "{}" ${{ secrets.CODEARTS_WEBHOOKS }} + - name: Upload artifact uses: actions/upload-artifact@v4 with: diff --git a/easytier-contrib/easytier-ohrs/ohpm_crypto.zip b/easytier-contrib/easytier-ohrs/ohpm_crypto.zip new file mode 100644 index 0000000000000000000000000000000000000000..452a4cab06cc225ce3bc0c1b20e4372f7934549c GIT binary patch literal 3478 zcmb`J2~<;O7RMhF7B!H9fI<<&$N@Ltdt2U%QlVArK|~U<&{iqFRjs0cF+fCtSOIHs zSf-$05tL=B(2A&_LJNvG(V})->QXDxDuk&U%gB^rn1{BWunjtgFDH4)J2&6|-rv37 zyI0|7EV6<6R^XmLFMs~!_Ybjf-LN`5ER>0i30H0KR19k=8DL27D^od#AEzW^%)=9O)Mq zuYKvMj{zphrH6{)tdilizktXI5u-WZ}FlS){aTT(sQR%-x}@=xlDP z|LoSE8nd)_ro1{Wo_$Gca8+3iNWWkVUYh@2EfS288VPn|An3iJ%rTlpI6zPYfiW=3 z;v6j_NEwaul$^xnJb(q397l6FK~oHik{AwC2+J}UOfn<`_&&V0X*vrCHaA|b^&xXV zInbM)nbHR75V3l0}KedRgh$7G5-W41%dExkNZP^ogzgwWcou7%NG$z>JQ@&H_bbD#U z4ZliT%|tT2I!XdoR0Fa1_n#a;=^E9r`!7d3riHF{&X~Md9aXl?wF+dtlZVeB>oMQe_vN*GGPF*b?T70ncgYi$)UoUda$$Jtj+joq2< zq*Wd4P&hSDa;@v8W^}+_ZT7LsUJ9)am-vUZn#ERmue|PY&cA4*&czmy{-A76>$w?o z`qK7{Z-Y<8O}N{>E^qB!$HJd;w)UE|ORAoJYj$s`=>qSd%DeNPm6p}r*C=a3*VQQe zC&hoh=%B|VxMx;dQisuNr4Jd9zT>I_#%cKUA)a!U;Ax%#G+-IIoaE$)4B=!5CgWrn z4KNho6ea@80)qRo%TA^(z!2U&z+# zH*>pA)MlC7!RMx{xYpF#`Mh(!$n7onUu(BKaBO``dVg2br4yD{+@*8YL^o^Z{<`46k}Mq|8p3~NP4%bHJ-|t! z#TyEU^&??^L81TDU`Sz_kRn6OqclUjo|7X{m@f2VLnnpSZ748uEesa0>Q`(*g9Si8 z34fbcEVq6WgdyndLrILrJYh&;WH(15F-bHCHQbNH$gp3OT>nmNNMhko5~IyS9Y9veqc?c2 +```` + +获取正在运行的网络实例的信息。 + +--- + +### collectRunningNetwork + +```ts +collectRunningNetwork(): Array ``` +获取当前正在运行的网络实例名称列表。 + +--- + +### convertTomlToNetworkConfig + +```ts +convertTomlToNetworkConfig(cfgStr: string): string +``` + +将 TOML 配置转换为 NetworkConfig。 + +* `cfgStr`:TOML 配置内容 + +--- + +### defaultNetworkConfig + +```ts +defaultNetworkConfig(): string +``` + +获取默认的网络配置(JSON 字符串),用于转换为object进行赋值。 + +--- + +### easytierVersion + +```ts +easytierVersion(): string +``` + +获取 EasyTier 当前版本号。 + +--- + +### hilogGlobalOptions + +```ts +hilogGlobalOptions(domain: number, tag: string): void +``` + +设置全局日志选项。 + +* `domain`:日志域 ID +* `tag`:日志标签 + +--- + +### initPanicHook + +```ts +initPanicHook(): void +``` + +初始化 panic 钩子,用于将Rust侧的panic输出到hilog中,请先通过 hilogGlobalOptions 设置hilog的参数。 + +--- + +### initTracingSubscriber + +```ts +initTracingSubscriber(): void +``` + +初始化 tracing 日志订阅器,用于将Rust侧日志同步输出到hilog中,请先通过 hilogGlobalOptions 设置hilog的参数。 + +--- + +### isRunningNetwork + +```ts +isRunningNetwork(instId: string): boolean +``` + +判断指定网络实例是否正在运行。 + +* `instId`:网络实例 ID + +--- + +### parseNetworkConfig + +```ts +parseNetworkConfig(cfgJson: string): boolean +``` + +校验网络配置(JSON 格式)是否合法。 + +* `cfgJson`:网络配置内容 + +--- + +### runNetworkInstance + +```ts +runNetworkInstance(cfgJson: string): boolean +``` + +启动网络实例。 + +* `cfgJson`:网络配置(JSON) + +--- + +### setTunFd + +```ts +setTunFd(instId: string, fd: number): boolean +``` + +为指定网络实例设置 TUN 设备文件描述符。 + +* `instId`:网络实例 ID +* `fd`:TUN 设备文件描述符 + +--- + +### stopNetworkInstance + +```ts +stopNetworkInstance(instNames: Array): void +``` + +停止指定的网络实例。 + +* `instNames`:网络实例名称列表 + + ## Usage ```ts diff --git a/easytier-contrib/easytier-ohrs/package/oh-package.json5 b/easytier-contrib/easytier-ohrs/package/oh-package.json5 index fccd2cc9..4338c250 100755 --- a/easytier-contrib/easytier-ohrs/package/oh-package.json5 +++ b/easytier-contrib/easytier-ohrs/package/oh-package.json5 @@ -2,9 +2,19 @@ "license": "LGPL-3.0", "author": "easytier", "name": "easytier-ohrs", - "description": "", + "description": "EasyTier for OpenHarmonyOS", "main": "index.ets", "version": "0.0.1", "types": "libs/index.d.ts", - "dependencies": {} + "dependencies": {}, + "compatibleSdkVersion": "17", + "compatibleSdkType": "OpenHarmony", + "obfuscated": false, + "nativeComponents": [ + { + "name": "libeasytier_ohrs.so", + "compatibleSdkVersion": "17", + "compatibleSdkType": "OpenHarmony" + } + ] }