cleanup and switch to just sync token
This commit is contained in:
parent
54d876a989
commit
547977237c
37
client.go
37
client.go
@ -1,18 +1,21 @@
|
|||||||
package matrixbotlib
|
package matrixbotlib
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"gopkg.in/yaml.v2"
|
||||||
"maunium.net/go/mautrix"
|
"maunium.net/go/mautrix"
|
||||||
"maunium.net/go/mautrix/event"
|
"maunium.net/go/mautrix/event"
|
||||||
"maunium.net/go/mautrix/id"
|
"maunium.net/go/mautrix/id"
|
||||||
)
|
)
|
||||||
|
|
||||||
//NewMatrixClient returns a new logged in Mautrix Client struct
|
// NewMatrixClient returns a new logged in Mautrix Client struct
|
||||||
func NewMatrixClient(config *MatrixClientConfig, store mautrix.Storer) (*mautrix.Client, error) {
|
func NewMatrixClient(config *MatrixClientConfig, store mautrix.Storer) (*mautrix.Client, error) {
|
||||||
var client *mautrix.Client
|
var client *mautrix.Client
|
||||||
var err error
|
var err error
|
||||||
//make sure username is lower case otherwise token login breaks
|
// make sure username is lower case otherwise token login breaks
|
||||||
uname := strings.ToLower(config.Username)
|
uname := strings.ToLower(config.Username)
|
||||||
if config.Token == "" {
|
if config.Token == "" {
|
||||||
client, err = mautrix.NewClient(config.Homeserver, "", "")
|
client, err = mautrix.NewClient(config.Homeserver, "", "")
|
||||||
@ -37,11 +40,37 @@ func NewMatrixClient(config *MatrixClientConfig, store mautrix.Storer) (*mautrix
|
|||||||
return client, err
|
return client, err
|
||||||
}
|
}
|
||||||
config.Token = loginRes.AccessToken
|
config.Token = loginRes.AccessToken
|
||||||
WriteMatrixClientConfig(config)
|
err = SyncToken(config)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return client, err
|
return client, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SyncToken(config *MatrixClientConfig) error {
|
||||||
|
file, err := os.OpenFile(config.filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o600)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
t := make(map[string]interface{})
|
||||||
|
data, err := io.ReadAll(file)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
yaml.Unmarshal([]byte(data), &t)
|
||||||
|
t["token"] = config.Token
|
||||||
|
enc := yaml.NewEncoder(file)
|
||||||
|
|
||||||
|
err = enc.Encode(t)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// SetupAccountDataStore sets the client to use a AccountData store and filter appropriately
|
// SetupAccountDataStore sets the client to use a AccountData store and filter appropriately
|
||||||
func SetupAccountDataStore(client *mautrix.Client, token string) error {
|
func SetupAccountDataStore(client *mautrix.Client, token string) error {
|
||||||
dataFilter := &mautrix.Filter{
|
dataFilter := &mautrix.Filter{
|
||||||
@ -56,7 +85,7 @@ func SetupAccountDataStore(client *mautrix.Client, token string) error {
|
|||||||
store := mautrix.NewAccountDataStore(token, client)
|
store := mautrix.NewAccountDataStore(token, client)
|
||||||
fID, err := client.CreateFilter(dataFilter)
|
fID, err := client.CreateFilter(dataFilter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//don't want to continue if we can't keep state
|
// don't want to continue if we can't keep state
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
uid := client.UserID
|
uid := client.UserID
|
||||||
|
49
config.go
49
config.go
@ -1,43 +1,54 @@
|
|||||||
package matrixbotlib
|
package matrixbotlib
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/kelseyhightower/envconfig"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
//MatrixClientConfig represents the config requires to log into the matrix server
|
// MatrixClientConfig represents the config requires to log into the matrix server
|
||||||
type MatrixClientConfig struct {
|
type MatrixClientConfig struct {
|
||||||
Homeserver string `yaml:"homeserver"`
|
Homeserver string `required:"true" yaml:"homeserver"`
|
||||||
Domain string `yaml:"domain"`
|
Domain string `required:"true" yaml:"domain"`
|
||||||
Dimension string `yaml:"dimension"`
|
Dimension string `yaml:"dimension"`
|
||||||
Username string `yaml:"username"`
|
Username string `required:"true" yaml:"username"`
|
||||||
Password string `yaml:"password"`
|
Password string `required:"true" yaml:"password"`
|
||||||
Statefile string `yaml:"statefile,omitempty"`
|
Statefile string `yaml:"statefile,omitempty"`
|
||||||
Token string `yaml:"token"`
|
Token string `yaml:"token"`
|
||||||
filename string
|
filename string
|
||||||
}
|
}
|
||||||
|
|
||||||
//LoadMatrixClientConfig reads info from a file
|
// LoadMatrixClientConfig reads info from a file
|
||||||
func LoadMatrixClientConfig(filename string) (*MatrixClientConfig, error) {
|
func LoadMatrixClientConfig(filename string) (*MatrixClientConfig, error) {
|
||||||
yamlFile, err := ioutil.ReadFile(filename)
|
cnf := MatrixClientConfig{}
|
||||||
cnf := &MatrixClientConfig{}
|
if filename != "" {
|
||||||
if err == nil {
|
yamlFile, err := os.ReadFile(filename)
|
||||||
err = yaml.Unmarshal(yamlFile, cnf)
|
if err == nil {
|
||||||
|
err = yaml.Unmarshal(yamlFile, &cnf)
|
||||||
|
} else {
|
||||||
|
return &cnf, err
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return &cnf, err
|
||||||
|
}
|
||||||
|
cnf.filename = filename
|
||||||
} else {
|
} else {
|
||||||
return cnf, err
|
err := envconfig.Process("matrix", &cnf)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
return &cnf, nil
|
||||||
return cnf, err
|
|
||||||
}
|
|
||||||
cnf.filename = filename
|
|
||||||
return cnf, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//WriteMatrixClientConfig saves current running config to a file
|
// WriteMatrixClientConfig saves current running config to a file
|
||||||
func WriteMatrixClientConfig(cnf *MatrixClientConfig) error {
|
func WriteMatrixClientConfig(cnf *MatrixClientConfig) error {
|
||||||
file, err := os.OpenFile(cnf.filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
|
if cnf.filename == "" {
|
||||||
|
return errors.New("not loaded from config file")
|
||||||
|
}
|
||||||
|
file, err := os.OpenFile(cnf.filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o600)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
1
go.mod
1
go.mod
@ -8,6 +8,7 @@ require (
|
|||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/kelseyhightower/envconfig v1.4.0 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.19 // indirect
|
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||||
github.com/rs/zerolog v1.29.1 // indirect
|
github.com/rs/zerolog v1.29.1 // indirect
|
||||||
|
2
go.sum
2
go.sum
@ -1,6 +1,8 @@
|
|||||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
|
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
|
||||||
|
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
|
||||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
|
Loading…
Reference in New Issue
Block a user