Switch to pointers, add mtime check

This commit is contained in:
Amolith 2021-12-29 15:04:35 -05:00
parent 1e3becdda8
commit 6a80c5fccd
No known key found for this signature in database
GPG key ID: 5548AD9930655715

View file

@ -1,6 +1,7 @@
package main
import (
"fmt"
"html/template"
"log"
"math/rand"
@ -10,9 +11,12 @@ import (
// Serves the webpage created by createRoot()
func root(writer http.ResponseWriter, request *http.Request) {
r := parseList()
if modify() {
r = parseList()
fmt.Println("Parsed the list again")
}
var table string
for _, member := range r {
for _, member := range *r {
table = table + " <tr>\n"
table = table + " <td>" + member.handle + "</td>\n"
table = table + " <td>" + link(member.url) + "</td>\n"
@ -30,49 +34,61 @@ func root(writer http.ResponseWriter, request *http.Request) {
// Redirects the visitor to the next member, wrapping around the list if the
// next would be out-of-bounds
func next(writer http.ResponseWriter, request *http.Request) {
if modify() {
r = parseList()
}
host := request.URL.Query().Get("host")
dest := "https://"
list := parseList()
for i, item := range list {
dest, success := "https://", false
for i, item := range *r {
if item.url == host {
if i+1 >= len(list) {
dest = dest + list[0].url
if i+1 >= len(*r) {
dest = dest + (*r)[0].url
http.Redirect(writer, request, dest, 302)
success = true
break
}
dest = dest + list[i+1].url
dest = dest + (*r)[i+1].url
http.Redirect(writer, request, dest, 302)
success = true
break
}
}
http.Error(writer, "Ring member '"+host+"' not found.", 404)
if success == false {
http.Error(writer, "Ring member '"+host+"' not found.", 404)
}
}
// Redirects the visitor to the previous member, wrapping around the list if the
// next would be out-of-bounds
func previous(writer http.ResponseWriter, request *http.Request) {
if modify() {
r = parseList()
}
host := request.URL.Query().Get("host")
dest := "https://"
list := parseList()
for i, item := range list {
dest, success := "https://", false
for i, item := range *r {
if item.url == host {
if i-1 < 0 {
dest = dest + list[len(list)-1].url
dest = dest + (*r)[len(*r)-1].url
http.Redirect(writer, request, dest, 302)
break
}
dest = dest + list[i-1].url
dest = dest + (*r)[i-1].url
http.Redirect(writer, request, dest, 302)
break
}
}
http.Error(writer, "Ring member '"+host+"' not found.", 404)
if success == false {
http.Error(writer, "Ring member '"+host+"' not found.", 404)
}
}
// Redirects the visitor to a random member
func random(writer http.ResponseWriter, request *http.Request) {
if modify() {
r = parseList()
}
rand.Seed(time.Now().Unix())
list := parseList()
dest := "https://" + list[rand.Intn(len(list)-1)].url
dest := "https://" + (*r)[rand.Intn(len(*r)-1)].url
http.Redirect(writer, request, dest, 302)
}