lmcadm 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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