config

package
v0.0.0-...-a97d171 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2021 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EnvProd     = "production"
	EnvLocal    = "local"
	EnvConsumer = "consumer"

	DiscordGuildID = "407493776597057538"
	DiscordAdminID = "145456943912189952"
)

Variables

View Source
var ErrMissingEnvironmentVariable = errors.New("missing env var")

Functions

func GetShortCommitHash

func GetShortCommitHash() string

func GetSteamKeyTag

func GetSteamKeyTag() string

func Init

func Init(ip string) (err error)

func IsConsumer

func IsConsumer() bool

func IsLocal

func IsLocal() bool

func IsProd

func IsProd() bool

func MongoDSN

func MongoDSN() string

func MySQLDNS

func MySQLDNS() string

func RabbitDSN

func RabbitDSN() string

Types

type Config

type Config struct {

	// Admin
	AdminName  string `envconfig:"ADMIN_NAME"`
	AdminEmail string `envconfig:"ADMIN_EMAIL"`

	// Battlenet
	BattlenetClient string `envconfig:"BATTLENET_CLIENT_ID"`     // OAuth
	BattlenetSecret string `envconfig:"BATTLENET_CLIENT_SECRET"` // OAuth

	// Digital Ocean (Auto Scaler)
	DigitalOceanAccessToken    string `envconfig:"DO_ACCESS_TOKEN"`
	DigitalOceanProjectID      string `envconfig:"DO_PROJECT_ID"`
	DigitalOceanKeyID          int    `envconfig:"DO_KEY_ID"`
	DigitalOceanKeyFingerprint string `envconfig:"DO_KEY_FINGERPRINT"`

	// Discord
	DiscordChangesBotToken string `envconfig:"DISCORD_CHANGES_BOT_TOKEN"` // Changes
	DiscordChatBotToken    string `envconfig:"DISCORD_BOT_TOKEN"`         // Chat Bot
	DiscordChatBotPublKey  string `envconfig:"DISCORD_BOT_PUBLIC_KEY"`    // Chat Bot
	DiscordChatBotClientID string `envconfig:"DISCORD_BOT_CLIENT_ID"`     // Chat Bot
	DiscordClientID        string `envconfig:"DISCORD_CLIENT_ID"`         // OAuth
	DiscordClientSescret   string `envconfig:"DISCORD_SECRET"`            // OAuth
	DiscordOAuthBotToken   string `envconfig:"DISCORD_OAUTH_BOT_TOKEN"`   // Oauth
	DiscordRelayBotToken   string `envconfig:"DISCORD_RELAY_TOKEN"`       // Relay

	// Elastic Search
	ElasticAddress  string `envconfig:"ELASTIC_SEARCH_ADDRESS" required:"true"`
	ElasticUsername string `envconfig:"ELASTIC_SEARCH_USERNAME" required:"true"`
	ElasticPassword string `envconfig:"ELASTIC_SEARCH_PASSWORD"`

	// GitHub
	GitHubClient        string `envconfig:"GITHUB_CLIENT"`         // OAuth
	GitHubSecret        string `envconfig:"GITHUB_SECRET"`         // OAuth
	GithubToken         string `envconfig:"GITHUB_TOKEN"`          // API
	GithubWebhookSecret string `envconfig:"GITHUB_WEBHOOK_SECRET"` // Webhooks

	// Google
	GoogleOauthClientID     string `envconfig:"GOOGLE_OAUTH_CLIENT_ID"`     // OAuth
	GoogleOauthClientSecret string `envconfig:"GOOGLE_OAUTH_CLIENT_SECRET"` // OAuth
	GoogleProject           string `envconfig:"GOOGLE_PROJECT"`             // Logging
	GoogleAuthFile          string `envconfig:"GOOGLE_AUTH"`                // Logging

	// HCAPTCHA
	HCaptchaPublic string `envconfig:"HCAPTCHA_KEY"`
	HCaptchaSecret string `envconfig:"HCAPTCHA_SECRET"`

	// Hetzner
	HetznerSSHKeyID  int    `envconfig:"HETZNER_SSH_KEY_ID"` // Scaler
	HetznerNetworkID int    `envconfig:"HETZNER_NETWORK_ID"` // Scaler
	HetznerAPIToken  string `envconfig:"HETZNER_API_TOKEN"`  // Scaler

	// Influx
	InfluxURL      string `envconfig:"INFLUX_URL" required:"true"`
	InfluxUsername string `envconfig:"INFLUX_USERNAME" required:"true"`
	InfluxPassword string `envconfig:"INFLUX_PASSWORD"`

	// Instagram
	InstagramUsername string `envconfig:"INSTAGRAM_USERNAME"`
	InstagramPassword string `envconfig:"INSTAGRAM_PASSWORD"`

	// Mailjet
	MailjetPublic  string `envconfig:"MAILJET_PUBLIC"`  // API
	MailjetPrivate string `envconfig:"MAILJET_PRIVATE"` // API

	// Memcache
	MemcacheDSN      string `envconfig:"MEMCACHE_URL" required:"true"`
	MemcacheUsername string `envconfig:"MEMCACHE_USERNAME"`
	MemcachePassword string `envconfig:"MEMCACHE_PASSWORD"`

	// Mongo
	MongoHost     string `envconfig:"MONGO_HOST" required:"true"`
	MongoPort     string `envconfig:"MONGO_PORT" required:"true"`
	MongoUsername string `envconfig:"MONGO_USERNAME" required:"true"`
	MongoPassword string `envconfig:"MONGO_PASSWORD"`
	MongoDatabase string `envconfig:"MONGO_DATABASE" required:"true"`

	// MySQL
	MySQLHost     string `envconfig:"MYSQL_HOST" required:"true"`
	MySQLPort     string `envconfig:"MYSQL_PORT" required:"true"`
	MySQLUsername string `envconfig:"MYSQL_USERNAME" required:"true"`
	MySQLPassword string `envconfig:"MYSQL_PASSWORD"`
	MySQLDatabase string `envconfig:"MYSQL_DATABASE" required:"true"`

	// Patreon
	PatreonSecret       string `envconfig:"PATREON_WEBOOK_SECRET"` // Webhooks
	PatreonClientID     string `envconfig:"PATREON_CLIENT_ID"`     // OAuth
	PatreonClientSecret string `envconfig:"PATREON_CLIENT_SECRET"` // OAuth

	// Rabbit
	RabbitUsername      string `envconfig:"RABBIT_USER" required:"true"`
	RabbitPassword      string `envconfig:"RABBIT_PASS" required:"true"`
	RabbitHost          string `envconfig:"RABBIT_HOST" required:"true"`
	RabbitPort          string `envconfig:"RABBIT_PORT" required:"true"`
	RabbitManagmentPort string `envconfig:"RABBIT_MANAGEMENT_PORT" required:"true"`

	// Recaptcha
	RecaptchaPublic  string `envconfig:"RECAPTCHA_PUBLIC"`
	RecaptchaPrivate string `envconfig:"RECAPTCHA_PRIVATE"`

	// Reddit
	RedditClient string `envconfig:"REDDIT_APP_KEY"`    // OAuth
	RedditSecret string `envconfig:"REDDIT_APP_SECRET"` // OAuth

	// Rollbar
	RollbarSecret string `envconfig:"ROLLBAR_PRIVATE"`
	RollbarUser   string `envconfig:"ROLLBAR_USER"`

	// Sendgrid
	SendGridSecret string `envconfig:"SENDGRID_WEBHOOK_SECRET"`
	SendGridAPIKey string `envconfig:"SENDGRID"`

	// Sentry
	SentryDSN string `envconfig:"SENTRY_DSN"`

	// Session
	SessionAuthentication string `envconfig:"SESSION_AUTHENTICATION" required:"true"`
	SessionEncryption     string `envconfig:"SESSION_ENCRYPTION" required:"true"`

	// Steam
	SteamUsername string `envconfig:"PROXY_USERNAME"`
	SteamPassword string `envconfig:"PROXY_PASSWORD"`
	SteamAPIKey   string

	// Twitch
	TwitchClientID     string `envconfig:"TWITCH_CLIENT_ID"`
	TwitchClientSecret string `envconfig:"TWITCH_CLIENT_SECRET"`

	// Twitter
	TwitterAccessToken       string `envconfig:"TWITTER_ACCESS_TOKEN"`        // API (Home)
	TwitterAccessTokenSecret string `envconfig:"TWITTER_ACCESS_TOKEN_SECRET"` // API (Home)
	TwitterConsumerKey       string `envconfig:"TWITTER_CONSUMER_KEY"`        // API (Home)
	TwitterConsumerSecret    string `envconfig:"TWITTER_CONSUMER_SECRET"`     // API (Home)
	TwitterWebhookSecret     string `envconfig:"TWITTER_ZAPIER_SECRET"`       // Webhooks

	// YouTube
	YoutubeAPIKey string `envconfig:"YOUTUBE_API_KEY"`

	// Servers
	APIPort      string `envconfig:"API_PORT" default:"80"`
	ChatbotPort  string `envconfig:"CHATBOT_PORT" default:"80"` // For slash commands
	FrontendPort string `envconfig:"PORT" default:"80"`

	BackendHostPort   string `envconfig:"BACKEND_HOST_PORT"`
	BackendClientPort string `envconfig:"BACKEND_CLIENT_PORT"`

	// Other
	GlobalSteamDomain   string `envconfig:"DOMAIN"` // With proto & port
	Environment         string `envconfig:"ENV" required:"true"`
	SlackGameDBWebhook  string `envconfig:"SLACK_GAMEDB_WEBHOOK"`
	SlackPatreonWebhook string `envconfig:"SLACK_SOCIAL_WEBHOOK"`
	ChatBotAttachments  string `envconfig:"CHATBOT_ATTACHMENTS"`
	GRPCKeysPath        string `envconfig:"GRPC_KEYS_PATH"`

	// Non-environment
	GameDBShortName        string `ignored:"true"`
	IP                     string `ignored:"true"`
	NewReleaseDays         int    `ignored:"true"`
	DiscordServerInviteURL string `ignored:"true"`
	DiscordBotInviteURL    string `ignored:"true"`
}
var C Config

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL