Documentation ¶
Overview ¶
Nging is a toolbox for webmasters Copyright (C) 2018-present Wenhui Shen <swh@admpub.com>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
Nging is a toolbox for webmasters Copyright (C) 2018-present Wenhui Shen <swh@admpub.com>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
Nging is a toolbox for webmasters Copyright (C) 2018-present Wenhui Shen <swh@admpub.com>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
Nging is a toolbox for webmasters Copyright (C) 2018-present Wenhui Shen <swh@admpub.com>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
Index ¶
- Variables
- func AddDaemon(p *dbschema.ForeverProcess, run ...bool) *goforever.Process
- func CmdIsRunning(cmd *exec.Cmd) bool
- func ConnectDB(c *Config) error
- func ConnectMongoDB(c *Config) error
- func ConnectMySQL(c *Config) error
- func CreaterMySQL(err error, c *Config) error
- func DaemonCommonHook(p *goforever.Process)
- func ExecMySQL(sqlStr string) error
- func GetSQLInstallFiles() ([]string, error)
- func InDB(group ...string) echo.H
- func InitSessionOptions(c *Config)
- func IsInstalled() bool
- func MustOK(err error)
- func OnExitedDaemon(processM *dbschema.ForeverProcess)
- func ParseArgsSlice(a string) []string
- func ParseConfig() error
- func ParseEnvSlice(a string) []string
- func ParseTimeDuration(timeout string) time.Duration
- func QueryTo(sqlStr string, result interface{}) (sqlbuilder.Iterator, error)
- func RunDaemon()
- func SetInstalled(lockFile string) error
- func Table(table string) string
- func ToTable(m sqlbuilder.Name_) string
- func WatchConfig(fn func(string) error)
- type CLIConfig
- func (c *CLIConfig) CaddyReload() error
- func (c *CLIConfig) CaddyRestart(writer ...io.Writer) error
- func (c *CLIConfig) CaddyStart(writer ...io.Writer) (err error)
- func (c *CLIConfig) CaddyStop() error
- func (c *CLIConfig) CaddyStopHistory() (err error)
- func (c *CLIConfig) CmdGet(typeName string) *exec.Cmd
- func (c *CLIConfig) CmdGroupStop(groupName string) error
- func (c *CLIConfig) CmdHasGroup(groupName string) bool
- func (c *CLIConfig) CmdSendSignal(typeName string, sig os.Signal) error
- func (c *CLIConfig) CmdStop(typeName string) error
- func (c *CLIConfig) FRPClientRestart(writer ...io.Writer) error
- func (c *CLIConfig) FRPClientRestartID(id string, writer ...io.Writer) error
- func (c *CLIConfig) FRPClientStart(writer ...io.Writer) (err error)
- func (c *CLIConfig) FRPClientStartID(id uint, writer ...io.Writer) (err error)
- func (c *CLIConfig) FRPClientStop() error
- func (c *CLIConfig) FRPClientStopHistory(ids ...string) (err error)
- func (c *CLIConfig) FRPConfigFile(id uint, isServer bool) string
- func (c *CLIConfig) FRPPidFile(id string, isServer bool) string
- func (c *CLIConfig) FRPRebuildConfigFile(data interface{}, configFiles ...string) error
- func (c *CLIConfig) FRPRestart(writer ...io.Writer) error
- func (c *CLIConfig) FRPRestartID(id string, writer ...io.Writer) error
- func (c *CLIConfig) FRPSaveConfigFile(data interface{}) (err error)
- func (c *CLIConfig) FRPStart(writer ...io.Writer) (err error)
- func (c *CLIConfig) FRPStartID(id uint, writer ...io.Writer) (err error)
- func (c *CLIConfig) FRPStop() error
- func (c *CLIConfig) FRPStopHistory(ids ...string) (err error)
- func (c *CLIConfig) FTPRestart(writer ...io.Writer) error
- func (c *CLIConfig) FTPStart(writer ...io.Writer) (err error)
- func (c *CLIConfig) FTPStop() error
- func (c *CLIConfig) FTPStopHistory() (err error)
- func (c *CLIConfig) GenerateIDFromConfigFileName(configFile string, musts ...bool) string
- func (c *CLIConfig) InitFlag(flagSet *pflag.FlagSet)
- func (c *CLIConfig) IsRunning(ct string) bool
- func (c *CLIConfig) Kill(cmd *exec.Cmd) error
- func (c *CLIConfig) MustFRPRebuildConfigFile(data interface{}, configFiles ...string) error
- func (c *CLIConfig) OnlyRunServer() bool
- func (c *CLIConfig) ParseConfig()
- func (c *CLIConfig) Reload(cts ...string) error
- func (c *CLIConfig) RunStartup()
- func (c *CLIConfig) SetLogWriter(cmdType string, writer ...io.Writer) error
- type Config
- func (c *Config) AsDefault()
- func (c *Config) Codec() codec.Codec
- func (c *Config) ConnectedDB(autoConn ...bool) bool
- func (c *Config) Decode(encrypted string, keys ...string) string
- func (c *Config) Encode(raw string, keys ...string) string
- func (c *Config) GenerateRandomKey() string
- func (c *Config) InitSecretKey() *Config
- func (c *Config) Reload(newConfig *Config) error
- func (c *Config) SaveToFile() error
- func (c *Config) SetDebug(on bool) *Config
- type ConfigInDB
- type DB
- type DBConnSetter
- type Email
- type Log
- type Navigation
- type VersionInfo
Constants ¶
This section is empty.
Variables ¶
var ( EmptyBytes = []byte{} ErrNoAvailibaleConfigFound = errors.New(`No available configurations found`) )
var ( Daemon = goforever.Default DaemonDefaultHook = DaemonCommonHook )
var ( Installed sql.NullBool DefaultConfig *Config DefaultCLIConfig = NewCLIConfig() OAuthUserSessionKey = `oauthUser` ErrUnknowDatabaseType = errors.New(`unkown database type`) )
var ( SessionOptions *echo.SessionOptions CookieOptions *cookie.CookieOptions SessionEngine = `file` SessionName = `SID` )
var ( DBConnecters = map[string]func(*Config) error{ `mysql`: ConnectMySQL, `mongo`: ConnectMongoDB, } DBInstallers = map[string]func(string) error{ `mysql`: ExecMySQL, } DBCreaters = map[string]func(error, *Config) error{ `mysql`: CreaterMySQL, } DBEngines = echo.NewKVData().Add(`mysql`, `MySQL`) )
var ErrCmdNotRunning = errors.New(`command is not running`)
var Version = &VersionInfo{Name: `Nging`}
Functions ¶
func CmdIsRunning ¶
func ConnectMongoDB ¶ added in v1.1.0
func ConnectMySQL ¶ added in v1.1.0
func CreaterMySQL ¶ added in v1.1.0
func DaemonCommonHook ¶
func GetSQLInstallFiles ¶
func InitSessionOptions ¶
func InitSessionOptions(c *Config)
func IsInstalled ¶
func IsInstalled() bool
func OnExitedDaemon ¶
func OnExitedDaemon(processM *dbschema.ForeverProcess)
OnExitedDaemon 当值守程序达到最大重试次数退出时
func ParseArgsSlice ¶
func ParseConfig ¶
func ParseConfig() error
func ParseEnvSlice ¶
func ParseTimeDuration ¶
func SetInstalled ¶
func ToTable ¶
func ToTable(m sqlbuilder.Name_) string
func WatchConfig ¶
Types ¶
type CLIConfig ¶
type CLIConfig struct { BackendDomain string //前台绑定域名 FrontendDomain string //后台绑定域名 Address string //监听IP地址 Port int //监听端口 Conf string Confx string Type string //启动类型: webserver/ftpserver/manager Startup string //manager启动时同时启动的服务,可选的有webserver/ftpserver,如有多个需用半角逗号“,”隔开 // contains filtered or unexported fields }
func NewCLIConfig ¶
func NewCLIConfig() *CLIConfig
func (*CLIConfig) CaddyReload ¶
func (*CLIConfig) CaddyStopHistory ¶
func (*CLIConfig) CmdGroupStop ¶
func (*CLIConfig) CmdHasGroup ¶
func (*CLIConfig) CmdSendSignal ¶
func (*CLIConfig) FRPClientRestart ¶
func (*CLIConfig) FRPClientRestartID ¶
func (*CLIConfig) FRPClientStart ¶
func (*CLIConfig) FRPClientStartID ¶
func (*CLIConfig) FRPClientStop ¶
func (*CLIConfig) FRPClientStopHistory ¶
func (*CLIConfig) FRPRebuildConfigFile ¶
func (*CLIConfig) FRPRestartID ¶
func (*CLIConfig) FRPSaveConfigFile ¶
func (*CLIConfig) FRPStartID ¶
func (*CLIConfig) FRPStopHistory ¶
func (*CLIConfig) FTPStopHistory ¶
func (*CLIConfig) GenerateIDFromConfigFileName ¶
func (*CLIConfig) MustFRPRebuildConfigFile ¶
func (*CLIConfig) OnlyRunServer ¶
func (*CLIConfig) ParseConfig ¶
func (c *CLIConfig) ParseConfig()
type Config ¶
type Config struct { DB DB `json:"db"` Sys struct { VhostsfileDir string `json:"vhostsfileDir"` AllowIP []string `json:"allowIP"` SSLAuto bool `json:"sslAuto"` SSLEmail string `json:"sslEmail"` SSLHosts []string `json:"sslHosts"` SSLCacheDir string `json:"sslCacheDir"` SSLKeyFile string `json:"sslKeyFile"` SSLCertFile string `json:"sslCertFile"` EditableFileExtensions map[string]string `json:"editableFileExtensions"` EditableFileMaxSize string `json:"editableFileMaxSize"` EditableFileMaxBytes int64 `json:"editableFileMaxBytes"` PlayableFileExtensions map[string]string `json:"playableFileExtensions"` ErrorPages map[int]string `json:"errorPages"` CmdTimeout string `json:"cmdTimeout"` CmdTimeoutDuration time.Duration `json:"-"` ShowExpirationTime int64 `json:"showExpirationTime"` //显示过期时间:0为始终显示;大于0为距离剩余到期时间多少秒的时候显示;小于0为不显示 } `json:"sys"` Cron struct { PoolSize int `json:"poolSize"` Template string `json:"template"` //发信模板 } `json:"cron"` Cookie struct { Domain string `json:"domain"` MaxAge int `json:"maxAge"` Path string `json:"path"` HttpOnly bool `json:"httpOnly"` HashKey string `json:"hashKey"` BlockKey string `json:"blockKey"` } `json:"cookie"` Caddy caddy.Config `json:"caddy"` FTP ftp.Config `json:"ftp"` Language language.Config `json:"language"` Download struct { SavePath string `json:"savePath"` } `json:"download"` *ConfigInDB `json:"-"` // contains filtered or unexported fields }
func InitConfig ¶ added in v1.2.0
func (*Config) ConnectedDB ¶
ConnectedDB 数据库是否已连接,如果没有连接则自动连接
func (*Config) GenerateRandomKey ¶
func (*Config) InitSecretKey ¶
func (*Config) SaveToFile ¶
type ConfigInDB ¶
type ConfigInDB struct { Email Email `json:"email"` Log Log `json:"log"` APIKey string `json:"-"` //API密钥 Debug bool `json:"debug"` Base echo.H `json:"base"` // contains filtered or unexported fields }
func NewConfigInDB ¶
func NewConfigInDB(config *Config) *ConfigInDB
func (*ConfigInDB) GetConfig ¶
func (c *ConfigInDB) GetConfig() echo.H
func (*ConfigInDB) Init ¶
func (c *ConfigInDB) Init()
func (*ConfigInDB) SetBy ¶
func (c *ConfigInDB) SetBy(r echo.H, defaults echo.H) *ConfigInDB
func (*ConfigInDB) SetDebug ¶
func (c *ConfigInDB) SetDebug(on bool)
type DB ¶
type DB struct { Type string `json:"type"` User string `json:"user"` Password string `json:"password"` Host string `json:"host"` Database string `json:"database"` Prefix string `json:"prefix"` Options map[string]string `json:"options"` Debug bool `json:"debug"` ConnMaxLifetime string `json:"connMaxLifetime"` //example: 10s MaxIdleConns int `json:"maxIdleConns"` MaxOpenConns int `json:"maxOpenConns"` // contains filtered or unexported fields }
func (*DB) ConnMaxDuration ¶
func (*DB) SetConn ¶
func (d *DB) SetConn(setter DBConnSetter) error
type DBConnSetter ¶
type Email ¶
type Log ¶
type VersionInfo ¶
type VersionInfo struct { Name string //软件名称 Number string //版本号 1.0.1 Label string //版本标签 beta/alpha/stable DBSchema float64 //数据库表版本 例如:1.2 BuildTime string //构建时间 CommitID string //GIT提交ID Licensed bool //是否已授权 Expired time.Time //过期时间 }
func (*VersionInfo) IsExpired ¶
func (v *VersionInfo) IsExpired() bool
func (*VersionInfo) String ¶
func (v *VersionInfo) String() string
func (*VersionInfo) VString ¶
func (v *VersionInfo) VString() string