summaryrefslogtreecommitdiff
path: root/internal/federation
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2022-05-30 13:41:24 +0100
committerLibravatar GitHub <noreply@github.com>2022-05-30 14:41:24 +0200
commit43ac0cdb9c4eea9d3c5eceb2c11b9e5b98b87b00 (patch)
treef0d5967d0ce639b6bc82aaf607f62e228fdf4559 /internal/federation
parent[chore] Mastodon api fixups (#617) (diff)
downloadgotosocial-43ac0cdb9c4eea9d3c5eceb2c11b9e5b98b87b00.tar.xz
[chore] Global server configuration overhaul (#575)
* move config flag names and usage to config package, rewrite config package to use global Configuration{} struct Signed-off-by: kim <grufwub@gmail.com> * improved code comment Signed-off-by: kim <grufwub@gmail.com> * linter Signed-off-by: kim <grufwub@gmail.com> * fix unmarshaling Signed-off-by: kim <grufwub@gmail.com> * remove kim's custom go compiler changes Signed-off-by: kim <grufwub@gmail.com> * generate setter and flag-name functions, implement these in codebase Signed-off-by: kim <grufwub@gmail.com> * update deps Signed-off-by: kim <grufwub@gmail.com> * small change Signed-off-by: kim <grufwub@gmail.com> * appease the linter... Signed-off-by: kim <grufwub@gmail.com> * move configuration into ConfigState structure, ensure reloading to/from viper settings to keep in sync Signed-off-by: kim <grufwub@gmail.com> * lint Signed-off-by: kim <grufwub@gmail.com> * update code comments Signed-off-by: kim <grufwub@gmail.com> * fix merge issue Signed-off-by: kim <grufwub@gmail.com> * fix merge issue Signed-off-by: kim <grufwub@gmail.com> * improved version string (removes time + go version) Signed-off-by: kim <grufwub@gmail.com> * fix version string build to pass test script + consolidate logic in func Signed-off-by: kim <grufwub@gmail.com> * add license text, update config.Defaults comment Signed-off-by: kim <grufwub@gmail.com> * add license text to generated config helpers file Signed-off-by: kim <grufwub@gmail.com> * defer unlock on config.Set___(), to ensure unlocked on panic Signed-off-by: kim <grufwub@gmail.com> * make it more obvious which cmd flags are being attached Signed-off-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/federation')
-rw-r--r--internal/federation/authenticate.go4
-rw-r--r--internal/federation/dereferencing/thread.go13
-rw-r--r--internal/federation/federatingdb/inbox.go3
-rw-r--r--internal/federation/federatingdb/owns.go4
-rw-r--r--internal/federation/federatingdb/update.go4
-rw-r--r--internal/federation/federatingdb/util.go5
6 files changed, 9 insertions, 24 deletions
diff --git a/internal/federation/authenticate.go b/internal/federation/authenticate.go
index 380fa1448..1d0a4a7ef 100644
--- a/internal/federation/authenticate.go
+++ b/internal/federation/authenticate.go
@@ -29,7 +29,6 @@ import (
"strings"
"github.com/sirupsen/logrus"
- "github.com/spf13/viper"
"github.com/go-fed/httpsig"
"github.com/superseriousbusiness/activity/pub"
@@ -168,8 +167,7 @@ func (f *federator) AuthenticateFederatedRequest(ctx context.Context, requestedU
requestingRemoteAccount := &gtsmodel.Account{}
requestingLocalAccount := &gtsmodel.Account{}
requestingHost := requestingPublicKeyID.Host
- host := viper.GetString(config.Keys.Host)
- if strings.EqualFold(requestingHost, host) {
+ if host := config.GetHost(); strings.EqualFold(requestingHost, host) {
// LOCAL ACCOUNT REQUEST
// the request is coming from INSIDE THE HOUSE so skip the remote dereferencing
l.Tracef("proceeding without dereference for local public key %s", requestingPublicKeyID)
diff --git a/internal/federation/dereferencing/thread.go b/internal/federation/dereferencing/thread.go
index 4e161952d..096d0e8ae 100644
--- a/internal/federation/dereferencing/thread.go
+++ b/internal/federation/dereferencing/thread.go
@@ -24,7 +24,6 @@ import (
"net/url"
"github.com/sirupsen/logrus"
- "github.com/spf13/viper"
"github.com/superseriousbusiness/gotosocial/internal/ap"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/uris"
@@ -45,8 +44,7 @@ func (d *deref) DereferenceThread(ctx context.Context, username string, statusIR
l.Debug("entering DereferenceThread")
// if it's our status we already have everything stashed so we can bail early
- host := viper.GetString(config.Keys.Host)
- if statusIRI.Host == host {
+ if statusIRI.Host == config.GetHost() {
l.Debug("iri belongs to us, bailing")
return nil
}
@@ -80,8 +78,7 @@ func (d *deref) iterateAncestors(ctx context.Context, username string, statusIRI
l.Debug("entering iterateAncestors")
// if it's our status we don't need to dereference anything so we can immediately move up the chain
- host := viper.GetString(config.Keys.Host)
- if statusIRI.Host == host {
+ if statusIRI.Host == config.GetHost() {
l.Debug("iri belongs to us, moving up to next ancestor")
// since this is our status, we know we can extract the id from the status path
@@ -132,8 +129,7 @@ func (d *deref) iterateDescendants(ctx context.Context, username string, statusI
l.Debug("entering iterateDescendants")
// if it's our status we already have descendants stashed so we can bail early
- host := viper.GetString(config.Keys.Host)
- if statusIRI.Host == host {
+ if statusIRI.Host == config.GetHost() {
l.Debug("iri belongs to us, bailing")
return nil
}
@@ -209,8 +205,7 @@ pageLoop:
continue
}
- host := viper.GetString(config.Keys.Host)
- if itemURI.Host == host {
+ if itemURI.Host == config.GetHost() {
// skip if the reply is from us -- we already have it then
continue
}
diff --git a/internal/federation/federatingdb/inbox.go b/internal/federation/federatingdb/inbox.go
index 20a9bb06c..8d8ffffed 100644
--- a/internal/federation/federatingdb/inbox.go
+++ b/internal/federation/federatingdb/inbox.go
@@ -23,7 +23,6 @@ import (
"fmt"
"net/url"
- "github.com/spf13/viper"
"github.com/superseriousbusiness/activity/streams"
"github.com/superseriousbusiness/activity/streams/vocab"
"github.com/superseriousbusiness/gotosocial/internal/config"
@@ -80,7 +79,7 @@ func (f *federatingDB) SetInbox(c context.Context, inbox vocab.ActivityStreamsOr
// The library makes this call only after acquiring a lock first.
func (f *federatingDB) InboxesForIRI(c context.Context, iri *url.URL) (inboxIRIs []*url.URL, err error) {
// check if this is a followers collection iri for a local account...
- if iri.Host == viper.GetString(config.Keys.Host) && uris.IsFollowersPath(iri) {
+ if iri.Host == config.GetHost() && uris.IsFollowersPath(iri) {
localAccountUsername, err := uris.ParseFollowersPath(iri)
if err != nil {
return nil, fmt.Errorf("couldn't extract local account username from uri %s: %s", iri, err)
diff --git a/internal/federation/federatingdb/owns.go b/internal/federation/federatingdb/owns.go
index bfb656a16..aaa58348f 100644
--- a/internal/federation/federatingdb/owns.go
+++ b/internal/federation/federatingdb/owns.go
@@ -24,7 +24,6 @@ import (
"net/url"
"github.com/sirupsen/logrus"
- "github.com/spf13/viper"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
@@ -44,8 +43,7 @@ func (f *federatingDB) Owns(ctx context.Context, id *url.URL) (bool, error) {
l.Debug("entering Owns")
// if the id host isn't this instance host, we don't own this IRI
- host := viper.GetString(config.Keys.Host)
- if id.Host != host {
+ if host := config.GetHost(); id.Host != host {
l.Tracef("we DO NOT own activity because the host is %s not %s", id.Host, host)
return false, nil
}
diff --git a/internal/federation/federatingdb/update.go b/internal/federation/federatingdb/update.go
index 7930cde12..525932ea8 100644
--- a/internal/federation/federatingdb/update.go
+++ b/internal/federation/federatingdb/update.go
@@ -24,7 +24,6 @@ import (
"fmt"
"github.com/sirupsen/logrus"
- "github.com/spf13/viper"
"github.com/superseriousbusiness/activity/streams/vocab"
"github.com/superseriousbusiness/gotosocial/internal/ap"
"github.com/superseriousbusiness/gotosocial/internal/config"
@@ -125,8 +124,7 @@ func (f *federatingDB) Update(ctx context.Context, asType vocab.Type) error {
return fmt.Errorf("UPDATE: error converting to account: %s", err)
}
- host := viper.GetString(config.Keys.Host)
- if updatedAcct.Domain == host {
+ if updatedAcct.Domain == config.GetHost() {
// no need to update local accounts
// in fact, if we do this will break the shit out of things so do NOT
return nil
diff --git a/internal/federation/federatingdb/util.go b/internal/federation/federatingdb/util.go
index 5a3a65a0c..7f27cc759 100644
--- a/internal/federation/federatingdb/util.go
+++ b/internal/federation/federatingdb/util.go
@@ -26,7 +26,6 @@ import (
"net/url"
"github.com/sirupsen/logrus"
- "github.com/spf13/viper"
"github.com/superseriousbusiness/activity/streams"
"github.com/superseriousbusiness/activity/streams/vocab"
"github.com/superseriousbusiness/gotosocial/internal/ap"
@@ -209,9 +208,7 @@ func (f *federatingDB) NewID(ctx context.Context, t vocab.Type) (idURL *url.URL,
return nil, err
}
- protocol := viper.GetString(config.Keys.Protocol)
- host := viper.GetString(config.Keys.Host)
- return url.Parse(fmt.Sprintf("%s://%s/%s", protocol, host, newID))
+ return url.Parse(fmt.Sprintf("%s://%s/%s", config.GetProtocol(), config.GetHost(), newID))
}
// ActorForOutbox fetches the actor's IRI for the given outbox IRI.