diff --git a/.github/workflows/mikrotik_patch.yml b/.github/workflows/mikrotik_patch.yml index 8c8efc5..519e274 100644 --- a/.github/workflows/mikrotik_patch.yml +++ b/.github/workflows/mikrotik_patch.yml @@ -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 diff --git a/npk.py b/npk.py index 8b0528d..daea601 100644 --- a/npk.py +++ b/npk.py @@ -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) diff --git a/routeros.png b/routeros.png index c5662ab..cdc2e4d 100644 Binary files a/routeros.png and b/routeros.png differ