mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-02 13:00:10 +02:00
#1625 remove auto_register and makes it default
This commit is contained in:
1 parent
6969c20afd
commit
cd37fccdfb
10 files changed
+138
-131
No files matched your search
@@ -61,8 +61,8 @@ The goal of this project is to make the easiest, fastest, and most painless way
|
|||||||
- Gravatar and custom source support
|
- Gravatar and custom source support
|
||||||
- Mail service
|
- Mail service
|
||||||
- Administration panel
|
- Administration panel
|
||||||
- Supports MySQL, PostgreSQL and SQLite3
|
- CI integration: [Drone](https://github.com/drone/drone)
|
||||||
- Social account login (GitHub, Google, QQ, Weibo)
|
- Supports MySQL, PostgreSQL, SQLite3 and [TiDB](https://github.com/pingcap/tidb)
|
||||||
- Multi-language support ([14 languages](https://crowdin.com/project/gogs))
|
- Multi-language support ([14 languages](https://crowdin.com/project/gogs))
|
||||||
|
|
||||||
## System Requirements
|
## System Requirements
|
||||||
|
|||||||
+2
-2
@@ -28,8 +28,8 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
|
|||||||
- 支持 Gravatar 以及自定义源
|
- 支持 Gravatar 以及自定义源
|
||||||
- 支持邮件服务
|
- 支持邮件服务
|
||||||
- 支持后台管理面板
|
- 支持后台管理面板
|
||||||
- 支持 MySQL、PostgreSQL 以及 SQLite3 数据库
|
- 支持 CI 集成:[Drone](https://github.com/drone/drone)
|
||||||
- 支持社交帐号登录(GitHub、Google、QQ、微博)
|
- 支持 MySQL、PostgreSQL、SQLite3 和 [TiDB](https://github.com/pingcap/tidb) 数据库
|
||||||
- 支持多语言本地化([14 种语言]([more](https://crowdin.com/project/gogs)))
|
- 支持多语言本地化([14 种语言]([more](https://crowdin.com/project/gogs)))
|
||||||
|
|
||||||
## 系统要求
|
## 系统要求
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ code = Code
|
|||||||
[install]
|
[install]
|
||||||
install = Installation
|
install = Installation
|
||||||
title = Install Steps For First-time Run
|
title = Install Steps For First-time Run
|
||||||
requite_db_desc = Gogs requires MySQL, PostgreSQL or SQLite3.
|
requite_db_desc = Gogs requires MySQL, PostgreSQL, SQLite3 or TiDB.
|
||||||
db_title = Database Settings
|
db_title = Database Settings
|
||||||
db_type = Database Type
|
db_type = Database Type
|
||||||
host = Host
|
host = Host
|
||||||
@@ -64,7 +64,7 @@ db_name = Database Name
|
|||||||
db_helper = Please use INNODB engine with utf8_general_ci charset for MySQL.
|
db_helper = Please use INNODB engine with utf8_general_ci charset for MySQL.
|
||||||
ssl_mode = SSL Mode
|
ssl_mode = SSL Mode
|
||||||
path = Path
|
path = Path
|
||||||
sqlite_helper = The file path of SQLite3 database.
|
sqlite_helper = The file path of SQLite3 or TiDB database.
|
||||||
err_empty_db_path = SQLite3 or TiDB database path cannot be empty.
|
err_empty_db_path = SQLite3 or TiDB database path cannot be empty.
|
||||||
err_invalid_tidb_name = TiDB database name does not allow characters "." and "-".
|
err_invalid_tidb_name = TiDB database name does not allow characters "." and "-".
|
||||||
no_admin_and_disable_registration = You cannot disable registration without creating an admin account.
|
no_admin_and_disable_registration = You cannot disable registration without creating an admin account.
|
||||||
|
|||||||
+99
-80
@@ -96,14 +96,13 @@ func (cfg *PAMConfig) ToDB() ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type LoginSource struct {
|
type LoginSource struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
Type LoginType
|
Type LoginType
|
||||||
Name string `xorm:"UNIQUE"`
|
Name string `xorm:"UNIQUE"`
|
||||||
IsActived bool `xorm:"NOT NULL DEFAULT false"`
|
IsActived bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
Cfg core.Conversion `xorm:"TEXT"`
|
Cfg core.Conversion `xorm:"TEXT"`
|
||||||
AllowAutoRegister bool `xorm:"NOT NULL DEFAULT false"`
|
Created time.Time `xorm:"CREATED"`
|
||||||
Created time.Time `xorm:"CREATED"`
|
Updated time.Time `xorm:"UPDATED"`
|
||||||
Updated time.Time `xorm:"UPDATED"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (source *LoginSource) BeforeSet(colName string, val xorm.Cell) {
|
func (source *LoginSource) BeforeSet(colName string, val xorm.Cell) {
|
||||||
@@ -208,81 +207,18 @@ func DeleteSource(source *LoginSource) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserSignIn validates user name and password.
|
// .____ ________ _____ __________
|
||||||
func UserSignIn(uname, passwd string) (*User, error) {
|
// | | \______ \ / _ \\______ \
|
||||||
var u *User
|
// | | | | \ / /_\ \| ___/
|
||||||
if strings.Contains(uname, "@") {
|
// | |___ | ` \/ | \ |
|
||||||
u = &User{Email: uname}
|
// |_______ \/_______ /\____|__ /____|
|
||||||
} else {
|
// \/ \/ \/
|
||||||
u = &User{LowerName: strings.ToLower(uname)}
|
|
||||||
}
|
|
||||||
|
|
||||||
userExists, err := x.Get(u)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if userExists {
|
|
||||||
switch u.LoginType {
|
|
||||||
case NOTYPE, PLAIN:
|
|
||||||
if u.ValidatePassword(passwd) {
|
|
||||||
return u, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, ErrUserNotExist{u.Id, u.Name}
|
|
||||||
|
|
||||||
default:
|
|
||||||
var source LoginSource
|
|
||||||
hasSource, err := x.Id(u.LoginSource).Get(&source)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else if !hasSource {
|
|
||||||
return nil, ErrLoginSourceNotExist
|
|
||||||
}
|
|
||||||
|
|
||||||
return ExternalUserLogin(u, u.LoginName, passwd, &source, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var sources []LoginSource
|
|
||||||
if err = x.UseBool().Find(&sources, &LoginSource{IsActived: true}); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, source := range sources {
|
|
||||||
u, err := ExternalUserLogin(nil, uname, passwd, &source, source.AllowAutoRegister)
|
|
||||||
if err == nil {
|
|
||||||
return u, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Warn("Failed to login '%s' via '%s': %v", uname, source.Name, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, ErrUserNotExist{u.Id, u.Name}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExternalUserLogin(u *User, name, passwd string, source *LoginSource, autoRegister bool) (*User, error) {
|
|
||||||
if !source.IsActived {
|
|
||||||
return nil, ErrLoginSourceNotActived
|
|
||||||
}
|
|
||||||
|
|
||||||
switch source.Type {
|
|
||||||
case LDAP, DLDAP:
|
|
||||||
return LoginUserLdapSource(u, name, passwd, source, autoRegister)
|
|
||||||
case SMTP:
|
|
||||||
return LoginUserSMTPSource(u, name, passwd, source.ID, source.Cfg.(*SMTPConfig), autoRegister)
|
|
||||||
case PAM:
|
|
||||||
return LoginUserPAMSource(u, name, passwd, source.ID, source.Cfg.(*PAMConfig), autoRegister)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, ErrUnsupportedLoginType
|
|
||||||
}
|
|
||||||
|
|
||||||
// Query if name/passwd can login against the LDAP directory pool
|
// Query if name/passwd can login against the LDAP directory pool
|
||||||
// Create a local user if success
|
// Create a local user if success
|
||||||
// Return the same LoginUserPlain semantic
|
// Return the same LoginUserPlain semantic
|
||||||
// FIXME: https://github.com/gogits/gogs/issues/672
|
// FIXME: https://github.com/gogits/gogs/issues/672
|
||||||
func LoginUserLdapSource(u *User, name, passwd string, source *LoginSource, autoRegister bool) (*User, error) {
|
func LoginUserLDAPSource(u *User, name, passwd string, source *LoginSource, autoRegister bool) (*User, error) {
|
||||||
cfg := source.Cfg.(*LDAPConfig)
|
cfg := source.Cfg.(*LDAPConfig)
|
||||||
directBind := (source.Type == DLDAP)
|
directBind := (source.Type == DLDAP)
|
||||||
fn, sn, mail, admin, logged := cfg.Ldapsource.SearchEntry(name, passwd, directBind)
|
fn, sn, mail, admin, logged := cfg.Ldapsource.SearchEntry(name, passwd, directBind)
|
||||||
@@ -303,11 +239,10 @@ func LoginUserLdapSource(u *User, name, passwd string, source *LoginSource, auto
|
|||||||
u = &User{
|
u = &User{
|
||||||
LowerName: strings.ToLower(name),
|
LowerName: strings.ToLower(name),
|
||||||
Name: name,
|
Name: name,
|
||||||
FullName: fn + " " + sn,
|
FullName: strings.TrimSpace(fn + " " + sn),
|
||||||
LoginType: source.Type,
|
LoginType: source.Type,
|
||||||
LoginSource: source.ID,
|
LoginSource: source.ID,
|
||||||
LoginName: name,
|
LoginName: name,
|
||||||
Passwd: passwd,
|
|
||||||
Email: mail,
|
Email: mail,
|
||||||
IsAdmin: admin,
|
IsAdmin: admin,
|
||||||
IsActive: true,
|
IsActive: true,
|
||||||
@@ -315,6 +250,13 @@ func LoginUserLdapSource(u *User, name, passwd string, source *LoginSource, auto
|
|||||||
return u, CreateUser(u)
|
return u, CreateUser(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// _________ __________________________
|
||||||
|
// / _____/ / \__ ___/\______ \
|
||||||
|
// \_____ \ / \ / \| | | ___/
|
||||||
|
// / \/ Y \ | | |
|
||||||
|
// /_______ /\____|__ /____| |____|
|
||||||
|
// \/ \/
|
||||||
|
|
||||||
type loginAuth struct {
|
type loginAuth struct {
|
||||||
username, password string
|
username, password string
|
||||||
}
|
}
|
||||||
@@ -433,6 +375,13 @@ func LoginUserSMTPSource(u *User, name, passwd string, sourceId int64, cfg *SMTP
|
|||||||
return u, err
|
return u, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// __________ _____ _____
|
||||||
|
// \______ \/ _ \ / \
|
||||||
|
// | ___/ /_\ \ / \ / \
|
||||||
|
// | | / | \/ Y \
|
||||||
|
// |____| \____|__ /\____|__ /
|
||||||
|
// \/ \/
|
||||||
|
|
||||||
// Query if name/passwd can login against PAM
|
// Query if name/passwd can login against PAM
|
||||||
// Create a local user if success
|
// Create a local user if success
|
||||||
// Return the same LoginUserPlain semantic
|
// Return the same LoginUserPlain semantic
|
||||||
@@ -462,3 +411,73 @@ func LoginUserPAMSource(u *User, name, passwd string, sourceId int64, cfg *PAMCo
|
|||||||
err := CreateUser(u)
|
err := CreateUser(u)
|
||||||
return u, err
|
return u, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExternalUserLogin(u *User, name, passwd string, source *LoginSource, autoRegister bool) (*User, error) {
|
||||||
|
if !source.IsActived {
|
||||||
|
return nil, ErrLoginSourceNotActived
|
||||||
|
}
|
||||||
|
|
||||||
|
switch source.Type {
|
||||||
|
case LDAP, DLDAP:
|
||||||
|
return LoginUserLDAPSource(u, name, passwd, source, autoRegister)
|
||||||
|
case SMTP:
|
||||||
|
return LoginUserSMTPSource(u, name, passwd, source.ID, source.Cfg.(*SMTPConfig), autoRegister)
|
||||||
|
case PAM:
|
||||||
|
return LoginUserPAMSource(u, name, passwd, source.ID, source.Cfg.(*PAMConfig), autoRegister)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, ErrUnsupportedLoginType
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserSignIn validates user name and password.
|
||||||
|
func UserSignIn(uname, passwd string) (*User, error) {
|
||||||
|
var u *User
|
||||||
|
if strings.Contains(uname, "@") {
|
||||||
|
u = &User{Email: uname}
|
||||||
|
} else {
|
||||||
|
u = &User{LowerName: strings.ToLower(uname)}
|
||||||
|
}
|
||||||
|
|
||||||
|
userExists, err := x.Get(u)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if userExists {
|
||||||
|
switch u.LoginType {
|
||||||
|
case NOTYPE, PLAIN:
|
||||||
|
if u.ValidatePassword(passwd) {
|
||||||
|
return u, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, ErrUserNotExist{u.Id, u.Name}
|
||||||
|
|
||||||
|
default:
|
||||||
|
var source LoginSource
|
||||||
|
hasSource, err := x.Id(u.LoginSource).Get(&source)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if !hasSource {
|
||||||
|
return nil, ErrLoginSourceNotExist
|
||||||
|
}
|
||||||
|
|
||||||
|
return ExternalUserLogin(u, u.LoginName, passwd, &source, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var sources []LoginSource
|
||||||
|
if err = x.UseBool().Find(&sources, &LoginSource{IsActived: true}); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, source := range sources {
|
||||||
|
u, err := ExternalUserLogin(nil, uname, passwd, &source, true)
|
||||||
|
if err == nil {
|
||||||
|
return u, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Warn("Failed to login '%s' via '%s': %v", uname, source.Name, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, ErrUserNotExist{u.Id, u.Name}
|
||||||
|
}
|
||||||
+22
-23
@@ -10,29 +10,28 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type AuthenticationForm struct {
|
type AuthenticationForm struct {
|
||||||
ID int64
|
ID int64
|
||||||
Type int `binding:"Range(2,5)"`
|
Type int `binding:"Range(2,5)"`
|
||||||
Name string `binding:"Required;MaxSize(30)"`
|
Name string `binding:"Required;MaxSize(30)"`
|
||||||
Host string
|
Host string
|
||||||
Port int
|
Port int
|
||||||
BindDN string
|
BindDN string
|
||||||
BindPassword string
|
BindPassword string
|
||||||
UserBase string
|
UserBase string
|
||||||
UserDN string `form:"user_dn"`
|
UserDN string `form:"user_dn"`
|
||||||
AttributeName string
|
AttributeName string
|
||||||
AttributeSurname string
|
AttributeSurname string
|
||||||
AttributeMail string
|
AttributeMail string
|
||||||
Filter string
|
Filter string
|
||||||
AdminFilter string
|
AdminFilter string
|
||||||
IsActive bool
|
IsActive bool
|
||||||
SMTPAuth string
|
SMTPAuth string
|
||||||
SMTPHost string
|
SMTPHost string
|
||||||
SMTPPort int
|
SMTPPort int
|
||||||
AllowedDomains string
|
AllowedDomains string
|
||||||
TLS bool
|
TLS bool
|
||||||
SkipVerify bool
|
SkipVerify bool
|
||||||
AllowAutoRegister bool
|
PAMServiceName string `form:"pam_service_name"`
|
||||||
PAMServiceName string `form:"pam_service_name"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *AuthenticationForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
|
func (f *AuthenticationForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ func (fi bindataFileInfo) Sys() interface{} {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var _confAppIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x5a\x5b\x8f\xe3\x46\x76\x7e\xe7\xaf\x28\xb7\xe3\x78\x1c\x48\xea\x9b\xe7\xe2\xb6\x3b\xb1\x5a\xa2\xba\xb9\xa3\x96\x64\x52\x9a\xf1\x78\x30\xe0\xb0\xc9\x92\x44\x37\x45\x6a\x58\x64\xf7\xc8\xc8\xc3\x1a\x79\x08\x90\xc7\x64\x91\xbc\x04\x41\xf2\x10\x04\xd8\x5c\x90\x45\x5e\x76\x37\xc8\x93\x91\xf7\x99\xff\x60\x78\x37\xff\x22\xdf\x39\x55\x94\xa8\x9e\xf6\xac\x77\x93\xc5\x0c\x5a\x54\x5d\x4e\xd5\xf9\xea\x5c\xbe\x53\xd4\xbb\x62\x60\x3f\xb2\x5d\xc1\x7f\xce\x87\x5d\xa7\xf7\x44\x8c\xcf\x1c\x4f\xf4\x9c\xbe\x6d\xbd\x2b\x46\x7d\xbb\xed\xd9\xe2\xbc\xfd\xd0\x16\x9d\xb3\xf6\xe0\xd4\xf6\xc4\x70\x20\x3a\x43\xd7\xb5\xbd\xd1\x70\xd0\x75\x06\xa7\xa2\x33\xf1\xc6\xc3\x73\x34\x0e\x7a\xce\xa9\x9e\x69\x7d\x2c\xda\xcb\xa5\x48\x83\x85\x14\xc5\x3c\x28\x84\x9a\x67\xd7\x4a\x64\xa9\x90\x57\x32\x5f\x89\x65\x30\x43\x47\x5c\x24\xd2\x6a\x8f\x46\xfe\xa0\x7d\x6e\x8b\x63\x71\x9a\xcd\xd4\x11\xfe\x8a\xd3\xb8\x10\x9e\xcc\xaf\xe2\x50\x42\x52\x67\x1e\xa4\x18\x8e\xb6\x78\x2a\x56\x59\x29\xf2\x32\x15\x49\x16\x06\x49\xb2\xb2\xdc\xc9\xc0\x9f\x78\xd8\xfd\xb1\x98\xc5\x05\x46\xdb\x71\x31\x97\xb9\xd8\x89\xe4\xd5\x4e\x43\xec\x2c\xf3\x2c\xda\x11\x19\x1a\x0a\xa9\x0a\xb4\x44\x72\x1a\x94\x09\x64\x29\x3d\x86\x25\x40\x75\xda\x00\xbe\x5b\xd6\xd3\x5c\x2e\x33\x15\x17\x59\xbe\x7a\x66\xb9\xc3\xe1\x58\x1c\x5b\x5e\xc7\x75\x46\x63\x7f\xfc\x64\x44\xc3\x2e\x02\x35\xc7\xb8\x32\x7e\x86\xf5\x06\xe5\xe2\x02\xeb\x65\x53\xb1\x9e\x17\x4b\xa5\xb5\x0e\x72\xc9\x9a\xcb\x48\xc4\x29\xb4\x97\x42\xbe\x5c\x26\x19\x5a\x09\x00\xcb\xfe\x7c\xd4\x1f\xba\xb6\x3f\x6a\x9f\x02\x47\x7f\x30\x39\x87\xf0\x83\xbd\x2d\xa1\xb1\x52\xe5\xf7\x8b\x63\x31\x8e\xe7\x4d\x6e\x08\xd9\xdf\xe3\xfd\xb5\x82\x68\x11\xa7\x66\x97\x5a\x5e\xa9\x64\xfe\x76\x71\x84\xe6\xb6\xb4\xbb\x24\x6d\x11\xe4\x97\x51\x76\xcd\xd2\xec\x34\xb8\x48\xa4\x98\x07\x79\x24\x92\x18\x13\x2f\x72\x19\x5c\x42\xb9\x42\xa6\x2a\xce\x52\xcb\x1e\xb4\x4f\xfa\xb6\x7f\xd6\x76\xbb\x7e\xdf\x19\xd8\xfe\x89\x6b\xb7\x1f\x42\xd4\x34\x48\x94\x84\x34\xec\x02\x86\xf0\xcc\x1a\xb9\xc3\xf1\xb0\x33\xec\xa3\x6b\x5e\x14\x4b\xab\x3b\x3c\x6f\x3b\x03\x7c\xe3\xf3\x9d\x67\xaa\xe0\x23\xf0\x27\x2e\x0d\x79\xef\x4e\x35\xfe\x03\x75\xb4\xbb\xfb\xde\x1d\x3d\x1c\x5f\xde\xbb\x73\x36\x1e\x8f\xfc\xd1\xd0\x1d\x7f\xa0\x76\x2d\xfe\xd2\xee\x76\x61\x16\xd6\xba\x03\x02\x0e\xf7\xf6\x08\xde\x6e\xac\x58\x01\xcf\x3b\x13\x53\x19\x14\x25\x90\xb8\x9e\xcb\x54\xa4\x19\x60\xb9\x0a\xe2\x84\xba\xad\xae\xe3\xb1\x1a\x34\xac\xda\x3a\x9e\x2b\x61\x07\x07\x35\x51\x9d\xee\x80\x6c\x3b\x25\x28\x8d\xd1\x2d\xb2\x48\x5a\xc3\x5e\x8f\x01\x30\x16\xa6\x85\x54\x82\xdd\xe1\x64\x0c\xb0\xfb\xc3\xd3\x75\xd7\xc7\xe2\x54\xa6\x32\x0f\x0a\x9c\x4d\x21\x97\xea\x08\x2d\x7f\x20\xc2\x08\x67\x53\xcc\x77\x8b\x6c\x77\x06\x27\xd9\x0d\x4b\x55\x64\x8b\x5d\x82\x4c\xf1\x80\x16\xb7\x8b\x50\xe6\x85\x68\x86\xc1\x71\x91\x97\x52\x34\xa3\x12\x82\x70\x1e\xc7\x0f\xee\xdf\xdb\x9b\xef\x2d\xf6\x94\x68\x12\xa6\xc7\x8b\x15\x7d\xb4\xe4\xcb\x60\xb1\x4c\x64\x2b\xcc\x16\xd6\xc7\x90\x33\xcc\xc5\x34\xcf\x16\x22\x10\xad\xe5\xf4\xa5\x98\xc6\x09\x5b\x6c\x96\x17\xb0\x11\xee\x81\x6f\x89\xc7\x71\x1a\x91\x37\xd3\x62\xf1\x34\x0e\xf5\x5e\xc9\xaa\xef\x44\x19\xa4\x10\x88\xd3\x2c\x9f\xc9\x42\x14\x99\x99\xcf\x13\x97\x79\x7c\x45\x83\x2f\xe5\xea\x03\xad\x57\xb6\x84\xc1\xa8\x44\x2c\x2f\x43\xb5\x7f\x20\x9a\x00\x8f\xa4\xf2\xea\xcd\xac\x2c\xcc\x37\xb9\x10\xcd\x34\xc3\x34\xf5\xc3\x66\x61\x64\x35\x89\x3a\x14\x3d\x44\x52\x59\x1d\xdb\x1d\xfb\x14\xa0\x00\x77\x1d\xc2\xdd\x6a\x19\xeb\xa1\xfd\xe4\xd6\x01\x46\x22\x96\x9f\x2c\x97\xf0\xa4\x04\x67\x9d\x90\x3f\x15\x12\x08\x92\x52\x41\x1a\x01\x05\xc0\x1d\x6a\xdc\xe8\xbc\x30\xbc\x16\x6e\x18\x02\xb4\x92\xa9\x01\x2c\x8a\x76\xd4\x2c\x5f\xca\xb0\x04\xc0\x96\x37\x6e\x8f\x9d\x8e\xcf\xf6\x3e\x6a\x8f\x61\x73\x3a\x8c\x26\x04\x31\x4e\xd1\x2c\x7a\xfa\x85\x33\x12\xaa\x5c\x12\xac\x95\xa3\x71\xdb\xc6\x84\xfa\xd8\x4c\x9c\xce\x74\x98\xc5\x51\xe0\x48\xd2\x66\x92\xcd\x66\x38\x46\x0e\x00\x0d\x11\x06\xa9\xb8\x90\x62\x67\x9e\x2d\xa4\x8e\x8f\x26\x34\xed\x58\xfd\x36\xc7\x75\x8a\x01\x84\x03\x8d\x80\xc7\x46\x41\x11\x20\xf0\xc9\x67\xb5\x18\xbb\x58\xa9\x17\x09\x47\x59\x58\xd3\x2c\x97\x4a\x4b\x42\x63\x5c\xc8\x43\x74\xc4\xc5\xfb\x8a\x42\x76\x2e\xc2\x79\x46\xd1\xbc\x7b\x52\x05\x51\x9e\x6b\x9d\x0d\x3d\x72\xa5\xfd\x83\xfb\xad\x3d\xfc\xdb\x3f\x3a\x3c\xdc\xbb\x67\x99\x7c\x40\x26\x6d\x99\xe0\x9e\x67\x59\x61\x8d\xda\x9e\xf7\xb8\xcb\xb8\xf4\x68\xa1\xda\xb2\x69\xb2\x6a\x08\x59\xc5\x7e\xed\x94\xb4\xb3\x5c\xbe\x28\xe3\xdc\xa8\x88\x90\x13\x4f\x57\xcd\x69\x99\x24\x3b\xf0\xe4\xfe\x3a\xee\xeb\xf1\x95\xd8\x6a\xff\x2c\xd5\xd2\x47\x21\x48\x7f\x76\xb2\x56\x74\x01\x38\x4c\x64\xa5\x48\x16\x96\x79\x5c\x20\x57\x38\x03\x9c\x60\xbf\x0f\x77\xee\x3c\xac\x1d\xc6\x3b\xef\xe8\xcc\xa9\x13\xeb\x78\x28\x1e\xda\xf6\x48\x3c\x19\x4e\x5c\xc1\xba\x75\xdb\xe3\xb6\xf0\xda\x3d\xfb\x9d\x77\x2c\xcf\xee\xb8\xf6\xd8\x87\x15\x42\xc0\x3b\xef\x7e\xda\xeb\xda\x8f\x5d\xfc\xff\xc3\x3f\xba\x43\xb6\x50\x16\x19\x1d\x23\xec\x3d\x97\x0b\xc9\x29\x22\x0a\xe0\x14\x08\x20\xce\xc0\x77\xed\x73\xfb\xfc\x04\xf1\xa4\xdb\x7e\xe2\x61\xfe\x7d\xab\x33\x1c\x3e\x74\x6c\xce\x8f\x35\x48\Line truncated
|
var _confAppIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xb4\x5a\x5b\x8f\xe3\x46\x76\x7e\xe7\xaf\x28\xcb\x71\x3c\x0e\x24\xf5\xcd\x73\x71\xdb\x9d\x58\x2d\x51\xdd\xda\xd1\xcd\xa4\x34\xe3\xf1\x60\xc0\x61\x93\x25\x89\x6e\x8a\xd4\xb0\xc8\xee\x91\x91\x87\x35\xf2\x10\x20\x8f\xc9\x22\x79\x09\x82\xe4\x21\x08\xb0\xb9\x20\x8b\xbc\xec\x6e\x90\x27\x23\xef\x33\xff\xc1\xf0\x6e\xfe\x45\xbe\x73\xaa\x28\x51\x3d\xed\x59\xef\x26\x8b\x19\xb4\xa8\xba\x9c\xaa\xfa\xea\xd4\x77\xbe\x53\xd4\xbb\x62\x68\x3f\xb2\x1d\xc1\x7f\x06\xa3\x4e\xaf\xfb\x44\x4c\xce\x7b\xae\xe8\xf6\xfa\xb6\xf5\xae\x18\xf7\xed\x96\x6b\x8b\x41\xeb\xa1\x2d\xda\xe7\xad\xe1\x99\xed\x8a\xd1\x50\xb4\x47\x8e\x63\xbb\xe3\xd1\xb0\xd3\x1b\x9e\x89\xf6\xd4\x9d\x8c\x06\x28\x1c\x76\x7b\x67\xba\xa7\xf5\xb1\x68\xad\x56\x22\xf1\x97\x52\xe4\x0b\x3f\x17\x6a\x91\x5e\x2b\x91\x26\x42\x5e\xc9\x6c\x2d\x56\xfe\x1c\x15\x51\x1e\x4b\xab\x35\x1e\x7b\xc3\xd6\xc0\x16\x27\xe2\x2c\x9d\xab\x63\xfc\x15\x67\x51\x2e\x5c\x99\x5d\x45\x81\x84\xa5\xf6\xc2\x4f\xd0\x1c\x65\xd1\x4c\xac\xd3\x42\x64\x45\x22\xe2\x34\xf0\xe3\x78\x6d\x39\xd3\xa1\x37\x75\x31\xfb\x13\x31\x8f\x72\xb4\xb6\xa3\x7c\x21\x33\x51\x0b\xe5\x55\xad\x2e\x6a\xab\x2c\x0d\x6b\x22\x45\x41\x2e\x55\x8e\x92\x50\xce\xfc\x22\x86\x2d\xa5\xdb\xb0\x05\x2c\x9d\x26\x80\xef\x96\xf5\x34\x93\xab\x54\x45\x79\x9a\xad\x9f\x59\xce\x68\x34\x11\x27\x96\xdb\x76\x7a\xe3\x89\x37\x79\x32\xa6\x66\x17\xbe\x5a\xa0\x5d\x11\x3d\xc3\x78\xc3\x62\x79\x81\xf1\xd2\x99\xd8\xf4\x8b\xa4\xd2\xab\xf6\x33\xc9\x2b\x97\xa1\x88\x12\xac\x5e\x0a\xf9\x72\x15\xa7\x28\x25\x00\x2c\xfb\xf3\x71\x7f\xe4\xd8\xde\xb8\x75\x06\x1c\xbd\xe1\x74\x00\xe3\x87\xfb\x3b\x46\x23\xa5\x8a\xef\x37\xc7\x66\x7a\xae\x3b\xbd\x61\xe4\x60\x9f\xe7\xd7\xf4\xc3\x65\x94\x98\x59\x6a\x7b\x85\x92\xd9\xdb\xcd\x11\x9a\xbb\xd6\xee\x92\xb5\xa5\x9f\x5d\x86\xe9\x35\x5b\xb3\x13\xff\x22\x96\x62\xe1\x67\xa1\x88\x23\x74\xbc\xc8\xa4\x7f\x89\xc5\xe5\x32\x51\x51\x9a\x58\xf6\xb0\x75\xda\xb7\xbd\xf3\x96\xd3\xf1\xfa\xbd\xa1\xed\x9d\x3a\x76\xeb\x21\x4c\xcd\xfc\x58\x49\x58\xc3\x2c\xe0\x08\xcf\xac\xb1\x33\x9a\x8c\xda\xa3\x3e\xaa\x16\x79\xbe\xb2\x3a\xa3\x41\xab\x37\xc4\x37\xde\xdf\x45\xaa\x72\xde\x02\x6f\xea\x50\x93\xf7\xee\x94\xed\x3f\x50\xc7\x7b\x7b\xef\xdd\xd1\xcd\xf1\xe5\xbd\x3b\xe7\x93\xc9\xd8\x1b\x8f\x9c\xc9\x07\x6a\xcf\xe2\x2f\xad\x4e\x07\x6e\x61\x6d\x2a\x60\xe0\x68\x7f\x9f\xe0\xed\x44\x8a\x17\xe0\xba\xe7\x62\x26\xfd\xbc\x00\x12\xd7\x0b\x99\x88\x24\x05\x2c\x57\x7e\x14\x53\xb5\xd5\xe9\xb9\xbc\x0c\x6a\x56\x4e\x1d\xcf\xa5\xb1\xc3\xc3\x8a\xa9\x76\x67\x48\xbe\x9d\x10\x94\xc6\xe9\x96\x69\x28\xad\x51\xb7\xcb\x00\x18\x0f\xd3\x46\x4a\xc3\xce\x68\x3a\x01\xd8\xfd\xd1\xd9\xa6\xea\x63\x71\x26\x13\x99\xf9\x39\xf6\x26\x97\x2b\x75\x8c\x92\x3f\x10\x41\x88\xbd\xc9\x17\x7b\x79\xba\x37\xc7\x21\xd9\x0b\x0a\x95\xa7\xcb\x3d\x82\x4c\x71\x83\x26\x97\x8b\x40\x66\xb9\x68\x04\xfe\x49\x9e\x15\x52\x34\xc2\x02\x86\xb0\x1f\x27\x0f\xee\xdf\xdb\x5f\xec\x2f\xf7\x95\x68\x10\xa6\x27\xcb\x35\x7d\x34\xe5\x4b\x7f\xb9\x8a\x65\x33\x48\x97\xd6\xc7\xb0\x33\xca\xc4\x2c\x4b\x97\xc2\x17\xcd\xd5\xec\xa5\x98\x45\x31\x7b\x6c\x9a\xe5\xf0\x11\xae\xc1\xd9\x12\x8f\xa3\x24\xa4\xd3\x4c\x83\x45\xb3\x28\xd0\x73\x25\xaf\xbe\x13\xa6\xb0\x42\x20\xce\xd2\x6c\x2e\x73\x91\xa7\xa6\x3f\x77\x5c\x65\xd1\x15\x35\xbe\x94\xeb\x0f\xf4\xba\xd2\x15\x1c\x46\xc5\x62\x75\x19\xa8\x83\x43\xd1\x00\x78\x64\x95\x47\x6f\xa4\x45\x6e\xbe\xc9\xa5\x68\x24\x29\xba\xa9\x1f\xd6\x0b\x2d\xcb\x4e\x54\xa1\xe8\x21\x94\xca\x6a\xdb\xce\xc4\x23\x82\x02\xdc\x55\x08\xf7\xca\x61\xac\x87\xf6\x93\x5b\x1b\x18\x8b\x18\x7e\xba\x5a\xe1\x24\xc5\xd8\xeb\x98\xce\x53\x2e\x81\x20\x2d\xca\x4f\x42\xa0\x00\xb8\x03\x8d\x1b\xed\x17\x9a\x57\xe8\x86\x21\x40\x29\xb9\x1a\xc0\x22\xb6\xa3\x62\xf9\x52\x06\x05\x00\xb6\xdc\x49\x6b\xd2\x6b\x7b\xec\xef\xe3\xd6\x04\x3e\xa7\x69\x34\x26\x88\xb1\x8b\x66\xd0\xb3\x2f\x7a\x63\xa1\x8a\x15\xc1\x5a\x1e\x34\x2e\xdb\xba\x50\x1f\x93\x89\x92\xb9\xa6\x59\x6c\x05\xb6\x24\x69\xc4\xe9\x7c\x8e\x6d\x64\x02\xa8\x8b\xc0\x4f\xc4\x85\x14\xb5\x45\xba\x94\x9a\x1f\x0d\x35\xd5\xac\x7e\x8b\x79\x9d\x38\x80\x70\xa0\x16\x38\xb1\xa1\x9f\xfb\x20\x3e\xf9\xac\xc2\xb1\xcb\xb5\x7a\x11\x33\xcb\xc2\x9b\xe6\x99\x54\xda\x12\x0a\xa3\x5c\x1e\xa1\x22\xca\xdf\x57\x44\xd9\x99\x08\x16\x29\xb1\x79\xe7\xb4\x24\x51\xee\x6b\x9d\x8f\x5c\x3a\x4a\x07\x87\xf7\x9b\xfb\xf8\x77\x70\x7c\x74\xb4\x7f\xcf\x32\xf1\x80\x5c\xda\x32\xe4\x9e\xa5\x69\x6e\x8d\x5b\xae\xfb\xb8\xc3\xb8\x74\x69\xa0\xca\xb0\x49\xbc\xae\x0b\x59\x72\xbf\x3e\x94\x34\xb3\x4c\xbe\x28\xa2\xcc\x2c\x11\x94\x13\xcd\xd6\x8d\x59\x11\xc7\x35\x9c\xe4\xfe\x86\xf7\x75\xfb\xd2\x6c\x39\x7f\xde\xd3\x5a\x1e\x85\x17\x35\x4b\x6f\x88\x20\x14\xf8\xa8\x35\xc3\x0b\x80\x62\xf8\x95\xf8\x2c\x28\xb2\x28\x47\xc4\xe8\x0d\xb1\x8f\xfd\x3e\x0e\x75\xfb\x61\x65\x4b\xde\x79\x47\xc7\x4f\x1d\x5e\x27\x23\xf1\xd0\xb6\xc7\xe2\xc9\x68\xea\x08\x5e\x61\xa7\x35\x69\x09\xb7\xd5\xb5\xdf\x79\xc7\x72\xed\xb6\x63\x4f\x3c\xf8\x22\x0c\xbc\xf3\xee\xa7\xdd\x8e\xfd\xd8\xc1\xff\x3f\xfc\xa3\x3b\xe4\x11\x45\x9e\xd2\x66\xc2\xeb\x33\xb9\x94\x1c\x28\x42\x1f\x47\x03\x34\xd2\x1b\x7a\x8e\x3d\xb0\x07\xa7\x60\x95\x4e\xeb\x89\x8b\xfe\xf7\xad\xf6\x68\xf4\xb0\Line truncated
|
||||||
|
|
||||||
func confAppIniBytes() ([]byte, error) {
|
func confAppIniBytes() ([]byte, error) {
|
||||||
return bindataRead(
|
return bindataRead(
|
||||||
@@ -299,7 +299,7 @@ func confAppIni() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "conf/app.ini", size: 9809, mode: os.FileMode(420), modTime: time.Unix(1442017584, 0)}
|
info := bindataFileInfo{name: "conf/app.ini", size: 9815, mode: os.FileMode(420), modTime: time.Unix(1442085822, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -4364,7 +4364,7 @@ func confLocaleLocale_deDeIni() (*asset, error) {
|
|||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var _confLocaleLocale_enUsIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\xbd\xeb\x72\xdc\x48\xae\x27\xfe\x9d\x4f\xc1\xf6\x09\xff\xdd\x8e\x90\xcb\xd1\xdd\xff\xbd\x44\x87\xed\x5e\x59\x6a\x5f\xe6\x58\x96\xc6\x92\x67\x76\xd6\xe1\x60\xb3\x8a\x54\x15\xc7\x55\x64\x35\xc9\x72\x59\x73\xe2\x44\xec\x6b\xec\xeb\xed\x93\x2c\xf0\x03\x90\x17\x92\x25\xd9\x3d\x27\x76\xbf\x48\xac\x4c\xe4\x0d\x89\x44\x02\x48\x24\x32\xdf\x6e\xb3\xa2\xec\x16\xe9\xd3\xf4\x38\xdd\xe6\x55\xbd\x2e\xbb\x2e\xed\xca\xf5\xf5\xa3\x55\xd3\xf5\x65\x91\xbe\xac\x7a\xfa\xdd\x7e\xae\x16\x65\x92\xac\x9a\x4d\x49\xa0\xaf\xe8\x5f\x52\xe4\xdd\x6a\xde\xe4\x6d\x41\x09\xa7\xf6\x9d\x94\x5f\xb6\xeb\xa6\x65\xa0\x5f\xe5\x2b\x59\x95\xeb\x2d\x97\xa1\x7f\x49\x57\x2d\xeb\xac\xaa\xe9\xe7\x25\x7d\xa5\xaf\xeb\xa4\x6b\x16\x55\xbe\xce\x82\x0c\x24\x58\xfe\xcf\xe9\x8f\x75\x91\x5e\xf6\xe5\x36\x7d\xd2\x6d\xf2\xf5\xfa\x59\xde\xa1\x48\x5f\xa6\xf9\x62\xd1\xec\xea\xfe\xc9\x63\xc9\x90\xca\x9b\x5d\x6f\xb5\x9f\xef\x7a\x49\xdb\x6d\x2d\xe9\xfd\x36\x69\xcb\x65\x45\x03\x6b\x29\xe9\x9d\x7e\x26\xfb\x72\xde\x55\x3d\x77\xfa\xaf\xf2\x95\x7c\x2e\xdb\xae\x6a\xb8\x3f\x7f\x91\xaf\x64\x9b\x2f\x19\xe0\x82\xfe\x25\x7d\xb9\xd9\xae\x73\x14\xb8\xd2\xcf\x64\x9d\xd7\xcb\x9d\xc0\xbc\xd1\xcf\x64\xd1\x96\x94\x95\xd5\xe5\x9e\x52\x4f\xf0\x63\x36\x9b\x25\x3b\xc2\x67\xb6\x6d\x9b\xeb\x6a\x5d\x66\x79\x5d\x64\x1b\xc1\xd8\x7b\x4a\x4f\x35\x3d\xa5\xf4\x94\xd3\x31\x84\xb2\x20\xe4\x64\x79\xa7\xe3\xa0\x69\x21\x5c\xe5\x5d\x82\xaa\xea\x7c\x63\xa5\xf9\x33\x29\x37\x79\xb5\xe6\x09\x78\xc4\x1f\xd4\xf1\xae\xdb\x37\x98\xa6\x0b\xfd\x24\x24\x64\xfd\xcd\xb6\x04\x0e\x1e\x5d\xd1\x57\xb2\xc8\xb7\xfd\x62\x95\x73\x3f\xe5\x2b\x21\xa0\x6d\x43\xc8\x68\xda\x1b\xc0\xd9\x8f\xa4\x69\x97\x79\x5d\xfd\x23\xef\x05\x41\xe7\xc1\xcf\x64\x53\xb5\x6d\xc3\xb8\x3d\xc3\x47\x42\x43\xcf\xb8\x1e\x4a\x79\x4b\x58\x08\x6a\xe1\x9c\x4d\xb5\x6c\x05\x8d\x9c\x79\x86\x5f\x5c\x0b\xe7\x5d\x37\xed\x27\xcd\x78\xc1\x9f\x83\xa2\xd4\x09\xcd\x8d\xdb\xcf\x6b\x42\xbc\xe6\x9e\xe1\x47\x04\xd0\x25\x79\xb1\x21\x54\x6e\xf3\xba\x64\x1c\x1d\xf3\x2f\xc2\x0b\xfd\x4a\x94\x9e\xb2\xae\xec\xfb\xaa\x5e\x32\xb2\x8f\x25\x29\xbd\xd4\xa4\x24\xc8\x73\x69\x37\xcd\xce\x4d\x27\xa5\xff\x8d\x7e\xa6\x17\xf2\x53\xf2\x82\x42\xc8\x74\x25\x79\x24\x5d\x76\x5d\x96\x85\x8c\xa5\x4b\x5f\xd0\x77\xb2\xdd\xad\xd7\x84\xb5\xdf\x77\x65\xd7\x73\xa1\x0b\xfa\x4d\xe3\x97\xdf\x49\xd5\x75\xf4\x41\xc9\xaf\xf1\x91\xd0\xd4\xd5\x0b\x0c\xe6\x04\x1f\x49\xf2\xa1\x2b\xf3\x76\xb1\xfa\x98\xc8\x7f\xf4\x95\x3f\x98\xf6\x0e\x4d\x2a\x13\x92\x12\x91\xb4\x60\x0d\x24\x8b\xa6\xe0\x1f\x27\xf4\x8f\xaa\xae\xea\xae\xa7\xd5\xf6\x31\xd1\x0f\x06\x93\x2f\x99\x80\xbe\xea\x81\x05\x4d\xc4\xd2\xed\x78\x06\xd3\x17\x55\xdb\xf5\x8f\xfa\x8a\x88\xf5\xdd\xae\x4e\x78\x7c\xb4\xd2\xb2\x62\x6e\x0c\xe8\x65\x43\x28\x42\x72\x4b\xe3\x3b\xbb\xb9\xfc\xf3\x9b\xa3\xf4\x82\xb8\xd0\xb2\x2d\xe9\x3b\xa5\x3a\xe8\x1f\x95\xf9\x69\x96\x50\x29\x6b\xe9\x34\xef\xf3\x79\xde\x95\x1e\xad\x9c\x29\xd4\xed\xf2\x40\xe3\xcc\xd1\xc0\xbd\xba\x3e\x1a\xef\xd4\x0a\xa1\x3a\x74\x5d\xb9\x3a\xde\xf2\xe2\xa2\x74\x66\x68\x28\x7c\xb1\x2e\x39\x9d\xaa\x4a\x5f\xbf\x7d\x7b\x7e\xfa\x3c\x2d\xeb\x65\x55\x97\xe9\xbe\xea\x57\xe9\xae\xbf\xfe\xaf\xd9\xb2\xac\xcb\x96\xf8\xdb\xa2\x4a\x69\x4d\xb5\x44\x09\x29\x11\xb6\x0c\x6e\x96\x74\xdd\x9a\xd6\x3e\xd0\x7b\x79\xf9\x26\x3d\x63\x14\x6f\xf3\x7e\x85\x8e\xf4\xab\xa4\xfb\x7d\xcd\x28\x72\x0d\x5e\xad\xca\x14\x54\x06\xa0\xe6\xda\xf0\x91\x16\xda\xc7\x59\x52\xb6\x6d\x46\x2c\xa9\xbf\x61\xc4\x6a\x5d\x06\x45\x0d\x5f\x55\xd4\x4b\x83\x96\x6a\x88\x7c\xea\xa6\x4f\xe7\x65\x8a\x72\x52\x45\x55\x7f\xce\xd7\x55\x41\x48\xf6\x88\x88\xcb\x22\xb1\x68\x68\xa6\xb8\x34\x4d\x75\xb3\xc7\x10\xf3\x05\x71\xd4\x2e\xbd\x37\xbb\x07\x16\x76\xef\xd1\xbd\x59\x52\x37\x99\x2c\x3b\x66\x76\x45\xd5\xe5\x73\x62\x7c\xc2\x88\x5b\x63\x23\xb4\x32\xac\x2b\x0a\x91\x46\x10\x8c\x53\x66\xee\xe0\xa9\x34\xcd\x54\x7b\x8a\x4a\x6d\x1f\x08\xc7\x6e\x8b\xdc\xcd\xab\xac\x73\x97\x30\x1a\x73\x62\x13\x65\x54\x75\xbc\xdd\xae\xab\x85\x34\xfd\x52\xf2\x3c\x81\xf1\xae\xa9\x48\x09\xe1\x40\x20\x96\x17\x90\x09\xf5\x9a\xf9\x40\x1a\x31\x4e\x94\x5f\x95\xc4\xf8\x57\xbb\xa5\xb0\xfb\x75\xb3\x2b\xbe\xc3\x0a\xb5\x99\xf3\x0b\x34\x7d\xd7\x50\x87\x41\x15\x0e\xc0\x37\x71\x4c\x2b\x8d\x37\xea\xb6\xdc\x34\x3d\x23\x4e\x8b\x55\x34\x3d\xfb\x8a\x32\x69\xa4\x5d\xfe\x99\xf8\x4c\xdf\xa4\xfd\xaa\xea\x08\xc7\x6d\xb9\xe0\x8a\x89\x25\xec\x68\x8b\x94\xe5\x40\x0b\x53\x96\x84\xa5\xc5\xb4\x07\xa8\xcd\x8e\x56\xd1\x8a\x2a\x63\xc4\xb3\xb4\x40\x55\x4e\xf5\x13\x43\xa2\x7a\xb0\xae\x69\xc5\x36\xb4\x1b\xf1\x44\x9f\xe2\x43\x7f\x87\xf5\x53\xaf\xf2\xeb\x6b\xea\x55\x47\xab\xe1\x55\xba\x58\x37\xb4\x94\xde\xbf\x7b\xd3\xf1\x42\x59\x65\xdb\xa6\xc5\xd6\x4e\x59\x17\xf4\xe9\xd2\x02\x44\x33\x44\xbd\xdb\xcc\xe9\xd7\x7e\x55\x11\xe7\x03\xda\xb9\x04\x4b\x30\x94\x4a\x4d\xec\x3a\x9a\xc2\xa3\x94\x96\x2e\x8d\x80\x50\x06\x02\xe0\x31\x18\xd5\x31\xf8\x35\xd1\xd8\xae\xa5\xe5\xb4\xea\xfb\xad\xb5\xfc\xea\xea\xea\x42\x9a\x76\xa9\xb7\xb5\x9d\x07\x94\x81\x39\x58\xb3\xb0\x51\xa7\x4d\x3d\x03\x91\xec\xda\xf5\x80\x7e\x68\xac\x96\x73\x00\x2f\xdc\x85\xc7\xfc\xe7\xd2\xa3\x07\x78\xee\x48\x22\xdb\x83\x9a\x0Line truncated
|
var _confLocaleLocale_enUsIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\xbd\xeb\x72\xdc\x48\xae\x27\xfe\x9d\x4f\xc1\xf6\x09\xff\xdd\x8e\x90\xcb\xd1\xdd\xff\xbd\x44\x87\xed\x5e\x59\x6a\x5f\xe6\x58\x96\xc6\x92\x67\x76\xd6\xe1\x60\xb3\x8a\x54\x15\xc7\x55\x64\x35\xc9\x72\x59\x73\xe2\x44\xec\x6b\xec\xeb\xed\x93\x2c\xf0\x03\x90\x17\x92\x25\xd9\x3d\x27\x76\xbf\x48\xac\x4c\xe4\x0d\x89\x44\x02\x48\x24\x32\xdf\x6e\xb3\xa2\xec\x16\xe9\xd3\xf4\x38\xdd\xe6\x55\xbd\x2e\xbb\x2e\xed\xca\xf5\xf5\xa3\x55\xd3\xf5\x65\x91\xbe\xac\x7a\xfa\xdd\x7e\xae\x16\x65\x92\xac\x9a\x4d\x49\xa0\xaf\xe8\x5f\x52\xe4\xdd\x6a\xde\xe4\x6d\x41\x09\xa7\xf6\x9d\x94\x5f\xb6\xeb\xa6\x65\xa0\x5f\xe5\x2b\x59\x95\xeb\x2d\x97\xa1\x7f\x49\x57\x2d\xeb\xac\xaa\xe9\xe7\x25\x7d\xa5\xaf\xeb\xa4\x6b\x16\x55\xbe\xce\x82\x0c\x24\x58\xfe\xcf\xe9\x8f\x75\x91\x5e\xf6\xe5\x36\x7d\xd2\x6d\xf2\xf5\xfa\x59\xde\xa1\x48\x5f\xa6\xf9\x62\xd1\xec\xea\xfe\xc9\x63\xc9\x90\xca\x9b\x5d\x6f\xb5\x9f\xef\x7a\x49\xdb\x6d\x2d\xe9\xfd\x36\x69\xcb\x65\x45\x03\x6b\x29\xe9\x9d\x7e\x26\xfb\x72\xde\x55\x3d\x77\xfa\xaf\xf2\x95\x7c\x2e\xdb\xae\x6a\xb8\x3f\x7f\x91\xaf\x64\x9b\x2f\x19\xe0\x82\xfe\x25\x7d\xb9\xd9\xae\x73\x14\xb8\xd2\xcf\x64\x9d\xd7\xcb\x9d\xc0\xbc\xd1\xcf\x64\xd1\x96\x94\x95\xd5\xe5\x9e\x52\x4f\xf0\x63\x36\x9b\x25\x3b\xc2\x67\xb6\x6d\x9b\xeb\x6a\x5d\x66\x79\x5d\x64\x1b\xc1\xd8\x7b\x4a\x4f\x35\x3d\xa5\xf4\x94\xd3\x31\x84\xb2\x20\xe4\x64\x79\xa7\xe3\xa0\x69\x21\x5c\xe5\x5d\x82\xaa\xea\x7c\x63\xa5\xf9\x33\x29\x37\x79\xb5\xe6\x09\x78\xc4\x1f\xd4\xf1\xae\xdb\x37\x98\xa6\x0b\xfd\x24\x24\x64\xfd\xcd\xb6\x04\x0e\x1e\x5d\xd1\x57\xb2\xc8\xb7\xfd\x62\x95\x73\x3f\xe5\x2b\x21\xa0\x6d\x43\xc8\x68\xda\x1b\xc0\xd9\x8f\xa4\x69\x97\x79\x5d\xfd\x23\xef\x05\x41\xe7\xc1\xcf\x64\x53\xb5\x6d\xc3\xb8\x3d\xc3\x47\x42\x43\xcf\xb8\x1e\x4a\x79\x4b\x58\x08\x6a\xe1\x9c\x4d\xb5\x6c\x05\x8d\x9c\x79\x86\x5f\x5c\x0b\xe7\x5d\x37\xed\x27\xcd\x78\xc1\x9f\x83\xa2\xd4\x09\xcd\x8d\xdb\xcf\x6b\x42\xbc\xe6\x9e\xe1\x47\x04\xd0\x25\x79\xb1\x21\x54\x6e\xf3\xba\x64\x1c\x1d\xf3\x2f\xc2\x0b\xfd\x4a\x94\x9e\xb2\xae\xec\xfb\xaa\x5e\x32\xb2\x8f\x25\x29\xbd\xd4\xa4\x24\xc8\x73\x69\x37\xcd\xce\x4d\x27\xa5\xff\x8d\x7e\xa6\x17\xf2\x53\xf2\x82\x42\xc8\x74\x25\x79\x24\x5d\x76\x5d\x96\x85\x8c\xa5\x4b\x5f\xd0\x77\xb2\xdd\xad\xd7\x84\xb5\xdf\x77\x65\xd7\x73\xa1\x0b\xfa\x4d\xe3\x97\xdf\x49\xd5\x75\xf4\x41\xc9\xaf\xf1\x91\xd0\xd4\xd5\x0b\x0c\xe6\x04\x1f\x49\xf2\xa1\x2b\xf3\x76\xb1\xfa\x98\xc8\x7f\xf4\x95\x3f\x98\xf6\x0e\x4d\x2a\x13\x92\x12\x91\xb4\x60\x0d\x24\x8b\xa6\xe0\x1f\x27\xf4\x8f\xaa\xae\xea\xae\xa7\xd5\xf6\x31\xd1\x0f\x06\x93\x2f\x99\x80\xbe\xea\x81\x05\x4d\xc4\xd2\xed\x78\x06\xd3\x17\x55\xdb\xf5\x8f\xfa\x8a\x88\xf5\xdd\xae\x4e\x78\x7c\xb4\xd2\xb2\x62\x6e\x0c\xe8\x65\x43\x28\x42\x72\x4b\xe3\x3b\xbb\xb9\xfc\xf3\x9b\xa3\xf4\x82\xb8\xd0\xb2\x2d\xf1\x4d\x7f\xa8\xc4\x4f\x29\x55\x76\x55\x9d\x3e\x9f\x25\x54\xd6\xda\x3b\xcd\xfb\x7c\x9e\x77\xa5\x47\x2e\x67\x0a\x8d\xbb\x3c\x50\x3a\xf3\x35\xf0\xb0\xae\x8f\x46\x3d\xb5\x4e\xa8\x0e\x5d\x5d\xae\x8e\xb7\xbc\xc4\x28\x9d\xd9\x1a\x0a\x5f\xac\x4b\x4e\xa7\xaa\xd2\xd7\x6f\xdf\x9e\x9f\x3e\x4f\xcb\x7a\x59\xd5\x65\xba\xaf\xfa\x55\xba\xeb\xaf\xff\x6b\xb6\x2c\xeb\xb2\x25\x2e\xb7\xa8\x52\x5a\x59\x2d\xd1\x43\x4a\xe4\x2d\x43\x9c\x25\x5d\xb7\x26\x0e\x00\x24\x5f\x5e\xbe\x49\xcf\x18\xd1\xdb\xbc\x5f\xa1\x23\xfd\x2a\xe9\x7e\x5f\x33\xa2\x5c\x83\x57\xab\x32\x05\xad\x01\xa8\xb9\x1e\xe2\x25\x2d\xb4\xaf\xb3\xa4\x6c\xdb\x8c\x18\x54\x7f\xc3\x68\xd6\x3a\x0f\x41\x4b\x75\x44\x4c\x75\xd3\xa7\xf3\x32\x45\x39\xa9\xa2\xaa\x3f\xe7\xeb\xaa\x20\x64\x7b\x84\xc4\x65\x91\x58\x34\x34\x6f\x5c\x9a\x26\xbe\xd9\x63\xa8\xf9\x82\xf8\x6b\x97\xde\x9b\xdd\x03\x43\xbb\xf7\xe8\xde\x2c\xa9\x9b\x4c\x16\x21\xb3\xbe\xa2\xea\xf2\x39\xb1\x41\x61\xcb\xad\x31\x15\x5a\x27\xd6\x15\x85\x48\x23\x08\xc6\x2d\xb3\x7a\x70\x58\x9a\x6e\xaa\x3d\x45\xa5\xb6\x2b\x84\x63\xb7\x25\xef\xe6\x57\x56\xbd\x4b\x18\x8d\x39\xb1\x09\x33\xea\x3a\xde\x6e\xd7\xd5\x42\x9a\x7e\x29\x79\x9e\xd0\x78\x0f\x55\xa4\x84\x70\x20\x14\xcb\x0b\xc8\x85\x7a\xcd\x5c\x21\x8d\xd8\x28\xca\xaf\x4a\xda\x06\x56\xbb\xa5\x30\xff\x75\xb3\x2b\xbe\xc3\x7a\xb5\x99\xf3\xcb\x35\x7d\xd7\x50\x87\x41\x1d\x0e\xc0\x37\x71\x4c\xeb\x8e\xb7\xed\xb6\xdc\x34\x3d\x23\x4e\x8b\x55\x34\x3d\xfb\x8a\x32\x69\xa4\x5d\xfe\x99\xb8\x4e\xdf\xa4\xfd\xaa\xea\x08\xc7\x6d\xb9\xe0\x8a\x89\x41\xec\x68\xc3\x94\x65\x41\xcb\x54\x96\x86\xa5\xc5\x34\x08\xa8\xcd\x8e\x56\xd3\x8a\x2a\x63\xc4\xb3\xec\x40\x55\x4e\xf5\x13\x43\xa2\x7a\xb0\xca\x69\xe5\x36\xb4\x37\xf1\x44\x9f\xe2\x43\x7f\x87\xf5\x53\xaf\xf2\xeb\x6b\xea\x55\x47\xab\xe2\x55\xba\x58\x37\xb4\xa4\xde\xbf\x7b\xd3\xf1\x82\x59\x65\xdb\xa6\xc5\x46\x4f\x59\x17\xf4\xe9\xd2\x02\x44\x33\x44\xbd\xdb\xcc\xe9\xd7\x7e\x55\x11\x1f\x04\xda\xb9\x04\xcb\x33\x94\x4a\x4d\xec\x3a\x9a\xc2\xa3\x94\x96\x30\x8d\x80\x50\x06\x02\xe0\x31\x18\xd5\x31\xf8\x35\xd1\xd8\xae\xa5\xe5\xb4\xea\xfb\xad\xb5\xfc\xea\xea\xea\x42\x9a\x76\xa9\xb7\xb5\x9d\x07\x94\x81\x39\x58\xb3\xe8\x51\xa7\x4d\x3d\x03\x91\xec\xda\xf5\x80\x7e\x68\xac\x96\x73\x00\x2f\xdc\x85\xc7\xfc\xe7\xd2\xa3\x07\x78\xee\x48\x3e\xdb\x83\x9a\x08\xc7\x2Line truncated
|
||||||
|
|
||||||
func confLocaleLocale_enUsIniBytes() ([]byte, error) {
|
func confLocaleLocale_enUsIniBytes() ([]byte, error) {
|
||||||
return bindataRead(
|
return bindataRead(
|
||||||
@@ -4379,7 +4379,7 @@ func confLocaleLocale_enUsIni() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 43155, mode: os.FileMode(420), modTime: time.Unix(1442085252, 0)}
|
info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 43169, mode: os.FileMode(420), modTime: time.Unix(1442103678, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,11 +127,10 @@ func NewAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := models.CreateSource(&models.LoginSource{
|
if err := models.CreateSource(&models.LoginSource{
|
||||||
Type: models.LoginType(form.Type),
|
Type: models.LoginType(form.Type),
|
||||||
Name: form.Name,
|
Name: form.Name,
|
||||||
IsActived: form.IsActive,
|
IsActived: form.IsActive,
|
||||||
AllowAutoRegister: form.AllowAutoRegister,
|
Cfg: config,
|
||||||
Cfg: config,
|
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
ctx.Handle(500, "CreateSource", err)
|
ctx.Handle(500, "CreateSource", err)
|
||||||
return
|
return
|
||||||
@@ -195,7 +194,6 @@ func EditAuthSourcePost(ctx *middleware.Context, form auth.AuthenticationForm) {
|
|||||||
|
|
||||||
source.Name = form.Name
|
source.Name = form.Name
|
||||||
source.IsActived = form.IsActive
|
source.IsActived = form.IsActive
|
||||||
source.AllowAutoRegister = form.AllowAutoRegister
|
|
||||||
source.Cfg = config
|
source.Cfg = config
|
||||||
if err := models.UpdateSource(source); err != nil {
|
if err := models.UpdateSource(source); err != nil {
|
||||||
ctx.Handle(500, "UpdateSource", err)
|
ctx.Handle(500, "UpdateSource", err)
|
||||||
|
|||||||
@@ -73,6 +73,9 @@ func GlobalInit() {
|
|||||||
if models.EnableSQLite3 {
|
if models.EnableSQLite3 {
|
||||||
log.Info("SQLite3 Supported")
|
log.Info("SQLite3 Supported")
|
||||||
}
|
}
|
||||||
|
if models.EnableTidb {
|
||||||
|
log.Info("TiDB Supported")
|
||||||
|
}
|
||||||
checkRunMode()
|
checkRunMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -131,12 +131,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
<div class="inline field">
|
|
||||||
<div class="ui checkbox">
|
|
||||||
<label><strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong></label>
|
|
||||||
<input name="allow_auto_register" type="checkbox" {{if .Source.AllowAutoRegister}}checked{{end}}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="inline field">
|
<div class="inline field">
|
||||||
<div class="ui checkbox">
|
<div class="ui checkbox">
|
||||||
<label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label>
|
<label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label>
|
||||||
|
|||||||
@@ -128,12 +128,6 @@
|
|||||||
<input name="skip_verify" type="checkbox" {{if .skip_verify}}checked{{end}}>
|
<input name="skip_verify" type="checkbox" {{if .skip_verify}}checked{{end}}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="inline field">
|
|
||||||
<div class="ui checkbox">
|
|
||||||
<label><strong>{{.i18n.Tr "admin.auths.enable_auto_register"}}</strong></label>
|
|
||||||
<input name="allow_auto_register" type="checkbox" {{if .allow_auto_register}}checked{{end}}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="inline field">
|
<div class="inline field">
|
||||||
<div class="ui checkbox">
|
<div class="ui checkbox">
|
||||||
<label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label>
|
<label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label>
|
||||||
|
|||||||
Reference in new issue
Block a user