mirror of
https://github.com/jech/galene.git
synced 2024-11-25 01:55:57 +01:00
Read public groups at startup.
This commit is contained in:
parent
5796d4065b
commit
d33b52179e
2 changed files with 42 additions and 5 deletions
41
group.go
41
group.go
|
@ -11,6 +11,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/pion/webrtc/v2"
|
"github.com/pion/webrtc/v2"
|
||||||
|
@ -89,7 +90,7 @@ var groups struct {
|
||||||
api *webrtc.API
|
api *webrtc.API
|
||||||
}
|
}
|
||||||
|
|
||||||
func addGroup(name string) (*group, error) {
|
func addGroup(name string, desc *groupDescription) (*group, error) {
|
||||||
groups.mu.Lock()
|
groups.mu.Lock()
|
||||||
defer groups.mu.Unlock()
|
defer groups.mu.Unlock()
|
||||||
|
|
||||||
|
@ -105,17 +106,23 @@ func addGroup(name string) (*group, error) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
g := groups.groups[name]
|
g := groups.groups[name]
|
||||||
if g == nil {
|
if g == nil {
|
||||||
desc, err := getDescription(name)
|
if(desc == nil) {
|
||||||
|
desc, err = getDescription(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
g = &group{
|
g = &group{
|
||||||
name: name,
|
name: name,
|
||||||
description: desc,
|
description: desc,
|
||||||
}
|
}
|
||||||
groups.groups[name] = g
|
groups.groups[name] = g
|
||||||
|
} else if desc != nil {
|
||||||
|
g.description = desc
|
||||||
} else if g.dead || time.Since(g.description.loadTime) > 5*time.Second {
|
} else if g.dead || time.Since(g.description.loadTime) > 5*time.Second {
|
||||||
changed, err := descriptionChanged(name, g.description)
|
changed, err := descriptionChanged(name, g.description)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -164,7 +171,7 @@ type userid struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func addClient(name string, client *client, user, pass string) (*group, []userid, error) {
|
func addClient(name string, client *client, user, pass string) (*group, []userid, error) {
|
||||||
g, err := addGroup(name)
|
g, err := addGroup(name, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -383,3 +390,31 @@ func getPublicGroups() []publicGroup {
|
||||||
}
|
}
|
||||||
return gs
|
return gs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func readPublicGroups() {
|
||||||
|
dir, err := os.Open(groupsDir)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer dir.Close()
|
||||||
|
|
||||||
|
fis, err := dir.Readdir(-1)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("readPublicGroups: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fi := range fis {
|
||||||
|
if !strings.HasSuffix(fi.Name(), ".json") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
name := fi.Name()[:len(fi.Name()) - 5]
|
||||||
|
desc, err := getDescription(name)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if desc.Public {
|
||||||
|
addGroup(name, desc)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
2
sfu.go
2
sfu.go
|
@ -45,6 +45,8 @@ func main() {
|
||||||
http.HandleFunc("/ws", wsHandler)
|
http.HandleFunc("/ws", wsHandler)
|
||||||
http.HandleFunc("/public-groups.json", publicHandler)
|
http.HandleFunc("/public-groups.json", publicHandler)
|
||||||
|
|
||||||
|
go readPublicGroups()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
server := &http.Server{
|
server := &http.Server{
|
||||||
Addr: httpAddr,
|
Addr: httpAddr,
|
||||||
|
|
Loading…
Reference in a new issue