modified: .github/workflows/mikrotik_patch.yml

modified:   npk.py
	modified:   patch.py
This commit is contained in:
zyb 2024-07-02 10:00:15 +08:00
parent da8031a8bd
commit d518b90b7c
3 changed files with 11 additions and 1 deletions

View File

@ -25,6 +25,7 @@ jobs:
TZ: 'Asia/Shanghai'
LATEST_VERSION_URL: 'https://upgrade.mikrotik.com/routeros/NEWESTa7'
LATEST_VERSION: ""
BUILD_TIME: $(date +"%s")
CUSTOM_LICENSE_PRIVATE_KEY: ${{ secrets.CUSTOM_LICENSE_PRIVATE_KEY }}
CUSTOM_LICENSE_PUBLIC_KEY: ${{ secrets.CUSTOM_LICENSE_PUBLIC_KEY }}
CUSTOM_NPK_SIGN_PRIVATE_KEY: ${{ secrets.CUSTOM_NPK_SIGN_PRIVATE_KEY }}
@ -276,7 +277,7 @@ jobs:
mkdir -p ./publish/$LATEST_VERSION
cp CHANGELOG.txt ./publish/$LATEST_VERSION/CHANGELOG
cp ./new_iso/*.npk ./publish/$LATEST_VERSION/
echo $LATEST_VERSION $(date +"%s") > ./publish/NEWESTa7.${{ matrix.channel }}
echo $LATEST_VERSION $BUILD_TIME > ./publish/NEWESTa7.${{ matrix.channel }}
sudo apt-get install -y lftp > /dev/null 2>&1
sudo -E lftp -u ${{ secrets.SSH_USERNAME }},'${{ secrets.SSH_PASSWORD }}' sftp://${{ secrets.SSH_SERVER }}:${{ secrets.SSH_PORT }} <<EOF
set sftp:auto-confirm yes

5
npk.py
View File

@ -261,9 +261,12 @@ if __name__=='__main__':
eddsa_private_key = bytes.fromhex(os.environ['CUSTOM_NPK_SIGN_PRIVATE_KEY'])
kcdsa_public_key = bytes.fromhex(os.environ['CUSTOM_LICENSE_PUBLIC_KEY'])
eddsa_public_key = bytes.fromhex(os.environ['CUSTOM_NPK_SIGN_PUBLIC_KEY'])
build_time = os.environ['BUILD_TIME']
if args.command =='sign':
print(f'Signing {args.input}')
npk = NovaPackage.load(args.input)
if build_time:
npk[NpkPartID.NAME_INFO].data._build_time = int(build_time)
npk.sign(kcdsa_private_key,eddsa_private_key)
npk.save(args.output)
elif args.command == 'verify':
@ -279,6 +282,8 @@ if __name__=='__main__':
print(f'Creating {args.output} from {args.input}')
option_npk = NovaPackage.load(args.input)
option_npk[NpkPartID.NAME_INFO].data.name = args.name
if build_time:
option_npk[NpkPartID.NAME_INFO].data._build_time = int(build_time)
option_npk[NpkPartID.DESCRIPTION].data = args.description.encode() if args.description else args.name.encode()
option_npk[NpkPartID.NULL_BLOCK].data = b''
option_npk[NpkPartID.SQUASHFS].data = open(args.squashfs,'rb').read()

View File

@ -109,6 +109,10 @@ def patch_npk_file(key_dict,kcdsa_private_key,eddsa_private_key,input_file,outpu
run_shell_command(f"rm -rf {extract_dir}")
npk[NpkPartID.SQUASHFS].data = open(squashfs_file,'rb').read()
run_shell_command(f"rm -f {squashfs_file}")
build_time = os.environ['BUILD_TIME']
if build_time:
npk[NpkPartID.NAME_INFO].data._build_time = int(build_time)
npk.sign(kcdsa_private_key,eddsa_private_key)
npk.save(output_file or input_file)