mirror of
https://github.com/cunnie/sslip.io.git
synced 2025-10-16 04:30:41 +08:00
114 lines
5.7 KiB
HTML
114 lines
5.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta name="generator" content="HTML Tidy for HTML5 for Apple macOS version 5.8.0">
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<meta name="description" content="">
|
|
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
|
|
<meta name="generator" content="Jekyll v3.8.5">
|
|
<title>k-v.io</title>
|
|
<meta name="description" content="k-v.io">
|
|
<meta name="author" content="Brian Cunnie"><!-- cute Green Lock icon -->
|
|
<link rel="shortcut icon" type="image/x-svg" href="img/favicon.svg"><!-- Latest
|
|
<link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/starter-template/"><!-- Bootstrap core CSS -->
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity=
|
|
"sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
|
<style>
|
|
.bd-placeholder-img {
|
|
font-size: 1.125rem;
|
|
text-anchor: middle;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
@media (min-width: 768px) {
|
|
.bd-placeholder-img-lg {
|
|
font-size: 3.5rem;
|
|
}
|
|
}
|
|
</style><!-- Custom styles for this template -->
|
|
<link href="starter-template.css" rel="stylesheet">
|
|
</head>
|
|
<body>
|
|
<!--
|
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
|
|
<a class="navbar-brand" href="#">k-v.io</a>
|
|
<div class="collapse navbar-collapse" id="navbarsExampleDefault">
|
|
<ul class="navbar-nav mr-auto">
|
|
<li class="nav-item active">
|
|
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="#">Link</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
|
|
</li>
|
|
<li class="nav-item dropdown">
|
|
<a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true"
|
|
aria-expanded="false">Dropdown</a>
|
|
<div class="dropdown-menu" aria-labelledby="dropdown01">
|
|
<a class="dropdown-item" href="#">Action</a> <a class="dropdown-item" href="#">Another action</a> <a class=
|
|
"dropdown-item" href="#">Something else here</a>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
-->
|
|
<main role="main" class="container">
|
|
<div class="starter-template">
|
|
<h1>k-v.io</h1>
|
|
<p>A DNS-based Key-Value Store.</p>
|
|
<h2>Quick Start</h2>
|
|
<p>In the following examples, <i>my-key</i> is the key, and <i>my-value</i> is the value.</p>
|
|
<ul>
|
|
<li>To set a key: <code>dig put.my-value.my-key.k-v.io txt +short</code></li>
|
|
<li>To get a key: <code>dig my-key.k-v.io txt +short</code></li>
|
|
<li>To delete a key: <code>dig delete.my-key.k-v.io txt +short</code></li>
|
|
</ul>
|
|
<p>Notes:</p>
|
|
<ul>
|
|
<li>Values are stored as TXT records.</li>
|
|
<li>Keys must be valid DNS subdomains, i.e. only alphanumerics and dashes, and cannot exceed 63 characters.
|
|
"my-key" is valid, but "my#key" is not.</li>
|
|
<li>Values can be one or more subdomains, i.e. alphanumerics, dashes, and dots. For example, <code>dig
|
|
put.3.14159.pi.k-v.io txt +short</code> sets the the key "pi" to the value "3.14159".</li>
|
|
<li>If you need special characters ("!@#$%^😊"), consider <a href=
|
|
"https://en.wikipedia.org/wiki/Base32">Base32</a> encoding, but remember that the padding character ("=") is
|
|
illegal.
|
|
</li>
|
|
<li>The three verbs are <code>put</code>, <code>get</code>, and <code>delete</code>, e.g. <code>dig
|
|
delete.pi.k-v.io txt +short</code>.</li>
|
|
<li>The verb <code>get</code> is the default verb: <code>dig pi.k-v.io txt +short</code> is identical to
|
|
<code>dig get.pi.k-v.io txt +short</code>.</li>
|
|
<li>When you change or delete a key, it may take up to 3 minutes for the change to propagate due to DNS
|
|
caching.</li>
|
|
<li>There's no security: you may set the key "best-rugby-team" to the value "all-blacks", and someone else
|
|
could change it a minute later to "springboks".</li>
|
|
<li>If you don't want someone to mess with your keys, you should probably use GUIDs or something fairly unique
|
|
as a key, e.g. <code>dig put.my-value.df616686-26e8-4da8-8104-a24aa0196bc7.k-v.io txt +short</code></li>
|
|
<li>There are three servers that back this service: two in the USA, one in Singapore, on different platforms:
|
|
AWS, Azure, and Google Cloud.</li>
|
|
<li>The underlying key-value store is an etcd cluster. I chose etcd for no particular reason other than that's
|
|
what Kubernetes uses.</li>
|
|
<li>I have no idea how well this system will scale.</li>
|
|
<li>I'll probably expire keys that haven't been accessed in a month, but I haven't written that code yet.</li>
|
|
<li>This project is very much in beta. Assume you may lose your keys at any time.</li><code>dig get.pi.k-v.io
|
|
txt +short</code>.
|
|
</ul>
|
|
</div>
|
|
</main><!-- /.container -->
|
|
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity=
|
|
"sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
|
<script>
|
|
window.jQuery || document.write('<script src="/docs/4.3/assets/js/vendor/jquery-slim.min.js"><\/script>')
|
|
</script>
|
|
<script src="/docs/4.3/dist/js/bootstrap.bundle.min.js" integrity=
|
|
"sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o" crossorigin="anonymous"></script>
|
|
</body>
|
|
</html>
|