From 67e4b234d31626976ad630043814235c936f8bbf Mon Sep 17 00:00:00 2001
From: Lizzy Hunt
Date: Sat, 9 Mar 2024 21:29:25 -0700
Subject: finish static page
---
.gitmodules | 6 +++
compile.sh | 3 +-
html/build.sh | 18 ++++++++
html/fruitvote/.gitignore | 1 +
html/fruitvote/main.go | 57 +++++++++++++++++++++++++
html/public/css/style.css | 77 ++++++++++++++++++++++++++++++++++
html/public/fruitvote/GoPage.php | 88 +++++++++++++++++++++++++++++++++++++++
html/public/fruitvote/index.php | 7 ++++
html/public/img/penguin.gif | Bin 0 -> 53409 bytes
html/public/index.php | 54 ++++++++++++++++++------
html/public/template.html | 38 +++++++++++++++++
html/start.sh | 7 ++++
html/staticsimponic | 1 +
html/the-abstraction-engine | 1 +
14 files changed, 345 insertions(+), 13 deletions(-)
create mode 100644 .gitmodules
create mode 100644 html/fruitvote/.gitignore
create mode 100644 html/fruitvote/main.go
create mode 100644 html/public/css/style.css
create mode 100644 html/public/fruitvote/GoPage.php
create mode 100644 html/public/fruitvote/index.php
create mode 100644 html/public/img/penguin.gif
create mode 100644 html/public/template.html
create mode 100755 html/start.sh
create mode 160000 html/staticsimponic
create mode 160000 html/the-abstraction-engine
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..91e685d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "html/staticsimponic"]
+ path = html/staticsimponic
+ url = https://git.simponic.xyz/simponic/static.simponic.xyz
+[submodule "html/the-abstraction-engine"]
+ path = html/the-abstraction-engine
+ url = https://git.simponic.xyz/simponic/the-abstraction-engine
diff --git a/compile.sh b/compile.sh
index 46ae743..31addf8 100755
--- a/compile.sh
+++ b/compile.sh
@@ -2,8 +2,9 @@
set -e
-mkdir -p dist
+git submodule update --init --recursive
+mkdir -p dist
pwd=$PWD
for source in "html" "gemini" "gopher"; do
diff --git a/html/build.sh b/html/build.sh
index 722e1d3..816c324 100755
--- a/html/build.sh
+++ b/html/build.sh
@@ -1,5 +1,23 @@
#!/bin/sh
+mkdir -p ../dist/public_html
+
cp -r ./public ../dist/public_html
+mv staticsimponic/turing-machine ../dist/public_html
+mv staticsimponic/euler-golf ../dist/public_html
+mv staticsimponic/godel-explorer ../dist/public_html
+
+cd the-abstraction-engine/
+npm install
+npm run build
+cd ..
+cp -r the-abstraction-engine/dist ../dist/public_html/the-abstraction-engine
+
+mkdir -p ../dist/fruitvote
+cd fruitvote
+go build -o ../../dist/fruitvote/fruitvote
+cd ..
+cp start.sh ../dist/fruitvote/start.sh
echo "finished building HTML"
+
diff --git a/html/fruitvote/.gitignore b/html/fruitvote/.gitignore
new file mode 100644
index 0000000..ba2906d
--- /dev/null
+++ b/html/fruitvote/.gitignore
@@ -0,0 +1 @@
+main
diff --git a/html/fruitvote/main.go b/html/fruitvote/main.go
new file mode 100644
index 0000000..73c1c17
--- /dev/null
+++ b/html/fruitvote/main.go
@@ -0,0 +1,57 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+ "net"
+ "net/http"
+ "os"
+ "os/exec"
+ "strings"
+)
+
+func indexHandler(w http.ResponseWriter, r *http.Request) {
+ w.WriteHeader(http.StatusOK)
+ w.Write([]byte("Hello, this is a Unix socket HTTP server in Go!"))
+}
+
+func main() {
+ socketPath, users := getArgs()
+ os.Remove(socketPath)
+
+ listener, err := net.Listen("unix", socketPath)
+ if err != nil {
+ panic(err)
+ }
+ os.Chmod(socketPath, 0700)
+ defer listener.Close()
+
+ for _, user := range strings.Split(users, ",") {
+ setACL(socketPath, user)
+ }
+
+ mux := http.NewServeMux()
+ mux.HandleFunc("/", indexHandler)
+
+ http.Serve(listener, mux)
+}
+
+func setACL(socketPath, user string) {
+ cmd := exec.Command("setfacl", "-m", "u:"+user+":rwx", socketPath)
+ if err := cmd.Run(); err != nil {
+ panic("failed to set ACL: " + err.Error())
+ }
+}
+
+func getArgs() (string, string) {
+ socketPath := flag.String("socket-path", "/tmp/go-server.sock", "Path to the Unix socket")
+ users := flag.String("users", "", "Comma-separated list of users for ACL")
+ flag.Parse()
+
+ if *users == "" {
+ fmt.Println("You must specify at least one user with --users")
+ os.Exit(1)
+ }
+
+ return *socketPath, *users
+}
diff --git a/html/public/css/style.css b/html/public/css/style.css
new file mode 100644
index 0000000..a4f243f
--- /dev/null
+++ b/html/public/css/style.css
@@ -0,0 +1,77 @@
+/* Basic Reset */
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ background-color: #2a2a2a; /* Dark background */
+ color: #f4c2c2; /* Soft pink text, typical of a girly 90s vibe */
+ font-family: "Comic Sans MS", "Chalkboard SE", sans-serif; /* Retro, playful font */
+
+ padding: 20px;
+}
+
+a {
+ color: #ff47da; /* Bright pink for links */
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+button,
+input[type="submit"],
+input[type="button"] {
+ background-color: #ff69b4; /* Bright pink for buttons */
+ border: none;
+ color: white;
+ padding: 10px 20px;
+ text-transform: uppercase;
+ font-family: "Comic Sans MS", "Chalkboard SE", sans-serif;
+ cursor: pointer;
+ transition: background-color 0.3s ease;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover {
+ background-color: #ff1493; /* Darker pink on hover */
+}
+
+input[type="text"],
+input[type="password"],
+textarea {
+ background-color: #333; /* Darker elements for inputs */
+ border: 1px solid #f4c2c2; /* Soft pink border */
+ color: #f4c2c2; /* Soft pink text */
+ padding: 10px;
+}
+
+/* Example of styling a specific component differently */
+.special-button {
+ background-color: #ff47da; /* A different shade of pink */
+ border-radius: 20px; /* Rounded edges for a more playful look */
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ color: #ff69b4;
+ margin-bottom: 20px;
+}
+
+p {
+ margin-bottom: 20px;
+}
+
+li {
+ margin-left: 20px;
+}
diff --git a/html/public/fruitvote/GoPage.php b/html/public/fruitvote/GoPage.php
new file mode 100644
index 0000000..c3a7d34
--- /dev/null
+++ b/html/public/fruitvote/GoPage.php
@@ -0,0 +1,88 @@
+page = $page;
+ $this->socket = $socket;
+ $this->template = $template;
+
+ // test if socket exists
+ if (!file_exists($socket)) {
+ // start the server
+ exec($start_cmd);
+ }
+
+ for ($i = 0; $i < 10; $i++) {
+ if (file_exists($socket)) {
+ break;
+ }
+ usleep(100_000); // wait 100ms
+ }
+
+ if (!file_exists($socket)) {
+ throw new Exception("Could not start server");
+ }
+ }
+ public function go() {
+ $ch = curl_init();
+ $url = "http://localhost".$this->page;
+
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_UNIX_SOCKET_PATH, $this->socket);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+
+ // forward headers
+ $headers = array();
+ foreach ($_SERVER as $key => $value) {
+ if (substr($key, 0, 5) == "HTTP_") {
+ $key = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5)))));
+ $headers[] = "$key: $value";
+ }
+ }
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+
+ // forward params depending on http method
+ if ($_SERVER['REQUEST_METHOD'] == "POST" || $_SERVER['REQUEST_METHOD'] == "PUT" || $_SERVER['REQUEST_METHOD'] == "DELETE") {
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('php://input'));
+ } else {
+ $url .= "?".$_SERVER['QUERY_STRING'];
+ }
+
+ // forward cookies
+ $cookie = array();
+ foreach ($_COOKIE as $key => $value) {
+ $cookie[] = "$key=$value";
+ }
+
+ $output = curl_exec($ch);
+ curl_close($ch);
+
+ // forward headers back to client
+ $headers = explode("\n", $output);
+ foreach ($headers as $header) {
+ if (strpos($header, "HTTP/") === false) {
+ header($header);
+ }
+ }
+
+ // forward cookies back to client
+ $cookie = explode("\n", $output);
+ foreach ($cookie as $cookie) {
+ if (strpos($cookie, "Set-Cookie:") !== false) {
+ header($cookie);
+ }
+ }
+
+ return $output;
+ }
+
+ public function render() {
+ $response = $this->go();
+ $template = file_get_contents($this->template);
+ return str_replace("{{content}}", $response, $template);
+ }
+}
diff --git a/html/public/fruitvote/index.php b/html/public/fruitvote/index.php
new file mode 100644
index 0000000..1abfb0c
--- /dev/null
+++ b/html/public/fruitvote/index.php
@@ -0,0 +1,7 @@
+render();
+?>
diff --git a/html/public/img/penguin.gif b/html/public/img/penguin.gif
new file mode 100644
index 0000000..48bd0e2
Binary files /dev/null and b/html/public/img/penguin.gif differ
diff --git a/html/public/index.php b/html/public/index.php
index 3ed5805..004a131 100644
--- a/html/public/index.php
+++ b/html/public/index.php
@@ -1,19 +1,49 @@
you are at my tilde.club page right now! hi!
-$ch = curl_init();
-$url = "http:/localhost";
-$unix = "/home/simponic/http.sock";
+
+this is a penguin
-if (defined('CURLOPT_UNIX_SOCKET_PATH')) {
- curl_setopt($ch, CURLOPT_UNIX_SOCKET_PATH, $unix);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+here you can:
- $response = curl_exec($ch);
- echo $response;
-}
+
-curl_close($ch);
+
+
+
+
+here are some stuffs i like:
+
+ - penguins, dogs, birds
+ - programming (((with parentheses)))
+ - compilers, languages, distributed systems
+ - emacs
+ - math
+ - boys (and girls) 🏳️🌈
+ - gruvbox & catpuccin
+
+
+
+
+here are some stuffs i don\'t like:
+
+ - bugs (hahahaha)
+ - capitalism, expensive healthcare, yadayada
+ - mmmm i can\'t think of more
+
+
+';
+
+$template = file_get_contents('template.html');
+
+echo str_replace("{{content}}", $content, $template);
?>
diff --git a/html/public/template.html b/html/public/template.html
new file mode 100644
index 0000000..4867c55
--- /dev/null
+++ b/html/public/template.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ ~simponic
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
+
+
diff --git a/html/start.sh b/html/start.sh
new file mode 100755
index 0000000..3c274a8
--- /dev/null
+++ b/html/start.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+nice -n 19 /home/simponic/fruitvote/fruitvote \
+ --users simponic,nginx \
+ --socket-path /home/simponic/fruitvote/http.sock \
+ --database /home/simponic/fruitvote/db.sqlite \
+ &
diff --git a/html/staticsimponic b/html/staticsimponic
new file mode 160000
index 0000000..d3a0fd1
--- /dev/null
+++ b/html/staticsimponic
@@ -0,0 +1 @@
+Subproject commit d3a0fd124549f0f66d80c107ed4a8e73ca2e67e9
diff --git a/html/the-abstraction-engine b/html/the-abstraction-engine
new file mode 160000
index 0000000..ce40345
--- /dev/null
+++ b/html/the-abstraction-engine
@@ -0,0 +1 @@
+Subproject commit ce403459fa82025bd969d1938ed4034a10c2e751
--
cgit v1.2.3-70-g09d2