lmcadm 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 745a5304645376df76004e6c5130341aba234243
4
- data.tar.gz: 9ace3654a56c6d756417317fc1a5ebcf07edb1eb
2
+ SHA256:
3
+ metadata.gz: 77cf9b8cd93328770c7b0c0972ccd1dc3883caba497eee0f97ed26bbe5976680
4
+ data.tar.gz: cd5023a45af514136f7d82162e07e9901016aebd01f1ccf9762dfb530e609ac9
5
5
  SHA512:
6
- metadata.gz: f350bbb06491ffc16d75be0e6e47987882f7c9fd1e3c8211f340c417bc1e04558fe778891f20738ac0f136a9236f455742317a33c27d501c164280f740a1061a
7
- data.tar.gz: 1bb9baf23b511dff5df7424b694fd080723face9035bcb2ebfb1853e484b75c8cb46e926bfe8514e3489f9b98fa38d8c636bd42687856c463f9f28a4bc00634d
6
+ metadata.gz: b29cf69f6ff585537667174b14164f3dfdad88016ef724242e4dcbc7876a22b75a17953d3860b50d36dc7a49295797127215fca6572bd7f1dda3920185190926
7
+ data.tar.gz: 5d0a07f656a6bb3c0c1dc7b9b410c340f2256294ac14fdece08cd417c4979b9742eb064dfefd48aaeef7b0604e7f0a935431fe396d7481321c74b4ba23b34fe3
@@ -0,0 +1,6 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="Rubocop" enabled="false" level="WARNING" enabled_by_default="false" />
5
+ </profile>
6
+ </component>
data/.idea/vcs.xml CHANGED
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
3
  <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
4
+ <mapping directory="" vcs="Git" />
5
5
  </component>
6
6
  </project>
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.7.1
@@ -0,0 +1,110 @@
1
+ require 'websocket-eventmachine-client'
2
+ require 'io/console'
3
+ require 'date'
4
+ module LMCAdm
5
+
6
+ class KeyboardHandler < EM::Connection
7
+ def receive_data(data)
8
+ if data == "\C-c"
9
+ EventMachine::stop_event_loop
10
+ end
11
+ LMCAdm::getWS.send '1' + data, type: 'binary'
12
+
13
+ end
14
+ #include EM::Protocols::LineText2
15
+
16
+ #def receive_line(data)
17
+ # LMCAdm::getWS.send '1' + data.strip + "\r", type: 'binary'
18
+ #end
19
+ end
20
+
21
+ def self.getWS
22
+ @ws
23
+ end
24
+
25
+ arg_name "device"
26
+ desc "Open terminal"
27
+ command :terminal do |t|
28
+ t.desc "Account name|UUID"
29
+ t.flag :account, :A, :required => true
30
+
31
+ t.action do |g, o, args|
32
+ account = LMC::Account.get_by_uuid_or_name o[:account]
33
+ device = account.devices.find { |d| d.name == args.first }
34
+ account.cloud.auth_for_account account
35
+ payload = {type: 'TERMINAL',
36
+ deviceIds: [device.id]}
37
+ sessionInfo = account.cloud.post ['cloud-service-devicetunnel', 'accounts', account.id, 'terminal'], payload
38
+
39
+
40
+ if g['use-tls']
41
+ url = 'wss://'
42
+ else
43
+ url = 'ws://'
44
+ end
45
+ url += g[:cloud_host]
46
+ url += '/cloud-service-devicetunnel/session'
47
+ headers_hash = {
48
+ 'Sec-WebSocket-Protocol' => "TYPE_TERMINAL, REQU_USER, IDEN_#{sessionInfo.body.first['id']}, ACCT_#{account.id}, DEVC_#{device.id}"
49
+ }
50
+ begin
51
+ EventMachine.epoll
52
+ EventMachine.run do
53
+ trap("TERM") { stop g[:debug]}
54
+ trap("INT") { stop g[:debug]}
55
+ IO.console.raw!
56
+ EventMachine.open_keyboard(LMCAdm::KeyboardHandler)
57
+ @ws = WebSocket::EventMachine::Client.connect({uri: url, headers: headers_hash})
58
+ closing = false
59
+
60
+ @ws.onopen do
61
+ puts "Connected"
62
+ end
63
+
64
+ @ws.onmessage do |msg, type|
65
+ print "##{msg.length}##{msg.inspect}#" if g[:debug]
66
+ if msg.start_with? "1"
67
+ print msg[1..-1].gsub("\n","\r\n")
68
+ else
69
+ print msg if g[:debug]
70
+ end
71
+ print DateTime.now.to_s if g[:debug]
72
+ if msg.include? "\n\nGoodbye\n\n"
73
+ stop g[:debug]
74
+ closing = true
75
+ end
76
+ end
77
+
78
+ @ws.onclose do
79
+ print DateTime.now.to_s if g[:debug]
80
+ print "Disconnected\r\n"
81
+ stop g[:debug] unless closing
82
+ end
83
+
84
+ @ws.onerror do |e|
85
+ puts "Error: #{e}"
86
+ end
87
+
88
+ @ws.onping do |msg|
89
+ puts "Received ping: #{msg}" if g[:verbose]
90
+ end
91
+
92
+ @ws.onpong do |msg|
93
+ puts "Received pong: #{msg}" if g[:verbose]
94
+ end
95
+
96
+ def stop(debug=false)
97
+ print DateTime.now.to_s if debug
98
+ print "Terminating connection\r\n"
99
+ EventMachine.stop
100
+ end
101
+ end
102
+ ensure
103
+ IO.console.cooked!
104
+ end
105
+ # disabled, getting 401 anyways
106
+ #account.cloud.auth_for_account account
107
+ #account.cloud.delete ['cloud-service-devicetunnel', 'accounts', account.id, "terminal?ids=#{sessionInfo.body.first['id']}"]
108
+ end
109
+ end
110
+ end
@@ -1,3 +1,3 @@
1
1
  module LMCAdm
