From 1a6ee45612faeed353582098c14d8f16b1d4ef94 Mon Sep 17 00:00:00 2001 From: Ivan K Date: Fri, 21 Feb 2025 17:34:31 +0300 Subject: [PATCH] fix: add function to dynamically fetch network interfaces for VPN configuration --- .../resources/view/podkop/podkop.js | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js index 5048098..8d9cf35 100644 --- a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js +++ b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js @@ -13,6 +13,23 @@ function formatDiagnosticOutput(output) { .replace(/\r/g, '\n'); } +function getNetworkInterfaces(o) { + const excludeInterfaces = ['br-lan', 'eth0', 'eth1', 'wan', 'phy0-ap0', 'phy1-ap0', 'pppoe-wan']; + + return network.getDevices().then(devices => { + devices.forEach(device => { + if (device.dev && device.dev.name) { + const deviceName = device.dev.name; + if (!excludeInterfaces.includes(deviceName) && !/^lan\d+$/.test(deviceName)) { + o.value(deviceName, deviceName); + } + } + }); + }).catch(error => { + console.error('Failed to get network devices:', error); + }); +} + // Общая функция для создания конфигурационных секций function createConfigSection(section, map, network) { const s = section; @@ -168,21 +185,7 @@ function createConfigSection(section, map, network) { o = s.taboption('basic', form.ListValue, 'interface', _('Network Interface'), _('Select network interface for VPN connection')); o.depends('mode', 'vpn'); o.ucisection = s.section; - - try { - const devices = network.getDevicesSync ? network.getDevicesSync() : network.getDevices(); - const excludeInterfaces = ['br-lan', 'eth0', 'eth1', 'wan', 'phy0-ap0', 'phy1-ap0']; - devices.forEach(device => { - if (device.dev && device.dev.name) { - const deviceName = device.dev.name; - if (!excludeInterfaces.includes(deviceName) && !/^lan\d+$/.test(deviceName)) { - o.value(deviceName, deviceName); - } - } - }); - } catch (error) { - console.error('Error fetching devices:', error); - } + getNetworkInterfaces(o); o = s.taboption('basic', form.Flag, 'domain_list_enabled', _('Community Lists')); o.default = '0'; @@ -584,10 +587,6 @@ return view.extend({ 'class': 'btn cbi-button-apply', 'click': () => fs.exec('/etc/init.d/podkop', ['restart']).then(() => location.reload()) }, _('Restart Podkop')), - E('button', { - 'class': 'btn cbi-button-' + (podkopStatus.enabled ? 'remove' : 'apply'), - 'click': () => fs.exec('/etc/init.d/podkop', [podkopStatus.enabled ? 'disable' : 'enable']).then(() => location.reload()) - }, podkopStatus.enabled ? _('Disable Podkop') : _('Enable Podkop')), E('button', { 'class': 'btn', 'click': () => fs.exec('/etc/init.d/podkop', ['show_config']).then(res => {