Initial
This commit is contained in:
commit
c1e99720dc
29
Dockerfile
Normal file
29
Dockerfile
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
FROM alpine:latest
|
||||||
|
MAINTAINER Bandie <bandie@chaospott.de>
|
||||||
|
|
||||||
|
RUN apk add --no-cache php nginx php-fpm msmtp tzdata
|
||||||
|
|
||||||
|
RUN adduser -D -g 'www' www
|
||||||
|
RUN mkdir /www
|
||||||
|
COPY ./www/* /www/
|
||||||
|
|
||||||
|
RUN chown -R www:www /var/lib/nginx
|
||||||
|
RUN chown -R www:www /www
|
||||||
|
COPY configs/nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
COPY configs/envs/php7.sh /etc/profile.d/php7.sh
|
||||||
|
RUN chown www:www /var/log/php7
|
||||||
|
RUN chown www:www /var/lib/nginx/logs/
|
||||||
|
|
||||||
|
RUN cp /usr/share/zoneinfo/UTC /etc/localtime
|
||||||
|
RUN echo "UTC" > /etc/timezone
|
||||||
|
RUN sed -i "s|;*date.timezone =.*|date.timezone = UTC|i" /etc/php7/php.ini
|
||||||
|
|
||||||
|
COPY configs/msmtprc /etc/msmtprc
|
||||||
|
|
||||||
|
COPY configs/aliases /etc/aliases
|
||||||
|
|
||||||
|
COPY start.sh /start.sh
|
||||||
|
RUN chmod +x /start.sh
|
||||||
|
|
||||||
|
CMD /start.sh
|
1
configs/aliases
Normal file
1
configs/aliases
Normal file
@ -0,0 +1 @@
|
|||||||
|
root: $SMTP_FROM
|
11
configs/envs/php7.sh
Normal file
11
configs/envs/php7.sh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
PHP_FPM_USER="www"
|
||||||
|
PHP_FPM_GROUP="www"
|
||||||
|
PHP_FPM_LISTEN_MODE="0660"
|
||||||
|
PHP_MEMORY_LIMIT="512M"
|
||||||
|
PHP_MAX_UPLOAD="50M"
|
||||||
|
PHP_MAX_FILE_UPLOAD="200"
|
||||||
|
PHP_MAX_POST="100M"
|
||||||
|
PHP_DISPLAY_ERRORS="On"
|
||||||
|
PHP_DISPLAY_STARTUP_ERRORS="On"
|
||||||
|
PHP_ERROR_REPORTING="E_COMPILE_ERROR\|E_RECOVERABLE_ERROR\|E_ERROR\|E_CORE_ERROR"
|
||||||
|
PHP_CGI_FIX_PATHINFO=0
|
18
configs/msmtprc
Normal file
18
configs/msmtprc
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Set default values for all following accounts.
|
||||||
|
defaults
|
||||||
|
auth on
|
||||||
|
tls on
|
||||||
|
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
||||||
|
syslog on
|
||||||
|
|
||||||
|
# Gmail
|
||||||
|
account themail
|
||||||
|
host $SMTP_HOST
|
||||||
|
port $SMTP_PORT
|
||||||
|
from $SMTP_FROM
|
||||||
|
user $SMTP_USER
|
||||||
|
password $SMTP_PASSWORD
|
||||||
|
|
||||||
|
# Set a default account
|
||||||
|
account default : themail
|
||||||
|
aliases /etc/aliases
|
34
configs/nginx.conf
Normal file
34
configs/nginx.conf
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
user www;
|
||||||
|
worker_processes auto; # it will be determinate automatically by the number of core
|
||||||
|
|
||||||
|
error_log /var/log/nginx/error.log warn;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
#pid /var/run/nginx/nginx.pid; # it permit you to use /etc/init.d/nginx reload|restart|stop|start
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
sendfile on;
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
keepalive_timeout 3000;
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
root /www;
|
||||||
|
index index.html index.htm index.php;
|
||||||
|
server_name localhost;
|
||||||
|
client_max_body_size 32m;
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /var/lib/nginx/html;
|
||||||
|
}
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi.conf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
27
docker-compose.yml
Normal file
27
docker-compose.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
foodoor-keys:
|
||||||
|
container_name: gitea-webhooks
|
||||||
|
build: .
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- '127.0.0.1:3002:80'
|
||||||
|
environment:
|
||||||
|
- SMTP_HOST=
|
||||||
|
- SMTP_PORT=
|
||||||
|
- SMTP_FROM=
|
||||||
|
- SMTP_USER=
|
||||||
|
- SMTP_PASSWORD=
|
||||||
|
- SMTP_ENCRYPTION=
|
||||||
|
- SECRET_KEY=
|
||||||
|
- RECIPIENTS_PR=
|
||||||
|
labels:
|
||||||
|
- "traefik.frontend.rule=Host:webhooks.chaospott.de"
|
||||||
|
- "traefik.port=3002"
|
||||||
|
- "traefik.docker.network=web"
|
||||||
|
networks:
|
||||||
|
extern:
|
||||||
|
networks:
|
||||||
|
extern:
|
||||||
|
external:
|
||||||
|
name: web
|
30
start.sh
Normal file
30
start.sh
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
source /etc/profile.d/php7.sh
|
||||||
|
sed -i "s|;listen.owner\s*=\s*nobody|listen.owner = ${PHP_FPM_USER}|g" /etc/php7/php-fpm.d/www.conf
|
||||||
|
sed -i "s|;listen.group\s*=\s*nobody|listen.group = ${PHP_FPM_GROUP}|g" /etc/php7/php-fpm.d/www.conf
|
||||||
|
sed -i "s|;listen.mode\s*=\s*0660|listen.mode = ${PHP_FPM_LISTEN_MODE}|g" /etc/php7/php-fpm.d/www.conf
|
||||||
|
sed -i "s|user\s*=\s*nobody|user = ${PHP_FPM_USER}|g" /etc/php7/php-fpm.d/www.conf
|
||||||
|
sed -i "s|group\s*=\s*nobody|group = ${PHP_FPM_GROUP}|g" /etc/php7/php-fpm.d/www.conf
|
||||||
|
sed -i "s|;log_level\s*=\s*notice|log_level = notice|g" /etc/php7/php-fpm.d/www.conf
|
||||||
|
sed -i "s|display_errors\s*=\s*Off|display_errors = ${PHP_DISPLAY_ERRORS}|i" /etc/php7/php.ini
|
||||||
|
sed -i "s|display_startup_errors\s*=\s*Off|display_startup_errors = ${PHP_DISPLAY_STARTUP_ERRORS}|i" /etc/php7/php.ini
|
||||||
|
sed -i "s|error_reporting\s*=\s*E_ALL & ~E_DEPRECATED & ~E_STRICT|error_reporting = ${PHP_ERROR_REPORTING}|i" /etc/php7/php.ini
|
||||||
|
sed -i "s|;*memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|i" /etc/php7/php.ini
|
||||||
|
sed -i "s|;*upload_max_filesize =.*|upload_max_filesize = ${PHP_MAX_UPLOAD}|i" /etc/php7/php.ini
|
||||||
|
sed -i "s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i" /etc/php7/php.ini
|
||||||
|
sed -i "s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i" /etc/php7/php.ini
|
||||||
|
sed -i "s|;*cgi.fix_pathinfo=.*|cgi.fix_pathinfo= ${PHP_CGI_FIX_PATHINFO}|i" /etc/php7/php.ini
|
||||||
|
|
||||||
|
sed -i "s/\$SMTP_HOST/$SMTP_HOST/g;s/\$SMTP_PORT/$SMTP_PORT/g;s/\$SMTP_FROM/$SMTP_FROM/g;s/\$SMTP_USER/$SMTP_USER/g;s/\$SMTP_PASSWORD/$SMTP_PASSWORD/g;s/\$SMTP_ENCRYPTION/$SMTP_ENCRYPTION/g" /etc/msmtprc
|
||||||
|
|
||||||
|
sed -i "s/\$SMTP_HOST/$SMTP_HOST/g;s/\$SMTP_PORT/$SMTP_PORT/g;s/\$SMTP_FROM/$SMTP_FROM/g;s/\$SMTP_USER/$SMTP_USER/g;s/\$SMTP_PASSWORD/$SMTP_PASSWORD/g;s/\$SMTP_ENCRYPTION/$SMTP_ENCRYPTION/g" /etc/aliases
|
||||||
|
|
||||||
|
sed -i "s/%%SECRETKEY%%/$SECRET_KEY/g;s/%%RECIPIENTS_PR%%/$RECIPIENTS_PR/g" /www/config.php
|
||||||
|
|
||||||
|
chown www:www /var/log/nginx/*
|
||||||
|
ln -sf /usr/bin/msmtp /usr/sbin/sendmail
|
||||||
|
nginx
|
||||||
|
|
||||||
|
su www
|
||||||
|
php-fpm7 -F
|
8
www/config.php
Normal file
8
www/config.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
$secret_key['pr'] = '%%SECRETKEY%%';
|
||||||
|
|
||||||
|
$recipients = [
|
||||||
|
'pr' => [
|
||||||
|
%%RECIPIENTS_PR%%
|
||||||
|
]
|
||||||
|
];
|
3
www/index.php
Normal file
3
www/index.php
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
phpinfo();
|
||||||
|
?>
|
59
www/pr.php
Normal file
59
www/pr.php
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
require_once('config.php');
|
||||||
|
|
||||||
|
// check for POST request
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
||||||
|
error_log('FAILED - not POST - '. $_SERVER['REQUEST_METHOD']);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get content type
|
||||||
|
$content_type = isset($_SERVER['CONTENT_TYPE']) ? strtolower(trim($_SERVER['CONTENT_TYPE'])) : '';
|
||||||
|
|
||||||
|
if ($content_type != 'application/json') {
|
||||||
|
error_log('FAILED - not application/json - '. $content_type);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get payload
|
||||||
|
$payload = trim(file_get_contents("php://input"));
|
||||||
|
|
||||||
|
if (empty($payload)) {
|
||||||
|
error_log('FAILED - no payload');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert json to array
|
||||||
|
$decoded = json_decode($payload, true);
|
||||||
|
|
||||||
|
// check for json decode errors
|
||||||
|
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||||
|
error_log('FAILED - json decode - '. json_last_error());
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($decoded['secret'] != $secret_key['pr']) {
|
||||||
|
error_log('FAILED - wrong secret key');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
file_put_contents("log.txt", print_r($decoded, true));
|
||||||
|
|
||||||
|
$subject = "Pull request: " . $decoded['pull_request']['title'] . " by " . $decoded['pull_request']['user']['login'];
|
||||||
|
$message = $decoded['sender']['login']
|
||||||
|
. " has " .
|
||||||
|
($decoded['pull_request']['merged'] ? "merged" : $decoded['action'])
|
||||||
|
. " pull request #" .
|
||||||
|
$decoded['pull_request']['number']
|
||||||
|
. " for " .
|
||||||
|
$decoded['repository']['full_name']
|
||||||
|
. ".\n" .
|
||||||
|
$decoded['pull_request']['html_url'];
|
||||||
|
|
||||||
|
log("SUBJECT: " . $subject . "; " . $message);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// success, do something
|
||||||
|
?>
|
||||||
|
Nothing to see here.
|
Loading…
Reference in New Issue
Block a user