2
- VERSION = '0.11.0'
2
+ VERSION = '0.12.0'
3
3
  end
data/lmcadm.gemspec CHANGED
@@ -24,8 +24,9 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "minitest", "~> 5.0"
25
25
  spec.add_development_dependency "pry-nav", "0.2.4"
26
26
 
27
- spec.add_runtime_dependency 'lmc', '~> 0.10.1'
27
+ spec.add_runtime_dependency 'lmc', '~> 0.11.0'
28
28
  spec.add_runtime_dependency 'gli', '~> 2.17'
29
29
  spec.add_runtime_dependency 'table_print', '~> 1.5'
30
30
  spec.add_runtime_dependency 'colorize', '~> 0.8'
31
+ spec.add_runtime_dependency 'websocket-eventmachine-client', '~> 1.3.0'
31
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lmcadm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - erpel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-10 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.10.1
75
+ version: 0.11.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.10.1
82
+ version: 0.11.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: gli
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0.8'
125
+ - !ruby/object:Gem::Dependency
126
+ name: websocket-eventmachine-client
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 1.3.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.3.0
125
139
  description:
126
140
  email:
127
141
  - philipp@copythat.de
@@ -132,6 +146,7 @@ extra_rdoc_files: []
132
146
  files:
133
147
  - ".gitignore"
134
148
  - ".idea/encodings.xml"
149
+ - ".idea/inspectionProfiles/Project_Default.xml"
135
150
  - ".idea/vcs.xml"
136
151
  - ".ruby-version"
137
152
  - Gemfile
@@ -155,6 +170,7 @@ files:
155
170
  - lib/lmcadm/commands/principal.rb
156
171
  - lib/lmcadm/commands/privatecloud.rb
157
172
  - lib/lmcadm/commands/rights.rb
173
+ - lib/lmcadm/commands/terminal.rb
158
174
  - lib/lmcadm/config_commands.rb
159
175
  - lib/lmcadm/device_commands.rb
160
176
  - lib/lmcadm/helpers/password_helper.rb
@@ -181,8 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
197
  - !ruby/object:Gem::Version
182
198
  version: '0'
183
199
  requirements: []
184
- rubyforge_project:
185
- rubygems_version: 2.6.11
200
+ rubygems_version: 3.1.2
186
201
  signing_key:
187
202
  specification_version: 4
188
203
  summary: lmcadm is a command line client for LMC