This commit is contained in:
creme 2019-10-12 20:17:09 +02:00
commit 3e9b7170f3
Signed by: creme
GPG Key ID: C147C3B7FBDF08D0
69 changed files with 6647 additions and 0 deletions

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
*~
user_updates.php
users_info.json
stats/
sysinfo.php
sysinfo.json
*.sublime-project
*.sublime-workspace

13
LICENSE Normal file
View File

@ -0,0 +1,13 @@
Copyright © 2019, Sven Kinne <ennik@envs.net>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

11
README.md Normal file
View File

@ -0,0 +1,11 @@
envs.net is a minimalist, non-commercial
shared unix system and will always be free to use.<br>
<br>
we are linux lovers, sysadmins, programmer and users who like build
webpages, write blogs, chat online, play cool console games and so much
more. you wish to join with an small user space?<br>
join the team today!<br>
<a href="https://envs.net/signup">signup for a envs.net account</a><br>
<br>
inspired by [&#126;team](https://tilde.team/) (tilde.team) and a member of [tildeverse](https://tildeverse.org/).

4
banner.txt Normal file
View File

@ -0,0 +1,4 @@
__
___ ___ _ _____ ___ ___ / /_
/ -_) _ \ |/ (_-<_ / _ \/ -_) __/
\__/_//_/___/___(_)_//_/\__/\__/

116
chat.php Normal file
View File

@ -0,0 +1,116 @@
<?php
$title = "envs.net | irc chat";
$desc = "envs.net | irc chat";
include 'header.php';
?>
<body id="body" class="dark-mode">
<div class="clear" style="min-width: 1280px;">
<div class="button_back">
<pre class="clean"><strong><a href="/">&lt; back</a></strong></pre>
</div>
<div id="main">
<div class="block">
<pre>
<h1><em>irc chat</em></h1>
envs.net does not have its own irc server but we are a member of the <a href="https://tildeverse.org/" target="_blank">tildeverse</a> - irc group.
our channel is <strong>#envs</strong> on <a href="https://tilde.chat/" target="_blank">tilde.chat</a> irc.
&gt; <a href="https://tilde.chat/stats/" target="_blank">channel list and server stats</a>
</pre>
</div>
<pre>
the tilde.chat irc network is available at <code>irc.tilde.chat:6697</code> (with ssl)
as a round robin of <a href="https://tilde.chat/wiki/?page=servers" target="_blank">available nodes</a>.
tilde.chat is meant to be a space for all tilde members to hang out, share, teach, and learn.
Hang out in <strong>#meta</strong> the tilde general channel. =)
<h3>&#35; here are some options to connect</h3>
<ul>
<li><code>weechat</code> (<em>when logged in with ssh</em>)</li>
<li><code>irssi</code> (<em>needs to configure</em>)</li>
<li><code><a href="https://znc.envs.net/" target="_blank">znc</a></code> (<em>log in with your mail password and configure as needed</em>)</li>
<li>run <code>webirc</code> to register your thelounge account for <a href="https://webirc.envs.net/" target="_blank">our webchat</a><br /><em>note that thelounge does not authenticate with your shell/mail password</em></li>
<li>any other client that you like: connect to our node at <code>irc.tilde.chat:6697</code> with ssl</li>
</ul>
<h3>&#35; znc (bouncer)</h3>
the system znc authenticates using your email credantials (<em>user@envs.net</em> | <em>your email pw</em>).
the znc interface is available at <a href="https://znc.envs.net/" target="_blank">znc.envs.net</a>.
client connections are on port <code>6667</code> and <code>6697</code> (both with ssl).
you can add network connections (up to 10) via webadmin or via a direct client connection.
see the <a href="https://wiki.znc.in/Connecting_to_ZNC" target="_blank">znc wiki</a> for more information.
<h3>&#35; weechat relays</h3>
weechat introduced <a href="https://weechat.org/files/doc/stable/weechat_user.en.html#relay_unix_socket" target="_blank">unix socket relays</a> in version 2.5 which is a much easier way to
offer per-user relay access.
<code><em>username.envs.net/weechat</em></code> is configured to proxy to the default unix relay
socket location (<code>~/.weechat/relay_socket</code>). to get started using it, follow these steps:
<ol>
<li>in weechat:</li>
<ul class="sublist">
<li><code>/relay add unix.weechat %h/relay_socket</code></li>
<li><code>/set relay.network.password mysupersecretpassword</code></li>
</ul>
<li>at your shell:</li>
<ul class="sublist">
<li><code>chmod o+rw ~/.weechat/relay_socket</code> - <em>this allows nginx to connect to your socket on your behalf</em></li>
</ul>
<li>in your relay client:</li>
<ul class="sublist">
<li>weechat-android:</li>
<ul class="sublist">
<li>connection type: websocket (ssl)</li>
<li>websocket path: weechat</li>
<li>relay host: username.envs.net</li>
<li>relay port: 443</li>
<li>your relay supersecretpassword</li>
</ul>
</ul>
</ol>
</pre>
</div>
<div id="sidebar">
<div class="block">
<pre>
channel <strong>#envs</strong> on
<code>irc.tilde.chat:6697</code>
</pre>
</div>
<div class="block">
<pre>
<table>
<tr onclick="window.location='https://webirc.envs.net/';">
<td width="25px"><i class="fa fa-commenting-o fa-fw" aria-hidden="true"></i></td> <td><a href="https://webirc.envs.net/">webchat client</a></td>
</tr>
<tr onclick="window.location='https://znc.envs.net/';">
<td><i class="fa fa-compress fa-fw" aria-hidden="true"></i></td> <td><a href="https://znc.envs.net/">znc interface</a></td>
</tr>
</table></pre>
</div>
<div class="block">
<pre>
<h3>rules / guidelines</h3>
<em>please see the <a href="https://tilde.chat/wiki/?page=etiquette" target="_blank">etiquette guide</a>.</em>
<h3>wiki</h3>
<em>see the <a href="https://tilde.chat/wiki/" target="_blank">tilde.chat wiki</a> for
info on bots and other specifics.</em>
</pre>
</div>
</div>
<?php include 'footer.php'; ?>

1
coc.php Symbolic link
View File

@ -0,0 +1 @@
code-of-conduct.php

108
code-of-conduct.php Normal file
View File

@ -0,0 +1,108 @@
<?php
$title = "envs.net | code of conduct";
$desc = "envs.net | code of conduct (coc)";
include 'header.php';
?>
<body id="body" class="dark-mode">
<div>
<div class="button_back">
<pre class="clean"><strong><a href="/">&lt; back</a></strong></pre>
</div>
<div id="main">
<div class="block_head">
<pre>
<h1><em>code of conduct</em></h1>
<strong>tl;dr</strong> learn by doing and helping. be excellent to each other. have fun!
</pre>
</div>
<pre>
<h3 id="purpose">1. purpose</h3>
a primary goal of envs.net is to be inclusive to the largest number of
contributors, with the most varied and diverse backgrounds possible. as such, we
are committed to providing a friendly, safe and welcoming environment for all.
this code of conduct outlines our expectations for all those who participate in
our community, as well as the consequences for unacceptable behavior.
we invite all those who participate in envs.net to help us create safe and
positive experiences for everyone.
<h3 id="envs-mission">2. envs.net mission</h3>
<strong>envs.net exists to foster an engaged community for socializing, learning, and making cool stuff</strong>
in a mass-media age, it is up to small, intentional communities to gather and
work together to provide a space outside of the advertising-laden,
profit-seeking, corporate-owned world of social media.
to that end, envs.net strives to be a radically inclusive community where people
of all backgrounds and all technological experience levels can come together to
learn, to teach, and to delight in one anothers creations.
<h3 id="expected-behavior">3. expected behavior</h3>
the following behaviors are expected and requested of all community members:
<ul>
<li>participate in an authentic and active way. in doing so, you contribute to
the health and longevity of this community. * exercise consideration and respect
in your speech and actions. * attempt collaboration before conflict.</li>
<li>refrain from demeaning, discriminatory, or harassing behavior and speech.</li>
<li>be mindful of your surroundings and of your fellow participants. * teach
when people need help. dont do it for them.</li>
</ul>
<h3 id="unacceptable-behavior">4. unacceptable behavior</h3>
the following behaviors are considered harassment and are unacceptable within our community:
<ul>
<li>violence, threats of violence or violent language directed against another person.</li>
<li>sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.</li>
<li>posting or displaying sexually explicit or violent material.</li>
<li>posting or threatening to post other peoples personally identifying information (“doxing”).</li>
<li>personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.</li>
<li>unwelcome sexual attention. this includes sexualized comments or jokes.</li>
<li>deliberate intimidation, stalking or following.</li>
</ul>
<h3 id="consequences-of-unacceptable-behavior">5. consequences of unacceptable behavior</h3>
unacceptable behavior from any community member, including sponsors and those
with decision-making authority (sudo), will not be tolerated.
anyone asked to stop unacceptable behavior is expected to comply immediately.
if a community member engages in unacceptable behavior, the community organizers
may take any action they deem appropriate, up to and including a temporary ban
or permanent expulsion from envs.net without warning (meaning your account will
be terminated and all user data deleted).
<h3 id="reporting-guidelines">6. reporting guidelines</h3>
if you are subject to or witness unacceptable behavior, or have any other
concerns, please contact an admin (see info below).
additionally, help engaging with law enforcement is available.
<h3 id="addressing-grievances">7. addressing grievances</h3>
if you feel you have been falsely or unfairly accused of violating this code of conduct,
use the contact info below to send a concise description of your grievance.
<h3 id="scope">8. scope</h3>
we expect all envs.net members to abide by this code of conduct while:
<ul>
<li>engaging with other members</li>
<li>publishing content on envs.net</li>
</ul>
<h3 id="contact-info">9. contact info</h3>
envs.net admins:
&gt; you can also send a mail to <a href="mailto:sudoers@envs.net">sudoers@envs.net</a> to make sure we all get it.
<ul>
<li><a href="https://envs.net/~creme/">~creme</a>:</li>
<ul class="sublist">
<li><a href="mailto:creme@envs.net">creme@envs.net</a></li>
<li>on irc <code>/query creme hello</code></li>
</ul>
</ul>
<h3 id="license-and-attribution">10. license and attribution</h3>
this code of conduct is based on <a href="http://citizencodeofconduct.org/" target="_blank">citizencodeofconduct.org</a> and <a href="http://tilde.town/wiki/conduct.html" target="_blank">tilde.town coc</a>
under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank">creative commons attribution-sharealike license</a>.
<h3 id="tos">11. terms of service</h3>
please also see the <a href="/tos/">terms of service</a>.
</pre>
</div>
<?php include 'footer.php'; ?>

319
css/css_style.css Normal file
View File

@ -0,0 +1,319 @@
/*
* envs.net - CSS Style
*
*/
@import url('//fonts.googleapis.com/css?family=Open+Sans|Roboto+Slab');
body, input, select, textarea {
color: #333;
font-family: 'Open Sans', sans-serif;
font-size: 10pt;
line-height: 1.65em;
letter-spacing: -0.015em;
}
body {
background: #f5f5f5;
}
footer {
position: fixed;
bottom: 0;
width: 100%;
padding: 1em;
text-align: center;
background: #f5f5f5;
}
#main {
float: left;
margin: 0 0 2em 4em;
padding-bottom: 2em;
}
#sidebar {
float: right;
padding: 0 2.5em 2.5em 0;
}
a {
outline: none;
border-bottom-color: transparent;
color: #10A0A0;
text-decoration: none;
}
a:hover { border-bottom: dotted 1px; }
summary.menu { outline: none; }
summary.menu:hover {
cursor: pointer;
color: #10A0A0;
}
blockquote {
border-left: solid 4px #e5e5e5;
font-style: italic;
margin: 0;
padding: 0 0 1.5em 4em;
}
code {
font-family: monospace;
background: #e5e5e5;
color: #333;
}
pre {
margin-bottom: 1em;
padding: 0;
}
pre.clean {
margin: 0;
padding: 0;
}
pre.banner {
line-height: 1.2em;
margin-bottom: 1em;
padding: 0;
}
h1, h2, h3, h4, h5, h6 {
display: block;
line-height: 0;
margin-top: 1em;
margin-bottom: -0.4em;
margin-left: 0;
margin-right: 0
}
ol, ul {
margin: 1em 0 -2em 0;
padding: 0 0 0 2.5em;
}
.ol.sublist, ul.sublist {
margin: -1.5em 0 -2em 0;
padding: 0 0 0 2.5em;
}
.ol.clearlist, ul.clearlist {
list-style-type: none;
margin: -1em 0 -3.5em 0;
padding: 0 0 0 0.8em;
}
li {
margin: -1.5em 0 0 0;
padding: 0 0 0 0.2em;
}
table {
border-collapse: collapse;
width: 100%;
}
tr, th, td {
text-align: left;
padding: 0;
}
#table_pkg tbody tr:nth-child(even) {
background: #e5e5e5;
}
form {
margin: 0;
padding: 0;
}
textarea {
padding: 0.3em 1em 0.3em 1em;
border: solid 1px #333;
border-radius: 10px;
}
input {
margin: 0;
padding: 0;
}
input[type=button], input[type=submit], input[type=text] {
background-color: #e5e5e5;
color: #333;
border-radius: 10px;
border: solid 1px #333;
text-decoration: none;
padding: 0.3em 1em 0.3em 1em;
}
input[type=button]:hover, input[type=submit]:hover {
background-color: #211921;
color: #ddd;
}
input[type=file] {
color: #333;
background-color: #f5f5f5;
padding: 0.3em 1em 0.3em 0;
}
button {
border-radius: 10px;
border: none;
text-decoration: none;
background-color: #e5e5e5;
color: #333;
}
button:hover {
background-color: #211921;
color: #FFF5EE;
}
.clean { margin: 0; padding: 0; }
.clear { clear:both; }
.mark { color: #10A0A0; }
.alert {
color: #333;
background: #e5e5e5;
padding: 1em;
}
.block {
border-left: solid 4px #e5e5e5;
margin: 0.8em 0 1em 0;
padding: 0.8em 0 0.8em 4em;
}
.block_head {
border-left: solid 4px #e5e5e5;
margin: 0.8em 0 2em 0;
padding: 0.8em 0 0.8em 4em;
}
.button_back {
float: left;
margin-top: 1em;
margin-left: 0.4em;
position: fixed;
top: 0;
left: 0;
}
/*
* LIGHT MODE
*/
body.light-mode {
background: #f5f5f5;
color: #333;
}
body.light-mode footer {
border-top: solid 2px #e5e5e5;
background: #f5f5f5;
}
body.light-mode blockquote {
border-left: solid 4px #e5e5e5;
}
body.light-mode code {
color: #333;
background: #e5e5e5;
}
body.light-mode #table_pkg tbody tr:nth-child(even) {
background: #e5e5e5;
}
body.light-mode input[type=button], body.light-mode input[type=submit], body.light-mode input[type=text] {
background-color: #e5e5e5;
color: #333;
border: solid 1px #333;
}
body.light-mode input[type=button]:hover, body.light-mode input[type=submit]:hover {
background-color: #211921;
color: #FFF5EE;
}
body.light-mode input[type=file] {
color: #333;
background-color: #f5f5f5;
}
body.light-mode textarea {
background: #e5e5e5;
color: #333;
border: solid 1px #333;
}
body.light-mode button {
background-color: #e5e5e5;
color: #333;
}
body.light-mode button:hover {
background-color: #211921;
color: #FFF5EE;
}
body.light-mode .alert {
color: #333;
background: #e5e5e5;
}
body.light-mode .block, body.light-mode .block_head {
border-left: solid 4px #e5e5e5;
}
/*
* DARK MODE
*/
body.dark-mode {
color: #FFF5EE;
background: #040304;
}
body.dark-mode footer {
border-top: solid 2px #211921;
background: #040304;
}
body.dark-mode blockquote {
border-left: solid 4px #211921;
}
body.dark-mode code {
color: #ddd;
background: #211921;
}
body.dark-mode #table_pkg tbody tr:nth-child(even) {
background: #211921;
}
body.dark-mode input[type=button], body.dark-mode input[type=submit], body.dark-mode input[type=text] {
background-color: #211921;
color: #ddd;
border: solid 1px #ddd;
}
body.dark-mode input[type=button]:hover, body.dark-mode input[type=submit]:hover {
background-color: #e5e5e5;
color: #333;
}
body.dark-mode input[type=file] {
color: #ddd;
background-color: #040304;
}
body.dark-mode textarea {
color: #ddd;
background: #211921;
border: solid 1px #ddd;
}
body.dark-mode button {
background-color: #211921;
color: #ddd;
}
body.dark-mode button:hover {
background-color: #e5e5e5;
color: #333;
}
body.dark-mode .alert {
color: #ddd;
background: #211921;
}
body.dark-mode .block, body.dark-mode .block_head {
border-left: solid 4px #211921;
}

6
css/dracula.css Normal file

File diff suppressed because one or more lines are too long

4
css/font-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

12
css/fork-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
fonts/FontAwesome.otf Normal file

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

9
footer.php Normal file
View File

@ -0,0 +1,9 @@
<!-- FOOTER -->
<footer><pre class="clean"><a href="https://git.envs.net/envs/" target="_blank">source</a> by <a href="/~creme/">&#126;creme</a>&nbsp;&nbsp;&#124;&nbsp;&nbsp;mail: &lt; hostmaster&#64;envs.net &gt;</pre></footer>
<?=$additional_footer ?? ""?>
<?php unset($additional_footer); ?>
</div>
</body>
</html>

16
header.php Normal file
View File

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title><?=$title ?? "envs.net | environments"?></title>
<meta name="description" content="<?=$desc ?? "envs.net | environments for linux lovers"?>" />
<meta name="author" content="Sven Kinne" />
<meta name="robots" content="index, follow">
<meta name="revisit-after" content="7 days">
<meta name="keywords" content="Sven Kinne,env,envs,enviroments,webpage,blog,gopher,forum,bbj,searx,news,feed,rss,atom,collaborative,pad,cryptpad,code,codepad,pastebin,pb,termbin,tb,file,curl,0x0,shorten,shorter,shortener,share,upload,ip,ifconfig,ipconfig,showip,whois,userspace,space,real-time,tiny,minimalist,shared,non-commercial,unix,linux,debian,bash,programmer,hackers,console,hosting" />
<link rel="stylesheet" href="/css/css_style.css" />
<link rel="stylesheet" href="/css/fork-awesome.min.css" />
<?=$additional_head ?? ""?>
<?php unset($title); unset($desc); unset($additional_head); ?>
</head>

1
help Symbolic link
View File

@ -0,0 +1 @@
/var/www/docs/help/site

186
index.php Normal file
View File

@ -0,0 +1,186 @@
<?php
$additional_head = "
<meta http-equiv='refresh' content='60' />
";
$json_file = '/var/www/envs.net/users_info.json';
// date
$date = new DateTime(null, new DateTimeZone('Etc/UTC'));
$datetime = $date->format('l, d. F Y - h:i:s A (e)');
// users
$online_users = str_replace(PHP_EOL, '', shell_exec("online-users"));
$users=array_filter(explode(PHP_EOL, shell_exec("jq -Mr '.data.users|keys[]' $json_file")));
$total_users = count($users);
// server system info
$load = '';
foreach (sys_getloadavg() as $value) { $load .= number_format($value, 2) . " "; } ;
$load = trim($load);
$ds = number_format(disk_total_space("/") / 1073741824, 2);
$ds_free = number_format(disk_free_space("/") / 1073741824, 2);
$ds_used = "$ds" - "$ds_free";
$conntracks = shell_exec("tail -1 /var/log/envs_conntrack.log | awk '{print $2}'");
include 'header.php';
?>
<body id="body" class="dark-mode">
<!-- BODYDIV (closed in footer.php) -->
<div class="clear" style="min-width: 940px;">
<!-- MAIN -->
<div id="main" style="padding-bottom: 4em;">
<pre class="banner">
<?php include 'banner.txt'; ?>
<small><em>environments</em></small>
</pre>
<!-- maintenance info -->
<!--<pre class="alert">
<i class="fa fa-exclamation-triangle fa-fw" aria-hidden="true"></i>&nbsp; maintenance!
</pre>-->
<pre>
<table>
<tr> <td width="130px"><a rel="searx" target="_blank" href="https://searx.envs.net/">searx.envs.net</a></td> <td width="160px">- searx</td> <td width="250px"><em>(privacy-respecting metasearch engine)</em></td> </tr>
<tr> <td><a rel="pad" target="_blank" href="https://pad.envs.net/">pad.envs.net</a></td> <td>- cryptpad</td> <td><em>(collaborative real time editing)</em></td> </tr>
<tr> <td><a rel="0x0" target="_blank" href="https://envs.sh/">envs.sh</a></td> <td>- the null pointer</td> <td><em>(file hosting and url shortener)</em></td> </tr>
<tr> <td><a rel="pb" target="_blank" href="https://pb.envs.net/">pb.envs.net</a></td> <td>- privatebin</td> <td><em>(pastebin service)</em></td> </tr>
<tr> <td><a rel="tb" target="_blank" href="https://tb.envs.net/">tb.envs.net</a></td> <td>- termbin</td> <td><em>(command line pastebin)</em></td> </tr>
<tr> <td><a rel="rss" target="_blank" href="https://rss.envs.net/">rss.envs.net</a></td> <td>- tiny tiny rss</td> <td><em>(news feed reader and aggregator)</em></td> </tr>
<tr> <td><a rel="twtxt" target="_blank" href="https://twtxt.envs.net/">twtxt.envs.net</a></td> <td>- twtxt registry</td> <td><em>(microblogging - more on <a href="https://envs.net/help/blog/#with-twtxt">twtxt</a> help page)</em></td> </tr>
<tr> <td><a rel="ifconfig" target="_blank" href="https://ip.envs.net/">ip.envs.net</a></td> <td>- ip address info</td> <td><em></em></td> </tr>
</table>
</pre>
<!-- ABOUT -->
<pre>
envs.net is a minimalist, non-commercial
shared unix system and will always be free to use.
we are linux lovers, sysadmins, programmer and users who like build
webpages, write blogs, chat online, play cool console games and so much
more. you wish to join with an small user space? send a email
to <a href="mailto:hostmaster@envs.net?subject=signup%20user%20space%20-%20envs.net&body=desired%20username:%20%0A%0A%0Awhat%20interests%20you%20about%20envs.net?%0A%0A%0Assh%20public%20key:%0A%20--paste%20here--%0A" target="_blank">hostmaster&#64;envs.net</a> or use the <a href="/signup/">signup</a> form.
<small><em>inspired by <a href="https://tilde.team/" target="_blank">~team</a> and a member of <a href="https://tildeverse.org/" target="_blank">tildeverse</a>.</em></small>
</pre>
<!-- END ABOUT -->
<!-- SERVER INFO -->
<div class="block">
<pre>
<h4 class="clean"><i class="fa fa-gear fa-fw" aria-hidden="true"></i> SYSTEM INFO</h4>
<table>
<tr><td width="110px">time:</td><td><?=$datetime?></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>os:</td><td>Debian GNU/Linux 10 (buster)</td></tr>
<tr><td>load:</td><td><?=$load?></td></tr>
<tr><td>disk space:</td><td>used: <?=$ds_used?>GB &#124; free: <?=$ds_free?>GB</td></tr>
<tr><td>conntracks:</td><td><?=$conntracks?></td></tr>
</table>
<em>more infos about the system and the installed packages can
you find on the <a href="/sysinfo/">sysinfo page</a>.</em>
</pre>
</div>
<!-- END SERVER INFO -->
</div>
<!-- END MAIN -->
<!-- SIDEBAR -->
<div id="sidebar">
<!-- MENU -->
<div class="block">
<pre>
<table>
<tr onclick="window.location='/chat/';">
<td width="25px"><i class="fa fa-comments-o fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="/chat/">chat</a></strong></td>
</tr>
<tr onclick="window.location='https://mail.envs.net/';">
<td><i class="fa fa-envelope-o fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="https://mail.envs.net/">webmail</a></strong></td>
</tr>
<tr onclick="window.location='https://lists.envs.net/';">
<td><i class="fa fa-bullhorn fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="https://lists.envs.net/">mailing lists</a></strong></td>
</tr>
<tr onclick="window.location='https://bbj.envs.net/';">
<td><i class="fa fa-forumbee fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="https://bbj.envs.net/">forum</a></strong></td>
</tr>
<tr onclick="window.location='https://gopher.envs.net/';">
<td><i class="fa fa-floppy-o fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="https://gopher.envs.net/">gopher</a></strong></td>
</tr>
<tr onclick="window.location='https://tilde.zone/@envs';">
<td><i class="fa fa-mastodon fa-fw" aria-hidden="true"></i></td> <td><strong><a rel="me" target="_top" href="https://tilde.zone/@envs">mastodon</a></strong></td>
</tr>
<tr onclick="window.location='https://keybase.io/team/envs';">
<td><i class="fa fa-keybase fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="https://keybase.io/team/envs">keybase.io</a></strong></td>
</tr>
</table>
<table>
<tr onclick="window.location='https://git.envs.net/envs/';">
<td width="25px"><i class="fa fa-github fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="https://git.envs.net/envs">gitea</a></strong></td>
</tr>
<tr onclick="window.location='/coc/';">
<td><i class="fa fa-sticky-note-o fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="/coc/">code of conduct</a></strong></td>
</tr>
<tr onclick="window.location='/tos/';">
<td><i class="fa fa-handshake-o fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="/tos/">terms of service</a></strong></td>
</tr>
<tr onclick="window.location='/privacy-policy/';">
<td><i class="fa fa-eye fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="/privacy-policy/">privacy policy</a></strong></td>
</tr>
<tr onclick="window.location='/help/';">
<td><i class="fa fa-book fa-fw" aria-hidden="true"></i></td> <td><strong><a target="_top" href="/help/">help</a></strong></td>
</tr>
</table></pre>
</div>
<!-- END MENU -->
<!-- DONATION -->
<div class="block">
<pre>
<em>donate via liberapay</em>
<a href="https://en.liberapay.com/creme/donate" target="_blank" style="border-bottom-color: transparent;"><img alt="Donate using Liberapay" src="https://img.shields.io/liberapay/receives/creme.svg?logo=liberapay"></a>
</pre>
</div>
<!-- END DONATION -->
<!-- USERS -->
<div class="block">
<pre>
<h4 class="clean"><i class="fa fa-users fa-fw" aria-hidden="true"></i> USERS</h4>
<small>online: <?=$online_users?> &#124; total: <?=$total_users?></small>
<table>
<tr onclick="window.location='/users_info.json';">
<td width="20px"><small><i class="fa fa-info-circle fa-fw" aria-hidden="true"></i></small></td> <td><small><a href="/users_info.json">users_info.json</a></small></td>
</tr>
<tr onclick="window.location='/user_updates/';">
<td><small><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i></small></td> <td><small><a href="/user_updates/">recently updates</a></small></td>
</tr>
</table>
<details><summary class="menu">user list</summary><small><i class="fa fa-list fa-fw" aria-hidden="true"></i> <a href="/users/">list all users</a></small>
<ul class="clearlist">
<?php
foreach ($users as $user) {
$user_website = shell_exec("jq -Mr '.data.users.$user.website' $json_file");
if ( ! ctype_space($user_website) ) {
echo "<li><a rel=\"~$user/\" target=\"_blank\" href=\"/~$user\">&#126;$user</a></li>\n";
}
}
?>
</ul>
</details></pre>
</div>
<!-- END USERS -->
</div>
<!-- END SIDEBAR -->
<?php include 'footer.php'; ?>

