parcelify
Some checks failed
/ deploy (push) Failing after 1m11s

This commit is contained in:
Minecon724 2024-10-11 11:19:34 +02:00
parent 5351a37dda
commit 2e4d98c3ac
Signed by: Minecon724
GPG key ID: 3CCC4D267742C8E8
28 changed files with 3922 additions and 29943 deletions

View file

@ -1,12 +1,13 @@
on: [] on: [push]
jobs: jobs:
deploy: deploy:
runs-on: docker runs-on: docker
container: python container: node
steps: steps:
- run: git clone https://git.m724.eu/Minecon724/dn42-info . - run: git clone https://git.m724.eu/Minecon724/dn42-info .
- run: pip install -r requirements.txt - run: npm i
- run: python deploy.py - run: npx parcel build src/index.html
- run: chmod +x deploy.sh && ./deploy.sh
env: env:
FTP_SERVER: ${{ secrets.FTP_SERVER }} FTP_SERVER: ${{ secrets.FTP_SERVER }}
FTP_USER: ${{ secrets.FTP_USER }} FTP_USER: ${{ secrets.FTP_USER }}

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
node_modules
dist
.parcel-cache

View file

@ -1,6 +1,5 @@
from ftplib import FTP from ftplib import FTP
import requests import requests
import minify_html
from os import listdir, getenv, chdir from os import listdir, getenv, chdir
from io import BytesIO from io import BytesIO
@ -9,22 +8,15 @@ from io import BytesIO
ftp = FTP(getenv('FTP_SERVER')) ftp = FTP(getenv('FTP_SERVER'))
ftp.login(getenv('FTP_USER'), getenv('FTP_PASSWORD')) ftp.login(getenv('FTP_USER'), getenv('FTP_PASSWORD'))
chdir('html') for f in [i for i in listdir('dist') if i.endswith('.html')]:
content = open(f, 'r').read()
ftp.storbinary('STOR ' + f, BytesIO(content.encode()))
for f in [i for i in listdir() if i.endswith('.html')]: ftp.storbinary('STOR geofeed.csv', BytesIO(open('geofeed.csv', 'r').read().encode()))
# 1. Minify the index.html file using minify-html
minified_content = minify_html.minify(open(f, 'r').read(), minify_css=True, do_not_minify_doctype=True)
# 2. Upload the file to an FTP server
ftp.storbinary('STOR ' + f, BytesIO(minified_content.encode()))
ftp.storbinary('STOR geofeed.csv', BytesIO(open('../geofeed.csv', 'r').read().encode()))
# refresh cache # refresh cache
url = 'https://api.bunny.net/purge?url=https%3A%2F%2Fdn42.724.rocks&async=false' # replace with your URL url = 'https://api.bunny.net/purge?url=https%3A%2F%2Fdn42.m724.eu&async=false' # replace with your URL
headers = { headers = {
'AccessKey': getenv("ACCESS_KEY") 'AccessKey': getenv("ACCESS_KEY")
} }

25
deploy.sh Normal file
View file

@ -0,0 +1,25 @@
#!/bin/bash
# Change to the directory containing the files (assuming it's named 'dist')
cd dist
# Initialize FTP connection
ftp -n << EOF
open $FTP_SERVER
user $FTP_USER $FTP_PASSWORD
# Upload HTML files
for file in *.html; do
put "$file"
done
# Upload geofeed.csv (assuming it's in the parent directory)
cd ..
put geofeed.csv
# Close FTP connection
bye
EOF
# Refresh cache
curl -H "AccessKey: $ACCESS_KEY" "https://api.bunny.net/purge?url=https%3A%2F%2Fdn42.m724.eu&async=false"

View file

