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


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Eugene Grosbein                      2:5006/1       18 Feb 2005  21:36:19
 To : Vasiliy Volik
 Subject : Re: web-страничка для управления сервером
 -------------------------------------------------------------------------------- 
 
 18 фев 2005, пятница, в 14:23 KRAST, Vasiliy Volik написал(а):
 
  VV> Есть ли готовые решения для сабжа?
  VV> Желательно очень простое и надёжное.
  VV> Hужно буквально 2 действия: перезагрузка и выключение.
 
 Кусочки из моего HTTP-сервера на /bin/sh (запускается из inetd).
 Доточить по вкусу. Hа шелле - потому что работал на четверке
 в условиях 8Mb RAM и около 160Mb винта и наклепать надо было быстро.
 Многочисленные использования case - из-за того, что test тогда еще
 не был builtin, а fork/exec стоил дорого на этом железе - свопилось.
 
 read_request() {
   read -t 10 -r request url rest
   case $request in
   [Gg][Ee][Tt])
         ;;
   *)
         send_headers "501 Method not allowed" norefresh
         show_error 501 "This server only supports GET request"
         exit
   esac
 }
 
 send_headers() {
   printf "HTTP/1.0 $1\r\n"
   printf "Allow: GET\r\n"
   printf "Date: `date +'%a, %d %b %Y %T' GMT\r\n"
   printf "Server: HTTP/ipstat 1.0\r\n"
   printf "Connection: close\r\n"
   printf "Language: ru\r\n"
   printf "Expires: Thu, 1 Jan 00:00:00 1970 GMT\r\n"
   case "$2" in
   norefresh)
         ;;
   *)
         printf "Refresh: 60\r\n"
         ;;
   esac
   printf "Content-Type: text/html; charset=koi8-r\r\n\r\n"
 }
 
 read_request
 case "$url" in
    /shutdown)
         send_headers "200 OK"
         draw_title
         echo '<p>Вы действительно хотите выключить роутер?</br>'
         echo '<a href="/shutdown_the_router">Да, выключить</a>'
         echo '<a href="/">Hет, отменить</a></p></body></html>'
         ;;
    /shutdown_the_router)
         send_headers "200 OK" norefresh
         draw_title
         echo '<h1>Через минуту роутер можно выключить</h1></body></html>'
         shutdown -h now "shutdown from web by $REMOTE_ADDR"
         ;;
    /reboot)
         send_headers "200 OK"
         draw_title
         echo '<p>Вы действительно хотите перегрузить роутер?</br>'
         echo '<a href="/reboot_the_router">Да, перегрузить</a>'
         echo '<a href="/">Hет, отменить</a></p></body></html>'
         ;;
    /reboot_the_router)
         send_headers "200 OK" norefresh
         draw_title
         echo '<h1>Роутер перегружается</h1></body></html>'
         shutdown -r now "reboot from web by $REMOTE_ADDR"
         ;;
   /)
         send_headers "200 OK"
         draw_title
         draw_table $REMOTE_ADDR
         echo '</body></html>'
         ;;
   *)
         send_headers "404 Not found" norefresh
         show_error 404 "URL Not Found"
         ;;
 esac
 
 Eugene
 --- slrn/0.9.8.0 (FreeBSD)
  * Origin: Svyaz Service JSC (2:5006/1@fidonet)
 
 

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

 Тема:    Автор:    Дата:  
 Re: web-страничка для управления сервером   Eugene Grosbein   18 Feb 2005 21:36:19 
Архивное /ru.unix.bsd/26093a93e5c58.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional