Skip to content

Web интерфейс

DennoN-RUS edited this page Sep 29, 2024 · 7 revisions

Установка Web интерфейса

Можно поставить веб интерфейс, что бы не править файлы через консоль

Варианта 2, новый и старый. В новом вся установка автоматизирована, в старом все настраивается руками

Новый Web4Static

Идем в репозиторий https://github.com/spatiumstas/web4static

Читаем ридми, пользуемся.


Спасибо spatiumstas за это :)

P.S.: предложения/баги по этому веб интерфейсу писать его разработчику

Старый вариант

  1. Установить пакет ext-ui opkg install ext-ui

  2. После установки ext-ui создать файл /opt/share/www/ext-ui/addons/editlist.php со следующим содержимым:

    <?php
    
    // configuration
    $url = 'http://192.168.1.1:88/ext-ui/addons/editlist.php';
    $uservpn = '/opt/root/Bird4Static/lists/user-vpn.list';
    $uservpn1 = '/opt/root/Bird4Static/lists/user-vpn1.list';
    $uservpn2 = '/opt/root/Bird4Static/lists/user-vpn2.list';
    $userisp = '/opt/root/Bird4Static/lists/user-isp.list';
    
    // check if form has been submitted
    if (isset($_POST['vpn-text']))
    {
        // save the text contents
        file_put_contents($uservpn, $_POST['vpn-text']);
    
        // redirect to form again
        header(sprintf('Location: %s', $url));
        printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
        exit();
    }
    
    if (isset($_POST['vpn-text1']))
    {
        // save the text contents
        file_put_contents($uservpn1, $_POST['vpn-text1']);
    
        // redirect to form again
        header(sprintf('Location: %s', $url));
        printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
        exit();
    }
    
    if (isset($_POST['vpn-text2']))
    {
        // save the text contents
        file_put_contents($uservpn2, $_POST['vpn-text2']);
    
        // redirect to form again
        header(sprintf('Location: %s', $url));
        printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
        exit();
    }
    
    
    if (isset($_POST['isp-text']))
    {
        // save the text contents
        file_put_contents($userisp, $_POST['isp-text']);
    
        // redirect to form again
        header(sprintf('Location: %s', $url));
        printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
        exit();
    }
    
    // read the textfile
    $text = file_get_contents($uservpn);
    $text1 = file_get_contents($uservpn1);
    $text2 = file_get_contents($uservpn2);
    $textisp = file_get_contents($userisp);
    
    ?>
    
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- HTML form0 -->
    <form id="selector" action="" method="post">
    <input type="button" id="vpn" name="vpn" onclick="document.getElementById('uservpn').style.display='block'; document.getElementById('uservpn1').style.display='none'; document.getElementById('uservpn2').style.display='none'; document.getElementById('userisp').style.display='none'; return false;" value="user-vpn.list"/>
    <input type="button" id="vpn1" name="vpn1" onclick="document.getElementById('uservpn1').style.display='block'; document.getElementById('uservpn').style.display='none'; document.getElementById('uservpn2').style.display='none'; document.getElementById('userisp').style.display='none'; return false;" value="user-vpn1.list"/>
    <input type="button" id="vpn2" name="vpn2" onclick="document.getElementById('uservpn2').style.display='block'; document.getElementById('uservpn').style.display='none'; document.getElementById('uservpn1').style.display='none'; document.getElementById('userisp').style.display='none'; return false;" value="user-vpn2.list"/>
    <input type="button" id="second" name="second" onclick="document.getElementById('userisp').style.display='block'; document.getElementById('uservpn').style.display='none'; document.getElementById('uservpn1').style.display='none'; document.getElementById('uservpn2').style.display='none'; return false;" value="user-isp.list"/>
    </form>
    
    <!-- HTML form1 -->
    <div id="uservpn" style="display:none;">
    <form id="vpn" action="" method="post" onsubmit="document.getElementById('uservpn').style.display='none'; return true;">
    <legend>VPN list</legend>
    <textarea name="vpn-text" style="width:100%; height:30%;"><?php echo htmlspecialchars($text); ?></textarea>
    <input type="submit" value="Save&close"/>
    <input type="reset" value="Reset changes"/>
    </form>
    </div>
    <!-- HTML form1 -->
    <div id="uservpn1" style="display:none;">
    <form id="vpn1" action="" method="post" onsubmit="document.getElementById('uservpn1').style.display='none'; return true;">
    <legend>VPN1 list</legend>
    <textarea name="vpn-text1" style="width:100%; height:30%;"><?php echo htmlspecialchars($text1); ?></textarea>
    <input type="submit" value="Save&close"/>
    <input type="reset" value="Reset changes"/>
    </form>
    </div>
    
    <div id="uservpn2" style="display:none;">
    <form id="vpn2" action="" method="post" onsubmit="document.getElementById('uservpn2').style.display='none'; return true;">
    <legend>VPN2 list</legend>
    <textarea name="vpn-text2" style="width:100%; height:30%;"><?php echo htmlspecialchars($text2); ?></textarea>
    <input type="submit" value="Save&close"/>
    <input type="reset" value="Reset changes"/>
    </form>
    </div>
    
    <div id="userisp" style="display:none;">
    <form id="isp" action="" method="post" onsubmit="document.getElementById('userisp').style.display='none'; return true;">
    <legend>ISP list</legend>
    <textarea name="isp-text" style="width:100%; height:30%;"><?php echo htmlspecialchars($textisp); ?></textarea>
    <input type="submit" value="Save&close"/>
    <input type="reset" value="Reset changes"/>
    </form>
    </div>
    
    <form action="runbird4static.php">
        <input type="submit" value="Restart service">
    </form>
    • где 192.168.1.1 - локальный ip роутера
  1. Для кнопки перезапуска сервиса создать файл /opt/share/www/ext-ui/addons/runbird4static.php со следующим содержимым:

    <?php
    shell_exec("/opt/root/Bird4Static/scripts/add-bird4_routes.sh");
    header('Location: http://192.168.1.1:88/ext-ui/addons/editlist.php');
    ?>
    • где 192.168.1.1 - локальный ip роутера
    • для работы кнопки перезапуска сервиса нужно выдать права 777 на файл /opt/root/Bird4Static/scripts/add-bird4_routes.sh
  2. Файл /opt/share/www/ext-ui/index.html отредактировать, после строки:

    <meta charset="utf-8" />

    вставить строку обеспечивающую адаптивное отображение на мобильных устройствах:

    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>

    а перед этой строкой:

    <a href="addons/info/index.php" target="myframe" title="System Health and Information"><img src="addons/img/btn/linfo.png"></a>

    вставить строку с дополнительной кнопкой:

    <a href="addons/editlist.php" target="myframe" title="Edit vpn list"><img src="addons/img/btn/vpn.png"></a>

    ну или в любое удобное место в том же списке.

    кроме этого нужно положить какую-нибудь иконку размером 48х48 по адресу /opt/share/www/ext-ui/addons/img/btn/vpn.png например такую:

    alt text


За инструкцию спасибо nnm