CGI с Awk на OpenBSD Httpd (2020)

Размещено:

Помните, что для httpd OpenBSD chroots в /var/www.

Для запуска Awk-скрипта CGI на OpenBSD httpd:

  • настроить файл (ы) конфигурации
  • поместите свой скрипт в / var / www / cgi-bin /
  • заполните chroot (то есть: / var / www /) необходимыми двоичными файлами и библиотеками.

Подготовьте / etc / httpd

Ниже следует некоторый контент для / etc / httpd с несколько строк для SSL-сертификата через acme-client. В целях безопасности мы включили простую базовую аутентификацию с помощью htpasswd.

  ext_ip = "10. 0.0.4" сервер " www.example.com "{прослушивание порта $ ext_ip 123 прослушивание порта $ ext_ip tls 2020 корень "https://box.matto.nl/htdocs/www.example.com/" каталог {index "index.html"} расположение "https://box.matto.nl/.well-known/acme-challenge/*" {root "https://box.matto.nl/acme" полоса запросов 2 } location "https://box.matto.nl/cgi-bin/*" {аутентифицируйте MySecretRealm с помощью "https://box.matto.nl/data/htpasswd" fastcgi root "/"} tls {certificate "https: //box.matto.nl/etc/ssl/www.example.com.crt "ключ" https://box.matto.nl/etc/ssl/private/www.example.com.key "}}  

Проверьте файл на наличие синтаксических ошибок. с: httpd -n

Конечно, вы можете начать только с http. исключая порт 443 и tls-часть.

Настройка htpasswd

  mkdir / var / www / data htpasswd / var / www / data / htpasswd Имя пользователя chown -R: www / var / www / data 

Создавать CGI-скрипт

Вот хороший пример скрипта:

  #! / bin / awk -f НАЧАТЬ {printf ("Статус: 200 ОК  n ");  printf ("Content-type: text / plain  n  n");  для (введите ENVIRON) {print key ":" ENVIRON ;  } } 

Положи это скрипт в /var/www/cgi-bin/test.awk

Заполните chroot

Создайте подкаталог для файлов bin и lib. Для определения используйте ldd. какие файлы lib необходимы.

  mkdir -p / var / www / usr / {bin, lib, libexec} cd / var / www / usr / bin / cp / usr / bin / awk.  ldd / var / www / usr / bin / awk  

И скопируйте файлы библиотеки

  cp /usr/lib/libm.so/ var / www / usr / lib / cp /usr/lib/libc.so/ var / www / usr / lib / cp / usr / libexec /ld.so /var/www/usr/libexec/ld.so  

Включить и запустить slowcgi и httpd

  rcctl включить slowcgi rcctl включить httpd rcctl start slowcgi rcctl start httpd  

Теперь укажите в браузере:

  • http://www.example.com/cgi-bin/test.awk
  • http://www.example.com/cgi-bin/test.awk?abc= 123

и наслаждайтесь 🙂

В случае проблем ищите сообщения об ошибках в своих файлах журнала в /var/www/logs/.

Другой вариант – запустить / usr / sbin / httpd -dvvv и посмотреть, появятся ли полезные сообщения.

Теги:

Leave a comment

Your email address will not be published. Required fields are marked *