mirror of https://gogs.blitter.com/RLabs/xs
				
				
				
			Fixed login timeout term handling/restoreState * NOTE breaking change to exit codes
Also some value => ref fixes for Conn receiver methods Signed-off-by: Russ Magee <rmagee@gmail.com>
This commit is contained in:
		
							parent
							
								
									769df46fb1
								
							
						
					
					
						commit
						69a3fb5d08
					
				
							
								
								
									
										10
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										10
									
								
								go.mod
								
								
								
								
							| 
						 | 
					@ -11,17 +11,17 @@ require (
 | 
				
			||||||
	blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae
 | 
						blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae
 | 
				
			||||||
	github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da
 | 
						github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da
 | 
				
			||||||
	github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f
 | 
						github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f
 | 
				
			||||||
	github.com/klauspost/cpuid v1.2.3 // indirect
 | 
						github.com/klauspost/reedsolomon v1.9.9 // indirect
 | 
				
			||||||
	github.com/klauspost/reedsolomon v1.9.4 // indirect
 | 
					 | 
				
			||||||
	github.com/kr/pty v1.1.8
 | 
						github.com/kr/pty v1.1.8
 | 
				
			||||||
	github.com/mattn/go-isatty v0.0.12
 | 
						github.com/mattn/go-isatty v0.0.12
 | 
				
			||||||
 | 
						github.com/mmcloughlin/avo v0.0.0-20200523190732-4439b6b2c061 // indirect
 | 
				
			||||||
	github.com/pkg/errors v0.9.1 // indirect
 | 
						github.com/pkg/errors v0.9.1 // indirect
 | 
				
			||||||
	github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect
 | 
						github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect
 | 
				
			||||||
	github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b // indirect
 | 
						github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b // indirect
 | 
				
			||||||
	github.com/tjfoc/gmsm v1.3.0 // indirect
 | 
						github.com/tjfoc/gmsm v1.3.1 // indirect
 | 
				
			||||||
	github.com/xtaci/kcp-go v5.4.20+incompatible
 | 
						github.com/xtaci/kcp-go v5.4.20+incompatible
 | 
				
			||||||
	golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5
 | 
						golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37
 | 
				
			||||||
	golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f
 | 
						golang.org/x/sys v0.0.0-20200523222454-059865788121
 | 
				
			||||||
	gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect
 | 
						gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect
 | 
				
			||||||
	gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect
 | 
						gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect
 | 
				
			||||||
	gopkg.in/hlandau/passlib.v1 v1.0.10
 | 
						gopkg.in/hlandau/passlib.v1 v1.0.10
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										29
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										29
									
								
								go.sum
								
								
								
								
							| 
						 | 
					@ -25,12 +25,18 @@ github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0
 | 
				
			||||||
github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s=
 | 
					github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s=
 | 
				
			||||||
github.com/klauspost/cpuid v1.2.3 h1:CCtW0xUnWGVINKvE/WWOYKdsPV6mawAtvQuSl8guwQs=
 | 
					github.com/klauspost/cpuid v1.2.3 h1:CCtW0xUnWGVINKvE/WWOYKdsPV6mawAtvQuSl8guwQs=
 | 
				
			||||||
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
 | 
					github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
 | 
				
			||||||
 | 
					github.com/klauspost/cpuid v1.2.4 h1:EBfaK0SWSwk+fgk6efYFWdzl8MwRWoOO1gkmiaTXPW4=
 | 
				
			||||||
 | 
					github.com/klauspost/cpuid v1.2.4/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
 | 
				
			||||||
github.com/klauspost/reedsolomon v1.9.4 h1:FB9jDBGqUNyhUg4Gszz384ulFqVSc61Pdap+HRPgnSo=
 | 
					github.com/klauspost/reedsolomon v1.9.4 h1:FB9jDBGqUNyhUg4Gszz384ulFqVSc61Pdap+HRPgnSo=
 | 
				
			||||||
github.com/klauspost/reedsolomon v1.9.4/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4=
 | 
					github.com/klauspost/reedsolomon v1.9.4/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4=
 | 
				
			||||||
 | 
					github.com/klauspost/reedsolomon v1.9.9 h1:qCL7LZlv17xMixl55nq2/Oa1Y86nfO8EqDfv2GHND54=
 | 
				
			||||||
 | 
					github.com/klauspost/reedsolomon v1.9.9/go.mod h1:O7yFFHiQwDR6b2t63KPUpccPtNdp5ADgh1gg4fd12wo=
 | 
				
			||||||
github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=
 | 
					github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=
 | 
				
			||||||
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
 | 
					github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 | 
					github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 | 
				
			||||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
 | 
					github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
 | 
				
			||||||
 | 
					github.com/mmcloughlin/avo v0.0.0-20200523190732-4439b6b2c061 h1:UCU8+cLbbvyxi0sQ9fSeoEhZgvrrD9HKMtX6Gmc1vk8=
 | 
				
			||||||
 | 
					github.com/mmcloughlin/avo v0.0.0-20200523190732-4439b6b2c061/go.mod h1:wqKykBG2QzQDJEzvRkcS8x6MiSJkF52hXZsXcjaB3ls=
 | 
				
			||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
					github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 | 
				
			||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
					github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 | 
				
			||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
					github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 | 
				
			||||||
| 
						 | 
					@ -42,24 +48,46 @@ github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b h1:fj5tQ8acgNUr6O8LE
 | 
				
			||||||
github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4=
 | 
					github.com/templexxx/xor v0.0.0-20191217153810-f85b25db303b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4=
 | 
				
			||||||
github.com/tjfoc/gmsm v1.3.0 h1:i7c6Za/IlgBvnGxYpfD7L3TGuaS+v6oGcgq+J9/ecEA=
 | 
					github.com/tjfoc/gmsm v1.3.0 h1:i7c6Za/IlgBvnGxYpfD7L3TGuaS+v6oGcgq+J9/ecEA=
 | 
				
			||||||
github.com/tjfoc/gmsm v1.3.0/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
 | 
					github.com/tjfoc/gmsm v1.3.0/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
 | 
				
			||||||
 | 
					github.com/tjfoc/gmsm v1.3.1 h1:+k3IAlF81c31/TllJmIfuCYnjl8ziMdTWGWJcP9J1uo=
 | 
				
			||||||
 | 
					github.com/tjfoc/gmsm v1.3.1/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
 | 
				
			||||||
github.com/xtaci/kcp-go v1.0.1 h1:SEZn2Iick6ualQpV8yY9cXdDTgbfBHPIwJl7UvxfxLQ=
 | 
					github.com/xtaci/kcp-go v1.0.1 h1:SEZn2Iick6ualQpV8yY9cXdDTgbfBHPIwJl7UvxfxLQ=
 | 
				
			||||||
github.com/xtaci/kcp-go v5.4.20+incompatible h1:TN1uey3Raw0sTz0Fg8GkfM0uH3YwzhnZWQ1bABv5xAg=
 | 
					github.com/xtaci/kcp-go v5.4.20+incompatible h1:TN1uey3Raw0sTz0Fg8GkfM0uH3YwzhnZWQ1bABv5xAg=
 | 
				
			||||||
github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE=
 | 
					github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE=
 | 
				
			||||||
 | 
					github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 | 
				
			||||||
 | 
					golang.org/x/arch v0.0.0-20190909030613-46d78d1859ac/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
					golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5 h1:Q7tZBpemrlsc2I7IyODzhtallWRSm4Q0d09pL6XbQtU=
 | 
					golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5 h1:Q7tZBpemrlsc2I7IyODzhtallWRSm4Q0d09pL6XbQtU=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
					golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 | 
				
			||||||
 | 
					golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ=
 | 
					golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
					golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200226121028-0de0cce0169b h1:0mm1VjtFUOIlE1SbDlwjYaDxZVDP2S5ou6y0gSgXHu8=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f h1:gWF768j/LaZugp8dyS4UwsslYCYz9XgFxvlgsn0n9H8=
 | 
					golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f h1:gWF768j/LaZugp8dyS4UwsslYCYz9XgFxvlgsn0n9H8=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
					golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20200425043458-8463f397d07c h1:iHhCR0b26amDCiiO+kBguKZom9aMF+NrFxh9zeKR/XU=
 | 
				
			||||||
 | 
					golang.org/x/tools v0.0.0-20200425043458-8463f397d07c/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
 | 
				
			||||||
 | 
					golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
gopkg.in/hlandau/easymetric.v1 v1.0.0 h1:ZbfbH7W3giuVDjWUoFhDOjjv20hiPr5HZ2yMV5f9IeE=
 | 
					gopkg.in/hlandau/easymetric.v1 v1.0.0 h1:ZbfbH7W3giuVDjWUoFhDOjjv20hiPr5HZ2yMV5f9IeE=
 | 
				
			||||||
gopkg.in/hlandau/easymetric.v1 v1.0.0/go.mod h1:yh75hypuFzAxmvECh3ZKGCvFnIfapYJh2wv7ASaX2RE=
 | 
					gopkg.in/hlandau/easymetric.v1 v1.0.0/go.mod h1:yh75hypuFzAxmvECh3ZKGCvFnIfapYJh2wv7ASaX2RE=
 | 
				
			||||||
| 
						 | 
					@ -68,3 +96,4 @@ gopkg.in/hlandau/measurable.v1 v1.0.1/go.mod h1:6N+SYJGMTmetsx7wskULP+juuO+++tsH
 | 
				
			||||||
gopkg.in/hlandau/passlib.v1 v1.0.10 h1:q5xh9ZHp907XTjVw8/EqG03//fnlITnIYQmv4Gn7TpE=
 | 
					gopkg.in/hlandau/passlib.v1 v1.0.10 h1:q5xh9ZHp907XTjVw8/EqG03//fnlITnIYQmv4Gn7TpE=
 | 
				
			||||||
gopkg.in/hlandau/passlib.v1 v1.0.10/go.mod h1:wxGAv2CtQHlzWY8NJp+p045yl4WHyX7v2T6XbOcmqjM=
 | 
					gopkg.in/hlandau/passlib.v1 v1.0.10/go.mod h1:wxGAv2CtQHlzWY8NJp+p045yl4WHyX7v2T6XbOcmqjM=
 | 
				
			||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
					gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 | 
				
			||||||
 | 
					rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@ type State struct {
 | 
				
			||||||
// MakeRaw put the terminal connected to the given file descriptor into raw
 | 
					// MakeRaw put the terminal connected to the given file descriptor into raw
 | 
				
			||||||
// mode and returns the previous state of the terminal so that it can be
 | 
					// mode and returns the previous state of the terminal so that it can be
 | 
				
			||||||
// restored.
 | 
					// restored.
 | 
				
			||||||
func MakeRaw(fd int) (*State, error) {
 | 
					func MakeRaw(fd uintptr) (*State, error) {
 | 
				
			||||||
	// This doesn't really work. The exec.Command() runs a sub-shell
 | 
						// This doesn't really work. The exec.Command() runs a sub-shell
 | 
				
			||||||
	// so the stty mods don't affect the client process.
 | 
						// so the stty mods don't affect the client process.
 | 
				
			||||||
	cmd := exec.Command("stty", "-echo raw")
 | 
						cmd := exec.Command("stty", "-echo raw")
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ func GetState(fd int) (*State, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Restore restores the terminal connected to the given file descriptor to a
 | 
					// Restore restores the terminal connected to the given file descriptor to a
 | 
				
			||||||
// previous state.
 | 
					// previous state.
 | 
				
			||||||
func Restore(fd int, state *State) error {
 | 
					func Restore(fd uintptr, state *State) error {
 | 
				
			||||||
	cmd := exec.Command("stty", "echo cooked")
 | 
						cmd := exec.Command("stty", "echo cooked")
 | 
				
			||||||
	cmd.Run()
 | 
						cmd.Run()
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
| 
						 | 
					@ -52,7 +52,7 @@ func Restore(fd int, state *State) error {
 | 
				
			||||||
// ReadPassword reads a line of input from a terminal without local echo.  This
 | 
					// ReadPassword reads a line of input from a terminal without local echo.  This
 | 
				
			||||||
// is commonly used for inputting passwords and other sensitive data. The slice
 | 
					// is commonly used for inputting passwords and other sensitive data. The slice
 | 
				
			||||||
// returned does not include the \n.
 | 
					// returned does not include the \n.
 | 
				
			||||||
func ReadPassword(fd int) ([]byte, error) {
 | 
					func ReadPassword(fd uintptr) ([]byte, error) {
 | 
				
			||||||
	return readPasswordLine(passwordReader(fd))
 | 
						return readPasswordLine(passwordReader(fd))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								xs/xs.go
								
								
								
								
							
							
						
						
									
										14
									
								
								xs/xs.go
								
								
								
								
							| 
						 | 
					@ -256,7 +256,7 @@ func buildCmdRemoteToLocal(copyQuiet bool, copyLimitBPS uint, destPath, files st
 | 
				
			||||||
		cmd = xs.GetTool("tar")
 | 
							cmd = xs.GetTool("tar")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		args = []string{"-xz", "-C", destPath}
 | 
							args = []string{"-xz", "-C", destPath}
 | 
				
			||||||
} else {
 | 
						} else {
 | 
				
			||||||
		// TODO: Query remote side for total file/dir size
 | 
							// TODO: Query remote side for total file/dir size
 | 
				
			||||||
		bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d ", copyLimitBPS)
 | 
							bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d ", copyLimitBPS)
 | 
				
			||||||
		displayOpts := " -pre "
 | 
							displayOpts := " -pre "
 | 
				
			||||||
| 
						 | 
					@ -309,7 +309,7 @@ func buildCmdLocalToRemote(copyQuiet bool, copyLimitBPS uint, files string) (cap
 | 
				
			||||||
		bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d", copyLimitBPS)
 | 
							bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d", copyLimitBPS)
 | 
				
			||||||
		displayOpts := " -pre "
 | 
							displayOpts := " -pre "
 | 
				
			||||||
		cmd = xs.GetTool("bash")
 | 
							cmd = xs.GetTool("bash")
 | 
				
			||||||
		args = []string{"-c", xs.GetTool("tar")+" -cz -f /dev/stdout "}
 | 
							args = []string{"-c", xs.GetTool("tar") + " -cz -f /dev/stdout "}
 | 
				
			||||||
		files = strings.TrimSpace(files)
 | 
							files = strings.TrimSpace(files)
 | 
				
			||||||
		// Awesome fact: tar actually can take multiple -C args, and
 | 
							// Awesome fact: tar actually can take multiple -C args, and
 | 
				
			||||||
		// changes to the dest dir *as it sees each one*. This enables
 | 
							// changes to the dest dir *as it sees each one*. This enables
 | 
				
			||||||
| 
						 | 
					@ -939,8 +939,13 @@ func main() {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Start login timeout here and disconnect if user/pass phase stalls
 | 
						// Start login timeout here and disconnect if user/pass phase stalls
 | 
				
			||||||
 | 
						//iloginImpatience := time.AfterFunc(20*time.Second, func() {
 | 
				
			||||||
 | 
						//i	fmt.Printf(" .. [you still there? Waiting for a password.]")
 | 
				
			||||||
 | 
						//i})
 | 
				
			||||||
	loginTimeout := time.AfterFunc(30*time.Second, func() {
 | 
						loginTimeout := time.AfterFunc(30*time.Second, func() {
 | 
				
			||||||
		fmt.Printf(" .. [login timeout]")
 | 
							restoreTermState(oldState)
 | 
				
			||||||
 | 
							fmt.Printf(" .. [login timeout]\n")
 | 
				
			||||||
 | 
							exitWithStatus(xsnet.CSOLoginTimeout)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(authCookie) == 0 {
 | 
						if len(authCookie) == 0 {
 | 
				
			||||||
| 
						 | 
					@ -953,7 +958,8 @@ func main() {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		authCookie = string(ab)
 | 
							authCookie = string(ab)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						//i_ = loginImpatience.Stop()
 | 
				
			||||||
	_ = loginTimeout.Stop()
 | 
						_ = loginTimeout.Stop()
 | 
				
			||||||
	// Security scrub
 | 
						// Security scrub
 | 
				
			||||||
	runtime.GC()
 | 
						runtime.GC()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ func expandKeyMat(keymat []byte, blocksize int) []byte {
 | 
				
			||||||
/* Support functionality to set up encryption after a channel has
 | 
					/* Support functionality to set up encryption after a channel has
 | 
				
			||||||
been negotiated via xsnet.go
 | 
					been negotiated via xsnet.go
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err error) {
 | 
					func (hc *Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err error) {
 | 
				
			||||||
	var key []byte
 | 
						var key []byte
 | 
				
			||||||
	var block cipher.Block
 | 
						var block cipher.Block
 | 
				
			||||||
	var iv []byte
 | 
						var iv []byte
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,9 +62,12 @@ const (
 | 
				
			||||||
	CSOTermSize           // set term size (rows:cols)
 | 
						CSOTermSize           // set term size (rows:cols)
 | 
				
			||||||
	CSOExitStatus         // Remote cmd exit status
 | 
						CSOExitStatus         // Remote cmd exit status
 | 
				
			||||||
	CSOChaff              // Dummy packet, do not pass beyond decryption
 | 
						CSOChaff              // Dummy packet, do not pass beyond decryption
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						// Client side errors
 | 
				
			||||||
 | 
						CSOLoginTimeout = 16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Tunnel setup/control/status
 | 
						// Tunnel setup/control/status
 | 
				
			||||||
	CSOTunSetup     // client -> server tunnel setup request (dstport)
 | 
						CSOTunSetup = 32     // client -> server tunnel setup request (dstport)
 | 
				
			||||||
	CSOTunSetupAck  // server -> client tunnel setup ack
 | 
						CSOTunSetupAck  // server -> client tunnel setup ack
 | 
				
			||||||
	CSOTunRefused   // server -> client: tunnel rport connection refused
 | 
						CSOTunRefused   // server -> client: tunnel rport connection refused
 | 
				
			||||||
	CSOTunData      // packet contains tunnel data [rport:data]
 | 
						CSOTunData      // packet contains tunnel data [rport:data]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ func getKCPalgnum(extensions []string) (k KCPAlg) {
 | 
				
			||||||
		switch s {
 | 
							switch s {
 | 
				
			||||||
		case "KCP_NONE":
 | 
							case "KCP_NONE":
 | 
				
			||||||
			k = KCP_NONE
 | 
								k = KCP_NONE
 | 
				
			||||||
			break //out of for
 | 
								break //golint:ignore SA4011 out of for
 | 
				
			||||||
		case "KCP_AES":
 | 
							case "KCP_AES":
 | 
				
			||||||
			k = KCP_AES
 | 
								k = KCP_AES
 | 
				
			||||||
			break //out of for
 | 
								break //out of for
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -191,11 +191,11 @@ func (hc *Conn) Unlock() {
 | 
				
			||||||
	hc.m.Unlock()
 | 
						hc.m.Unlock()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (hc Conn) KEX() KEXAlg {
 | 
					func (hc *Conn) KEX() KEXAlg {
 | 
				
			||||||
	return hc.kex
 | 
						return hc.kex
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (hc Conn) GetStatus() CSOType {
 | 
					func (hc *Conn) GetStatus() CSOType {
 | 
				
			||||||
	return *hc.closeStat
 | 
						return *hc.closeStat
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -209,7 +209,7 @@ func (hc *Conn) SetStatus(stat CSOType) {
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// (Used for protocol-level negotiations after KEx such as
 | 
					// (Used for protocol-level negotiations after KEx such as
 | 
				
			||||||
// cipher/HMAC algorithm options etc.)
 | 
					// cipher/HMAC algorithm options etc.)
 | 
				
			||||||
func (hc Conn) ConnOpts() uint32 {
 | 
					func (hc *Conn) ConnOpts() uint32 {
 | 
				
			||||||
	return hc.cipheropts
 | 
						return hc.cipheropts
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue