All checks were successful
continuous-integration/drone Build is passing
default value for option to remove bucket name is `false`
77 lines
2.4 KiB
Go
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
|
|
}
|