Documentation ¶
Index ¶
Constants ¶
const ( // AppName is the politeiawww application name that is used to create the // application home directory. AppName = "politeiawww" // DefaultMainnetPort is the default port that the HTTPS server will be // listening on when politeiawww is configured to use the DCR mainnet. DefaultMainnetPort = "4443" // DefaultTestnetPort is the default port that the HTTPS server will be // listening on when politeiawww is configured to use the DCR testnet. DefaultTestnetPort = "4443" )
The following defaults are exported so that they can be used by external tools such as sysadmin and dev CLI tools.
const ( // Database settings LevelDB = "leveldb" CockroachDB = "cockroachdb" MySQL = "mysql" )
const ( // Currently available modes to run politeia, by default piwww, is used. PiWWWMode = "piwww" CMSWWWMode = "cmswww" )
Variables ¶
var ( // DefaultHomeDir is the default path for the politeiawww application home // directory. DefaultHomeDir = dcrutil.AppDataDir(AppName, false) // DefaultDataDir is the default path for the politeiawww application data // directory. In practice, the data directory is namespaced by network, so // the network name must be appended onto this path at runtime in order to // get the true data directory. DefaultDataDir = filepath.Join(DefaultHomeDir, defaultDataDirname) // DefaultHTTPSCert is the default path for the politeiawww HTTPS // certificate. DefaultHTTPSCert = filepath.Join(DefaultHomeDir, defaultHTTPSCertFilename) )
The following defaults are exported so that they can be used by external tools such as sysadmin and dev CLI tools.
var MainNetParams = ChainParams{
Params: chaincfg.MainNetParams(),
WalletRPCServerPort: "9111",
}
mainNetParams contains parameters specific to the main network (wire.MainNet). NOTE: The RPC port is intentionally different than the reference implementation because dcrd does not handle wallet requests. The separate wallet process listens on the well-known port and forwards requests it does not handle on to dcrd. This approach allows the wallet process to emulate the full reference implementation RPC API.
var SimNetParams = ChainParams{
Params: chaincfg.SimNetParams(),
WalletRPCServerPort: "19558",
}
simNetParams contains parameters specific to the simulation test network (wire.SimNet).
var TestNet3Params = ChainParams{
Params: chaincfg.TestNet3Params(),
WalletRPCServerPort: "19111",
}
Functions ¶
func DisableLog ¶ added in v1.3.0
func DisableLog()
DisableLog disables all library log output. Logging output is disabled by default until either UseLogger or SetLogWriter are called.
Types ¶
type ChainParams ¶ added in v1.3.0
type ChainParams struct { *chaincfg.Params WalletRPCServerPort string }
ChainParams is used to group parameters for various networks such as the main network and test networks.
type Config ¶
type Config struct { // General application settings ShowVersion bool `short:"V" long:"version" description:"Display version information and exit"` HomeDir string `short:"A" long:"appdata" description:"Path to application home directory"` ConfigFile string `short:"C" long:"configfile" description:"Path to configuration file"` DataDir string `short:"b" long:"datadir" description:"Directory to store data"` LogDir string `long:"logdir" description:"Directory to log output."` TestNet bool `long:"testnet" description:"Use the test network"` DebugLevel string `` /* 275-byte string literal not displayed */ // HTTP server settings Listeners []string `long:"listen" description:"Add an interface/port to listen for connections (default all interfaces port: 4443)"` HTTPSCert string `long:"httpscert" description:"File containing the https certificate file"` HTTPSKey string `long:"httpskey" description:"File containing the https certificate key"` CookieKeyFile string `long:"cookiekey" description:"File containing the secret cookies key"` ReadTimeout int64 `long:"readtimeout" description:"Maximum duration in seconds that is spent reading the request headers and body"` WriteTimeout int64 `long:"writetimeout" description:"Maximum duration in seconds that a request connection is kept open"` ReqBodySizeLimit int64 `long:"reqbodysizelimit" description:"Maximum number of bytes allowed in a request body submitted by a client"` WebsocketReadLimit int64 `long:"websocketreadlimit" description:"Maximum number of bytes allowed for a message read from a websocket client"` PluginBatchLimit uint32 `long:"pluginbatchlimit" description:"Maximum number of plugins command allowed in a batch request."` // politeiad RPC settings RPCHost string `long:"rpchost" description:"politeiad host <host>:<port>"` RPCCert string `long:"rpccert" description:"File containing the politeiad https certificate file"` RPCIdentityFile string `long:"rpcidentityfile" description:"Path to file containing the politeiad identity"` RPCUser string `long:"rpcuser" description:"RPC username for privileged politeaid commands"` RPCPass string `long:"rpcpass" description:"RPC password for privileged politeiad commands"` FetchIdentity bool `long:"fetchidentity" description:"Fetch the identity from politeiad"` Interactive string `long:"interactive" description:"Set to i-know-this-is-a-bad-idea to turn off interactive mode during --fetchidentity"` // User database settings UserDB string `long:"userdb" description:"Database choice for the user database"` DBHost string `long:"dbhost" description:"Database ip:port"` DBPass string // Provided in env variable "DBPASS" // SMTP settings MailHost string `long:"mailhost" description:"Email server address <host>:<port>"` MailCert string `long:"mailcert" description:"Email server certificate file"` MailSkipVerify bool `long:"mailskipverify" description:"Skip email server TLS verification"` MailUser string `long:"mailuser" description:"Email server username"` MailPass string `long:"mailpass" description:"Email server password"` MailAddress string `long:"mailaddress" description:"Email address for outgoing email in the format: name <address>"` // User layer settings DisableUsers bool `long:"disableusers" description:"Disable the user layer"` UserPlugin string `long:"userplugin" description:"ID of the plugin that manages user accounts"` AuthPlugin string `long:"authplugin" description:"ID of the plugin that handles user authorization"` // Plugin settings Plugins []string `long:"plugin" description:"IDs of all plugins to be registered"` PluginSettings []string `long:"pluginsetting" description:"Plugin settings"` // Embedded legacy settings. This will be deleted soon. DisableLegacy bool `long:"disablelegacy" description:"Disable legacy routes"` LegacyConfig Version string ActiveNet *ChainParams // Active DCR network Identity *identity.PublicIdentity // politeiad identity SystemCerts *x509.CertPool }
Config defines the configuration options for politeiawww.
func Load ¶ added in v1.3.0
Load initializes and parses the config using a config file and command line options.
The configuration proceeds as follows:
- Start with a default config with sane settings
- Pre-parse the command line to check for an alternative config file
- Load configuration file overwriting defaults with any specified options
- Parse CLI options and overwrite/add any specified options
The above results in rpc functioning properly without any config settings while still allowing the user to override settings with config files and command line options. Command line options always take precedence.
type LegacyConfig ¶ added in v1.3.0
type LegacyConfig struct { // Legacy user database settings DBRootCert string `long:"dbrootcert" description:"File containing the CA certificate for the database"` DBCert string `long:"dbcert" description:"File containing the politeiawww client certificate for the database"` DBKey string `long:"dbkey" description:"File containing the politeiawww client certificate key for the database"` EncryptionKey string `long:"encryptionkey" description:"File containing encryption key used for encrypting user data at rest"` OldEncryptionKey string `long:"oldencryptionkey" description:"File containing old encryption key (only set when rotating keys)"` // Settings the need to be turned into plugin settings. MailRateLimit int `long:"mailratelimit" description:"Limits the amount of emails a user can receive in 24h"` WebServerAddress string `long:"webserveraddress" description:"Web server address used to create email links (format: <scheme>://<host>[:<port>])"` // Legacy API settings Mode string `long:"mode" description:"Mode www runs as. Supported values: piwww, cmswww"` DcrdataHost string `long:"dcrdatahost" description:"Dcrdata ip:port"` // Legacy pi settings PaywallAmount uint64 `long:"paywallamount" description:"Amount of DCR (in atoms) required for a user to register or submit a proposal."` PaywallXpub string `long:"paywallxpub" description:"Extended public key for deriving paywall addresses."` MinConfirmationsRequired uint64 `long:"minconfirmations" description:"Minimum blocks confirmation for accepting paywall as paid. Only works in TestNet."` // Legacy cmswww settings BuildCMSDB bool `long:"buildcmsdb" description:"Build the cmsdb from scratch"` GithubAPIToken string `` /* 141-byte string literal not displayed */ CodeStatRepos []string `long:"codestatrepos" description:"Org/Repositories to crawl for code statistics"` CodeStatOrganization string `long:"codestatorg" description:"Organization to crawl for code statistics"` CodeStatStart int64 `long:"codestatstart" description:"Date in which to look back to for code stat crawl (default 6 months back)"` CodeStatEnd int64 `long:"codestatend" description:"Date in which to end look back to for code stat crawl (default today)"` CodeStatSkipSync bool `long:"codestatskipsync" description:"Skip pull request crawl on startup"` VoteDurationMin uint32 `long:"votedurationmin" description:"Minimum duration of a dcc vote in blocks"` VoteDurationMax uint32 `long:"votedurationmax" description:"Maximum duration of a dcc vote in blocks"` }
LegacyConfig represents the config options for legacy API.
Everything in this config is DEPRECATED and will be removed in the near future.