diff --git a/handlerPkgs.go b/handlerPkgs.go index 82d8b0f..2e3ccfc 100644 --- a/handlerPkgs.go +++ b/handlerPkgs.go @@ -15,10 +15,10 @@ func (s *Server) handlePackage(w http.ResponseWriter, req *http.Request) { repo := req.PathValue("repo") arch := req.PathValue("arch") file := req.PathValue("file") - repoPath := filepath.Join(repo, "os", arch, file) //path from mirror root to pkg or db file - pkgPath := filepath.Join(s.cfg.CacheRoot, repoPath) //absolute path for local read of the file + repoPath := filepath.Join(repo, "os", arch, file) //path from mirror root to pkg or db file + cachePath := filepath.Join(s.cfg.CacheRoot, repoPath) //absolute path for local read of the file - if _, err := os.Stat(pkgPath); err != nil { + if _, err := os.Stat(cachePath); err != nil { err = s.c.Fetch(repoPath) if err != nil { var upstreamErr *cache.UpstreamError @@ -31,5 +31,5 @@ func (s *Server) handlePackage(w http.ResponseWriter, req *http.Request) { } } - http.ServeFile(w, req, pkgPath) + http.ServeFile(w, req, cachePath) } diff --git a/internal/cache/cache.go b/internal/cache/cache.go index 92c33d7..cbd32ed 100644 --- a/internal/cache/cache.go +++ b/internal/cache/cache.go @@ -12,16 +12,16 @@ import ( ) type Cache struct { - localRoot string + cacheRoot string mirrorURL string mirroredRepos []string sf singleflight.Group //prevents duplicate downloads mu sync.Mutex } -func NewCache(localRoot string, mirrorURL string) *Cache { +func NewCache(cacheRoot string, mirrorURL string) *Cache { return &Cache{ - localRoot: localRoot, + cacheRoot: cacheRoot, mirrorURL: mirrorURL, mirroredRepos: []string{"core", "extra"}, } @@ -44,9 +44,10 @@ func (e *UpstreamError) Error() string { func (c *Cache) fetch(pkgName string) error { // pkgName is relative to the localRoot + // ie pkgName includes /{repo}/os/{arch}/ and the actual name linux-x.x.x.pkg.tar.zst tempPkgName := pkgName + ".tmp" - tempPkgPath := filepath.Join(c.localRoot, tempPkgName) //full tmp write path - outPkg := filepath.Join(c.localRoot, pkgName) + tempPkgPath := filepath.Join(c.cacheRoot, tempPkgName) //full tmp write path + outPkg := filepath.Join(c.cacheRoot, pkgName) pkgURL := c.mirrorURL + pkgName resp, err := http.Get(pkgURL) diff --git a/main.go b/main.go index bbe9cf8..053e45d 100644 --- a/main.go +++ b/main.go @@ -17,6 +17,7 @@ func main() { if err != nil { log.Fatal(err) } + c := cache.NewCache(cfg.CacheRoot, cfg.MirrorURL) srv := &Server{cfg: cfg, c: c}