]> git.ipfire.org Git - ipfire.org.git/blobdiff - Makefile.am
location: Create a page that explains how to report problems
[ipfire.org.git] / Makefile.am
index f5d759c4c8b8bb49a6d5f57d2c5c6a1ad56e2a87..95220c2e3d987f9bf9ce08a86fb04d60e75092c2 100644 (file)
@@ -9,7 +9,7 @@ AUTOMAKE_OPTIONS = color-tests
 # keep itermediate files
 .SECONDARY:
 
-pythondir  = $(pyexecdir)
+pythondir  = $(prefix)/lib/python3/dist-packages
 
 configsdir = $(sysconfdir)/ipfire.org
 crondir    = $(sysconfdir)/cron.d
@@ -49,25 +49,31 @@ CLEANFILES += \
 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 \
+       src/backend/bugzilla.py \
+       src/backend/cache.py \
+       src/backend/campaigns.py \
        src/backend/countries.py \
        src/backend/database.py \
        src/backend/decorators.py \
        src/backend/fireinfo.py \
-       src/backend/geoip.py \
+       src/backend/httpclient.py \
        src/backend/hwdata.py \
        src/backend/iuse.py \
-       src/backend/memcached.py \
+       src/backend/lists.py \
        src/backend/messages.py \
        src/backend/mirrors.py \
        src/backend/misc.py \
        src/backend/netboot.py \
        src/backend/nopaste.py \
+       src/backend/ratelimit.py \
        src/backend/releases.py \
+       src/backend/resolver.py \
        src/backend/settings.py \
-       src/backend/talk.py \
-       src/backend/tweets.py \
+       src/backend/toots.py \
        src/backend/util.py \
        src/backend/wiki.py \
        src/backend/zeiterfassung.py
@@ -78,22 +84,23 @@ backenddir = $(pythondir)/ipfire
 
 web_PYTHON = \
        src/web/__init__.py \
+       src/web/analytics.py \
        src/web/auth.py \
        src/web/base.py \
        src/web/blog.py \
        src/web/boot.py \
+       src/web/docs.py \
        src/web/donate.py \
-       src/web/download.py \
+       src/web/downloads.py \
        src/web/fireinfo.py \
        src/web/handlers.py \
        src/web/iuse.py \
+       src/web/lists.py \
        src/web/location.py \
-       src/web/mirrors.py \
-       src/web/newsletter.py \
        src/web/nopaste.py \
-       src/web/people.py \
        src/web/ui_modules.py \
-       src/web/wiki.py
+       src/web/users.py \
+       src/web/voip.py
 
 webdir = $(backenddir)/web
 
@@ -108,41 +115,70 @@ templates_DATA = \
 
 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/register.html \
-       src/templates/auth/register-success.html
+       src/templates/auth/password-reset.html \
+       src/templates/auth/password-reset-initiation.html \
+       src/templates/auth/password-reset-successful.html
 
 templates_authdir = $(templatesdir)/auth
 
 templates_auth_messages_DATA = \
-       src/templates/auth/messages/register.txt
+       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
 
 templates_auth_messagesdir = $(templates_authdir)/messages
 
+templates_auth_modules_DATA = \
+       src/templates/auth/modules/password.html \
+       src/templates/auth/modules/password.js
+
+templates_auth_modulesdir = $(templates_authdir)/modules
+
 templates_blog_DATA = \
-       src/templates/blog/author.html \
-       src/templates/blog/base.html \
-       src/templates/blog/compose.html \
        src/templates/blog/delete.html \
        src/templates/blog/drafts.html \
        src/templates/blog/feed.xml \
        src/templates/blog/index.html \
        src/templates/blog/post.html \
        src/templates/blog/publish.html \
-       src/templates/blog/search-results.html \
-       src/templates/blog/tag.html \
+       src/templates/blog/write.html \
        src/templates/blog/year.html
 
 templates_blogdir = $(templatesdir)/blog
 
+templates_blog_messages_DATA = \
+       src/templates/blog/messages/announcement.html \
+       src/templates/blog/messages/announcement.txt
+
+templates_blog_messagesdir = $(templates_blogdir)/messages
+
 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/posts.html
+       src/templates/blog/modules/list.html
 
 templates_blog_modulesdir = $(templates_blogdir)/modules
 
@@ -153,12 +189,61 @@ templates_donate_DATA = \
 
 templates_donatedir = $(templatesdir)/donate
 
