From d3ac346c854353f325de0e2fea807700648f3c5b Mon Sep 17 00:00:00 2001 From: Xinjun Ma Date: Tue, 15 Nov 2022 10:59:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20go.sum=20=E5=92=8C=20g?= =?UTF-8?q?o.mod=20=E4=B8=AD=20xorm=20=E7=89=88=E6=9C=AC=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/go.sum | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/go.sum b/server/go.sum index df5d139..afbaf65 100644 --- a/server/go.sum +++ b/server/go.sum @@ -1057,5 +1057,5 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= xorm.io/builder v0.3.9 h1:Sd65/LdWyO7LR8+Cbd+e7mm3sK/7U9k0jS3999IDHMc= xorm.io/builder v0.3.9/go.mod h1:aUW0S9eb9VCaPohFCH3j7czOx1PMW3i1HrSzbLYGBSE= -xorm.io/xorm v1.2.2 h1:FFBOEvJ++8fYBA9cywf2sxDVmFktl1SpJzTAG1ab06Y= -xorm.io/xorm v1.2.2/go.mod h1:fTG8tSjk6O1BYxwuohZUK+S1glnRycsCF05L1qQyEU0= +xorm.io/xorm v1.2.5 h1:tqN7OhN8P9xi52qBb76I8m5maAJMz/SSbgK2RGPCPbo= +xorm.io/xorm v1.2.5/go.mod h1:fTG8tSjk6O1BYxwuohZUK+S1glnRycsCF05L1qQyEU0= From b06247201df742443d0b5212e8f27081218c4f0e Mon Sep 17 00:00:00 2001 From: Xinjun Ma Date: Tue, 15 Nov 2022 11:01:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=20os=20=E5=92=8C=20userA?= =?UTF-8?q?gent=20=E5=88=A4=E6=96=AD=E9=A1=BA=E5=BA=8F=EF=BC=8C=E9=A2=84?= =?UTF-8?q?=E7=95=99=20AnyLink=20Agent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/user_act_log.go | 45 ++++++++++++++++-------------- server/dbdata/user_act_log_test.go | 18 ++++++------ 2 files changed, 33 insertions(+), 30 deletions(-) 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 { From fdb16a4cb6e1266b01e13e46a9d721c12478fe23 Mon Sep 17 00:00:00 2001 From: Xinjun Ma Date: Tue, 15 Nov 2022 11:24:56 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/user_act_log_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/dbdata/user_act_log_test.go b/server/dbdata/user_act_log_test.go index 15b7b1b..1e2b25f 100644 --- a/server/dbdata/user_act_log_test.go +++ b/server/dbdata/user_act_log_test.go @@ -61,6 +61,16 @@ func TestParseUserAgent(t *testing.T) { args: args{userAgent: "unknown 1.4.3 aabcd"}, want: res{os_idx: 0, client_idx: 0, ver: ""}, }, + { + name: "unknown 2", + args: args{userAgent: ""}, + want: res{os_idx: 0, client_idx: 0, ver: ""}, + }, + { + name: "anylink", + args: args{userAgent: "anylink vpn agent for linux v1.0"}, + want: res{os_idx: 3, client_idx: 3, ver: "1.0"}, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {