From f6ab9bbfa71884af3e79925b1e89e0c28d6e0c73 Mon Sep 17 00:00:00 2001 From: oxpoe Date: Thu, 5 Nov 2026 04:05:20 +0700 Subject: [PATCH] feat(update): sumber update bisa diatur (update_base_url) - setting baru update_base_url (default https://gitea.oxpoe.xyz), menggantikan hardcode gitea.oxpoe.qzz.io - field di Pengaturan: Sumber Update + Repo Update (owner/nama) - default project_url ikut diperbarui --- config/settingsManager.js | 2 ++ routes/adminPortal.js | 14 ++++++++++++-- views/admin/settings.ejs | 11 ++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/config/settingsManager.js b/config/settingsManager.js index b84f5f2..47293e0 100644 --- a/config/settingsManager.js +++ b/config/settingsManager.js @@ -293,6 +293,8 @@ function ensureDefaultSettings() { custom_ai_base_url: '', custom_ai_model: 'llama3', ai_self_healing_enabled: false, + update_base_url: 'https://gitea.oxpoe.xyz', + update_repo: 'oxpoe/open-isp', // RADIUS Server settings (ditambahkan untuk update dari Gitea) radius_enabled: '0', radius_secret: 'secret123', diff --git a/routes/adminPortal.js b/routes/adminPortal.js index 210bbbe..4c2d1e6 100644 --- a/routes/adminPortal.js +++ b/routes/adminPortal.js @@ -396,9 +396,11 @@ function getUpdateInfo(repoRoot) { info.branch = branch; const _repo = String(getSetting('update_repo', 'oxpoe/open-isp') || '').trim(); + const _base = String(getSetting('update_base_url', 'https://gitea.oxpoe.xyz') || '').trim().replace(/\/+$/, ''); info.repo = _repo || 'origin'; + info.baseUrl = _base; const fetch = _repo - ? runCmd('git', ['fetch', '--prune', 'https://gitea.oxpoe.qzz.io/' + _repo + '.git', branch], repoRoot) + ? runCmd('git', ['fetch', '--prune', _base + '/' + _repo + '.git', branch], repoRoot) : runCmd('git', ['fetch', '--prune'], repoRoot); if (!fetch.ok) { info.error = 'Gagal git fetch: ' + (fetch.stderr || fetch.stdout || '').trim(); @@ -4666,9 +4668,11 @@ router.post('/update/run', requireAdminSession, restrictToAdmin, (req, res) => { if (!inside.ok) throw new Error('Folder ini belum menjadi git repository.'); const _repo = String(getSetting('update_repo', 'oxpoe/open-isp') || '').trim(); + const _base = String(getSetting('update_base_url', 'https://gitea.oxpoe.xyz') || '').trim().replace(/\/+$/, ''); info.repo = _repo || 'origin'; + info.baseUrl = _base; const fetch = _repo - ? runCmd('git', ['fetch', '--prune', 'https://gitea.oxpoe.qzz.io/' + _repo + '.git', branch], repoRoot) + ? runCmd('git', ['fetch', '--prune', _base + '/' + _repo + '.git', branch], repoRoot) : runCmd('git', ['fetch', '--prune'], repoRoot); pushCmd('git fetch --prune', fetch); if (!fetch.ok) throw new Error('Gagal git fetch.'); @@ -4775,6 +4779,12 @@ router.post('/settings', requireAdminSession, express.urlencoded({ extended: tru if (newSettings.voucher_enabled === 'true') newSettings.voucher_enabled = true; else if (newSettings.voucher_enabled === 'false') newSettings.voucher_enabled = false; + if (newSettings.update_base_url !== undefined) { + newSettings.update_base_url = String(newSettings.update_base_url).trim().replace(/\/+$/, ''); + } + if (newSettings.update_repo !== undefined) { + newSettings.update_repo = String(newSettings.update_repo).trim().replace(/^\/+|\/+$/g, ''); + } newSettings.ai_provider = String(newSettings.ai_provider || 'deepseek').trim().toLowerCase(); newSettings.ai_self_healing_enabled = newSettings.ai_self_healing_enabled === 'true' || newSettings.ai_self_healing_enabled === 'on'; for (const k of ['deepseek_api_key','openai_api_key','groq_api_key','openrouter_api_key','custom_ai_api_key','custom_ai_base_url','custom_ai_model','deepseek_model','openai_model','groq_model','openrouter_model']) { diff --git a/views/admin/settings.ejs b/views/admin/settings.ejs index ef7b228..bad9191 100644 --- a/views/admin/settings.ejs +++ b/views/admin/settings.ejs @@ -640,9 +640,18 @@
- +
<%= t('admin.set.repo_hint','Dipakai untuk tautan ') %>Repo, Form/Issue (/issues/new/choose), Wiki, dan Lisensi di landing page.
+
+ + +
Dipakai menu Update untuk git fetch. Bisa Gitea (https://gitea.oxpoe.xyz) atau Forgejo (https://forgejo.oxpoe.xyz).
+
+
+ + +