1
irc.php Symbolic link
View File

@ -0,0 +1 @@
chat.php

51
privacy-policy.php Normal file
View File

@ -0,0 +1,51 @@
<?php
$title = "envs.net | privacy-policy";
$desc = "envs.net | privacy-policy";
include 'header.php';
?>
<body id="body" class="dark-mode">
<div>
<div class="button_back">
<pre class="clean"><strong><a href="/">&lt; back</a></strong></pre>
</div>
<div id="main">
<div class="block">
<pre>
<h1><em>privacy policy</em></h1>
</pre>
</div>
<pre>
envs.net takes privacy seriously and, as such, remains committed
to being in compliance with the GDPR, which took effect june 9, 2019.
<h3>&#35; what data do we collect from you?</h3>
envs.net collects your email address during signup and any IP addresses
you sign in to the system from in accordance with technical requirements.
we also store whatever data you create or maintain in your home directory
from your envs.net account.
<h3>&#35; how long do we retain data?</h3>
your email address is retained only long enough to process your account creation
and notify you of that completion. IPs are retained for a maximum of 30 days.
<h3>&#35; how can i request a copy of my data?</h3>
you can submit a request by email to <a href="mailto:sudoers@envs.net">sudoers&#64;envs.net</a>.
we will provide a copy of all your data that we store within 14 days.
<h3>&#35; how can i request removal of my information?</h3>
your user data is protected by the unix permissions model. by default,
in the sharing nature of a public access unix system, your files are
visible to other users. you may, however, set the access however you like.
contact <a href="mailto:sudoers@envs.net">sudoers&#64;envs.net</a> for any further requests.
</pre>
</div>
<?php include 'footer.php'; ?>