-templates_download_DATA = \
-       src/templates/download/release.html
-
-templates_downloaddir = $(templatesdir)/download
+templates_donate_messages_DATA = \
+       src/templates/donate/messages/ask-again.html \
+       src/templates/donate/messages/ask-again.txt \
+       src/templates/donate/messages/christmas-1.html \
+       src/templates/donate/messages/christmas-1.txt \
+       src/templates/donate/messages/christmas-2.html \
+       src/templates/donate/messages/christmas-2.txt \
+       src/templates/donate/messages/christmas-3.html \
+       src/templates/donate/messages/christmas-3.txt \
+       src/templates/donate/messages/christmas-4.html \
+       src/templates/donate/messages/christmas-4.txt \
+       src/templates/donate/messages/convert-to-monthly.html \
+       src/templates/donate/messages/convert-to-monthly.txt
+
+templates_donate_messagesdir = $(templates_donatedir)/messages
+
+templates_docs_DATA = \
+       src/templates/docs/404.html \
+       src/templates/docs/base.html \
+       src/templates/docs/confirm-delete.html \
+       src/templates/docs/confirm-restore.html \
+       src/templates/docs/diff.html \
+       src/templates/docs/edit.html \
+       src/templates/docs/page.html \
+       src/templates/docs/recent-changes.html \
+       src/templates/docs/revisions.html \
+       src/templates/docs/search-results.html \
+       src/templates/docs/tree.html \
+       src/templates/docs/watchlist.html
+
+templates_docsdir = $(templatesdir)/docs
+
+templates_docs_files_DATA = \
+       src/templates/docs/files/detail.html \
+       src/templates/docs/files/index.html
+
+templates_docs_filesdir = $(templates_docsdir)/files
+
+templates_docs_modules_DATA = \
+       src/templates/docs/modules/diff.html \
+       src/templates/docs/modules/header.html \
+       src/templates/docs/modules/list.html
+
+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_downloadsdir = $(templatesdir)/downloads
 
 templates_fireinfo_DATA = \
+       src/templates/fireinfo/admin.html \
        src/templates/fireinfo/driver.html \
        src/templates/fireinfo/index.html \
        src/templates/fireinfo/i-use-1.png \
@@ -177,19 +262,36 @@ templates_fireinfo_modules_DATA = \
 templates_fireinfo_modulesdir = $(templates_fireinfodir)/modules
 
 templates_location_DATA = \
-       src/templates/location/base.html \
-       src/templates/location/blacklists.html \
-       src/templates/location/lookup.html
+       src/templates/location/index.html \
+       src/templates/location/install.html \
+       src/templates/location/lookup.html \
+       src/templates/location/report-a-problem.html
 
 templates_locationdir = $(templatesdir)/location
 
-templates_mirrors_DATA = \
-       src/templates/mirrors/index.html \
-       src/templates/mirrors/mirror.html
+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_mirrorsdir = $(templatesdir)/mirrors
+templates_lists_DATA = \
+       src/templates/lists/index.html
+
+templates_listsdir = $(templatesdir)/lists
+
+templates_messages_DATA = \
+       src/templates/messages/base.html \
+       src/templates/messages/base-promo.html \
+       src/templates/messages/fonts.css \
+       src/templates/messages/main.css
+
+templates_messagesdir = $(templatesdir)/messages
 
 templates_modules_DATA = \
+       src/templates/modules/ipfire-logo.html \
        src/templates/modules/map.html \
        src/templates/modules/progress-bar.html
 
@@ -204,13 +306,9 @@ templates_netboot_DATA = \
 
 templates_netbootdir = $(templatesdir)/netboot
 
-templates_newsletter_DATA = \
-       src/templates/newsletter/subscribed.html
-
-templates_newsletterdir = $(templatesdir)/newsletter
-
 templates_nopaste_DATA = \
        src/templates/nopaste/create.html \
+       src/templates/nopaste/upload.html \
        src/templates/nopaste/view.html
 
 templates_nopastedir = $(templatesdir)/nopaste
@@ -220,115 +318,101 @@ templates_nopaste_modules_DATA = \
 
 templates_nopaste_modulesdir = $(templates_nopastedir)/modules
 
