Add resource service #19
|
@ -5,6 +5,7 @@ go 1.21.3
|
||||||
require (
|
require (
|
||||||
github.com/BurntSushi/toml v1.3.2 // indirect
|
github.com/BurntSushi/toml v1.3.2 // indirect
|
||||||
github.com/andybalholm/brotli v1.0.5 // indirect
|
github.com/andybalholm/brotli v1.0.5 // indirect
|
||||||
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
github.com/gofiber/fiber/v2 v2.50.0 // indirect
|
github.com/gofiber/fiber/v2 v2.50.0 // indirect
|
||||||
github.com/google/uuid v1.3.1 // indirect
|
github.com/google/uuid v1.3.1 // indirect
|
||||||
github.com/klauspost/compress v1.16.7 // indirect
|
github.com/klauspost/compress v1.16.7 // indirect
|
||||||
|
|
|
@ -2,6 +2,8 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8
|
||||||
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
|
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
|
||||||
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
||||||
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
github.com/gofiber/fiber/v2 v2.50.0 h1:ia0JaB+uw3GpNSCR5nvC5dsaxXjRU5OEu36aytx+zGw=
|
github.com/gofiber/fiber/v2 v2.50.0 h1:ia0JaB+uw3GpNSCR5nvC5dsaxXjRU5OEu36aytx+zGw=
|
||||||
github.com/gofiber/fiber/v2 v2.50.0/go.mod h1:21eytvay9Is7S6z+OgPi7c7n4++tnClWmhpimVHMimw=
|
github.com/gofiber/fiber/v2 v2.50.0/go.mod h1:21eytvay9Is7S6z+OgPi7c7n4++tnClWmhpimVHMimw=
|
||||||
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
|
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
import (
|
import (
|
||||||
"github.com/BurntSushi/toml"
|
"github.com/BurntSushi/toml"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
|
"github.com/dustin/go-humanize"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Resource struct {
|
type Resource struct {
|
||||||
|
@ -26,6 +27,7 @@ func (self Resource) Get() ([]byte, error) {
|
||||||
type ResourceDConfig struct {
|
type ResourceDConfig struct {
|
||||||
Enabled bool `toml:"enabled"`
|
Enabled bool `toml:"enabled"`
|
||||||
ListenURL string `toml:"listen_url"`
|
ListenURL string `toml:"listen_url"`
|
||||||
|
ProxyCacheMinSize string `toml:"proxy_cache_min_size",default:5MB`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
@ -58,12 +60,16 @@ func (self Resource) GetProxied() ([]byte, error) {
|
||||||
buf, err := ioutil.ReadAll(resp.Body)
|
buf, err := ioutil.ReadAll(resp.Body)
|
||||||
if err != nil { return make([]byte, 0, 0), err }
|
if err != nil { return make([]byte, 0, 0), err }
|
||||||
|
|
||||||
|
// cache only those that are less than 5 mb
|
||||||
|
if len(buf) > ProxyCacheMinSize {
|
||||||
ProxyResourceCache[self.Url] = buf
|
ProxyResourceCache[self.Url] = buf
|
||||||
|
}
|
||||||
|
|
||||||
return buf, nil
|
return buf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var ProxyResourceCache map[string][]byte = make(map[string][]byte)
|
var ProxyResourceCache map[string][]byte = make(map[string][]byte)
|
||||||
|
var ProxyCacheMinSize int
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var conf Config
|
var conf Config
|
||||||
|
@ -75,6 +81,10 @@ func main() {
|
||||||
if err != nil { panic(err) }
|
if err != nil { panic(err) }
|
||||||
_ = a
|
_ = a
|
||||||
|
|
||||||
|
cache_min, err := humanize.ParseBytes(conf.ResourceD.ProxyCacheMinSize)
|
||||||
|
if err != nil { panic(err) }
|
||||||
|
ProxyCacheMinSize = int(cache_min)
|
||||||
|
|
||||||
conf.Validate()
|
conf.Validate()
|
||||||
|
|
||||||
app := fiber.New(fiber.Config {
|
app := fiber.New(fiber.Config {
|
||||||
|
|
|
@ -11,6 +11,11 @@ Enabled=true
|
||||||
# URL to listen on
|
# URL to listen on
|
||||||
ListenUrl="0.0.0.0:80"
|
ListenUrl="0.0.0.0:80"
|
||||||
|
|
||||||
|
# Minibal size of a file to be cached
|
||||||
|
# File size is parsed via this library:
|
||||||
|
# https://github.com/dustin/go-humanize
|
||||||
|
proxy_cache_min_size="5MB"
|
||||||
|
|
||||||
# Resource ID must be like a java package name
|
# Resource ID must be like a java package name
|
||||||
# At least one X.X. is required
|
# At least one X.X. is required
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue