about summary refs log tree commit diff stats
path: root/html
diff options
context:
space:
mode:
Diffstat (limited to 'html')
-rw-r--r--html/coc.html115
-rw-r--r--html/faq.html67
-rw-r--r--html/index.html133
-rw-r--r--html/signup.html35
-rwxr-xr-xhtml/stats.php26
-rwxr-xr-xhtml/submit.php144
6 files changed, 520 insertions, 0 deletions
diff --git a/html/coc.html b/html/coc.html
new file mode 100644
index 0000000..63c1b01
--- /dev/null
+++ b/html/coc.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+    <title>tilde.institute :: Code of Conduct</title>
+    {{HEADER}}
+</head>
+
+<body>
+    <div id="container">
+        {{LOGONAV}}
+        <div id="content">
+            <h1>tilde.institute code of conduct</h1>
+            <p><strong>tl;dr</strong>: Be kind to each other. Think carefully about the words you
+                use. Think carefully about what content you post and promote.</p>
+            <h2>1. Purpose</h2>
+            <p>A primary goal of tilde.institute is to be inclusive to the largest number of
+                community members, with the most varied and diverse backgrounds
+                possible. As such, we are committed to providing a friendly, safe and
+                welcoming environment for all, regardless of gender, sexual orientation,
+                ability, ethnicity, socioeconomic status, and religion (or lack
+                thereof).</p>
+            <p>This code of conduct outlines our expectations for all those who
+                participate in our community, as well as the consequences for
+                unacceptable behavior.</p>
+            <p>We invite all those who participate in tilde.institute to help create safe
+                and positive experiences for everyone.</p>
+            <h2>2. Vision of tilde.institute</h2>
+            <p><strong>tilde.institute exists to provide a safe, non-judgemental, and fun place to
+                    explore creative projects and to seek intentional digital community.</strong></p>
+            <p>In a post-facebook age, it is up to small communities to gather and work
+                together to provide a space outside of the advertising-laden, corporate
+                mediated world of social media.</p>
+            <p>To that end, tilde.institute strives to be a radically inclusive community
+                where people of all backgrounds and all technological experience levels
+                can come together for peer education, to delight in one another's
+                creations and to make good conversation.</p>
+            <h2>3. Expected Behavior</h2>
+            <ul>
+                <li>Participate in an authentic and active way. In doing so, you
+                    contribute to the health and longevity of tilde.institute.</li>
+                <li>Exercise consideration and respect in your speech and actions.</li>
+                <li>Attempt collaboration before conflict.</li>
+                <li>Refrain from demeaning, discriminatory, or harassing behavior and
+                    speech.</li>
+                <li>If anyone asks you to stop a particular kind of behavior, always err
+                    on the side of respecting their wishes. If you believe their request
+                    is unreasonable or unfair, ask an admin, but don't respond with
+                    hostility.</li>
+                <li>Be mindful of your surroundings and of your fellow participants.
+                    Alert community leaders if you notice a dangerous situation, someone
+                    in distress, or violations of this code of conduct, even if they
+                    seem inconsequential.</li>
+            </ul>
+            <h2>4. Unacceptable Behavior</h2>
+            <p>Unacceptable behaviors include: intimidating, harassing, abusive,
+                discriminatory, derogatory or demeaning speech or actions by any
+                tilde.institute user online, at any related events, or in one-on-one
+                communication carried out in the conduct of tilde.institute related projects.
+                Community event venues--physical or digital--may be shared with members
+                of the public; please be respectful to all patrons of these locations.</p>
+            <p>Harassment includes: harmful or prejudicial verbal or written comments
+                related to gender, age, sexual orientation, race, religious choices,
+                disability; inappropriate use of nudity and/or sexual images in public
+                spaces (like your \~ html pages); deliberate intimidation, stalking, or
+                following; harassing recording; sustained disruption of the work of
+                others; and unwelcome sexual attention.</p>
+            <h2>5. Consequences of Unacceptable Behavior</h2>
+            <p>Unacceptable behavior from any community member, including those with
+                decision making authority or <code>sudo</code>, will not be tolerated.</p>
+            <p>Anyone asked to stop unacceptable behavior is expected to comply immediately.
+                If a community member engages in unacceptable behavior, the tilde.institute admins
+                may take any action they deem appropriate, up to and including a temporary ban
+                or permanent expulsion from tilde.institute (meaning your user account would be
+                revoked) without warning.</p>
+            <h2>6. If You Witness or Are Subject to Unacceptable Behavior</h2>
+            <p>If you are subject to or witness unacceptable behavior, or have any
+                other concerns, please see the Contact Information section below.</p>
+            <p>Additionally, help engaging with law enforcement is always available.</p>
+            <h2>7. Addressing Grievances</h2>
+            <p>If you feel you have been falsely or unfairly accused of violating this
+                code of conduct, use the Contact Information section below to send a
+                concise description of your grievance.</p>
+            <h2>8. Scope</h2>
+            <p>We expect all tilde.institute members to abide by this code of conduct while:</p>
+            <ul>
+                <li>engaging with other users locally on the server</li>
+                <li>publishing content hosted on tilde.institute</li>
+                <li>engaging in community activities, whether in meatspace or cyberspace</li>
+            </ul>
+            <h2>9. Contact Information</h2>
+            <p>tilde.institute admins:</p>
+            <ul>
+                <li>all admins &#9993; <a href="mailto:admins@tilde.institute">admins@tilde.institute</a></li>
+                <li>gbmor
+                    &#9993; <a href="mailto:gbmor@tilde.institute">gbmor@tilde.institute</a></li>
+                <li>Kneezle
+                    &#9993; <a href="mailto:kneezle@tilde.institute">kneezle@tilde.institute</a></li>
+            </ul>
+            <p>Admins can be reached privately:</p>
+            <ul>
+                <li>on IRC using <code>/msg gbmor hello</code> or <code>/msg kneezle hello</code></li>
+                <li>via e-mail at the private addresses listed above.</li>
+            </ul>
+            <h2>10. License and Attribution</h2>
+            <p>This code of conduct is based on Citizen Code of Conduct
+                <a href="https://github.com/stumpsyn/policies/">github.com/stumpsyn/policies/</a> under the
+                terms of the <a href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
+                    Attribution-ShareAlike
+                    license</a>.</p>
+        </div>
+    </div>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/html/faq.html b/html/faq.html
new file mode 100644
index 0000000..436504d
--- /dev/null
+++ b/html/faq.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+	<title>tilde.institute :: FAQ</title>
+	{{HEADER}}
+</head>
+
+<body>
+	<div id="container">
+		{{LOGONAV}}
+		<div id="content" class="faq">
+			<h1>FAQ</h1>
+
+			<p class="q">How do I change my interactive shell?</p>
+			<p>Once you've logged in, check the path for your desired shell with</p>
+			<div class="code">$ which fish</div>
+			<p>Replacing <code>fish</code> with the the shell you want. In this case, the path will be
+				<code>/usr/local/bin/fish</code>
+				Now, run:</p>
+			<div class="code">$ EDITOR=nano chsh</div>
+			<p>Change the <code>Shell</code> line to read:</p>
+			<div class="code">Shell: /usr/local/bin/fish</div>
+			<p>Save and exit. You'll need to log out then back in.</p>
+
+			<p class="q">How do I change the index page of my site?</p>
+			<p>Because of the way <code>httpd(8)</code> is set up, you'll need to ask in <code>#institute</code> or send
+				an email to <code>admins@tilde.institute</code></p>
+
+			<p class="q">Can you install this package for me?</p>
+			<p>As long as it's in the OpenBSD ports tree, and doesn't facilitate any potentially malicious behavior
+				(like <code>nmap</code>),
+				then it's probably not a big deal. Either hop on IRC and ask in <code>#institute</code> or send an email
+				to <code>admins@tilde.institute</code></p>
+
+			<p class="q">How do I authenticate with SMTP remotely?</p>
+			<p>Only local access to SMTP is allowed. However, you can use an SSH tunnel on your machine to send mail.
+			</p>
+			<div class="code">ssh -nNTL 25:localhost:25 tilde.institute</div>
+			<p>You won't need to supply a username or password when sending mail via <code>localhost:25</code> this way,
+				since you're already authenticated via SSH.</p>
+
+			<p class="q">Can you whitelist a port for me in the firewall?</p>
+			<p>Sorry, but this presents too much of a security risk on a public-access system.</p>
+
+			<p class="q">Are user services allowed?</p>
+			<p>Generally, yes. If you're running something that's using a ton of resources or in some way affecting
+				other users or the general use of the system,
+				then we'll kill it. Just be aware of what you're running and how it may affect the system and other
+				users.</p>
+
+			<p class="q">Are IRC bots allowed?</p>
+			<p>Yes, though there are restrictions on their use on the <code>tilde.chat</code> IRC network. They should
+				not reside in <code>#meta</code>, instead keep
+				them in a private channel or in <code>#bots</code>. Bots must also conform to the <a
+					href="https://tildegit.org/tildeverse/rfcs/src/branch/master/rfcs/rfc2.md">bot guidelines listed
+					here</a>.</p>
+			<p>Don't run <code>eggdrop</code> from tilde.institute. There are legitimate uses for <code>eggdrop</code>,
+				but separating the people with some kind
+				of legitimate use from malicious users is tiring. So, no <code>eggdrop</code>.</p>
+			<br />
+			<br />
+		</div>
+	</div>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/html/index.html b/html/index.html
new file mode 100644
index 0000000..b37ed4e
--- /dev/null
+++ b/html/index.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC
+  "-//W3C//DTD XHTML 1.1//EN"
+  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+    <title>tilde.institute :: Public-access OpenBSD system</title>
+    {{HEADER}}
+</head>
+
+<body>
+    <div id="container">
+	{{LOGONAV}}
+        <div id="front-content">
+            <p>Welcome to tilde.institute, a public-access UNIX system running OpenBSD. This is a space for people to
+                explore the OpenBSD operating system, in addition to exploring the more social
+		aspects of a multi-user UNIX system. Gopher and web space, IRC, games, and more are available!</p>
+            <p>User sites are accessible via <code>https://&lt;user&gt;.tilde.institute</code></p>
+            <p style="margin-top:-1.0rem">A list of user gopherholes is available at
+                <code>gopher://tilde.institute</code></p>
+            <p style="margin-top:-1.0rem">User git repositories are at <code><a href="https://git.tilde.institute">
+                https://git.tilde.institute</a></code></p>
+            <p>The mailing list will be the primary means of communication between tilde.institute admins and users
+                regarding announcements and critical issues. Web archive and <a
+                    href="https://lists.tildeverse.org/postorius/lists/institute.lists.tildeverse.org/">subscribing
+                    information available here</a>.</p>
+            <p>The following services run directly on the server:</p>
+            <ul>
+                <li><code>cgit (<a href="https://wiki.tilde.institute/w/user-repos">wiki</a>)</code></li>
+                <li><code>efingerd (<a href="https://wiki.tilde.institute/w/finger">wiki</a>)</code></li>
+                <li><code>gophernicus (<a href="https://wiki.tilde.institute/w/gopher">wiki</a>)</code></li>
+                <li><code>httpd(8)</code></li>
+                <li><code>identd(8)</code></li>
+                <li><code>php73_fpm</code></li>
+                <li><code>slowcgi(8)</code></li>
+                <li><code>smtpd(8)</code></li>
+                <li><code>unbound(8)</code></li>
+            </ul>
+            <p>The following services run on separate VMs:</p>
+            <ul>
+                <li><code>inspircd (<a href="https://wiki.tilde.institute/w/irc">wiki</a>)</code></li>
+                <li><code>getwtxt (<a href="https://twtxt.tilde.institute">instance</a>)</code></li>
+		<li><code>Dungeon Crawl Stone Soup (<a href="https://crawl.tildeverse.org">webtiles</a>, for cli games run `dcss`)</code></li>
+            </ul>
+            <p>IRC clients:</p>
+            <ul>
+		<li><code>catgirl</code></li>
+                <li><code>ircII</code></li>
+                <li><code>irssi</code></li>
+		<li><code>swirc</code></li>
+                <li><code>weechat</code></li>
+            </ul>
+            <p>The compilers and interpreters available are:</p>
+            <ul>
+		<li><code>apl 1.8</code></li>
+                <li><code>brainf*ck 2.7.1</code></li>
+		<li><code>chicken (Scheme) 5.2.0</code></li>
+		<li><code>cim (Simula) 5.1</code></li>
+                <li><code>clang 8.0.1</code></li>
+                <li><code>clisp 2.49</code></li>
+                <li><code>clojure 1.10.1.469</code></li>
+                <li><code>crystal 0.30.1</code></li>
+		<li><code>cython 0.29.14 (Py2 and Py3)</code></li>
+                <li><code>elixir 1.10.2</code></li>
+                <li><code>erlang 21.2</code></li>
+		<li><code>fpc (Pascal) 3.0.4</code></li>
+		<li><code>gambit (Scheme) 4.9.3</code></li>
+                <li><code>gcc 8.3.0 (see the <a href="https://wiki.tilde.institute/w/gcc8">wiki page</a>)</code></li>
+		<li><code>gerbil (Scheme) 0.15.1 (see the <a href="https://wiki.tilde.institute/w/gerbilscheme">wiki page</a>)</code></li>
+                <li><code>gforth 0.7.3</code></li>
+                <li><code>gfortran / g95 8.3.0 (see the <a href="https://wiki.tilde.institute/w/gcc8">wiki page</a>)</code></li>
+                <li><code>ghc (Haskell) 8.6.4</code></li>
+                <li><code>gnat (Ada) 8.3.0</code></li>
+		<li><code>gnucobol 2.2</code></li>
+		<li><code>go 1.13.9</code></li>
+		<li><code>gpc (Pascal) 20070904</code></li>
+		<li><code>gprolog 1.4.5</code></li>
+                <li><code>guile 1.8.8 and 2.2.6</code></li>
+		<li><code>janet 1.8.1</code></li>
+                <li><code>jdk 11 and 8 (see the <a href="https://wiki.tilde.institute/w/jdk">wiki page</a>)</code></li>
+                <li><code>lua 5.3.5 and 5.1.5</code></li>
+                <li><code>mono 6.8.0.105</code></li>
+                <li><code>nasm 2.14.02</code></li>
+		<li><code>nbfc (brainf*ck) 0.1</code></li>
+		<li><code>newlisp 10.7.5</code></li>
+                <li><code>nim 1.2.0</code></li>
+                <li><code>node.js 12.16.1</code></li>
+		<li><code>ocaml 4.09.0</code></li>
+                <li><code>perl 5.30.2</code></li>
+                <li><code>php 7.3.18</code></li>
+		<li><code>pypy 7.2.0</code></li>
+                <li><code>python 2.7.18 and 3.7.7</code></li>
+                <li><code>racket 7.6</code></li>
+                <li><code>rakudo (Raku / Perl6) 2018.12</code></li>
+                <li><code>ruby 2.5.8, 2.6.6, 2.7.1</code></li>
+                <li><code>rust 1.42</code></li>
+		<li><code>sbcl (Common Lisp) 2.0.1</code></li>
+		<li><code>scala 2.12.9</code></li>
+		<li><code>squeak-vm (Smalltalk) 3.10.1</code></li>
+		<li><code>swi-prolog 7.6.0</code></li>
+		<li><code>tinyscheme 1.41</code></li>
+                <li><code>yasm 1.3.0</code></li>
+            </ul>
+            <p>The interactive shells available are:</p>
+            <ul>
+                <li><code>/bin/ksh (default)</code></li>
+                <li><code>/bin/sh</code></li>
+                <li><code>/bin/csh</code></li>
+                <li><code>/usr/local/bin/bash</code></li>
+                <li><code>/usr/local/bin/dash</code></li>
+                <li><code>/usr/local/bin/zsh</code></li>
+                <li><code>/usr/local/bin/fish</code></li>
+                <li><code>/usr/local/bin/tcsh</code></li>
+                <li><code>/usr/local/bin/elvish</code></li>
+            </ul>
+		<br />
+		<br />
+        </div>
+        <div id="news">
+	    {{NEWS}}
+	</div>
+	<div id="sshfp">
+          <pre>
+256 SHA256:QSijnje9WlvxZyIXc5h8uJ2MzPCKbviy0WnBG7U4aP0 (ECDSA)
+256 SHA256:3n9E2Y0Kz4YeF776aUQNM+roVICTVQHFs64ekyADQxY (ED25519)
+3072 SHA256:GsmsdVkfRA8YznxI6EZJW+pf9IntSUIpNfeeGhpIs8w (RSA)
+1024 SHA256:foWYUgDuqfFIKnD2sLgeF1m2l9/ykSLwwlMyLWgesCA (DSA)
+          </pre>
+	</div>
+    </div>
+</body>
+
+</html>
diff --git a/html/signup.html b/html/signup.html
new file mode 100644
index 0000000..482a4ba
--- /dev/null
+++ b/html/signup.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+    <title>tilde.institute :: Sign Up</title>
+    {{HEADER}}
+</head>
+
+<body>
+    <div id="container">
+        {{LOGONAV}}
+        <div id="content" class="signup">
+            <h1>Request an Account</h1>
+            <p>
+                If you haven't received the welcome email within 24 hours, please check your spam folder.
+            </p>
+            <p>
+            <form action="submit.php">
+                <h3>Desired Username:<br /></h3>
+                <input type="text" size="48" name="username" />
+                <h3>Your Email Address:<br /></h3>
+                <input type="email" size="48" name="email" />
+                <h3>What interests you about
+                    tilde.institute?<br /></h3>
+                <input type="text" size="48" name="interest" />
+                <h3>Paste Your SSH Key in OpenSSH Format:<br /></h3>
+                <input type="text" size="48" name="sshkey" /><br />
+                <input type="submit" value="Submit" />
+            </form>
+            </p>
+        </div>
+    </div>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/html/stats.php b/html/stats.php
new file mode 100755
index 0000000..3ed3a27
--- /dev/null
+++ b/html/stats.php
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC
+  "-//W3C//DTD XHTML 1.1//EN"
+  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+    <title>tilde.institute :: Stats</title>
+    {{HEADER}}
+</head>
+<body>
+<div id="container">
+    {{LOGONAV}}
+    <div id="content">
+        <br />
+        <!--<p><code><?php include("table.weekconns"); ?></code> unique users logged in this week (resets Saturdays <code>00:00 UTC</code>)</p>-->
+        <div style="max-width: 25%; margin: 0 auto;">
+            <p style="text-align: center;">Connected Users (<code>5min</code>):</p>
+            <?php include("table.connusers"); ?>
+        </div>
+        <div class="userlist">
+            <p>Registered Users (<code>1hr</code>):</p>
+            <?php include("table.regusers"); ?>
+        </div>
+    </div>
+</div>
+</body>
+</html>
diff --git a/html/submit.php b/html/submit.php
new file mode 100755
index 0000000..1b297e8
--- /dev/null
+++ b/html/submit.php
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC
+  "-//W3C//DTD XHTML 1.1//EN"
+  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+    <title>tilde.institute :: Sign Up</title>
+    {{HEADER}}
+</head>
+<body>
+<div id="container">
+    {{LOGONAV}}
+	<div id="content" style="text-align: center;">
+<?php
+require_once('bannedusers.php');
+
+if ($_SERVER["SERVER_NAME"] != "localhost")
+	require_once "ultimate-email/support/smtp.php";
+function isTaken($istaken) {
+    return in_array($istaken, file("userlist", FILE_IGNORE_NEW_LINES));
+}
+function forbidden_name($name) {
+    return in_array($name, [
+        '0x0',
+        'abuse',
+        'admin',
+        'admins',
+        'administrator',
+        'auth',
+        'autoconfig',
+        'bbj',
+        'broadcasthost',
+        'copy',
+        'forum',
+        'ftp',
+        'git',
+        'gopher',
+        'hostmaster',
+        'imap',
+        'info',
+        'irc',
+        'is',
+        'isatap',
+        'it',
+        'localdomain',
+        'localhost',
+        'lounge',
+        'mail',
+        'mailer-daemon',
+        'marketing',
+        'marketting',
+        'mis',
+        'news',
+        'nntp',
+        'nobody',
+        'noc',
+        'noreply',
+        'pop',
+        'pop3',
+        'postmaster',
+        'retro',
+        'root',
+        'sales',
+        'security',
+        'smtp',
+        'ssladmin',
+        'ssladministrator',
+        'sslwebmaster',
+        'staging',
+        'support',
+        'sysadmin',
+        'team',
+        'usenet',
+        'uucp',
+        'webmaster',
+        'wpad',
+        'www',
+    ]);
+}
+$message = "";
+if (isset($_REQUEST["username"]) && isset($_REQUEST["email"])) {
+    // Check the name.
+    $name = trim($_REQUEST["username"]);
+    if ($name == "")
+        $message .= "<li>please fill in your desired username</li>";
+    if (strlen($name) > 32)
+        $message .= "<li>username too long (32 character max)</li>";
+    if (!preg_match('/^[A-Za-z][A-Za-z0-9]{2,31}$/', $name))
+        $message .= "<li>username contains invalid characters (lowercase only, must start with a letter)</li>";
+    if (isTaken($name) || forbidden_name($name) || bannedUsers($name))
+        $message .= "<li>sorry, the username $name is unavailable</li>";
+
+    // Check the e-mail address.
+    $email = trim($_REQUEST["email"]);
+    if ($email == "")
+        $message .= "<li>please fill in your email address</li>";
+    else {
+        $result = SMTP::MakeValidEmailAddress($_REQUEST["email"]);
+        if (!$result["success"])
+            $message .= "<li>invalid email address: " . htmlspecialchars($result["error"]) . "</li>";
+        elseif ($result["email"] != $email)
+            $message .= "<li>invalid email address. did you mean:  " . htmlspecialchars($result["email"]) . "</li>";
+    }
+
+    if ($_REQUEST["sshkey"] == "") {
+        $message .= "<li>ssh key required: please create one and submit the public key</li>";
+    }
+
+
+    if ($message == "") { // no validation errors
+
+	    // remember:
+	    $username = $_REQUEST["username"];
+	    $email = $_REQUEST["email"];
+	    $interest = $_REQUEST["interest"];
+	    $sshkey = $_REQUEST["sshkey"];
+
+        $newuserfile = fopen("newusers.dat", "a");
+	    fwrite($newuserfile, "$username $email \"$sshkey\"\n\n");
+	    fclose($newuserfile);
+        $fuzzyfile = fopen("fuzzies.log", "a");
+        fwrite($fuzzyfile, "$username   $email  $interest\n");
+        fclose($fuzzyfile);
+?>
+
+<br /><h3>Thank you for signing up! Please allow up to 24 hours for an account to become active. If you have any questions or issues, please email <a href="mailto:admins@tilde.institute">admins@tilde.institute</a>.</h3>
+
+<?php
+
+    } else {
+        ?>
+        <div class="alert alert-warning" role="alert">
+            <br /><br /><h3>Please correct the following errors: </h3><br />
+            <h4>
+            <?=$message?>
+            </h4>
+        </div>
+        <?php
+    }
+}
+?>
+</div>
+</div>
+</body>
+</html>