mirror of
https://github.com/github-tijlxyz/khatru-pyramid.git
synced 2025-06-06 18:31:02 +00:00
button to delete all events from removed users.
This commit is contained in:
parent
83b962b1fd
commit
18e098b536
40
handler.go
40
handler.go
@ -10,10 +10,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func inviteTreeHandler(w http.ResponseWriter, r *http.Request) {
|
func inviteTreeHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
loggedUser := getLoggedUser(r)
|
||||||
content := inviteTreePageHTML(r.Context(), InviteTreePageParams{
|
content := inviteTreePageHTML(r.Context(), InviteTreePageParams{
|
||||||
loggedUser: getLoggedUser(r),
|
loggedUser: loggedUser,
|
||||||
})
|
})
|
||||||
htmlgo.Fprint(w, baseHTML(content), r.Context())
|
htmlgo.Fprint(w, baseHTML(content, loggedUser), r.Context())
|
||||||
}
|
}
|
||||||
|
|
||||||
func addToWhitelistHandler(w http.ResponseWriter, r *http.Request) {
|
func addToWhitelistHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -49,6 +50,41 @@ func removeFromWhitelistHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
htmlgo.Fprint(w, content, r.Context())
|
htmlgo.Fprint(w, content, r.Context())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this deletes all events from users not in the relay anymore
|
||||||
|
func cleanupStuffFromExcludedUsersHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
loggedUser := getLoggedUser(r)
|
||||||
|
if loggedUser != s.RelayPubkey {
|
||||||
|
http.Error(w, "unauthorized, only the relay owner can do this", 403)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
oldLimit := db.MaxLimit
|
||||||
|
db.MaxLimit = 999999
|
||||||
|
ch, err := db.QueryEvents(r.Context(), nostr.Filter{Limit: db.MaxLimit})
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "failed to query", 500)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
db.MaxLimit = oldLimit
|
||||||
|
|
||||||
|
count := 0
|
||||||
|
|
||||||
|
for evt := range ch {
|
||||||
|
if isPublicKeyInWhitelist(evt.PubKey) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := db.DeleteEvent(r.Context(), evt); err != nil {
|
||||||
|
http.Error(w, fmt.Sprintf(
|
||||||
|
"failed to delete %s: %s -- stopping, %d events were deleted before this error", evt, err, count), 500)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(w, "deleted %d events", count)
|
||||||
|
}
|
||||||
|
|
||||||
func reportsViewerHandler(w http.ResponseWriter, r *http.Request) {
|
func reportsViewerHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
events, err := db.QueryEvents(r.Context(), nostr.Filter{
|
events, err := db.QueryEvents(r.Context(), nostr.Filter{
|
||||||
Kinds: []int{1984},
|
Kinds: []int{1984},
|
||||||
|
1
main.go
1
main.go
@ -106,6 +106,7 @@ func main() {
|
|||||||
// http routes
|
// http routes
|
||||||
relay.Router().HandleFunc("/add-to-whitelist", addToWhitelistHandler)
|
relay.Router().HandleFunc("/add-to-whitelist", addToWhitelistHandler)
|
||||||
relay.Router().HandleFunc("/remove-from-whitelist", removeFromWhitelistHandler)
|
relay.Router().HandleFunc("/remove-from-whitelist", removeFromWhitelistHandler)
|
||||||
|
relay.Router().HandleFunc("/cleanup", cleanupStuffFromExcludedUsersHandler)
|
||||||
relay.Router().HandleFunc("/reports", reportsViewerHandler)
|
relay.Router().HandleFunc("/reports", reportsViewerHandler)
|
||||||
relay.Router().HandleFunc("/browse/", joubleHandler)
|
relay.Router().HandleFunc("/browse/", joubleHandler)
|
||||||
relay.Router().Handle("/static/", http.FileServer(http.FS(static)))
|
relay.Router().Handle("/static/", http.FileServer(http.FS(static)))
|
||||||
|
9
pages.go
9
pages.go
@ -9,9 +9,14 @@ import (
|
|||||||
|
|
||||||
const buttonClass = "rounded-md text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300"
|
const buttonClass = "rounded-md text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300"
|
||||||
|
|
||||||
func baseHTML(inside HTMLComponent) HTMLComponent {
|
func baseHTML(inside HTMLComponent, loggedUser string) HTMLComponent {
|
||||||
navItemClass := "text-gray-600 hover:bg-gray-200 rounded-md px-3 py-2 font-medium"
|
navItemClass := "text-gray-600 hover:bg-gray-200 rounded-md px-3 py-2 font-medium"
|
||||||
|
|
||||||
|
cleanupButton := Span("")
|
||||||
|
if loggedUser == s.RelayPubkey {
|
||||||
|
cleanupButton = A().Text("clear stuff").Href("/cleanup").Class(navItemClass)
|
||||||
|
}
|
||||||
|
|
||||||
return HTML(
|
return HTML(
|
||||||
Head(
|
Head(
|
||||||
Meta().Charset("utf-8"),
|
Meta().Charset("utf-8"),
|
||||||
@ -30,6 +35,7 @@ func baseHTML(inside HTMLComponent) HTMLComponent {
|
|||||||
A().Text("invite tree").Href("/").Class(navItemClass).Attr("hx-boost", "true", "hx-target", "main", "hx-select", "main"),
|
A().Text("invite tree").Href("/").Class(navItemClass).Attr("hx-boost", "true", "hx-target", "main", "hx-select", "main"),
|
||||||
A().Text("browse").Href("/browse").Class(navItemClass),
|
A().Text("browse").Href("/browse").Class(navItemClass),
|
||||||
A().Text("reports").Href("/reports").Class(navItemClass).Attr("hx-boost", "true", "hx-target", "main", "hx-select", "main"),
|
A().Text("reports").Href("/reports").Class(navItemClass).Attr("hx-boost", "true", "hx-target", "main", "hx-select", "main"),
|
||||||
|
cleanupButton,
|
||||||
A().Text("").Href("#").Class(navItemClass).
|
A().Text("").Href("#").Class(navItemClass).
|
||||||
Attr("_", `
|
Attr("_", `
|
||||||
on click if my innerText is equal to "login" get window.nostr.signEvent({created_at: Math.round(Date.now()/1000), kind: 27235, tags: [['domain', "`+s.Domain+`"]], content: ''}) then get JSON.stringify(it) then set cookies['nip98'] to it otherwise call cookies.clear('nip98') end then call location.reload()
|
on click if my innerText is equal to "login" get window.nostr.signEvent({created_at: Math.round(Date.now()/1000), kind: 27235, tags: [['domain', "`+s.Domain+`"]], content: ''}) then get JSON.stringify(it) then set cookies['nip98'] to it otherwise call cookies.clear('nip98') end then call location.reload()
|
||||||
@ -137,5 +143,6 @@ func reportsPageHTML(ctx context.Context, params ReportsPageParams) HTMLComponen
|
|||||||
H1("reports received").Class("text-xl p-4"),
|
H1("reports received").Class("text-xl p-4"),
|
||||||
Div(items...),
|
Div(items...),
|
||||||
),
|
),
|
||||||
|
params.loggedUser,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user