diff --git a/bin/salty-chat.sh b/bin/salty-chat.sh index dc5335a..ee3460b 100755 --- a/bin/salty-chat.sh +++ b/bin/salty-chat.sh @@ -1,6 +1,6 @@ #!/bin/sh -set -e +set -ex # Validate environment if ! command -v jq > /dev/null; then @@ -83,6 +83,7 @@ stream () { } check_cors() { + return 0 if [ $# -lt 1 ]; then printf "check_cors takes 1 arugment %d given\n" "$#" printf "Try %s check_cors uri\n" "$(basename "$0")" @@ -114,11 +115,11 @@ lookup () { domain="$(echo "$user" | awk -F@ '{ print $2 }')" hash="$(printf "%s" "$user" | sha256sum | cut -f 1 -d ' ')" - discovery_host="$(dig +short SRV _salty._tcp."$domain" | cut -f 4 -d' ')" + discovery_host="$(dig +short SRV _salty._tcp."$domain" | cut -f 4 -d' ' | sed 's/.$//')" if [ -z "$discovery_host" ]; then discovery_host="$domain" else - discovery_host="$(printf "%s" "$discovery_host" | sed -e 's/\.$//')" + discovery_host="$(echo "$discovery_host" | sed 's/.$//')" fi info=$(mktemp /tmp/salty.XXXXXX) @@ -301,9 +302,9 @@ register () { nick="$(echo "$user" | awk -F@ '{ print $1 }')" domain="$(echo "$user" | awk -F@ '{ print $2 }')" - discovery_host="$(dig +short SRV _salty._tcp."$domain" | cut -f 4 -d' ')" + discovery_host="$(dig +short SRV _salty._tcp."$domain" | cut -f 4 -d' ' | sed 's/.$//')" if [ -z "$discovery_host" ]; then - discovery_host="$domain" + discovery_host="$(echo "$discovery_host" | sed 's/.$//')" fi identity_file="$data_path/$nick.key" diff --git a/client.go b/client.go index 6509ca7..493e100 100644 --- a/client.go +++ b/client.go @@ -70,7 +70,7 @@ func NewClient(me *Addr, options ...IdentityOption) (*Client, error) { } if err := me.Refresh(); err != nil { - return nil, fmt.Errorf("error looking up user endpoint: %w", err) + return nil, fmt.Errorf("error looking up user endpoint %s: %w", me.HashURI(), err) } log.Debugf("Using identity %s with public key %s", ident.Source(), ident.key) diff --git a/internal/server.go b/internal/server.go index c3c5155..5c68c1a 100644 --- a/internal/server.go +++ b/internal/server.go @@ -109,6 +109,10 @@ func (s *Server) Run() (err error) { ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) defer cancel() + if s.svc != nil { + s.svc.Run(ctx) + } + <-ctx.Done() log.Infof("Received signal %s", ctx.Err()) @@ -227,7 +231,7 @@ func (s *Server) setupSvcUser() { // create our addr me, err := saltyim.ParseAddr(s.config.SvcUser) if err != nil { - log.WithError(err).Error("error oarsing scv user addr: %w", err) + log.WithError(err).Error("error parsing svc user addr: %w", err) return } @@ -248,7 +252,7 @@ func (s *Server) setupSvcUser() { } // Wait for things to settle - time.Sleep(time.Second * 5) + //time.Sleep(time.Second * 5) cli, err := saltyim.NewClient(me, saltyim.WithIdentity(ident)) if err != nil { @@ -278,10 +282,12 @@ func (s *Server) setupSvcUser() { Key: key.String(), }, "OK") }) + + log.Println(s.svc) } func (s *Server) runStartupJobs() { - time.Sleep(time.Second * 5) + // time.Sleep(time.Second * 5) log.Info("running startup jobs") for name, jobSpec := range StartupJobs { @@ -436,7 +442,7 @@ func NewServer(bind string, options ...Option) (*Server, error) { server.initRoutes() go server.runStartupJobs() - go server.setupSvcUser() + server.setupSvcUser() return server, nil } diff --git a/lookup.go b/lookup.go index 188a7b5..497d938 100644 --- a/lookup.go +++ b/lookup.go @@ -4,7 +4,6 @@ import ( "crypto/sha256" "encoding/json" "fmt" - "io/ioutil" "net/http" "net/url" "strings" @@ -24,13 +23,8 @@ func fetchConfig(addr string) (Config, error) { return Config{}, err } - data, err := ioutil.ReadAll(res.Body) - if err != nil { - return Config{}, err - } - var config Config - if err := json.Unmarshal(data, &config); err != nil { + if err := json.NewDecoder(res.Body).Decode(&config); err != nil { return Config{}, err } @@ -122,7 +116,7 @@ func (a *Addr) HashURI() string { func (a *Addr) Refresh() error { log.Debugf("Looking up SRV record for _salty._tcp.%s", a.Domain) if target, err := resolver.LookupSRV("salty", "tcp", a.Domain); err == nil { - a.discoveredDomain = target + a.discoveredDomain = strings.TrimSuffix(target, ".") log.Debugf("Discovered salty services %s", a.discoveredDomain) } else if err != nil { log.Debugf("error looking up SRV record for _salty._tcp.%s : %s", a.Domain, err) diff --git a/resolv.go b/resolv.go index da7d247..e2f7e9d 100644 --- a/resolv.go +++ b/resolv.go @@ -44,7 +44,7 @@ func (r *StandardResolver) LookupSRV(service, proto, domain string) (string, err if len(records) == 0 { return "", ErrSRVRecordNotFound } - return records[0].Target, nil + return strings.TrimSuffix(records[0].Target, "."), nil } type DNSOverHTTPResolver struct{} @@ -74,5 +74,5 @@ func (r *DNSOverHTTPResolver) LookupSRV(service, proto, domain string) (string, if len(fields) != 4 { return "", fmt.Errorf("invalid SRV records found expected 4 fields got %d: %q", len(fields), data) } - return fields[3], nil + return strings.TrimSuffix(fields[3], "."), nil } diff --git a/service.go b/service.go index ee9153f..ec525e8 100644 --- a/service.go +++ b/service.go @@ -53,7 +53,7 @@ func (svc *Service) String() string { } func (svc *Service) Run(ctx context.Context) { - log.Println("listining for bot: ", svc.Me().Endpoint()) + log.Println("listining for bot: ", svc.Me()) msgch := svc.Read(ctx, "", "") for { select {