Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Alexey Zakrevskiy                    2:5031/47.22   05 Aug 2002  21:28:47
 To : Dmitry Shishkin
 Subject : Re: засада с apache
 -------------------------------------------------------------------------------- 
 
 > пpедыстоpия: сеть соединена с инетом по коммyтиpyемомy соединению. надо
 > написать cgi, чтобы чеpез веб любая тyпая телка могла зайти на нyжнyю стpаницy
 > с двyма кнопками "отсоединиться" и "подключится", и сделать все, что надо. но 
 > вот сабж: апач запyскается от nobody:nobody, а pppd yпpавляется только от
 > pyта, что делает невозможной сию схемy... как быть? запyскать httpd от pyта
 > довольно pискованно, хотя можно, есть еще пpедложения? и, если можно,
 > ваpиантик пpимеpного cgi на любом языке, на пеpле напpимеp:)
 
   Я когда-то писал подобную фигню и делал это примерно так:
 поставил sudo сказал ему
 www             ALL = NOPASSWD: /etc/ppp/scripts/*.sh
 чтобы апач мог пущать без пароля волосатые скрипты из которых нужны
 всего-то: dial.sh, redial.sh, reset,sh & disconnect.sh
 dial это: ppp -ddial -nat ${PROVIDER} && touch ${FLGDIR}/dial
 redial: pppctl ${SOCKET} down
 disconnect: pppctl ${SOCKET} quit all
 reset: pppctl ${SOCKET} quit all; killall -9 ppp; rm ${SOCKET}
 и скрипт на php состоящий из 2 частей:
 
 if (isset($HTTP_POST_VARS['provider'])){
   $prov = $HTTP_POST_VARS['provider'];
 }else{
   $prov = 'an';
 }
 if (isset($HTTP_POST_VARS['action'])){
   switch ($HTTP_POST_VARS['action']){
    case 'disconnect':
     if (file_exists("$flgpath/inet")){
      exec("/usr/local/bin/sudo /etc/ppp/scripts/disconnect.sh 2>&1 >/dev/null");
     }
    break;
    case 'redial':
     if (file_exists("$flgpath/dial")){
      exec("/usr/local/bin/sudo /etc/ppp/scripts/redial.sh 2>&1 >/dev/null");
     }
    break;
    case 'dial':
     if (!file_exists("$flgpath/dial")){
      exec("/usr/local/bin/sudo /etc/ppp/scripts/dial.sh $prov 2>&1 >/dev/null");
     }
    break;
    default:
    exec("/usr/local/bin/sudo /etc/ppp/scripts/reset.sh 2>&1 >/dev/null");
   }
 }
 
 эта часть обрабатывала запросы, из формы и  генерилка формы:
 
 if (file_exists("$flgpath/inet")){
   $arr = file("$flgpath/inet");
   printf("<tr><td class='left'>IP адрес:</td><td class='right'>%s</td></tr>",
 $arr[0]);
   printf("<tr><td class='left'>Время захода:</td><tdclass='right'>%s</td></tr>",
 $arr[0]);
   $action = 'disconnect';
   $link   = 'up';
   $status = 'up';
 } elseif (file_exists("$flgpath/dial")){
   $action = 'redial';
   $link   = 'down';
   $status = 'dialing';
 } else {
   $action = 'dial';
   $link   = 'down';
   $status = 'down';
 };
 printf("<tr><td class='left'>Текущее состояние:</td><td
 class='right'>%s</td></tr>", $status);
 print "<tr><td class='left'>Возможные действия:</td><form action=''
 method='post'><td class='right'>";
 if ($action == 'dial'){
   print "<select name='provider'>";
   print "<option value='adm'>провайдер1</option>";
   print "<option value='an'>провайдер2</option>";
   print "</select>";
 }
 printf("<input type='submit' name='action' value='%s'>", $action);
 print "<input type='submit' name='action'
 value='reset'></td></tr><form>";
 
 вобсчем скрипт генерит форму для пуцания и обрабатывает запросы от неё
 же смотрит чё пришло, тот скрипт и пущает
 
 P.S. все примеры кода я набивал по памяти и кусок выдрал из php (работають 
 они на сервере в офисе) на самом деле эти скрипты ещё рулят
 прокси/файрволом/статистикой/автозакачкой/почтой... Ежели народ
 потребует напищу более подробно с примерами, хотя имхо основная мысля
 ясна, а далее можно такую изгородь сделать что о-го-го...
 
 --- tin/1.5.11-20020130 ("Toxicity") (UNIX) (FreeBSD/4.6-STABLE (i386))
  * Origin: Glukodrom research. Murmansk. Russia (2:5031/47.22@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 засада с apache   Dmitry Shishkin   22 Jun 2002 18:28:26 
 засада с apache   Andrey Ostanovsky   24 Jun 2002 21:00:36 
 Re: засада с apache   Victor Sudakov   24 Jun 2002 20:30:07 
 Re: засада с apache   Yura Pismerov   24 Jun 2002 23:30:11 
 Re: засада с apache   Oleg   25 Jun 2002 09:59:43 
 Re: засада с apache   Valentin Davydov   26 Jun 2002 07:39:18 
 засада с apache   Alexey Popov   26 Jun 2002 18:00:28 
 засада с apache   Dmitry Shishkin   25 Jun 2002 23:07:54 
 засада с apache   Stas Degteff   25 Jun 2002 01:39:08 
 Re: засада с apache   Eugene Grosbein   25 Jun 2002 09:36:20 
 Re: засада с apache   Valentin Davydov   26 Jun 2002 00:45:40 
 Re: засада с apache   Alexey Zakrevskiy   05 Aug 2002 21:28:47 
 Re: засада с apache   Andrey Alexeev   07 Aug 2002 18:02:58 
 Re: засада с apache   Alexey Zakrevskiy   05 Aug 2002 21:33:02 
Архивное /ru.unix.bsd/160390c52d90b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional