Rename
This commit is contained in:
@@ -178,8 +178,8 @@ func main() {
|
||||
fileDataRepo := &fileDataRepo.Repository{DB: db, ObjectCleanupRepo: objectCleanupRepo}
|
||||
familyRepo := &repo.FamilyRepository{DB: db}
|
||||
trashRepo := &repo.TrashRepository{DB: db, ObjectRepo: objectRepo, FileRepo: fileRepo, QueueRepo: queueRepo}
|
||||
publicCollectionRepo := public.NewPublicCollectionRepository(db, viper.GetString("apps.public-albums"))
|
||||
collectionRepo := &repo.CollectionRepository{DB: db, FileRepo: fileRepo, PublicCollectionRepo: publicCollectionRepo,
|
||||
collectionLinkRepo := public.NewCollectionLinkRepository(db, viper.GetString("apps.public-albums"))
|
||||
collectionRepo := &repo.CollectionRepository{DB: db, FileRepo: fileRepo, CollectionLinkRepo: collectionLinkRepo,
|
||||
TrashRepo: trashRepo, SecretEncryptionKey: secretEncryptionKeyBytes, QueueRepo: queueRepo, LatencyLogger: latencyLogger}
|
||||
pushRepo := &repo.PushTokenRepository{DB: db}
|
||||
kexRepo := &kex.Repository{
|
||||
@@ -304,7 +304,7 @@ func main() {
|
||||
collectionLinkCtrl := &publicCtrl.CollectionLinkController{
|
||||
FileController: fileController,
|
||||
EmailNotificationCtrl: emailNotificationCtrl,
|
||||
PublicCollectionRepo: publicCollectionRepo,
|
||||
CollectionLinkRepo: collectionLinkRepo,
|
||||
CollectionRepo: collectionRepo,
|
||||
UserRepo: userRepo,
|
||||
JwtSecret: jwtSecretBytes,
|
||||
@@ -360,7 +360,7 @@ func main() {
|
||||
|
||||
authMiddleware := middleware.AuthMiddleware{UserAuthRepo: userAuthRepo, Cache: authCache, UserController: userController}
|
||||
collectionTokenMiddleware := middleware.CollectionTokenMiddleware{
|
||||
PublicCollectionRepo: publicCollectionRepo,
|
||||
CollectionLinkRepo: collectionLinkRepo,
|
||||
PublicCollectionCtrl: collectionLinkCtrl,
|
||||
CollectionRepo: collectionRepo,
|
||||
Cache: accessTokenCache,
|
||||
@@ -428,11 +428,18 @@ func main() {
|
||||
ObjectRepo: objectRepo,
|
||||
FileRepo: fileRepo,
|
||||
}
|
||||
fileLinkCtrl := &publicCtrl.FileLinkController{
|
||||
FileController: fileController,
|
||||
FileLinkRepo: nil,
|
||||
FileRepo: fileRepo,
|
||||
JwtSecret: jwtSecretBytes,
|
||||
}
|
||||
|
||||
fileHandler := &api.FileHandler{
|
||||
Controller: fileController,
|
||||
FileCopyCtrl: fileCopyCtrl,
|
||||
FileDataCtrl: fileDataCtrl,
|
||||
FileUrlCtrl: fileLinkCtrl,
|
||||
}
|
||||
privateAPI.GET("/files/upload-urls", fileHandler.GetUploadURLs)
|
||||
privateAPI.GET("/files/multipart-upload-urls", fileHandler.GetMultipartUploadURLs)
|
||||
@@ -776,7 +783,7 @@ func main() {
|
||||
setKnownAPIs(server.Routes())
|
||||
setupAndStartBackgroundJobs(objectCleanupController, replicationController3, fileDataCtrl)
|
||||
setupAndStartCrons(
|
||||
userAuthRepo, publicCollectionRepo, twoFactorRepo, passkeysRepo, fileController, taskLockingRepo, emailNotificationCtrl,
|
||||
userAuthRepo, collectionLinkRepo, twoFactorRepo, passkeysRepo, fileController, taskLockingRepo, emailNotificationCtrl,
|
||||
trashController, pushController, objectController, dataCleanupController, storageBonusCtrl, emergencyCtrl,
|
||||
embeddingController, healthCheckHandler, kexCtrl, castDb)
|
||||
|
||||
@@ -905,7 +912,7 @@ func setupAndStartBackgroundJobs(
|
||||
objectCleanupController.StartClearingOrphanObjects()
|
||||
}
|
||||
|
||||
func setupAndStartCrons(userAuthRepo *repo.UserAuthRepository, publicCollectionRepo *public.PublicCollectionRepository,
|
||||
func setupAndStartCrons(userAuthRepo *repo.UserAuthRepository, collectionLinkRepo *public.CollectionLinkRepo,
|
||||
twoFactorRepo *repo.TwoFactorRepository, passkeysRepo *passkey.Repository, fileController *controller.FileController,
|
||||
taskRepo *repo.TaskLockRepository, emailNotificationCtrl *email.EmailNotificationController,
|
||||
trashController *controller.TrashController, pushController *controller.PushController,
|
||||
@@ -931,7 +938,7 @@ func setupAndStartCrons(userAuthRepo *repo.UserAuthRepository, publicCollectionR
|
||||
schedule(c, "@every 24h", func() {
|
||||
_ = userAuthRepo.RemoveDeletedTokens(timeUtil.MicrosecondsBeforeDays(30))
|
||||
_ = castDb.DeleteOldSessions(context.Background(), timeUtil.MicrosecondsBeforeDays(7))
|
||||
_ = publicCollectionRepo.CleanupAccessHistory(context.Background())
|
||||
_ = collectionLinkRepo.CleanupAccessHistory(context.Background())
|
||||
})
|
||||
|
||||
schedule(c, "@every 1m", func() {
|
||||
|
||||
@@ -53,7 +53,7 @@ const (
|
||||
type CollectionLinkController struct {
|
||||
FileController *controller.FileController
|
||||
EmailNotificationCtrl *emailCtrl.EmailNotificationController
|
||||
PublicCollectionRepo *public.PublicCollectionRepository
|
||||
CollectionLinkRepo *public.CollectionLinkRepo
|
||||
CollectionRepo *repo.CollectionRepository
|
||||
UserRepo *repo.UserRepository
|
||||
JwtSecret []byte
|
||||
@@ -61,11 +61,11 @@ type CollectionLinkController struct {
|
||||
|
||||
func (c *CollectionLinkController) CreateLink(ctx context.Context, req ente.CreatePublicAccessTokenRequest) (ente.PublicURL, error) {
|
||||
accessToken := shortuuid.New()[0:AccessTokenLength]
|
||||
err := c.PublicCollectionRepo.
|
||||
err := c.CollectionLinkRepo.
|
||||
Insert(ctx, req.CollectionID, accessToken, req.ValidTill, req.DeviceLimit, req.EnableCollect, req.EnableJoin)
|
||||
if err != nil {
|
||||
if errors.Is(err, ente.ErrActiveLinkAlreadyExists) {
|
||||
collectionToPubUrlMap, err2 := c.PublicCollectionRepo.GetCollectionToActivePublicURLMap(ctx, []int64{req.CollectionID})
|
||||
collectionToPubUrlMap, err2 := c.CollectionLinkRepo.GetCollectionToActivePublicURLMap(ctx, []int64{req.CollectionID})
|
||||
if err2 != nil {
|
||||
return ente.PublicURL{}, stacktrace.Propagate(err2, "")
|
||||
}
|
||||
@@ -81,7 +81,7 @@ func (c *CollectionLinkController) CreateLink(ctx context.Context, req ente.Crea
|
||||
}
|
||||
}
|
||||
response := ente.PublicURL{
|
||||
URL: c.PublicCollectionRepo.GetAlbumUrl(accessToken),
|
||||
URL: c.CollectionLinkRepo.GetAlbumUrl(accessToken),
|
||||
ValidTill: req.ValidTill,
|
||||
DeviceLimit: req.DeviceLimit,
|
||||
EnableDownload: true,
|
||||
@@ -92,7 +92,7 @@ func (c *CollectionLinkController) CreateLink(ctx context.Context, req ente.Crea
|
||||
}
|
||||
|
||||
func (c *CollectionLinkController) GetActiveCollectionLinkToken(ctx context.Context, collectionID int64) (ente.CollectionLinkRow, error) {
|
||||
return c.PublicCollectionRepo.GetActiveCollectionLinkRow(ctx, collectionID)
|
||||
return c.CollectionLinkRepo.GetActiveCollectionLinkRow(ctx, collectionID)
|
||||
}
|
||||
|
||||
func (c *CollectionLinkController) CreateFile(ctx *gin.Context, file ente.File, app ente.App) (ente.File, error) {
|
||||
@@ -119,12 +119,12 @@ func (c *CollectionLinkController) CreateFile(ctx *gin.Context, file ente.File,
|
||||
|
||||
// Disable all public accessTokens generated for the given cID till date.
|
||||
func (c *CollectionLinkController) Disable(ctx context.Context, cID int64) error {
|
||||
err := c.PublicCollectionRepo.DisableSharing(ctx, cID)
|
||||
err := c.CollectionLinkRepo.DisableSharing(ctx, cID)
|
||||
return stacktrace.Propagate(err, "")
|
||||
}
|
||||
|
||||
func (c *CollectionLinkController) UpdateSharedUrl(ctx context.Context, req ente.UpdatePublicAccessTokenRequest) (ente.PublicURL, error) {
|
||||
publicCollectionToken, err := c.PublicCollectionRepo.GetActiveCollectionLinkRow(ctx, req.CollectionID)
|
||||
publicCollectionToken, err := c.CollectionLinkRepo.GetActiveCollectionLinkRow(ctx, req.CollectionID)
|
||||
if err != nil {
|
||||
return ente.PublicURL{}, err
|
||||
}
|
||||
@@ -154,12 +154,12 @@ func (c *CollectionLinkController) UpdateSharedUrl(ctx context.Context, req ente
|
||||
if req.EnableJoin != nil {
|
||||
publicCollectionToken.EnableJoin = *req.EnableJoin
|
||||
}
|
||||
err = c.PublicCollectionRepo.UpdatePublicCollectionToken(ctx, publicCollectionToken)
|
||||
err = c.CollectionLinkRepo.UpdatePublicCollectionToken(ctx, publicCollectionToken)
|
||||
if err != nil {
|
||||
return ente.PublicURL{}, stacktrace.Propagate(err, "")
|
||||
}
|
||||
return ente.PublicURL{
|
||||
URL: c.PublicCollectionRepo.GetAlbumUrl(publicCollectionToken.Token),
|
||||
URL: c.CollectionLinkRepo.GetAlbumUrl(publicCollectionToken.Token),
|
||||
DeviceLimit: publicCollectionToken.DeviceLimit,
|
||||
ValidTill: publicCollectionToken.ValidTill,
|
||||
EnableDownload: publicCollectionToken.EnableDownload,
|
||||
@@ -178,7 +178,7 @@ func (c *CollectionLinkController) UpdateSharedUrl(ctx context.Context, req ente
|
||||
// attack for guessing password.
|
||||
func (c *CollectionLinkController) VerifyPassword(ctx *gin.Context, req ente.VerifyPasswordRequest) (*ente.VerifyPasswordResponse, error) {
|
||||
accessContext := auth.MustGetPublicAccessContext(ctx)
|
||||
collectionLinkRow, err := c.PublicCollectionRepo.GetActiveCollectionLinkRow(ctx, accessContext.CollectionID)
|
||||
collectionLinkRow, err := c.CollectionLinkRepo.GetActiveCollectionLinkRow(ctx, accessContext.CollectionID)
|
||||
if err != nil {
|
||||
return nil, stacktrace.Propagate(err, "failed to get public collection info")
|
||||
}
|
||||
@@ -200,11 +200,11 @@ func (c *CollectionLinkController) ReportAbuse(ctx *gin.Context, req ente.AbuseR
|
||||
}
|
||||
logrus.WithField("collectionID", accessContext.CollectionID).Error("CRITICAL: received abuse report")
|
||||
|
||||
err := c.PublicCollectionRepo.RecordAbuseReport(ctx, accessContext, req.URL, req.Reason, req.Details)
|
||||
err := c.CollectionLinkRepo.RecordAbuseReport(ctx, accessContext, req.URL, req.Reason, req.Details)
|
||||
if err != nil {
|
||||
return stacktrace.Propagate(err, "")
|
||||
}
|
||||
count, err := c.PublicCollectionRepo.GetAbuseReportCount(ctx, accessContext)
|
||||
count, err := c.CollectionLinkRepo.GetAbuseReportCount(ctx, accessContext)
|
||||
if err != nil {
|
||||
return stacktrace.Propagate(err, "")
|
||||
}
|
||||
@@ -259,7 +259,7 @@ func (c *CollectionLinkController) onAbuseReportReceived(collectionID int64, rep
|
||||
|
||||
func (c *CollectionLinkController) HandleAccountDeletion(ctx context.Context, userID int64, logger *logrus.Entry) error {
|
||||
logger.Info("updating public collection on account deletion")
|
||||
collectionIDs, err := c.PublicCollectionRepo.GetActivePublicTokenForUser(ctx, userID)
|
||||
collectionIDs, err := c.CollectionLinkRepo.GetActivePublicTokenForUser(ctx, userID)
|
||||
if err != nil {
|
||||
return stacktrace.Propagate(err, "")
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ var whitelistedCollectionShareIDs = []int64{111}
|
||||
|
||||
// CollectionTokenMiddleware intercepts and authenticates incoming requests
|
||||
type CollectionTokenMiddleware struct {
|
||||
PublicCollectionRepo *public.PublicCollectionRepository
|
||||
CollectionLinkRepo *public.CollectionLinkRepo
|
||||
PublicCollectionCtrl *public2.CollectionLinkController
|
||||
CollectionRepo *repo.CollectionRepository
|
||||
Cache *cache.Cache
|
||||
@@ -54,7 +54,7 @@ func (m *CollectionTokenMiddleware) Authenticate(urlSanitizer func(_ *gin.Contex
|
||||
cacheKey := computeHashKeyForList([]string{accessToken, clientIP, userAgent}, ":")
|
||||
cachedValue, cacheHit := m.Cache.Get(cacheKey)
|
||||
if !cacheHit {
|
||||
publicCollectionSummary, err = m.PublicCollectionRepo.GetCollectionSummaryByToken(c, accessToken)
|
||||
publicCollectionSummary, err = m.CollectionLinkRepo.GetCollectionSummaryByToken(c, accessToken)
|
||||
if err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "invalid token"})
|
||||
return
|
||||
@@ -130,7 +130,7 @@ func (m *CollectionTokenMiddleware) isDeviceLimitReached(ctx context.Context,
|
||||
}
|
||||
|
||||
sharedID := collectionSummary.ID
|
||||
hasAccessedInPast, err := m.PublicCollectionRepo.AccessedInPast(ctx, sharedID, ip, ua)
|
||||
hasAccessedInPast, err := m.CollectionLinkRepo.AccessedInPast(ctx, sharedID, ip, ua)
|
||||
if err != nil {
|
||||
return false, stacktrace.Propagate(err, "")
|
||||
}
|
||||
@@ -138,7 +138,7 @@ func (m *CollectionTokenMiddleware) isDeviceLimitReached(ctx context.Context,
|
||||
if hasAccessedInPast {
|
||||
return false, nil
|
||||
}
|
||||
count, err := m.PublicCollectionRepo.GetUniqueAccessCount(ctx, sharedID)
|
||||
count, err := m.CollectionLinkRepo.GetUniqueAccessCount(ctx, sharedID)
|
||||
if err != nil {
|
||||
return false, stacktrace.Propagate(err, "failed to get unique access count")
|
||||
}
|
||||
@@ -159,7 +159,7 @@ func (m *CollectionTokenMiddleware) isDeviceLimitReached(ctx context.Context,
|
||||
if deviceLimit > 0 && count >= deviceLimit {
|
||||
return true, nil
|
||||
}
|
||||
err = m.PublicCollectionRepo.RecordAccessHistory(ctx, sharedID, ip, ua)
|
||||
err = m.CollectionLinkRepo.RecordAccessHistory(ctx, sharedID, ip, ua)
|
||||
return false, stacktrace.Propagate(err, "failed to record access history")
|
||||
}
|
||||
|
||||
|
||||
@@ -23,13 +23,13 @@ import (
|
||||
// CollectionRepository defines the methods for inserting, updating and
|
||||
// retrieving collection entities from the underlying repository
|
||||
type CollectionRepository struct {
|
||||
DB *sql.DB
|
||||
FileRepo *FileRepository
|
||||
PublicCollectionRepo *public.PublicCollectionRepository
|
||||
TrashRepo *TrashRepository
|
||||
SecretEncryptionKey []byte
|
||||
QueueRepo *QueueRepository
|
||||
LatencyLogger *prometheus.HistogramVec
|
||||
DB *sql.DB
|
||||
FileRepo *FileRepository
|
||||
CollectionLinkRepo *public.CollectionLinkRepo
|
||||
TrashRepo *TrashRepository
|
||||
SecretEncryptionKey []byte
|
||||
QueueRepo *QueueRepository
|
||||
LatencyLogger *prometheus.HistogramVec
|
||||
}
|
||||
|
||||
type SharedCollection struct {
|
||||
@@ -75,7 +75,7 @@ func (repo *CollectionRepository) Get(collectionID int64) (ente.Collection, erro
|
||||
c.EncryptedName = encryptedName.String
|
||||
c.NameDecryptionNonce = nameDecryptionNonce.String
|
||||
}
|
||||
urlMap, err := repo.PublicCollectionRepo.GetCollectionToActivePublicURLMap(context.Background(), []int64{collectionID})
|
||||
urlMap, err := repo.CollectionLinkRepo.GetCollectionToActivePublicURLMap(context.Background(), []int64{collectionID})
|
||||
if err != nil {
|
||||
return ente.Collection{}, stacktrace.Propagate(err, "failed to get publicURL info")
|
||||
}
|
||||
@@ -175,7 +175,7 @@ pct.access_token, pct.valid_till, pct.device_limit, pct.created_at, pct.updated_
|
||||
if _, ok := addPublicUrlMap[pctToken.String]; !ok {
|
||||
addPublicUrlMap[pctToken.String] = true
|
||||
url := ente.PublicURL{
|
||||
URL: repo.PublicCollectionRepo.GetAlbumUrl(pctToken.String),
|
||||
URL: repo.CollectionLinkRepo.GetAlbumUrl(pctToken.String),
|
||||
DeviceLimit: int(pctDeviceLimit.Int32),
|
||||
ValidTill: pctValidTill.Int64,
|
||||
EnableDownload: pctEnableDownload.Bool,
|
||||
|
||||
@@ -13,29 +13,29 @@ import (
|
||||
|
||||
const BaseShareURL = "https://albums.ente.io/?t=%s"
|
||||
|
||||
// PublicCollectionRepository defines the methods for inserting, updating and
|
||||
// CollectionLinkRepo defines the methods for inserting, updating and
|
||||
// retrieving entities related to public collections
|
||||
type PublicCollectionRepository struct {
|
||||
type CollectionLinkRepo struct {
|
||||
DB *sql.DB
|
||||
albumHost string
|
||||
}
|
||||
|
||||
// NewPublicCollectionRepository ..
|
||||
func NewPublicCollectionRepository(db *sql.DB, albumHost string) *PublicCollectionRepository {
|
||||
// NewCollectionLinkRepository ..
|
||||
func NewCollectionLinkRepository(db *sql.DB, albumHost string) *CollectionLinkRepo {
|
||||
if albumHost == "" {
|
||||
albumHost = "https://albums.ente.io"
|
||||
}
|
||||
return &PublicCollectionRepository{
|
||||
return &CollectionLinkRepo{
|
||||
DB: db,
|
||||
albumHost: albumHost,
|
||||
}
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) GetAlbumUrl(token string) string {
|
||||
func (pcr *CollectionLinkRepo) GetAlbumUrl(token string) string {
|
||||
return fmt.Sprintf("%s/?t=%s", pcr.albumHost, token)
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) Insert(ctx context.Context,
|
||||
func (pcr *CollectionLinkRepo) Insert(ctx context.Context,
|
||||
cID int64, token string, validTill int64, deviceLimit int, enableCollect bool, enableJoin *bool) error {
|
||||
// default value for enableJoin is true
|
||||
join := true
|
||||
@@ -51,7 +51,7 @@ func (pcr *PublicCollectionRepository) Insert(ctx context.Context,
|
||||
return stacktrace.Propagate(err, "failed to insert")
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) DisableSharing(ctx context.Context, cID int64) error {
|
||||
func (pcr *CollectionLinkRepo) DisableSharing(ctx context.Context, cID int64) error {
|
||||
_, err := pcr.DB.ExecContext(ctx, `UPDATE public_collection_tokens SET is_disabled = true where
|
||||
collection_id = $1 and is_disabled = false`, cID)
|
||||
return stacktrace.Propagate(err, "failed to disable sharing")
|
||||
@@ -59,7 +59,7 @@ func (pcr *PublicCollectionRepository) DisableSharing(ctx context.Context, cID i
|
||||
|
||||
// GetCollectionToActivePublicURLMap will return map of collectionID to PublicURLs which are not disabled yet.
|
||||
// Note: The url could be expired or deviceLimit is already reached
|
||||
func (pcr *PublicCollectionRepository) GetCollectionToActivePublicURLMap(ctx context.Context, collectionIDs []int64) (map[int64][]ente.PublicURL, error) {
|
||||
func (pcr *CollectionLinkRepo) GetCollectionToActivePublicURLMap(ctx context.Context, collectionIDs []int64) (map[int64][]ente.PublicURL, error) {
|
||||
rows, err := pcr.DB.QueryContext(ctx, `SELECT collection_id, access_token, valid_till, device_limit, enable_download, enable_collect, enable_join, pw_nonce, mem_limit, ops_limit FROM
|
||||
public_collection_tokens WHERE collection_id = ANY($1) and is_disabled = FALSE`,
|
||||
pq.Array(collectionIDs))
|
||||
@@ -94,7 +94,7 @@ func (pcr *PublicCollectionRepository) GetCollectionToActivePublicURLMap(ctx con
|
||||
|
||||
// GetActiveCollectionLinkRow will return ente.CollectionLinkRow for given collection ID
|
||||
// Note: The token could be expired or deviceLimit is already reached
|
||||
func (pcr *PublicCollectionRepository) GetActiveCollectionLinkRow(ctx context.Context, collectionID int64) (ente.CollectionLinkRow, error) {
|
||||
func (pcr *CollectionLinkRepo) GetActiveCollectionLinkRow(ctx context.Context, collectionID int64) (ente.CollectionLinkRow, error) {
|
||||
row := pcr.DB.QueryRowContext(ctx, `SELECT id, collection_id, access_token, valid_till, device_limit,
|
||||
is_disabled, pw_hash, pw_nonce, mem_limit, ops_limit, enable_download, enable_collect, enable_join FROM
|
||||
public_collection_tokens WHERE collection_id = $1 and is_disabled = FALSE`,
|
||||
@@ -111,7 +111,7 @@ func (pcr *PublicCollectionRepository) GetActiveCollectionLinkRow(ctx context.Co
|
||||
}
|
||||
|
||||
// UpdatePublicCollectionToken will update the row for corresponding public collection token
|
||||
func (pcr *PublicCollectionRepository) UpdatePublicCollectionToken(ctx context.Context, pct ente.CollectionLinkRow) error {
|
||||
func (pcr *CollectionLinkRepo) UpdatePublicCollectionToken(ctx context.Context, pct ente.CollectionLinkRow) error {
|
||||
_, err := pcr.DB.ExecContext(ctx, `UPDATE public_collection_tokens SET valid_till = $1, device_limit = $2,
|
||||
pw_hash = $3, pw_nonce = $4, mem_limit = $5, ops_limit = $6, enable_download = $7, enable_collect = $8, enable_join = $9
|
||||
where id = $10`,
|
||||
@@ -119,7 +119,7 @@ func (pcr *PublicCollectionRepository) UpdatePublicCollectionToken(ctx context.C
|
||||
return stacktrace.Propagate(err, "failed to update public collection token")
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) RecordAbuseReport(ctx context.Context, accessCtx ente.PublicAccessContext,
|
||||
func (pcr *CollectionLinkRepo) RecordAbuseReport(ctx context.Context, accessCtx ente.PublicAccessContext,
|
||||
url string, reason string, details ente.AbuseReportDetails) error {
|
||||
_, err := pcr.DB.ExecContext(ctx, `INSERT INTO public_abuse_report
|
||||
(share_id, ip, user_agent, url, reason, details) VALUES ($1, $2, $3, $4, $5, $6)
|
||||
@@ -128,7 +128,7 @@ func (pcr *PublicCollectionRepository) RecordAbuseReport(ctx context.Context, ac
|
||||
return stacktrace.Propagate(err, "failed to record abuse report")
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) GetAbuseReportCount(ctx context.Context, accessCtx ente.PublicAccessContext) (int64, error) {
|
||||
func (pcr *CollectionLinkRepo) GetAbuseReportCount(ctx context.Context, accessCtx ente.PublicAccessContext) (int64, error) {
|
||||
row := pcr.DB.QueryRowContext(ctx, `SELECT count(*) FROM public_abuse_report WHERE share_id = $1`, accessCtx.ID)
|
||||
var count int64 = 0
|
||||
err := row.Scan(&count)
|
||||
@@ -138,7 +138,7 @@ func (pcr *PublicCollectionRepository) GetAbuseReportCount(ctx context.Context,
|
||||
return count, nil
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) GetUniqueAccessCount(ctx context.Context, shareId int64) (int64, error) {
|
||||
func (pcr *CollectionLinkRepo) GetUniqueAccessCount(ctx context.Context, shareId int64) (int64, error) {
|
||||
row := pcr.DB.QueryRowContext(ctx, `SELECT count(*) FROM public_collection_access_history WHERE share_id = $1`, shareId)
|
||||
var count int64 = 0
|
||||
err := row.Scan(&count)
|
||||
@@ -148,7 +148,7 @@ func (pcr *PublicCollectionRepository) GetUniqueAccessCount(ctx context.Context,
|
||||
return count, nil
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) RecordAccessHistory(ctx context.Context, shareID int64, ip string, ua string) error {
|
||||
func (pcr *CollectionLinkRepo) RecordAccessHistory(ctx context.Context, shareID int64, ip string, ua string) error {
|
||||
_, err := pcr.DB.ExecContext(ctx, `INSERT INTO public_collection_access_history
|
||||
(share_id, ip, user_agent) VALUES ($1, $2, $3)
|
||||
ON CONFLICT ON CONSTRAINT unique_access_sid_ip_ua DO NOTHING;`,
|
||||
@@ -157,7 +157,7 @@ func (pcr *PublicCollectionRepository) RecordAccessHistory(ctx context.Context,
|
||||
}
|
||||
|
||||
// AccessedInPast returns true if the given ip, ua agent combination has accessed the url in the past
|
||||
func (pcr *PublicCollectionRepository) AccessedInPast(ctx context.Context, shareID int64, ip string, ua string) (bool, error) {
|
||||
func (pcr *CollectionLinkRepo) AccessedInPast(ctx context.Context, shareID int64, ip string, ua string) (bool, error) {
|
||||
row := pcr.DB.QueryRowContext(ctx, `select share_id from public_collection_access_history where share_id =$1 and ip = $2 and user_agent = $3`,
|
||||
shareID, ip, ua)
|
||||
var tempID int64
|
||||
@@ -168,7 +168,7 @@ func (pcr *PublicCollectionRepository) AccessedInPast(ctx context.Context, share
|
||||
return true, stacktrace.Propagate(err, "failed to record access history")
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) GetCollectionSummaryByToken(ctx context.Context, accessToken string) (ente.PublicCollectionSummary, error) {
|
||||
func (pcr *CollectionLinkRepo) GetCollectionSummaryByToken(ctx context.Context, accessToken string) (ente.PublicCollectionSummary, error) {
|
||||
row := pcr.DB.QueryRowContext(ctx,
|
||||
`SELECT sct.id, sct.collection_id, sct.is_disabled, sct.valid_till, sct.device_limit, sct.pw_hash,
|
||||
sct.created_at, sct.updated_at, count(ah.share_id)
|
||||
@@ -185,7 +185,7 @@ func (pcr *PublicCollectionRepository) GetCollectionSummaryByToken(ctx context.C
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (pcr *PublicCollectionRepository) GetActivePublicTokenForUser(ctx context.Context, userID int64) ([]int64, error) {
|
||||
func (pcr *CollectionLinkRepo) GetActivePublicTokenForUser(ctx context.Context, userID int64) ([]int64, error) {
|
||||
rows, err := pcr.DB.QueryContext(ctx, `select pt.collection_id from public_collection_tokens pt left join collections c on pt.collection_id = c.collection_id where pt.is_disabled = FALSE and c.owner_id= $1;`, userID)
|
||||
if err != nil {
|
||||
return nil, stacktrace.Propagate(err, "")
|
||||
@@ -204,7 +204,7 @@ func (pcr *PublicCollectionRepository) GetActivePublicTokenForUser(ctx context.C
|
||||
}
|
||||
|
||||
// CleanupAccessHistory public_collection_access_history where public_collection_tokens is disabled and the last updated time is older than 30 days
|
||||
func (pcr *PublicCollectionRepository) CleanupAccessHistory(ctx context.Context) error {
|
||||
func (pcr *CollectionLinkRepo) CleanupAccessHistory(ctx context.Context) error {
|
||||
_, err := pcr.DB.ExecContext(ctx, `DELETE FROM public_collection_access_history WHERE share_id IN (SELECT id FROM public_collection_tokens WHERE is_disabled = TRUE AND updated_at < (now_utc_micro_seconds() - (24::BIGINT * 30 * 60 * 60 * 1000 * 1000)))`)
|
||||
if err != nil {
|
||||
return stacktrace.Propagate(err, "failed to clean up public collection access history")
|
||||
Reference in New Issue
Block a user