This commit is contained in:
parent
b15c976693
commit
bd279a8808
6 changed files with 86 additions and 20 deletions
21
dict.go
21
dict.go
|
@ -1,21 +1,24 @@
|
|||
package main
|
||||
|
||||
type dict struct {
|
||||
hostname string
|
||||
languageEn string
|
||||
searchStr string
|
||||
hostname string
|
||||
languageEn string
|
||||
searchStr string
|
||||
newSentence string
|
||||
}
|
||||
|
||||
var EN = dict{
|
||||
hostname: "en.arns.lt",
|
||||
languageEn: "English",
|
||||
searchStr: "Input searching tag, created date or word in description",
|
||||
hostname: "en.arns.lt",
|
||||
languageEn: "English",
|
||||
searchStr: "Input searching tag, created date or word in description",
|
||||
newSentence: "New sentence",
|
||||
}
|
||||
|
||||
var SGS = dict{
|
||||
hostname: "en.arns.lt",
|
||||
languageEn: "Samogitian",
|
||||
searchStr: "Ivesk ėiškuoma žīma, sokūrėma data arba žuodi ėš aprašīma",
|
||||
hostname: "en.arns.lt",
|
||||
languageEn: "Samogitian",
|
||||
searchStr: "Ivesk ėiškuoma žīma, sokūrėma data arba žuodi ėš aprašīma",
|
||||
newSentence: "Naujė ėšmintės",
|
||||
}
|
||||
|
||||
func Dict() dict {
|
||||
|
|
2
go.mod
2
go.mod
|
@ -13,7 +13,7 @@ require (
|
|||
require g.arns.lt/zordsdavini/abcex/v4 v4.0.4 // indirect
|
||||
|
||||
require (
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.5
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.7
|
||||
github.com/golang/protobuf v1.5.2 // indirect
|
||||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
|
||||
|
|
8
go.sum
8
go.sum
|
@ -2,10 +2,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
|
|||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
g.arns.lt/zordsdavini/abcex/v4 v4.0.4 h1:idjvgkCjrjZfDxLyOcX7lCIdIndISDAkj77VCvhu8/c=
|
||||
g.arns.lt/zordsdavini/abcex/v4 v4.0.4/go.mod h1:/+//gYSUtJrdsmTtWNoffRO4xD1BuPRUMGW4ynet7iE=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.4 h1:jtM9sXAh5kLatHyrkbky7XO2z9wgfz0fjYBg5NHVCrk=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.4/go.mod h1:CpFWjby+GB/+mrJFTsCDJHS5UCWHty6Y7Pf/Ui7IR90=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.5 h1:8HoKqkQM3u9GzkCl+Bco1ctBr+Uz/J+tSxyyfMShbvA=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.5/go.mod h1:CpFWjby+GB/+mrJFTsCDJHS5UCWHty6Y7Pf/Ui7IR90=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.6 h1:N42qGkb0XBzSC58E5QLGMop4W9GlvUfgduuWtkUSrVk=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.6/go.mod h1:CpFWjby+GB/+mrJFTsCDJHS5UCWHty6Y7Pf/Ui7IR90=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.7 h1:uzm9m4xORpFz9aWmvGEmTsSNPzXqVCI1A5G2szpzPAo=
|
||||
g.arns.lt/zordsdavini/zordfsdb v1.0.7/go.mod h1:CpFWjby+GB/+mrJFTsCDJHS5UCWHty6Y7Pf/Ui7IR90=
|
||||
git.sr.ht/~adnano/go-gemini v0.2.3 h1:oJ+Y0/mheZ4Vg0ABjtf5dlmvq1yoONStiaQvmWWkofc=
|
||||
git.sr.ht/~adnano/go-gemini v0.2.3/go.mod h1:hQ75Y0i5jSFL+FQ7AzWVAYr5LQsaFC7v3ZviNyj46dY=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
|
|
50
main.go
50
main.go
|
@ -161,6 +161,8 @@ func process(_ context.Context, w gemini.ResponseWriter, r *gemini.Request) {
|
|||
renderAbout(w)
|
||||
case regexp.MustCompile(`^/s/?$`).MatchString(r.URL.Path):
|
||||
renderSearch(w, r, client)
|
||||
case regexp.MustCompile(`^/admin/sentence$`).MatchString(r.URL.Path):
|
||||
renderAdminSentence(w, r, client)
|
||||
case regexp.MustCompile(`^/t/?$`).MatchString(r.URL.Path):
|
||||
renderTags(w, client)
|
||||
case regexp.MustCompile(`^/f/?$`).MatchString(r.URL.Path):
|
||||
|
@ -258,6 +260,13 @@ func renderIndex(w gemini.ResponseWriter, client TreeManagerClient, r *gemini.Re
|
|||
db.Save("admin_cert", "xxx")
|
||||
}
|
||||
|
||||
sentence := ""
|
||||
sentenceCount, _ := db.Length("sentences_" + defaultLang)
|
||||
if sentenceCount > 0 {
|
||||
sentenceNode, _ := db.GetRandomNode("sentences_" + defaultLang)
|
||||
sentence, _ = sentenceNode.Get("sentence")
|
||||
}
|
||||
|
||||
w.SetMediaType("text/gemini")
|
||||
tpl := pongo2.Must(pongo2.FromFile(fmt.Sprintf("templates/%s/index.gmi", defaultLang)))
|
||||
page, err := tpl.Execute(
|
||||
|
@ -268,6 +277,7 @@ func renderIndex(w gemini.ResponseWriter, client TreeManagerClient, r *gemini.Re
|
|||
"lastRebuild": lastRebuild,
|
||||
"pageCounter": pageCounter,
|
||||
"admin": adminCert == getCertFingerprint(r),
|
||||
"sentence": sentence,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
|
@ -384,6 +394,46 @@ func renderAbout(w gemini.ResponseWriter) {
|
|||
}
|
||||
}
|
||||
|
||||
func renderAdminSentence(
|
||||
w gemini.ResponseWriter,
|
||||
r *gemini.Request,
|
||||
client TreeManagerClient,
|
||||
) {
|
||||
db, err := zordfsdb.InitDB("./db")
|
||||
if err != nil {
|
||||
w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error")
|
||||
log.Fatal(err)
|
||||
return
|
||||
}
|
||||
|
||||
adminCert, found := db.Get("admin_cert")
|
||||
if !found || adminCert != getCertFingerprint(r) {
|
||||
w.WriteHeader(gemini.StatusNotFound, "Out of space")
|
||||
return
|
||||
}
|
||||
|
||||
q, err := gemini.QueryUnescape(r.URL.RawQuery)
|
||||
if err != nil || q == "" {
|
||||
w.WriteHeader(gemini.StatusInput, Dict().newSentence)
|
||||
return
|
||||
}
|
||||
|
||||
_, found = db.Get("sentences_" + defaultLang)
|
||||
if !found {
|
||||
db.CreateNode("sentences_" + defaultLang)
|
||||
_, _ = db.Get("sentences_" + defaultLang)
|
||||
}
|
||||
id, err := db.AddObject("sentences_" + defaultLang)
|
||||
if err != nil {
|
||||
w.WriteHeader(gemini.StatusTemporaryFailure, "Internal server error")
|
||||
log.Fatal(err)
|
||||
return
|
||||
}
|
||||
db.Save("sentences_"+defaultLang+"."+id+".sentence", q)
|
||||
|
||||
w.WriteHeader(gemini.StatusPermanentRedirect, "/")
|
||||
}
|
||||
|
||||
func renderSearch(
|
||||
w gemini.ResponseWriter,
|
||||
r *gemini.Request,
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
{% import "../macros.tpl" category_url, tag_url, text_url, logo %}
|
||||
# Arna alkierios [EN]
|
||||
|
||||
{% if sentence %}
|
||||
> {{ sentence }}
|
||||
{% else %}
|
||||
Welcome to my capsule in Gemini space. {{ logo() }}
|
||||
|
||||
{% endif %}
|
||||
=> gemini://arns.lt Žemaitėška versėjė
|
||||
=> https://arns.lt http version
|
||||
|
||||
|
@ -23,3 +25,9 @@ Welcome to my capsule in Gemini space. {{ logo() }}
|
|||
Last build: {{lastRebuild}}
|
||||
Total page counter: {{pageCounter}}
|
||||
```
|
||||
|
||||
{% if admin %}
|
||||
### Keravuotuojė sekcėjė
|
||||
=> /admin/sentence ivestė naujė ėšmintė
|
||||
=> /mail misfin pašta skrabėkė
|
||||
{% endif %}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
{% import "../macros.tpl" category_url, tag_url, text_url, logo %}
|
||||
# Arna alkierios
|
||||
|
||||
{% if sentence %}
|
||||
> {{ sentence }}
|
||||
{% else %}
|
||||
Sveikė atvīkėn i mona kapsolė Gemini ertie. {{ logo() }}
|
||||
|
||||
{% endif %}
|
||||
=> gemini://en.arns.lt English version
|
||||
=> https://arns.lt http versėjė
|
||||
|
||||
|
@ -14,7 +16,6 @@ Sveikė atvīkėn i mona kapsolė Gemini ertie. {{ logo() }}
|
|||
=> /t 🏷 Žīmas ({{ tree.Tags|length }})
|
||||
|
||||
{% if lastFiles %}### Paskotėnē īrašā
|
||||
|
||||
{% for file in lastFiles %}{{ text_url(file) }}{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
|
@ -26,4 +27,8 @@ Last build: {{lastRebuild}}
|
|||
Total page counter: {{pageCounter}}
|
||||
```
|
||||
|
||||
{% if admin %}ADMIN{% endif %}
|
||||
{% if admin %}
|
||||
### Keravuotuojė sekcėjė
|
||||
=> /admin/sentence ivestė naujė ėšmintė
|
||||
=> /mail misfin pašta skrabėkė
|
||||
{% endif %}
|
||||
|
|
Loading…
Add table
Reference in a new issue