diff --git a/README.md b/README.md index 064fb89..e78a5fe 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Features Installation ------------ ```sh -go get -u github.com/multiplay/go-ts3 +go get -u github.com/honeybbq/go-ts3 ``` Examples @@ -22,7 +22,7 @@ package main import ( "log" - "github.com/multiplay/go-ts3" + "github.com/honeybbq/go-ts3" ) func main() { @@ -44,10 +44,6 @@ func main() { } ``` -Documentation -------------- -- [GoDoc API Reference](http://godoc.org/github.com/multiplay/go-ts3). - License ------- go-ts3 is available under the [BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause). diff --git a/go.mod b/go.mod index 6f7d3cf..274b3c2 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,9 @@ -module github.com/multiplay/go-ts3 +module github.com/honeybbq/go-ts3 go 1.13 require ( github.com/mitchellh/mapstructure v1.5.0 - github.com/stretchr/testify v1.8.1 - golang.org/x/crypto v0.3.0 + github.com/stretchr/testify v1.9.0 + golang.org/x/crypto v0.27.0 ) diff --git a/go.sum b/go.sum index e77fd06..4b57861 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,7 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -8,22 +9,45 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -31,17 +55,40 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0 h1:z85xZCsEl7bi/KwbNADeBYoOP0++7W1ipu+aGnpwzRM= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/mockserver_test.go b/mockserver_test.go index 8c503f9..4cc2c08 100644 --- a/mockserver_test.go +++ b/mockserver_test.go @@ -34,7 +34,7 @@ var commands = map[string]string{ "servercreate": `sid=2 virtualserver_port=9988 token=eKnFZQ9EK7G7MhtuQB6+N2B1PNZZ6OZL3ycDp2OW`, "serveridgetbyport": `server_id=1`, "servergrouplist": `sgid=1 name=Guest\sServer\sQuery type=2 iconid=0 savedb=0 sortid=0 namemode=0 n_modifyp=0 n_member_addp=0 n_member_removep=0|sgid=2 name=Admin\sServer\sQuery type=2 iconid=500 savedb=1 sortid=0 namemode=0 n_modifyp=100 n_member_addp=100 n_member_removep=100`, - "privilegekeylist": `token=zTfamFVhiMEzhTl49KrOVYaMilHPDQEBQOJFh6qX token_type=0 token_id1=17395 token_id2=0 token_created=1499948005 token_description`, + "privilegekeylist": `token=zTfamFVhiMEzhTl49KrOVYaMilHPgQEBQOJFh6qX token_type=0 token_id1=17395 token_id2=0 token_created=1499948005 token_description`, "privilegekeyadd": `token=zTfamFVhiMEzhTl49KrOVYaMilHPgQEBQOJFh6qX`, "serverdelete": "", "serverstop": "", @@ -45,9 +45,10 @@ var commands = map[string]string{ "channellist": "cid=499 pid=0 channel_order=0 channel_name=Default\\sChannel total_clients=1 channel_needed_subscribe_power=0", "clientlist": `clid=42087 cid=39 client_database_id=19 client_nickname=bdeb1337 client_type=0 client_away=0 client_away_message`, "clientlist -uid -away -voice -times -groups -info -icon -country -ip -badges": `clid=42087 cid=39 client_database_id=19 client_nickname=bdeb1337 client_type=0 client_away=1 client_away_message=afk client_flag_talking=0 client_input_muted=0 client_output_muted=0 client_input_hardware=1 client_output_hardware=1 client_talk_power=75 client_is_talker=0 client_is_priority_speaker=0 client_is_recording=0 client_is_channel_commander=0 client_unique_identifier=DZhdQU58qyooEK4Fr8Ly738hEmc= client_servergroups=6,8 client_channel_group_id=8 client_channel_group_inherited_channel_id=39 client_version=3.6.1\s[Build:\s1690193193] client_platform=OS\sX client_idle_time=1280228 client_created=1661793049 client_lastconnected=1691527133 client_icon_id=0 client_country=BE connection_client_ip=1.3.3.7 client_badges`, - "clientdblist": "cldbid=7 client_unique_identifier=DZhdQU58qyooEK4Fr8Ly738hEmc= client_nickname=MuhChy client_created=1259147468 client_lastconnected=1259421233", - "whoami": "virtualserver_status=online virtualserver_id=18 virtualserver_unique_identifier=gNITtWtKs9+Uh3L4LKv8\\/YHsn5c= virtualserver_port=9987 client_id=94 client_channel_id=432 client_nickname=serveradmin\\sfrom\\s127.0.0.1:49725 client_database_id=1 client_login_name=serveradmin client_unique_identifier=serveradmin client_origin_server_id=0", - cmdQuit: "", + "clientdblist": "cldbid=7 client_unique_identifier=DZhdQU58qyooEK4Fr8Ly738hEmc= client_nickname=MuhChy client_created=1259147468 client_lastconnected=1259421233", + "whoami": "virtualserver_status=online virtualserver_id=18 virtualserver_unique_identifier=gNITtWtKs9+Uh3L4LKv8\\/YHsn5c= virtualserver_port=9987 client_id=94 client_channel_id=432 client_nickname=serveradmin\\sfrom\\s127.0.0.1:49725 client_database_id=1 client_login_name=serveradmin client_unique_identifier=serveradmin client_origin_server_id=0", + "serversnapshotcreate": `version=3 data=KLUv\\/aTFeAEAjeAAOuOELE2wkhEbvGpFNp3\\/lL6F\\/QtsvQL+1czMVGFGZESk9Io3xQ0eQdv35ihoaUFN+NNTCDtDIBmwWyMj4LXst++WmZmZmWZIrYrZKf0p\\/SmdIboCtQLbAv2iNEl\\/Rqd7cNZIc8m6Mo\\/pGca0lt\\/yTxkmEWXe37pcMOnJ56Z1VNqahbP+FN+adXFN41X2WEz2W4wXdS7KRtTDPJVt+bv1GtuctVDCGeF+bTEw3qnr6pJ19b5NiHE3X\\/SSL2qStIUr\\/frfmtHnTX8mvWTe+YVJ+rqozbuFnSvAPijKro4z37yquJayf8GPaVJM59nFM+xFn62nuCbpz9Jn1\\/7J4lJF48Nc1WfRV7zPqFubZHFMYZWLKNwtfinVEb9qN6R4snn+nCZZNcRRDyGjhLC+KL+GwNU3HPVqh7Bc1AnhIiuEsziKEcI9Au6OXoZrIaBzMMIwHCL7\\/VmIzTsFcLqLViHBKSV9Ecb36HPwO9c6Fu580wVQmgZNJyAAnAhAzrQRLS45w69J38EVH9FSXbmATXM8FQA7Fe+MaBnRYoCG9e4SydgdKtuk7C0LT845+Ca2OSehe5FL19yjLTxJFO5XlzS+KMtzaWlavNLYRR1MXeotC7vkF2HblXWkTm14vx7RokWv4ekpvt8NHR8UaKDp2uWiVZwUBVYkUJLygmVsE4mCBUnnQpQKJqKcwHBOXKTAsCCJfKWky53CcTHhdMjCTeeCmp7NeVmBT7CgTEwVFAawiYkKx+HeHCvRYucFCQuTEpyYiVmZFCueksliYEVfJ1CBFiwnVPKKifkyTqCUSIFRYmpZBoOTYTgmOKdjosPhfIdDwilBiTKOsZh\\/iV5flWRdvGMxWbZeyq8vWiOU9r76Iv0df5Z1dnk0DWMwRlq3nlNZBq4oCMGHDWz4MIDWckCNHohI8EMJFvggAAk5AHFRFOYlou9gTfvqqytT7\\/kggx5B6CgyowMCmxoR2PiQoCb6ClsjEWfrW0kMipcVCnDrZeiUFis0SotIYWWgsKLs+ebdes2l32Jwa5Oyh8leo\\/DWMw4T3KL0CJMyUUoxAPLJQeRm1v1UO\\/1xfpVQpnuCHJavVgjGSyc31cmDhRoYIPghABFRnRD\\/23HCTzWFdYKmGTOmmFqw48OCjZoJ42Q3hQ\\/+qw\\/CN1vI0klCd3ISekmlnvKVD9Sg8bEBDZVTxwm+Xac3IzTtOauE4hQdlG101+38XoSvhhtsaOhxI1+Wlrrpvaf3hGLUc04RQtFuvV\\/9CB74IYQWbi4QMtNBDDQ9drC5gcjHRhEgICih5oMiNZlrG8oQITMcQHCTw4QbHD6gwUDIjAki3NzQ4BPEBq0Ux\\/nu89voXkJO\\/9VY2qkjBjQ+Qyr46CBCE4SHHR7U6FADTYzysaTZ1g1tnW9920JPP3mjnReHGjQ\\/OKiJ9+mXd352gq6bZN0PQ\\/FmerG0tMWF1unpvSlf66BpPgtdmyUELb2QtDFHVykcMmRGpQR0Dr8N8btpn47Q3nuC5tNJQ\\/TJv\\/tV52ANINzQGOHGhgygxfhOS9\\/dOEPb0gmqlUpo0q5CEMb9dnyPPhnRQOMzwY0aFnT0CMIBl33GmJYbmDGixaVjjGfvYnH9nVecghbHm+sUZbwQ3dVCkUIJ6bsr9O7jTCXuFNbe2iSNvyi7esZbisnWd0zx6jULY2pnr7MrhuIV3g96UUznFJ5RdMFgFAnESOBFn5hkNle9yBhPMS5qZVakdfGO8SxrrzPHrv7CkJkaMHx47DATOYy+Ea3z0wxJWz+iaZjK0ndwdnVNchbvbBQWRR5dnZC8WGB7Uk5cUOaWSJF58ooMFpQYMiooy8oJGbyDYq8ocVErKR4XjkVJlmHhiCiRMXE7lUV3EtMkyyaqE7cCM2DVjgIu0hIVMHWBj9mcuvLVL+tfri51LJ7xV9h6ydyKUj7t4tHJaO\\/U\\/Mq0haMY\\/P2p1xJWfX99VS\\/ST03YeqlrnJq0V2a6q3KthsKSuFSL4qE2Zb7AckVHGNF2kPIirs5SQONa2ZaYHBaKYtYSKmVeiZCC9VGvnrhKE6h0xw6bFpNyMEuiQ1kY4WZLjpMnJImNNGD4lNAoI2NKFBMZX1wwTi8u9FTomSA8WWFR1LuCDxivxIRQThFxOvFexnGPBLtvxbLVBBQ+lcaYMIZLS+LGGVpLhD\\/LLr9lXblrmFKJRjRJW2+fs5fO+1PE9mWoTnaCpLYSik839O\\/s\\/SepCRWWFSUoTEhMoKOmBRs1OACx4aGBTQk4bKyUnz\\/POOveGXI4T1C91ELoyaofph9PEHKzgwc3PTa4+fFCDTVuZsDxQYHIzI0RZHxIpdyYVvgPOUgv9NNJjCH9sNvYTQcrsEHzgJAZC4B8PvhxU6ULEdAEsYFGx5CZF0e0WCAa9AgiCA8ZRAeniyulD0f3KMXQ3FpC02oNWazxjnf+KDLDg0iNDx1qaNxgo7VQYMHn0SE+PhVg8PGB43Mjg88MN2zmiJZ64uCUdN+ZnaWYUsg5GSNkaZ77afkAkM8OCWyA+PiMAEKNjyIzroUhNjYksLnR4xNkB5sSitBskIHNhSNa6IgWCR28MWQmCA8p+PhogMNMDDg+U7pHacbT3lNG6O2ZrYRmniRE30RxrJXFoyLFywutwmQBEVBzGGBR8vIsNhcXLDEuKoD0oAGigw2RB2x47PBB1tfPTVtr\\/TFCn\\/9Ce8oSetBGaD88oY7RPiBAcAgBogMc9dk36awPvq95Q5JSC719pYOmae1H6651D2Oc5fu4IazdhXB9r6GLpZbyrfPAkLicqMRKhWV7Ji\\/VxEqLBDNpcTnJVFUUFgIENiNgQLPDkBoVdlz3Lr06fp3gky9LC8k4\\/UtI22ffproDo1JJseKC5ERFyfUsJylYixRZCg\\/Jk7CA0QIMn7v1c7jOPbWGrKQTdCvc2EJ6ihvfN6FJjEY9LzhySiCGCJL+IiNx4iKa9bZOGZ17Dkbq5K1URltdpTDaaN+U0kZnHYTw3vumjc\\/dZ6171jn4oKTw0knldbZaeN+D5q2SOktvlfVK6VykNtpLH4XUQhfBFz3NR6qD1975XqRuQvtilHTKOkcshHBCOzKBjpoaQvjU2EFDJ3TTQQels1XGERNq1OQgMjH1mZTUwQhrrY7WOa2dk1IaIa1Tyvmcq5Fe5+C89FY4oY3RXQrvvXU++t51VF5XYb3TwTeDdiatOZ+hwSmlffEHReGqVilrdZLmyNEjCOqg1Vo0x7auorVsKhPCK62F3E01hww0MdSwgU46C6O001JaWZBo8WR9V84P3LPw5CZ01MUJZbXPWeum4466yeeIDx4+4PBjhrYe2zCNu3i0TeMV709p\\/pnkuVyklz5bWAa2+IVZm9YYu2bFtqmSYrKr58+41jxXNlXY+kzzvnnnop73K8Mm3V8ujL\\/Fqb0v6zUZMDzDoIp3jifLM1l4qq5sSy984pr2mdb4+1VZnit7mCvmJfOuufSra7\\/F+Cz71zY8QZiDGe4YBrtN0t66qMy1xlL2U\\/XVlFiMxjaJa1yC91kZbul80k3qIPTTtGmcv\\/QvmXOS2hcK955dGq8krm3VZ37BaBt2uXTu4dVrmuKzelzHXksSx1nnu5Xh7MKq752LuvrWswvTOhbvfeursrbsu8Y7n0kxm\\/fL+uyyOlyy+AWjc1EdbOEq5l84hvtTr1\\/btMbY1TPcterq2qYtvqVJT7prnJrhOm+5COMv2ot+ozCM569tSVOkR2iA4VMCCDQj2gxJW4\\/iykBdV+wzMZ+MJOGJK9A9GSj44Jedeyidu0JiN+jhUj0K0GwyrwU7aKqMNd4XeFVehvmoo5iTUimFzMzIAIAgBADj0gAUFooapKmehoHZAMOAQBAcA8ZAUBAUGgXGZyAgAABAgABAAIIABACEIAhCohwww9oApxt1YJlRFykMPOU2dtuqo3xKQWksdgwT49jtnjMl7fNOc0Xf4zcqLpOyhMohy3mtuZzbHD2ovVdzfRCZn\\/uFA96acPjLOYsevfcxJ1iw6C7uPQtx2IVCOscIt\\/8it\\/mTEZutFGgudjgWwFwkuVmAXyywBWNx\\/I5dYIMNQ0iLU4URMmcxXUH+WjNgeflXoTNEIsDBLCatdPg7ceFt8qQl7ufJ9wyB\\/Pm6bfgPuzRgnU1YfItHQrPEP8bfVECqTwLQuGSSq1t\\/QLkadd3vl7kPcW7iVaZ91yCdA3B2kYqA\\/oqoyPlAnn8TAFo5FeErUwynb96jSya6SoYKF8mjhKiF\\/YJJCP6k7oRQOcHix9o2Quw0Zbl5yQbzraYZrm93gfU+TdPWZLqRID8QrQpBYXTUAamRRhgKJkRu1ioQlowEP56lYNmTt9sKRqkDtFiYXQji7GmNH36xkOGLiqbg88UvYCNh9lQK9kKwzYAF76RK07VyE7xSBBiCnxK10bMEzf9ny5uySqX99WitBlIh45G2CeYDBfY0k7SMMiU3kaQL08zoWelm5ARQrj2mxpxNnBG1HmZuT0cJjvD+7zSpVElFevbI1dzKkHW80Tw6AlpKh5NtlUbakx7Yl9gDVHWl9C79pNxbiDC9FJKBuEuPWHUuhy9Hnj2FHMHwCBUh5pu+GOWymWAqbMnm8tIaWyJFeGa0ubTJfNGObXOuMDgpVvXJjOrTXWLzKF5NVWcktY7kuVS4n1UbsPVWqglU0Re9mOsI7OMgMGYEWqlbhq77+FZTguOoSZQx0\\/lOtosBvfibQh+VqNFobqn94F7qE\\/frojFfQXq0K9uriRemqDpspkLu1qFiINZXJUtvQ16x\\/pHOlPBHcKCQJiFeS5RZEDRwOM6eQIyQ\\/WZKE8+avxtSl6NuYo1O87aqrGLCozEYVZCtiHC9FhF84MsuFerWDtO7Ptxh3RVXr3B8huJCMRcU\\/BN\\/70PMXzR6KN2yeEVznZfyyrFfXlHajiO6xF+k74NUaDbmyg0Z4sGfFgVkdA+p64XZO+Z+42td31jL328VWbQv8oodsV4T6ODQrn0vFVAHsLWiPI\\/14O88MItGDEBF6diAs+HuTDLgDgv7REvA9Plm5M6f1KcmLJWxB618JyyMCiMPhQHsc1BBsY+Hyv9COuGDphWkbbB9zsEGU\\/RU2nrcve0IaNwTuMBKluBpJrWMIpxvwFQCcijbcMAKRbmgR+NjDl0f0DOsuc6rpws6+hi9PjL19NYgWK8Ttd+TM6KVAKiiq81\\/ZPpBR1pbh6Rdft1IRpuXzkem9wz8T3EvInqIx0eIkMXoWzdbCdkv8l+fCCR7El9e39YHLxFj6n+2UJ2nyhVV8miQ8SCeGi0V3HfgK9sojWFitAOWpIvX4XpWkskSy8CbhoJ2g9sNk3s6zX+tie2Hu\\/V914A\\/wZxJ31xHM3ApY+ZlEsCN+8MQPcyxuqEUpkpq5nJ6UcWg1Jc1c8CVJf+QBqlydevWcsn\\/iHxcz22B+Rf7bN9o0dQLNlDfY8GfJbibAKGKA197\\/oRlZ0WFF5+rWOyV000nOVJRAPbFp0QpSvlfgrJSSpVDDPaNd0qcQidFKp3rN7HC9asmmYzwygSMX4SASaFWNuAZg1XSA6SwUGnmljAAfYu4DjQ5UkQYEZBIwrOmHLIs7BNDQk3p14vD4\\/4gA3pBW1mgz8dktPlWm\\/zSg1pM+QKfMwiuIe1Qn4yoTt+gg95UaN4y2IyjajT2Vj3vBpli+zLsnaYKcjh8rz0G7GnenNU4A+NM7hHAEEdG+2WsyRiej9dGoXLIHEwiNRVqfjHkrgP2FnZlPKhFAUVNWI2QAwsuliuLxuLgKJN8wvySwTuEBwl+wUarUZ7lCvQPc98f0qnn9JD2LDx2e6YOe4u11j6sQRJChsX6OzIJMPDv36K4MGEWTydVArgC0GJ8vG0fKsgCf4NuCOWfOFdw3nHZqzNxByU\\/OvfbRDZgvg3m5413Kx9C\\/5XxLwL\\/GlxSUO754afz+hHwe\\/r8Rfp6AO7cBhxAZI7CM1Cag0DkG5VPmwFpAjYxJiOTA5r603UgDgB7hYT1I2ic\\/ONPxoT+8+d2vwsQw8b0D41pPB6B8W3dpG3P+IM1Ut\\/pb8o788klBmrvD3biX9im9PfXNNlcoJ34mTctcc1fXIIk8o\\/qRvBniheJ7czQviM4nkAHGPvzpNZd37rPebGOZO5eTuvTy6SbGzMGCmQ+LuozvzhievL6bjWJ3PfogI7P78f7i19R13glvqFMr+HIh9CY+MMCj95ssN\\/Fn2jhW\\/+SgXmbf4Lf7q3lxOwVT6Y3bvzlRvF2+zWKsW0yMMtem\\/sFhJw9TVv7qx8\\/7Oxm3QlyvTor1\\/PB8aD1fWi6J\\/0w1bmmtURqk1ag3K2caQNEOHp3\\/6fbo2eH6VgvN31CM38P+08vPXfpDHvt8zcHRFbNmw5WZoPlhQpTH5IvvmyVQ\\/\\/jD868OPBj+UW2bzgokCejY+34VvAUBRtvoGpMJyF9lhzZKyUrqZIXSyStfZBR+tCQch+USW8HbtbZToZTz37ALGTdYkXxdm52woAREh0PQ2wRxrZ2CY7UWkYGoXiP9Ew9sZz2Gkeaetee0IiMtPC\\/3wREmbGLOChh3e5JPDFJFNw1zKSoBPsGDxJLmp1HHmIzjyMPbGMvsKNJmCJyLtsmFWISGn3qga3wwzC4k70NpuUJbDPCsAocVYYyDP+nlNGzAoj9KAycl6i00PIFXysjDZiz2B9KGJgLQ2CvZVDb+EAEFhGA31xOYEtdGuViADl8EmWXYdT0Jfpr6xf11dXHQv5zuSegw21WOyIjjaLd3t3DMm2C6kFAI+OTnjOleJdWOsBWgH1f4oFkLswvkhFZdkVM03FVUE6hId0pH8xepENyWjMmRNx5+Bh1HbhshE3MP5UR45gxfhG5CL7wX2SI5wlmK32TABSwtBkHUxUy9UWhUCeWQB8BJDAwKHvEL4YxG4\\/xOkyQwXpUzGFSAR2DE9cnYjUzhnCTq\\/CXFp2XOTuNI\\/i5zQsxvABSmfcpqqQ66IZ\\/R30CZ\\/ycEukjsTSweUWXyZ6YCljLtcdrxcK2UWBTg2pJVqh0vTFy9HUK72UA1yBui1IjOCltTDRS8uFqC+aHWIegrdeTqBxImCK\\/dYzfZkVZRHB+43+kL1Gpi0MUBKTxgPBBlKgQmKT8Z2Kl+Sir38Q1mJM+jiPOpTNfUKfvD7GAyVZPUCkDGFN6NBnZfJdVy+JShf9MUA4xrDUwoMOuEZ2K\\/CcpmWEIaCTQGM5Rj8U0Tthj\\/iRFYbrP8w9Z+bLZAJUIeWsP4hCV9NCipGBjqoeQuGmU+O6E+SkXzjaTW07wbNg6uwcWMOl7d2jWUDUPA2Mn\\/AV4MPP6Ibm95QeGKnsu\\/1bBjRRNlQlCNZIZYOwcHLKmMz\\/iW2kp6oX\\/aNcuncn7MlLPnCn3mjJ5zOiBaJeLjQFscIFFwjuN5biU+JJEKJvLkgkG6\\/I0r2UQD+oJ4sy\\/qkQ\\/SysQAc0JxZwiPgPLg1YNDmvhAOmw8Iz3cFgW4yEyqmOcCfQcCRRmm+kmlIyFEc+fFzFITMkHIPCQwEMiJozrIBIR73cyoJ697TtIKvF+KCC4MfMXDx\\/b+4euzuN+YyUDBYzK+9YW3HyeGi1V0ZDH\\/nCPeFCh7SdziEhb1b1RSYnmCFhiJfzp7UmUnvH8iJKArW4msJUAyIdQVAU4yr0p6SrbDcc8DANAEjTlqJEdZG02RRQGLK5y5Pknjzycs9TXDrqcGVHqosNKY8umxZaDaHG2IMHbC6buu\\/rL1CesCzg534okAXrJoa\\/cxHMaMEpbXYalnZyuZuC5wiaUB3Is0wxWmtC61L5IvOtesQxJFHrTFB3jQBVIDCYsIC5yRZVpiU2RO0HKwhhVVMnLZGHqOFXGjiJ4EY6bnBM0\\/U\\/XhQkwFLi9pqHFnrZgNjxCVYg7NPLcAVMYfTHXGwZViDxojozzizwGgADoei6TJ+Zf0IGKcWwDRux1AEf6QgzUsFz1rwggzDyZytjzkxu6GzI1XKjkG3IYHRZs2joOdoJSBqhJDnjoga2U9oMrfgubriJcI9V2aEC+LNFDkiEJhYuI43NMEgQGzywwqWojyYhkTCvqYiAebcqCrv0zMnEL+XL\\/JgMG0TJiMghnu6FSQ+PqbhEdMsLcBkNg+Z7jLSfBqDDZchQaP61s0BQBQKvj1ugFK1JB1IbDLAS3k4LIg9usUsCHPGaWt+5aAC6O0asc9CarOXjl5hbEM41d\\/lWRoQTKe9KQMSUXQiyzB1fx+XBDEvZOC2QEFtWebrxWABr1wPz41kham2epuhIwBI7HDMn3LtKhE1Jro1nWtZBBGuOLCCt9OqfdsK0WKy2D5pNe9GSha5FLKvHAM82oq1X53ck92SMXkmqg4Gr3cdiCNQHWps2m0s7hKWtLxjkkG1v5FBSNLizOUCp+ExjyjeisB3NFFBFBzNt1vxs8HIrFPccaShG2Nq5vTlwc+LfYHFGeiuqHkMKTnC7G8FRynfdzQEo0RNYpnJcsFPVrWRGB8nKifWwcYnP6VrW1+ziHaVNMQVH1I7JTUtBNNojl3DMsD4ZtrRgkiqul7CrQ1uEbkGC6hJDW1HxyOk+UjPgwXkT6TPsnMnerbVaDm2KecFGoRqI3kMKdozq6+VZ0HVi1fgbgnYoodOseijhO91ZH1TboqCYGjABstnOHNzJKjw9tGdxr0iS0DTwxAoQQ6VPBmm0sQpY7RFm8wPZGKej+ukqzdYyoce+2tgF7WiLiTw8K9IpWzf0pl2umb13OG6B714ynLuma4tacQAvIxR1O2TX6i7G0VxLPviVRcg0KMhzWkIk7QNU5sRqBmaSB0vQjuHSis6FbSdGJVesaOwlAJ3dZg7LtKOAYMu28Wqc5KB1nLpNTM9FXCyd0IFhbf9bs8qfFKSbDaEEPLFJpD+60Jn8cuKgihX+B6tbg3BiYHhadZy3NbnMozUmr7f22CVhatA2ZxcTUsShYOEIuyPWRQtdi5ayqORz5HF1C16NO55rgboChvYMQxRiBlr4b8uWU6YWnyp++w51f4o+dGzqORnhTs+1uRDyVBslITwCNJ3qIZmEYbWCPIr+nCUbo62CjGfVDdoDnAzDkPxNdrd571cjm6AAdzAB+JUyOwEq0sjywUWfBNtGNyQuOZqAnhdiz+qxTVY+qXtOU7T6SOXHyQewK4FinnJc5xIIMUNl6A9GWn6pQ0J1TmpiMSKVF1cStwv0UsaGor6S\\/qDm9MkSY57hvEMjOyOTsvmzewdGjnOZLis1g7VqDfgl9ENRC96UIdL1Qq4J9iJ6XyaH3Ns7nhc3qvybh5JJC5vxz0b3O8xK9TY8vEldL+8WRBuyG3tSRGaf\\/BBNqlWnTiafI6cVo8jgQCZqCipjQOgzRH9TaO\\/wSRcUXr+ARRm2kIwEMkFZVC9nUfnSAOcPWo4AZ0dzcP+CQiwAaDW5YKExBEMYMGfhv1fXsej95BciqNHqeKq3zhFJb8rQDgJj5C3T\\/Nbq\\/kFqOPvBa+Wg\\/InrjVSNdOyRNN4wWXG54aa1pkR+fF6qcCYFxghqJSjqK2bqHqKZkRIuGJDzO++gr9GJo6tjbFLpCtDzWJoZjaAnBjvTjWJIdbWN3h07GBN9UAe6H31wgePJV2\\/yb6dZxyn8+LhroyMYP2yxWLw==`, + cmdQuit: "", } // newLockListener creates a new listener on the local IP. diff --git a/server_cmds.go b/server_cmds.go index d986225..893ba33 100644 --- a/server_cmds.go +++ b/server_cmds.go @@ -368,7 +368,7 @@ func (s *ServerMethods) PrivilegeKeyAdd(ttype, id1, id2 int, options ...CmdArg) Token string }{} options = append(options, NewArg("tokentype", ttype), NewArg("tokenid1", id1), NewArg("tokenid2", id2)) - _, err := s.ExecCmd(NewCmd("privilegekeylist").WithArgs(options...).WithResponse(&t)) + _, err := s.ExecCmd(NewCmd("privilegekeyadd").WithArgs(options...).WithResponse(&t)) return t.Token, err } @@ -461,3 +461,16 @@ func (s *ServerMethods) ClientDBList() ([]*DBClient, error) { } return dbclients, nil } + +type Snapshot struct { + Version int `ms:"version"` + Data string `ms:"data"` +} + +func (s *ServerMethods) SnapshotCreate() (*Snapshot, error) { + r := &Snapshot{} + if _, err := s.ExecCmd(NewCmd("serversnapshotcreate").WithResponse(r)); err != nil { + return nil, err + } + return r, nil +} diff --git a/server_cmds_test.go b/server_cmds_test.go index 451fbac..1df7b5d 100644 --- a/server_cmds_test.go +++ b/server_cmds_test.go @@ -196,7 +196,7 @@ func testCmdsServer(t *testing.T, c *Client) { expected := []*PrivilegeKey{ { - Token: "zTfamFVhiMEzhTl49KrOVYaMilHPDQEBQOJFh6qX", + Token: "zTfamFVhiMEzhTl49KrOVYaMilHPgQEBQOJFh6qX", ID1: 17395, Created: 1499948005, }, @@ -210,7 +210,7 @@ func testCmdsServer(t *testing.T, c *Client) { if !assert.NoError(t, err) { return } - assert.Equal(t, "zTfamFVhiMEzhTl49KrOVYaMilHPDQEBQOJFh6qX", token) + assert.Equal(t, "zTfamFVhiMEzhTl49KrOVYaMilHPgQEBQOJFh6qX", token) } serverrequestconnectioninfo := func(t *testing.T) { @@ -402,6 +402,18 @@ func testCmdsServer(t *testing.T, c *Client) { assert.Equal(t, expected, clients) } + serversnapshotcreate := func(t *testing.T) { + t.Helper() + snapshot, err := c.Server.SnapshotCreate() + if !assert.NoError(t, err) { + return + } + excepted := &Snapshot{ + Version: 3, + Data: `KLUv\/aTFeAEAjeAAOuOELE2wkhEbvGpFNp3\/lL6F\/QtsvQL+1czMVGFGZESk9Io3xQ0eQdv35ihoaUFN+NNTCDtDIBmwWyMj4LXst++WmZmZmWZIrYrZKf0p\/SmdIboCtQLbAv2iNEl\/Rqd7cNZIc8m6Mo\/pGca0lt\/yTxkmEWXe37pcMOnJ56Z1VNqahbP+FN+adXFN41X2WEz2W4wXdS7KRtTDPJVt+bv1GtuctVDCGeF+bTEw3qnr6pJ19b5NiHE3X\/SSL2qStIUr\/frfmtHnTX8mvWTe+YVJ+rqozbuFnSvAPijKro4z37yquJayf8GPaVJM59nFM+xFn62nuCbpz9Jn1\/7J4lJF48Nc1WfRV7zPqFubZHFMYZWLKNwtfinVEb9qN6R4snn+nCZZNcRRDyGjhLC+KL+GwNU3HPVqh7Bc1AnhIiuEsziKEcI9Au6OXoZrIaBzMMIwHCL7\/VmIzTsFcLqLViHBKSV9Ecb36HPwO9c6Fu580wVQmgZNJyAAnAhAzrQRLS45w69J38EVH9FSXbmATXM8FQA7Fe+MaBnRYoCG9e4SydgdKtuk7C0LT845+Ca2OSehe5FL19yjLTxJFO5XlzS+KMtzaWlavNLYRR1MXeotC7vkF2HblXWkTm14vx7RokWv4ekpvt8NHR8UaKDp2uWiVZwUBVYkUJLygmVsE4mCBUnnQpQKJqKcwHBOXKTAsCCJfKWky53CcTHhdMjCTeeCmp7NeVmBT7CgTEwVFAawiYkKx+HeHCvRYucFCQuTEpyYiVmZFCueksliYEVfJ1CBFiwnVPKKifkyTqCUSIFRYmpZBoOTYTgmOKdjosPhfIdDwilBiTKOsZh\/iV5flWRdvGMxWbZeyq8vWiOU9r76Iv0df5Z1dnk0DWMwRlq3nlNZBq4oCMGHDWz4MIDWckCNHohI8EMJFvggAAk5AHFRFOYlou9gTfvqqytT7\/kggx5B6CgyowMCmxoR2PiQoCb6ClsjEWfrW0kMipcVCnDrZeiUFis0SotIYWWgsKLs+ebdes2l32Jwa5Oyh8leo\/DWMw4T3KL0CJMyUUoxAPLJQeRm1v1UO\/1xfpVQpnuCHJavVgjGSyc31cmDhRoYIPghABFRnRD\/23HCTzWFdYKmGTOmmFqw48OCjZoJ42Q3hQ\/+qw\/CN1vI0klCd3ISekmlnvKVD9Sg8bEBDZVTxwm+Xac3IzTtOauE4hQdlG101+38XoSvhhtsaOhxI1+Wlrrpvaf3hGLUc04RQtFuvV\/9CB74IYQWbi4QMtNBDDQ9drC5gcjHRhEgICih5oMiNZlrG8oQITMcQHCTw4QbHD6gwUDIjAki3NzQ4BPEBq0Ux\/nu89voXkJO\/9VY2qkjBjQ+Qyr46CBCE4SHHR7U6FADTYzysaTZ1g1tnW9920JPP3mjnReHGjQ\/OKiJ9+mXd352gq6bZN0PQ\/FmerG0tMWF1unpvSlf66BpPgtdmyUELb2QtDFHVykcMmRGpQR0Dr8N8btpn47Q3nuC5tNJQ\/TJv\/tV52ANINzQGOHGhgygxfhOS9\/dOEPb0gmqlUpo0q5CEMb9dnyPPhnRQOMzwY0aFnT0CMIBl33GmJYbmDGixaVjjGfvYnH9nVecghbHm+sUZbwQ3dVCkUIJ6bsr9O7jTCXuFNbe2iSNvyi7esZbisnWd0zx6jULY2pnr7MrhuIV3g96UUznFJ5RdMFgFAnESOBFn5hkNle9yBhPMS5qZVakdfGO8SxrrzPHrv7CkJkaMHx47DATOYy+Ea3z0wxJWz+iaZjK0ndwdnVNchbvbBQWRR5dnZC8WGB7Uk5cUOaWSJF58ooMFpQYMiooy8oJGbyDYq8ocVErKR4XjkVJlmHhiCiRMXE7lUV3EtMkyyaqE7cCM2DVjgIu0hIVMHWBj9mcuvLVL+tfri51LJ7xV9h6ydyKUj7t4tHJaO\/U\/Mq0haMY\/P2p1xJWfX99VS\/ST03YeqlrnJq0V2a6q3KthsKSuFSL4qE2Zb7AckVHGNF2kPIirs5SQONa2ZaYHBaKYtYSKmVeiZCC9VGvnrhKE6h0xw6bFpNyMEuiQ1kY4WZLjpMnJImNNGD4lNAoI2NKFBMZX1wwTi8u9FTomSA8WWFR1LuCDxivxIRQThFxOvFexnGPBLtvxbLVBBQ+lcaYMIZLS+LGGVpLhD\/LLr9lXblrmFKJRjRJW2+fs5fO+1PE9mWoTnaCpLYSik839O\/s\/SepCRWWFSUoTEhMoKOmBRs1OACx4aGBTQk4bKyUnz\/POOveGXI4T1C91ELoyaofph9PEHKzgwc3PTa4+fFCDTVuZsDxQYHIzI0RZHxIpdyYVvgPOUgv9NNJjCH9sNvYTQcrsEHzgJAZC4B8PvhxU6ULEdAEsYFGx5CZF0e0WCAa9AgiCA8ZRAeniyulD0f3KMXQ3FpC02oNWazxjnf+KDLDg0iNDx1qaNxgo7VQYMHn0SE+PhVg8PGB43Mjg88MN2zmiJZ64uCUdN+ZnaWYUsg5GSNkaZ77afkAkM8OCWyA+PiMAEKNjyIzroUhNjYksLnR4xNkB5sSitBskIHNhSNa6IgWCR28MWQmCA8p+PhogMNMDDg+U7pHacbT3lNG6O2ZrYRmniRE30RxrJXFoyLFywutwmQBEVBzGGBR8vIsNhcXLDEuKoD0oAGigw2RB2x47PBB1tfPTVtr\/TFCn\/9Ce8oSetBGaD88oY7RPiBAcAgBogMc9dk36awPvq95Q5JSC719pYOmae1H6651D2Oc5fu4IazdhXB9r6GLpZbyrfPAkLicqMRKhWV7Ji\/VxEqLBDNpcTnJVFUUFgIENiNgQLPDkBoVdlz3Lr06fp3gky9LC8k4\/UtI22ffproDo1JJseKC5ERFyfUsJylYixRZCg\/Jk7CA0QIMn7v1c7jOPbWGrKQTdCvc2EJ6ihvfN6FJjEY9LzhySiCGCJL+IiNx4iKa9bZOGZ17Dkbq5K1URltdpTDaaN+U0kZnHYTw3vumjc\/dZ6171jn4oKTw0knldbZaeN+D5q2SOktvlfVK6VykNtpLH4XUQhfBFz3NR6qD1975XqRuQvtilHTKOkcshHBCOzKBjpoaQvjU2EFDJ3TTQQels1XGERNq1OQgMjH1mZTUwQhrrY7WOa2dk1IaIa1Tyvmcq5Fe5+C89FY4oY3RXQrvvXU++t51VF5XYb3TwTeDdiatOZ+hwSmlffEHReGqVilrdZLmyNEjCOqg1Vo0x7auorVsKhPCK62F3E01hww0MdSwgU46C6O001JaWZBo8WR9V84P3LPw5CZ01MUJZbXPWeum4466yeeIDx4+4PBjhrYe2zCNu3i0TeMV709p\/pnkuVyklz5bWAa2+IVZm9YYu2bFtqmSYrKr58+41jxXNlXY+kzzvnnnop73K8Mm3V8ujL\/Fqb0v6zUZMDzDoIp3jifLM1l4qq5sSy984pr2mdb4+1VZnit7mCvmJfOuufSra7\/F+Cz71zY8QZiDGe4YBrtN0t66qMy1xlL2U\/XVlFiMxjaJa1yC91kZbul80k3qIPTTtGmcv\/QvmXOS2hcK955dGq8krm3VZ37BaBt2uXTu4dVrmuKzelzHXksSx1nnu5Xh7MKq752LuvrWswvTOhbvfeursrbsu8Y7n0kxm\/fL+uyyOlyy+AWjc1EdbOEq5l84hvtTr1\/btMbY1TPcterq2qYtvqVJT7prnJrhOm+5COMv2ot+ozCM569tSVOkR2iA4VMCCDQj2gxJW4\/iykBdV+wzMZ+MJOGJK9A9GSj44Jedeyidu0JiN+jhUj0K0GwyrwU7aKqMNd4XeFVehvmoo5iTUimFzMzIAIAgBADj0gAUFooapKmehoHZAMOAQBAcA8ZAUBAUGgXGZyAgAABAgABAAIIABACEIAhCohwww9oApxt1YJlRFykMPOU2dtuqo3xKQWksdgwT49jtnjMl7fNOc0Xf4zcqLpOyhMohy3mtuZzbHD2ovVdzfRCZn\/uFA96acPjLOYsevfcxJ1iw6C7uPQtx2IVCOscIt\/8it\/mTEZutFGgudjgWwFwkuVmAXyywBWNx\/I5dYIMNQ0iLU4URMmcxXUH+WjNgeflXoTNEIsDBLCatdPg7ceFt8qQl7ufJ9wyB\/Pm6bfgPuzRgnU1YfItHQrPEP8bfVECqTwLQuGSSq1t\/QLkadd3vl7kPcW7iVaZ91yCdA3B2kYqA\/oqoyPlAnn8TAFo5FeErUwynb96jSya6SoYKF8mjhKiF\/YJJCP6k7oRQOcHix9o2Quw0Zbl5yQbzraYZrm93gfU+TdPWZLqRID8QrQpBYXTUAamRRhgKJkRu1ioQlowEP56lYNmTt9sKRqkDtFiYXQji7GmNH36xkOGLiqbg88UvYCNh9lQK9kKwzYAF76RK07VyE7xSBBiCnxK10bMEzf9ny5uySqX99WitBlIh45G2CeYDBfY0k7SMMiU3kaQL08zoWelm5ARQrj2mxpxNnBG1HmZuT0cJjvD+7zSpVElFevbI1dzKkHW80Tw6AlpKh5NtlUbakx7Yl9gDVHWl9C79pNxbiDC9FJKBuEuPWHUuhy9Hnj2FHMHwCBUh5pu+GOWymWAqbMnm8tIaWyJFeGa0ubTJfNGObXOuMDgpVvXJjOrTXWLzKF5NVWcktY7kuVS4n1UbsPVWqglU0Re9mOsI7OMgMGYEWqlbhq77+FZTguOoSZQx0\/lOtosBvfibQh+VqNFobqn94F7qE\/frojFfQXq0K9uriRemqDpspkLu1qFiINZXJUtvQ16x\/pHOlPBHcKCQJiFeS5RZEDRwOM6eQIyQ\/WZKE8+avxtSl6NuYo1O87aqrGLCozEYVZCtiHC9FhF84MsuFerWDtO7Ptxh3RVXr3B8huJCMRcU\/BN\/70PMXzR6KN2yeEVznZfyyrFfXlHajiO6xF+k74NUaDbmyg0Z4sGfFgVkdA+p64XZO+Z+42td31jL328VWbQv8oodsV4T6ODQrn0vFVAHsLWiPI\/14O88MItGDEBF6diAs+HuTDLgDgv7REvA9Plm5M6f1KcmLJWxB618JyyMCiMPhQHsc1BBsY+Hyv9COuGDphWkbbB9zsEGU\/RU2nrcve0IaNwTuMBKluBpJrWMIpxvwFQCcijbcMAKRbmgR+NjDl0f0DOsuc6rpws6+hi9PjL19NYgWK8Ttd+TM6KVAKiiq81\/ZPpBR1pbh6Rdft1IRpuXzkem9wz8T3EvInqIx0eIkMXoWzdbCdkv8l+fCCR7El9e39YHLxFj6n+2UJ2nyhVV8miQ8SCeGi0V3HfgK9sojWFitAOWpIvX4XpWkskSy8CbhoJ2g9sNk3s6zX+tie2Hu\/V914A\/wZxJ31xHM3ApY+ZlEsCN+8MQPcyxuqEUpkpq5nJ6UcWg1Jc1c8CVJf+QBqlydevWcsn\/iHxcz22B+Rf7bN9o0dQLNlDfY8GfJbibAKGKA197\/oRlZ0WFF5+rWOyV000nOVJRAPbFp0QpSvlfgrJSSpVDDPaNd0qcQidFKp3rN7HC9asmmYzwygSMX4SASaFWNuAZg1XSA6SwUGnmljAAfYu4DjQ5UkQYEZBIwrOmHLIs7BNDQk3p14vD4\/4gA3pBW1mgz8dktPlWm\/zSg1pM+QKfMwiuIe1Qn4yoTt+gg95UaN4y2IyjajT2Vj3vBpli+zLsnaYKcjh8rz0G7GnenNU4A+NM7hHAEEdG+2WsyRiej9dGoXLIHEwiNRVqfjHkrgP2FnZlPKhFAUVNWI2QAwsuliuLxuLgKJN8wvySwTuEBwl+wUarUZ7lCvQPc98f0qnn9JD2LDx2e6YOe4u11j6sQRJChsX6OzIJMPDv36K4MGEWTydVArgC0GJ8vG0fKsgCf4NuCOWfOFdw3nHZqzNxByU\/OvfbRDZgvg3m5413Kx9C\/5XxLwL\/GlxSUO754afz+hHwe\/r8Rfp6AO7cBhxAZI7CM1Cag0DkG5VPmwFpAjYxJiOTA5r603UgDgB7hYT1I2ic\/ONPxoT+8+d2vwsQw8b0D41pPB6B8W3dpG3P+IM1Ut\/pb8o788klBmrvD3biX9im9PfXNNlcoJ34mTctcc1fXIIk8o\/qRvBniheJ7czQviM4nkAHGPvzpNZd37rPebGOZO5eTuvTy6SbGzMGCmQ+LuozvzhievL6bjWJ3PfogI7P78f7i19R13glvqFMr+HIh9CY+MMCj95ssN\/Fn2jhW\/+SgXmbf4Lf7q3lxOwVT6Y3bvzlRvF2+zWKsW0yMMtem\/sFhJw9TVv7qx8\/7Oxm3QlyvTor1\/PB8aD1fWi6J\/0w1bmmtURqk1ag3K2caQNEOHp3\/6fbo2eH6VgvN31CM38P+08vPXfpDHvt8zcHRFbNmw5WZoPlhQpTH5IvvmyVQ\/\/jD868OPBj+UW2bzgokCejY+34VvAUBRtvoGpMJyF9lhzZKyUrqZIXSyStfZBR+tCQch+USW8HbtbZToZTz37ALGTdYkXxdm52woAREh0PQ2wRxrZ2CY7UWkYGoXiP9Ew9sZz2Gkeaetee0IiMtPC\/3wREmbGLOChh3e5JPDFJFNw1zKSoBPsGDxJLmp1HHmIzjyMPbGMvsKNJmCJyLtsmFWISGn3qga3wwzC4k70NpuUJbDPCsAocVYYyDP+nlNGzAoj9KAycl6i00PIFXysjDZiz2B9KGJgLQ2CvZVDb+EAEFhGA31xOYEtdGuViADl8EmWXYdT0Jfpr6xf11dXHQv5zuSegw21WOyIjjaLd3t3DMm2C6kFAI+OTnjOleJdWOsBWgH1f4oFkLswvkhFZdkVM03FVUE6hId0pH8xepENyWjMmRNx5+Bh1HbhshE3MP5UR45gxfhG5CL7wX2SI5wlmK32TABSwtBkHUxUy9UWhUCeWQB8BJDAwKHvEL4YxG4\/xOkyQwXpUzGFSAR2DE9cnYjUzhnCTq\/CXFp2XOTuNI\/i5zQsxvABSmfcpqqQ66IZ\/R30CZ\/ycEukjsTSweUWXyZ6YCljLtcdrxcK2UWBTg2pJVqh0vTFy9HUK72UA1yBui1IjOCltTDRS8uFqC+aHWIegrdeTqBxImCK\/dYzfZkVZRHB+43+kL1Gpi0MUBKTxgPBBlKgQmKT8Z2Kl+Sir38Q1mJM+jiPOpTNfUKfvD7GAyVZPUCkDGFN6NBnZfJdVy+JShf9MUA4xrDUwoMOuEZ2K\/CcpmWEIaCTQGM5Rj8U0Tthj\/iRFYbrP8w9Z+bLZAJUIeWsP4hCV9NCipGBjqoeQuGmU+O6E+SkXzjaTW07wbNg6uwcWMOl7d2jWUDUPA2Mn\/AV4MPP6Ibm95QeGKnsu\/1bBjRRNlQlCNZIZYOwcHLKmMz\/iW2kp6oX\/aNcuncn7MlLPnCn3mjJ5zOiBaJeLjQFscIFFwjuN5biU+JJEKJvLkgkG6\/I0r2UQD+oJ4sy\/qkQ\/SysQAc0JxZwiPgPLg1YNDmvhAOmw8Iz3cFgW4yEyqmOcCfQcCRRmm+kmlIyFEc+fFzFITMkHIPCQwEMiJozrIBIR73cyoJ697TtIKvF+KCC4MfMXDx\/b+4euzuN+YyUDBYzK+9YW3HyeGi1V0ZDH\/nCPeFCh7SdziEhb1b1RSYnmCFhiJfzp7UmUnvH8iJKArW4msJUAyIdQVAU4yr0p6SrbDcc8DANAEjTlqJEdZG02RRQGLK5y5Pknjzycs9TXDrqcGVHqosNKY8umxZaDaHG2IMHbC6buu\/rL1CesCzg534okAXrJoa\/cxHMaMEpbXYalnZyuZuC5wiaUB3Is0wxWmtC61L5IvOtesQxJFHrTFB3jQBVIDCYsIC5yRZVpiU2RO0HKwhhVVMnLZGHqOFXGjiJ4EY6bnBM0\/U\/XhQkwFLi9pqHFnrZgNjxCVYg7NPLcAVMYfTHXGwZViDxojozzizwGgADoei6TJ+Zf0IGKcWwDRux1AEf6QgzUsFz1rwggzDyZytjzkxu6GzI1XKjkG3IYHRZs2joOdoJSBqhJDnjoga2U9oMrfgubriJcI9V2aEC+LNFDkiEJhYuI43NMEgQGzywwqWojyYhkTCvqYiAebcqCrv0zMnEL+XL\/JgMG0TJiMghnu6FSQ+PqbhEdMsLcBkNg+Z7jLSfBqDDZchQaP61s0BQBQKvj1ugFK1JB1IbDLAS3k4LIg9usUsCHPGaWt+5aAC6O0asc9CarOXjl5hbEM41d\/lWRoQTKe9KQMSUXQiyzB1fx+XBDEvZOC2QEFtWebrxWABr1wPz41kham2epuhIwBI7HDMn3LtKhE1Jro1nWtZBBGuOLCCt9OqfdsK0WKy2D5pNe9GSha5FLKvHAM82oq1X53ck92SMXkmqg4Gr3cdiCNQHWps2m0s7hKWtLxjkkG1v5FBSNLizOUCp+ExjyjeisB3NFFBFBzNt1vxs8HIrFPccaShG2Nq5vTlwc+LfYHFGeiuqHkMKTnC7G8FRynfdzQEo0RNYpnJcsFPVrWRGB8nKifWwcYnP6VrW1+ziHaVNMQVH1I7JTUtBNNojl3DMsD4ZtrRgkiqul7CrQ1uEbkGC6hJDW1HxyOk+UjPgwXkT6TPsnMnerbVaDm2KecFGoRqI3kMKdozq6+VZ0HVi1fgbgnYoodOseijhO91ZH1TboqCYGjABstnOHNzJKjw9tGdxr0iS0DTwxAoQQ6VPBmm0sQpY7RFm8wPZGKej+ukqzdYyoce+2tgF7WiLiTw8K9IpWzf0pl2umb13OG6B714ynLuma4tacQAvIxR1O2TX6i7G0VxLPviVRcg0KMhzWkIk7QNU5sRqBmaSB0vQjuHSis6FbSdGJVesaOwlAJ3dZg7LtKOAYMu28Wqc5KB1nLpNTM9FXCyd0IFhbf9bs8qfFKSbDaEEPLFJpD+60Jn8cuKgihX+B6tbg3BiYHhadZy3NbnMozUmr7f22CVhatA2ZxcTUsShYOEIuyPWRQtdi5ayqORz5HF1C16NO55rgboChvYMQxRiBlr4b8uWU6YWnyp++w51f4o+dGzqORnhTs+1uRDyVBslITwCNJ3qIZmEYbWCPIr+nCUbo62CjGfVDdoDnAzDkPxNdrd571cjm6AAdzAB+JUyOwEq0sjywUWfBNtGNyQuOZqAnhdiz+qxTVY+qXtOU7T6SOXHyQewK4FinnJc5xIIMUNl6A9GWn6pQ0J1TmpiMSKVF1cStwv0UsaGor6S\/qDm9MkSY57hvEMjOyOTsvmzewdGjnOZLis1g7VqDfgl9ENRC96UIdL1Qq4J9iJ6XyaH3Ns7nhc3qvybh5JJC5vxz0b3O8xK9TY8vEldL+8WRBuyG3tSRGaf\/BBNqlWnTiafI6cVo8jgQCZqCipjQOgzRH9TaO\/wSRcUXr+ARRm2kIwEMkFZVC9nUfnSAOcPWo4AZ0dzcP+CQiwAaDW5YKExBEMYMGfhv1fXsej95BciqNHqeKq3zhFJb8rQDgJj5C3T\/Nbq\/kFqOPvBa+Wg\/InrjVSNdOyRNN4wWXG54aa1pkR+fF6qcCYFxghqJSjqK2bqHqKZkRIuGJDzO++gr9GJo6tjbFLpCtDzWJoZjaAnBjvTjWJIdbWN3h07GBN9UAe6H31wgePJV2\/yb6dZxyn8+LhroyMYP2yxWLw==`, + } + assert.Equal(t, excepted, snapshot) + } tests := []struct { name string f func(t *testing.T) @@ -423,6 +435,7 @@ func testCmdsServer(t *testing.T, c *Client) { {"clientlist", clientlist}, {"clientlistextended", clientlistextended}, {"clientdblist", clientdblist}, + {"serversnapshotcreate", serversnapshotcreate}, } for _, tc := range tests {