Главная > Unix, Web > Squid — web-интерфейс для включения/отключения доступа к internet

Squid — web-интерфейс для включения/отключения доступа к internet

СКАЧАТЬ (ZIP, ~2.3КБ)
С помощью этого web-интерфейса редактируется список, на который предполагается включать/отключать инет.
Предпогагается, что у нас есть установленный и настроенный squid, со строчкой в squid.conf:

acl user_list src "/usr/local/etc/squid/users"

для которого потом каким-то образом определяются права доступа к инету.
Файлы будут находиться, например, в /usr/home/public_html/username/squid/
ln -s /usr/home/public_html/username/squid/userlist /usr/local/etc/squid/users

Содержание файлов:
index.php:

  1. <?php
  2. // squid web-configuration
  3. ?>
  4. <html>
  5. <head>
  6. <title>Manage ACL</title>
  7. <style type='text/css'>
  8. body {
  9.    background: #c3c3c3;
  10.    font-size: 14px;
  11. }
  12. a {
  13.    font-size: 27px;
  14. }
  15. a:link {
  16.    color: #00458A;
  17.    text-decoration: none;
  18. }
  19. a:visited {
  20.    color: #00458A;
  21.    text-decoration: none;
  22. }
  23. a:active {
  24.    color: #00458A;
  25.    text-decoration: none;
  26. }
  27. a:hover {
  28.    color: #00458A;
  29.    text-decoration: underline;
  30. }
  31. table {
  32.    background: white;
  33.    color: black;
  34.    border: 1px solid gray;
  35. }
  36. .header, .footer {
  37.    background: gray;
  38.    color: white;
  39. }
  40. .nav {
  41.    border: none;
  42. }
  43. .nav td {
  44.    border: 1px dashed gray;
  45.    text-align: center;
  46.    width: 33%;
  47. }
  48. .nav td:hover {
  49.    background: #dcdcdc;
  50. }
  51. .sets tr:hover {
  52.    background:#dcdcdc;
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <table width='100%' border='0' cellpadding='10' cellspacing='0'>
  58. <tr><td class='header'>
  59.    <p style='text-align: right; font-size: 24px;'>Logged in as: <font color='#c00000'><?php echo $_SERVER['REMOTE_USER']; ?></font>.</p>
  60. </td></tr>
  61. <tr><td>
  62.    <table width='100%' class='nav'><tr>
  63.       <td><a href='?'>Manage</a></td>
  64.       <td><a href='?action=status' target='_self'>Status</a></td>
  65.       <td><a href='?action=edit' target='_self'>Edit list</a></td>
  66.    </tr></table>
  67. </td></tr>
  68. <tr><td>
  69. <?php
  70. if ($_GET['action'] == 'status')
  71. {
  72.    echo "<pre>";
  73.    system ("ps ax | grep squid");
  74.    echo "</pre>";
  75. }
  76.  
  77. else if ($_GET['action'] == 'edit')
  78. {
  79.    if ($_POST['saveconfig'] == null)
  80.    {
  81.       $fil="studlist";
  82.       if(!file_exists($fil))
  83.       {
  84.          $fp=fopen($fil,"w");
  85.          fclose($fp);
  86.       }
  87.       else
  88.       {
  89.          $a=file_get_contents("studlist");
  90.       }
  91.       echo "<form action='' method='post'>";
  92.       echo "<textarea type='text' rows='20' cols='40' name='a'>$a</textarea><br>";
  93.       echo "<input type='submit' value='Save' name='saveconfig'>";
  94.       echo "</form>";
  95.    }
  96.    if ($_POST['saveconfig'] != null)
  97.    {
  98.       $d=$_POST['a'];
  99.       echo "<center>Config saved successfully</center>";
  100.       $fil="studlist";
  101.       $fp=fopen($fil,"w");
  102.       fwrite($fp,$d);
  103.       fclose($fp); 
  104.    }
  105. }
  106.  
  107. else
  108. {
  109.    if ($_POST['megafuck'] != null)
  110.    {
  111.       $count = $_POST["checkcount"];
  112.       $hfile = fopen("studlist", "w");
  113.       for($i = 0; $i < $count; $i++)
  114.       {
  115.          $chekBoxName = "check".$i;
  116.          $labelName = "label".$i;
  117.          $hostName = $_POST[$labelName];
  118.          if(!array_key_exists($chekBoxName, $_POST))
  119.          {
  120.             $hostName = "#".$hostName;
  121.          }
  122.          fwrite($hfile, $hostName."\n");
  123.       }
  124.       fclose($hfile);
  125.       shell_exec('/usr/home/username/public_html/squid/exec_sh/squid_web_reconf.sh');
  126.       echo "<h2>Setting saved successfully and squid reconfigured..</h2>";
  127.    }
  128.    echo "<form action='' method='post'>";
  129.    $farray = file("studlist");
  130.    $length = count($farray);
  131.    echo "<table class='sets'>";
  132.    for($i = 0; $i < $length; $i++)
  133.    {
  134.       $aud = "";
  135.       $isEnabled = "checked";
  136.       $line = $farray[$i];
  137.       if($line[0] == '#')
  138.       {
  139.          $isEnabled = "";
  140.          if($line[1] == '_')
  141.          {
  142.             $line = substr($line, 0);
  143.             $lines = substr($line, 2);
  144.             $aud = "_";
  145.          }
  146.          else
  147.          {
  148.             $line = substr($line, 1);
  149.          }
  150.       }
  151.       $checkBoxName = "check".$i;
  152.       $labelName = "label".$i;
  153.       echo "<tr> <td>";
  154.       if  ($aud == '_')
  155.       {
  156.          echo "<b>Room:</b> ";
  157.          echo "<input type = 'text' name = '".$labelName."' value = '".$line."' readOnly border = '0'>";
  158.       }
  159.       else
  160.       {
  161.          echo "<input type = 'text' name = '".$labelName."' value = '".$line."' readOnly border = '0'>";
  162.       }
  163.       echo "</td>";
  164.       echo "<td>";
  165.       if  ($aud == '_')
  166.       {
  167.          echo "<input type = 'hidden' name='".$checkBoxName."' ".$isEnabled.">";
  168.       }
  169.       else
  170.       {
  171.          echo "<input type = 'checkbox' name='".$checkBoxName."' ".$isEnabled.">";
  172.       }
  173.       echo "</td> </tr>";
  174.    }
  175.    echo "</table>";
  176.    echo "<input type = 'hidden' name='checkcount' value = '".$i."'>";
  177.    echo "<br/><center><input type = 'submit' value = 'SAVE'  name='megafuck' style='width: 700px; height: 70px; font-size: 40px;'></center>";
  178.    echo "</form>";
  179. }
  180. ?>
  181. </td></tr>
  182. <tr><td class='footer'>
  183.    <p align='right'>&copy; Konstantin Krylov (2010)</p>
  184. </td></tr>
  185. </table>
  186. </body>
  187. </html>

/usr/home/public_html/username/squid/exec_sh/squid_web_reconf.sh

#!/bin/sh
####
/usr/local/bin/sudo /usr/home/username/public_html/squid/exec_sh/squid_reconf.sh

/usr/home/public_html/username/squid/exec_sh/squid_reconf.sh

#!/bin/sh
####
/usr/local/sbin/squid -k reconf

/usr/home/public_html/username/squid/userlist

localhost
#_roomA
#a-01
a-02
#a-03
#a-04
#_roomB
b-01
#b-02
#b-03
#b-04

Права:
chown -R www:www /usr/home/public_html/username/squid/
find /usr/home/public_html/username/squid/ -type f -exec chmod 666 {} \;
find /usr/home/public_html/username/squid/ -type d -exec chmod 777 {} \;
find /usr/home/public_html/username/squid/ -type f -name '*.sh' -exec chmod 777 {} \;

Также пользователь www должен быть в группе wheel — правим /etc/groups

wheel:*:0:root,username,www

ну и правильно настроенное sudo

Categories: Unix, Web Tags: ,
  1. Пока что нет комментариев.
Похожие публикации