obs-access-signer/obs.go
Nugraha 12a595ed74
All checks were successful
continuous-integration/drone Build is passing
all: option to remove bucket name from prefix
default value for option to remove bucket name is `false`
2023-01-09 13:14:19 +07:00

77 lines
2.4 KiB
Go

package main
import (
"flag"
"net/http"
"os"
"strconv"
"time"
"github.com/pkg/errors"
)
type obsOptions struct {
BucketName string
RedirectSecure bool
RedirectCode int // HTTP redirect status code
URLExpiry time.Duration
HostRedirect string
RemoveBucketName bool
}
var defaultObsOpts = obsOptions{
URLExpiry: maxURLExpiry,
RedirectCode: http.StatusMovedPermanently, // 301
RemoveBucketName: false,
}
func (opts *obsOptions) Bind(fs *flag.FlagSet) (err error) {
var vBucketName = opts.BucketName
if sBucketName := os.Getenv("OBS_BUCKET_NAME"); sBucketName != "" {
vBucketName = sBucketName
}
fs.StringVar(&opts.BucketName, "obs-bucket", vBucketName, "OBS Bucket name")
var vRedirectSecure = opts.RedirectSecure
if sRedirectSecure := os.Getenv("OBS_REDIRECT_SECURE"); sRedirectSecure != "" {
vRedirectSecure, _ = strconv.ParseBool(sRedirectSecure)
}
fs.BoolVar(&opts.RedirectSecure, "obs-redirect-secure", vRedirectSecure, "OBS Redirect secure")
var vObsHostRedirect = opts.HostRedirect
if sObsHostRedirect := os.Getenv("OBS_HOST_REDIRECT"); sObsHostRedirect != "" {
vObsHostRedirect = sObsHostRedirect
}
fs.StringVar(&opts.HostRedirect, "obs-host-redirect", vObsHostRedirect, "OBS Host redirect")
var vObsRedirectCode = opts.RedirectCode
if sObsRedirectCode := os.Getenv("OBS_REDIRECT_CODE"); sObsRedirectCode != "" {
var obsRedirectCode int64
if obsRedirectCode, err = strconv.ParseInt(sObsRedirectCode, 10, 64); err != nil {
err = errors.Wrap(err, "obs redirect code")
return
}
vObsRedirectCode = int(obsRedirectCode)
}
fs.IntVar(&opts.RedirectCode, "obs-redirect-code", vObsRedirectCode, "OBS Redirect code")
var vObsUrlExpiry = opts.URLExpiry
if sObsUrlExpiry := os.Getenv("OBS_URL_EXPIRY"); sObsUrlExpiry != "" {
var obsUrlExpiry time.Duration
if obsUrlExpiry, err = time.ParseDuration(sObsUrlExpiry); err != nil {
err = errors.Wrap(err, "obs url expiry")
return
}
vObsUrlExpiry = obsUrlExpiry
}
fs.DurationVar(&opts.URLExpiry, "obs-url-expiry", vObsUrlExpiry, "OBS Redirection URL expiry")
var vObsRemoveBucketName = opts.RemoveBucketName
if sObsRemoveBucketName := os.Getenv("OBS_REMOVE_BUCKET_NAME"); sObsRemoveBucketName != "" {
vObsRemoveBucketName, _ = strconv.ParseBool(sObsRemoveBucketName)
}
fs.BoolVar(&opts.RemoveBucketName, "obs-remove-bucket-name", vObsRemoveBucketName, "OBS Remove Bucket name from prefix")
return
}