Dokumen ini memuat catatan teknis perbaikan, peningkatan keamanan, perubahan UI/UX, serta fitur baru untuk setiap rilis PowerDNS-Admin yang dikelola oleh @alsyundawy.
Rilis pemeliharaan utama mencakup perbaikan bug, peningkatan keamanan, idempotensi migrasi database, desain ulang UI/UX halaman login & registrasi, serta kompatibilitas Python 3.12+/3.13 β berbasis
0.4.2-alsyundawy-fix.
lib/helper.py)
verify = False dan menggantinya dengan nilai dinamis dari database Setting().get('verify_ssl_connections').models/user.py & Migrasi d2e3f4a5b6c7)
otp_last_used agar token TOTP yang sama tidak dapat digunakan kembali dalam window validitas yang sama.decorators.py / routes/api.py)
api_current_user (LocalProxy) menjamin kredensial Cookie Session tidak menimpa autentikasi HTTP Basic Auth pada endpoint API.routes/index.py & routes/base.py)
routes/admin.py)
@operator_role_required ditambahkan pada rute /template/<template>/apply untuk mencegah modifikasi templat tanpa hak akses.routes/domain.py)
HTTP 502); flag status DNSSEC hanya berubah setelah operasi API dikonfirmasi berhasil.models/role.py & models/user.py)
Role.get_id_by_name(name) secara otomatis mendaftarkan role default (User, Administrator, Operator) jika tabel role masih kosong. Mencegah AttributeError: 'NoneType' object has no attribute 'id'.migrations/env.py & versions/787bdba9e147_init_db.py)
787bdba9e147_init_db.py memeriksa keberadaan tabel sebelum mengeksekusi CREATE TABLE account.migrations/env.py men-stamp alembic_version ke revisi head (d2e3f4a5b6c7) secara otomatis jika skema database sudah ada, mengeliminasi error table ... already exists.powerdnsadmin/__init__.py & models/sessions.py)
SESSION_SQLALCHEMY = models.db diikat sebelum Session(app) diinisialisasi; model Sessions menggunakan extend_existing = True.routes/index.py)
authenticate_user() kini mengarahkan pengguna ke dashboard.dashboard setelah login berhasil.routes/index.py)
if CAPTCHA_ENABLE and not captcha.validate(): agar pendaftaran berhasil saat fitur CAPTCHA dinonaktifkan.powerdnsadmin/__init__.py & base.html)
@app.context_processor inject_pdns_version didaftarkan secara global untuk mencegah TypeError: Object of type Undefined is not JSON serializable pada seluruh sub-menu dashboard.base.html & 1base.html)
lib/utils.py)
fetch_remote tidak lagi membuang header kustom dari pemanggil (contoh: X-API-Key).models/domain.py)
isinstance(jdata, dict) ditambahkan pada respons delete_dnssec_key.routes/index.py)
ascii_lowercase, ascii_uppercase, dan punctuation.register.html)
sr-only untuk semua kontrol form (aksesibilitas screen-reader) dan field honeypot anti-bot.auth_method (login.html)
name="auth_method" dari <select> dan semua hidden input Jinja2 kondisional. Diganti dengan satu <input type="hidden" id="auth_method_hidden" name="auth_method"> yang disinkronkan via JS saat halaman dimuat dan pada event change.login.html & register.html)
.alert diubah dari #ff9999 / #fca5a5 menjadi #ffffff dengan background rgba(239,68,68,0.20) untuk memenuhi rasio kontras β₯ 4.5:1.safeSrc() (login.html & register.html)
void urlErr; ditambahkan di dalam blok catch (urlErr) pada fungsi safeSrc() agar exception yang ditangkap diakui secara eksplisit, memenuhi aturan linter βHandle this exception or donβt catch it at allβ.distutils yang sudah dihapus dengan helper lokal version_tuple dan strtobool.imghdr yang sudah deprecated dengan deteksi berbasis magic-byte signature..github/workflows/jekyll-gh-pages.yml untuk deployment otomatis situs dokumentasi ke GitHub Pages.for-the-badge untuk badge primer, flat-square untuk badge sekunder.Rilis perbaikan keamanan antarmuka (frontend) oleh @alsyundawy.
bcbb7660.4.2-alsyundawy...0.4.2-alsyundawy-fix6login.html, 7login.html, 8login.html)
safeSrc untuk pengolahan logo, pencegahan URL sumber yang tidak valid, dan validasi URL pada tema terang.register.html)
nonce="" pada tag script.javascript: / data:.Rilis perbaikan keamanan komprehensif, remediasi peringatan CodeQL, dan kompatibilitas RFC2317 oleh @alsyundawy.
789c1850.4.2...0.4.2-alsyundawycryptography: 45.0.5 β 46.0.5 β 48.0.1 β 50.0.0 (#19, #25, #28)pyasn1: 0.6.2 β 0.6.4 (#26)setuptools: 80.9.0 β 83.0.0 (#27)Rilis resmi dari PowerDNS-Admin.
postgresql://.