From d1414c6b5d4a6df4a057d4fcce7e6fdfb82f665a Mon Sep 17 00:00:00 2001 From: lanrenwo Date: Mon, 4 Jul 2022 12:55:04 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=96=B0=E5=A2=9ELDAP=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/group.go | 8 +- server/dbdata/group_test.go | 18 ++++- server/dbdata/tables.go | 2 +- server/dbdata/user_test.go | 22 +++++- server/dbdata/userauth_ldap.go | 136 +++++++++++++++++++++++++++++++++ web/src/pages/group/List.vue | 99 +++++++++++++++++++----- 6 files changed, 260 insertions(+), 25 deletions(-) create mode 100644 server/dbdata/userauth_ldap.go diff --git a/server/dbdata/group.go b/server/dbdata/group.go index 112805d..7e731cf 100644 --- a/server/dbdata/group.go +++ b/server/dbdata/group.go @@ -159,8 +159,7 @@ func SetGroup(g *Group) error { if authType == "local" { g.Auth = defAuth } else { - _, ok := authRegistry[authType] - if !ok { + if _, ok := authRegistry[authType]; !ok { return errors.New("未知的认证方式: " + authType) } auth := makeInstance(authType).(IUserAuth) @@ -168,6 +167,11 @@ func SetGroup(g *Group) error { if err != nil { return err } + // 重置Auth, 删除多余的key + g.Auth = map[string]interface{}{ + "type": authType, + authType: g.Auth[authType], + } } g.UpdatedAt = time.Now() diff --git a/server/dbdata/group_test.go b/server/dbdata/group_test.go index 7d27c7f..8b79b60 100644 --- a/server/dbdata/group_test.go +++ b/server/dbdata/group_test.go @@ -41,8 +41,24 @@ func TestGetGroupNames(t *testing.T) { err = SetGroup(&g6) ast.Nil(err) + authData = map[string]interface{}{ + "type": "ldap", + "ldap": map[string]interface{}{ + "addr": "192.168.8.12:389", + "tls": true, + "bind_name": "userfind@abc.com", + "bind_pwd": "afdbfdsafds", + "base_dn": "dc=abc,dc=com", + "search_attr": "sAMAccountName", + "member_of": "cn=vpn,cn=user,dc=abc,dc=com", + }, + } + g7 := Group{Name: "g7", ClientDns: []ValData{{Val: "114.114.114.114"}}, Auth: authData} + err = SetGroup(&g7) + ast.Nil(err) + // 判断所有数据 - gAll := []string{"g1", "g2", "g3", "g4", "g5", "g6"} + gAll := []string{"g1", "g2", "g3", "g4", "g5", "g6", "g7"} gs := GetGroupNames() for _, v := range gs { ast.Equal(true, utils.InArrStr(gAll, v)) diff --git a/server/dbdata/tables.go b/server/dbdata/tables.go index 56b2dbe..4ba03cd 100644 --- a/server/dbdata/tables.go +++ b/server/dbdata/tables.go @@ -17,7 +17,7 @@ type Group struct { DsIncludeDomains string `json:"ds_include_domains" xorm:"Text"` LinkAcl []GroupLinkAcl `json:"link_acl" xorm:"Text"` Bandwidth int `json:"bandwidth" xorm:"Int"` // 带宽限制 - Auth map[string]interface{} `json:"auth" xorm:"not null default '{}' varchar(255)"` // 认证方式 + Auth map[string]interface{} `json:"auth" xorm:"not null default '{}' varchar(500)"` // 认证方式 Status int8 `json:"status" xorm:"Int"` // 1正常 CreatedAt time.Time `json:"created_at" xorm:"DateTime created"` UpdatedAt time.Time `json:"updated_at" xorm:"DateTime updated"` diff --git a/server/dbdata/user_test.go b/server/dbdata/user_test.go index 8e46dcc..d9f3a69 100644 --- a/server/dbdata/user_test.go +++ b/server/dbdata/user_test.go @@ -56,7 +56,6 @@ func TestCheckUser(t *testing.T) { err = CheckUser("aaa", "bbbbbbb", group2) if ast.NotNil(err) { ast.Equal("aaa Radius服务器连接异常, 请检测服务器和端口", err.Error()) - } // 添加用户策略 dns2 := []ValData{{Val: "8.8.8.8"}} @@ -66,4 +65,25 @@ func TestCheckUser(t *testing.T) { ast.Nil(err) err = CheckUser("aaa", u.PinCode, group) ast.Nil(err) + // 添加一个ldap组 + group3 := "group3" + authData = map[string]interface{}{ + "type": "ldap", + "ldap": map[string]interface{}{ + "addr": "192.168.8.12:389", + "tls": true, + "bind_name": "userfind@abc.com", + "bind_pwd": "afdbfdsafds", + "base_dn": "dc=abc,dc=com", + "search_attr": "sAMAccountName", + "member_of": "cn=vpn,cn=user,dc=abc,dc=com", + }, + } + g3 := Group{Name: group3, Status: 1, ClientDns: dns, RouteInclude: route, Auth: authData} + err = SetGroup(&g3) + ast.Nil(err) + err = CheckUser("aaa", "bbbbbbb", group3) + if ast.NotNil(err) { + ast.Equal("aaa LDAP服务器连接异常, 请检测服务器和端口", err.Error()) + } } diff --git a/server/dbdata/userauth_ldap.go b/server/dbdata/userauth_ldap.go new file mode 100644 index 0000000..868e764 --- /dev/null +++ b/server/dbdata/userauth_ldap.go @@ -0,0 +1,136 @@ +package dbdata + +import ( + "crypto/tls" + "encoding/json" + "errors" + "fmt" + "net" + "reflect" + "regexp" + "time" + + "github.com/go-ldap/ldap" +) + +type AuthLdap struct { + Addr string `json:"addr"` + Tls bool `json:"tls"` + BindName string `json:"bind_name"` + BindPwd string `json:"bind_pwd"` + BaseDn string `json:"base_dn"` + SearchAttr string `json:"search_attr"` + MemberOf string `json:"member_of"` +} + +func init() { + authRegistry["ldap"] = reflect.TypeOf(AuthLdap{}) +} + +func (auth AuthLdap) checkData(authData map[string]interface{}) error { + authType := authData["type"].(string) + bodyBytes, err := json.Marshal(authData[authType]) + if err != nil { + return errors.New("LDAP配置填写有误") + } + json.Unmarshal(bodyBytes, &auth) + // 支持域名和IP, 必须填写端口 + if !ValidateIpPort(auth.Addr) && !ValidateDomainPort(auth.Addr) { + return errors.New("LDAP的服务器地址(含端口)填写有误") + } + if auth.BindName == "" { + return errors.New("LDAP的用户查询账号不能为空") + } + if auth.BindPwd == "" { + return errors.New("LDAP的用户查询密码不能为空") + } + if auth.BaseDn == "" || !ValidateDN(auth.BaseDn) { + return errors.New("LDAP的BaseName填写有误") + } + if auth.SearchAttr == "" { + return errors.New("LDAP的搜索属性不能为空") + } + if auth.MemberOf != "" && !ValidateDN(auth.MemberOf) { + return errors.New("LDAP的绑定DN填写有误") + } + return nil +} + +func (auth AuthLdap) checkUser(name, pwd string, g *Group) error { + pl := len(pwd) + if name == "" || pl < 1 { + return fmt.Errorf("%s %s", name, "密码错误") + } + authType := g.Auth["type"].(string) + if _, ok := g.Auth[authType]; !ok { + return fmt.Errorf("%s %s", name, "LDAP的ldap值不存在") + } + bodyBytes, err := json.Marshal(g.Auth[authType]) + if err != nil { + return fmt.Errorf("%s %s", name, "LDAP Marshal出现错误") + } + err = json.Unmarshal(bodyBytes, &auth) + if err != nil { + return fmt.Errorf("%s %s", name, "LDAP Unmarshal出现错误") + } + // 检测服务器和端口的可用性 + _, err = net.DialTimeout("tcp", auth.Addr, 3*time.Second) + if err != nil { + return fmt.Errorf("%s %s", name, "LDAP服务器连接异常, 请检测服务器和端口") + } + // 连接LDAP + l, err := ldap.Dial("tcp", auth.Addr) + if err != nil { + return fmt.Errorf("LDAP连接失败 %s %s", auth.Addr, err.Error()) + } + defer l.Close() + if auth.Tls { + err = l.StartTLS(&tls.Config{InsecureSkipVerify: true}) + if err != nil { + return fmt.Errorf("%s LDAP TLS连接失败 %s", name, err.Error()) + } + } + err = l.Bind(auth.BindName, auth.BindPwd) + if err != nil { + return fmt.Errorf("%s LDAP 查询用户的账密有误,请重新检查 %s", name, err.Error()) + } + filterAttr := "(objectClass=person)" + filterAttr += "(" + auth.SearchAttr + "=" + name + ")" + if auth.MemberOf != "" { + filterAttr += "(memberOf:=" + auth.MemberOf + ")" + } + searchRequest := ldap.NewSearchRequest( + auth.BaseDn, + ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 3, false, + fmt.Sprintf("(&%s)", filterAttr), + []string{}, + nil, + ) + sr, err := l.Search(searchRequest) + if err != nil { + return fmt.Errorf("%s LDAP 查询失败 %s %s %s", name, auth.BaseDn, filterAttr, err.Error()) + } + if len(sr.Entries) != 1 { + if len(sr.Entries) == 0 { + return fmt.Errorf("LDAP 找不到 %s 用户, 请检查用户或LDAP配置参数", name) + } + return fmt.Errorf("LDAP发现 %s 用户,存在多个账号", name) + } + userDN := sr.Entries[0].DN + fmt.Println(userDN) + err = l.Bind(userDN, pwd) + if err != nil { + return fmt.Errorf("%s LDAP 登入失败,请检查登入的账号或密码 %s", name, err.Error()) + } + return nil +} + +func ValidateDomainPort(addr string) bool { + re := regexp.MustCompile(`^([a-zA-Z0-9][-a-zA-Z0-9]{0,62}\.)+[A-Za-z]{2,18}\:([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-5]{2}[0-3][0-5])$`) + return re.MatchString(addr) +} + +func ValidateDN(dn string) bool { + re := regexp.MustCompile(`^(?:(?:CN|cn|OU|ou|DC|dc)\=[^,'"]+,)*(?:CN|cn|OU|ou|DC|dc)\=[^,'"]+$`) + return re.MatchString(dn) +} diff --git a/web/src/pages/group/List.vue b/web/src/pages/group/List.vue index 7a1b08b..714416f 100644 --- a/web/src/pages/group/List.vue +++ b/web/src/pages/group/List.vue @@ -228,22 +228,45 @@ - + 本地 Radius + LDAP - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -368,6 +391,19 @@ export default { activeTab : "general", readMore: {}, readMinRows : 5, + defAuth : { + type:'local', + radius:{addr:"", secret:""}, + ldap:{ + addr:"", + tls:false, + base_dn:"", + search_attr:"sAMAccountName", + member_of:"", + bind_name:"", + bind_pwd:"", + }, + }, ruleForm: { bandwidth: 0, status: 1, @@ -376,7 +412,7 @@ export default { route_include: [{val: 'all', note: '默认全局代理'}], route_exclude: [], link_acl: [], - auth : {"type":'local'} + auth : {}, }, rules: { name: [ @@ -390,17 +426,37 @@ export default { status: [ {required: true} ], + "auth.radius.addr": [ + {required: true, message: '请输入Radius服务器', trigger: 'blur'} + ], + "auth.radius.secret": [ + {required: true, message: '请输入Radius密钥', trigger: 'blur'} + ], + "auth.ldap.addr": [ + {required: true, message: '请输入服务器地址(含端口)', trigger: 'blur'} + ], + "auth.ldap.bind_name": [ + {required: true, message: '请输入查询账号', trigger: 'blur'} + ], + "auth.ldap.bind_pwd": [ + {required: true, message: '请输入查询密码', trigger: 'blur'} + ], + "auth.ldap.base_dn": [ + {required: true, message: '请输入BaseDN值', trigger: 'blur'} + ], + "auth.ldap.search_attr": [ + {required: true, message: '请输入搜索属性', trigger: 'blur'} + ], }, } }, methods: { setAuthData(row) { - var defAuthData = {"type":'local', - "radius":{"addr":"", "secret":""}, - } - if (this.ruleForm.auth.type == "local" || !row) { - this.ruleForm.auth = defAuthData; - } + if (! row) { + this.ruleForm.auth = JSON.parse(JSON.stringify(this.defAuth)); + return ; + } + this.ruleForm.auth = Object.assign(JSON.parse(JSON.stringify(this.defAuth)), row.auth); }, handleDel(row) { axios.post('/group/del?id=' + row.id).then(resp => { @@ -503,6 +559,9 @@ export default { this.$set(this.readMore, id, true); } }, + authTypeChange() { + this.$refs['ruleForm'].clearValidate(); + } }, } From 1ad19fe06bb3617590225b4ce15ddcf6b994d54e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9D=A4=E5=AD=90?= Date: Tue, 5 Jul 2022 12:52:27 +0800 Subject: [PATCH 2/7] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2622f03..172f907 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ sudo ./anylink - [x] IP 访问审计功能 - [x] 域名动态拆分隧道(域名路由功能) - [x] radius认证支持 +- [x] LDAP认证支持 - [ ] 基于 ipvtap 设备的桥接访问模式 ## Config From e90c2aae6cc46dfee72c7be8ae84e8319d67cb85 Mon Sep 17 00:00:00 2001 From: lanrenwo Date: Tue, 5 Jul 2022 18:11:55 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=87=8C=E6=A0=87=E7=AD=BE=E9=A1=B5=E7=9A=84=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/userauth_ldap.go | 3 +-- web/src/pages/group/List.vue | 28 +++++++++++++++++++++++----- web/src/pages/user/Policy.vue | 25 ++++++++++++++++++++++--- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/server/dbdata/userauth_ldap.go b/server/dbdata/userauth_ldap.go index 868e764..f6c6995 100644 --- a/server/dbdata/userauth_ldap.go +++ b/server/dbdata/userauth_ldap.go @@ -45,7 +45,7 @@ func (auth AuthLdap) checkData(authData map[string]interface{}) error { return errors.New("LDAP的用户查询密码不能为空") } if auth.BaseDn == "" || !ValidateDN(auth.BaseDn) { - return errors.New("LDAP的BaseName填写有误") + return errors.New("LDAP的BaseDN填写有误") } if auth.SearchAttr == "" { return errors.New("LDAP的搜索属性不能为空") @@ -117,7 +117,6 @@ func (auth AuthLdap) checkUser(name, pwd string, g *Group) error { return fmt.Errorf("LDAP发现 %s 用户,存在多个账号", name) } userDN := sr.Entries[0].DN - fmt.Println(userDN) err = l.Bind(userDN, pwd) if err != nil { return fmt.Errorf("%s LDAP 登入失败,请检查登入的账号或密码 %s", name, err.Error()) diff --git a/web/src/pages/group/List.vue b/web/src/pages/group/List.vue index 714416f..1014d6e 100644 --- a/web/src/pages/group/List.vue +++ b/web/src/pages/group/List.vue @@ -168,10 +168,11 @@ title="用户组" :visible.sync="user_edit_dialog" width="750px" + @close='closeDialog' center> - + @@ -359,7 +360,7 @@ 保存 - 取消 + 取消 @@ -473,10 +474,9 @@ export default { console.log(error); }); }, - handleEdit(row) { + handleEdit(row) { !this.$refs['ruleForm'] || this.$refs['ruleForm'].resetFields(); - console.log(row) - this.activeTab = "general" + console.log(row) this.user_edit_dialog = true if (!row) { this.setAuthData(row) @@ -561,6 +561,24 @@ export default { }, authTypeChange() { this.$refs['ruleForm'].clearValidate(); + }, + beforeTabLeave() { + var isSwitch = true + if (! this.user_edit_dialog) { + return isSwitch; + } + this.$refs['ruleForm'].validate((valid) => { + if (!valid) { + this.$message.error("错误:您有必填项没有填写。") + isSwitch = false; + return false; + } + }); + return isSwitch; + }, + closeDialog() { + this.user_edit_dialog = false; + this.activeTab = "general"; } }, } diff --git a/web/src/pages/user/Policy.vue b/web/src/pages/user/Policy.vue index b2a852e..848a38e 100644 --- a/web/src/pages/user/Policy.vue +++ b/web/src/pages/user/Policy.vue @@ -136,10 +136,11 @@ :visible.sync="user_edit_dialog" width="750px" top="50px" + @close='closeDialog' center> - + @@ -283,7 +284,7 @@ export default { re_upper_limit : 0, }, rules: { - name: [ + username: [ {required: true, message: '请输入用户名', trigger: 'blur'}, {max: 30, message: '长度小于 30 个字符', trigger: 'blur'} ], @@ -398,7 +399,25 @@ export default { } else { this.$set(this.readMore, id, true); } - }, + }, + beforeTabLeave() { + var isSwitch = true + if (! this.user_edit_dialog) { + return isSwitch; + } + this.$refs['ruleForm'].validate((valid) => { + if (!valid) { + this.$message.error("错误:您有必填项没有填写。") + isSwitch = false; + return false; + } + }); + return isSwitch; + }, + closeDialog() { + this.user_edit_dialog = false; + this.activeTab = "general"; + }, }, } From b0569b33ccd275a862f1d32e2b9844418ca989b8 Mon Sep 17 00:00:00 2001 From: lanrenwo Date: Wed, 6 Jul 2022 09:16:35 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0go.mod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/go.mod | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/go.mod b/server/go.mod index 4f3d552..55df247 100644 --- a/server/go.mod +++ b/server/go.mod @@ -4,6 +4,8 @@ go 1.16 require ( github.com/StackExchange/wmi v1.2.1 // indirect + github.com/go-ldap/ldap v3.0.3+incompatible // indirect + github.com/go-ldap/ldap/v3 v3.4.3 // indirect github.com/go-sql-driver/mysql v1.6.0 github.com/golang-jwt/jwt/v4 v4.0.0 github.com/google/gopacket v1.1.19 @@ -22,9 +24,10 @@ require ( github.com/tklauser/go-sysconf v0.3.7 // indirect github.com/xhit/go-simple-mail/v2 v2.10.0 github.com/xlzd/gotp v0.0.0-20181030022105-c8557ba2c119 - golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 - golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d + golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 + golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac + gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect layeh.com/radius v0.0.0-20210819152912-ad72663a72ab xorm.io/xorm v1.2.2 ) From 5c413673832af24f99dfa672fd942abc7bd24e9f Mon Sep 17 00:00:00 2001 From: lanrenwo Date: Wed, 6 Jul 2022 13:41:09 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=89=A7=E8=A1=8C=20con.Close()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/userauth_ldap.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/dbdata/userauth_ldap.go b/server/dbdata/userauth_ldap.go index f6c6995..1e6a3f0 100644 --- a/server/dbdata/userauth_ldap.go +++ b/server/dbdata/userauth_ldap.go @@ -74,10 +74,11 @@ func (auth AuthLdap) checkUser(name, pwd string, g *Group) error { return fmt.Errorf("%s %s", name, "LDAP Unmarshal出现错误") } // 检测服务器和端口的可用性 - _, err = net.DialTimeout("tcp", auth.Addr, 3*time.Second) + con, err := net.DialTimeout("tcp", auth.Addr, 3*time.Second) if err != nil { return fmt.Errorf("%s %s", name, "LDAP服务器连接异常, 请检测服务器和端口") } + defer con.Close() // 连接LDAP l, err := ldap.Dial("tcp", auth.Addr) if err != nil { From ecb509478085f582b5f41c0609afe45a24aa5574 Mon Sep 17 00:00:00 2001 From: lanrenwo Date: Thu, 7 Jul 2022 10:01:23 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9LDAP=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E7=9A=84=E5=90=8D=E8=AF=8D,=E9=81=BF=E5=85=8D=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E6=AD=A7=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/userauth_ldap.go | 12 ++++++------ web/src/pages/group/List.vue | 32 ++++++++++++++++---------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/server/dbdata/userauth_ldap.go b/server/dbdata/userauth_ldap.go index 1e6a3f0..1ade05f 100644 --- a/server/dbdata/userauth_ldap.go +++ b/server/dbdata/userauth_ldap.go @@ -39,19 +39,19 @@ func (auth AuthLdap) checkData(authData map[string]interface{}) error { return errors.New("LDAP的服务器地址(含端口)填写有误") } if auth.BindName == "" { - return errors.New("LDAP的用户查询账号不能为空") + return errors.New("LDAP的管理员账号不能为空") } if auth.BindPwd == "" { - return errors.New("LDAP的用户查询密码不能为空") + return errors.New("LDAP的管理员密码不能为空") } if auth.BaseDn == "" || !ValidateDN(auth.BaseDn) { - return errors.New("LDAP的BaseDN填写有误") + return errors.New("LDAP的Base DN填写有误") } if auth.SearchAttr == "" { - return errors.New("LDAP的搜索属性不能为空") + return errors.New("LDAP的用户唯一ID不能为空") } if auth.MemberOf != "" && !ValidateDN(auth.MemberOf) { - return errors.New("LDAP的绑定DN填写有误") + return errors.New("LDAP的受限用户组填写有误") } return nil } @@ -93,7 +93,7 @@ func (auth AuthLdap) checkUser(name, pwd string, g *Group) error { } err = l.Bind(auth.BindName, auth.BindPwd) if err != nil { - return fmt.Errorf("%s LDAP 查询用户的账密有误,请重新检查 %s", name, err.Error()) + return fmt.Errorf("%s LDAP 管理员账号或密码填写有误 %s", name, err.Error()) } filterAttr := "(objectClass=person)" filterAttr += "(" + auth.SearchAttr + "=" + name + ")" diff --git a/web/src/pages/group/List.vue b/web/src/pages/group/List.vue index 1014d6e..72ab1b9 100644 --- a/web/src/pages/group/List.vue +++ b/web/src/pages/group/List.vue @@ -237,34 +237,34 @@ - + - + - + - - + + - - + + - + - - + + - - + + @@ -437,16 +437,16 @@ export default { {required: true, message: '请输入服务器地址(含端口)', trigger: 'blur'} ], "auth.ldap.bind_name": [ - {required: true, message: '请输入查询账号', trigger: 'blur'} + {required: true, message: '请输入管理员账号', trigger: 'blur'} ], "auth.ldap.bind_pwd": [ - {required: true, message: '请输入查询密码', trigger: 'blur'} + {required: true, message: '请输入管理员密码', trigger: 'blur'} ], "auth.ldap.base_dn": [ - {required: true, message: '请输入BaseDN值', trigger: 'blur'} + {required: true, message: '请输入Base DN值', trigger: 'blur'} ], "auth.ldap.search_attr": [ - {required: true, message: '请输入搜索属性', trigger: 'blur'} + {required: true, message: '请输入用户唯一ID', trigger: 'blur'} ], }, } From dd8c114632bfc0310bdb4f820a0e6baee40b1e4b Mon Sep 17 00:00:00 2001 From: bjdgyc Date: Mon, 11 Jul 2022 18:01:35 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BE=A4=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +++++++-- doc/screenshot/contact_me_qr.png | Bin 0 -> 69299 bytes 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 doc/screenshot/contact_me_qr.png diff --git a/README.md b/README.md index 172f907..027e5a7 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,8 @@ AnyLink 服务端仅在 CentOS 7、Ubuntu 18.04 测试通过,如需要安装 > 对于线上环境,必须申请安全的 https 证书,不支持私有证书连接 > > 客户端请使用群共享文件的版本,其他版本没有测试过,不保证使用正常 +> +> 首次使用,请在浏览器访问 https://域名:443,浏览器提示安全后,在客户端输入 【域名:443】 即可 ### 自行编译安装 @@ -73,6 +75,7 @@ sudo ./anylink # 默认账号 密码 # admin 123456 + ``` ## Feature @@ -289,9 +292,11 @@ sh bridge-init.sh ## Discussion -添加 QQ 群: 567510628 +添加微信群: 群共享文件有相关软件下载 + +![contact_me_qr](doc/screenshot/contact_me_qr.png) + -QQ 群共享文件有相关软件下载 ## Contribution diff --git a/doc/screenshot/contact_me_qr.png b/doc/screenshot/contact_me_qr.png new file mode 100644 index 0000000000000000000000000000000000000000..6b238f791714f54af1ade80148e8b04b1637b353 GIT binary patch literal 69299 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
;ZVM2-T+gglfeuSNvCxv$wTJ2R64 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