2
robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Allow: /

98
signup-mailer.php Normal file
View File

@ -0,0 +1,98 @@
<?php
function forbidden_name($name) {
$fname = array(
'0x0', 'abuse', 'admin', 'administrator', 'auth', 'autoconfig',
'bbj', 'bitbot', 'broadcasthost', 'cloud', 'dev', 'ennik', 'envs',
'forum', 'ftp', 'git', 'gopher', 'hostmaster', 'imap', 'info', 'irc', 'is',
'isatap', 'it', 'localdomain', 'localhost', 'lounge', 'linux', 'mail',
'mailer-daemon', 'marketing', 'marketting', 'mis', 'news', 'nobody', 'noc',
'noreply', 'pop', 'pop3', 'postmaster', 'radiobot', 'retro', 'root', 'rss',
'sales', 'security', 'services', 'smtp', 'ssladmin', 'ssladministrator',
'sslwebmaster', 'support', 'sven', 'sysadmin', 'team', 'tilde', 'twtxt', 'town',
'usenet', 'uucp', 'unix', 'webmaster', 'wpad', 'www', 'znc',
);
return in_array($name, $fname);
}
$message = '';
if (isset($_REQUEST["username"]) && isset($_REQUEST["email"])) {
$email = $_REQUEST["email"];
$mailTo = 'hostmaster@envs.net';
$mailFrom = "$email";
$mailSubject = 'Signup User Space - envs.net';
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/plain; charset=utf-8';
$headers[] = "From: $mailFrom";
//$headers[] = "Cc: $mailFrom";
$name = trim($_REQUEST["username"]);
if ($name == "")
$message .= "<li>fill in your desired username</li>\n";
if (strlen($name) > 32)
$message .= "<li>username too long (32 character max)</li>\n";
if ($name != "" && strlen($name) < 2)
$message .= "<li>username is too short (2 character min)</li>\n";
if (strlen($name) > 1 && !preg_match('/^[a-z][a-z0-9]{1,31}$/', $name))
$message .= "<li>username contains invalid characters (lowercase only, must start with a letter).</li>\n";
if (posix_getpwnam($name) || forbidden_name($name))
$message .= "<li>sorry, the username $name is unavailable</li>\n";
if ($_REQUEST["sshkey"] == "" || substr($_REQUEST["sshkey"], 0, 4) !== "ssh-")
$message .= "<li>ssh key required: please submit the public key.</li>\n";
if ($_REQUEST["message"] == "")
$message .= "<li>explain why youre interested so we can make sure youre a real human being</li>\n";
if ($email == "")
$message .= "<li>fill in your email address</li>\n";
if ($email != "" && !filter_var($email, FILTER_VALIDATE_EMAIL))
$message .= "<li>Invalid email format</li>\n";
// no validation errors
if ($message == "") {
$sshkey = trim($_REQUEST["sshkey"]);
$makeuser = "/usr/local/bin/envs_user_manage add {$_REQUEST["username"]} {$_REQUEST["email"]} \"{$sshkey}\"";
$msgbody = "
username: {$_REQUEST["username"]}
email: {$_REQUEST["email"]}
reason:
{$_REQUEST["message"]}
$makeuser
";
$mailSent = @mail($mailTo, $mailSubject, $msgbody, implode("\r\n", $headers));
if($mailSent == TRUE) {
file_put_contents("/var/signups", $makeuser.PHP_EOL, FILE_APPEND);
echo '<pre class="alert">
Send your message <big><em>successfully</em></big>!
Please allow up to 24 hours for a response with login instructions!</pre>';
} else {
echo '<pre class="alert">
something went wrong... :(
please send an email to <a href="mailto:hostmaster@envs.net">hostmaster&#64;envs.net</a> with details of what happened.</pre>';
}
} else {
?>
<pre class="alert">
<h3><i class="fa fa-exclamation-triangle fa-fw" aria-hidden="true"></i> please correct the following errors:</h3>
<ul>
<?=$message?>
</ul>
</pre>
<?php
}
}
?>

51
signup.php Normal file
View File

@ -0,0 +1,51 @@
<?php
$title = "envs.net | signup";
$desc = "envs.net | signup";
include 'header.php';
?>
<body id="body" class="dark-mode">
<div>
<div class="button_back">
<pre class="clean"><strong><a href="/">&lt; back</a></strong></pre>
</div>
<div id="main">
<div class="block">
<pre>
<h1><em>Signup</em></h1>
<h2><em>you wanna join - envs.net?</em></h2>
</pre>
</div>
<pre>
fill out this form and i'll get back to you with your account informations.
</pre>
<?php include 'signup-mailer.php'; ?>
<pre><form method="post"><label>desired username:
<input class="form-control" name="username" value="<?=$_REQUEST["username"] ?? ""?>" type="text" maxlength="32" style="width: 300px;"></label>
<label>e-mail for account informations:
<input class="form-control" name="email" value="<?=$_REQUEST["email"] ?? ""?>" type="text" style="width: 300px;"></label>
<label>what interests you about envs.net?
<textarea class="form-control" name="message" cols="80" rows="8"><?=$_REQUEST["message"] ?? ""?></textarea></label>
<label>ssh public key:
<textarea class="form-control" name="sshkey" cols="80" rows="8"><?=$_REQUEST["sshkey"] ?? ""?></textarea></label>
if you don't have a key, don't worry! check out our <a href="https://envs.net/help/help/#ssh" target="blank">help page</a>
to ssh keys and make sure that you only put your pubkey here.
signing up implies that you agree to abide by our <a href="/coc/" target="blank">code of conduct</a>
no drama. be respectful. have fun. we're all trying, and we're all in this together :)
<input class="form-control" type="submit" value="submit">
</form>
</pre>
</div>
<?php include 'footer.php'; ?>

57
terms-of-service.php Normal file
View File

@ -0,0 +1,57 @@
<?php
$title = "envs.net | terms of service";
$desc = "envs.net | terms of service (tos)";
include 'header.php';
?>
<body id="body" class="dark-mode">
<div>
<div class="button_back">
<pre class="clean"><strong><a href="/">&lt; back</a></strong></pre>
</div>
<div id="main">
<div class="block">
<pre>
<h1><em>terms of service</em></h1>
</pre>
</div>
<pre>
the following offences will result in a service ban.
here are some things that we don't allow:
<ul>
<li>anything illegal or harmful</li>
<li>promoting racial, ethnic, religious, political & other forms of bigotry</li>
<li>deliberately defacing the accounts of other users</li>
<li>deliberately trying to disrupt envs.net's server</li>
<li>using envs.net for disrupting other servers</li>
<li>using envs.net to impersonate other websites and businesses for criminal purposes</li>
<li>distributing pornography of any genre and medium (especially child pornography)</li>
<li>distributing content that defames any individual</li>
<li>outgoing net- and portscanning is prohibited on envs.net</li>
<li>hosting your backups</li>
<li>mining cryptocurrencies</li>
</ul>
</pre>
<div class="block">
<pre>
<h1><em>resource usage</em></h1>
</pre>
</div>
<pre>
please make sure to not run anything that would disrupt other users.
there are a few limits set on your accounts:
<ul>
<li>200 process/threads at a time</li>
<li>soft 1024mb/hard 1536mb limit on storage</li>
<li>250mb limit on mailbox storage</li>
</ul>
</pre>
</div>
<?php include 'footer.php'; ?>

1
tos.php Symbolic link
View File

@ -0,0 +1 @@
terms-of-service.php

1
ttbp Symbolic link
View File

@ -0,0 +1 @@
/var/global/ttbp/public_html/

50
users.php Normal file
View File

@ -0,0 +1,50 @@
<?php
$title = "envs.net | users";
$desc = "envs.net | full user list";
$json_file = '/var/www/envs.net/users_info.json';
// users
$online_users = str_replace(PHP_EOL, '', shell_exec("online-users"));
$users=array_filter(explode(PHP_EOL, shell_exec("jq -Mr '.data.users|keys[]' $json_file")));
$total_users = count($users);
include 'header.php';
?>
<body id="body" class="dark-mode">
<div>
<div class="button_back">
<pre class="clean"><strong><a href="/">&lt; back</a></strong></pre>
</div>
<div id="main">
<div class="block">
<pre>
<h1><em>full user list</em></h1>
<small>online: <?=$online_users?> &#124; total: <?=$total_users?></small>
<table>
<tr onclick="window.location='/users_info.json';">
<td><small><i class="fa fa-info-circle fa-fw" aria-hidden="true"></i></small></td> <td><small><a href="/users_info.json">users_info.json</a></small></td>
</tr>
<tr onclick="window.location='/user_updates/';">
<td width="20px"><small><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i></small></td> <td><small><a href="/user_updates/">recently updates</a></small></td>
</tr>
</table></pre>
</div>
<pre>
here's a full list of users (including those who haven't updated their page from the default).
<ul>
<?php
foreach ($users as $user) {
echo "<li><a rel=\"~$user\" target=\"_blank\" href=\"/~$user/\">&#126;$user</a></li>\n";
}
?>
</ul>
</pre>
</div>
<?php include 'footer.php'; ?>