Proyek ini menyederhanakan proses sysupgrade untuk memutakhirkan firmware perangkat yang menjalankan OpenWrt atau distribusi berdasarkan itu. Alat-alat ini menawarkan cara mudah untuk melakukan reflash router dengan versi firmware baru (termasuk semua paket) tanpa perlu menggunakan opkg
.
ASU didasarkan pada API untuk meminta gambar firmware khusus dengan pilihan paket apa pun yang sudah diinstal sebelumnya. Hal ini menghindari kebutuhan untuk menyiapkan lingkungan build, dan memungkinkan pembuatan image firmware khusus bahkan menggunakan perangkat seluler.
Antarmuka web sederhana menggunakan vanilla JavaScript yang saat ini dikembangkan oleh @mwarning. Ia menawarkan pencarian perangkat berdasarkan nama model dan menampilkan tautan ke gambar resmi atau meminta gambar melalui asu API. Silakan bergabung dalam pengembangan di repositori GitLab
Paket luci-app-attendedsysupgrade
menawarkan alat sederhana di bawah System > Attended Sysupgrade
. Ia meminta image firmware baru yang mencakup kumpulan paket saat ini, menunggu hingga dibuat dan mem-flash-nya. Jika "Simpan Konfigurasi" dicentang di GUI, perangkat akan ditingkatkan ke firmware baru tanpa perlu memasukkan ulang konfigurasi apa pun atau menginstal ulang paket apa pun.
Dengan OpenWrt SNAPSHOT-r26792 or newer
aplikasi CLI auc
digantikan dengan owut
sebagai alat CLI yang lebih komprehensif untuk menyediakan cara mudah untuk meningkatkan perangkat Anda.
Paket auc
melakukan proses yang sama seperti luci-app-attendedsysupgrade
dari SSH/baris perintah.
Server mendengarkan permintaan gambar dan, jika valid, secara otomatis menghasilkannya. Ini mengoordinasikan beberapa OpenWrt ImageBuilders dan menyimpan gambar yang dihasilkan dalam cache dalam database Redis. Jika suatu gambar di-cache, server dapat segera menyediakannya tanpa membangun kembali.
Untuk alasan keamanan, setiap build terjadi di dalam container sehingga satu build tidak dapat memengaruhi build lainnya. Agar hal ini berfungsi, container Podman menjalankan layanan API sehingga pekerja dapat mengeksekusi sendiri build di dalam container.
Silakan instal Podman dan uji apakah berhasil:
podman run --rm -it docker.io/library/alpine:latest
Setelah Podman berfungsi, instal podman-compose
:
pip install podman-compose
Sekarang semua layanan dapat dijalankan melalui podman-compose
:
# where to store images and json files
echo "PUBLIC_PATH=$(pwd)/public" > .env
# absolute path to podman socket mounted into worker containers
echo "CONTAINER_SOCK=/run/user/$(id -u)/podman/podman.sock" >> .env
podman-compose up -d
Ini akan memulai server, container API Podman, dan dua pekerja. Proses pertama memerlukan beberapa menit karena paket yang tersedia diurai dari server upstream. Setelah server berjalan, dimungkinkan untuk meminta gambar melalui API di http://localhost:8000
. Ubah podman-compose.yml
untuk mengubah port.
Untuk produksi disarankan menggunakan reverse proxy seperti nginx
atau caddy
.
Setelah mengkloning repositori ini, buat lingkungan virtual Python dan instal dependensinya:
poetry install
poetry run fastapi dev asu/main.py
# podman unix socket (not path), no need to mount anything
export CONTAINER_HOST=unix:///run/user/1001/podman/podman.sock
poetry run rq worker
Untuk memperbarui daftar target yang tersedia, jalankan:
poetry run python3 misc/update_all_targets.py
Ini dapat ditambahkan ke tugas cron untuk memperbarui target secara teratur. Skrip harus diubah jika Anda ingin memperbarui target dari sumber berbeda atau menjalankan server pada port berbeda.
API didokumentasikan melalui OpenAPI dan dapat dilihat secara interaktif di server: