mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-25 20:53:32 -06:00
Remove unnecessary storage config variables (#344)
* rewire config to not use extraneous serve vars * rename 'file' to 'local' for consistency * use Type and Size again
This commit is contained in:
parent
2582515b4d
commit
cb8688f429
51 changed files with 310 additions and 408 deletions
|
|
@ -22,14 +22,15 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/processing"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/router"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/uris"
|
||||
)
|
||||
|
||||
const (
|
||||
// FileServeBasePath forms the first part of the fileserver path.
|
||||
FileServeBasePath = "/" + uris.FileserverPath
|
||||
// AccountIDKey is the url key for account id (an account ulid)
|
||||
AccountIDKey = "account_id"
|
||||
// MediaTypeKey is the url key for media type (usually something like attachment or header etc)
|
||||
|
|
@ -43,20 +44,20 @@ const (
|
|||
// FileServer implements the RESTAPIModule interface.
|
||||
// The goal here is to serve requested media files if the gotosocial server is configured to use local storage.
|
||||
type FileServer struct {
|
||||
processor processing.Processor
|
||||
storageServeBasePath string
|
||||
processor processing.Processor
|
||||
}
|
||||
|
||||
// New returns a new fileServer module
|
||||
func New(processor processing.Processor) api.ClientModule {
|
||||
return &FileServer{
|
||||
processor: processor,
|
||||
storageServeBasePath: viper.GetString(config.Keys.StorageServeBasePath),
|
||||
processor: processor,
|
||||
}
|
||||
}
|
||||
|
||||
// Route satisfies the RESTAPIModule interface
|
||||
func (m *FileServer) Route(s router.Router) error {
|
||||
s.AttachHandler(http.MethodGet, fmt.Sprintf("%s/:%s/:%s/:%s/:%s", m.storageServeBasePath, AccountIDKey, MediaTypeKey, MediaSizeKey, FileNameKey), m.ServeFile)
|
||||
// something like "/fileserver/:account_id/:media_type/:media_size/:file_name"
|
||||
fileServePath := fmt.Sprintf("%s/:%s/:%s/:%s/:%s", FileServeBasePath, AccountIDKey, MediaTypeKey, MediaSizeKey, FileNameKey)
|
||||
s.AttachHandler(http.MethodGet, fileServePath, m.ServeFile)
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,11 +134,11 @@ func (suite *ServeFileTestSuite) TestServeOriginalFileSuccessful() {
|
|||
},
|
||||
gin.Param{
|
||||
Key: fileserver.MediaTypeKey,
|
||||
Value: string(media.Attachment),
|
||||
Value: string(media.TypeAttachment),
|
||||
},
|
||||
gin.Param{
|
||||
Key: fileserver.MediaSizeKey,
|
||||
Value: string(media.Original),
|
||||
Value: string(media.SizeOriginal),
|
||||
},
|
||||
gin.Param{
|
||||
Key: fileserver.FileNameKey,
|
||||
|
|
|
|||
|
|
@ -22,21 +22,21 @@ import (
|
|||
"context"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/util"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/ap"
|
||||
)
|
||||
|
||||
// transferContext transfers the signature verifier and signature from the gin context to the request context
|
||||
func transferContext(c *gin.Context) context.Context {
|
||||
ctx := c.Request.Context()
|
||||
|
||||
verifier, signed := c.Get(string(util.APRequestingPublicKeyVerifier))
|
||||
verifier, signed := c.Get(string(ap.ContextRequestingPublicKeyVerifier))
|
||||
if signed {
|
||||
ctx = context.WithValue(ctx, util.APRequestingPublicKeyVerifier, verifier)
|
||||
ctx = context.WithValue(ctx, ap.ContextRequestingPublicKeyVerifier, verifier)
|
||||
}
|
||||
|
||||
signature, signed := c.Get(string(util.APRequestingPublicKeySignature))
|
||||
signature, signed := c.Get(string(ap.ContextRequestingPublicKeySignature))
|
||||
if signed {
|
||||
ctx = context.WithValue(ctx, util.APRequestingPublicKeySignature, signature)
|
||||
ctx = context.WithValue(ctx, ap.ContextRequestingPublicKeySignature, signature)
|
||||
}
|
||||
|
||||
return ctx
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import (
|
|||
"github.com/superseriousbusiness/gotosocial/internal/api"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/processing"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/router"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/util"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/uris"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -42,23 +42,23 @@ const (
|
|||
PageKey = "page"
|
||||
|
||||
// UsersBasePath is the base path for serving information about Users eg https://example.org/users
|
||||
UsersBasePath = "/" + util.UsersPath
|
||||
UsersBasePath = "/" + uris.UsersPath
|
||||
// UsersBasePathWithUsername is just the users base path with the Username key in it.
|
||||
// Use this anywhere you need to know the username of the user being queried.
|
||||
// Eg https://example.org/users/:username
|
||||
UsersBasePathWithUsername = UsersBasePath + "/:" + UsernameKey
|
||||
// UsersPublicKeyPath is a path to a user's public key, for serving bare minimum AP representations.
|
||||
UsersPublicKeyPath = UsersBasePathWithUsername + "/" + util.PublicKeyPath
|
||||
UsersPublicKeyPath = UsersBasePathWithUsername + "/" + uris.PublicKeyPath
|
||||
// UsersInboxPath is for serving POST requests to a user's inbox with the given username key.
|
||||
UsersInboxPath = UsersBasePathWithUsername + "/" + util.InboxPath
|
||||
UsersInboxPath = UsersBasePathWithUsername + "/" + uris.InboxPath
|
||||
// UsersOutboxPath is for serving GET requests to a user's outbox with the given username key.
|
||||
UsersOutboxPath = UsersBasePathWithUsername + "/" + util.OutboxPath
|
||||
UsersOutboxPath = UsersBasePathWithUsername + "/" + uris.OutboxPath
|
||||
// UsersFollowersPath is for serving GET request's to a user's followers list, with the given username key.
|
||||
UsersFollowersPath = UsersBasePathWithUsername + "/" + util.FollowersPath
|
||||
UsersFollowersPath = UsersBasePathWithUsername + "/" + uris.FollowersPath
|
||||
// UsersFollowingPath is for serving GET request's to a user's following list, with the given username key.
|
||||
UsersFollowingPath = UsersBasePathWithUsername + "/" + util.FollowingPath
|
||||
UsersFollowingPath = UsersBasePathWithUsername + "/" + uris.FollowingPath
|
||||
// UsersStatusPath is for serving GET requests to a particular status by a user, with the given username key and status ID
|
||||
UsersStatusPath = UsersBasePathWithUsername + "/" + util.StatusesPath + "/:" + StatusIDKey
|
||||
UsersStatusPath = UsersBasePathWithUsername + "/" + uris.StatusesPath + "/:" + StatusIDKey
|
||||
// UsersStatusRepliesPath is for serving the replies collection of a status.
|
||||
UsersStatusRepliesPath = UsersStatusPath + "/replies"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ import (
|
|||
"github.com/gin-gonic/gin"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/viper"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/ap"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/util"
|
||||
)
|
||||
|
||||
// WebfingerGETRequest swagger:operation GET /.well-known/webfinger webfingerGet
|
||||
|
|
@ -107,9 +107,9 @@ func (m *Module) WebfingerGETRequest(c *gin.Context) {
|
|||
|
||||
// transfer the signature verifier from the gin context to the request context
|
||||
ctx := c.Request.Context()
|
||||
verifier, signed := c.Get(string(util.APRequestingPublicKeyVerifier))
|
||||
verifier, signed := c.Get(string(ap.ContextRequestingPublicKeyVerifier))
|
||||
if signed {
|
||||
ctx = context.WithValue(ctx, util.APRequestingPublicKeyVerifier, verifier)
|
||||
ctx = context.WithValue(ctx, ap.ContextRequestingPublicKeyVerifier, verifier)
|
||||
}
|
||||
|
||||
resp, err := m.processor.GetWebfingerAccount(ctx, username)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
package security
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/ap"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-fed/httpsig"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/util"
|
||||
)
|
||||
|
||||
// SignatureCheck checks whether an incoming http request has been signed. If so, it will check if the domain
|
||||
|
|
@ -42,10 +43,10 @@ func (m *Module) SignatureCheck(c *gin.Context) {
|
|||
}
|
||||
|
||||
// set the verifier and signature on the context here to save some work further down the line
|
||||
c.Set(string(util.APRequestingPublicKeyVerifier), verifier)
|
||||
c.Set(string(ap.ContextRequestingPublicKeyVerifier), verifier)
|
||||
signature := c.GetHeader("Signature")
|
||||
if signature != "" {
|
||||
c.Set(string(util.APRequestingPublicKeySignature), signature)
|
||||
c.Set(string(ap.ContextRequestingPublicKeySignature), signature)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue