backend_PYTHON = \
src/backend/__init__.py \
src/backend/accounts.py \
+ src/backend/analytics.py \
src/backend/asterisk.py \
src/backend/base.py \
src/backend/blog.py \
web_PYTHON = \
src/web/__init__.py \
+ src/web/analytics.py \
src/web/auth.py \
src/web/base.py \
src/web/blog.py \
templatesdir = $(datadir)/templates
+templates_analytics_DATA = \
+ src/templates/analytics/docs.html \
+ src/templates/analytics/index.html
+
+templates_analyticsdir = $(templatesdir)/analytics
+
+templates_analytics_modules_DATA = \
+ src/templates/analytics/modules/summary.html
+
+templates_analytics_modulesdir = $(templates_analyticsdir)/modules
+
templates_auth_DATA = \
src/templates/auth/activate.html \
src/templates/auth/activated.html \
+ src/templates/auth/join.html \
+ src/templates/auth/join-success.html \
src/templates/auth/login.html \
src/templates/auth/password-reset.html \
src/templates/auth/password-reset-initiation.html \
- src/templates/auth/password-reset-successful.html \
- src/templates/auth/register.html \
- src/templates/auth/register-success.html
+ src/templates/auth/password-reset-successful.html
templates_authdir = $(templatesdir)/auth
templates_auth_messages_DATA = \
src/templates/auth/messages/donation-reminder.html \
src/templates/auth/messages/donation-reminder.txt \
+ src/templates/auth/messages/join.html \
+ src/templates/auth/messages/join.txt \
src/templates/auth/messages/password-reset.html \
src/templates/auth/messages/password-reset.txt \
src/templates/auth/messages/profile-setup.html \
src/templates/auth/messages/profile-setup.txt \
src/templates/auth/messages/profile-setup-2.html \
- src/templates/auth/messages/profile-setup-2.txt \
- src/templates/auth/messages/register.html \
- src/templates/auth/messages/register.txt
+ src/templates/auth/messages/profile-setup-2.txt
templates_auth_messagesdir = $(templates_authdir)/messages
src/templates/blog/index.html \
src/templates/blog/post.html \
src/templates/blog/publish.html \
- src/templates/blog/tag.html \
src/templates/blog/write.html \
src/templates/blog/year.html
templates_blog_modules_DATA = \
src/templates/blog/modules/history-navigation.html \
- src/templates/blog/modules/list.html \
- src/templates/blog/modules/post.html
+ src/templates/blog/modules/list.html
templates_blog_modulesdir = $(templates_blogdir)/modules
templates_docs_modulesdir = $(templates_docsdir)/modules
templates_downloads_DATA = \
+ src/templates/downloads/cloud.html \
src/templates/downloads/mirrors.html \
src/templates/downloads/release.html \
src/templates/downloads/thank-you.html
templates_fireinfo_modulesdir = $(templates_fireinfodir)/modules
templates_location_DATA = \
- src/templates/location/base.html \
- src/templates/location/download.html \
- src/templates/location/how-to-use.html \
src/templates/location/index.html \
- src/templates/location/lookup.html
+ src/templates/location/install.html \
+ src/templates/location/lookup.html \
+ src/templates/location/report-a-problem.html
templates_locationdir = $(templatesdir)/location
+templates_location_how_to_use_DATA = \
+ src/templates/location/how-to-use/cli.html \
+ src/templates/location/how-to-use/dns.html \
+ src/templates/location/how-to-use/index.html \
+ src/templates/location/how-to-use/python.html
+
+templates_location_how_to_usedir = $(templates_locationdir)/how-to-use
+
templates_lists_DATA = \
src/templates/lists/index.html
templates_nopaste_DATA = \
src/templates/nopaste/create.html \
+ src/templates/nopaste/upload.html \
src/templates/nopaste/view.html
templates_nopastedir = $(templatesdir)/nopaste
src/templates/static/about.html \
src/templates/static/legal.html \
src/templates/static/help.html \
+ src/templates/static/partners.html \
src/templates/static/sitemap.html
templates_staticdir = $(templatesdir)/static
src/sass/main.sass \
src/sass/_code-highlighting.sass \
src/sass/_fonts.sass \
- src/sass/_icons.sass
+ src/sass/_icons.sass \
+ src/sass/_variables.sass
EXTRA_DIST += \
src/sass/listing.sass \
static_flags_4x3dir = $(static_flagsdir)/4x3
-static_fonts_DATA = \
- src/fonts/ofl/prompt/Prompt-BlackItalic.ttf \
- src/fonts/ofl/prompt/Prompt-Black.ttf \
- src/fonts/ofl/prompt/Prompt-BoldItalic.ttf \
- src/fonts/ofl/prompt/Prompt-Bold.ttf \
- src/fonts/ofl/prompt/Prompt-ExtraBoldItalic.ttf \
- src/fonts/ofl/prompt/Prompt-ExtraBold.ttf \
- src/fonts/ofl/prompt/Prompt-ExtraLightItalic.ttf \
- src/fonts/ofl/prompt/Prompt-ExtraLight.ttf \
- src/fonts/ofl/prompt/Prompt-Italic.ttf \
- src/fonts/ofl/prompt/Prompt-LightItalic.ttf \
- src/fonts/ofl/prompt/Prompt-Light.ttf \
- src/fonts/ofl/prompt/Prompt-MediumItalic.ttf \
- src/fonts/ofl/prompt/Prompt-Medium.ttf \
- src/fonts/ofl/prompt/Prompt-Regular.ttf \
- src/fonts/ofl/prompt/Prompt-SemiBoldItalic.ttf \
- src/fonts/ofl/prompt/Prompt-SemiBold.ttf \
- src/fonts/ofl/prompt/Prompt-ThinItalic.ttf \
- src/fonts/ofl/prompt/Prompt-Thin.ttf \
+dist_static_fonts_DATA = \
+ src/static/fonts/prompt/Prompt-Black.ttf \
+ src/static/fonts/prompt/Prompt-BlackItalic.ttf \
+ src/static/fonts/prompt/Prompt-Bold.ttf \
+ src/static/fonts/prompt/Prompt-BoldItalic.ttf \
+ src/static/fonts/prompt/Prompt-ExtraBold.ttf \
+ src/static/fonts/prompt/Prompt-ExtraBoldItalic.ttf \
+ src/static/fonts/prompt/Prompt-ExtraLight.ttf \
+ src/static/fonts/prompt/Prompt-ExtraLightItalic.ttf \
+ src/static/fonts/prompt/Prompt-Italic.ttf \
+ src/static/fonts/prompt/Prompt-Light.ttf \
+ src/static/fonts/prompt/Prompt-LightItalic.ttf \
+ src/static/fonts/prompt/Prompt-Medium.ttf \
+ src/static/fonts/prompt/Prompt-MediumItalic.ttf \
+ src/static/fonts/prompt/Prompt-Regular.ttf \
+ src/static/fonts/prompt/Prompt-SemiBold.ttf \
+ src/static/fonts/prompt/Prompt-SemiBoldItalic.ttf \
+ src/static/fonts/prompt/Prompt-Thin.ttf \
+ src/static/fonts/prompt/Prompt-ThinItalic.ttf \
\
src/font-awesome/webfonts/fa-brands-400.ttf \
src/font-awesome/webfonts/fa-brands-400.woff2 \
src/payment-font/fonts/paymentfont-webfont.ttf \
src/payment-font/fonts/paymentfont-webfont.woff
+static_fonts_DATA = \
+ src/static/fonts/prompt/Prompt-Black.woff2 \
+ src/static/fonts/prompt/Prompt-BlackItalic.woff2 \
+ src/static/fonts/prompt/Prompt-Bold.woff2 \
+ src/static/fonts/prompt/Prompt-BoldItalic.woff2 \
+ src/static/fonts/prompt/Prompt-ExtraBold.woff2 \
+ src/static/fonts/prompt/Prompt-ExtraBoldItalic.woff2 \
+ src/static/fonts/prompt/Prompt-ExtraLight.woff2 \
+ src/static/fonts/prompt/Prompt-ExtraLightItalic.woff2 \
+ src/static/fonts/prompt/Prompt-Italic.woff2 \
+ src/static/fonts/prompt/Prompt-Light.woff2 \
+ src/static/fonts/prompt/Prompt-LightItalic.woff2 \
+ src/static/fonts/prompt/Prompt-Medium.woff2 \
+ src/static/fonts/prompt/Prompt-MediumItalic.woff2 \
+ src/static/fonts/prompt/Prompt-Regular.woff2 \
+ src/static/fonts/prompt/Prompt-SemiBold.woff2 \
+ src/static/fonts/prompt/Prompt-SemiBoldItalic.woff2 \
+ src/static/fonts/prompt/Prompt-Thin.woff2 \
+ src/static/fonts/prompt/Prompt-ThinItalic.woff2
+
static_fontsdir = $(staticdir)/fonts
+EXTRA_DIST += \
+ src/static/fonts/prompt/DESCRIPTION.en_us.html \
+ src/static/fonts/prompt/METADATA.pb \
+ src/static/fonts/prompt/OFL.txt
+
+CLEANFILES += \
+ $(static_fonts_DATA)
+
static_img_DATA = \
src/static/img/apple-touch-icon-192x192-precomposed.png \
src/static/img/apple-touch-icon-180x180-precomposed.png \
src/static/img/bash-logo.svg \
src/static/img/debian-logo.svg \
src/static/img/default-avatar.jpg \
+ src/static/img/fdroid-logo.svg \
src/static/img/ipfire-tux.png \
src/static/img/iuse-not-found.png \
+ src/static/img/kyberio-logo.svg \
src/static/img/lightningwirelabs-logo.svg \
src/static/img/python-logo.svg \
src/static/img/tor.svg
# From https://www.pexels.com/photo/123-let-s-go-imaginary-text-704767/
dist_static_img_auth_DATA = \
- src/static/img/auth/register.jpg
+ src/static/img/auth/join.jpg
static_img_auth_DATA = \
- src/static/img/auth/register@600.jpg
+ src/static/img/auth/join@600.jpg
CLEANFILES += \
- src/static/img/auth/register@600.jpg
+ src/static/img/auth/join@600.jpg
static_img_authdir = $(static_imgdir)/auth
+static_img_downloadsdir = $(static_imgdir)/downloads
+
+dist_static_img_downloads_cloud_DATA = \
+ src/static/img/downloads/cloud/aws.svg \
+ src/static/img/downloads/cloud/exoscale.svg \
+ src/static/img/downloads/cloud/hetzner.svg
+
+static_img_downloads_clouddir = $(static_img_downloadsdir)/cloud
+
static_images_tux_DATA = \
src/static/img/tux/ipfire_tux_16x16.png \
src/static/img/tux/ipfire_tux_20x20.png \
static_videos_DATA = \
src/static/videos/firewall.jpg \
src/static/videos/firewall@1920.av1.mp4 \
- src/static/videos/firewall@1920.hevc.mp4 \
- src/static/videos/firewall@1920.h264.mp4
+ src/static/videos/firewall@1920.h265.mp4 \
+ src/static/videos/firewall@1920.h264.mp4 \
+ src/static/videos/firewall@1920.vp9.mp4
static_videosdir = $(staticdir)/videos
# ------------------------------------------------------------------------------
+EXTRA_DIST += \
+ src/error-pages/Gemfile \
+ src/error-pages/Gemfile.lock \
+ src/error-pages/_config.yml \
+ src/error-pages/_layouts/error.html \
+ src/error-pages/assets/main.sass \
+ src/error-pages/500.markdown \
+ src/error-pages/502.markdown \
+ src/error-pages/503.markdown \
+ src/error-pages/504.markdown
+
+.PHONY: error-pages
+error-pages:
+ $(AM_V_GEN)cd src/error-pages && JEKYLL_ENV=production \
+ $(JEKYLL) build --quiet --incremental
+
+.PHONY: upload-error-pages
+upload-error-pages: error-pages
+ rsync --verbose --progress --recursive --delete -e "ssh -p 222" --exclude="feed.xml" \
+ src/error-pages/_site/ root@fw01.haj.ipfire.org:/etc/haproxy/errors/
+
+# ------------------------------------------------------------------------------
+
dist_cron_DATA = \
src/crontab/ipfire
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
$(CONVERT) -units PixelsPerInch $< -resize 600x -strip -quality 85 $@
+# Fonts
+
+%.woff2: %.ttf
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(WOFF2_COMPRESS) $^ >/dev/null
+
# Video Stuff
-FFMPEG += \
- -loglevel quiet
+# Multi-threading options for faster encoding
+FFMPEG_MT = \
+ -row-mt 1 \
+ -threads $(shell getconf _NPROCESSORS_ONLN) \
+ -tile-columns 2
+
+# Enable to log less
+#FFMPEG += \
+# -loglevel quiet
# AV1
src/static/videos/firewall@%.av1.mp4: src/static/videos/firewall.mp4
-map_metadata -1 \
-an \
-c:v libsvtav1 \
+ -b:v 0 \
-crf 31 \
- -preset 5 \
+ -strict experimental \
+ -preset 3 \
-pix_fmt yuv420p \
-movflags +faststart \
- -vf scale=$(patsubst src/static/videos/firewall@%.av1.mp4,%,$@):-2,fps=25 \
+ -vf scale=$(patsubst src/static/videos/firewall@%.av1.mp4,%,$@):-2:flags=lanczos,fps=25 \
+ $(FFMPEG_MT) \
$@
-# HEVC
-src/static/videos/firewall@%.hevc.mp4: src/static/videos/firewall.mp4
+# H.256
+src/static/videos/firewall@%.h265.mp4: src/static/videos/firewall.mp4
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
$(FFMPEG) -y \
-i $^ \
-map_metadata -1 \
-an \
-c:v libx265 \
- -crf 25 \
+ -b:v 0 \
+ -crf 27 \
-preset veryslow \
-pix_fmt yuv420p \
-movflags +faststart \
-tag:v hvc1 \
- -vf scale=$(patsubst src/static/videos/firewall@%.hevc.mp4,%,$@):-2,fps=25 \
+ -vf scale=$(patsubst src/static/videos/firewall@%.h265.mp4,%,$@):-2:flags=lanczos,fps=25 \
+ $(FFMPEG_MT) \
$@
# H.264
-map_metadata -1 \
-an \
-c:v libx264 \
+ -b:v 0 \
-crf 27 \
-preset veryslow \
-profile:v main \
-pix_fmt yuv420p \
-movflags +faststart \
- -vf scale=$(patsubst src/static/videos/firewall@%.h264.mp4,%,$@):-2,fps=25 \
+ -vf scale=$(patsubst src/static/videos/firewall@%.h264.mp4,%,$@):-2:flags=lanczos,fps=25 \
+ $(FFMPEG_MT) \
+ $@
+
+# VP9
+src/static/videos/firewall@%.vp9.mp4: src/static/videos/firewall.mp4
+ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+ $(FFMPEG) -y \
+ -i $^ \
+ -map_metadata -1 \
+ -an \
+ -c:v libvpx-vp9 \
+ -b:v 0 \
+ -crf 31 \
+ -deadline best \
+ -preset veryslow \
+ -pix_fmt yuv420p \
+ -movflags +faststart \
+ -vf scale=$(patsubst src/static/videos/firewall@%.vp9.mp4,%,$@):-2:flags=lanczos,fps=25 \
+ $(FFMPEG_MT) \
$@
# Cover image