diff --git a/css/base/radarr/radarr-base.css b/css/base/radarr/radarr-base.css index cc08399c..7c9324e8 100644 --- a/css/base/radarr/radarr-base.css +++ b/css/base/radarr/radarr-base.css @@ -108,7 +108,8 @@ } [class*="MovieFileEditorTable-container-"], -[class*="MovieHistoryTable-container-"] { +[class*="MovieHistoryTable-container-"], +[class*="MovieTitlesTable-container-"] { border: 1px solid transparent; background: var(--transparency-dark-25); } diff --git a/docker/root/defaults/nginx/nginx.conf b/docker/root/defaults/nginx/nginx.conf new file mode 100644 index 00000000..fa2bcb98 --- /dev/null +++ b/docker/root/defaults/nginx/nginx.conf @@ -0,0 +1,81 @@ +## Version 2022/08/16 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/nginx/nginx.conf.sample + +### Based on alpine defaults +# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.conf?h=3.15-stable + +user abc; + +# Set number of worker processes automatically based on number of CPU cores. +include /config/nginx/worker_processes.conf; + +# Enables the use of JIT for regular expressions to speed-up their processing. +pcre_jit on; + +# Configures default error logger. +error_log /config/log/nginx/error.log; + +# Includes files with directives to load dynamic modules. +include /etc/nginx/modules/*.conf; + +# Include files with config snippets into the root context. +include /etc/nginx/conf.d/*.conf; + +events { + # The maximum number of simultaneous connections that can be opened by + # a worker process. + worker_connections 1024; +} + +http { + # Includes mapping of file name extensions to MIME types of responses + # and defines the default type. + include /etc/nginx/mime.types; + default_type application/octet-stream; + + # Name servers used to resolve names of upstream servers into addresses. + # It's also needed when using tcpsocket and udpsocket in Lua modules. + #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001; + include /config/nginx/resolver.conf; + + # Don't tell nginx version to the clients. Default is 'on'. + server_tokens off; + + # Specifies the maximum accepted body size of a client request, as + # indicated by the request header Content-Length. If the stated content + # length is greater than this size, then the client receives the HTTP + # error code 413. Set to 0 to disable. Default is '1m'. + client_max_body_size 0; + + # Sendfile copies data between one FD and other from within the kernel, + # which is more efficient than read() + write(). Default is off. + sendfile on; + + # Causes nginx to attempt to send its HTTP response head in one packet, + # instead of using partial frames. Default is 'off'. + tcp_nopush on; + + # all ssl related config moved to ssl.conf + include /config/nginx/ssl.conf; + + # Enable gzipping of responses. + #gzip on; + + # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'. + gzip_vary on; + + # Helper variable for proxying websockets. + map $http_upgrade $connection_upgrade { + default upgrade; + '' close; + } + + # Sets the path, format, and configuration for a buffered log write. + access_log /config/log/nginx/access.log; + + # Includes virtual hosts configs. + include /etc/nginx/http.d/*.conf; + include /config/nginx/site-confs/*.conf; +} + +daemon off; +pid /run/nginx.pid; \ No newline at end of file diff --git a/docker/root/defaults/nginx/site-confs/default.conf b/docker/root/defaults/nginx/site-confs/default.conf new file mode 100644 index 00000000..5ad33998 --- /dev/null +++ b/docker/root/defaults/nginx/site-confs/default.conf @@ -0,0 +1,32 @@ +server { + listen 80 default_server; + listen [::]:80 default_server; + + listen 443 ssl http2; + listen [::]:443 ssl http2; + + server_name _; + + index index.html index.htm index.php; + + location / { + alias /config/www/; + try_files $uri $uri/ =404; + } + location /themepark {return 302 $scheme://$http_host/themepark/;} + location /themepark/ { + alias /config/www/; + sub_filter_types *; + sub_filter 'url("/theme.park/css/' 'url("/themepark/css/'; + sub_filter 'url(/theme.park/resources/' 'url(/themepark/resources/'; + sub_filter_once off; + try_files $uri $uri/ =404; + } + + # Don't cache + add_header Last-Modified $date_gmt; + add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; + if_modified_since off; + expires -1; + etag off; +} diff --git a/docker/root/defaults/nginx/ssl.conf b/docker/root/defaults/nginx/ssl.conf new file mode 100644 index 00000000..d8d4ffad --- /dev/null +++ b/docker/root/defaults/nginx/ssl.conf @@ -0,0 +1,39 @@ +## Version 2022/08/20 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/nginx/ssl.conf.sample + +### Mozilla Recommendations +# generated 2022-08-05, Mozilla Guideline v5.6, nginx 1.17.7, OpenSSL 1.1.1k, intermediate configuration +# https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1k&guideline=5.6 + +ssl_certificate /config/keys/cert.crt; +ssl_certificate_key /config/keys/cert.key; +ssl_session_timeout 1d; +ssl_session_cache shared:MozSSL:10m; # about 40000 sessions +ssl_session_tickets off; + +# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam +ssl_dhparam /config/nginx/dhparams.pem; + +# intermediate configuration +ssl_protocols TLSv1.2 TLSv1.3; +ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; +ssl_prefer_server_ciphers off; + +# HSTS (ngx_http_headers_module is required) (63072000 seconds) +#add_header Strict-Transport-Security "max-age=63072000" always; + +# OCSP stapling +#ssl_stapling on; +#ssl_stapling_verify on; + +# verify chain of trust of OCSP response using Root CA and Intermediate certs +#ssl_trusted_certificate /config/keys/cert.crt; + +# Optional additional headers +#add_header Cache-Control "no-transform" always; +#add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self'"; +#add_header Permissions-Policy "interest-cohort=()"; +#add_header Referrer-Policy "same-origin" always; +#add_header X-Content-Type-Options "nosniff" always; +#add_header X-Frame-Options "SAMEORIGIN" always; +#add_header X-UA-Compatible "IE=Edge" always; +#add_header X-XSS-Protection "1; mode=block" always; \ No newline at end of file diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-adduser/branding b/docker/root/etc/s6-overlay/s6-rc.d/init-adduser/branding new file mode 100644 index 00000000..9b563c6f --- /dev/null +++ b/docker/root/etc/s6-overlay/s6-rc.d/init-adduser/branding @@ -0,0 +1,10 @@ + +████████╗██╗ ██╗███████╗███╗ ███╗███████╗ ██████╗ █████╗ ██████╗ ██╗ ██╗ +╚══██╔══╝██║ ██║██╔════╝████╗ ████║██╔════╝ ██╔══██╗██╔══██╗██╔══██╗██║ ██╔╝ + ██║ ███████║█████╗ ██╔████╔██║█████╗ ██████╔╝███████║██████╔╝█████╔╝ + ██║ ██╔══██║██╔══╝ ██║╚██╔╝██║██╔══╝ ██╔═══╝ ██╔══██║██╔══██╗██╔═██╗ + ██║ ██║ ██║███████╗██║ ╚═╝ ██║███████╗██╗██║ ██║ ██║██║ ██║██║ ██╗ + ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ + + Made by @gilbN + https://theme-park.dev diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-themepark-end/type b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark-end/type new file mode 100644 index 00000000..3d92b15f --- /dev/null +++ b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark-end/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-themepark-end/up b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark-end/up new file mode 100644 index 00000000..9af9ece1 --- /dev/null +++ b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark-end/up @@ -0,0 +1 @@ +# This file doesn't do anything, it's just the end of the themepark init process diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/dependencies.d/init-version-checks b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/dependencies.d/init-version-checks new file mode 100644 index 00000000..e69de29b diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/run b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/run new file mode 100644 index 00000000..62e6d0f9 --- /dev/null +++ b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/run @@ -0,0 +1,58 @@ +#!/usr/bin/with-contenv bash + +# Display variables for troubleshooting +echo -e "[theme.park-init] Variables set:\\n\ +PUID=${PUID}\\n\ +PGID=${PGID}\\n\ +TZ=${TZ}\\n\ +TP_DOMAIN=${TP_DOMAIN}\\n\ +TP_URLBASE=${TP_URLBASE}\\n" + +# Remove forward slash +case ${TP_URLBASE} in + *"/"*) + TP_URLBASE=$(echo "${TP_URLBASE}" | sed 's/\///g') + ;; +esac + +DEFAULT='/defaults/nginx/site-confs/default.conf' +if [[ ${TP_URLBASE} ]]; then + if ! grep -q "${TP_URLBASE}" "${DEFAULT}"; then + sed -i "s/themepark/${TP_URLBASE}/g" ${DEFAULT} + fi +fi + +echo '[theme.park-init] Copying nginx files' +cp -TR /defaults /config + +# Remove old config +if [[ -f /config/nginx/site-confs/default ]]; then + echo '[theme.park-init] Removing old default file' + rm /config/nginx/site-confs/default +fi + +# make our folders and links +mkdir -p \ + /config/www/{css,resources} \ + /config/docker-mods + +echo '[theme.park-init] Copying theme files' +# copy theme files +cp -R /app/themepark/css /config/www +cp -R /app/themepark/resources /config/www +cp /app/themepark/index.html /config/www +cp /app/themepark/themes.py /config/www +cp /app/themepark/CNAME /config/www + +echo '[theme.park-init] Copying mods' +# copy mods + for folder in /app/themepark/docker-mods/*; do \ + cp /app/themepark/docker-mods/"${folder##*/}"/root/etc/cont-init.d/98-themepark /config/docker-mods/98-themepark-"${folder##*/}"; \ + done + +echo '[theme.park-init] Running themes.py and creating CSS files' +python3 /config/www/themes.py +echo '[theme.park-init] done.' +# permissions +chown -R abc:abc \ + /config \ No newline at end of file diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/type b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/type new file mode 100644 index 00000000..3d92b15f --- /dev/null +++ b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/up b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/up new file mode 100644 index 00000000..081a3ebe --- /dev/null +++ b/docker/root/etc/s6-overlay/s6-rc.d/init-themepark/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-themepark/run diff --git a/docker/root/etc/s6-overlay/s6-rc.d/init-version-checks/up b/docker/root/etc/s6-overlay/s6-rc.d/init-version-checks/up new file mode 100644 index 00000000..ec58cf20 --- /dev/null +++ b/docker/root/etc/s6-overlay/s6-rc.d/init-version-checks/up @@ -0,0 +1 @@ +# No version checks for you! \ No newline at end of file diff --git a/docker/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-themepark b/docker/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-themepark new file mode 100644 index 00000000..e69de29b