67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
package config
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"local/args"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
type Config struct {
|
|
Port int
|
|
DBURI string
|
|
Database string
|
|
DriverType string
|
|
FilePrefix string
|
|
FileRoot string
|
|
Auth bool
|
|
AuthLifetime time.Duration
|
|
MaxFileSize int64
|
|
RPS int
|
|
SysRPS int
|
|
Delay time.Duration
|
|
}
|
|
|
|
func New() Config {
|
|
as := args.NewArgSet()
|
|
|
|
f, err := ioutil.TempFile(os.TempDir(), "bolt.db.*")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
f.Close()
|
|
|
|
as.Append(args.INT, "p", "port to listen on", 18114)
|
|
as.Append(args.STRING, "dburi", "database uri", f.Name())
|
|
as.Append(args.STRING, "fileprefix", "path prefix for file service", "/__files__")
|
|
as.Append(args.STRING, "fileroot", "path to file hosting root", "/tmp/")
|
|
as.Append(args.STRING, "database", "database name to use", "db")
|
|
as.Append(args.STRING, "drivertype", "database driver to use", "boltdb")
|
|
as.Append(args.BOOL, "auth", "check for authorized access", false)
|
|
as.Append(args.DURATION, "authlifetime", "duration auth is valid for", time.Hour)
|
|
as.Append(args.DURATION, "delay", "time to delay requests", time.Duration(0))
|
|
as.Append(args.INT, "max-file-size", "max file size for uploads in bytes", 50*(1<<20))
|
|
as.Append(args.INT, "rps", "rps per namespace", 5)
|
|
as.Append(args.INT, "sys-rps", "rps for the sys", 10)
|
|
|
|
if err := as.Parse(); err != nil {
|
|
os.Remove(f.Name())
|
|
panic(err)
|
|
}
|
|
|
|
return Config{
|
|
Port: as.GetInt("p"),
|
|
DBURI: as.GetString("dburi"),
|
|
FilePrefix: as.GetString("fileprefix"),
|
|
FileRoot: as.GetString("fileroot"),
|
|
Database: as.GetString("database"),
|
|
DriverType: as.GetString("drivertype"),
|
|
Auth: as.GetBool("auth"),
|
|
AuthLifetime: as.GetDuration("authlifetime"),
|
|
Delay: as.GetDuration("delay"),
|
|
MaxFileSize: int64(as.GetInt("max-file-size")),
|
|
RPS: as.GetInt("rps"),
|
|
SysRPS: as.GetInt("sys-rps"),
|
|
}
|
|
}
|