Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorIlya Kryuchkov <42733472+kr-ilya@users.noreply.github.com>2026-01-05 07:54:56 +0300
committerGitHub <noreply@github.com>2026-01-05 07:54:56 +0300
commit6041d10e3d5d8b0021dd596bdee8f0064a495f80 (patch)
tree897ac55d8389dfea859e6071d08c56f97e843a09 /util
parent4800f8fb706a092a38255ee70904227238b2a6f6 (diff)
Refactor code and fix linter warnings (#3627)
* refactor: use any instead of empty interface * refactor: code cleanup
Diffstat (limited to 'util')
-rw-r--r--util/crypto/crypto.go3
-rw-r--r--util/ldap/ldap.go38
-rw-r--r--util/random/random.go6
-rw-r--r--util/reflect_util/reflect.go4
-rw-r--r--util/sys/sys_darwin.go4
5 files changed, 36 insertions, 19 deletions
diff --git a/util/crypto/crypto.go b/util/crypto/crypto.go
index 05d088a8..2db5bd83 100644
--- a/util/crypto/crypto.go
+++ b/util/crypto/crypto.go
@@ -13,6 +13,5 @@ func HashPasswordAsBcrypt(password string) (string, error) {
// CheckPasswordHash verifies if the given password matches the bcrypt hash.
func CheckPasswordHash(hash, password string) bool {
- err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
- return err == nil
+ return bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) == nil
}
diff --git a/util/ldap/ldap.go b/util/ldap/ldap.go
index 795d0e23..1b9faa53 100644
--- a/util/ldap/ldap.go
+++ b/util/ldap/ldap.go
@@ -24,13 +24,22 @@ type Config struct {
// FetchVlessFlags returns map[email]enabled
func FetchVlessFlags(cfg Config) (map[string]bool, error) {
addr := fmt.Sprintf("%s:%d", cfg.Host, cfg.Port)
- var conn *ldap.Conn
- var err error
+
+ scheme := "ldap"
+ if cfg.UseTLS {
+ scheme = "ldaps"
+ }
+
+ ldapURL := fmt.Sprintf("%s://%s", scheme, addr)
+
+ var opts []ldap.DialOpt
if cfg.UseTLS {
- conn, err = ldap.DialTLS("tcp", addr, &tls.Config{InsecureSkipVerify: false})
- } else {
- conn, err = ldap.Dial("tcp", addr)
+ opts = append(opts, ldap.DialWithTLSConfig(&tls.Config{
+ InsecureSkipVerify: false,
+ }))
}
+
+ conn, err := ldap.DialURL(ldapURL, opts...)
if err != nil {
return nil, err
}
@@ -91,13 +100,22 @@ func FetchVlessFlags(cfg Config) (map[string]bool, error) {
// AuthenticateUser searches user by cfg.UserAttr and attempts to bind with provided password.
func AuthenticateUser(cfg Config, username, password string) (bool, error) {
addr := fmt.Sprintf("%s:%d", cfg.Host, cfg.Port)
- var conn *ldap.Conn
- var err error
+
+ scheme := "ldap"
+ if cfg.UseTLS {
+ scheme = "ldaps"
+ }
+
+ ldapURL := fmt.Sprintf("%s://%s", scheme, addr)
+
+ var opts []ldap.DialOpt
if cfg.UseTLS {
- conn, err = ldap.DialTLS("tcp", addr, &tls.Config{InsecureSkipVerify: false})
- } else {
- conn, err = ldap.Dial("tcp", addr)
+ opts = append(opts, ldap.DialWithTLSConfig(&tls.Config{
+ InsecureSkipVerify: false,
+ }))
}
+
+ conn, err := ldap.DialURL(ldapURL, opts...)
if err != nil {
return false, err
}
diff --git a/util/random/random.go b/util/random/random.go
index c746df63..ddb819c1 100644
--- a/util/random/random.go
+++ b/util/random/random.go
@@ -18,10 +18,10 @@ var (
// init initializes the character sequences used for random string generation.
// It sets up arrays for numbers, lowercase letters, uppercase letters, and combinations.
func init() {
- for i := 0; i < 10; i++ {
+ for i := range 10 {
numSeq[i] = rune('0' + i)
}
- for i := 0; i < 26; i++ {
+ for i := range 26 {
lowerSeq[i] = rune('a' + i)
upperSeq[i] = rune('A' + i)
}
@@ -40,7 +40,7 @@ func init() {
// Seq generates a random string of length n containing alphanumeric characters (numbers, lowercase and uppercase letters).
func Seq(n int) string {
runes := make([]rune, n)
- for i := 0; i < n; i++ {
+ for i := range n {
idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(allSeq))))
if err != nil {
panic("crypto/rand failed: " + err.Error())
diff --git a/util/reflect_util/reflect.go b/util/reflect_util/reflect.go
index 1f557e0d..b56f1456 100644
--- a/util/reflect_util/reflect.go
+++ b/util/reflect_util/reflect.go
@@ -7,7 +7,7 @@ import "reflect"
func GetFields(t reflect.Type) []reflect.StructField {
num := t.NumField()
fields := make([]reflect.StructField, 0, num)
- for i := 0; i < num; i++ {
+ for i := range num {
fields = append(fields, t.Field(i))
}
return fields
@@ -17,7 +17,7 @@ func GetFields(t reflect.Type) []reflect.StructField {
func GetFieldValues(v reflect.Value) []reflect.Value {
num := v.NumField()
fields := make([]reflect.Value, 0, num)
- for i := 0; i < num; i++ {
+ for i := range num {
fields = append(fields, v.Field(i))
}
return fields
diff --git a/util/sys/sys_darwin.go b/util/sys/sys_darwin.go
index 6ecc78c0..b635b549 100644
--- a/util/sys/sys_darwin.go
+++ b/util/sys/sys_darwin.go
@@ -47,11 +47,11 @@ func CPUPercentRaw() (float64, error) {
var out [5]uint64
switch len(raw) {
case 5 * 8:
- for i := 0; i < 5; i++ {
+ for i := range 5 {
out[i] = binary.LittleEndian.Uint64(raw[i*8 : (i+1)*8])
}
case 5 * 4:
- for i := 0; i < 5; i++ {
+ for i := range 5 {
out[i] = uint64(binary.LittleEndian.Uint32(raw[i*4 : (i+1)*4]))
}
default: