Browse Source

feat(webapp): adds anycast world map to home page

Nils Wisiol 5 năm trước cách đây
mục cha
commit
75ab09e10a

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 73 - 0
webapp/src/assets/anycast.worldmap.svg


+ 36 - 0
webapp/src/assets/mapmarker.svg

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   height="1573.7953"
+   width="1061.7953"
+   version="1.1"
+   id="svg3025"
+   viewBox="0 -256 1061.7953 1573.7953">
+  <metadata
+     id="metadata3035">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3033" />
+  <g
+     style="stroke:#ffffff;stroke-width:37.79527664;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="g3027"
+     transform="matrix(1,0,0,-1,18.897638,1170.8976)">
+    <path
+       style="fill:currentColor;stroke:#ffffff;stroke-width:37.79527664;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3029"
+       d="m 768,896 q 0,106 -75,181 -75,75 -181,75 -106,0 -181,-75 -75,-75 -75,-181 0,-106 75,-181 75,-75 181,-75 106,0 181,75 75,75 75,181 z m 256,0 q 0,-109 -33,-179 L 627,-57 q -16,-33 -47.5,-52 -31.5,-19 -67.5,-19 -36,0 -67.5,19 Q 413,-90 398,-57 L 33,717 Q 0,787 0,896 q 0,212 150,362 150,150 362,150 212,0 362,-150 150,-150 150,-362 z" />
+  </g>
+</svg>

+ 168 - 3
webapp/src/views/Home.vue

@@ -74,12 +74,61 @@
         </v-col>
         </v-col>
         <v-col class="col-12 col-sm-10 col-lg-8 py-4 text-center">
         <v-col class="col-12 col-sm-10 col-lg-8 py-4 text-center">
           <a class="primary--text text--darken-2" href="//securesystems.de/">SSE</a> supports us with development staff
           <a class="primary--text text--darken-2" href="//securesystems.de/">SSE</a> supports us with development staff
-          and provides deSEC with our global Anycast networking infrastructure for delivering signed DNS data to the
+          and provides deSEC with global Anycast networking infrastructure for delivering signed DNS data to the
           public. We trust them because creating and auditing security solutions is their daily business.
           public. We trust them because creating and auditing security solutions is their daily business.
         </v-col>
         </v-col>
       </v-row>
       </v-row>
     </v-container>
     </v-container>
   </v-container>
   </v-container>
+  <v-container fluid>
+    <v-container>
+      <v-row align="center" justify="center">
+        <v-card
+          class="mx-auto col-12"
+          color="grey lighten-4"
+        >
+          <v-card-text
+                  class="pt-6"
+                  style="position: relative;"
+          >
+            <h3 class="display-1 mb-2 text--darken-2 grey--text text-center">
+              deSEC Global Anycast Networks
+            </h3>
+            <div class="font-weight-light title mb-2">
+              Global distribution of our frontend servers ensures quick answers to queries, regardless of the user's
+              location on the globe. You can
+              <a :href="'mailto:' + contact_email + '?subject=' + encodeURIComponent(contact_subject) +
+                        '&body=' + encodeURIComponent(contact_body)"
+              >support deSEC</a> by adopting a frontend server to help us cover the cost or adding a frontend server
+              in a corner of the world where there is no frontend yet.
+            </div>
+          </v-card-text>
+          <v-img
+            :src="require('../assets/anycast.worldmap.svg')" alt="World Map of Anycast POPs" contain
+            class="justify-center"
+            style="display: block;"
+          >
+            <v-tooltip bottom v-for="f in frontends" :key="f.host">
+              <template v-slot:activator="{ on }">
+                <v-img
+                  v-on="on"
+                  :src="require('../assets/mapmarker.svg')" alt="Anycast POP" height="2em" width="2em"
+                  :style="{left: f.left, top: f.top}"
+                  style="transform: translate(-50%, -100%); position: absolute; overflow: visible;" contain
+                >
+                </v-img>
+              </template>
+              <span>
+                {{f.name}}
+                <span v-if="f.adopted_by">sponsored by {{f.adopted_by}}</span>
+                <span v-else>has no sponsor, support it now!</span>
+              </span>
+            </v-tooltip>
+          </v-img>
+        </v-card>
+      </v-row>
+    </v-container>
+  </v-container>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -100,6 +149,7 @@
 
 
 <script>
 <script>
 import {email_pattern} from "../validation";
 import {email_pattern} from "../validation";
+import {EMAIL} from '../env';
 
 
 export default {
 export default {
   name: 'home',
   name: 'home',
@@ -111,11 +161,126 @@ export default {
     },
     },
   },
   },
   data: () => ({
   data: () => ({
+    contact_email: EMAIL,
+    contact_subject: 'Adopting of a Frontend Server',
+    contact_body: 'Dear deSEC,\n\nI would like to adopt a frontend server in your networks!',
     email: '',
     email: '',
     email_rules: [
     email_rules: [
       v => !!email_pattern.test(v || '') || 'Invalid email address.'
       v => !!email_pattern.test(v || '') || 'Invalid email address.'
     ],
     ],
     valid: false,
     valid: false,
+    frontends: [
+      {
+        name: 'London (ns2.desec.org)',
+        host: 'lhr-1.b.desec.io',
+        adopted_by: '',
+        left: '45%',
+        top: '20%',
+      },
+      {
+        name: 'Vienna (ns2.desec.org)',
+        host: 'vie-1.b.desec.io',
+        adopted_by: '',
+        left: '50%',
+        top: '24%',
+      },
+      {
+        name: 'Frankfurt (ns1.desec.io)',
+        host: 'fra-1.a.desec.io',
+        adopted_by: 'SSE Secure Systems Engineering',
+        left: '48.5%',
+        top: '23.5%',
+      },
+      {
+        name: 'Amsterdam (ns1.desec.io)',
+        host: 'ams-1.a.desec.io',
+        adopted_by: 'SSE Secure Systems Engineering',
+        left: '47%',
+        top: '22%',
+      },
+
+      {
+        name: 'Los Angeles (ns2.desec.org)',
+        host: 'lax-1.b.desec.io',
+        adopted_by: '',
+        left: '6%',
+        top: '32%',
+      },
+      {
+        name: 'New York (ns2.desec.org)',
+        host: 'nyc-1.b.desec.io',
+        adopted_by: '',
+        left: '22%',
+        top: '29%',
+      },
+      {
+        name: 'Dallas, TX (ns1.desec.io)',
+        host: 'dfw-1.a.desec.io',
+        adopted_by: 'SSE Secure Systems Engineering',
+        left: '13%',
+        top: '34%',
+      },
+
+      {
+        name: 'São Paulo (ns1.desec.io)',
+        host: 'gru-1.a.desec.io',
+        adopted_by: 'SSE Secure Systems Engineering',
+        left: '29.3%',
+        top: '78%',
+      },
+      {
+        name: 'São Paulo (ns2.desec.org)',
+        host: 'gru-1.b.desec.io',
+        adopted_by: '',
+        left: '28.8%',
+        top: '78.5%',
+      },
+      {
+        name: 'Santiago de Chile (ns2.desec.org)',
+        host: 'scl-1.b.desec.io',
+        adopted_by: '',
+        left: '22%',
+        top: '85%',
+      },
+
+      {
+        name: 'Sydney (ns1.desec.io)',
+        host: 'syd-1.a.desec.io',
+        adopted_by: 'SSE Secure Systems Engineering',
+        left: '93%',
+        top: '84%',
+      },
+      {
+        name: 'Sydney (ns2.desec.org)',
+        host: 'syd-1.b.desec.io',
+        adopted_by: '',
+        left: '92.5%',
+        top: '84.5%',
+      },
+
+      {
+        name: 'Singapore (ns2.desec.org)',
+        host: 'sin-1.b.desec.io',
+        adopted_by: '',
+        left: '81%',
+        top: '57.5%',
+      },
+      {
+        name: 'Hong Kong (ns1.desec.io)',
+        host: 'hkg-1.a.desec.io',
+        adopted_by: 'SSE Secure Systems Engineering',
+        left: '84%',
+        top: '43%',
+      },
+
+      {
+        name: 'Johannesburg (ns1.desec.io)',
+        host: 'jnb-1.a.desec.io',
+        adopted_by: 'SSE Secure Systems Engineering',
+        left: '54%',
+        top: '81%',
+      },
+    ],
     features: [
     features: [
       {
       {
         href: '#',
         href: '#',
@@ -161,8 +326,8 @@ export default {
         href: '#',
         href: '#',
         icon: 'mdi-lan',
         icon: 'mdi-lan',
         title: 'Low-latency Anycast',
         title: 'Low-latency Anycast',
-        text: 'We run a global network of 8 high-performance frontend DNS servers (Europe, US, Asia). Your query is '
-              + 'routed to the closest server via Anycast, so clients receive answers as fast as possible.',
+        text: 'We run global networks of high-performance frontend DNS servers located on all continents. Your query '
+              + 'is routed to the closest server via Anycast, so clients receive answers as fast as possible.',
       },
       },
       {
       {
         href: '#',
         href: '#',

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác