modified: .github/workflows/mikrotik_patch.yml

This commit is contained in:
zyb 2024-06-16 03:15:54 +08:00
parent 6f2fe5f232
commit 5d58b00d70
3 changed files with 26 additions and 10 deletions

View File

@ -59,12 +59,26 @@ jobs:
sudo mksquashfs option-root option.sfs -quiet -comp xz -no-xattrs -b 256k
sudo rm -rf option-root
# - name: Get routeros-${{ env.LATEST_VERSION }}.npk
# run: sudo wget -nv -O routeros-$LATEST_VERSION.npk https://download.mikrotik.com/routeros/$LATEST_VERSION/routeros-$LATEST_VERSION.npk
# - name: Patch routeros-${{ env.LATEST_VERSION }}.npk
# run: sudo -E python3 patch.py routeros-$LATEST_VERSION.npk
- name: Create squashfs for python npk
run: |
sudo wget-nv https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tar.xz
sudo tar -xf Python-3.11.9.tar.xz
sudo rm -f Python-3.11.9.tar.xz
sudo mkdir ./python-root/
cd Python-3.11.9
/configure --enable-optimizations --prefix=./python-root/ LDFLAGS="-static" CFLAGS="-static" --disable-shared --disable-test-modules --without-static-libpython
make -j$(nproc)
sudo make altinstall
cd ..
sudo rm -rf Python-3.11.9
sudo mksquashfs python-root python.sfs -quiet -comp xz -no-xattrs -b 256
sudo rm -rf python-root
- name: Archive Generated File
uses: actions/upload-artifact@v2
with:
name: python-root
path: python.sfs
- name: Get mikrotik-${{ env.LATEST_VERSION }}.iso
run: |
sudo wget -nv -O mikrotik-$LATEST_VERSION.iso https://download.mikrotik.com/routeros/$LATEST_VERSION/mikrotik-$LATEST_VERSION.iso

10
npk.py
View File

@ -258,9 +258,11 @@ if __name__=='__main__':
verify_parser = subparsers.add_parser('verify',help='Verify npk file')
verify_parser.add_argument('input',type=str, help='Input file')
create_option_parser = subparsers.add_parser('create',help='Create option.npk file')
create_option_parser.add_argument('npk_file',type=str,help='From npk file')
create_option_parser.add_argument('squashfs',type=str,help='option squashfs file')
create_option_parser.add_argument('input',type=str,help='From npk file')
create_option_parser.add_argument('output',type=str,help='Output file')
create_option_parser.add_argument('name',type=str,help='NPK name')
create_option_parser.add_argument('squashfs',type=str,help='NPK squashfs file')
create_option_parser.add_argument('-desc','--description',type=str,help='NPK description')
args = parser.parse_args()
if args.command =='sign':
@ -286,8 +288,8 @@ if __name__=='__main__':
kcdsa_private_key = bytes.fromhex(os.environ['CUSTOM_LICENSE_PRIVATE_KEY'])
eddsa_private_key = bytes.fromhex(os.environ['CUSTOM_NPK_SIGN_PRIVATE_KEY'])
option_npk = NovaPackage.load(args.npk_file)
option_npk[NpkPartID.NAME_INFO].data.name = 'option'
option_npk[NpkPartID.DESCRIPTION].data = b'option package has busybox ash'
option_npk[NpkPartID.NAME_INFO].data.name = args.name
option_npk[NpkPartID.DESCRIPTION].data = args.description or args.name.encode()
option_npk[NpkPartID.NULL_BLOCK].data = b''
option_npk[NpkPartID.SQUASHFS].data = open(args.squashfs,'rb').read()
option_npk.sign(kcdsa_private_key,eddsa_private_key)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 96 KiB