valid, more proper markup
This commit is contained in:
parent
e031244f2b
commit
c202885684
@ -1,31 +1,31 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
<head>
|
||||||
<head>
|
<meta charset="utf-8">
|
||||||
<meta charSet="utf-8" />
|
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1">
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1" />
|
|
||||||
<title>local-ip.sh</title>
|
<title>local-ip.sh</title>
|
||||||
<meta name="description" content="local-ip.sh is a magic domain name that provides wildcard DNS for any IP address." />
|
<meta name="description" content="local-ip.sh is a magic domain name that provides wildcard DNS for any IP address.">
|
||||||
<meta name="author" content="Mokhtar Mial" />
|
<meta name="author" content="Mokhtar Mial">
|
||||||
<meta name="robots" content="index,follow" />
|
<meta name="robots" content="index,follow">
|
||||||
<meta name="googlebot" content="index,follow" />
|
<meta name="googlebot" content="index,follow">
|
||||||
<meta property="twitter:title" content="local-ip.sh" />
|
<meta property="twitter:title" content="local-ip.sh">
|
||||||
<meta property="twitter:description" content="local-ip.sh is a magic domain name that provides wildcard DNS for any IP address." />
|
<meta property="twitter:description" content="local-ip.sh is a magic domain name that provides wildcard DNS for any IP address.">
|
||||||
<meta property="twitter:card" content="summary_large_image" />
|
<meta property="twitter:card" content="summary_large_image">
|
||||||
<meta property="twitter:site" content="https://local-ip.sh/" />
|
<meta property="twitter:site" content="https://local-ip.sh/">
|
||||||
<meta property="twitter:image" content="https://local-ip.sh/og.png" />
|
<meta property="twitter:image" content="https://local-ip.sh/og.png">
|
||||||
<meta property="twitter:image:alt" content="og image" />
|
<meta property="twitter:image:alt" content="og image">
|
||||||
<meta property="og:title" content="local-ip.sh" />
|
<meta property="og:title" content="local-ip.sh">
|
||||||
<meta property="og:description" content="local-ip.sh is a magic domain name that provides wildcard DNS for any IP address." />
|
<meta property="og:description" content="local-ip.sh is a magic domain name that provides wildcard DNS for any IP address.">
|
||||||
<meta property="og:url" content="https://local-ip.sh/" />
|
<meta property="og:url" content="https://local-ip.sh/">
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:image" content="https://local-ip.sh/og.png" />
|
<meta property="og:image" content="https://local-ip.sh/og.png">
|
||||||
<meta property="og:image:alt" content="og image" />
|
<meta property="og:image:alt" content="og image">
|
||||||
<link rel="stylesheet" href="/styles.css" />
|
<link rel="stylesheet" href="/styles.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
|
<h1 class="sr-only">local-ip.sh</h1>
|
||||||
<pre>
|
<pre>
|
||||||
_ _ _ _
|
_ _ _ _
|
||||||
| | | | (_) | |
|
| | | | (_) | |
|
||||||
@ -38,42 +38,42 @@
|
|||||||
</pre>
|
</pre>
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main>
|
||||||
<section>
|
<article>
|
||||||
<header><strong>What is local-ip.sh?</strong></header>
|
<h3>What is local-ip.sh?</h3>
|
||||||
<main>
|
<p>
|
||||||
<article>local-ip.sh is a magic domain name that provides wildcard DNS for any IP address. It is heavily
|
local-ip.sh is a magic domain name that provides wildcard DNS for any IP address. It is heavily inspired by
|
||||||
inspired by <a href="http://local-ip.co">local-ip.co</a>, <a
|
<a href="http://local-ip.co">local-ip.co</a>, <a href="https://sslip.io">sslip.io</a>, and <a href="https://xip.io">xip.io</a>.
|
||||||
href="https://sslip.io">sslip.io</a>, and <a href="https://xip.io">xip.io</a>.</article>
|
</p>
|
||||||
<article>Quick example, say your LAN IP address is <strong>192.168.1.10</strong>. Using
|
<p>Quick example, say your LAN IP address is <strong>192.168.1.10</strong>. Using local-ip.sh,</p>
|
||||||
local-ip.sh,<br /><br />
|
<aside>
|
||||||
<pre> <strong>192.168.1.10</strong>.local-ip.sh resolves to 192.168.1.10
|
<p><strong>192-168-1-10</strong>.local-ip.sh resolves to 192.168.1.10</p>
|
||||||
dots.<strong>192.168.1.10</strong>.local-ip.sh resolves to 192.168.1.10
|
<p>dots.<strong>192.168.1.10</strong>.local-ip.sh resolves to 192.168.1.10</p>
|
||||||
dashes.<strong>192-168-1-10</strong>.local-ip.sh resolves to 192.168.1.10</pre>
|
<p>dashes.<strong>192-168-1-10</strong>.local-ip.sh resolves to 192.168.1.10</p>
|
||||||
</article>
|
</aside>
|
||||||
<article>...and so on. You can use these domains to access virtual hosts on your development web server
|
<p>
|
||||||
from devices on your local network. No configuration required!</article>
|
...and so on. You can use these domains to access virtual hosts on your development web server
|
||||||
<article>The best part is, you can serve your content over HTTPS with our TLS certificate for
|
from devices on your local network. No configuration required!
|
||||||
<code>*.local-ip.sh</code>:<ul>
|
</p>
|
||||||
|
<p>The best part is, you can serve your content over HTTPS with our TLS certificate for <code>*.local-ip.sh</code>:</p>
|
||||||
|
<ul>
|
||||||
<li><a href="/server.pem">server.pem</a></li>
|
<li><a href="/server.pem">server.pem</a></li>
|
||||||
<li><a href="/server.key">server.key</a></li>
|
<li><a href="/server.key">server.key</a></li>
|
||||||
</ul>Be aware that wildcard certificates are not recursive, meaning they don't match
|
</ul>
|
||||||
"sub-subdomains". <br />In our case, this certificate will only match subdomains of
|
<p>
|
||||||
|
Be aware that wildcard certificates are not recursive, meaning they don't match
|
||||||
|
"sub-subdomains". <br>In our case, this certificate will only match subdomains of
|
||||||
<code>local-ip.sh</code> such as <code>192-168-1-10.local-ip.sh</code> where dashes separate
|
<code>local-ip.sh</code> such as <code>192-168-1-10.local-ip.sh</code> where dashes separate
|
||||||
the numbers that make up the IP address.</article>
|
the numbers that make up the IP address.
|
||||||
</main>
|
</p>
|
||||||
</section>
|
</article>
|
||||||
<section>
|
|
||||||
<header><strong>How does it work?</strong></header>
|
|
||||||
<main>
|
|
||||||
<article>
|
<article>
|
||||||
local-ip.sh runs publicly a <a href="https://git.capsulecorp.dev/mokhtar/local-ip.sh">custom DNS server</a>.
|
<h3>How does it work?</h3>
|
||||||
|
<p>
|
||||||
|
local-ip.sh runs publicly a <a href="https://github.com/m5r/local-ip.sh">custom DNS server</a>.
|
||||||
When your computer looks up a local-ip.sh domain, the local-ip.sh DNS server resolves to the IP address it extracts from the domain.
|
When your computer looks up a local-ip.sh domain, the local-ip.sh DNS server resolves to the IP address it extracts from the domain.
|
||||||
|
</p>
|
||||||
|
<p>The TLS certificate is obtained from Let's Encrypt and renewed up to a month before it expires.</p>
|
||||||
</article>
|
</article>
|
||||||
<article>
|
|
||||||
The TLS certificate is obtained from Let's Encrypt and renewed up to a month before it expires.
|
|
||||||
</article>
|
|
||||||
</main>
|
|
||||||
</section>
|
|
||||||
</main>
|
</main>
|
||||||
<footer class="copyright">© 2024 <a href="https://www.mokhtar.dev">Mokhtar Mial</a></footer>
|
<footer class="copyright">© 2024 <a href="https://www.mokhtar.dev">Mokhtar Mial</a></footer>
|
||||||
<script>
|
<script>
|
||||||
@ -84,6 +84,5 @@
|
|||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script id="counterscale-script" src="https://counterscale.m5r.workers.dev/tracker.js" defer=""></script>
|
<script id="counterscale-script" src="https://counterscale.m5r.workers.dev/tracker.js" defer=""></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
@ -25,6 +25,11 @@ header {
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
header > pre {
|
header > pre {
|
||||||
margin: 1rem auto;
|
margin: 1rem auto;
|
||||||
}
|
}
|
||||||
@ -39,11 +44,11 @@ main a:hover {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:nth-child(n + 2) {
|
article:nth-child(n + 2) {
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
section > main {
|
article > main {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@ -63,10 +68,20 @@ header span.dim {
|
|||||||
color: #728ea7;
|
color: #728ea7;
|
||||||
}
|
}
|
||||||
|
|
||||||
section strong {
|
article h3,
|
||||||
|
article strong {
|
||||||
color: #7aa6da;
|
color: #7aa6da;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
aside {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
aside > p {
|
||||||
|
margin: 0 5ch 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
margin: 5rem auto 0;
|
margin: 5rem auto 0;
|
||||||
color: #556a7d;
|
color: #556a7d;
|
||||||
@ -80,7 +95,19 @@ footer a:hover {
|
|||||||
color: #728ea7;
|
color: #728ea7;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.cursor {
|
.sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cursor {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background: #111;
|
background: #111;
|
||||||
margin-left: 1px;
|
margin-left: 1px;
|
||||||
|
Loading…
Reference in New Issue
Block a user