]> git.ipfire.org Git - ipfire.org.git/commitdiff
downloads: Refactor the page again and add an extra cloud page
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 14 Dec 2023 13:55:36 +0000 (13:55 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 14 Dec 2023 13:55:36 +0000 (13:55 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/static/img/downloads/cloud/aws.svg [new file with mode: 0644]
src/static/img/downloads/cloud/exoscale.svg [new file with mode: 0644]
src/static/img/downloads/cloud/hetzner.svg [new file with mode: 0644]
src/templates/downloads/cloud.html [new file with mode: 0644]
src/templates/downloads/release.html
src/web/__init__.py

index 5cbb9d14c7bf78e73ce9829cdeb24f39637ce41d..3e42ad59b4ee3078f5baf0f426a64c4c3029a62b 100644 (file)
@@ -224,6 +224,7 @@ templates_docs_modules_DATA = \
 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
@@ -986,6 +987,15 @@ CLEANFILES += \
 
 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 \
diff --git a/src/static/img/downloads/cloud/aws.svg b/src/static/img/downloads/cloud/aws.svg
new file mode 100644 (file)
index 0000000..214e141
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   viewBox="0 0 500 500"
+   xml:space="preserve"
+   sodipodi:docname="Amazon_Web_Services_Logo.svg"
+   width="500"
+   height="500"
+   inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"><defs
+   id="defs17" /><sodipodi:namedview
+   id="namedview15"
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1.0"
+   inkscape:pageshadow="2"
+   inkscape:pageopacity="0.0"
+   inkscape:pagecheckerboard="0"
+   showgrid="false"
+   inkscape:zoom="1.0997491"
+   inkscape:cx="260.51398"
+   inkscape:cy="256.87678"
+   inkscape:window-width="1296"
+   inkscape:window-height="789"
+   inkscape:window-x="0"
+   inkscape:window-y="25"
+   inkscape:window-maximized="0"
+   inkscape:current-layer="Layer_1" />
+<style
+   type="text/css"
+   id="style2">
+       .st0{fill:#252F3E;}
+       .st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FF9900;}
+</style>
+<g
+   id="g12"
+   transform="translate(97.996539,159)">
+       <path
+   class="st0"
+   d="m 86.4,66.4 c 0,3.7 0.4,6.7 1.1,8.9 0.8,2.2 1.8,4.6 3.2,7.2 0.5,0.8 0.7,1.6 0.7,2.3 0,1 -0.6,2 -1.9,3 L 83.2,92 c -0.9,0.6 -1.8,0.9 -2.6,0.9 -1,0 -2,-0.5 -3,-1.4 C 76.2,90 75,88.4 74,86.8 73,85.1 72,83.2 70.9,80.9 63.1,90.1 53.3,94.7 41.5,94.7 c -8.4,0 -15.1,-2.4 -20,-7.2 -4.9,-4.8 -7.4,-11.2 -7.4,-19.2 0,-8.5 3,-15.4 9.1,-20.6 6.1,-5.2 14.2,-7.8 24.5,-7.8 3.4,0 6.9,0.3 10.6,0.8 3.7,0.5 7.5,1.3 11.5,2.2 V 35.6 C 69.8,28 68.2,22.7 65.1,19.6 61.9,16.5 56.5,15 48.8,15 c -3.5,0 -7.1,0.4 -10.8,1.3 -3.7,0.9 -7.3,2 -10.8,3.4 -1.6,0.7 -2.8,1.1 -3.5,1.3 -0.7,0.2 -1.2,0.3 -1.6,0.3 -1.4,0 -2.1,-1 -2.1,-3.1 V 13.3 C 20,11.7 20.2,10.5 20.7,9.8 21.2,9.1 22.1,8.4 23.5,7.7 27,5.9 31.2,4.4 36.1,3.2 41,1.9 46.2,1.3 51.7,1.3 63.6,1.3 72.3,4 77.9,9.4 83.4,14.8 86.2,23 86.2,34 V 66.4 Z M 45.8,81.6 c 3.3,0 6.7,-0.6 10.3,-1.8 3.6,-1.2 6.8,-3.4 9.5,-6.4 1.6,-1.9 2.8,-4 3.4,-6.4 0.6,-2.4 1,-5.3 1,-8.7 v -4.2 c -2.9,-0.7 -6,-1.3 -9.2,-1.7 -3.2,-0.4 -6.3,-0.6 -9.4,-0.6 -6.7,0 -11.6,1.3 -14.9,4 -3.3,2.7 -4.9,6.5 -4.9,11.5 0,4.7 1.2,8.2 3.7,10.6 2.4,2.5 5.9,3.7 10.5,3.7 z m 80.3,10.8 c -1.8,0 -3,-0.3 -3.8,-1 -0.8,-0.6 -1.5,-2 -2.1,-3.9 L 96.7,10.2 c -0.6,-2 -0.9,-3.3 -0.9,-4 0,-1.6 0.8,-2.5 2.4,-2.5 h 9.8 c 1.9,0 3.2,0.3 3.9,1 0.8,0.6 1.4,2 2,3.9 l 16.8,66.2 15.6,-66.2 c 0.5,-2 1.1,-3.3 1.9,-3.9 0.8,-0.6 2.2,-1 4,-1 h 8 c 1.9,0 3.2,0.3 4,1 0.8,0.6 1.5,2 1.9,3.9 l 15.8,67 17.3,-67 c 0.6,-2 1.3,-3.3 2,-3.9 0.8,-0.6 2.1,-1 3.9,-1 h 9.3 c 1.6,0 2.5,0.8 2.5,2.5 0,0.5 -0.1,1 -0.2,1.6 -0.1,0.6 -0.3,1.4 -0.7,2.5 l -24.1,77.3 c -0.6,2 -1.3,3.3 -2.1,3.9 -0.8,0.6 -2.1,1 -3.8,1 h -8.6 c -1.9,0 -3.2,-0.3 -4,-1 -0.8,-0.7 -1.5,-2 -1.9,-4 L 156,23 140.6,87.4 c -0.5,2 -1.1,3.3 -1.9,4 -0.8,0.7 -2.2,1 -4,1 z m 128.5,2.7 c -5.2,0 -10.4,-0.6 -15.4,-1.8 -5,-1.2 -8.9,-2.5 -11.5,-4 -1.6,-0.9 -2.7,-1.9 -3.1,-2.8 -0.4,-0.9 -0.6,-1.9 -0.6,-2.8 v -5.1 c 0,-2.1 0.8,-3.1 2.3,-3.1 0.6,0 1.2,0.1 1.8,0.3 0.6,0.2 1.5,0.6 2.5,1 3.4,1.5 7.1,2.7 11,3.5 4,0.8 7.9,1.2 11.9,1.2 6.3,0 11.2,-1.1 14.6,-3.3 3.4,-2.2 5.2,-5.4 5.2,-9.5 0,-2.8 -0.9,-5.1 -2.7,-7 -1.8,-1.9 -5.2,-3.6 -10.1,-5.2 L 246,52 c -7.3,-2.3 -12.7,-5.7 -16,-10.2 -3.3,-4.4 -5,-9.3 -5,-14.5 0,-4.2 0.9,-7.9 2.7,-11.1 1.8,-3.2 4.2,-6 7.2,-8.2 3,-2.3 6.4,-4 10.4,-5.2 4,-1.2 8.2,-1.7 12.6,-1.7 2.2,0 4.5,0.1 6.7,0.4 2.3,0.3 4.4,0.7 6.5,1.1 2,0.5 3.9,1 5.7,1.6 1.8,0.6 3.2,1.2 4.2,1.8 1.4,0.8 2.4,1.6 3,2.5 0.6,0.8 0.9,1.9 0.9,3.3 v 4.7 c 0,2.1 -0.8,3.2 -2.3,3.2 -0.8,0 -2.1,-0.4 -3.8,-1.2 -5.7,-2.6 -12.1,-3.9 -19.2,-3.9 -5.7,0 -10.2,0.9 -13.3,2.8 -3.1,1.9 -4.7,4.8 -4.7,8.9 0,2.8 1,5.2 3,7.1 2,1.9 5.7,3.8 11,5.5 l 14.2,4.5 c 7.2,2.3 12.4,5.5 15.5,9.6 3.1,4.1 4.6,8.8 4.6,14 0,4.3 -0.9,8.2 -2.6,11.6 -1.8,3.4 -4.2,6.4 -7.3,8.8 -3.1,2.5 -6.8,4.3 -11.1,5.6 -4.5,1.4 -9.2,2.1 -14.3,2.1 z"
+   id="path4" />
+       <g
+   id="g10">
+               <path
+   class="st1"
+   d="M 273.5,143.7 C 240.6,168 192.8,180.9 151.7,180.9 94.1,180.9 42.2,159.6 3,124.2 c -3.1,-2.8 -0.3,-6.6 3.4,-4.4 42.4,24.6 94.7,39.5 148.8,39.5 36.5,0 76.6,-7.6 113.5,-23.2 5.5,-2.5 10.2,3.6 4.8,7.6 z"
+   id="path6" />
+               <path
+   class="st1"
+   d="m 287.2,128.1 c -4.2,-5.4 -27.8,-2.6 -38.5,-1.3 -3.2,0.4 -3.7,-2.4 -0.8,-4.5 18.8,-13.2 49.7,-9.4 53.3,-5 3.6,4.5 -1,35.4 -18.6,50.2 -2.7,2.3 -5.3,1.1 -4.1,-1.9 4,-9.9 12.9,-32.2 8.7,-37.5 z"
+   id="path8" />
+       </g>
+</g>
+</svg>
diff --git a/src/static/img/downloads/cloud/exoscale.svg b/src/static/img/downloads/cloud/exoscale.svg
new file mode 100644 (file)
index 0000000..1a35327
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 500.00002 500"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="logo-3.svg"
+   width="500"
+   height="500"
+   inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     id="namedview8"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     width="500px"
+     inkscape:zoom="1.0490268"
+     inkscape:cx="223.54052"
+     inkscape:cy="252.61508"
+     inkscape:window-width="1296"
+     inkscape:window-height="790"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <g
+     id="g14"
+     transform="matrix(1.2483383,0,0,1.2483383,70.925871,200.06647)">
+    <path
+       fill="#da291c"
+       d="M 30,21.9 9.1,58.1 H 12 l 18,-31 v 5.1 L 15,58.1 h 3 L 30,37.4 v 5.2 l -9,15.5 h 3 l 6,-10.3 v 5.1 l -3,5.2 h 23.9 z"
+       id="path2" />
+    <path
+       d="m 59.9,27.1 h 19.2 v 4.1 H 64.5 v 6.7 h 13 V 42 h -13 v 6.9 H 79.3 V 53 H 59.9 Z m 48.7,0 -9,12.6 9.4,13.2 h -5.4 L 96.8,43 90,52.9 H 84.8 L 94.1,39.7 85.1,27 h 5.4 l 6.4,9.3 6.5,-9.3 h 5.2 z m 4.1,13 c 0,-7.4 5.6,-13.4 13.6,-13.4 7.9,0 13.5,6 13.5,13.3 0,7.3 -5.6,13.4 -13.6,13.4 -7.9,0 -13.5,-6 -13.5,-13.3 z m 22.3,0 c 0,-5.1 -3.7,-9.2 -8.8,-9.2 -5.1,0 -8.7,4.1 -8.7,9.1 0,5 3.7,9.2 8.8,9.2 5.1,0 8.7,-4.1 8.7,-9.1 z m 10.4,9.1 2.7,-3.3 c 2.5,2.1 5,3.4 8.2,3.4 2.8,0 4.6,-1.3 4.6,-3.3 v -0.1 c 0,-1.8 -1,-2.8 -5.8,-4 -5.5,-1.3 -8.6,-3 -8.6,-7.7 v -0.1 c 0,-4.4 3.7,-7.5 8.8,-7.5 3.8,0 6.8,1.1 9.4,3.3 l -2.4,3.4 c -2.3,-1.7 -4.7,-2.7 -7,-2.7 -2.7,0 -4.2,1.4 -4.2,3.1 v 0.1 c 0,2 1.2,2.9 6.2,4.1 5.5,1.3 8.3,3.3 8.3,7.6 v 0.1 c 0,4.8 -3.8,7.7 -9.2,7.7 -4.1,0 -7.9,-1.4 -11,-4.1 z m 26.3,-9.1 c 0,-7.4 5.5,-13.4 13.3,-13.4 4.8,0 7.7,1.7 10.2,4 l -2.9,3.4 c -2.1,-1.9 -4.3,-3.2 -7.3,-3.2 -4.9,0 -8.5,4 -8.5,9.1 0,5.1 3.6,9.2 8.5,9.2 3.2,0 5.2,-1.3 7.4,-3.3 l 2.9,3 c -2.7,2.8 -5.7,4.6 -10.5,4.6 -7.5,-0.1 -13.1,-6 -13.1,-13.4 z m 39.7,-13.2 h 4.2 l 11.4,26 h -4.8 l -2.6,-6.2 h -12.2 l -2.7,6.2 H 200 Z m 6.5,15.8 -4.5,-10.3 -4.4,10.3 z m 15.6,-15.6 h 4.5 v 21.7 h 13.6 v 4.1 h -18.1 z m 24.9,0 h 19.2 v 4.1 H 263 v 6.7 h 13 V 42 h -13 v 6.9 h 14.8 V 53 h -19.4 z"
+       id="path4" />
+  </g>
+</svg>
diff --git a/src/static/img/downloads/cloud/hetzner.svg b/src/static/img/downloads/cloud/hetzner.svg
new file mode 100644 (file)
index 0000000..97bf32c
--- /dev/null
@@ -0,0 +1,19 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 181.42 22.24">
+  <defs>
+    <style type="text/css">
+      .cls-1{fill:#d50c2d}
+    </style>
+  </defs>
+  <title>
+    Element 1
+  </title>
+  <g id="Ebene_2">
+           <path class="cls-1" d="M174.05,14.12a10.22,10.22,0,0,0,4.53-2l0,0a6.15,6.15,0,0,0,1.68-4.78,7.71,7.71,0,0,0-1.14-4.06A6.47,6.47,0,0,0,173.84.09l-1.09,0L170.2,0,158.66,0c-.7,0-1,.29-1,1V21.22c0,.7.29,1,1,1h3c.7,0,1-.29,1-1v-6.7h3.67a3.48,3.48,0,0,1,2.17.91l5.82,5.85a3.08,3.08,0,0,0,2,.92h4.47c.7,0,.87-.41.38-.91Zm-.76-4.3H162.64V4.72h10.65a2.13,2.13,0,0,1,1.87,2.15v.79A2.14,2.14,0,0,1,173.29,9.82Z"/>
+          <path class="cls-1" d="M153,17.52H136.47V13.35h13.19c.7,0,1-.29,1-1V9.92c0-.7-.29-1-1-1h-13.2V4.76H153c.7,0,1-.29,1-1V1c0-.7-.29-1-1-1H132.38c-.7,0-1,.29-1,1V21.24c0,.7.29,1,1,1H153c.7,0,1-.29,1-1V18.51C154,17.81,153.67,17.52,153,17.52Z"/>
+          <path class="cls-1" d="M127.73,7.3a7.25,7.25,0,0,0-1.13-4A6.61,6.61,0,0,0,121.24,0L106.08,0c-.71,0-1,.29-1,1V21.22c0,.7.29,1,1,1h3.26c.7,0,1-.28,1-1V4.73l8.78,0c1.87,0,3.69,1.24,3.69,3.11V21.24c0,.7.29,1,1,1h2.95c.71,0,1-.29,1-1Z"/>
+          <path class="cls-1" d="M100.47,17.39l-14.25,0L100.5,4.84a2.57,2.57,0,0,0,1-1.84V1c0-.7-.3-1-1-1H79.83c-.7,0-1,.29-1,1V3.77c0,.7.29,1,1,1H93.08L79.79,17.24a2.62,2.62,0,0,0-1,1.84v2.17c0,.7.29,1,1,1l20.65,0c.7,0,1-.29,1-1V18.38C101.46,17.68,101.17,17.39,100.47,17.39Z"/>
+          <path class="cls-1" d="M74.19,0H53.55c-.71,0-1,.28-1,1V3.76c0,.7.28,1,1,1h7.78V21.24c0,.7.29,1,1,1h3.3c.7,0,1-.29,1-1V4.75h7.57c.7,0,1-.29,1-1V1C75.18.32,74.89,0,74.19,0Z"/>
+          <path class="cls-1" d="M47.91,17.52H31.41V13.35H44.6c.7,0,1-.29,1-1V9.92c0-.7-.28-1-1-1H31.41V4.76h16.5c.7,0,1-.29,1-1V1c0-.7-.29-1-1-1H27.33c-.7,0-1,.29-1,1V21.24c0,.7.29,1,1,1H47.91c.7,0,1-.29,1-1V18.51C48.9,17.81,48.61,17.52,47.91,17.52Z"/>
+          <path class="cls-1" d="M21.63,0H18.52c-.7,0-1,.29-1,1V8.87H5.13V1c0-.7-.29-1-1-1H1C.29,0,0,.29,0,1V21.25c0,.71.29,1,1,1H4.13c.7,0,1-.28,1-1v-8h12.4v8c0,.7.29,1,1,1h3.11c.7,0,1-.29,1-1V1C22.62.32,22.33,0,21.63,0Z"/>
+     </g>
+</svg>
diff --git a/src/templates/downloads/cloud.html b/src/templates/downloads/cloud.html
new file mode 100644 (file)
index 0000000..3bea19f
--- /dev/null
@@ -0,0 +1,170 @@
+{% extends "../base.html" %}
+
+{% block title %}{{ _("Cloud") }}{% end block %}
+
+{% block container %}
+       <section class="hero is-info">
+               <div class="hero-body">
+                       <div class="container">
+                               <nav class="breadcrumb" aria-label="breadcrumbs">
+                                       <ul>
+                                               <li>
+                                                       <a href="/">Home</a>
+                                               </li>
+                                               <li>
+                                                       <a href="/downloads">Downloads</a>
+                                               </li>
+                                               <li class="is-active">
+                                                       <a href="#" aria-current="page">Cloud</a>
+                                               </li>
+                                       </ul>
+                               </nav>
+
+                               <h1 class="title">
+                                       {{ _("Cloud") }}
+                               </h1>
+
+                               <p class="subtitle">
+                                       {{ _("Explore IPFire In The Cloud") }}
+                               </p>
+                       </div>
+               </div>
+       </section>
+
+       <section class="section">
+               <div class="container">
+                       <div class="block">
+                               <div class="content is-size-5">
+                                       <p>
+                                               Unlock the flexibility of IPFire in the cloud by choosing from our
+                                               trusted cloud service providers.
+                                               These partners offer seamless integration and optimal performance for
+                                               hosting IPFire, ensuring robust network security in virtual environments.
+                                       </p>
+
+                                       <p>
+                                               Whether you're a small business, enterprise, or individual user, find
+                                               the right cloud provider to suit your needs.
+                                               Enhance your cybersecurity measures by deploying IPFire in the cloud
+                                               with one of our reliable partners.
+                                       </p>
+                               </div>
+                       </div>
+               </div>
+       </section>
+
+       <section class="section">
+               <div class="container">
+                       <div class="columns is-multiline is-centered is-vcentered">
+                               <div class="column is-one-third">
+                                       <div class="notification">
+                                               <figure class="image is-1by1">
+                                                       <img src="{{ static_url("img/downloads/cloud/aws.svg") }}">
+                                               </figure>
+
+                                               <div class="block">
+                                                       <div class="columns">
+                                                               <div class="column">
+                                                                       <a class="button is-info is-fullwidth" href="https://aws.amazon.com/marketplace/pp/prodview-opiegephkjalm">
+                                                                               {{ _("ARM64") }}
+                                                                       </a>
+                                                               </div>
+
+                                                               <div class="column">
+                                                                       <a class="button is-info is-fullwidth" href="https://aws.amazon.com/marketplace/pp/B07HYRD4FX">
+                                                                               {{ _("x86") }}
+                                                                       </a>
+                                                               </div>
+                                                       </div>
+                                               </div>
+
+                                               <div class="block">
+                                                       <a class="button is-white is-fullwidth" href="/docs/installation/aws">
+                                                               {{ _("Documentation") }}
+                                                       </a>
+                                               </div>
+                                       </div>
+                               </div>
+
+                               <div class="column is-one-third">
+                                       <div class="notification">
+                                               <figure class="image is-1by1">
+                                                       <img src="{{ static_url("img/downloads/cloud/exoscale.svg") }}">
+                                               </figure>
+
+                                               <div class="block">
+                                                       <a class="button is-info is-fullwidth" href="https://www.exoscale.com/marketplace/listing/lwl-ipfire-open-source-firewall-payg/">
+                                                               {{ _("Go To Exoscale") }}
+                                                       </a>
+                                               </div>
+
+                                               <div class="block">
+                                                       <a class="button is-white is-fullwidth" href="/docs/installation/exoscale">
+                                                               {{ _("Documentation") }}
+                                                       </a>
+                                               </div>
+                                       </div>
+                               </div>
+
+                               <div class="column is-one-third">
+                                       <div class="notification">
+                                               <figure class="image is-1by1">
+                                                       <img src="{{ static_url("img/downloads/cloud/hetzner.svg") }}">
+                                               </figure>
+
+                                               <div class="block">
+                                                       <a class="button is-white is-fullwidth" href="/docs/installation/hetzner-cloud">
+                                                               {{ _("Documentation") }}
+                                                       </a>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+       </section>
+
+       <section class="section">
+               <div class="container">
+                       <div class="columns is-centered">
+                               <div class="column is-two-thirds">
+                                       <div class="block">
+                                               <h4 class="title is-4">Why Choose IPFire in the Cloud?</h4>
+
+                                               <ul>
+                                                       <li>
+                                                               <strong>Scalability:</strong>
+                                                               Easily scale your network security infrastructure as your business grows.
+                                                       </li>
+
+                                                       <li>
+                                                               <strong>Flexibility:</strong>
+                                                               Enjoy the flexibility of cloud deployment with the robust security of IPFire.
+                                                       </li>
+
+                                                       <li>
+                                                               <strong>Performance:</strong>
+                                                               Leverage the high-performance capabilities of leading cloud providers for optimal security.
+                                                       </li>
+                                               </ul>
+                                       </div>
+
+                                       <div class="block">
+                                               <h4 class="title is-4">Getting Started</h4>
+
+                                               <div class="content">
+                                                       <p>
+                                                               Explore the offerings of our featured cloud providers and select the one
+                                                               that aligns with your requirements. Follow the integration guides and
+                                                               documentation for a smooth deployment experience.
+                                                       </p>
+
+                                                       <p>
+                                                               Secure your digital assets in the cloud with IPFire!
+                                                       </p>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+       </section>
+{% end block %}
index 9e32e3f3c12460a666caa6d096c76220aab50c35..a3f8e7909940b58b1afd7e633048fba2dbd1d2a5 100644 (file)
                                </nav>
 
                                <h1 class="title">
-                                       {{ _("Download %s") % release }}
+                                       {{ release }}
                                </h1>
 
                                <h6 class="subtitle">
                                        {{ _("Released %s") % locale.format_date(release.published, relative=True, shorter=True) }}
-
-                                       {% if release.blog %}
-                                               &bull;
-                                               <a href="/blog/{{ release.blog.slug }}">{{ _("Release Notes") }}</a>
-                                       {% end %}
                                </h6>
-                       </div>
-               </div>
-       </section>
 
-       <section class="section">
-               <div class="container">
-                       <div class="tile is-ancestor">
-                               {% for arch in release.arches %}
-                                       <div class="tile is-parent">
-                                               <div class="tile is-child notification">
-                                                       <h4 class="title is-4">{{ arch }}</h4>
+                               <div class="columns is-multiline">
+                                       {% for arch in release.arches %}
+                                               <div class="column is-half is-one-quarter-widescreen is-one-fifth-fullhd">
+                                                       <div class="block p-5">
+                                                               <h5 class="title is-5">{{ arch }}</h5>
 
-                                                       <ul>
-                                                               {% for file in release.get_files_by_arch(arch) %}
-                                                                       <li>
-                                                                               <a class="download-splash" href="{{ file.url }}">
-                                                                                       <span class="icon-text">
-                                                                                               <span class="icon">
-                                                                                                       <i class="fas fa-download"></i>
+                                                               <ul>
+                                                                       {% for file in release.get_files_by_arch(arch) %}
+                                                                               <li>
+                                                                                       <a class="download-splash" href="{{ file.url }}">
+                                                                                               <span class="icon-text">
+                                                                                                       <span class="icon">
+                                                                                                               <i class="fas fa-download"></i>
+                                                                                                       </span>
+                                                                                                       <span>
+                                                                                                               {{ _(file.desc) }}
+                                                                                                               ({{ format_size(file.size) }})
+                                                                                                       </span>
                                                                                                </span>
-                                                                                               <span>
-                                                                                                       {{ _(file.desc) }}
-                                                                                                       ({{ format_size(file.size) }})
-                                                                                               </span>
-                                                                                       </span>
-                                                                               </a>
-                                                                       </li>
-                                                               {% end %}
-                                                       </ul>
+                                                                                       </a>
+                                                                               </li>
+                                                                       {% end %}
+                                                               </ul>
+                                                       </div>
                                                </div>
-                                       </div>
-                               {% end %}
+                                       {% end %}
+                               </div>
                        </div>
                </div>
        </section>
 
-       <section class="section">
+       <section class="has-text-white has-background-info">
                <div class="container">
-                       <div class="notification is-lwl p-5">
-                               <div class="block">
-                                       <h3 class="title is-3">{{ _("Running IPFire in the Cloud?") }}</h3>
+                       <p class="has-text-centered px-2 py-1">
+                               {{ _("Deploying IPFire In The Cloud?") }}
 
-                                       <p>
-                                               {{ _("IPFire is now available in the Amazon Cloud.") }}
-                                               {{ _("Create flexible firewall rules and use our Intrusion Detection System to protect your servers in the Cloud.") }}
-                                               {{ _("Connect to them securely using our VPN technologies.") }}
-                                       </p>
-                               </div>
+                               <a class="has-text-white has-text-weight-bold" href="/downloads/cloud">
+                                       {{ _("Read More") }}
+                               </a>
+                       </p>
+               </div>
+       </section>
 
-                               <div class="buttons">
-                                       <a class="button is-white" href="https://aws.amazon.com/marketplace/pp/B07HYRD4FX">
-                                               <span class="icon-text">
-                                                       <span class="icon">
-                                                               <i class="fab fa-aws"></i>
-                                                       </span>
-                                                       <span>{{ _("x86_64") }}</span>
-                                               </span>
-                                       </a>
+       {% if release.blog %}
+               <section class="section">
+                       <div class="container">
+                               <h3 class="title is-3">{{ _("Release Notes") }}</h3>
 
-                                       <a class="button is-white" href="https://aws.amazon.com/marketplace/pp/prodview-opiegephkjalm">
-                                               <span class="icon-text">
-                                                       <span class="icon">
-                                                               <i class="fab fa-aws"></i>
-                                                       </span>
-                                                       <span>{{ _("aarch64") }}</span>
-                                               </span>
-                                       </a>
+                               <div class="content">
+                                       {% raw release.blog.html %}
                                </div>
                        </div>
-               </div>
-       </section>
-
-       <!-- XXX Upgrade instructions -->
+               </section>
+       {% end %}
 {% end block %}
 
 {% block javascript %}
index 5c9b367c7404ac4380ed2bdddb3d23ce76c0b7b9..f642261222ad6dd1aa08b519c091007a548477dd 100644 (file)
@@ -155,6 +155,7 @@ class Application(tornado.web.Application):
 
                        # Downloads
                        (r"/downloads", downloads.IndexHandler),
+                       (r"/downloads/cloud", StaticHandler, { "template" : "../downloads/cloud.html" }),
                        (r"/downloads/mirrors", downloads.MirrorsHandler),
                        (r"/downloads/thank-you", downloads.ThankYouHandler),
                        (r"/downloads/([0-9a-z\-\.]+)", downloads.ReleaseHandler),