@ -1,8 +1,4 @@
172.20.183.89,DE,,Frankfurt, fdfe:8d0:7450:100::/56,NL,,Amsterdam,
172.20.183.90,DE,,Nuremberg,
172.20.183.91,PL,,Warsaw,
172.20.183.93,NL,,Amsterdam,
fdfe:8d0:7450:100::/56,DE,,Frankfurt,
fdfe:8d0:7450:200::/56,DE,,Nuremberg, fdfe:8d0:7450:200::/56,DE,,Nuremberg,
fdfe:8d0:7450:300::/56,PL,,Warsaw, fdfe:8d0:7450:300::/56,PL,,Warsaw,
fdfe:8d0:7450:500::/56,NL,,Amsterdam, fdfe:8d0:7450:400::/56,IT,,Rome,
1 172.20.183.89 fdfe:8d0:7450:100::/56 DE NL Frankfurt Amsterdam
172.20.183.90 DE Nuremberg
172.20.183.91 PL Warsaw
172.20.183.93 NL Amsterdam
fdfe:8d0:7450:100::/56 DE Frankfurt
2 fdfe:8d0:7450:200::/56 fdfe:8d0:7450:200::/56 DE DE Nuremberg Nuremberg
3 fdfe:8d0:7450:300::/56 fdfe:8d0:7450:300::/56 PL PL Warsaw Warsaw
4 fdfe:8d0:7450:500::/56 fdfe:8d0:7450:400::/56 NL IT Amsterdam Rome

View file

@ -1,196 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>dn724</title>
<style>
html {
padding-top: 1.5vh;
}
body {
background: #111;
color: #fff;
font: 1.5em/1.48em Arial, Helvetica, sans-serif;
}
h1, p {
font-weight: 700;
}
p {
font-size: 1.2em;
}
a {
color: #f0e0ff;
text-decoration: none;
border-radius: 20%;
transition: all 20ms ease-out;
}
a:hover {
border-bottom: 1px solid #f0e0ff;
border-radius: 0;
}
#m {
width: min-content;
min-width: 20vw;
max-width: 93vw;
margin: 0 auto;
margin-bottom: 15px;
}
small {
font-weight: 500;
font-size: 0.8em;
margin: 0;
}
li {
padding: 2px 15px;
border-radius: 15px;
transition: background-color .05s ease-out;
}
li[data-nid] {
margin-bottom: 3px;
padding: 5px 13px;
}
li[data-nid]:hover {
background-color: rgb(30,30,30);
}
.big {
width: 100%;
text-align: center;
display: block;
}
.sep {
width: 100%;
height: 1px;
background: rgba(255,255,255,0.1);
margin-top: 15px;
}
.dark {
color: rgba(255,255,255,0.1);
}
li[data-nid]:hover > .hidden > div {
margin-top: 5px;
border-radius: 15px;
opacity: 1;
}
.hidden {
overflow: hidden;
}
.hidden > div {
border-radius: 0 0 15px 15px;
margin-top: -35%;
margin-bottom: 10px;
transition: margin .17s ease, opacity .05s ease-out;
padding: 5px 13px;
font-size: 1.2rem;
line-height: 1.4rem;
background-color: rgb(40,40,40);
opacity: 0;
}
</style>
<div id="m">
<h1>
<span style="color: #ebebeb;">AS424242</span><span>0129</span>
</h1>
open for peering!
<div class="sep"></div>
<p class="big">nodes</p>
<ul>
<li data-nid="de-fra">
Frankfurt, Germany
<br>
<strong>de-fra.420129.xyz</strong>
<br>
dual, 1 Gbps
<div class="hidden">
<div>
<a href="https://bgp.tools/as/213250">AS213250 (Combahton)</a>
<br>
fe80::129:93a8
</div>
</div>
</li>
<li data-nid="de-nue">
Nuremberg, Germany
<br>
<strong>de-nue.420129.xyz</strong>
<br>
dual, 10 Gbps
<div class="hidden">
<div>
<a href="https://bgp.tools/as/206216">AS206216 (Cogent)</a>
<br>
fe80::129:c550
</div>
</div>
</li>
<li data-nid="nl-ams">
Amsterdam, Netherlands
<br>
<strong>nl-ams.420129.xyz</strong>
<br>
dual, ½ Gbps
<div class="hidden">
<div>
<a href="https://bgp.tools/as/31898">AS31898 (Oracle)</a>
<br>
fe80::129:c9db
</div>
</div>
</li>
<li data-nid="nl-ams">
Warsaw, Poland
<br>
<strong>pl-waw.420129.xyz</strong>
<br>
dual, 1 Gbps
<div class="hidden">
<div>
<a href="https://bgp.tools/as/215467">AS215467</a>
<br>
fe80::129:669a
</div>
</div>
</li>
</ul>
<div class="sep"></div>
<p class="big">peering</p>
Requirements:
<ul>
<li>same continent</li>
<li>WireGuard</li>
<li>one peering per region</li>
</ul>
Also:
<ul>
<li>if you require a psk, ask</li>
<li>dig TXT for public keys</li>
<li><a href="https://mxroutedocs.com/troubleshooting/microsoftnoreceive/">if you use outlook, stop</a></li>
</ul>
<div class="sep"></div>
<p class="big">contact</p>
<ul>
<li><a href="mailto:dn42@724.rocks">dn42@724.rocks</a> (<a href="/dn724%20dn42%40724.rocks-(0xCF4D2C93D80C10AC)-public.asc">PGP</a>)</li>
<li>Telegram: <a href="https://t.me/minecon724">@minecon724</a></li>
</ul>
<span class="big"><a href="https://status.inferior.network">Status</a> | <a href="/services.html">Services</a></span>
<small class="big dark">newtork is fast my man</small>
</div>
</html>

