2023-02-22 10:32:32 +00:00
|
|
|
// Copyright (C) 2023 Storj Labs, Inc.
|
|
|
|
// See LICENSE for copying information.
|
|
|
|
|
|
|
|
package consoleweb
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
|
|
|
|
"storj.io/common/memory"
|
|
|
|
"storj.io/storj/satellite/console"
|
|
|
|
)
|
|
|
|
|
|
|
|
// FrontendConfig holds the configuration for the satellite frontend.
|
|
|
|
type FrontendConfig struct {
|
|
|
|
ExternalAddress string `json:"externalAddress"`
|
|
|
|
SatelliteName string `json:"satelliteName"`
|
|
|
|
SatelliteNodeURL string `json:"satelliteNodeURL"`
|
|
|
|
StripePublicKey string `json:"stripePublicKey"`
|
|
|
|
PartneredSatellites []PartneredSatellite `json:"partneredSatellites"`
|
|
|
|
DefaultProjectLimit int `json:"defaultProjectLimit"`
|
|
|
|
GeneralRequestURL string `json:"generalRequestURL"`
|
|
|
|
ProjectLimitsIncreaseRequestURL string `json:"projectLimitsIncreaseRequestURL"`
|
|
|
|
GatewayCredentialsRequestURL string `json:"gatewayCredentialsRequestURL"`
|
|
|
|
IsBetaSatellite bool `json:"isBetaSatellite"`
|
|
|
|
BetaSatelliteFeedbackURL string `json:"betaSatelliteFeedbackURL"`
|
|
|
|
BetaSatelliteSupportURL string `json:"betaSatelliteSupportURL"`
|
|
|
|
DocumentationURL string `json:"documentationURL"`
|
|
|
|
CouponCodeBillingUIEnabled bool `json:"couponCodeBillingUIEnabled"`
|
|
|
|
CouponCodeSignupUIEnabled bool `json:"couponCodeSignupUIEnabled"`
|
|
|
|
FileBrowserFlowDisabled bool `json:"fileBrowserFlowDisabled"`
|
|
|
|
LinksharingURL string `json:"linksharingURL"`
|
2023-05-15 21:18:34 +01:00
|
|
|
PublicLinksharingURL string `json:"publicLinksharingURL"`
|
2023-02-22 10:32:32 +00:00
|
|
|
PathwayOverviewEnabled bool `json:"pathwayOverviewEnabled"`
|
|
|
|
Captcha console.CaptchaConfig `json:"captcha"`
|
|
|
|
AllProjectsDashboard bool `json:"allProjectsDashboard"`
|
2023-05-30 22:11:29 +01:00
|
|
|
LimitsAreaEnabled bool `json:"limitsAreaEnabled"`
|
2023-02-22 10:32:32 +00:00
|
|
|
DefaultPaidStorageLimit memory.Size `json:"defaultPaidStorageLimit"`
|
|
|
|
DefaultPaidBandwidthLimit memory.Size `json:"defaultPaidBandwidthLimit"`
|
|
|
|
InactivityTimerEnabled bool `json:"inactivityTimerEnabled"`
|
|
|
|
InactivityTimerDuration int `json:"inactivityTimerDuration"`
|
|
|
|
InactivityTimerViewerEnabled bool `json:"inactivityTimerViewerEnabled"`
|
|
|
|
OptionalSignupSuccessURL string `json:"optionalSignupSuccessURL"`
|
|
|
|
HomepageURL string `json:"homepageURL"`
|
|
|
|
NativeTokenPaymentsEnabled bool `json:"nativeTokenPaymentsEnabled"`
|
|
|
|
PasswordMinimumLength int `json:"passwordMinimumLength"`
|
|
|
|
PasswordMaximumLength int `json:"passwordMaximumLength"`
|
|
|
|
ABTestingEnabled bool `json:"abTestingEnabled"`
|
2023-01-20 16:41:02 +00:00
|
|
|
PricingPackagesEnabled bool `json:"pricingPackagesEnabled"`
|
2023-05-19 15:24:59 +01:00
|
|
|
NewUploadModalEnabled bool `json:"newUploadModalEnabled"`
|
2023-06-01 14:20:35 +01:00
|
|
|
GalleryViewEnabled bool `json:"galleryViewEnabled"`
|
2023-07-10 17:53:39 +01:00
|
|
|
NeededTransactionConfirmations int `json:"neededTransactionConfirmations"`
|
2023-02-22 10:32:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Satellites is a configuration value that contains a list of satellite names and addresses.
|
|
|
|
// Format should be [{"name": "","address": ""],{"name": "","address": ""},...] in valid JSON format.
|
|
|
|
//
|
|
|
|
// Can be used as a flag.
|
|
|
|
type Satellites []PartneredSatellite
|
|
|
|
|
|
|
|
// PartneredSatellite contains the name and web address of a satellite.
|
|
|
|
type PartneredSatellite struct {
|
|
|
|
Name string `json:"name"`
|
|
|
|
Address string `json:"address"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Type implements pflag.Value.
|
|
|
|
func (Satellites) Type() string { return "consoleweb.Satellites" }
|
|
|
|
|
|
|
|
// String is required for pflag.Value.
|
|
|
|
func (sl *Satellites) String() string {
|
|
|
|
satellites, err := json.Marshal(*sl)
|
|
|
|
if err != nil {
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
|
|
|
return string(satellites)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set does validation on the configured JSON.
|
|
|
|
func (sl *Satellites) Set(s string) (err error) {
|
|
|
|
satellites := make([]PartneredSatellite, 3)
|
|
|
|
|
|
|
|
err = json.Unmarshal([]byte(s), &satellites)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
*sl = satellites
|
|
|
|
return
|
|
|
|
}
|