-templates_people_DATA = \
-       src/templates/people/base.html \
-       src/templates/people/conferences.html \
-       src/templates/people/call.html \
-       src/templates/people/calls.html \
-       src/templates/people/index.html \
-       src/templates/people/passwd.html \
-       src/templates/people/search.html \
-       src/templates/people/sip.html \
-       src/templates/people/user.html \
-       src/templates/people/user-edit.html \
-       src/templates/people/users.html
-
-templates_peopledir = $(templatesdir)/people
-
-templates_people_modules_DATA = \
-       src/templates/people/modules/accounts-list.html \
-       src/templates/people/modules/cdr.html \
-       src/templates/people/modules/channels.html \
-       src/templates/people/modules/mos.html \
-       src/templates/people/modules/password.html \
-       src/templates/people/modules/password.js \
-       src/templates/people/modules/registrations.html \
-       src/templates/people/modules/sip-status.html
-
-templates_people_modulesdir = $(templates_peopledir)/modules
-
-templates_people_ssh_keys_DATA = \
-       src/templates/people/ssh-keys/delete.html \
-       src/templates/people/ssh-keys/error.html \
-       src/templates/people/ssh-keys/error-invalid-key.html \
-       src/templates/people/ssh-keys/index.html \
-       src/templates/people/ssh-keys/upload.html
-
-templates_people_ssh_keysdir = $(templates_peopledir)/ssh-keys
+templates_people_messages_DATA = \
+       src/templates/people/messages/new-account.txt
+
+templates_people_messagesdir = $(templates_peopledir)/messages
 
 templates_static_DATA = \
-       src/templates/static/blocked.html \
-       src/templates/static/chat.html \
-       src/templates/static/features.html \
+       src/templates/static/about.html \
        src/templates/static/legal.html \
-       src/templates/static/support.html
+       src/templates/static/help.html \
+       src/templates/static/partners.html \
+       src/templates/static/sitemap.html
 
 templates_staticdir = $(templatesdir)/static
 
-templates_wiki_DATA = \
-       src/templates/wiki/404.html \
-       src/templates/wiki/base.html \
-       src/templates/wiki/diff.html \
-       src/templates/wiki/edit.html \
-       src/templates/wiki/page.html \
-       src/templates/wiki/recent-changes.html \
-       src/templates/wiki/revisions.html \
-       src/templates/wiki/search-results.html \
-       src/templates/wiki/watchlist.html
+templates_users_DATA = \
+       src/templates/users/delete.html \
+       src/templates/users/deleted.html \
+       src/templates/users/edit.html \
+       src/templates/users/index.html \
+       src/templates/users/passwd.html \
+       src/templates/users/show.html \
+       src/templates/users/subscribe.html \
+       src/templates/users/subscribed.html \
+       src/templates/users/unsubscribe.html \
+       src/templates/users/unsubscribed.html
 
-templates_wikidir = $(templatesdir)/wiki
+templates_usersdir = $(templatesdir)/users
+
+templates_users_groups_DATA = \
+       src/templates/users/groups/index.html \
+       src/templates/users/groups/show.html
 
-templates_wiki_files_DATA = \
-       src/templates/wiki/files/detail.html \
-       src/templates/wiki/files/index.html
+templates_users_groupsdir = $(templates_usersdir)/groups
 
-templates_wiki_filesdir = $(templates_wikidir)/files
+templates_users_modules_DATA = \
+       src/templates/users/modules/list.html
+
+templates_users_modulesdir = $(templates_usersdir)/modules
+
+templates_voip_DATA = \
+       src/templates/voip/index.html
+
+templates_voipdir = $(templatesdir)/voip
+
+templates_voip_modules_DATA = \
+       src/templates/voip/modules/conferences.html \
+       src/templates/voip/modules/outbound-registrations.html \
+       src/templates/voip/modules/queues.html \
+       src/templates/voip/modules/registrations.html
+
+templates_voip_modulesdir = $(templates_voipdir)/modules
+
+templates_wikidir = $(templatesdir)/wiki
 
 templates_wiki_messages_DATA = \
        src/templates/wiki/messages/page-changed.txt
 
 templates_wiki_messagesdir = $(templates_wikidir)/messages
 
-templates_wiki_modules_DATA = \
-       src/templates/wiki/modules/diff.html \
-       src/templates/wiki/modules/list.html \
-       src/templates/wiki/modules/navbar.html
-
-templates_wiki_modulesdir = $(templates_wikidir)/modules
-
 # ------------------------------------------------------------------------------
 
-SCSS_FILES = \
-       src/scss/style.scss \
-       src/scss/_fonts.scss \
-       src/scss/_icons.scss \
-       src/scss/_variables.scss
+SASS_FILES = \
+       src/sass/main.sass \
+       src/sass/_code-highlighting.sass \
+       src/sass/_fonts.sass \
+       src/sass/_icons.sass \
+       src/sass/_variables.sass
 
 EXTRA_DIST += \
-       src/scss/listing.scss \
-       src/templates/messages/main.scss
+       src/sass/listing.sass \
+       src/templates/messages/fonts.sass \
+       src/templates/messages/main.sass
 
 CLEANFILES += \
+       src/templates/messages/fonts.css \
        src/templates/messages/main.css
 
 static_DATA = \
        src/static/favicon.ico \
        src/static/robots.txt \
-       src/scss/fonts.css \
-       src/scss/listing.css \
-       src/scss/main.css
+       src/sass/listing.css \
+       src/sass/main.css
 
 CLEANFILES += \
-       src/scss/fonts.css \
-       src/scss/listing.css \
-       src/scss/main.css
+       src/sass/listing.css \
+       src/sass/main.css
 
 EXTRA_DIST += \
-       $(SCSS_FILES)
+       $(SASS_FILES)
 
 staticdir = $(datadir)/static
 
 static_css_DATA = \
+       src/static/css/Control.Geocoder.css \
+       src/static/css/leaflet.css \
        src/static/css/prettify.css
 
 static_cssdir = $(staticdir)/css
@@ -857,39 +941,69 @@ static_flags_4x3_DATA = \
 
 static_flags_4x3dir = $(static_flagsdir)/4x3
 
-static_fonts_DATA = \
-       src/fonts/ofl/mukta/Mukta-Bold.ttf \
-       src/fonts/ofl/mukta/Mukta-ExtraBold.ttf \
-       src/fonts/ofl/mukta/Mukta-ExtraLight.ttf \
-       src/fonts/ofl/mukta/Mukta-Light.ttf \
-       src/fonts/ofl/mukta/Mukta-Medium.ttf \
-       src/fonts/ofl/mukta/Mukta-Regular.ttf \
-       src/fonts/ofl/mukta/Mukta-SemiBold.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/web-fonts-with-css/webfonts/fa-brands-400.eot \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-brands-400.svg \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-brands-400.ttf \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-brands-400.woff \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-brands-400.woff2 \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-regular-400.eot \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-regular-400.svg \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-regular-400.ttf \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-regular-400.woff \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-regular-400.woff2 \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-solid-900.eot \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-solid-900.svg \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-solid-900.ttf \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-solid-900.woff \
-       src/font-awesome/web-fonts-with-css/webfonts/fa-solid-900.woff2 \
+       src/font-awesome/webfonts/fa-brands-400.ttf \
+       src/font-awesome/webfonts/fa-brands-400.woff2 \
+       src/font-awesome/webfonts/fa-regular-400.ttf \
+       src/font-awesome/webfonts/fa-regular-400.woff2 \
+       src/font-awesome/webfonts/fa-solid-900.ttf \
+       src/font-awesome/webfonts/fa-solid-900.woff2 \
        \
        src/payment-font/fonts/paymentfont-webfont.eot \
        src/payment-font/fonts/paymentfont-webfont.svg \
        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
 
-static_images_DATA = \
+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/apple-touch-icon-152x152-precomposed.png \
@@ -898,12 +1012,40 @@ static_images_DATA = \
        src/static/img/apple-touch-icon-76x76-precomposed.png \
        src/static/img/apple-touch-icon-72x72-precomposed.png \
        src/static/img/apple-touch-icon-60x60-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/lightningwirelabs-logo.svg
+       src/static/img/kyberio-logo.svg \
+       src/static/img/lightningwirelabs-logo.svg \
+       src/static/img/python-logo.svg \
+       src/static/img/tor.svg
+
+static_imgdir = $(staticdir)/img
+
+# From https://www.pexels.com/photo/123-let-s-go-imaginary-text-704767/
 
-static_imagesdir = $(staticdir)/img
+dist_static_img_auth_DATA = \
+       src/static/img/auth/join.jpg
+
+static_img_auth_DATA = \
+       src/static/img/auth/join@600.jpg
+
+CLEANFILES += \
+       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 \
@@ -916,16 +1058,38 @@ static_images_tux_DATA = \
        src/static/img/tux/ipfire_tux_420x420.png \
        src/static/img/tux/ipfire_tux_512x512.png
 
-static_images_tuxdir = $(static_imagesdir)/tux
+static_images_tuxdir = $(static_imgdir)/tux
+
+static_images_DATA = \
+       src/static/images/marker-icon.png \
+       src/static/images/marker-icon-2x.png \
+       src/static/images/marker-shadow.png
+
+static_imagesdir = $(staticdir)/images
+
+EXTRA_DIST += \
+       src/static/videos/firewall.mp4
+
+CLEANFILES += \
+       $(static_videos_DATA)
+
+static_videos_DATA = \
+       src/static/videos/firewall.jpg \
+       src/static/videos/firewall@1920.av1.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
 
 static_js_DATA = \
-       src/bootstrap/dist/js/bootstrap.min.js \
-       src/bootstrap/dist/js/bootstrap.min.js.map \
-       \
-       src/static/js/jquery-3.3.1.min.js \
-       src/static/js/popper.min.js \
-       src/static/js/popper.min.js.map \
+       src/static/js/Control.Geocoder.min.js \
+       src/static/js/editor.js \
+       src/static/js/jquery-3.6.0.min.js \
+       src/static/js/leaflet.min.js \
+       src/static/js/maps.js \
        src/static/js/prettify.js \
+       src/static/js/site.js \
        \
        src/static/js/zxcvbn/dist/zxcvbn.js \
        src/static/js/zxcvbn/dist/zxcvbn.js.map
@@ -944,8 +1108,31 @@ static_netbootdir = $(staticdir)/netboot
 
 # ------------------------------------------------------------------------------
 
+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.org
+       src/crontab/ipfire
 
 # ------------------------------------------------------------------------------
 
@@ -987,15 +1174,11 @@ SED_PROCESS = \
 %: %.in Makefile
        $(SED_PROCESS)
 
-%.css: _%.scss Makefile
-       $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
-               $(SASSC) --style compressed $< > $@
-
-%.css: %.scss Makefile
+%.css: %.sass Makefile
        $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
                $(SASSC) --style compressed $< > $@
 
-src/scss/main.css: $(SCSS_FILES) Makefile
+src/sass/main.css: $(SASS_FILES) Makefile
        $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
                $(SASSC) --style compressed $< > $@
 
@@ -1011,7 +1194,112 @@ src/static/img/apple-touch-icon-%-precomposed.png: src/static/img/ipfire-tux.png
                -extent $(patsubst src/static/img/apple-touch-icon-%-precomposed.png,%,$@)x$(patsubst src/static/img/apple-touch-icon-%-precomposed.png,%,$@) \
                $< $@
 
-# Docker
-.PHONY: docker
-docker: Dockerfile
-       docker build -t "ipfire/webapp:$(PACKAGE_VERSION)" .
+# Resizes images for being used in messages which are 600px wide
+%@600.jpg: %.jpg
+       $(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
+
+# 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
+       $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+       $(FFMPEG) -y \
+               -i $^ \
+               -map_metadata -1 \
+               -an \
+               -c:v libsvtav1 \
+               -b:v 0 \
+               -crf 31 \
+               -strict experimental \
+               -preset 3 \
+               -pix_fmt yuv420p \
+               -movflags +faststart \
+               -vf scale=$(patsubst src/static/videos/firewall@%.av1.mp4,%,$@):-2:flags=lanczos,fps=25 \
+               $(FFMPEG_MT) \
+               $@
+
+# 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 \
+               -b:v 0 \
+               -crf 27 \
+               -preset veryslow \
+               -pix_fmt yuv420p \
+               -movflags +faststart \
+               -tag:v hvc1 \
+               -vf scale=$(patsubst src/static/videos/firewall@%.h265.mp4,%,$@):-2:flags=lanczos,fps=25 \
+               $(FFMPEG_MT) \
+               $@
+
+# H.264
+src/static/videos/firewall@%.h264.mp4: src/static/videos/firewall.mp4
+       $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+       $(FFMPEG) -y \
+               -i $^ \
+               -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: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
+src/static/videos/firewall.jpg: src/static/videos/firewall.mp4
+       $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
+       $(FFMPEG) -y \
+               -i $^ \
+               -map_metadata -1 \
+               -qscale:v 1 \
+               -frames:v 1 \
+               -vf scale=1920:-2 \
+               $@
+
+.PHONY: update
+update:
+       for i in src/systemd/ipfire.org-webapp-*.service; do systemctl restart $$(basename $${i}) && sleep 5; done