diff --git a/www/angie-module-geoip2/Makefile b/www/angie-module-geoip2/Makefile new file mode 100644 --- /dev/null +++ b/www/angie-module-geoip2/Makefile @@ -0,0 +1,25 @@ +PORTNAME= angie-module-geoip2 +GH_TUPLE= leev:ngx_http_geoip2_module:3.4:module + +COMMENT= Angie GeoIP2 dynamic module + +LIB_DEPENDS= libmaxminddb.so:net/libmaxminddb + +MASTERDIR= ${.CURDIR}/../../www/angie + +do-install: + ${MKDIR} ${STAGEDIR}${DOCSDIR} + ${MKDIR} ${STAGEDIR}${MODDIR} +.for i in ngx_http_geoip2_module ngx_stream_geoip2_module + ${INSTALL_LIB} ${WRKSRC}/objs/${i}.so ${STAGEDIR}${MODDIR} +.endfor + ${INSTALL_MAN} ${WRKSRC_module}/README.md ${STAGEDIR}${DOCSDIR} + + +do-install-DEBUG-on: +.for i in ngx_http_geoip2_module ngx_stream_geoip2_module + ${INSTALL} ${COPY} -m ${_SHAREMODE} ${WRKSRC_DEBUG}/objs/${i}.so \ + ${STAGEDIR}${MODDIR}/${i}-debug.so +.endfor + +.include "${MASTERDIR}/Makefile" diff --git a/www/angie-module-geoip2/distinfo b/www/angie-module-geoip2/distinfo new file mode 100644 --- /dev/null +++ b/www/angie-module-geoip2/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1686144485 +SHA256 (angie-1.2.0.tar.gz) = 82f23115c2e8ebf00d5429622ad96e8c7e785e87bc298b292246660cc61e2cff +SIZE (angie-1.2.0.tar.gz) = 1510159 +SHA256 (leev-ngx_http_geoip2_module-3.4_GH0.tar.gz) = ad72fc23348d715a330994984531fab9b3606e160483236737f9a4a6957d9452 +SIZE (leev-ngx_http_geoip2_module-3.4_GH0.tar.gz) = 8877 diff --git a/www/angie-module-geoip2/files/pkg-message.in b/www/angie-module-geoip2/files/pkg-message.in new file mode 100644 --- /dev/null +++ b/www/angie-module-geoip2/files/pkg-message.in @@ -0,0 +1,16 @@ +[ +{ type: install + message: <=0:devel/pcre2 +RUN_DEPENDS+= angie==${PKGVERSION}:www/angie +.endif + +USES+= ssl +USE_GITHUB= nodefault + +HAS_CONFIGURE?= yes + +.if ${PORTNAME} == angie +ALL_TARGET= build +SUB_FILES= angie.conf.sample \ + default.conf.sample \ + example.conf.sample \ + pkg-message +USE_RC_SUBR= angie +.else +ALL_TARGET?= modules +CONFIGURE_ADD?= --add-dynamic-module=${WRKSRC_module} +.endif + +# modules always have their own assets +PATCHDIR?= ${.CURDIR}/files +FILESDIR?= ${.CURDIR}/files +SCRIPTDIR?= ${.CURDIR}/scripts +PKGDIR?= ${.CURDIR} + +# angie-specific variables +CACHEDIR= /var/cache/angie +LOGDIR= /var/log/angie +MODDIR= ${PREFIX}/libexec/angie +RUNDIR= /var/run +WRKSRC_DEBUG= ${WRKSRC}-debug + +PLIST_SUB+= CACHEDIR=${CACHEDIR} \ + LOGDIR=${LOGDIR} \ + MODDIR=${MODDIR} \ + RUNDIR=${RUNDIR} + +SUB_LIST+= CACHEDIR=${CACHEDIR} \ + LOGDIR=${LOGDIR} \ + MODDIR=${MODDIR} \ + RUNDIR=${RUNDIR} \ + WWWOWN=${WWWOWN} + +SUB_FILES?= pkg-message + +OPTIONS_SUB= yes + +CONFIGURE_ARGS= --prefix=${PREFIX}/etc/angie \ + --conf-path=${PREFIX}/etc/angie/angie.conf \ + --error-log-path=${LOGDIR}/error.log \ + --http-log-path=${LOGDIR}/access.log \ + --lock-path=${RUNDIR}/angie.lock \ + --modules-path=${MODDIR} \ + --pid-path=${RUNDIR}/angie.pid \ + --sbin-path=${PREFIX}/sbin/angie \ + --http-client-body-temp-path=${CACHEDIR}/client_temp \ + --http-fastcgi-temp-path=${CACHEDIR}/fastcgi_temp \ + --http-proxy-temp-path=${CACHEDIR}/proxy_temp \ + --http-scgi-temp-path=${CACHEDIR}/scgi_temp \ + --http-uwsgi-temp-path=${CACHEDIR}/uwsgi_temp \ + --user=${WWWOWN} \ + --group=${WWWGRP} \ + --with-file-aio \ + --with-http_addition_module \ + --with-http_auth_request_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_mp4_module \ + --with-http_random_index_module \ + --with-http_realip_module \ + --with-http_secure_link_module \ + --with-http_slice_module \ + --with-http_ssl_module \ + --with-http_stub_status_module \ + --with-http_sub_module \ + --with-http_v2_module \ + --with-http_v3_module \ + --with-mail \ + --with-mail_ssl_module \ + --with-stream \ + --with-stream_realip_module \ + --with-stream_ssl_module \ + --with-stream_ssl_preread_module \ + --with-threads \ + --with-cc-opt="-I ${LOCALBASE}/include" \ + --with-ld-opt="-L ${LOCALBASE}/lib" \ + ${CONFIGURE_ADD} + +OPTIONS_DEFINE?= DEBUG +OPTIONS_DEFAULT?= DEBUG +DEBUG_DESC?= Include debug version + +.include + +post-patch-DEBUG-on: + @cp -Rp ${WRKSRC} ${WRKSRC_DEBUG} + +post-configure-DEBUG-on: + @(cd ${WRKSRC_DEBUG} && \ + ${SET_LATE_CONFIGURE_ARGS} \ + if ! ${SETENV} CC="${CC}" CPP="${CPP}" CXX="${CXX}" \ + CFLAGS="${CFLAGS} -g" CPPFLAGS="${CPPFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" \ + INSTALL="/usr/bin/install -c" \ + INSTALL_DATA="${INSTALL_DATA}" \ + INSTALL_LIB="${INSTALL_LIB}" \ + INSTALL_PROGRAM="${INSTALL_PROGRAM}" \ + INSTALL_SCRIPT="${INSTALL_SCRIPT}" \ + ${CONFIGURE_ENV} ${CONFIGURE_CMD} ${CONFIGURE_ARGS} --with-debug; then \ + ${ECHO_MSG} "===> Script \"${CONFIGURE_SCRIPT}\" failed unexpectedly."; \ + (${ECHO_CMD} ${CONFIGURE_FAIL_MESSAGE}) | ${FMT_80} ; \ + ${FALSE}; \ + fi \ + ) + +post-build-DEBUG-on: + @(cd ${WRKSRC_DEBUG} && ${DO_MAKE_BUILD} ${ALL_TARGET}) + +.if ${PORTNAME} == angie +do-install: + ${MKDIR} ${STAGEDIR}${CACHEDIR} + ${MKDIR} ${STAGEDIR}${DOCSDIR} + ${MKDIR} ${STAGEDIR}${ETCDIR}/http.d + ${MKDIR} ${STAGEDIR}${ETCDIR}/stream.d + ${MKDIR} ${STAGEDIR}${LOGDIR} + ${MKDIR} ${STAGEDIR}${MODDIR} + ${MKDIR} ${STAGEDIR}${WWWDIR}/html + + ${LN} -fs ${MODDIR} ${STAGEDIR}${ETCDIR}/modules + + ${INSTALL_PROGRAM} ${WRKSRC}/objs/angie \ + ${STAGEDIR}${PREFIX}/sbin/angie-nodebug + + ${LN} -fs angie-nodebug ${STAGEDIR}${PREFIX}/sbin/angie + + ${INSTALL_MAN} ${WRKSRC}/objs/angie.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 +. for i in CHANGES CHANGES.ru README.rst + ${INSTALL_MAN} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR} +. endfor + +. for i in fastcgi.conf fastcgi_params mime.types scgi_params uwsgi_params + ${INSTALL_DATA} ${WRKSRC}/conf/${i} ${STAGEDIR}${ETCDIR}/${i}.sample +. endfor + ${INSTALL_DATA} ${WRKDIR}/angie.conf.sample \ + ${STAGEDIR}${ETCDIR} + ${INSTALL_DATA} ${WRKDIR}/default.conf.sample \ + ${STAGEDIR}${ETCDIR}/http.d + ${INSTALL_DATA} ${WRKDIR}/example.conf.sample \ + ${STAGEDIR}${ETCDIR}/stream.d + +. for i in 50x.html index.html + ${INSTALL_DATA} ${WRKSRC}/html/${i} ${STAGEDIR}${WWWDIR}/html/${i}.sample +. endfor + +do-install-DEBUG-on: + ${INSTALL} ${COPY} -m ${BINMODE} ${WRKSRC_DEBUG}/objs/angie \ + ${STAGEDIR}${PREFIX}/sbin/angie-debug +.endif + +.include diff --git a/www/angie/distinfo b/www/angie/distinfo new file mode 100644 --- /dev/null +++ b/www/angie/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1686153448 +SHA256 (angie-1.2.0.tar.gz) = 82f23115c2e8ebf00d5429622ad96e8c7e785e87bc298b292246660cc61e2cff +SIZE (angie-1.2.0.tar.gz) = 1510159 +SHA256 (leev-ngx_http_geoip2_module-3.4_GH0.tar.gz) = ad72fc23348d715a330994984531fab9b3606e160483236737f9a4a6957d9452 +SIZE (leev-ngx_http_geoip2_module-3.4_GH0.tar.gz) = 8877 diff --git a/www/angie/files/angie.conf.sample.in b/www/angie/files/angie.conf.sample.in new file mode 100644 --- /dev/null +++ b/www/angie/files/angie.conf.sample.in @@ -0,0 +1,41 @@ +user %%WWWOWN%%; +worker_processes auto; +worker_rlimit_nofile 65536; + +error_log %%LOGDIR%%/error.log notice; +pid %%RUNDIR%%/angie.pid; + +events { + worker_connections 65536; +} + +http { + include %%ETCDIR%%/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + log_format extended '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" rt="$request_time" ' + '"$http_user_agent" "$http_x_forwarded_for" ' + 'h="$host" sn="$server_name" ru="$request_uri" u="$uri" ' + 'ucs="$upstream_cache_status" ua="$upstream_addr" us="$upstream_status" ' + 'uct="$upstream_connect_time" urt="$upstream_response_time"'; + + access_log %%LOGDIR%%/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + include %%ETCDIR%%/http.d/*.conf; +} + +#stream { +# include %%ETCDIR%%/stream.d/*.conf; +#} diff --git a/www/angie/files/angie.in b/www/angie/files/angie.in new file mode 100644 --- /dev/null +++ b/www/angie/files/angie.in @@ -0,0 +1,73 @@ +#!/bin/sh + +# PROVIDE: angie +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# Add these lines to /etc/rc.conf.local or /etc/rc.conf +# to enable the service: +# +# angie_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable angie. +# +# angie_flags (str): Set to "" by default. +# Extra flags passed to start command. + +. /etc/rc.subr + +name=angie +rcvar=angie_enable + +command=%%PREFIX%%/sbin/${name} +pidfile=%%RUNDIR%%/${name}.pid +required_files=%%ETCDIR%%/${name}.conf + +extra_commands="configtest reload upgrade" + +configtest_cmd=angie_config_check +upgrade_cmd="angie_upgrade" + +reload_precmd=angie_config_check +restart_precmd=angie_config_check +start_precmd=angie_config_check + +load_rc_config $name + +: ${angie_enable:=NO} +: ${angie_flags:=} +: ${angie_config_valid:=""} + +angie_config_check() { + [ -n "${angie_config_valid}" ] && return 0 + + echo "Checking config validity:" + eval ${command} ${angie_flags} -t || return 1 + + angie_config_valid=yes +} + +angie_upgrade() { + if [ ! -s ${pidfile} ]; then + echo "No running ${name} found." + return 1 + fi + + angie_config_check || return 1 + + echo "Starting new ${name}." + kill -USR2 $(cat ${pidfile}) + + for i in $(seq 5); do + sleep 1 + if [ -f ${pidfile} -a -f ${pidfile}.oldbin ]; then + echo "Shutting down old ${name}." + kill -QUIT $(cat ${pidfile}.oldbin) + return 0 + fi + done + + echo "Upgrade failed!" + return 1 +} + +run_rc_command "$1" diff --git a/www/angie/files/default.conf.sample.in b/www/angie/files/default.conf.sample.in new file mode 100644 --- /dev/null +++ b/www/angie/files/default.conf.sample.in @@ -0,0 +1,49 @@ +server { + listen 80; + server_name localhost; + + #access_log %%LOGDIR%%/host.access.log main; + + location / { + root %%WWWDIR%%/html; + index index.html index.htm; + } + + location /status/ { + api /status/; + allow 127.0.0.1; + deny all; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root %%WWWDIR%%/html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with angie's one + # + #location ~ /\.ht { + # deny all; + #} +} diff --git a/www/angie/files/example.conf.sample.in b/www/angie/files/example.conf.sample.in new file mode 100644 --- /dev/null +++ b/www/angie/files/example.conf.sample.in @@ -0,0 +1,24 @@ +#upstream stream_backend { +# server backend1.example.com:12345 weight=5; +# server backend2.example.com:12345 max_fails=2 fail_timeout=30s; +# server backend3.example.com:12345 max_conns=3; +#} +# +#upstream dns_servers { +# least_conn; +# server 192.168.136.130:53; +# server 192.168.136.131:53; +# server 192.168.136.132:53; +#} +# +#server { +# listen 12345; +# proxy_pass stream_backend; +# proxy_timeout 3s; +# proxy_connect_timeout 1s; +#} +# +#server { +# listen 53 udp; +# proxy_pass dns_servers; +#} diff --git a/www/angie/files/pkg-message.in b/www/angie/files/pkg-message.in new file mode 100644 --- /dev/null +++ b/www/angie/files/pkg-message.in @@ -0,0 +1,11 @@ +[ +{ type: install + message: <