initial commit
Build and Publish Package (amd64) / docker (push) Failing after 1m28s

This commit is contained in:
2026-07-25 17:15:24 +02:00
commit 9acd7406e9
10 changed files with 848 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
package main
import (
"os"
"gopkg.in/yaml.v3"
)
type HomeserverConfig struct {
Domain string `yaml:"domain"`
URL string `yaml:"url"`
}
type AppserviceConfig struct {
ID string `yaml:"id"`
ASToken string `yaml:"as_token"`
HSToken string `yaml:"hs_token"`
BotLocalpart string `yaml:"bot_localpart"`
Address string `yaml:"address"`
Port uint16 `yaml:"port"`
}
type BridgeConfig struct {
NtfyURL string `yaml:"ntfy_url"`
Permissions map[string]string `yaml:"permissions"`
}
type Config struct {
Homeserver HomeserverConfig `yaml:"homeserver"`
Appservice AppserviceConfig `yaml:"appservice"`
Bridge BridgeConfig `yaml:"bridge"`
}
func LoadConfig(path string) (*Config, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, err
}
cfg := &Config{}
if err = yaml.Unmarshal(data, cfg); err != nil {
return nil, err
}
if cfg.Bridge.Permissions == nil {
cfg.Bridge.Permissions = make(map[string]string)
}
if cfg.Bridge.NtfyURL == "" {
cfg.Bridge.NtfyURL = "https://ntfy.sh"
}
if cfg.Appservice.Address == "" {
cfg.Appservice.Address = "0.0.0.0"
}
if cfg.Appservice.Port == 0 {
cfg.Appservice.Port = 8080
}
return cfg, nil
}
func (b *BridgeConfig) PermissionLevel(id string) string {
if level, ok := b.Permissions[id]; ok {
return level
}
return ""
}
func (b *BridgeConfig) HasPermission(userID, requiredLevel string) bool {
level := b.PermissionLevel(userID)
if level == "" {
level = b.PermissionLevel("*")
}
if level == "" {
return false
}
if requiredLevel == "admin" {
return level == "admin"
}
return true
}