Documentation ¶
Overview ¶
Package cmd has all top-level commands dispatched by main's flag.Parse The entry point of each command is Execute function
Index ¶
- type AdminGroup
- type AuthGroup
- type AvatarCommand
- type AvatarGroup
- type AvatarMigrator
- type BackupCommand
- type CacheGroup
- type CleanupCommand
- type CommonOptionsCommander
- type CommonOpts
- type ImportCommand
- type MongoGroup
- type NotifyGroup
- type RestoreCommand
- type SSLGroup
- type ServerCommand
- type StoreGroup
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminGroup ¶
type AdminGroup struct { Type string `long:"type" env:"TYPE" description:"type of admin store" choice:"shared" choice:"mongo" default:"shared"` Admins []string `long:"id" env:"ID" description:"admin(s) ids" env-delim:","` Email string `long:"email" env:"EMAIL" default:"" description:"admin email"` } `group:"shared" namespace:"shared" env-namespace:"SHARED"` }
AdminGroup defines options group for admin params
type AuthGroup ¶
type AuthGroup struct { CID string `long:"cid" env:"CID" description:"OAuth client ID"` CSEC string `long:"csec" env:"CSEC" description:"OAuth client secret"` }
AuthGroup defines options group for auth params
type AvatarCommand ¶
type AvatarCommand struct { AvatarSrc AvatarGroup `group:"src" namespace:"src"` AvatarDst AvatarGroup `group:"dst" namespace:"dst"` Mongo MongoGroup `group:"mongo" namespace:"mongo" env-namespace:"MONGO"` CommonOpts // contains filtered or unexported fields }
AvatarCommand set of flags and command for avatar migration it converts all avatars from src.type to dst.type. Note: it is possible to run migration for the same types (src = dst) in order to resize all avatars.
func (*AvatarCommand) Execute ¶
func (ac *AvatarCommand) Execute(args []string) error
Execute runs with AvatarCommand parameters, entry point for "avatar" command
type AvatarGroup ¶
type AvatarGroup struct { Type string `long:"type" env:"TYPE" description:"type of avatar storage" choice:"fs" choice:"bolt" choice:"mongo" default:"fs"` FS struct { Path string `long:"path" env:"PATH" default:"./var/avatars" description:"avatars location"` } `group:"fs" namespace:"fs" env-namespace:"FS"` Bolt struct { File string `long:"file" env:"FILE" default:"./var/avatars.db" description:"avatars bolt file location"` } `group:"bolt" namespace:"bolt" env-namespace:"bolt"` RszLmt int `long:"rsz-lmt" env:"RESIZE" default:"0" description:"max image size for resizing avatars on save"` }
AvatarGroup defines options group for avatar params
type AvatarMigrator ¶
AvatarMigrator defines interface for migration
type BackupCommand ¶
type BackupCommand struct { ExportPath string `short:"p" long:"path" env:"BACKUP_PATH" default:"./var/backup" description:"export path"` ExportFile string `short:"f" long:"file" default:"userbackup-{{.SITE}}-{{.TS}}.gz" description:"file name"` Site string `short:"s" long:"site" env:"SITE" default:"remark" description:"site name"` Timeout time.Duration `long:"timeout" default:"15m" description:"export (backup) timeout"` AdminPasswd string `long:"admin-passwd" env:"ADMIN_PASSWD" required:"true" description:"admin basic auth password"` CommonOpts }
BackupCommand set of flags and command for export ExportPath used as a separate element to leverage BACKUP_PATH. If ExportFile has a path (i.e. with /) BACKUP_PATH ignored.
func (*BackupCommand) Execute ¶
func (ec *BackupCommand) Execute(args []string) error
Execute runs export with ExportCommand parameters, entry point for "export" command
type CacheGroup ¶
type CacheGroup struct { Type string `long:"type" env:"TYPE" description:"type of cache" choice:"mem" choice:"mongo" choice:"none" default:"mem"` Max struct { Items int `long:"items" env:"ITEMS" default:"1000" description:"max cached items"` Value int `long:"value" env:"VALUE" default:"65536" description:"max size of cached value"` Size int64 `long:"size" env:"SIZE" default:"50000000" description:"max size of total cache"` } `group:"max" namespace:"max" env-namespace:"MAX"` }
CacheGroup defines options group for cache params
type CleanupCommand ¶
type CleanupCommand struct { Site string `short:"s" long:"site" env:"SITE" default:"remark" description:"site name"` Dry bool `long:"dry" description:"dry mode, will not remove comments"` From string `long:"from" description:"from yyyymmdd"` To string `long:"to" description:"from yyyymmdd"` BadWords []string `short:"w" long:"bword" description:"bad word(s)"` BadUsers []string `short:"u" long:"buser" description:"bad user(s)"` AdminPasswd string `long:"admin-passwd" env:"ADMIN_PASSWD" required:"true" description:"admin basic auth password"` SetTitle bool `long:"title" description:"title mode, will not remove comments, but reset titles to page's title'"` CommonOpts }
CleanupCommand set of flags and command for cleanup
func (*CleanupCommand) Execute ¶
func (cc *CleanupCommand) Execute(args []string) error
Execute runs cleanup with CleanupCommand parameters, entry point for "cleanup" command This command uses provided flags to detect and remove junk comments
type CommonOptionsCommander ¶
type CommonOptionsCommander interface { SetCommon(commonOpts CommonOpts) Execute(args []string) error }
CommonOptionsCommander extends flags.Commander with SetCommon All commands should implement this interfaces
type CommonOpts ¶
CommonOpts sets externally from main, shared across all commands
func (*CommonOpts) SetCommon ¶
func (c *CommonOpts) SetCommon(commonOpts CommonOpts)
SetCommon satisfies CommonOptionsCommander interface and sets common option fields The method called by main for each command
type ImportCommand ¶
type ImportCommand struct { InputFile string `short:"f" long:"file" description:"input file name" required:"true"` Provider string `short:"p" long:"provider" default:"disqus" choice:"disqus" choice:"wordpress" description:"import format"` Site string `short:"s" long:"site" env:"SITE" default:"remark" description:"site name"` Timeout time.Duration `long:"timeout" default:"15m" description:"import timeout"` AdminPasswd string `long:"admin-passwd" env:"ADMIN_PASSWD" required:"true" description:"admin basic auth password"` CommonOpts }
ImportCommand set of flags and command for import
func (*ImportCommand) Execute ¶
func (ic *ImportCommand) Execute(args []string) error
Execute runs import with ImportCommand parameters, entry point for "import" command
type MongoGroup ¶
type MongoGroup struct { URL string `long:"url" env:"URL" description:"mongo url"` DB string `long:"db" env:"DB" default:"remark42" description:"mongo database"` }
MongoGroup holds all mongo params, used by store, avatar and cache
type NotifyGroup ¶
type NotifyGroup struct { Type string `long:"type" env:"TYPE" description:"type of notification" choice:"none" choice:"telegram" default:"none"` QueueSize int `long:"queue" env:"QUEUE" description:"size of notification queue" default:"100"` Telegram struct { Token string `long:"token" env:"TOKEN" description:"telegram token"` Channel string `long:"chan" env:"CHAN" description:"telegram channel"` Timeout time.Duration `long:"timeout" env:"TIMEOUT" default:"5s" description:"telegram timeout"` API string `long:"api" env:"API" default:"https://api.telegram.org/bot" description:"telegram api prefix"` } `group:"telegram" namespace:"telegram" env-namespace:"TELEGRAM"` }
NotifyGroup defines options for notification
type RestoreCommand ¶
type RestoreCommand struct { ImportPath string `short:"p" long:"path" env:"BACKUP_PATH" default:"./var/backup" description:"export path"` ImportFile string `short:"f" long:"file" default:"userbackup-{{.SITE}}-{{.YYYYMMDD}}.gz" description:"file name" required:"true"` Site string `short:"s" long:"site" env:"SITE" default:"remark" description:"site name"` Timeout time.Duration `long:"timeout" default:"15m" description:"import timeout"` AdminPasswd string `long:"admin-passwd" env:"ADMIN_PASSWD" required:"true" description:"admin basic auth password"` CommonOpts }
RestoreCommand set of flags and command for restore from backup
func (*RestoreCommand) Execute ¶
func (rc *RestoreCommand) Execute(args []string) error
Execute runs import with RestoreCommand parameters, entry point for "restore" command uses ImportCommand with constructed full file name
type SSLGroup ¶
type SSLGroup struct { Type string `long:"type" env:"TYPE" description:"ssl (auto)support" choice:"none" choice:"static" choice:"auto" default:"none"` Port int `long:"port" env:"PORT" description:"port number for https server" default:"8443"` Cert string `long:"cert" env:"CERT" description:"path to cert.pem file"` Key string `long:"key" env:"KEY" description:"path to key.pem file"` ACMELocation string `` /* 133-byte string literal not displayed */ ACMEEmail string `long:"acme-email" env:"ACME_EMAIL" description:"admin email for certificate notifications"` }
SSLGroup defines options group for server ssl params
type ServerCommand ¶
type ServerCommand struct { Store StoreGroup `group:"store" namespace:"store" env-namespace:"STORE"` Avatar AvatarGroup `group:"avatar" namespace:"avatar" env-namespace:"AVATAR"` Cache CacheGroup `group:"cache" namespace:"cache" env-namespace:"CACHE"` Mongo MongoGroup `group:"mongo" namespace:"mongo" env-namespace:"MONGO"` Admin AdminGroup `group:"admin" namespace:"admin" env-namespace:"ADMIN"` Notify NotifyGroup `group:"notify" namespace:"notify" env-namespace:"NOTIFY"` SSL SSLGroup `group:"ssl" namespace:"ssl" env-namespace:"SSL"` Sites []string `long:"site" env:"SITE" default:"remark" description:"site names" env-delim:","` AdminPasswd string `long:"admin-passwd" env:"ADMIN_PASSWD" default:"" description:"admin basic auth password"` BackupLocation string `long:"backup" env:"BACKUP_PATH" default:"./var/backup" description:"backups location"` MaxBackupFiles int `long:"max-back" env:"MAX_BACKUP_FILES" default:"10" description:"max backups to keep"` ImageProxy bool `long:"img-proxy" env:"IMG_PROXY" description:"enable image proxy"` MaxCommentSize int `long:"max-comment" env:"MAX_COMMENT_SIZE" default:"2048" description:"max comment size"` MaxVotes int `long:"max-votes" env:"MAX_VOTES" default:"-1" description:"maximum number of votes per comment"` LowScore int `long:"low-score" env:"LOW_SCORE" default:"-5" description:"low score threshold"` CriticalScore int `long:"critical-score" env:"CRITICAL_SCORE" default:"-10" description:"critical score threshold"` ReadOnlyAge int `long:"read-age" env:"READONLY_AGE" default:"0" description:"read-only age of comments, days"` EditDuration time.Duration `long:"edit-time" env:"EDIT_TIME" default:"5m" description:"edit window"` Port int `long:"port" env:"REMARK_PORT" default:"8080" description:"port"` WebRoot string `long:"web-root" env:"REMARK_WEB_ROOT" default:"./web" description:"web root directory"` UpdateLimit float64 `long:"update-limit" env:"UPDATE_LIMIT" default:"0.5" description:"updates/sec limit"` RestrictedWords []string `long:"restricted-words" env:"RESTRICTED_WORDS" default:"" description:"words prohibited to use in comments" env-delim:","` Auth struct { TTL struct { JWT time.Duration `long:"jwt" env:"JWT" default:"5m" description:"jwt TTL"` Cookie time.Duration `long:"cookie" env:"COOKIE" default:"200h" description:"auth cookie TTL"` } `group:"ttl" namespace:"ttl" env-namespace:"TTL"` Google AuthGroup `group:"google" namespace:"google" env-namespace:"GOOGLE" description:"Google OAuth"` Github AuthGroup `group:"github" namespace:"github" env-namespace:"GITHUB" description:"Github OAuth"` Facebook AuthGroup `group:"facebook" namespace:"facebook" env-namespace:"FACEBOOK" description:"Facebook OAuth"` Yandex AuthGroup `group:"yandex" namespace:"yandex" env-namespace:"YANDEX" description:"Yandex OAuth"` Dev bool `long:"dev" env:"DEV" description:"enable dev (local) oauth2"` } `group:"auth" namespace:"auth" env-namespace:"AUTH"` CommonOpts }
ServerCommand with command line flags and env
func (*ServerCommand) Execute ¶
func (s *ServerCommand) Execute(args []string) error
Execute is the entry point for "server" command, called by flag parser
type StoreGroup ¶
type StoreGroup struct { Type string `long:"type" env:"TYPE" description:"type of storage" choice:"bolt" choice:"mongo" default:"bolt"` Bolt struct { Path string `long:"path" env:"PATH" default:"./var" description:"parent dir for bolt files"` Timeout time.Duration `long:"timeout" env:"TIMEOUT" default:"30s" description:"bolt timeout"` } `group:"bolt" namespace:"bolt" env-namespace:"BOLT"` }
StoreGroup defines options group for store params