mirror of
				https://github.com/bjdgyc/anylink.git
				synced 2025-10-31 08:29:33 +08:00 
			
		
		
		
	优化 os 和 userAgent 判断顺序,预留 AnyLink Agent
This commit is contained in:
		| @@ -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, " ") | ||||
|   | ||||
| @@ -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 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user