View file

@ -1,64 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>dn724</title>
<style>
html {
font-size: large;
}
body {
margin: 0 auto;
width: fit-content;
}
ul {
margin-bottom: 1.4em;
}
p {
line-height: 0.6em;
}
.hostname {
font-weight: bold;
user-select: all;
}
.meta {
color: darkslategray;
user-select: all;
max-width: 200px;
overflow:scroll;
white-space: nowrap;
}
</style>
<h2>AS4242420129</h2>
<p>Open for peering in:</p>
<ul>
<li>Warsaw, Poland</li>
<li>Frankfurt, Germany </li>
<li>Nuremberg, Germany</li>
<li>Netherlands, Amsterdam</li>
<li><a href="https://git.724.rocks/Minecon724/dn42-info/src/branch/master/nodes.md">Details</a></li>
</ul>
<p>Requirements</p>
<ul>
<li>same continent</li>
<li>one peering per node</li>
<li>WireGuard</li>
</ul>
<p>Other</p>
<ul>
<li>Port is last 5 digits of your ASN</li>
<li>If your ASN is not 424242xxxx, <a href="/port-calc.html">use this</a></li>
</ul>
<p>Contact</p>
<ul>
<li><a href="mailto:dn42@724.rocks">dn42@724.rocks</a> <a href="/dn724%20dn42%40724.rocks-(0xCF4D2C93D80C10AC)-public.asc">(PGP)</a></li>
<li>Telegram: <a href="https://t.me/minecon724">@minecon724</a></li>
</ul>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 618 B

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -1,661 +0,0 @@
/* required styles */
.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
position: absolute;
left: 0;
top: 0;
}
.leaflet-container {
overflow: hidden;
}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
-webkit-user-drag: none;
}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
image-rendering: -webkit-optimize-contrast;
}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
width: 1600px;
height: 1600px;
-webkit-transform-origin: 0 0;
}
.leaflet-marker-icon,
.leaflet-marker-shadow {
display: block;
}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg {
max-width: none !important;
max-height: none !important;
}
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
max-width: none !important;
max-height: none !important;
width: auto;
padding: 0;
}
.leaflet-container img.leaflet-tile {
/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
mix-blend-mode: plus-lighter;
}
.leaflet-container.leaflet-touch-zoom {
-ms-touch-action: pan-x pan-y;
touch-action: pan-x pan-y;
}
.leaflet-container.leaflet-touch-drag {
-ms-touch-action: pinch-zoom;
/* Fallback for FF which doesn't support pinch-zoom */
touch-action: none;
touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-ms-touch-action: none;
touch-action: none;
}
.leaflet-container {
-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
filter: inherit;
visibility: hidden;
}
.leaflet-tile-loaded {
visibility: inherit;
}
.leaflet-zoom-box {
width: 0;
height: 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
z-index: 800;
}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
-moz-user-select: none;
}
.leaflet-pane { z-index: 400; }
.leaflet-tile-pane { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane { z-index: 500; }
.leaflet-marker-pane { z-index: 600; }
.leaflet-tooltip-pane { z-index: 650; }
.leaflet-popup-pane { z-index: 700; }
.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg { z-index: 200; }
.leaflet-vml-shape {
width: 1px;
height: 1px;
}
.lvml {
behavior: url(#default#VML);
display: inline-block;
position: absolute;
}
/* control positioning */
.leaflet-control {
position: relative;
z-index: 800;
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
.leaflet-top,
.leaflet-bottom {
position: absolute;
z-index: 1000;
pointer-events: none;
}
.leaflet-top {
top: 0;
}
.leaflet-right {
right: 0;
}
.leaflet-bottom {
bottom: 0;
}
.leaflet-left {
left: 0;
}
.leaflet-control {
float: left;
clear: both;
}
.leaflet-right .leaflet-control {
float: right;
}
.leaflet-top .leaflet-control {
margin-top: 10px;
}
.leaflet-bottom .leaflet-control {
margin-bottom: 10px;
}
.leaflet-left .leaflet-control {
margin-left: 10px;
}
.leaflet-right .leaflet-control {
margin-right: 10px;
}
/* zoom and fade animations */
.leaflet-fade-anim .leaflet-popup {
opacity: 0;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
transition: opacity 0.2s linear;
}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
opacity: 1;
}
.leaflet-zoom-animated {
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
transform-origin: 0 0;
}
svg.leaflet-zoom-animated {
will-change: transform;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
.leaflet-zoom-anim .leaflet-zoom-hide {
visibility: hidden;
}
/* cursors */
.leaflet-interactive {
cursor: pointer;
}
.leaflet-grab {
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: grab;
}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
cursor: crosshair;
}
.leaflet-popup-pane,
.leaflet-control {
cursor: auto;
}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
cursor: move;
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: grabbing;
}
/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
pointer-events: none;
}
.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
/* visual tweaks */
.leaflet-container {
background: #ddd;
outline-offset: 1px;
}
.leaflet-container a {
color: #0078A8;
}
.leaflet-zoom-box {
border: 2px dotted #38f;
background: rgba(255,255,255,0.5);
}
/* general typography */
.leaflet-container {
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
font-size: 12px;
font-size: 0.75rem;
line-height: 1.5;
}
/* general toolbar styles */
.leaflet-bar {
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
border-radius: 4px;
}
.leaflet-bar a {
background-color: #fff;
border-bottom: 1px solid #ccc;
width: 26px;
height: 26px;
line-height: 26px;
display: block;
text-align: center;
text-decoration: none;
color: black;
}
.leaflet-bar a,
.leaflet-control-layers-toggle {
background-position: 50% 50%;
background-repeat: no-repeat;
display: block;
}
.leaflet-bar a:hover,
.leaflet-bar a:focus {
background-color: #f4f4f4;
}
.leaflet-bar a:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.leaflet-bar a:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom: none;
}
.leaflet-bar a.leaflet-disabled {
cursor: default;
background-color: #f4f4f4;
color: #bbb;
}
.leaflet-touch .leaflet-bar a {
width: 30px;
height: 30px;
line-height: 30px;
}
.leaflet-touch .leaflet-bar a:first-child {
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.leaflet-touch .leaflet-bar a:last-child {
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
/* zoom control */
.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px;
}
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
font-size: 22px;
}
/* layers control */
.leaflet-control-layers {
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
background: #fff;
border-radius: 5px;
}
.leaflet-control-layers-toggle {
background-image: url(images/layers.png);
width: 36px;
height: 36px;
}
.leaflet-retina .leaflet-control-layers-toggle {
background-image: url(images/layers-2x.png);
background-size: 26px 26px;
}
.leaflet-touch .leaflet-control-layers-toggle {
width: 44px;
height: 44px;
}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
display: none;
}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
display: block;
position: relative;
}
.leaflet-control-layers-expanded {
padding: 6px 10px 6px 6px;
color: #333;
background: #fff;
}
.leaflet-control-layers-scrollbar {
overflow-y: scroll;
overflow-x: hidden;
padding-right: 5px;
}
.leaflet-control-layers-selector {
margin-top: 2px;
position: relative;
top: 1px;
}
.leaflet-control-layers label {
display: block;
font-size: 13px;
font-size: 1.08333em;
}
.leaflet-control-layers-separator {
height: 0;
border-top: 1px solid #ddd;
margin: 5px -10px 5px -6px;
}
/* Default icon URLs */
.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
background-image: url(images/marker-icon.png);
}
/* attribution and scale controls */
.leaflet-container .leaflet-control-attribution {
background: #fff;
background: rgba(255, 255, 255, 0.8);
margin: 0;
}
.leaflet-control-attribution,
.leaflet-control-scale-line {
padding: 0 5px;
color: #333;
line-height: 1.4;
}
.leaflet-control-attribution a {
text-decoration: none;
}
.leaflet-control-attribution a:hover,
.leaflet-control-attribution a:focus {
text-decoration: underline;
}
.leaflet-attribution-flag {
display: inline !important;
vertical-align: baseline !important;
width: 1em;
height: 0.6669em;
}
.leaflet-left .leaflet-control-scale {
margin-left: 5px;
}
.leaflet-bottom .leaflet-control-scale {
margin-bottom: 5px;
}
.leaflet-control-scale-line {
border: 2px solid #777;
border-top: none;
line-height: 1.1;
padding: 2px 5px 1px;
white-space: nowrap;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: rgba(255, 255, 255, 0.8);
text-shadow: 1px 1px #fff;
}
.leaflet-control-scale-line:not(:first-child) {
border-top: 2px solid #777;
border-bottom: none;
margin-top: -2px;
}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
border-bottom: 2px solid #777;
}
.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
box-shadow: none;
}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
border: 2px solid rgba(0,0,0,0.2);
background-clip: padding-box;
}
/* popup */
.leaflet-popup {
position: absolute;
text-align: center;
margin-bottom: 20px;
}
.leaflet-popup-content-wrapper {
padding: 1px;
text-align: left;
border-radius: 12px;
}
.leaflet-popup-content {
margin: 13px 24px 13px 20px;
line-height: 1.3;
font-size: 13px;
font-size: 1.08333em;
min-height: 1px;
}
.leaflet-popup-content p {
margin: 17px 0;
margin: 1.3em 0;
}
.leaflet-popup-tip-container {
width: 40px;
height: 20px;
position: absolute;
left: 50%;
margin-top: -1px;
margin-left: -20px;
overflow: hidden;
pointer-events: none;
}
.leaflet-popup-tip {
width: 17px;
height: 17px;
padding: 1px;
margin: -10px auto 0;
pointer-events: auto;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
background: white;
color: #333;
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
}
.leaflet-container a.leaflet-popup-close-button {
position: absolute;
top: 0;
right: 0;
border: none;
text-align: center;
width: 24px;
height: 24px;
font: 16px/24px Tahoma, Verdana, sans-serif;
color: #757575;
text-decoration: none;
background: transparent;
}
.leaflet-container a.leaflet-popup-close-button:hover,
.leaflet-container a.leaflet-popup-close-button:focus {
color: #585858;
}
.leaflet-popup-scrolled {
overflow: auto;
}
.leaflet-oldie .leaflet-popup-content-wrapper {
-ms-zoom: 1;
}
.leaflet-oldie .leaflet-popup-tip {
width: 24px;
margin: 0 auto;
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
}
.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
border: 1px solid #999;
}
/* div icon */
.leaflet-div-icon {
background: #fff;
border: 1px solid #666;
}
/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
position: absolute;
padding: 6px;
background-color: #fff;
border: 1px solid #fff;
border-radius: 3px;
color: #222;
white-space: nowrap;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
.leaflet-tooltip.leaflet-interactive {
cursor: pointer;
pointer-events: auto;
}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
position: absolute;
pointer-events: none;
border: 6px solid transparent;
background: transparent;
content: "";
}
/* Directions */
.leaflet-tooltip-bottom {
margin-top: 6px;
}
.leaflet-tooltip-top {
margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
left: 50%;
margin-left: -6px;
}
.leaflet-tooltip-top:before {
bottom: 0;
margin-bottom: -12px;
border-top-color: #fff;
}
.leaflet-tooltip-bottom:before {
top: 0;
margin-top: -12px;
margin-left: -6px;
border-bottom-color: #fff;
}
.leaflet-tooltip-left {
margin-left: -6px;
}
.leaflet-tooltip-right {
margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
top: 50%;
margin-top: -6px;
}
.leaflet-tooltip-left:before {
right: 0;
margin-right: -12px;
border-left-color: #fff;
}
.leaflet-tooltip-right:before {
left: 0;
margin-left: -12px;
border-right-color: #fff;
}
/* Printing */
@media print {
/* Prevent printers from removing background-images of controls. */
.leaflet-control {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,39 +1,33 @@
Port is last 5 digits of your ASN\ Port is last 5 digits of your ASN \
If your ASN is not 424242xxxx, [use this](https://dn42.724.rocks/port-calc.html) If your ASN is not 424242xxxx, [use this](https://dn42.m724.eu/port-calc.html) \
Peering via link local only, addresses are only for pinging \
### Warsaw, Poland All nodes are IPv6 only if not specified
- `pl-waw.420129.xyz` 1 Gbps
- Pingables:
- `172.20.183.91`
- `fdfe:8d0:7450:300::`
- `v854+5m4Diqh8oGo6/sGVS7LELsreIjMujkWqwc6bWo=`
- `fe80::129:669a`
- Hosting: [Skhron](https://skhron.com.ua/aff.php?aff=20)
### Frankfurt, Germany
- `de-fra.420129.xyz` 1 Gbps
- ⚠️ High latency over IPv6
- Pingables:
- `172.20.183.89`
- `fdfe:8d0:7450:100::`
- `u7Pes8qR8m+/4kc4sNTYani90M2MEbaxRsnXKujqik4=`
- `fe80::129:93a8`
- Hosting: [Datalix](https://datalix.de/a/inff)
### Amsterdam, Netherlands ### Amsterdam, Netherlands
- `nl-ams.420129.xyz` ½ Gbps - `nl-ams.420129.xyz` 100 Mbps
- Pingables: - Public key: `iZfLBtF6BiQvdKXx4Yl02u+OL6ls35gSpWCRmB9q4lU=`
- `172.20.183.93` - Link local: `fe80::129:1`
- `fdfe:8d0:7450:500::` - Pingable: `fdfe:8d0:7450:100::`
- `5iGqF1Cs0r7dvHV6Juarb5ZkFDu7Mc2ke1mgQGVbEXU=` - Hosting: [Scaleway](https://www.scaleway.com/en/)
- `fe80::129:c9db`
- Hosting: Oracle
### Nuremberg, Germany ### Nuremberg, Germany
- `de-nue.420129.xyz` 10 Gbps - `de1.420129.xyz` 1 Gbps + v4
- Pingables: - Tunnelled to Frankfurt, +4ms
- `172.20.183.90` - Public key: `N9rGceoiFcc/obnHrqMAmVlrb/E2Br55+doekTKwNF8=`
- `fdfe:8d0:7450:200::` - Link local: `fe80::129:2`
- `lBYpESYKv+3u/d4Van4EzgOngfPLiCTilAatIFT2gXk=` - Pingable: `fdfe:8d0:7450:200::`
- `fe80::129:c550` - Hosting: [Advin](https://clients.advinservers.com/aff.php?aff=323) (US)
- Hosting: [Advin](https://clients.advinservers.com/aff.php?aff=323)
### Warsaw, Poland
- `pl1.420129.xyz` 1 Gbps + v4
- Public key: `v854+5m4Diqh8oGo6/sGVS7LELsreIjMujkWqwc6bWo=`
- Link local: `fe80::129:3`
- Pingable: `fdfe:8d0:7450:300::`
- Hosting: [Skhron](https://skhron.com.ua/aff.php?aff=23)
### Rome, Italy
- `it1.420129.xyz` 500 Mbps
- Public key: `WiHsWwq0TKphHD3PSf8MD9evRiaTRVvldiqvPhKmsVA=`
- Link local: `fe80::129:4`
- Pingable: `fdfe:8d0:7450:400::`
- Hosting: [C1V Hosting](https://www.c1vhosting.it/)

3740
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

8
package.json Normal file
View file

@ -0,0 +1,8 @@
{
"devDependencies": {
"parcel": "^2.12.0"
},
"dependencies": {
"leaflet": "^1.9.4"
}
}

74
src/index.html Normal file
View file

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>dn724</title>
<style>
html {
font-size: large;
}
body {
margin: 0 auto;
max-width: calc(100vw - 40px);
word-wrap: break-word;
width: fit-content;
}
ul {
margin-bottom: 1.4em;
}
p {
line-height: 0.6em;
}
.hostname {
font-weight: bold;
user-select: all;
}
.meta {
color: darkslategray;
user-select: all;
max-width: 200px;
overflow: scroll;
white-space: nowrap;
}
.sel {
user-select: all;
}
</style>
<h2>AS4242420129</h2>
<p>Open for peering in:</p>
<ul>
<li>Warsaw, Poland</li>
<li>Rome. Italy</li>
<li>Nuremberg, Germany</li>
<li>Netherlands, Amsterdam</li>
<li><a href="./map/index.html">Network map</a> (uses thunderforest.com API)</li>
</ul>
<p>Peering requirements</p>
<ul>
<li>sane latency</li>
<li>one peering per one node</li>
<li>WireGuard, link local peering</li>
<li>If your node is not in the same country and you plan on getting one in that country, please don't peer</li>
<li>I can make an exception for you in most cases</li>
</ul>
<p>Other</p>
<ul>
<li><a href="https://git.m724.eu/Minecon724/dn42-info/src/branch/master/nodes.md">Nodes with details</a></li>
<li>Port is last 5 digits of your ASN (2xxx), unless</li>
<li>your ASN is not 424242xxxx, then <a href="port-calc.html">use this</a></li>
</ul>
<p>Contact</p>
<ul>
<li><a class=sel href="mailto:dn42@m724.eu">dn42@m724.eu</a>, <a href="https://lfs.m724.eu/dn724_0x2A78FF14_public.asc">GPG</a></li>
<li>Telegram: <a class=sel href="https://t.me/minecon724">@minecon724</a></li>
<li>Discord: <span class=sel>minecon724</span></li>
<li>Session: <span class=sel>05293535c0f0b5ae76a663f3f875582590edd77abd72ab9b12f3acbe4bb078aa49</span></li>
</ul>
</html>

View file

@ -2,10 +2,10 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="leaflet/leaflet.css" /> <script type=module src="./map.js"></script>
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="./style.css" />
<script src="leaflet/leaflet.js"></script>
<script src="map.js" defer></script> <title>dn724 map</title>
</head> </head>
<body> <body>

View file

@ -1,3 +1,14 @@
import L from 'leaflet';
import 'leaflet/dist/leaflet.css';
delete L.Icon.Default.prototype._getIconUrl;
L.Icon.Default.mergeOptions({
iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
iconUrl: require('leaflet/dist/images/marker-icon.png'),
shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});
var map = L.map('map', { var map = L.map('map', {
minZoom: 5, minZoom: 5,
maxZoom: 10 maxZoom: 10
@ -28,7 +39,7 @@ var nodes = {
city: "Nuremberg, Germany", city: "Nuremberg, Germany",
hostname: "de1.420129.xyz", hostname: "de1.420129.xyz",
datacenter: "hetzner nbg", datacenter: "hetzner nbg",
description: `Tunneled to Frankfurt. If you have a node here at hetzner nuremberg, it will go nbg -> fra -> nbg.`, description: `Tunneled to Frankfurt.\nIf you have a node here at hetzner nuremberg, it will go nbg -> fra -> nbg.`,
publicKey: "N9rGceoiFcc/obnHrqMAmVlrb/E2Br55+doekTKwNF8=", publicKey: "N9rGceoiFcc/obnHrqMAmVlrb/E2Br55+doekTKwNF8=",
linkLocal: "fe80::129:2" linkLocal: "fe80::129:2"
}, },
@ -64,7 +75,7 @@ var opened = null;
const sidebarContent = document.getElementById("sidebarContent"); const sidebarContent = document.getElementById("sidebarContent");
const nodesElement = document.getElementById("nodes"); const nodesElement = document.getElementById("nodes");
sidebarContent.onclick = (ev) => { function dismissPopup(hideMarker) {
if (opened == null) return; if (opened == null) return;
const popup = opened[0]; const popup = opened[0];
@ -79,22 +90,24 @@ sidebarContent.onclick = (ev) => {
sidebarContent.style.backgroundColor = null; sidebarContent.style.backgroundColor = null;
opened = null; opened = null;
map.closePopup(); if (hideMarker) map.closePopup();
setTimeout(() => { setTimeout(() => {
sidebarContent.removeChild(popup); sidebarContent.removeChild(popup);
}, 300); }, 300);
}; };
sidebarContent.onclick = dismissPopup;
function onNodeClick(ev, node, elem) { function onNodeClick(ev, node, elem) {
console.log('b') console.log('b')
if (opened != null) return; if (opened != null) return;
const rect = elem.getBoundingClientRect(); const rect = elem.getBoundingClientRect();
nodesElement.style.opacity = 0; nodesElement.style.opacity = 1;
ele = elem.cloneNode(true); ele = elem.cloneNode(true);
ele.innerHTML += `<br><br>Datacenter: <span class="code">${node.datacenter}</span><br>${node.description.split('\n').slice(1).join('<br>')}`; ele.innerHTML += `<br><br>Datacenter: <span class="code">${node.datacenter}</span><br><br><small>${node.description.split('\n').slice(1).join('<br>')}</small>`;
ele.onclick = (ev) => {ev.stopPropagation()}; ele.onclick = (ev) => {ev.stopPropagation()};
ele.classList.add('selectedNode'); ele.classList.add('selectedNode');
@ -137,3 +150,7 @@ line(nodes.de1.location, de1t, "Tunnel (already included in other labels)<br><st
line(de1t, nodes.pl1.location, "de1 - pl1<br><strong>24ms</strong>"); line(de1t, nodes.pl1.location, "de1 - pl1<br><strong>24ms</strong>");
line(de1t, nodes.nl1.location, "de1 - nl1<br><strong>10ms</strong>"); line(de1t, nodes.nl1.location, "de1 - nl1<br><strong>10ms</strong>");
line(nodes.nl1.location, nodes.it1.location, "it1 - nl1<br><strong>25ms</strong>"); line(nodes.nl1.location, nodes.it1.location, "it1 - nl1<br><strong>25ms</strong>");
map.on("dragstart", function () {
dismissPopup(false);
});

View file

@ -68,16 +68,6 @@ html, body {
} }
#blurThing {
position: absolute;
left: 300px;
width: 20px;
height: 100%;
z-index: 9999;
background: linear-gradient(90deg, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%);
pointer-events: none;
}
#map { #map {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -100,6 +90,10 @@ html, body {
backdrop-filter: blur(5px); backdrop-filter: blur(5px);
} }
.leaflet-control-zoom {
backdrop-filter: blur(5px);
}
.leaflet-control { .leaflet-control {
background: none !important; background: none !important;
color: white; color: white;
@ -109,10 +103,6 @@ html, body {
} }
} }
.leaflet-control-zoom {
backdrop-filter: blur(5px);
}
.leaflet-control-zoom-in, .leaflet-control-zoom-out { .leaflet-control-zoom-in, .leaflet-control-zoom-out {
background: none !important; background: none !important;
} }