quassellogs/auth.go

55 lines
1.0 KiB
Go

package main
import (
"fmt"
"os"
"strings"
)
type userList map[string]string
func (u userList) lookup(t string) (username string){
for u,p := range u{
if t == p {
username = u
break
}
}
return
}
func (u userList) loadFromFile(f string) {
uf,err := os.ReadFile(f)
if err != nil {
fmt.Printf("Could not find or open %s", f)
os.Exit(1)
}
b := strings.Split(string(uf),"\n")
for _,l := range b {
if l != ""{
a := strings.Split(l,"|")
u[a[0]] = a[1]
}
}
}
func authFail (r rq) {
fmt.Println("failed authentication from",r.r.RemoteAddr)
r.w.WriteHeader(403)
r.w.Write([]byte("Go away"))
}
func testAuth (r rq, u userList) (bool, string){
if v, c := r.r.Header["Authorization"]; c {
auth := v[0]
user := u.lookup(auth)
if user != "" {
return true, user
}else{
return false, ""
}
}else{
return false, ""
}
}