If you can/do not want to share your email for ~vern registration, please contact an admin so we can create one for you without one

&1"'); if (trim($ret) != "(stdin) is not a public key file.") { $ssh = $_POST['ssh']; } else { $ssh_err = "Not a valid SSH public key"; } unset($ret); } else { $ssh_err = "Public key is required"; } if (!empty($_POST['joinreason'])) { $reason = $_POST['joinreason']; } else { $reason_err = "Join reason is required"; } if (empty($username_err . $password0_err . $password1_err . $email_err . $ssh_err . $reason_err)) $success = true; } if (!$success) { ?>

Sign Up

See the wiki page on SSH if you don't know how to generate SSH keys.

* Required field
">

Username: *

Password: *

Password: *

E-mail (We need one so we can contact you) *

SSH public keys (newline separated) *

Why do you want to join? *

What services do you want? (You can always request an account on one later)













By signing up, you agree to the ~vern rules and privacy policy. Thanks for using ~vern.

THE SERVICE IS PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS, AND WE DO NOT GUARANTEE THAT THE SERVICE WILL BE AVAILABLE AT ALL TIMES, NOR THE ACCURACY OF THE SERVICE OR ANY MATERIAL PROVIDED BY THE SERVICE OR ON THE ~VERN WEBSITE. IN NO EVENT SHALL THE ADMINISTRATORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF OR IN CONNECTION WITH THE SERVICE OR THE USE OF OTHER DEALINGS IN THE SERVICE. YOU ARE SOLELY RESPONSIBLE FOR YOUR USE OF THE SERVICE.

Thank you for signing up.

An admin will review your request, and an e-mail will be sent if your registration is successful.

You will be redirected back home in 5 seconds.

"; $message = "Hello Administrators,\nSomeone has requested a membership. Please view the details below and decide if it is worth approving.\n\nSSH keys:\n$ssh\n\nRequested username: $username\nRequested services: Tilde"; if ($use_matrix) $message .= ", Matrix"; if ($use_fedi) $message .= ", Mastodon"; if ($use_git) $message .= ", Gitea"; if ($use_nc) $message .= ", Nextcloud"; if ($use_peertube) $message .= ", PeerTube"; if ($use_jitsi) $message .= ", Jitsi"; if ($use_xmpp) $message .= ", XMPP"; if ($use_xmppo) $message .= ", XMPP Onion"; if ($use_xmppi) $message .= ", XMPP I2P"; $message .= ".\nJoin reason:\n$reason\n\n\nTo accept this request, run this command as root:\n/root/bin/accept $username\nTo deny this request, run this command as root:\n/root/bin/deny $username\n"; $contents = "#!/usr/bin/env -S bash -e\n\n# This is the registration script for $username \n# This script was automatically generated by http://" . $_SERVER['HTTP_HOST'] . htmlspecialchars($_SERVER['PHP_SELF']). "\n\n"; $contents .= '~/bin/mktuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . " <<< " . escapeshellarg($_POST['ssh']) . "\n\n"; if ($use_matrix) $contents .= '~/bin/mkmuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . "\n"; if ($use_fedi) { $pass_file = '/home/' . $username . '/mastodon-pass'; $contents .= 'touch /sshfs' . $pass_file . "\n"; $contents .= 'chmod 600 /sshfs' . $pass_file . "\n"; $contents .= 'ssh 192.168.122.30 chown ' . escapeshellarg($username . ':' . $username) . ' ' . escapeshellarg($pass_file) . "\n"; $contents .= '~/bin/mkfuser ' . escapeshellarg($username) . ' ' . escapeshellarg($email) . ' | tee /sshfs' . escapeshellarg($pass_file) . "\n"; unset($pass_file); } if ($use_git) $contents .= '~/bin/mkguser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . ' ' . escapeshellarg($email) . "\n"; if ($use_nc) $contents .= '~/bin/mknuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . "\n"; if ($use_peertube) $contents .= '~/bin/mkpuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . ' ' . escapeshellarg($email) . "\n"; if ($use_jitsi) $contents .= '~/bin/mkxuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . " jitsi.vern.cc\n"; if ($use_xmpp) $contents .= '~/bin/mkxuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . " vern.cc\n"; if ($use_xmppo) $contents .= '~/bin/mkxuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . " vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion\n"; if ($use_xmppi) $contents .= '~/bin/mkxuser ' . escapeshellarg($username) . ' ' . escapeshellarg($password0) . " verncceu2kgz54wi7r5jatgmx2mqtsh3knxhiy4m5shescuqtqfa.b32.i2p\n"; $contents .= "s-nail -vr 'register@vern.cc' -c cobra@vern.cc -c neopenk@vern.cc -c aryak@vern.cc -s 'Your ~vern account has been created' -M text/plain " . escapeshellarg($email) . " < <(printf 'Hello %s,\\nYour membership request on ~vern has been accepted.\\nYou can now SSH into vern.cc using the public key(s) that you supplied to ~vern.\\nIf you signed up for Mastodon, a randomly generated password for the account will be in ~/mastodon-pass\\n\\nThank you for being a part of ~vern!' " . escapeshellarg($username) . ")\n"; $contents .= "rm -f $0\n"; $contents .= "exit\n\n\n"; $contents .= $reason . "\n"; $filename = "/var/tmp/register/" . $username; $handle = fopen($filename, "w+"); chmod($filename, 0600); unset($filename); fwrite($handle, $contents); fclose($handle); $from = "register@vern.cc"; $headers = "From: " . $from . "\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-type: text/plain\n"; $headers .= "Cc: Skylar \n"; $headers .= "Cc: Arya \n"; $headers .= "Cc: Neo \n"; mail($to, $subject, $message, $headers); } ?>