8.2 more domains, move beta signups
This commit is contained in:
104
beta/beta_signups.csv
Normal file
104
beta/beta_signups.csv
Normal file
@@ -0,0 +1,104 @@
|
||||
Email
|
||||
Abishanka.saha@gmail.com
|
||||
juancampa@gmail.com
|
||||
Bgfrazier@gmail.com
|
||||
kernelsoe@gmail.com
|
||||
Ekonomy@protonmail.com
|
||||
kisunnayo@duck.com
|
||||
Jacob_moya1117@yahoo.com
|
||||
matias.sjoblom6@gmail.com
|
||||
Ldelunak5@gmail.com
|
||||
maxkmobey@icloud.com
|
||||
W2019fgatfield@gmail.com
|
||||
montanarinick@gmail.com
|
||||
abishanka.saha@gmail.com
|
||||
nate.d.luna@gmail.com
|
||||
akbir.yfoga@8shield.net
|
||||
noahflodder@gmail.com
|
||||
arc360yt@gmail.com
|
||||
omar.elfanek@gmail.com
|
||||
aritraneogi2006@gmail.com
|
||||
parchment.653468@schlosser.xyz
|
||||
aubertbrennan@gmail.com
|
||||
"parchment.page.displace612@passmail.net"
|
||||
augustinamari14@gmail.com
|
||||
pj@kantak.de
|
||||
belle.smithies@gmail.com
|
||||
pratyush.sahoo55@gmail.com
|
||||
ben@bn0367.com
|
||||
quigleyoto@gmail.com
|
||||
bridger.joshua@gmail.com
|
||||
resstowot@gmail.com
|
||||
carlosgarciagutierrez.cgagu@gmail.com
|
||||
samuel@sun.museum
|
||||
cerca_sesion0u@icloud.com
|
||||
sherin@hey.com
|
||||
chankahei123456@gmail.com
|
||||
ssampaoli@equo.dev
|
||||
danielrouhana@gmail.com
|
||||
sunny.gonna@gmail.com
|
||||
david.regev@gmail.com
|
||||
tamarindtypex@proton.me
|
||||
fm100310@gmail.com
|
||||
guignardmathias@gmail.com
|
||||
vasconcelos.arthur@gmail.com
|
||||
happywzm@gmail.com
|
||||
victordedomenico.du60@gmail.com
|
||||
hello@marlin.red
|
||||
voidmelon@skiff.com
|
||||
iyousifsabah@gmail.com
|
||||
youvegotcaleb@gmail.com
|
||||
jaywin.jv@gmail.com
|
||||
zayn.khan@uconn.edu
|
||||
john0000wu@gmail.com
|
||||
Lukasdavisbarrs@gmail.com,2.20 9:35pm
|
||||
zacharywood92@gmail.com,2.25 7:40pm
|
||||
TYHSoftware@gmail.com,2.29 4:42pm
|
||||
arnav@arnavgosain.com,3.1 2:23pm
|
||||
fvaughan36@gmail.com,4.2 6:51pm
|
||||
parchment@a.odajay.com,4.4 12:48pm
|
||||
logan.a.welsh@gmail.com,4.21 12:16pm
|
||||
andrew@renormalizing.com,4.22 2:10pm
|
||||
shukur.mukhtarov@gmail.com,4.22 8:40pm
|
||||
Jf.jessie@gmail.com,4.24 3:02am
|
||||
dhanraj6174@gmail.com,4.25 12:55am
|
||||
wenwu@hey.com,5.17 10:54pm
|
||||
pcnk08@gmail.com,5.23 8:44am
|
||||
Dainajag@aim.com,7.1 5:33am
|
||||
Dainajag@aol.com,7.1 5:34am
|
||||
luckyplukas@gmail.com,7.1 6:49am
|
||||
yinan@hey.com,7.1 12:21pm
|
||||
mano@flairvc.com,7.3 1:04pm
|
||||
kayruss1@gmail.com,7.4 1:47pm
|
||||
luckyplukas@googlemail.com,7.18 6:44am
|
||||
rennt@oregonstate.edu,8.6 4:38pm
|
||||
weconel991@daypey.com,8.22 11:55am
|
||||
test@test.com,8.22 11:55am
|
||||
jn,8.28 1:55pm
|
||||
hart.lucas02@gmail.com,8.28 7:33pm
|
||||
joe.jbh@proton.me,8.29 5:38pm
|
||||
theobragstad22@gmail.com,8.29 6:25pm
|
||||
seandavrancomputerscience@gmail.com,8.30 5:48am
|
||||
sandavran@gmail.com,8.30 5:49am
|
||||
harikakondur3@gmail.com,9.5 3:25pm
|
||||
jacobef2@gmail.com,9.7 12:04am
|
||||
gregjf@gmail.com,9.9 10:48pm
|
||||
fnnjfndj@fake.com,9.25 3:10pm
|
||||
ganeshharshu27@gmail.com,9.25 5:48pm
|
||||
brayden.a15@gmail.com,9.26 10:48am
|
||||
fantomhaiv65@gmail.com,9.26 1:40pm
|
||||
ravidatd@oregonstate.edu,9.26 9:08pm
|
||||
ethanpeterson55@gmail.com,9.27 12:48pm
|
||||
craetona@oregonstate.edu,9.27 2:21pm
|
||||
baumanne@oregonstate.edu,9.27 3:39pm
|
||||
morgirme@gmail.com,9.29 9:19pm
|
||||
saakiyama02@gmail.com,9.30 1:04am
|
||||
randquistcp@gmail.com,10.4 8:52am
|
||||
mgriffin@ncose.com,10.16 2:40pm
|
||||
beastern@gmail.com,10.23 8:03pm
|
||||
jalvarez062001@gmail.com,11.2 4:23pm
|
||||
intim@oregonstate.edu,11.29 6:42pm
|
||||
danielburnstech@gmail.com,12.12 11:12am
|
||||
taykingg@gmail.com,6.19.2025 10:22pm
|
||||
asdf@pm.me,8.2.2025 7:32pm
|
||||
pp@pm.me,8.2.2025 7:37pm
|
||||
|
Can't render this file because it has a wrong number of fields in line 54.
|
50
fullchain.pem
Normal file
50
fullchain.pem
Normal file
@@ -0,0 +1,50 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIECzCCA5KgAwIBAgISBXwhSxScclnvXiGv4vODPHAqMAoGCCqGSM49BAMDMDIx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||
NTAeFw0yNTA0MDgxNTUxNDlaFw0yNTA3MDcxNTUxNDhaMBsxGTAXBgNVBAMMECou
|
||||
cGFyY2htZW50LnBhZ2UwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASFM3oC5uJD
|
||||
B9BiyHKvk2LQFDngkMA9W6XHhxuuwi4//XprHY4+kYc+EoSNkz4m5ku5b1FG5wY2
|
||||
hzVnnYeyhBdno4ICnTCCApkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsG
|
||||
AQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSvq5Yi60F/
|
||||
nsb9/R0UGw15Sl/aGjAfBgNVHSMEGDAWgBSfK1/PPCFPnQS37SssxMZwi9LXDTBV
|
||||
BggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNS5vLmxlbmNyLm9y
|
||||
ZzAiBggrBgEFBQcwAoYWaHR0cDovL2U1LmkubGVuY3Iub3JnLzB2BgNVHREEbzBt
|
||||
ghAqLnBhcmNobWVudC5wYWdlghBhZG1pbi5zdW4ubXVzZXVtgg1haS5zdW4ubXVz
|
||||
ZXVtghJhbWVyaWNhLnN1bi5tdXNldW2CEHF1aWxsLnN1bi5tdXNldW2CEnNjcmFw
|
||||
ZXIuc3VuLm11c2V1bTATBgNVHSAEDDAKMAgGBmeBDAECATAtBgNVHR8EJjAkMCKg
|
||||
IKAehhxodHRwOi8vZTUuYy5sZW5jci5vcmcvNDMuY3JsMIIBBQYKKwYBBAHWeQIE
|
||||
AgSB9gSB8wDxAHcADeHyMCvTDcFAYhIJ6lUu/Ed0fLHX6TDvDkIetH5OqjQAAAGW
|
||||
Fk9RkQAABAMASDBGAiEA0QVjV0yjeKE/jBRAhheZdh63KEQL4jxe5Z5Qt93oa2YC
|
||||
IQCNcP4pbxlW9vRHvIxFkHO35XjGOShU8IzEuOMMQbQltgB2AMz7D2qFcQll/pWb
|
||||
U87psnwi6YVcDZeNtql+VMD+TA2wAAABlhZPUakAAAQDAEcwRQIhALXOWF8RBt8M
|
||||
hKdISAB3oXoqP6gu0sIax6StXNb4hTfLAiB1hHzFz4J7VEFzvmXO2JSLk5rb5mHN
|
||||
N61RnLwl6lLL2zAKBggqhkjOPQQDAwNnADBkAjBvp6IDen/nyXBbkxYOPhxe6Ej6
|
||||
4D6CGTans1DciQ5HxNarxYRk6DpTjMthd9ETYUYCMG1GCvOkpgmNcQfm0aJ5lb54
|
||||
tfjEZvG7Xlrzv4EeP7vpovoUlCkIs7+GAB3uaZaaXQ==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK
|
||||
a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO
|
||||
VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw
|
||||
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw
|
||||
i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C
|
||||
2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+
|
||||
bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG
|
||||
6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV
|
||||
XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO
|
||||
koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq
|
||||
cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI
|
||||
E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e
|
||||
K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX
|
||||
GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL
|
||||
sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd
|
||||
VQD9F6Na/+zmXCc=
|
||||
-----END CERTIFICATE-----
|
||||
112
main.go
112
main.go
@@ -2,6 +2,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
@@ -56,7 +57,7 @@ func loggingMiddleware(next http.HandlerFunc) http.HandlerFunc {
|
||||
if isLocalIP(ipWithPort) {
|
||||
log.Printf("%s %s %s", r.Host, cleanIP, path)
|
||||
} else {
|
||||
log.Printf("%s %s \033[33m%s%s\033[0m", formattedTime, cleanIP, r.Host, path)
|
||||
log.Printf("\033[33m%s\033[0m %s \033[94m%s %s\033[0m", formattedTime, cleanIP, r.Host, path)
|
||||
}
|
||||
|
||||
// Add request info to global store
|
||||
@@ -74,22 +75,6 @@ func loggingMiddleware(next http.HandlerFunc) http.HandlerFunc {
|
||||
}
|
||||
}
|
||||
|
||||
func outsideHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Host == "america.sun.museum" {
|
||||
target, _ := url.Parse("http://localhost:8000")
|
||||
proxy := httputil.NewSingleHostReverseProxy(target)
|
||||
r.Host = target.Host
|
||||
proxy.ServeHTTP(w, r)
|
||||
return
|
||||
} else
|
||||
if r.Host == "admin.sun.museum" {
|
||||
src.BetaSignupHandler(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Fprintf(w, "Hello, World! You're from outside.")
|
||||
}
|
||||
|
||||
func rootHandler(w http.ResponseWriter, r *http.Request) {
|
||||
ip := r.RemoteAddr
|
||||
ip = ip[:strings.LastIndex(ip, ":")] // Trim port
|
||||
@@ -100,15 +85,92 @@ func rootHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func outsideHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Host == "america.sun.museum" {
|
||||
target, _ := url.Parse("http://localhost:8000")
|
||||
proxy := httputil.NewSingleHostReverseProxy(target)
|
||||
r.Host = target.Host
|
||||
proxy.ServeHTTP(w, r)
|
||||
return
|
||||
} else
|
||||
if(r.Host == "thefiveprinciples.org") {
|
||||
target, _ := url.Parse("http://localhost:3001")
|
||||
proxy := httputil.NewSingleHostReverseProxy(target)
|
||||
r.Host = target.Host
|
||||
proxy.ServeHTTP(w, r)
|
||||
return
|
||||
} else
|
||||
if(r.Host == "americanforum.net") {
|
||||
target, _ := url.Parse("http://localhost:3002")
|
||||
proxy := httputil.NewSingleHostReverseProxy(target)
|
||||
r.Host = target.Host
|
||||
proxy.ServeHTTP(w, r)
|
||||
return
|
||||
} else
|
||||
if(r.Host == "hyperia.so") {
|
||||
target, _ := url.Parse("http://localhost:3003")
|
||||
proxy := httputil.NewSingleHostReverseProxy(target)
|
||||
r.Host = target.Host
|
||||
proxy.ServeHTTP(w, r)
|
||||
return
|
||||
} else
|
||||
if(r.Host == "aryan.so") {
|
||||
target, _ := url.Parse("http://localhost:3004")
|
||||
proxy := httputil.NewSingleHostReverseProxy(target)
|
||||
r.Host = target.Host
|
||||
proxy.ServeHTTP(w, r)
|
||||
return
|
||||
} else
|
||||
if r.Host == "admin.sun.museum" {
|
||||
src.BetaSignupHandler(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Fprintf(w, "Hello, World! You're from outside.")
|
||||
}
|
||||
|
||||
func main() {
|
||||
log.SetFlags(0)
|
||||
log.SetFlags(0)
|
||||
|
||||
// Your handler with logging middleware
|
||||
http.HandleFunc("/", loggingMiddleware(rootHandler))
|
||||
|
||||
certFile := "/etc/letsencrypt/live/parchment.page/fullchain.pem"
|
||||
keyFile := "/etc/letsencrypt/live/parchment.page/privkey.pem"
|
||||
log.Println("Server running on port 3000")
|
||||
err := http.ListenAndServeTLS(":3000", certFile, keyFile, nil)
|
||||
if err != nil {
|
||||
log.Fatalf("Server failed: %v", err)
|
||||
// Load multiple certificates
|
||||
certs := map[string]*tls.Certificate{}
|
||||
|
||||
loadCert := func(domain string) {
|
||||
cert, err := tls.LoadX509KeyPair(
|
||||
"/etc/letsencrypt/live/"+domain+"/fullchain.pem",
|
||||
"/etc/letsencrypt/live/"+domain+"/privkey.pem",
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to load certificate for %s: %v", domain, err)
|
||||
}
|
||||
certs[domain] = &cert
|
||||
}
|
||||
}
|
||||
|
||||
// Example domains
|
||||
loadCert("parchment.page")
|
||||
loadCert("hyperia.so")
|
||||
|
||||
// Configure TLS with SNI
|
||||
tlsConfig := &tls.Config{
|
||||
GetCertificate: func(hello *tls.ClientHelloInfo) (*tls.Certificate, error) {
|
||||
if cert, ok := certs[hello.ServerName]; ok {
|
||||
return cert, nil
|
||||
}
|
||||
// fallback: return any default cert
|
||||
return certs["hyperia.so"], nil
|
||||
},
|
||||
MinVersion: tls.VersionTLS12,
|
||||
}
|
||||
|
||||
server := &http.Server{
|
||||
Addr: ":3000",
|
||||
Handler: nil, // uses default http handler
|
||||
TLSConfig: tlsConfig,
|
||||
}
|
||||
|
||||
log.Println("🔒 HTTPS server running on port 3000")
|
||||
log.Fatal(server.ListenAndServeTLS("", "")) // certs handled by tlsConfig
|
||||
}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
```sudo go run *.go```
|
||||
```sudo go run *.go```
|
||||
|
||||
https://uptime.betterstack.com/team/328750/monitors
|
||||
@@ -70,7 +70,7 @@ func BetaSignupHandler(w http.ResponseWriter, r *http.Request) {
|
||||
csvLine := fmt.Sprintf("\n%s,%s %s", req.Email, formattedDate, formattedTime)
|
||||
|
||||
// Append to CSV file
|
||||
csvFilePath := filepath.Join(homeDir, "Admin", "beta_signups.csv")
|
||||
csvFilePath := filepath.Join(homeDir, "Admin", "beta", "beta_signups.csv")
|
||||
err = os.MkdirAll(filepath.Dir(csvFilePath), 0755)
|
||||
if err != nil {
|
||||
log.Printf("Error creating CSV directory: %v", err)
|
||||
|
||||
39
ssl/index.js
39
ssl/index.js
@@ -1,14 +1,33 @@
|
||||
/* 1. Shut down Admin and run this file 'npm run start' */
|
||||
/*
|
||||
|
||||
/* 2. Run this command */
|
||||
// sudo certbot certonly \
|
||||
// --dns-route53 \
|
||||
// -d '*.parchment.page' \
|
||||
// -d quill.sun.museum \
|
||||
// -d admin.sun.museum \
|
||||
// -d scraper.sun.museum \
|
||||
// -d ai.sun.museum \
|
||||
// -d america.sun.museum
|
||||
This server useses two certificates: one for Parchment, which requires
|
||||
wildcard domains, and one for all the other websites.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* 1. Shut down Admin and run 'npm run start' (in this ssl folder) */
|
||||
/* 2.1 Run this command to support Parchment wildcard certs (AWS Authentication)
|
||||
|
||||
sudo certbot certonly \
|
||||
--dns-route53 \
|
||||
-d '*.parchment.page'
|
||||
*/
|
||||
|
||||
/* 2.2 Run this command to support all others
|
||||
|
||||
sudo certbot certonly \
|
||||
--standalone \
|
||||
-d hyperia.so \
|
||||
-d aryan.so \
|
||||
-d admin.sun.museum \
|
||||
-d america.sun.museum \
|
||||
-d noahkurtis.com \
|
||||
-d americanforum.net \
|
||||
-d thefiveprinciples.org \
|
||||
-d government.forum
|
||||
*/
|
||||
|
||||
|
||||
import http from 'http';
|
||||
|
||||
Reference in New Issue
Block a user