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
|
package main
|
||||||
|
|
||||||
type dict struct {
|
type dict struct {
|
||||||
hostname string
|
hostname string
|
||||||
languageEn string
|
languageEn string
|
||||||
searchStr string
|
searchStr string
|
||||||
|
newSentence string
|
||||||
}
|
}
|
||||||
|
|
||||||
var EN = dict{
|
var EN = dict{
|
||||||
hostname: "en.arns.lt",
|
hostname: "en.arns.lt",
|
||||||
languageEn: "English",
|
languageEn: "English",
|
||||||
searchStr: "Input searching tag, created date or word in description",
|
searchStr: "Input searching tag, created date or word in description",
|
||||||
|
newSentence: "New sentence",
|
||||||
}
|
}
|
||||||
|
|
||||||
var SGS = dict{
|
var SGS = dict{
|
||||||
hostname: "en.arns.lt",
|
hostname: "en.arns.lt",
|
||||||
languageEn: "Samogitian",
|
languageEn: "Samogitian",
|
||||||
searchStr: "Ivesk ėiškuoma žīma, sokūrėma data arba žuodi ėš aprašīma",
|
searchStr: "Ivesk ėiškuoma žīma, sokūrėma data arba žuodi ėš aprašīma",
|
||||||
|
newSentence: "Naujė ėšmintės",
|
||||||
}
|
}
|
||||||
|
|
||||||
func Dict() dict {
|
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/abcex/v4 v4.0.4 // indirect
|
||||||
|
|
||||||
require (
|
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
|
github.com/golang/protobuf v1.5.2 // indirect
|
||||||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect
|
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect
|
||||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // 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=
|
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 h1:idjvgkCjrjZfDxLyOcX7lCIdIndISDAkj77VCvhu8/c=
|
||||||
g.arns.lt/zordsdavini/abcex/v4 v4.0.4/go.mod h1:/+//gYSUtJrdsmTtWNoffRO4xD1BuPRUMGW4ynet7iE=
|
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.6 h1:N42qGkb0XBzSC58E5QLGMop4W9GlvUfgduuWtkUSrVk=
|
||||||
g.arns.lt/zordsdavini/zordfsdb v1.0.4/go.mod h1:CpFWjby+GB/+mrJFTsCDJHS5UCWHty6Y7Pf/Ui7IR90=
|
g.arns.lt/zordsdavini/zordfsdb v1.0.6/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.7 h1:uzm9m4xORpFz9aWmvGEmTsSNPzXqVCI1A5G2szpzPAo=
|
||||||
g.arns.lt/zordsdavini/zordfsdb v1.0.5/go.mod h1:CpFWjby+GB/+mrJFTsCDJHS5UCWHty6Y7Pf/Ui7IR90=
|
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 h1:oJ+Y0/mheZ4Vg0ABjtf5dlmvq1yoONStiaQvmWWkofc=
|
||||||
git.sr.ht/~adnano/go-gemini v0.2.3/go.mod h1:hQ75Y0i5jSFL+FQ7AzWVAYr5LQsaFC7v3ZviNyj46dY=
|
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=
|
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)
|
renderAbout(w)
|
||||||
case regexp.MustCompile(`^/s/?$`).MatchString(r.URL.Path):
|
case regexp.MustCompile(`^/s/?$`).MatchString(r.URL.Path):
|
||||||
renderSearch(w, r, client)
|
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):
|
case regexp.MustCompile(`^/t/?$`).MatchString(r.URL.Path):
|
||||||
renderTags(w, client)
|
renderTags(w, client)
|
||||||
case regexp.MustCompile(`^/f/?$`).MatchString(r.URL.Path):
|
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")
|
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")
|
w.SetMediaType("text/gemini")
|
||||||
tpl := pongo2.Must(pongo2.FromFile(fmt.Sprintf("templates/%s/index.gmi", defaultLang)))
|
tpl := pongo2.Must(pongo2.FromFile(fmt.Sprintf("templates/%s/index.gmi", defaultLang)))
|
||||||
page, err := tpl.Execute(
|
page, err := tpl.Execute(
|
||||||
|
@ -268,6 +277,7 @@ func renderIndex(w gemini.ResponseWriter, client TreeManagerClient, r *gemini.Re
|
||||||
"lastRebuild": lastRebuild,
|
"lastRebuild": lastRebuild,
|
||||||
"pageCounter": pageCounter,
|
"pageCounter": pageCounter,
|
||||||
"admin": adminCert == getCertFingerprint(r),
|
"admin": adminCert == getCertFingerprint(r),
|
||||||
|
"sentence": sentence,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if err != nil {
|
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(
|
func renderSearch(
|
||||||
w gemini.ResponseWriter,
|
w gemini.ResponseWriter,
|
||||||
r *gemini.Request,
|
r *gemini.Request,
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
{% import "../macros.tpl" category_url, tag_url, text_url, logo %}
|
{% import "../macros.tpl" category_url, tag_url, text_url, logo %}
|
||||||
# Arna alkierios [EN]
|
# Arna alkierios [EN]
|
||||||
|
{% if sentence %}
|
||||||
|
> {{ sentence }}
|
||||||
|
{% else %}
|
||||||
Welcome to my capsule in Gemini space. {{ logo() }}
|
Welcome to my capsule in Gemini space. {{ logo() }}
|
||||||
|
{% endif %}
|
||||||
=> gemini://arns.lt Žemaitėška versėjė
|
=> gemini://arns.lt Žemaitėška versėjė
|
||||||
=> https://arns.lt http version
|
=> https://arns.lt http version
|
||||||
|
|
||||||
|
@ -23,3 +25,9 @@ Welcome to my capsule in Gemini space. {{ logo() }}
|
||||||
Last build: {{lastRebuild}}
|
Last build: {{lastRebuild}}
|
||||||
Total page counter: {{pageCounter}}
|
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 %}
|
{% import "../macros.tpl" category_url, tag_url, text_url, logo %}
|
||||||
# Arna alkierios
|
# Arna alkierios
|
||||||
|
{% if sentence %}
|
||||||
|
> {{ sentence }}
|
||||||
|
{% else %}
|
||||||
Sveikė atvīkėn i mona kapsolė Gemini ertie. {{ logo() }}
|
Sveikė atvīkėn i mona kapsolė Gemini ertie. {{ logo() }}
|
||||||
|
{% endif %}
|
||||||
=> gemini://en.arns.lt English version
|
=> gemini://en.arns.lt English version
|
||||||
=> https://arns.lt http versėjė
|
=> 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 }})
|
=> /t 🏷 Žīmas ({{ tree.Tags|length }})
|
||||||
|
|
||||||
{% if lastFiles %}### Paskotėnē īrašā
|
{% if lastFiles %}### Paskotėnē īrašā
|
||||||
|
|
||||||
{% for file in lastFiles %}{{ text_url(file) }}{% endfor %}
|
{% for file in lastFiles %}{{ text_url(file) }}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -26,4 +27,8 @@ Last build: {{lastRebuild}}
|
||||||
Total page counter: {{pageCounter}}
|
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