forked from 3wordchant/capsul-flask
added FAQ, Changelog, and Support static pages
This commit is contained in:
parent
5d37f26585
commit
7932db90d5
@ -26,11 +26,9 @@ def create_app():
|
|||||||
|
|
||||||
db.init_app(app)
|
db.init_app(app)
|
||||||
|
|
||||||
@app.route("/")
|
from capsulflask import auth, landing, console
|
||||||
def index():
|
|
||||||
return render_template("index.html")
|
|
||||||
|
|
||||||
from capsulflask import auth
|
app.register_blueprint(landing.bp)
|
||||||
|
|
||||||
app.register_blueprint(auth.bp)
|
app.register_blueprint(auth.bp)
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ def login():
|
|||||||
|
|
||||||
if not email:
|
if not email:
|
||||||
error = "email is required"
|
error = "email is required"
|
||||||
elif not re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", email):
|
elif len(email.strip()) < 6 or email.count('@') != 1 or email.count('.') == 0:
|
||||||
error = "enter a valid email address"
|
error = "enter a valid email address"
|
||||||
|
|
||||||
if error is None:
|
if error is None:
|
||||||
|
@ -14,3 +14,18 @@ from capsulflask.db import get_model
|
|||||||
|
|
||||||
bp = Blueprint("landing", __name__, url_prefix="/")
|
bp = Blueprint("landing", __name__, url_prefix="/")
|
||||||
|
|
||||||
|
@bp.route("/")
|
||||||
|
def index():
|
||||||
|
return render_template("index.html")
|
||||||
|
|
||||||
|
@bp.route("/faq")
|
||||||
|
def faq():
|
||||||
|
return render_template("faq.html")
|
||||||
|
|
||||||
|
@bp.route("/changelog")
|
||||||
|
def changelog():
|
||||||
|
return render_template("changelog.html")
|
||||||
|
|
||||||
|
@bp.route("/support")
|
||||||
|
def support():
|
||||||
|
return render_template("support.html")
|
@ -26,18 +26,24 @@ a:hover, a:active, a:visited {
|
|||||||
color: #b5bd68;
|
color: #b5bd68;
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
nav .nav-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
}
|
}
|
||||||
|
nav .nav-row:last-child {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
nav .nav-row:last-child a, nav .nav-row:last-child div {
|
||||||
|
margin: 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
.flash {
|
.flash {
|
||||||
color: rgb(173, 74, 8);
|
color: rgb(173, 74, 8);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 1px dashed rgb(173, 74, 8);
|
border: 1px dashed rgb(173, 74, 8);
|
||||||
border-radius: 2em;
|
border-radius: 0.5em;
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
}
|
}
|
||||||
@ -45,6 +51,7 @@ header {
|
|||||||
main {
|
main {
|
||||||
border: 1px dashed #bdc7b8;
|
border: 1px dashed #bdc7b8;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
margin-bottom: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hero {
|
.hero {
|
||||||
@ -54,7 +61,7 @@ main {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.single-content {
|
.single-content {
|
||||||
margin: 4rem 0;
|
margin: 2rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
form {
|
form {
|
||||||
@ -79,7 +86,7 @@ input {
|
|||||||
input[type=text] {
|
input[type=text] {
|
||||||
font: calc(0.40rem + 1vmin) monospace;
|
font: calc(0.40rem + 1vmin) monospace;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-bottom: 2px solid #777e73;
|
border-bottom: 1px solid #777e73;
|
||||||
min-width: 20em;
|
min-width: 20em;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
@ -100,7 +107,15 @@ h1, h2, h3, h4, h5 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ul li {
|
ul li {
|
||||||
margin-bottom: 1em;
|
margin: 0.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.5em 2em;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
border: 1px solid #777e73;
|
||||||
|
background: #bdc7b810;
|
||||||
}
|
}
|
||||||
|
|
||||||
footer, p {
|
footer, p {
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<nav>
|
||||||
|
<div class="nav-row">
|
||||||
<div>
|
<div>
|
||||||
<a href="/"><b>Capsul</b></a>💊
|
<a href="/"><b>Capsul</b></a>💊
|
||||||
</div>
|
</div>
|
||||||
@ -19,13 +20,20 @@
|
|||||||
<a href="{{ url_for('auth.login') }}">Login</a>
|
<a href="{{ url_for('auth.login') }}">Login</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</div>
|
||||||
|
<div class="nav-row">
|
||||||
|
<a href="/faq">FAQ</a>
|
||||||
|
<a href="/changelog">Changelog</a>
|
||||||
|
<a href="/support">Support</a>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
{% for message in get_flashed_messages() %}
|
{% for message in get_flashed_messages() %}
|
||||||
<div class="flash">{{ message }}</div>
|
<div class="flash">{{ message }}</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<main>
|
<main>
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
</main>
|
</main>
|
||||||
|
{% block subcontent %}{% endblock %}
|
||||||
<footer>
|
<footer>
|
||||||
(c) Attribution-ShareAlike 4.0 International <br/>
|
(c) Attribution-ShareAlike 4.0 International <br/>
|
||||||
A service by Cyberia Computer Club 2020-<span class="bigtext">∞</span> <br/>
|
A service by Cyberia Computer Club 2020-<span class="bigtext">∞</span> <br/>
|
||||||
|
29
capsulflask/templates/changelog.html
Normal file
29
capsulflask/templates/changelog.html
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block title %}Changelog{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="hero">
|
||||||
|
<div class="single-content"><h1>CHANGELOG</h1></div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% block subcontent %}
|
||||||
|
<p>
|
||||||
|
<ul>
|
||||||
|
<li>2020-01-30: Baikal ownership transferred to Cyberia Computer Club</li>
|
||||||
|
<li>2020-01-31: Prepping docs</li>
|
||||||
|
<li>2020-02-26: Re-prepping docs</li>
|
||||||
|
<li>2020-03-07: CVM goes live</li>
|
||||||
|
<li>2020-03-10: CVM name changed to Capsul</li>
|
||||||
|
<li>2020-03-10: Capsul site goes live</li>
|
||||||
|
<li>2020-03-22: Alpine support added</li>
|
||||||
|
<li>2020-03-25: Network limits made public</li>
|
||||||
|
<li>2020-04-17: OpenBSD support added</li>
|
||||||
|
<li>2020-04-26: Support link added</li>
|
||||||
|
<li>2020-05-04: Simplified payment page</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagesource %}/templates/changelog.html{% endblock %}
|
||||||
|
|
147
capsulflask/templates/faq.html
Normal file
147
capsulflask/templates/faq.html
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block title %}FAQ{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="hero">
|
||||||
|
<div class="single-content"><h1>Frequently Asked Questions</h1></div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block subcontent %}
|
||||||
|
<p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Which instance type should I buy?
|
||||||
|
<ul><li>
|
||||||
|
It depends a lot on your requirements, but I can lay down a few guidelines.
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
f1-s
|
||||||
|
<ul>
|
||||||
|
<li> blog </li>
|
||||||
|
<li> vpn </li>
|
||||||
|
<li> bot </li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
f1-m
|
||||||
|
<ul>
|
||||||
|
<li> semi-popular blog </li>
|
||||||
|
<li> complicated webapp </li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
f1-l
|
||||||
|
<ul>
|
||||||
|
<li> big ol docker box? </li>
|
||||||
|
<li> lightweight software builds </li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
f1-x
|
||||||
|
<ul>
|
||||||
|
<li> large webservice with thousands of users </li>
|
||||||
|
<li> rotund java app </li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
f1-xx
|
||||||
|
<ul>
|
||||||
|
<li> gitlab (wow such memory very devops) </li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
f1-xxx
|
||||||
|
<ul>
|
||||||
|
<li> waow big box </li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
How do I log in?
|
||||||
|
<ul><li>
|
||||||
|
<p>ssh to the ip provided to you using the cyberian user.</p>
|
||||||
|
<pre class='code'>$ ssh cyberian@1.2.3.4</pre>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
How do I change to the root user?
|
||||||
|
<ul><li>
|
||||||
|
<p>The cyberian user has passwordless sudo access by default. This should work:</p>
|
||||||
|
<pre class='code'>
|
||||||
|
# Linux
|
||||||
|
$ sudo su -
|
||||||
|
|
||||||
|
# OpenBSD
|
||||||
|
$ doas su -</pre>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Do you offer reverse DNS?
|
||||||
|
<ul><li>
|
||||||
|
<p>We do, but right now it's a manual process. Shoot us an email and we'll get it done.</p>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
What if I don't pay?
|
||||||
|
<ul><li>
|
||||||
|
<p>Your VM will be deleted. You will receive coal.
|
||||||
|
You will be banned from our minetest server.
|
||||||
|
We will attempt to give you ample warning before nuking a server, but that's no guarantee.
|
||||||
|
</p>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Besides my virtual machines and payments, what information do you keep about me?
|
||||||
|
<ul><li>
|
||||||
|
<p>We associate an email address with every VM so that we can track payment and respond to support requests.</p>
|
||||||
|
<p>If you pay with a credit card, Stripe sends some additional details about you that we literally cannot delete.</p>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
What can I do with my VM?
|
||||||
|
<ul><li>
|
||||||
|
<p>Make it into a mailserver, a bitcoin miner, a VPN host, whatever.</p>
|
||||||
|
<p>We place no restrictions on what you can do, as long as it's not illegal. Don't get us in trouble.</p>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Can you recover my passwords/insert new keys?
|
||||||
|
<ul><li>
|
||||||
|
<p>Can we? Technically yes. Will we? Never. It would violate the trust that our customers have in us.
|
||||||
|
We have no interest in touching client VMs after they're running.
|
||||||
|
If you lose access to your VM, that's on you.</p>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Do you offer refunds?
|
||||||
|
<ul><li>
|
||||||
|
<p>Not now.</p>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Do you offer support?
|
||||||
|
<ul><li>
|
||||||
|
<p>Yes. support@cyberia.club</p>
|
||||||
|
<ul>
|
||||||
|
<li>all volunteers have very busy schedules, but we will do our best to respond in a reasonable time period.</li>
|
||||||
|
<li>If you would prefer private support, please send your mail to capsul@cyberia.club instead.</li>
|
||||||
|
</ul>
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Will you implement feature X?
|
||||||
|
<ul><li>
|
||||||
|
Maybe! Email ops@cyberia.club and ask us about it.
|
||||||
|
</li></ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagesource %}/templates/changelog.html{% endblock %}
|
||||||
|
|
@ -13,13 +13,12 @@
|
|||||||
\ /
|
\ /
|
||||||
`"`
|
`"`
|
||||||
</pre>
|
</pre>
|
||||||
|
<span>Simple, fast, private compute by <a href="https://cyberia.club">https://cyberia.club</a></span>
|
||||||
</div>
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block subcontent %}
|
||||||
<p>
|
<p>
|
||||||
Simple, fast, private compute by <a href="https://cyberia.club">https://cyberia.club</a><br/><br/>
|
|
||||||
|
|
||||||
Spin up your choice of virtual machine by sending an email. <br/><br/>
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Simply log in with your email address </li>
|
<li>Simply log in with your email address </li>
|
||||||
<li>All root disks are backed up at no charge</li>
|
<li>All root disks are backed up at no charge</li>
|
||||||
|
30
capsulflask/templates/support.html
Normal file
30
capsulflask/templates/support.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block title %}Support{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="hero">
|
||||||
|
<div class="single-content">
|
||||||
|
<h1>SUPPORT</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="single-content">
|
||||||
|
<a href="mailto:support@cyberia.club?subject=Please%20halp!">Click Here to Email Support</a> (support@cyberia.club)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block subcontent %}
|
||||||
|
<p>
|
||||||
|
Note: We maintain a searchable archive of all support emails at
|
||||||
|
<a href="https://lists.cyberia.club/~cyberia/support">https://lists.cyberia.club/~cyberia/support</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you do not want your mail to appear in a public archive, email capsul@cyberia.club instead.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Please describe your problem or feature request, and we will do our best to get back to you promptly. Thank you very much.
|
||||||
|
</p>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block pagesource %}/templates/support.html{% endblock %}
|
Loading…
Reference in New Issue
Block a user