summaryrefslogtreecommitdiff
path: root/cmd/gotosocial/action/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/gotosocial/action/server/server.go')
-rw-r--r--cmd/gotosocial/action/server/server.go20
1 files changed, 16 insertions, 4 deletions
diff --git a/cmd/gotosocial/action/server/server.go b/cmd/gotosocial/action/server/server.go
index be4e2cc54..b8bf62274 100644
--- a/cmd/gotosocial/action/server/server.go
+++ b/cmd/gotosocial/action/server/server.go
@@ -24,9 +24,11 @@ import (
"net/http"
"os"
"os/signal"
+ "path"
"syscall"
"codeberg.org/gruf/go-store/kv"
+ "codeberg.org/gruf/go-store/storage"
"github.com/sirupsen/logrus"
"github.com/spf13/viper"
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
@@ -97,16 +99,26 @@ var Start action.GTSAction = func(ctx context.Context) error {
// Open the storage backend
storageBasePath := viper.GetString(config.Keys.StorageLocalBasePath)
- storage, err := kv.OpenFile(storageBasePath, nil)
+ storage, err := kv.OpenFile(storageBasePath, &storage.DiskConfig{
+ // Put the store lockfile in the storage dir itself.
+ // Normally this would not be safe, since we could end up
+ // overwriting the lockfile if we store a file called 'store.lock'.
+ // However, in this case it's OK because the keys are set by
+ // GtS and not the user, so we know we're never going to overwrite it.
+ LockFile: path.Join(storageBasePath, "store.lock"),
+ })
if err != nil {
return fmt.Errorf("error creating storage backend: %s", err)
}
// build backend handlers
- mediaHandler := media.New(dbService, storage)
+ mediaManager, err := media.NewManager(dbService, storage)
+ if err != nil {
+ return fmt.Errorf("error creating media manager: %s", err)
+ }
oauthServer := oauth.New(ctx, dbService)
transportController := transport.NewController(dbService, &federation.Clock{}, http.DefaultClient)
- federator := federation.NewFederator(dbService, federatingDB, transportController, typeConverter, mediaHandler)
+ federator := federation.NewFederator(dbService, federatingDB, transportController, typeConverter, mediaManager)
// decide whether to create a noop email sender (won't send emails) or a real one
var emailSender email.Sender
@@ -198,7 +210,7 @@ var Start action.GTSAction = func(ctx context.Context) error {
}
}
- gts, err := gotosocial.NewServer(dbService, router, federator)
+ gts, err := gotosocial.NewServer(dbService, router, federator, mediaManager)
if err != nil {
return fmt.Errorf("error creating gotosocial service: %s", err)
}