working version
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -34,3 +34,4 @@ go.mod
 | 
			
		||||
go.sum
 | 
			
		||||
index.html
 | 
			
		||||
dist
 | 
			
		||||
caddy/caddy
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								caddywebp.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								caddywebp.go
									
									
									
									
									
								
							@@ -57,9 +57,11 @@ func (s Webp) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.H
 | 
			
		||||
		return next.ServeHTTP(w, r)
 | 
			
		||||
	}
 | 
			
		||||
	repl := r.Context().Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
 | 
			
		||||
	rootPath,_:=repl.GetString("{http.vars.root}")
 | 
			
		||||
	cacheFile:=fmt.Sprintf("%s%s",caddyhttp.SanitizedPathJoin(rootPath + "/.webpcache/", r.URL.Path +"?" + r.URL.RawQuery))
 | 
			
		||||
	origFile:=caddyhttp.SanitizedPathJoin(rootPath, r.URL.Path)
 | 
			
		||||
 | 
			
		||||
	root := repl.ReplaceAll("{http.vars.root}", ".")
 | 
			
		||||
	cacheFile:=fmt.Sprintf("%s%s",caddyhttp.SanitizedPathJoin(root + "/.webpcache/", r.URL.Path +"?"), r.URL.RawQuery)
 | 
			
		||||
	origFile := caddyhttp.SanitizedPathJoin(root, r.URL.Path)
 | 
			
		||||
 | 
			
		||||
	cstat, err:=os.Stat(cacheFile)
 | 
			
		||||
	if err==nil {
 | 
			
		||||
		// Cache file exists
 | 
			
		||||
@@ -70,7 +72,7 @@ func (s Webp) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.H
 | 
			
		||||
			if err == nil {
 | 
			
		||||
				// We couldn't open for whatever reason so let's not serve it
 | 
			
		||||
				w.Header().Set("content-type", "image/webp")
 | 
			
		||||
				w.Header().Set("webpstatus", "fromcache")
 | 
			
		||||
				w.Header().Add("webpstatus", "fromcache")
 | 
			
		||||
				w.WriteHeader(http.StatusOK)
 | 
			
		||||
				io.Copy(w,fh)
 | 
			
		||||
				return nil
 | 
			
		||||
@@ -82,7 +84,7 @@ func (s Webp) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.H
 | 
			
		||||
	cachePath,_:=path.Split(cacheFile)
 | 
			
		||||
	_,err=os.Stat(cachePath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		err=os.Mkdir(cachePath, 0600)
 | 
			
		||||
		err=os.MkdirAll(cachePath, 0600)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Printf("Creating cache path: " + err.Error())
 | 
			
		||||
		}
 | 
			
		||||
@@ -128,7 +130,9 @@ func (s Webp) ServeHTTP(w http.ResponseWriter, r *http.Request, next caddyhttp.H
 | 
			
		||||
 | 
			
		||||
	buf.WriteTo(fh)
 | 
			
		||||
	fh.Close()
 | 
			
		||||
	w.Header().Set("Content-Type", "image/webp")
 | 
			
		||||
	w.Header().Set("content-Type", "image/webp")
 | 
			
		||||
	w.Header().Add("webpstatus", "tocache")
 | 
			
		||||
 | 
			
		||||
	w.WriteHeader(http.StatusOK)
 | 
			
		||||
	buf.WriteTo(w)
 | 
			
		||||
	return nil
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user