Итак настало время добавить какой-то интерфейс для того чтобы делать push в скайп-сервер. Для этого пригодится хорошо себя зарекомендовавший маленький http-сервер mini-httpd, который нашел приют на многих-многих роутерах в качестве веб-сервера для веб-интерфейса роутера.
А использовать мы его будем как веб для наших cgi-скриптов, написанных на… bash :) Коряво? Не то слово! С другой стороны, работает и ладно.
Установим mini-httpd:
root@skype:/# aptitude install mini-httpd/etc/mini-httpd.conf
port=8880 user=skype chroot dir=/home/skype/ data_dir=/cgi cgipat=*.cgi logfile=/home/skype/mini-httpd.log pidfile=/home/skype/mini-httpd.pid charset=utf-8/etc/sv/mini-httpd/run
#!/bin/bash TIME="Finished. Process took %E. %P CPU was eaten. %MK memory was used." # time stuff name=`basename $(dirname $(pwd)/fake)` # ugly hack workingdir="/home/skype/" command="/usr/sbin/mini-httpd -C /etc/mini-httpd.conf -D" exec 2>&1 echo starting $name... export TIME set -x cd $workingdir exec chpst -v time $commandНе забываем включить ранит-службу mini-httpd.
Создадим нужные директории:
root@skype:/# su - skype skype@skype:~$ mkdir -p /home/skype/cgi/ skype@skype:~$ cd /home/skype/cgi/Создадим наши скрипты. sendim.cgi
#!/bin/bash printf "Content-type: text/html\n\n" set -- $QUERY_STRING ../addcontact.sh "$1"index.cgi
#!/bin/bash printf "Content-type: text/html\n\n" echo "Go away"sendim.cgi
#!/bin/bash if [ "$REQUEST_METHOD" = "POST" ]; then if [ "$CONTENT_LENGTH" -gt 0 ]; then read -n $CONTENT_LENGTH POST_DATA <&0 fi else printf "Content-type: text/html\n\n" echo "use POST" exit 0 fi printf "Content-type: text/html\n\n" set -- $QUERY_STRING ../sendim.sh "$1" "$POST_DATA"Не забываем сделать файлы исполняемыми и проверяем! Запустим со своего компьютера:
~ $ curl -d "Hello from curl" 'http://ipaddress:8880/sendim.cgi?skypename'А если нужно выполнить запрос авторизации, то:
~ $ curl 'http://ipaddress:8880/addcontact.cgi?skypename'Вот и все, готово! Скрипты вполне вероятно содержат какие-то уязвимости, поэтому не забываем ограничить доступ к серверу с помощью iptables.
Комментариев нет:
Отправить комментарий