diff --git a/server/dbdata/user_act_log.go b/server/dbdata/user_act_log.go
index 0a283dd..a4d36d7 100644
--- a/server/dbdata/user_act_log.go
+++ b/server/dbdata/user_act_log.go
@@ -41,17 +41,18 @@ var (
 			UserLogout:      "用户登出",
 		},
 		OsOps: []string{ // 操作系统
-			0: "Windows",
-			1: "macOS",
-			2: "Linux",
-			3: "Android",
-			4: "iOS",
-			5: "Unknown",
+			0: "Unknown",
+			1: "Windows",
+			2: "macOS",
+			3: "Linux",
+			4: "Android",
+			5: "iOS",
 		},
 		ClientOps: []string{ // 客户端
-			0: "AnyConnect",
-			1: "OpenConnect",
-			2: "Unknown",
+			0: "Unknown",
+			1: "AnyConnect",
+			2: "OpenConnect",
+			3: "AnyLink",
 		},
 		InfoOps: []string{ // 信息
 			UserLogoutLose:    "用户掉线",
@@ -119,27 +120,29 @@ func (ua *UserActLogProcess) GetInfoOpsById(id uint8) string {
 func (ua *UserActLogProcess) ParseUserAgent(userAgent string) (os_idx, client_idx uint8, ver string) {
 	// Unknown
 	if len(userAgent) == 0 {
-		return 5, 2, ""
+		return 0, 0, ""
 	}
 	// OS
-	os_idx = 5
+	os_idx = 0
 	if strings.Contains(userAgent, "windows") {
-		os_idx = 0
-	} else if strings.Contains(userAgent, "mac os") || strings.Contains(userAgent, "darwin_i386") {
 		os_idx = 1
-	} else if strings.Contains(userAgent, "darwin_arm") || strings.Contains(userAgent, "apple") {
-		os_idx = 4
-	} else if strings.Contains(userAgent, "android") {
-		os_idx = 3
-	} else if strings.Contains(userAgent, "linux") {
+	} else if strings.Contains(userAgent, "mac os") || strings.Contains(userAgent, "darwin_i386") {
 		os_idx = 2
+	} else if strings.Contains(userAgent, "darwin_arm") || strings.Contains(userAgent, "apple") {
+		os_idx = 5
+	} else if strings.Contains(userAgent, "android") {
+		os_idx = 4
+	} else if strings.Contains(userAgent, "linux") {
+		os_idx = 3
 	}
 	// Client
-	client_idx = 2
+	client_idx = 0
 	if strings.Contains(userAgent, "anyconnect") {
-		client_idx = 0
-	} else if strings.Contains(userAgent, "openconnect") {
 		client_idx = 1
+	} else if strings.Contains(userAgent, "openconnect") {
+		client_idx = 2
+	} else if strings.Contains(userAgent, "anylink") {
+		client_idx = 3
 	}
 	// Verion
 	uaSlice := strings.Split(userAgent, " ")
diff --git a/server/dbdata/user_act_log_test.go b/server/dbdata/user_act_log_test.go
index 2aa8e67..15b7b1b 100644
--- a/server/dbdata/user_act_log_test.go
+++ b/server/dbdata/user_act_log_test.go
@@ -19,47 +19,47 @@ func TestParseUserAgent(t *testing.T) {
 		{
 			name: "mac os 1",
 			args: args{userAgent: "cisco anyconnect vpn agent for mac os x 4.10.05085"},
-			want: res{os_idx: 1, client_idx: 0, ver: "4.10.05085"},
+			want: res{os_idx: 2, client_idx: 1, ver: "4.10.05085"},
 		},
 		{
 			name: "mac os 2",
 			args: args{userAgent: "anyconnect darwin_i386 4.10.05085"},
-			want: res{os_idx: 1, client_idx: 0, ver: "4.10.05085"},
+			want: res{os_idx: 2, client_idx: 1, ver: "4.10.05085"},
 		},
 		{
 			name: "windows",
 			args: args{userAgent: "cisco anyconnect vpn agent for windows 4.8.02042"},
-			want: res{os_idx: 0, client_idx: 0, ver: "4.8.02042"},
+			want: res{os_idx: 1, client_idx: 1, ver: "4.8.02042"},
 		},
 		{
 			name: "iPad",
 			args: args{userAgent: "anyconnect applesslvpn_darwin_arm (ipad) 4.10.04060"},
-			want: res{os_idx: 4, client_idx: 0, ver: "4.10.04060"},
+			want: res{os_idx: 5, client_idx: 1, ver: "4.10.04060"},
 		},
 		{
 			name: "iPhone",
 			args: args{userAgent: "cisco anyconnect vpn agent for apple iphone 4.10.04060"},
-			want: res{os_idx: 4, client_idx: 0, ver: "4.10.04060"},
+			want: res{os_idx: 5, client_idx: 1, ver: "4.10.04060"},
 		},
 		{
 			name: "android",
 			args: args{userAgent: "anyconnect android 4.10.05096"},
-			want: res{os_idx: 3, client_idx: 0, ver: "4.10.05096"},
+			want: res{os_idx: 4, client_idx: 1, ver: "4.10.05096"},
 		},
 		{
 			name: "linux",
 			args: args{userAgent: "cisco anyconnect vpn agent for linux v7.08"},
-			want: res{os_idx: 2, client_idx: 0, ver: "7.08"},
+			want: res{os_idx: 3, client_idx: 1, ver: "7.08"},
 		},
 		{
 			name: "openconnect",
 			args: args{userAgent: "openconnect-gui 1.5.3 v7.08"},
-			want: res{os_idx: 5, client_idx: 1, ver: "7.08"},
+			want: res{os_idx: 0, client_idx: 2, ver: "7.08"},
 		},
 		{
 			name: "unknown",
 			args: args{userAgent: "unknown 1.4.3 aabcd"},
-			want: res{os_idx: 5, client_idx: 2, ver: ""},
+			want: res{os_idx: 0, client_idx: 0, ver: ""},
 		},
 	}
 	for _, tt := range tests {