Refactor: Rename datastorage to database

This commit is contained in:
Marc Ole Bulling
2022-03-16 18:31:55 +01:00
parent 9e7fa0fa33
commit a72236ab70
19 changed files with 193 additions and 193 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ import (
"fmt"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/cloudconfig"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/configuration/setup"
"github.com/forceu/gokapi/internal/encryption"
"github.com/forceu/gokapi/internal/environment"
@@ -65,7 +65,7 @@ func main() {
func shutdown() {
fmt.Println("Shutting down...")
webserver.Shutdown()
datastorage.Close()
database.Close()
}
// Checks for command line arguments that have to be parsed before loading the configuration
+3 -3
View File
@@ -13,7 +13,7 @@ import (
"fmt"
"github.com/forceu/gokapi/internal/configuration/cloudconfig"
"github.com/forceu/gokapi/internal/configuration/configupgrade"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/environment"
"github.com/forceu/gokapi/internal/helper"
log "github.com/forceu/gokapi/internal/logging"
@@ -51,7 +51,7 @@ func Load() {
err = decoder.Decode(&serverSettings)
helper.Check(err)
file.Close()
datastorage.Init(Environment.FileDbPath)
database.Init(Environment.FileDbPath)
if configupgrade.DoUpgrade(&serverSettings, &Environment) {
save()
}
@@ -97,7 +97,7 @@ func LoadFromSetup(config models.Configuration, cloudConfig *cloudconfig.CloudCo
helper.CreateDir(Environment.ConfigDir)
if !isInitialSetup {
Load()
datastorage.DeleteAllSessions()
database.DeleteAllSessions()
}
serverSettings = config
@@ -3,7 +3,7 @@ package configupgrade
import (
"encoding/json"
"fmt"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/environment"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/models"
@@ -65,19 +65,19 @@ func updateConfig(settings *models.Configuration, env *environment.Environment)
TimeExpiry: legacyConfig.DefaultExpiry,
Password: legacyConfig.DefaultPassword,
}
datastorage.SaveUploadDefaults(uploadValues)
database.SaveUploadDefaults(uploadValues)
for _, hotlink := range legacyConfig.Hotlinks {
datastorage.SaveHotlink(models.File{Id: hotlink.FileId, HotlinkId: hotlink.Id})
database.SaveHotlink(models.File{Id: hotlink.FileId, HotlinkId: hotlink.Id})
}
for _, apikey := range legacyConfig.ApiKeys {
datastorage.SaveApiKey(apikey, false)
database.SaveApiKey(apikey, false)
}
for _, file := range legacyConfig.Files {
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
}
for key, session := range legacyConfig.Sessions {
datastorage.SaveSession(key, session, 48*time.Hour)
database.SaveSession(key, session, 48*time.Hour)
}
}
}
@@ -1,7 +1,7 @@
package configupgrade
import (
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/environment"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/test"
@@ -38,7 +38,7 @@ func TestUpgradeDb(t *testing.T) {
test.IsEqualBool(t, wasExit, true)
oldConfigFile.ConfigVersion = 8
datastorage.Init("./test/filestorage.db")
database.Init("./test/filestorage.db")
testconfiguration.WriteUpgradeConfigFileV8()
upgradeDone := DoUpgrade(&oldConfigFile, &env)
test.IsEqualBool(t, upgradeDone, true)
@@ -1,4 +1,4 @@
package datastorage
package database
import (
"bytes"
@@ -21,16 +21,16 @@ const idLastUploadConfig = "default:lastupload"
const maxKeySize = 96
var database *bitcask.Bitcask
var bitcaskDb *bitcask.Bitcask
// Init creates the database files and connects to it
func Init(dbPath string) {
if database == nil {
if bitcaskDb == nil {
db, err := bitcask.Open(dbPath, bitcask.WithMaxKeySize(maxKeySize))
if err != nil {
log.Fatal(err)
}
database = db
bitcaskDb = db
}
}
@@ -46,31 +46,31 @@ func GetLengthAvailable() int {
return maxKeySize - maxLength
}
// Close syncs the database to the filesystem and closes it
// Close syncs the bitcaskDb to the filesystem and closes it
func Close() {
if database != nil {
err := database.Sync()
if bitcaskDb != nil {
err := bitcaskDb.Sync()
if err != nil {
fmt.Println(err)
}
err = database.Close()
err = bitcaskDb.Close()
if err != nil {
fmt.Println(err)
}
}
database = nil
bitcaskDb = nil
}
// ## File Metadata ##
// GetAllMetadata returns a map of all available files
func GetAllMetadata() map[string]models.File {
if database == nil {
if bitcaskDb == nil {
panic("Database not loaded!")
}
result := make(map[string]models.File)
var keys []string
err := database.Scan([]byte(prefixFile), func(key []byte) error {
err := bitcaskDb.Scan([]byte(prefixFile), func(key []byte) error {
fileId := strings.Replace(string(key), prefixFile, "", 1)
keys = append(keys, fileId)
return nil
@@ -108,9 +108,9 @@ func SaveMetaData(file models.File) {
enc := gob.NewEncoder(&buf)
err := enc.Encode(file)
helper.Check(err)
err = database.Put([]byte(prefixFile+file.Id), buf.Bytes())
err = bitcaskDb.Put([]byte(prefixFile+file.Id), buf.Bytes())
helper.Check(err)
err = database.Sync()
err = bitcaskDb.Sync()
helper.Check(err)
}
@@ -130,11 +130,11 @@ func GetHotlink(id string) (string, bool) {
return string(value), true
}
// SaveHotlink stores the hotlink associated with the file in the database
// SaveHotlink stores the hotlink associated with the file in the bitcaskDb
func SaveHotlink(file models.File) {
err := database.PutWithTTL([]byte(prefixHotlink+file.HotlinkId), []byte(file.Id), expiryToDuration(file))
err := bitcaskDb.PutWithTTL([]byte(prefixHotlink+file.HotlinkId), []byte(file.Id), expiryToDuration(file))
helper.Check(err)
err = database.Sync()
err = bitcaskDb.Sync()
helper.Check(err)
}
@@ -149,7 +149,7 @@ func DeleteHotlink(id string) {
func GetAllApiKeys() map[string]models.ApiKey {
result := make(map[string]models.ApiKey)
var keys []string
err := database.Scan([]byte(prefixApiKey), func(key []byte) error {
err := bitcaskDb.Scan([]byte(prefixApiKey), func(key []byte) error {
apikeyID := strings.Replace(string(key), prefixApiKey, "", 1)
keys = append(keys, apikeyID)
return nil
@@ -179,16 +179,16 @@ func GetApiKey(id string) (models.ApiKey, bool) {
return result, true
}
// SaveApiKey saves the API key to the database. If updateTimeOnly is true, the database might not be synced afterwards
// SaveApiKey saves the API key to the bitcaskDb. If updateTimeOnly is true, the bitcaskDb might not be synced afterwards
func SaveApiKey(apikey models.ApiKey, updateTimeOnly bool) {
var buf bytes.Buffer
enc := gob.NewEncoder(&buf)
err := enc.Encode(apikey)
helper.Check(err)
err = database.Put([]byte(prefixApiKey+apikey.Id), buf.Bytes())
err = bitcaskDb.Put([]byte(prefixApiKey+apikey.Id), buf.Bytes())
helper.Check(err)
if !updateTimeOnly {
err = database.Sync()
err = bitcaskDb.Sync()
helper.Check(err)
}
}
@@ -221,7 +221,7 @@ func DeleteSession(id string) {
// DeleteAllSessions logs all users out
func DeleteAllSessions() {
err := database.SiftScan([]byte(prefixSessions), func(key []byte) (bool, error) {
err := bitcaskDb.SiftScan([]byte(prefixSessions), func(key []byte) (bool, error) {
return true, nil
})
helper.Check(err)
@@ -233,9 +233,9 @@ func SaveSession(id string, session models.Session, expiry time.Duration) {
enc := gob.NewEncoder(&buf)
err := enc.Encode(session)
helper.Check(err)
err = database.PutWithTTL([]byte(prefixSessions+id), buf.Bytes(), expiry)
err = bitcaskDb.PutWithTTL([]byte(prefixSessions+id), buf.Bytes(), expiry)
helper.Check(err)
err = database.Sync()
err = bitcaskDb.Sync()
helper.Check(err)
}
@@ -252,8 +252,8 @@ func GetUploadDefaults() models.LastUploadValues {
UnlimitedTime: false,
}
result := models.LastUploadValues{}
if database.Has([]byte(idLastUploadConfig)) {
value, err := database.Get([]byte(idLastUploadConfig))
if bitcaskDb.Has([]byte(idLastUploadConfig)) {
value, err := bitcaskDb.Get([]byte(idLastUploadConfig))
helper.Check(err)
buf := bytes.NewBuffer(value)
dec := gob.NewDecoder(buf)
@@ -270,13 +270,13 @@ func SaveUploadDefaults(values models.LastUploadValues) {
enc := gob.NewEncoder(&buf)
err := enc.Encode(values)
helper.Check(err)
err = database.Put([]byte(idLastUploadConfig), buf.Bytes())
err = bitcaskDb.Put([]byte(idLastUploadConfig), buf.Bytes())
helper.Check(err)
}
// RunGarbageCollection runs the databases GC
func RunGarbageCollection() {
err := database.RunGC()
err := bitcaskDb.RunGC()
helper.Check(err)
}
@@ -292,17 +292,17 @@ func byteToInt(intByte []byte) int {
}
func deleteKey(id string) {
if !database.Has([]byte(id)) {
if !bitcaskDb.Has([]byte(id)) {
return
}
err := database.Delete([]byte(id))
err := bitcaskDb.Delete([]byte(id))
helper.Check(err)
err = database.Sync()
err = bitcaskDb.Sync()
helper.Check(err)
}
func getValue(id string) ([]byte, bool) {
value, err := database.Get([]byte(id))
value, err := bitcaskDb.Get([]byte(id))
if err == nil {
return value, true
}
@@ -1,4 +1,4 @@
package datastorage
package database
import (
"github.com/forceu/gokapi/internal/models"
@@ -19,15 +19,15 @@ func TestMain(m *testing.M) {
func TestInit(t *testing.T) {
Init("./test/filestorage.db")
test.IsEqualBool(t, database != nil, true)
test.IsEqualBool(t, bitcaskDb != nil, true)
// Test that second init doesn't raise an error
Init("./test/filestorage.db")
}
func TestClose(t *testing.T) {
test.IsEqualBool(t, database != nil, true)
test.IsEqualBool(t, bitcaskDb != nil, true)
Close()
test.IsEqualBool(t, database == nil, true)
test.IsEqualBool(t, bitcaskDb == nil, true)
Init("./test/filestorage.db")
}
@@ -181,12 +181,12 @@ func TestBinaryConversion(t *testing.T) {
}
func TestRunGc(t *testing.T) {
items := database.Len()
database.PutWithTTL([]byte("test"), []byte("value"), 500*time.Millisecond)
test.IsEqualInt(t, database.Len(), items+1)
items := bitcaskDb.Len()
bitcaskDb.PutWithTTL([]byte("test"), []byte("value"), 500*time.Millisecond)
test.IsEqualInt(t, bitcaskDb.Len(), items+1)
time.Sleep(501 * time.Millisecond)
RunGarbageCollection()
test.IsEqualInt(t, database.Len(), items)
test.IsEqualInt(t, bitcaskDb.Len(), items)
}
func TestGetLengthAvailable(t *testing.T) {
+9 -9
View File
@@ -7,7 +7,7 @@ import (
"errors"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/cloudconfig"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/environment"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/test"
@@ -88,46 +88,46 @@ func TestEncryptionSetup(t *testing.T) {
configuration.Load()
configuration.Get().Encryption.Level = 3
id := testconfiguration.WriteEncryptedFile()
file, ok := datastorage.GetMetaDataById(id)
file, ok := database.GetMetaDataById(id)
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, file.UnlimitedTime, true)
formObjects, err = input.toFormObject()
test.IsNil(t, err)
config, _, err = toConfiguration(&formObjects)
test.IsNil(t, err)
file, ok = datastorage.GetMetaDataById(id)
file, ok = database.GetMetaDataById(id)
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, file.UnlimitedTime, false)
configuration.Get().Encryption.Level = 2
input.EncryptionPassword.Value = "unc"
id = testconfiguration.WriteEncryptedFile()
_, ok = datastorage.GetMetaDataById(id)
_, ok = database.GetMetaDataById(id)
test.IsEqualBool(t, ok, true)
formObjects, err = input.toFormObject()
test.IsNil(t, err)
config, _, err = toConfiguration(&formObjects)
test.IsNil(t, err)
file, ok = datastorage.GetMetaDataById(id)
file, ok = database.GetMetaDataById(id)
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, file.UnlimitedTime, true)
_, ok = datastorage.GetMetaDataById(id)
_, ok = database.GetMetaDataById(id)
test.IsEqualBool(t, ok, true)
configuration.Get().Encryption.Level = 2
input.EncryptionPassword.Value = "otherpw"
id = testconfiguration.WriteEncryptedFile()
_, ok = datastorage.GetMetaDataById(id)
_, ok = database.GetMetaDataById(id)
test.IsEqualBool(t, ok, true)
formObjects, err = input.toFormObject()
test.IsNil(t, err)
config, _, err = toConfiguration(&formObjects)
test.IsNil(t, err)
file, ok = datastorage.GetMetaDataById(id)
file, ok = database.GetMetaDataById(id)
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, file.UnlimitedTime, false)
datastorage.Close()
database.Close()
testconfiguration.Delete()
isInitialSetup = true
+4 -4
View File
@@ -3,7 +3,7 @@ package environment
import (
"fmt"
envParser "github.com/caarlos0/env/v6"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/helper"
"os"
"strconv"
@@ -51,9 +51,9 @@ func New() Environment {
if result.LengthId < 5 {
result.LengthId = 5
}
if result.LengthId > datastorage.GetLengthAvailable() {
result.LengthId = datastorage.GetLengthAvailable()
fmt.Println("Reduced ID length to " + strconv.Itoa(datastorage.GetLengthAvailable()) + " due to database constraints")
if result.LengthId > database.GetLengthAvailable() {
result.LengthId = database.GetLengthAvailable()
fmt.Println("Reduced ID length to " + strconv.Itoa(database.GetLengthAvailable()) + " due to database constraints")
}
if result.MaxMemory < 5 {
result.MaxMemory = 5
+17 -17
View File
@@ -11,7 +11,7 @@ import (
"errors"
"fmt"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/encryption"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/logging"
@@ -69,7 +69,7 @@ func NewFile(fileContent io.Reader, fileHeader *multipart.FileHeader, uploadRequ
if err != nil {
return models.File{}, err
}
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
return file, nil
}
@@ -93,7 +93,7 @@ func NewFile(fileContent io.Reader, fileHeader *multipart.FileHeader, uploadRequ
err = os.Rename(tempFile.Name(), dataDir+"/"+file.SHA256)
helper.Check(err)
hasBeenRenamed = true
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
return file, nil
}
destinationFile, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
@@ -106,7 +106,7 @@ func NewFile(fileContent io.Reader, fileHeader *multipart.FileHeader, uploadRequ
return models.File{}, err
}
}
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
return file, nil
}
@@ -115,7 +115,7 @@ func getEncInfoFromExistingFile(hash string) (models.EncryptionInfo, bool) {
if encryptionLevel == encryption.NoEncryption || encryptionLevel == encryption.EndToEndEncryption {
return models.EncryptionInfo{}, true
}
allFiles := datastorage.GetAllMetadata()
allFiles := database.GetAllMetadata()
for _, existingFile := range allFiles {
if existingFile.SHA256 == hash {
return existingFile.Encryption, true
@@ -135,7 +135,7 @@ func deleteTempFile(file *os.File, hasBeenRenamed *bool) {
// DeleteAllEncrypted marks all encrypted files for deletion on next cleanup
func DeleteAllEncrypted() {
files := datastorage.GetAllMetadata()
files := database.GetAllMetadata()
for _, file := range files {
if file.Encryption.IsEncrypted {
DeleteFile(file.Id, false)
@@ -214,7 +214,7 @@ func addHotlink(file *models.File) {
}
link := helper.GenerateRandomString(40) + getFileExtension(file.Name)
file.HotlinkId = link
datastorage.SaveHotlink(*file)
database.SaveHotlink(*file)
}
func getFileExtension(filename string) string {
@@ -233,7 +233,7 @@ func GetFile(id string) (models.File, bool) {
if id == "" {
return emptyResult, false
}
file, ok := datastorage.GetMetaDataById(id)
file, ok := database.GetMetaDataById(id)
if !ok {
return emptyResult, false
}
@@ -253,7 +253,7 @@ func GetFileByHotlink(id string) (models.File, bool) {
if id == "" {
return emptyResult, false
}
fileId, ok := datastorage.GetHotlink(id)
fileId, ok := database.GetHotlink(id)
if !ok {
return emptyResult, false
}
@@ -272,7 +272,7 @@ func RequiresClientDecryption(file models.File) bool {
// ServeFile subtracts a download allowance and serves the file to the browser
func ServeFile(file models.File, w http.ResponseWriter, r *http.Request, forceDownload bool) {
file.DownloadsRemaining = file.DownloadsRemaining - 1
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
logging.AddDownload(&file, r)
// If file is stored on AWS
@@ -342,11 +342,11 @@ func CleanUp(periodic bool) {
downloadstatus.Clean()
timeNow := time.Now().Unix()
wasItemDeleted := false
for key, element := range datastorage.GetAllMetadata() {
for key, element := range database.GetAllMetadata() {
fileExists := FileExists(element, configuration.Get().DataDir)
if !fileExists || isExpiredFileWithoutDownload(element, timeNow) {
deleteFile := true
for _, secondLoopElement := range datastorage.GetAllMetadata() {
for _, secondLoopElement := range database.GetAllMetadata() {
if (element.Id != secondLoopElement.Id) && (element.SHA256 == secondLoopElement.SHA256) {
deleteFile = false
}
@@ -355,9 +355,9 @@ func CleanUp(periodic bool) {
deleteSource(element, configuration.Get().DataDir)
}
if element.HotlinkId != "" {
datastorage.DeleteHotlink(element.HotlinkId)
database.DeleteHotlink(element.HotlinkId)
}
datastorage.DeleteMetaData(key)
database.DeleteMetaData(key)
wasItemDeleted = true
}
}
@@ -370,7 +370,7 @@ func CleanUp(periodic bool) {
CleanUp(periodic)
}()
}
datastorage.RunGarbageCollection()
database.RunGarbageCollection()
}
// IsExpiredFile returns true if the file is expired, either due to download count
@@ -405,13 +405,13 @@ func DeleteFile(keyId string, deleteSource bool) bool {
if keyId == "" {
return false
}
item, ok := datastorage.GetMetaDataById(keyId)
item, ok := database.GetMetaDataById(keyId)
if !ok {
return false
}
item.ExpireAt = 0
item.UnlimitedTime = false
datastorage.SaveMetaData(item)
database.SaveMetaData(item)
for _, status := range downloadstatus.GetAll() {
if status.FileId == item.Id {
downloadstatus.SetComplete(status.Id)
+37 -37
View File
@@ -4,7 +4,7 @@ import (
"bytes"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/cloudconfig"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/encryption"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/storage/cloudstorage/aws"
@@ -58,7 +58,7 @@ func TestGetFile(t *testing.T) {
UnlimitedDownloads: true,
UnlimitedTime: true,
}
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
_, result = GetFile(file.Id)
test.IsEqualBool(t, result, false)
@@ -80,7 +80,7 @@ func TestGetEncInfoFromExistingFile(t *testing.T) {
UnlimitedDownloads: true,
UnlimitedTime: true,
}
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
encinfo, result := getEncInfoFromExistingFile("testhash")
test.IsEqualBool(t, encinfo.IsEncrypted, false)
test.IsEqualBool(t, result, true)
@@ -115,7 +115,7 @@ func TestAddHotlink(t *testing.T) {
test.IsEqualInt(t, len(file.HotlinkId), 44)
lastCharacters := file.HotlinkId[len(file.HotlinkId)-4:]
test.IsEqualBool(t, lastCharacters == ".jpg", true)
link, ok := datastorage.GetHotlink(file.HotlinkId)
link, ok := database.GetHotlink(file.HotlinkId)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, link, "testId")
file = models.File{Name: "test.jpg", Id: "testId", ExpireAt: time.Now().Add(time.Hour).Unix()}
@@ -168,7 +168,7 @@ func TestNewFile(t *testing.T) {
header := newFile.Header
test.IsNil(t, err)
retrievedFile, ok := datastorage.GetMetaDataById(file.Id)
retrievedFile, ok := database.GetMetaDataById(file.Id)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, retrievedFile.Name, "test.dat")
test.IsEqualString(t, retrievedFile.SHA256, "f1474c19eff0fc8998fa6e1b1f7bf31793b103a6")
@@ -217,7 +217,7 @@ func TestNewFile(t *testing.T) {
// Also testing renaming of temp file
file, err = NewFile(bigFile, &header, request)
test.IsNil(t, err)
retrievedFile, ok = datastorage.GetMetaDataById(file.Id)
retrievedFile, ok = database.GetMetaDataById(file.Id)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, retrievedFile.Name, "bigfile")
test.IsEqualString(t, retrievedFile.SHA256, "9674344c90c2f0646f0b78026e127c9b86e3ad77")
@@ -250,7 +250,7 @@ func TestNewFile(t *testing.T) {
}
file, err = NewFile(bigFile, &header, request)
test.IsNotNil(t, err)
retrievedFile, ok = datastorage.GetMetaDataById(file.Id)
retrievedFile, ok = database.GetMetaDataById(file.Id)
test.IsEqualBool(t, ok, false)
bigFile.Close()
os.Remove("bigfile")
@@ -267,7 +267,7 @@ func TestNewFile(t *testing.T) {
newFile, err = createTestFile()
test.IsNil(t, err)
retrievedFile, ok = datastorage.GetMetaDataById(newFile.File.Id)
retrievedFile, ok = database.GetMetaDataById(newFile.File.Id)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, retrievedFile.SHA256, "5bbfa18805eb12c678cfd284c956718d57039e37")
@@ -276,18 +276,18 @@ func TestNewFile(t *testing.T) {
bigFile, _ = os.Open("bigfile")
file, err = NewFile(bigFile, &header, request)
test.IsNil(t, err)
retrievedFile, ok = datastorage.GetMetaDataById(file.Id)
retrievedFile, ok = database.GetMetaDataById(file.Id)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, retrievedFile.Name, "bigfile")
test.IsEqualString(t, retrievedFile.SHA256, "c1c165c30d0def15ba2bc8f1bd243be13b8c8fe7")
bigFile.Close()
datastorage.DeleteMetaData(retrievedFile.Id)
database.DeleteMetaData(retrievedFile.Id)
bigFile, _ = os.Open("bigfile")
file, err = NewFile(bigFile, &header, request)
test.IsNil(t, err)
retrievedFile, ok = datastorage.GetMetaDataById(file.Id)
retrievedFile, ok = database.GetMetaDataById(file.Id)
test.IsEqualBool(t, ok, true)
os.Remove("bigfile")
@@ -314,7 +314,7 @@ func TestNewFile(t *testing.T) {
test.IsEqualBool(t, ok, true)
file, err = NewFile(bytes.NewReader(content), &header, request)
test.IsNil(t, err)
retrievedFile, ok = datastorage.GetMetaDataById(file.Id)
retrievedFile, ok = database.GetMetaDataById(file.Id)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, retrievedFile.Name, "bigfile")
test.IsEqualString(t, retrievedFile.SHA256, "f1474c19eff0fc8998fa6e1b1f7bf31793b103a6")
@@ -361,7 +361,7 @@ func TestServeFile(t *testing.T) {
newFile, err := createTestFile()
test.IsNil(t, err)
file = newFile.File
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
r = httptest.NewRequest("GET", "/upload", nil)
w = httptest.NewRecorder()
cipher, err := encryption.GetRandomCipher()
@@ -380,7 +380,7 @@ func TestServeFile(t *testing.T) {
}
func TestCleanUp(t *testing.T) {
files := datastorage.GetAllMetadata()
files := database.GetAllMetadata()
downloadstatus.DeleteAll()
downloadstatus.SetDownload(files["cleanuptest123456789"])
@@ -395,7 +395,7 @@ func TestCleanUp(t *testing.T) {
test.FileExists(t, "test/data/2341354656543213246465465465432456898794")
CleanUp(false)
files = datastorage.GetAllMetadata()
files = database.GetAllMetadata()
test.IsEqualString(t, files["cleanuptest123456789"].Name, "cleanup")
test.FileExists(t, "test/data/2341354656543213246465465465432456898794")
test.IsEqualString(t, files["deletedfile123456789"].Name, "")
@@ -408,11 +408,11 @@ func TestCleanUp(t *testing.T) {
file, _ := GetFile("n1tSTAGj8zan9KaT4u6p")
file.DownloadsRemaining = 0
datastorage.SaveMetaData(file)
files = datastorage.GetAllMetadata()
database.SaveMetaData(file)
files = database.GetAllMetadata()
CleanUp(false)
files = datastorage.GetAllMetadata()
files = database.GetAllMetadata()
test.FileDoesNotExist(t, "test/data/a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0")
test.IsEqualString(t, files["n1tSTAGj8zan9KaT4u6p"].Name, "")
test.IsEqualString(t, files["deletedfile123456789"].Name, "")
@@ -422,10 +422,10 @@ func TestCleanUp(t *testing.T) {
file, _ = GetFile("Wzol7LyY2QVczXynJtVo")
file.DownloadsRemaining = 0
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
CleanUp(false)
files = datastorage.GetAllMetadata()
files = database.GetAllMetadata()
test.FileExists(t, "test/data/e017693e4a04a59d0b0f400fe98177fe7ee13cf7")
test.IsEqualString(t, files["Wzol7LyY2QVczXynJtVo"].Name, "")
test.IsEqualString(t, files["n1tSTAGj8zan9KaT4u6p"].Name, "")
@@ -435,13 +435,13 @@ func TestCleanUp(t *testing.T) {
file, _ = GetFile("e4TjE7CokWK0giiLNxDL")
file.DownloadsRemaining = 0
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
file, _ = GetFile("wefffewhtrhhtrhtrhtr")
file.DownloadsRemaining = 0
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
CleanUp(false)
files = datastorage.GetAllMetadata()
files = database.GetAllMetadata()
test.FileDoesNotExist(t, "test/data/e017693e4a04a59d0b0f400fe98177fe7ee13cf7")
test.IsEqualString(t, files["Wzol7LyY2QVczXynJtVo"].Name, "")
test.IsEqualString(t, files["n1tSTAGj8zan9KaT4u6p"].Name, "")
@@ -454,7 +454,7 @@ func TestCleanUp(t *testing.T) {
downloadstatus.DeleteAll()
CleanUp(false)
files = datastorage.GetAllMetadata()
files = database.GetAllMetadata()
test.IsEqualString(t, files["cleanuptest123456789"].Name, "")
test.FileDoesNotExist(t, "test/data/2341354656543213246465465465432456898794")
@@ -474,13 +474,13 @@ func TestCleanUp(t *testing.T) {
func TestDeleteFile(t *testing.T) {
testconfiguration.Create(true)
configuration.Load()
files := datastorage.GetAllMetadata()
files := database.GetAllMetadata()
test.IsEqualString(t, files["n1tSTAGj8zan9KaT4u6p"].Name, "picture.jpg")
test.FileExists(t, "test/data/a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0")
result := DeleteFile("n1tSTAGj8zan9KaT4u6p", true)
time.Sleep(time.Second)
test.IsEqualBool(t, result, true)
files = datastorage.GetAllMetadata()
files = database.GetAllMetadata()
test.IsEqualString(t, files["n1tSTAGj8zan9KaT4u6p"].Name, "")
test.FileDoesNotExist(t, "test/data/a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0")
result = DeleteFile("invalid", true)
@@ -491,13 +491,13 @@ func TestDeleteFile(t *testing.T) {
test.IsEqualBool(t, result, false)
testfile := models.File{Id: "testfiledownload", DownloadsRemaining: 1, ExpireAt: 2147483646}
datastorage.SaveMetaData(testfile)
database.SaveMetaData(testfile)
downloadstatus.SetDownload(testfile)
file, ok := datastorage.GetMetaDataById("testfiledownload")
file, ok := database.GetMetaDataById("testfiledownload")
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, file.ExpireAt != 0, true)
DeleteFile(file.Id, false)
file, ok = datastorage.GetMetaDataById("testfiledownload")
file, ok = database.GetMetaDataById("testfiledownload")
test.IsEqualInt(t, int(file.ExpireAt), 0)
if aws.IsIncludedInBuild {
@@ -513,8 +513,8 @@ func TestDeleteFile(t *testing.T) {
SHA256: "x341354656543213246465465465432456898794",
AwsBucket: "gokapi-test",
}
datastorage.SaveMetaData(awsFile)
files = datastorage.GetAllMetadata()
database.SaveMetaData(awsFile)
files = database.GetAllMetadata()
result, err := aws.FileExists(files["awsTest1234567890123"])
test.IsEqualBool(t, result, true)
test.IsNil(t, err)
@@ -565,7 +565,7 @@ func TestDeleteAllEncrypted(t *testing.T) {
IsEncrypted: true,
},
}
datastorage.SaveMetaData(file)
database.SaveMetaData(file)
file = models.File{
Id: "testEncDelUn",
UnlimitedTime: true,
@@ -573,17 +573,17 @@ func TestDeleteAllEncrypted(t *testing.T) {
IsEncrypted: false,
},
}
datastorage.SaveMetaData(file)
data, ok := datastorage.GetMetaDataById("testEncDelEnc")
database.SaveMetaData(file)
data, ok := database.GetMetaDataById("testEncDelEnc")
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, data.UnlimitedTime, true)
data, ok = datastorage.GetMetaDataById("testEncDelUn")
data, ok = database.GetMetaDataById("testEncDelUn")
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, data.UnlimitedTime, true)
DeleteAllEncrypted()
data, ok = datastorage.GetMetaDataById("testEncDelEnc")
data, ok = database.GetMetaDataById("testEncDelEnc")
test.IsEqualBool(t, data.UnlimitedTime, false)
data, ok = datastorage.GetMetaDataById("testEncDelUn")
data, ok = database.GetMetaDataById("testEncDelUn")
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, data.UnlimitedTime, true)
}
@@ -5,7 +5,7 @@ package testconfiguration
import (
"bytes"
"fmt"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/storage/cloudstorage/aws"
@@ -32,9 +32,9 @@ func SetDirEnv() {
func Create(initFiles bool) {
SetDirEnv()
os.WriteFile(configFile, configTestFile, 0777)
datastorage.Init("./test/filestorage.db")
database.Init("./test/filestorage.db")
writeTestSessions()
datastorage.SaveUploadDefaults(models.LastUploadValues{
database.SaveUploadDefaults(models.LastUploadValues{
Downloads: 3,
TimeExpiry: 20,
Password: "123",
@@ -42,9 +42,9 @@ func Create(initFiles bool) {
UnlimitedTime: false,
})
writeTestFiles()
datastorage.SaveHotlink(models.File{Id: "n1tSTAGj8zan9KaT4u6p", HotlinkId: "PhSs6mFtf8O5YGlLMfNw9rYXx9XRNkzCnJZpQBi7inunv3Z4A.jpg", ExpireAt: time.Now().Add(time.Hour).Unix()})
database.SaveHotlink(models.File{Id: "n1tSTAGj8zan9KaT4u6p", HotlinkId: "PhSs6mFtf8O5YGlLMfNw9rYXx9XRNkzCnJZpQBi7inunv3Z4A.jpg", ExpireAt: time.Now().Add(time.Hour).Unix()})
writeApiKeyys()
datastorage.Close()
database.Close()
if initFiles {
os.Mkdir("test/data", 0777)
@@ -60,7 +60,7 @@ func Create(initFiles bool) {
// WriteEncryptedFile writes metadata for an encrypted file and returns the id
func WriteEncryptedFile() string {
name := helper.GenerateRandomString(10)
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: name,
Name: name,
SHA256: name,
@@ -160,47 +160,47 @@ func DisableS3() {
}
func writeTestSessions() {
datastorage.SaveSession("validsession", models.Session{
database.SaveSession("validsession", models.Session{
RenewAt: 2147483645,
ValidUntil: 2147483646,
}, 1*time.Hour)
datastorage.SaveSession("logoutsession", models.Session{
database.SaveSession("logoutsession", models.Session{
RenewAt: 2147483645,
ValidUntil: 2147483646,
}, 1*time.Hour)
datastorage.SaveSession("needsRenewal", models.Session{
database.SaveSession("needsRenewal", models.Session{
RenewAt: 0,
ValidUntil: 2147483646,
}, 1*time.Hour)
datastorage.SaveSession("expiredsession", models.Session{
database.SaveSession("expiredsession", models.Session{
RenewAt: 0,
ValidUntil: 0,
}, 1*time.Hour)
}
func writeApiKeyys() {
datastorage.SaveApiKey(models.ApiKey{
database.SaveApiKey(models.ApiKey{
Id: "validkey",
FriendlyName: "First Key",
}, false)
datastorage.SaveApiKey(models.ApiKey{
database.SaveApiKey(models.ApiKey{
Id: "GAh1IhXDvYnqfYLazWBqMB9HSFmNPO",
FriendlyName: "Second Key",
LastUsed: 1620671580,
LastUsedString: "used",
}, false)
datastorage.SaveApiKey(models.ApiKey{
database.SaveApiKey(models.ApiKey{
Id: "jiREglQJW0bOqJakfjdVfe8T1EM8n8",
FriendlyName: "Unnamed Key",
}, false)
datastorage.SaveApiKey(models.ApiKey{
database.SaveApiKey(models.ApiKey{
Id: "okeCMWqhVMZSpt5c1qpCWhKvJJPifb",
FriendlyName: "Unnamed Key",
}, false)
}
func writeTestFiles() {
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "Wzol7LyY2QVczXynJtVo",
Name: "smallfile2",
Size: "8 B",
@@ -210,7 +210,7 @@ func writeTestFiles() {
DownloadsRemaining: 1,
ContentType: "text/html",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "e4TjE7CokWK0giiLNxDL",
Name: "smallfile2",
Size: "8 B",
@@ -220,7 +220,7 @@ func writeTestFiles() {
DownloadsRemaining: 2,
ContentType: "text/html",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "wefffewhtrhhtrhtrhtr",
Name: "smallfile3",
Size: "8 B",
@@ -230,7 +230,7 @@ func writeTestFiles() {
DownloadsRemaining: 1,
ContentType: "text/html",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "deletedfile123456789",
Name: "DeletedFile",
Size: "8 B",
@@ -240,7 +240,7 @@ func writeTestFiles() {
DownloadsRemaining: 2,
ContentType: "text/html",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "jpLXGJKigM4hjtA6T6sN",
Name: "smallfile",
Size: "7 B",
@@ -251,7 +251,7 @@ func writeTestFiles() {
ContentType: "text/html",
PasswordHash: "7b30508aa9b233ab4b8a11b2af5816bdb58ca3e7",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "jpLXGJKigM4hjtA6T6sN2",
Name: "smallfile",
Size: "7 B",
@@ -262,7 +262,7 @@ func writeTestFiles() {
ContentType: "text/html",
PasswordHash: "7b30508aa9b233ab4b8a11b2af5816bdb58ca3e7",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "n1tSTAGj8zan9KaT4u6p",
Name: "picture.jpg",
Size: "4 B",
@@ -273,7 +273,7 @@ func writeTestFiles() {
ContentType: "text/html",
HotlinkId: "PhSs6mFtf8O5YGlLMfNw9rYXx9XRNkzCnJZpQBi7inunv3Z4A.jpg",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "cleanuptest123456789",
Name: "cleanup",
Size: "4 B",
@@ -283,7 +283,7 @@ func writeTestFiles() {
DownloadsRemaining: 0,
ContentType: "text/html",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "awsTest1234567890123",
Name: "Aws Test File",
Size: "20 MB",
@@ -294,7 +294,7 @@ func writeTestFiles() {
ContentType: "application/octet-stream",
AwsBucket: "gokapi-test",
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "unlimitedDownload",
Name: "unlimitedDownload",
Size: "8 B",
@@ -305,7 +305,7 @@ func writeTestFiles() {
ContentType: "text/html",
UnlimitedDownloads: true,
})
datastorage.SaveMetaData(models.File{
database.SaveMetaData(models.File{
Id: "unlimitedTime",
Name: "unlimitedTime",
Size: "8 B",
@@ -3,7 +3,7 @@
package testconfiguration
import (
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/storage/cloudstorage/aws"
"github.com/forceu/gokapi/internal/test"
@@ -37,12 +37,12 @@ func TestSetUpgradeConfigFileV8(t *testing.T) {
}
func TestWriteEncryptedFile(t *testing.T) {
datastorage.Init("./test/filestorage.db")
database.Init("./test/filestorage.db")
fileId := WriteEncryptedFile()
file, ok := datastorage.GetMetaDataById(fileId)
file, ok := database.GetMetaDataById(fileId)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, file.Id, fileId)
datastorage.Close()
database.Close()
}
func TestEnableS3(t *testing.T) {
+4 -4
View File
@@ -11,7 +11,7 @@ import (
"fmt"
"github.com/NYTimes/gziphandler"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/encryption"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/models"
@@ -399,7 +399,7 @@ func (u *UploadView) convertGlobalConfig(isMainView bool) *UploadView {
var result []models.File
var resultApi []models.ApiKey
if isMainView {
for _, element := range datastorage.GetAllMetadata() {
for _, element := range database.GetAllMetadata() {
result = append(result, element)
}
sort.Slice(result[:], func(i, j int) bool {
@@ -409,7 +409,7 @@ func (u *UploadView) convertGlobalConfig(isMainView bool) *UploadView {
return result[i].ExpireAt > result[j].ExpireAt
})
} else {
for _, element := range datastorage.GetAllApiKeys() {
for _, element := range database.GetAllApiKeys() {
if element.LastUsed == 0 {
element.LastUsedString = "Never"
} else {
@@ -433,7 +433,7 @@ func (u *UploadView) convertGlobalConfig(isMainView bool) *UploadView {
u.IsMainView = isMainView
u.MaxFileSize = configuration.Get().MaxFileSizeMB
u.IsLogoutAvailable = authentication.IsLogoutAvailable()
defaultValues := datastorage.GetUploadDefaults()
defaultValues := database.GetUploadDefaults()
u.DefaultDownloads = defaultValues.Downloads
u.DefaultExpiry = defaultValues.TimeExpiry
u.DefaultPassword = defaultValues.Password
+9 -9
View File
@@ -5,7 +5,7 @@ package webserver
import (
"errors"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/test"
"github.com/forceu/gokapi/internal/test/testconfiguration"
"github.com/forceu/gokapi/internal/webserver/authentication"
@@ -510,7 +510,7 @@ func TestApiPageNotAuthorized(t *testing.T) {
func TestNewApiKey(t *testing.T) {
// Authorised
amountKeys := len(datastorage.GetAllApiKeys())
amountKeys := len(database.GetAllApiKeys())
test.HttpPageResult(t, test.HttpTestConfig{
Url: "http://127.0.0.1:53843/apiNew",
IsHtml: true,
@@ -521,7 +521,7 @@ func TestNewApiKey(t *testing.T) {
Value: "validsession",
}},
})
amountKeysAfter := len(datastorage.GetAllApiKeys())
amountKeysAfter := len(database.GetAllApiKeys())
test.IsEqualInt(t, amountKeysAfter, amountKeys+1)
test.IsEqualInt(t, amountKeysAfter, 5)
@@ -537,14 +537,14 @@ func TestNewApiKey(t *testing.T) {
Value: "invalid",
}},
})
amountKeysAfter = len(datastorage.GetAllApiKeys())
amountKeysAfter = len(database.GetAllApiKeys())
test.IsEqualInt(t, amountKeysAfter, amountKeys)
test.IsEqualInt(t, amountKeysAfter, 5)
}
func TestDeleteApiKey(t *testing.T) {
// Not authorised
amountKeys := len(datastorage.GetAllApiKeys())
amountKeys := len(database.GetAllApiKeys())
test.HttpPageResult(t, test.HttpTestConfig{
Url: "http://127.0.0.1:53843/apiDelete?id=jiREglQJW0bOqJakfjdVfe8T1EM8n8",
IsHtml: true,
@@ -555,8 +555,8 @@ func TestDeleteApiKey(t *testing.T) {
Value: "invalid",
}},
})
amountKeysAfter := len(datastorage.GetAllApiKeys())
key, ok := datastorage.GetApiKey("jiREglQJW0bOqJakfjdVfe8T1EM8n8")
amountKeysAfter := len(database.GetAllApiKeys())
key, ok := database.GetApiKey("jiREglQJW0bOqJakfjdVfe8T1EM8n8")
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, key.Id, "jiREglQJW0bOqJakfjdVfe8T1EM8n8")
test.IsEqualInt(t, amountKeysAfter, amountKeys)
@@ -573,8 +573,8 @@ func TestDeleteApiKey(t *testing.T) {
Value: "validsession",
}},
})
amountKeysAfter = len(datastorage.GetAllApiKeys())
_, ok = datastorage.GetApiKey("jiREglQJW0bOqJakfjdVfe8T1EM8n8")
amountKeysAfter = len(database.GetAllApiKeys())
_, ok = database.GetApiKey("jiREglQJW0bOqJakfjdVfe8T1EM8n8")
test.IsEqualBool(t, ok, false)
test.IsEqualInt(t, amountKeysAfter, amountKeys-1)
test.IsEqualInt(t, amountKeysAfter, 4)
+8 -8
View File
@@ -2,7 +2,7 @@ package api
import (
"encoding/json"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/storage"
@@ -43,7 +43,7 @@ func DeleteKey(id string) bool {
if !IsValidApiKey(id, false) {
return false
}
datastorage.DeleteApiKey(id)
database.DeleteApiKey(id)
return true
}
@@ -54,7 +54,7 @@ func NewKey() string {
FriendlyName: "Unnamed key",
LastUsed: 0,
}
datastorage.SaveApiKey(newKey, false)
database.SaveApiKey(newKey, false)
return newKey.Id
}
@@ -66,14 +66,14 @@ func changeFriendlyName(w http.ResponseWriter, request apiRequest) {
if request.friendlyName == "" {
request.friendlyName = "Unnamed key"
}
key, ok := datastorage.GetApiKey(request.apiKeyToModify)
key, ok := database.GetApiKey(request.apiKeyToModify)
if !ok {
sendError(w, http.StatusInternalServerError, "Could not modify API key")
return
}
if key.FriendlyName != request.friendlyName {
key.FriendlyName = request.friendlyName
datastorage.SaveApiKey(key, false)
database.SaveApiKey(key, false)
}
}
@@ -87,7 +87,7 @@ func deleteFile(w http.ResponseWriter, request apiRequest) {
func list(w http.ResponseWriter) {
var validFiles []models.File
timeNow := time.Now().Unix()
for _, element := range datastorage.GetAllMetadata() {
for _, element := range database.GetAllMetadata() {
if !storage.IsExpiredFile(element, timeNow) {
validFiles = append(validFiles, element)
}
@@ -144,11 +144,11 @@ func IsValidApiKey(key string, modifyTime bool) bool {
if key == "" {
return false
}
savedKey, ok := datastorage.GetApiKey(key)
savedKey, ok := database.GetApiKey(key)
if ok && savedKey.Id != "" {
if modifyTime {
savedKey.LastUsed = time.Now().Unix()
datastorage.SaveApiKey(savedKey, true)
database.SaveApiKey(savedKey, true)
}
return true
}
+10 -10
View File
@@ -4,7 +4,7 @@ import (
"bytes"
"encoding/json"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/test"
"github.com/forceu/gokapi/internal/test/testconfiguration"
@@ -32,18 +32,18 @@ var newKeyId string
func TestNewKey(t *testing.T) {
newKeyId = NewKey()
key, ok := datastorage.GetApiKey(newKeyId)
key, ok := database.GetApiKey(newKeyId)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, key.FriendlyName, "Unnamed key")
}
func TestDeleteKey(t *testing.T) {
key, ok := datastorage.GetApiKey(newKeyId)
key, ok := database.GetApiKey(newKeyId)
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, key.FriendlyName, "Unnamed key")
result := DeleteKey(newKeyId)
test.IsEqualBool(t, result, true)
_, ok = datastorage.GetApiKey(newKeyId)
_, ok = database.GetApiKey(newKeyId)
test.IsEqualBool(t, ok, false)
result = DeleteKey("invalid")
test.IsEqualBool(t, result, false)
@@ -53,11 +53,11 @@ func TestIsValidApiKey(t *testing.T) {
test.IsEqualBool(t, IsValidApiKey("", false), false)
test.IsEqualBool(t, IsValidApiKey("invalid", false), false)
test.IsEqualBool(t, IsValidApiKey("validkey", false), true)
key, ok := datastorage.GetApiKey("validkey")
key, ok := database.GetApiKey("validkey")
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, key.LastUsed == 0, true)
test.IsEqualBool(t, IsValidApiKey("validkey", true), true)
key, ok = datastorage.GetApiKey("validkey")
key, ok = database.GetApiKey("validkey")
test.IsEqualBool(t, ok, true)
test.IsEqualBool(t, key.LastUsed == 0, false)
}
@@ -107,7 +107,7 @@ func TestChangeFriendlyName(t *testing.T) {
Process(w, r, maxMemory)
test.IsEqualInt(t, w.Code, 200)
key, ok := datastorage.GetApiKey("validkey")
key, ok := database.GetApiKey("validkey")
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, key.FriendlyName, "Unnamed key")
w, r = test.GetRecorder("GET", "/api/auth/friendlyname", nil, []test.Header{{
@@ -116,7 +116,7 @@ func TestChangeFriendlyName(t *testing.T) {
Name: "friendlyName", Value: "NewName"}}, nil)
Process(w, r, maxMemory)
test.IsEqualInt(t, w.Code, 200)
key, ok = datastorage.GetApiKey("validkey")
key, ok = database.GetApiKey("validkey")
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, key.FriendlyName, "NewName")
w = httptest.NewRecorder()
@@ -141,7 +141,7 @@ func TestDeleteFile(t *testing.T) {
}, nil)
Process(w, r, maxMemory)
test.ResponseBodyContains(t, w, "Invalid id provided.")
file, ok := datastorage.GetMetaDataById("jpLXGJKigM4hjtA6T6sN2")
file, ok := database.GetMetaDataById("jpLXGJKigM4hjtA6T6sN2")
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, file.Id, "jpLXGJKigM4hjtA6T6sN2")
w, r = test.GetRecorder("GET", "/api/files/delete", nil, []test.Header{{
@@ -155,7 +155,7 @@ func TestDeleteFile(t *testing.T) {
Process(w, r, maxMemory)
test.IsEqualInt(t, w.Code, 200)
time.Sleep(time.Second)
_, ok = datastorage.GetMetaDataById("jpLXGJKigM4hjtA6T6sN2")
_, ok = database.GetMetaDataById("jpLXGJKigM4hjtA6T6sN2")
test.IsEqualBool(t, ok, false)
}
@@ -5,7 +5,7 @@ Manages the sessions for the admin user or to access password-protected files
*/
import (
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/models"
"net/http"
@@ -25,7 +25,7 @@ func IsValidSession(w http.ResponseWriter, r *http.Request) bool {
if err == nil {
sessionString := cookie.Value
if sessionString != "" {
session, ok := datastorage.GetSession(sessionString)
session, ok := database.GetSession(sessionString)
if ok {
return useSession(w, sessionString, session)
}
@@ -40,12 +40,12 @@ func IsValidSession(w http.ResponseWriter, r *http.Request) bool {
// Returns false if session is invalid (and deletes it)
func useSession(w http.ResponseWriter, id string, session models.Session) bool {
if session.ValidUntil < time.Now().Unix() {
datastorage.DeleteSession(id)
database.DeleteSession(id)
return false
}
if session.RenewAt < time.Now().Unix() {
CreateSession(w)
datastorage.DeleteSession(id)
database.DeleteSession(id)
}
return true
}
@@ -54,7 +54,7 @@ func useSession(w http.ResponseWriter, id string, session models.Session) bool {
// If sessions parameter is nil, it will be loaded from config
func CreateSession(w http.ResponseWriter) {
sessionString := helper.GenerateRandomString(60)
datastorage.SaveSession(sessionString, models.Session{
database.SaveSession(sessionString, models.Session{
RenewAt: time.Now().Add(time.Hour).Unix(),
ValidUntil: time.Now().Add(cookieLifeAdmin).Unix(),
}, cookieLifeAdmin)
@@ -65,7 +65,7 @@ func CreateSession(w http.ResponseWriter) {
func LogoutSession(w http.ResponseWriter, r *http.Request) {
cookie, err := r.Cookie("session_token")
if err == nil {
datastorage.DeleteSession(cookie.Value)
database.DeleteSession(cookie.Value)
}
writeSessionCookie(w, "", time.Now())
}
+4 -4
View File
@@ -2,7 +2,7 @@ package fileupload
import (
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/helper"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/storage"
@@ -47,12 +47,12 @@ func parseConfig(values formOrHeader, setNewDefaults bool) models.UploadRequest
password := values.Get("password")
allowedDownloadsInt, err := strconv.Atoi(allowedDownloads)
if err != nil {
previousValues := datastorage.GetUploadDefaults()
previousValues := database.GetUploadDefaults()
allowedDownloadsInt = previousValues.Downloads
}
expiryDaysInt, err := strconv.Atoi(expiryDays)
if err != nil {
previousValues := datastorage.GetUploadDefaults()
previousValues := database.GetUploadDefaults()
expiryDaysInt = previousValues.TimeExpiry
}
@@ -74,7 +74,7 @@ func parseConfig(values formOrHeader, setNewDefaults bool) models.UploadRequest
UnlimitedDownload: unlimitedDownload,
UnlimitedTime: unlimitedTime,
}
datastorage.SaveUploadDefaults(values)
database.SaveUploadDefaults(values)
}
settings := configuration.Get()
return models.UploadRequest{
@@ -4,7 +4,7 @@ import (
"bytes"
"encoding/json"
"github.com/forceu/gokapi/internal/configuration"
"github.com/forceu/gokapi/internal/configuration/datastorage"
"github.com/forceu/gokapi/internal/configuration/database"
"github.com/forceu/gokapi/internal/models"
"github.com/forceu/gokapi/internal/test"
"github.com/forceu/gokapi/internal/test/testconfiguration"
@@ -32,16 +32,16 @@ func TestParseConfig(t *testing.T) {
password: "123",
}
config := parseConfig(data, false)
defaults := datastorage.GetUploadDefaults()
defaults := database.GetUploadDefaults()
test.IsEqualInt(t, config.AllowedDownloads, 9)
test.IsEqualString(t, config.Password, "123")
test.IsEqualInt(t, config.Expiry, 5)
test.IsEqualInt(t, defaults.Downloads, 3)
config = parseConfig(data, true)
defaults = datastorage.GetUploadDefaults()
defaults = database.GetUploadDefaults()
test.IsEqualInt(t, defaults.Downloads, 9)
datastorage.SaveUploadDefaults(models.LastUploadValues{Downloads: 3, TimeExpiry: 20})
database.SaveUploadDefaults(models.LastUploadValues{Downloads: 3, TimeExpiry: 20})
data.allowedDownloads = ""
data.expiryDays = "invalid"
config = parseConfig(data, false)