Include acts and joinparts

This commit is contained in:
palm93 2022-08-03 20:36:40 +01:00
parent 20f2859b7a
commit 2f60c81690
3 changed files with 56 additions and 16 deletions

View File

@ -7,10 +7,39 @@ import (
"net/url"
"os"
"strings"
"time"
"github.com/jackc/pgx/v4"
)
type MessageText struct {
t *string
}
type Message struct {
t int
time time.Time
userid int
buffername string
sender string
message string
}
func (mt MessageText) Scan(src interface{}) error {
switch v := src.(type) {
case string:
*mt.t = v
case []byte:
*mt.t = string(v)
case nil:
*mt.t = ""
default:
*mt.t = ""
}
return nil
}
func logsHandler (w http.ResponseWriter, r *http.Request){
rr := rq{w,r}
if isAuthed,user := testAuth(rr,users); isAuthed {
@ -31,20 +60,32 @@ func logsHandler (w http.ResponseWriter, r *http.Request){
fmt.Println(err)
}
if uid != 0 {
rows,err := con.Query(context.Background(), "select * from (select backlog.type, backlog.time, buffer.userid, buffer.buffername, sender.sender, backlog.message from backlog natural join sender natural join buffer where buffer.userid=$1 and type in (1) and buffer.buffername=$2 order by backlog.time asc) as test;", uid,channel )
rows,err := con.Query(context.Background(), "select * from (select backlog.type, backlog.time, buffer.userid, buffer.buffername, sender.sender, backlog.message from backlog natural join sender natural join buffer where buffer.userid=$1 and type in (1, 4, 32, 128) and buffer.buffername=$2 order by backlog.time asc) as test;", uid,channel )
defer rows.Close()
if err != nil{
fmt.Println(err)
}
for rows.Next() {
var m Message
err = rows.Scan(&m.t,&m.time,&m.userid,&m.buffername,&m.sender,&m.message)
err = rows.Scan(&m.t,&m.time,&m.userid,&m.buffername,&m.sender,MessageText{&m.message})
if err != nil {
fmt.Println(err)
}
sendernick := strings.Split(m.sender,"!")
fm := m.time.String()+" <"+sendernick[0]+"> "+m.message
w.Write([]byte(fm+"\n"))
time := m.time.String()
switch m.t {
case 1:
w.Write([]byte(time+" <"+sendernick[0]+"> "+m.message+"\n"))
case 4:
w.Write([]byte(time+" * "+sendernick[0]+" "+m.message+"\n"))
case 32:
w.Write([]byte(time+" "+sendernick[0]+" joined "+m.message+"\n"))
case 128:
w.Write([]byte(time+" "+sendernick[0]+" left: "+m.message+"\n"))
}
}
if rows.Err() != nil {
fmt.Println(rows.Err())

21
main.go
View File

@ -1,20 +1,11 @@
package main
import (
"fmt"
"net/http"
"os"
"time"
)
type Message struct {
t int
time time.Time
userid int
buffername string
sender string
message string
}
type rq struct {
w http.ResponseWriter
r *http.Request
@ -26,7 +17,15 @@ func main() {
users = make(userList)
users.loadFromFile("users.txt")
http.HandleFunc("/logs/", logsHandler)
if err := http.ListenAndServe(":"+os.Getenv("QL_LISTEN_PORT"), nil); err != nil {
listenPort := "8087"
if os.Getenv("QL_LISTEN_PORT") != "" {
listenPort = os.Getenv("QL_LISTEN_PORT")
}
if os.Getenv("QL_DB_STRING") == ""{
fmt.Println("require environment variable for postgres connection string: QL_DB_STRING")
os.Exit(1)
}
if err := http.ListenAndServe(":"+listenPort, nil); err != nil {
panic(err)
}
}

2
qlogs
View File

@ -1,7 +1,7 @@
#!/usr/bin/fish
# get quassel logs from api
set endpoint "http://localhost:8080"
set endpoint "http://localhost:8087"
read password < ~/.qlogs