mirror of
				https://github.com/mickael-kerjean/filestash.git
				synced 2025-10-31 10:07:15 +08:00 
			
		
		
		
	maintain (path): absolute path
getting things ready to have config coming as a plugin to handle various distributions
This commit is contained in:
		| @ -19,11 +19,10 @@ import ( | |||||||
| 	"github.com/tidwall/sjson" | 	"github.com/tidwall/sjson" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var ( | var ( | ||||||
| 	configPath          string   = filepath.Join(GetCurrentDir(), CONFIG_PATH+"config.json") | 	configPath          string   = GetAbsolutePath(CONFIG_PATH, "config.json") | ||||||
| 	configKeysToEncrypt []string = []string{ | 	configKeysToEncrypt []string = []string{ | ||||||
| 		"middleware.identity_provider.params", | 		"middleware.identity_provider.params", | ||||||
| 		"middleware.attribute_mapping.params", | 		"middleware.attribute_mapping.params", | ||||||
| @ -34,7 +33,7 @@ func LoadConfig() ([]byte, error) { | |||||||
| 	file, err := os.OpenFile(configPath, os.O_RDONLY, os.ModePerm) | 	file, err := os.OpenFile(configPath, os.O_RDONLY, os.ModePerm) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if os.IsNotExist(err) { | 		if os.IsNotExist(err) { | ||||||
| 			os.MkdirAll(filepath.Join(GetCurrentDir(), CONFIG_PATH), os.ModePerm) | 			os.MkdirAll(GetAbsolutePath(CONFIG_PATH), os.ModePerm) | ||||||
| 			return []byte(""), nil | 			return []byte(""), nil | ||||||
| 		} | 		} | ||||||
| 		return nil, err | 		return nil, err | ||||||
|  | |||||||
| @ -20,8 +20,15 @@ func GetCurrentDir() string { | |||||||
| 	return filepath.Dir(ex) | 	return filepath.Dir(ex) | ||||||
| } | } | ||||||
|  |  | ||||||
| func GetAbsolutePath(p string) string { | func GetAbsolutePath(base string, opts ...string) string { | ||||||
| 	return filepath.Join(GetCurrentDir(), p) | 	fullPath := base | ||||||
|  | 	if strings.HasPrefix(base, "/") == false { // relative filepath are relative to the binary | ||||||
|  | 		fullPath = filepath.Join(GetCurrentDir(), base) | ||||||
|  | 	} | ||||||
|  | 	if len(opts) == 0 { | ||||||
|  | 		return fullPath | ||||||
|  | 	} | ||||||
|  | 	return filepath.Join(append([]string{fullPath}, opts...)...) | ||||||
| } | } | ||||||
|  |  | ||||||
| func IsDirectory(path string) bool { | func IsDirectory(path string) bool { | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	slog "log" | 	slog "log" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
| @ -18,8 +17,8 @@ var logfile *os.File | |||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	var err error | 	var err error | ||||||
| 	logPath := filepath.Join(GetCurrentDir(), LOG_PATH) | 	logPath := GetAbsolutePath(LOG_PATH) | ||||||
| 	logfile, err = os.OpenFile(filepath.Join(logPath, "access.log"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, os.ModePerm) | 	logfile, err = os.OpenFile(GetAbsolutePath(logPath, "access.log"), os.O_APPEND|os.O_WRONLY|os.O_CREATE, os.ModePerm) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		slog.Printf("ERROR log file: %+v", err) | 		slog.Printf("ERROR log file: %+v", err) | ||||||
| 		return | 		return | ||||||
|  | |||||||
| @ -3,14 +3,13 @@ package ssl | |||||||
| import ( | import ( | ||||||
| 	. "github.com/mickael-kerjean/filestash/server/common" | 	. "github.com/mickael-kerjean/filestash/server/common" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var keyPEMPath string = filepath.Join(GetCurrentDir(), CERT_PATH, "key.pem") | var keyPEMPath string = GetAbsolutePath(CERT_PATH, "key.pem") | ||||||
| var certPEMPath string = filepath.Join(GetCurrentDir(), CERT_PATH, "cert.pem") | var certPEMPath string = GetAbsolutePath(CERT_PATH, "cert.pem") | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	os.MkdirAll(filepath.Join(GetCurrentDir(), CERT_PATH), os.ModePerm) | 	os.MkdirAll(GetAbsolutePath(CERT_PATH), os.ModePerm) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Clear() { | func Clear() { | ||||||
|  | |||||||
| @ -8,12 +8,11 @@ import ( | |||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var logpath = filepath.Join(GetCurrentDir(), LOG_PATH, "access.log") | var logpath = GetAbsolutePath(LOG_PATH, "access.log") | ||||||
|  |  | ||||||
| func AdminSessionGet(ctx *App, res http.ResponseWriter, req *http.Request) { | func AdminSessionGet(ctx *App, res http.ResponseWriter, req *http.Request) { | ||||||
| 	if admin := Config.Get("auth.admin").String(); admin == "" { | 	if admin := Config.Get("auth.admin").String(); admin == "" { | ||||||
|  | |||||||
| @ -4,10 +4,9 @@ import ( | |||||||
| 	. "github.com/mickael-kerjean/filestash/server/common" | 	. "github.com/mickael-kerjean/filestash/server/common" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"path/filepath" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var configpath = filepath.Join(GetCurrentDir(), CONFIG_PATH, "config.json") | var configpath = GetAbsolutePath(CONFIG_PATH, "config.json") | ||||||
|  |  | ||||||
| func PrivateConfigHandler(ctx *App, res http.ResponseWriter, req *http.Request) { | func PrivateConfigHandler(ctx *App, res http.ResponseWriter, req *http.Request) { | ||||||
| 	SendSuccessResult(res, &Config) | 	SendSuccessResult(res, &Config) | ||||||
|  | |||||||
| @ -31,7 +31,7 @@ var ( | |||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	FileCache = NewAppCache() | 	FileCache = NewAppCache() | ||||||
| 	cachePath := filepath.Join(GetCurrentDir(), TMP_PATH) | 	cachePath := GetAbsolutePath(TMP_PATH) | ||||||
| 	FileCache.OnEvict(func(key string, value interface{}) { | 	FileCache.OnEvict(func(key string, value interface{}) { | ||||||
| 		os.RemoveAll(filepath.Join(cachePath, key)) | 		os.RemoveAll(filepath.Join(cachePath, key)) | ||||||
| 	}) | 	}) | ||||||
| @ -235,7 +235,7 @@ func FileCat(ctx *App, res http.ResponseWriter, req *http.Request) { | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			tmpPath := filepath.Join(GetCurrentDir(), TMP_PATH, "file_"+QuickString(20)+".dat") | 			tmpPath := GetAbsolutePath(TMP_PATH, "file_"+QuickString(20)+".dat") | ||||||
| 			f, err := os.OpenFile(tmpPath, os.O_RDWR|os.O_CREATE, os.ModePerm) | 			f, err := os.OpenFile(tmpPath, os.O_RDWR|os.O_CREATE, os.ModePerm) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				Log.Debug("cat::range0 '%s'", err.Error()) | 				Log.Debug("cat::range0 '%s'", err.Error()) | ||||||
|  | |||||||
| @ -5,7 +5,6 @@ import ( | |||||||
| 	. "github.com/mickael-kerjean/filestash/server/common" | 	. "github.com/mickael-kerjean/filestash/server/common" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func ReportHandler(ctx *App, res http.ResponseWriter, req *http.Request) { | func ReportHandler(ctx *App, res http.ResponseWriter, req *http.Request) { | ||||||
| @ -24,7 +23,7 @@ func HealthHandler(ctx *App, res http.ResponseWriter, req *http.Request) { | |||||||
| 	res.Header().Set("Access-Control-Allow-Origin", "*") | 	res.Header().Set("Access-Control-Allow-Origin", "*") | ||||||
| 	// CHECK 1: open the config file | 	// CHECK 1: open the config file | ||||||
| 	file, err := os.OpenFile( | 	file, err := os.OpenFile( | ||||||
| 		filepath.Join(GetCurrentDir(), CONFIG_PATH, "config.json"), | 		GetAbsolutePath(CONFIG_PATH, "config.json"), | ||||||
| 		os.O_RDWR, os.ModePerm, | 		os.O_RDWR, os.ModePerm, | ||||||
| 	) | 	) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | |||||||
| @ -9,7 +9,6 @@ import ( | |||||||
| 	"net/http" | 	"net/http" | ||||||
| 	URL "net/url" | 	URL "net/url" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"regexp" | 	"regexp" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"text/template" | 	"text/template" | ||||||
| @ -155,8 +154,8 @@ func AboutHandler(ctx *App, res http.ResponseWriter, req *http.Request) { | |||||||
| 		Version:    fmt.Sprintf("Filestash %s.%s", APP_VERSION, BUILD_DATE), | 		Version:    fmt.Sprintf("Filestash %s.%s", APP_VERSION, BUILD_DATE), | ||||||
| 		CommitHash: BUILD_REF, | 		CommitHash: BUILD_REF, | ||||||
| 		Checksum: []string{ | 		Checksum: []string{ | ||||||
| 			hashFileContent(filepath.Join(GetCurrentDir(), "/filestash"), 0), | 			hashFileContent(GetAbsolutePath("filestash"), 0), | ||||||
| 			hashFileContent(filepath.Join(GetCurrentDir(), CONFIG_PATH, "config.json"), 0), | 			hashFileContent(GetAbsolutePath(CONFIG_PATH, "config.json"), 0), | ||||||
| 		}, | 		}, | ||||||
| 		License: strings.ToUpper(LICENSE), | 		License: strings.ToUpper(LICENSE), | ||||||
| 		Plugins: []string{ | 		Plugins: []string{ | ||||||
|  | |||||||
| @ -5,14 +5,13 @@ import ( | |||||||
| 	. "github.com/mickael-kerjean/filestash/server/common" | 	. "github.com/mickael-kerjean/filestash/server/common" | ||||||
| 	_ "modernc.org/sqlite" | 	_ "modernc.org/sqlite" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var DB *sql.DB | var DB *sql.DB | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	cachePath := filepath.Join(GetCurrentDir(), DB_PATH) | 	cachePath := GetAbsolutePath(DB_PATH) | ||||||
| 	os.MkdirAll(cachePath, os.ModePerm) | 	os.MkdirAll(cachePath, os.ModePerm) | ||||||
| 	var err error | 	var err error | ||||||
| 	if DB, err = sql.Open("sqlite", cachePath+"/share.sql?_fk=true"); err != nil { | 	if DB, err = sql.Open("sqlite", cachePath+"/share.sql?_fk=true"); err != nil { | ||||||
|  | |||||||
| @ -28,7 +28,7 @@ var ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	cachePath = filepath.Join(GetCurrentDir(), DAVCachePath) + "/" | 	cachePath = GetAbsolutePath(DAVCachePath) + "/" | ||||||
| 	os.RemoveAll(cachePath) | 	os.RemoveAll(cachePath) | ||||||
| 	os.MkdirAll(cachePath, os.ModePerm) | 	os.MkdirAll(cachePath, os.ModePerm) | ||||||
|  |  | ||||||
|  | |||||||
| @ -12,7 +12,6 @@ import ( | |||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/url" | 	"net/url" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
| @ -42,7 +41,7 @@ type BackblazeError struct { | |||||||
| func init() { | func init() { | ||||||
| 	Backend.Register("backblaze", Backblaze{}) | 	Backend.Register("backblaze", Backblaze{}) | ||||||
| 	BackblazeCache = NewAppCache() | 	BackblazeCache = NewAppCache() | ||||||
| 	cachePath := filepath.Join(GetCurrentDir(), BackblazeCachePath) | 	cachePath := GetAbsolutePath(BackblazeCachePath) | ||||||
| 	os.RemoveAll(cachePath) | 	os.RemoveAll(cachePath) | ||||||
| 	os.MkdirAll(cachePath, os.ModePerm) | 	os.MkdirAll(cachePath, os.ModePerm) | ||||||
| } | } | ||||||
|  | |||||||
| @ -29,7 +29,7 @@ func init() { | |||||||
| 	Backend.Register("git", Git{}) | 	Backend.Register("git", Git{}) | ||||||
|  |  | ||||||
| 	GitCache = NewAppCache() | 	GitCache = NewAppCache() | ||||||
| 	cachePath := filepath.Join(GetCurrentDir(), GitCachePath) | 	cachePath := GetAbsolutePath(GitCachePath) | ||||||
| 	os.RemoveAll(cachePath) | 	os.RemoveAll(cachePath) | ||||||
| 	os.MkdirAll(cachePath, os.ModePerm) | 	os.MkdirAll(cachePath, os.ModePerm) | ||||||
| 	GitCache.OnEvict(func(key string, value interface{}) { | 	GitCache.OnEvict(func(key string, value interface{}) { | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ import ( | |||||||
| 	"io" | 	"io" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
| @ -108,7 +107,7 @@ func init() { | |||||||
| 	} | 	} | ||||||
| 	image_caching() | 	image_caching() | ||||||
|  |  | ||||||
| 	cachePath := filepath.Join(GetCurrentDir(), ImageCachePath) | 	cachePath := GetAbsolutePath(ImageCachePath) | ||||||
| 	os.RemoveAll(cachePath) | 	os.RemoveAll(cachePath) | ||||||
| 	os.MkdirAll(cachePath, os.ModePerm) | 	os.MkdirAll(cachePath, os.ModePerm) | ||||||
|  |  | ||||||
|  | |||||||
| @ -30,7 +30,7 @@ type SearchIndexer struct { | |||||||
|  |  | ||||||
| func NewSearchIndexer(id string, b IBackend) SearchIndexer { | func NewSearchIndexer(id string, b IBackend) SearchIndexer { | ||||||
| 	s := SearchIndexer{ | 	s := SearchIndexer{ | ||||||
| 		DBPath:         filepath.Join(GetCurrentDir(), FTS_PATH, "fts_"+id+".sql"), | 		DBPath:         GetAbsolutePath(FTS_PATH, "fts_"+id+".sql"), | ||||||
| 		Id:             id, | 		Id:             id, | ||||||
| 		Backend:        b, | 		Backend:        b, | ||||||
| 		FoldersUnknown: make(HeapDoc, 0, 1), | 		FoldersUnknown: make(HeapDoc, 0, 1), | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var SSL_PATH string = filepath.Join(GetCurrentDir(), CERT_PATH, "ssl") | var SSL_PATH string = GetAbsolutePath(CERT_PATH, "ssl") | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	os.MkdirAll(SSL_PATH, os.ModePerm) | 	os.MkdirAll(SSL_PATH, os.ModePerm) | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var TOR_PATH string = filepath.Join(GetCurrentDir(), CERT_PATH, "tor") | var TOR_PATH string = GetAbsolutePath(CERT_PATH, "tor") | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	os.MkdirAll(TOR_PATH, os.ModePerm) | 	os.MkdirAll(TOR_PATH, os.ModePerm) | ||||||
|  | |||||||
| @ -12,7 +12,6 @@ import ( | |||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"os" | 	"os" | ||||||
| 	"os/exec" | 	"os/exec" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
| @ -78,7 +77,7 @@ func init() { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cachePath := filepath.Join(GetCurrentDir(), VideoCachePath) | 	cachePath := GetAbsolutePath(VideoCachePath) | ||||||
| 	os.RemoveAll(cachePath) | 	os.RemoveAll(cachePath) | ||||||
| 	os.MkdirAll(cachePath, os.ModePerm) | 	os.MkdirAll(cachePath, os.ModePerm) | ||||||
|  |  | ||||||
| @ -124,8 +123,7 @@ func hls_playlist(reader io.ReadCloser, ctx *App, res *http.ResponseWriter, req | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cacheName := "vid_" + GenerateID(ctx) + "_" + QuickHash(path, 10) + ".dat" | 	cacheName := "vid_" + GenerateID(ctx) + "_" + QuickHash(path, 10) + ".dat" | ||||||
| 	cachePath := filepath.Join( | 	cachePath := GetAbsolutePath( | ||||||
| 		GetCurrentDir(), |  | ||||||
| 		VideoCachePath, | 		VideoCachePath, | ||||||
| 		cacheName, | 		cacheName, | ||||||
| 	) | 	) | ||||||
| @ -172,8 +170,7 @@ func hls_transcode(ctx *App, res http.ResponseWriter, req *http.Request) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	startTime := segmentNumber * HLS_SEGMENT_LENGTH | 	startTime := segmentNumber * HLS_SEGMENT_LENGTH | ||||||
| 	cachePath := filepath.Join( | 	cachePath := GetAbsolutePath( | ||||||
| 		GetCurrentDir(), |  | ||||||
| 		VideoCachePath, | 		VideoCachePath, | ||||||
| 		req.URL.Query().Get("path"), | 		req.URL.Query().Get("path"), | ||||||
| 	) | 	) | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Mickael Kerjean
					Mickael Kerjean