lmcadm 0.13.0 → 0.16.2

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
2
  SHA256:
3
- metadata.gz: e4ec85a8b1a7d9fe63c2f27ec1016310c0e029f878ab430063cdf8305d84b56e
4
- data.tar.gz: 4538b2bb9b9c212e3e58cf13badc5720b7480622eb3b02006c60e8c5a61d5f65
3
+ metadata.gz: 63b0185b4a3704220282ed6b280a11aa6c0f49dff2c55a338cfbbbde6c293907
4
+ data.tar.gz: ccf161a096edf045d834ee2499a969ce9558b72865b36c121451fc7750828164
5
5
  SHA512:
6
- metadata.gz: 81cf76346a7cb4e017f0db92ba785a3805b348bfb9d041d28361a63ba7dffd87a8363c9cc4c937b9e1f62b514780b81227c4e5b2a61f99ed8c2658f66013b77e
7
- data.tar.gz: b361f098338b6827a2ef76ba3d3680afade12ea06c8dcb00d3f04f5b86dff10110a59288517b0a829f3859fb4bd8a8b8654ab6bcc316af566e1d67b92e96514f
6
+ metadata.gz: 56509284ac20bcca673af8f859ed899b0326e47df49a474360e8ade103ee9301286a7384cd62658f9d0179490d194593162395c7aa22ad894aad2ea8c1efe413
7
+ data.tar.gz: ae3da55d02222591973f88ef6113bc788281b7bd93d280137d4fbe177499704c3cbff7b38457e6dcdab48ef31e10bbcd70b0902061f4b267f41036de6e492467
@@ -0,0 +1,30 @@
1
+ name: build-win
2
+ on:
3
+ push:
4
+ tags:
5
+ - 'v*.*.*'
6
+ jobs:
7
+ build:
8
+ runs-on: windows-latest
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - uses: ruby/setup-ruby@v1
12
+ - run: gem install eventmachine --platform ruby
13
+ - run: gem install ocra lmcadm
14
+ - run: ruby makeocragemfile.rb
15
+ - run: ocra --gemfile ocra_gemfile --gem-full exe/lmcadm
16
+ - name: Setup tmate session
17
+ uses: mxschmitt/action-tmate@v3
18
+ if: false
19
+ - run: ./lmcadm.exe --version
20
+ - uses: papeloto/action-zip@v1
21
+ with:
22
+ files: lmcadm.exe LICENSE.txt
23
+ dest: ${{ github.event.release.tag_name }}-win.zip
24
+ - name: Release
25
+ uses: softprops/action-gh-release@v1
26
+ with:
27
+ files: ${{ github.event.release.tag_name }}-win.zip
28
+ env:
29
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
30
+
@@ -0,0 +1,45 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ build:
11
+ name: Build + Publish
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read
15
+ packages: write
16
+
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - name: Set up Ruby 2.6
20
+ uses: actions/setup-ruby@v1
21
+ with:
22
+ ruby-version: 2.6.x
23
+
24
+ - name: Publish to GPR
25
+ run: |
26
+ mkdir -p $HOME/.gem
27
+ touch $HOME/.gem/credentials
28
+ chmod 0600 $HOME/.gem/credentials
29
+ printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
30
+ gem build *.gemspec
31
+ gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
32
+ env:
33
+ GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
34
+ OWNER: ${{ github.repository_owner }}
35
+
36
+ - name: Publish to RubyGems
37
+ run: |
38
+ mkdir -p $HOME/.gem
39
+ touch $HOME/.gem/credentials
40
+ chmod 0600 $HOME/.gem/credentials
41
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
42
+ gem build *.gemspec
43
+ gem push *.gem
44
+ env:
45
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
data/.gitignore CHANGED
@@ -15,3 +15,5 @@
15
15
  /.idea/modules.xml
16
16
  /Gemfile.lock
17
17
  /lmcadm-*.gem
18
+ ocra_gemfile
19
+ lmcadm*.exe
data/README.md CHANGED
@@ -8,6 +8,26 @@ Install via rubygems:
8
8
 
9
9
  $ gem install lmcadm
10
10
 
11
+ ### Requirements
12
+ Building native extensions for certain dependencies require ruby headers or source code to be present.
13
+ These can usually be installed the same way ruby was installed.
14
+
15
+ On Ubuntu for example, installing the `ruby-dev` via the package manager is sufficient.
16
+
17
+ ### Windows
18
+
19
+ Lmcadm works with https://rubyinstaller.org/downloads/, use the recommended version with Devkit and choose the default options during install.
20
+ Installation can continue with rubygems.
21
+
22
+ #### Known issues
23
+
24
+ *Unable to load the EventMachine C extension ; To use the pure-ruby reactor, require 'em/pure_ruby'*
25
+
26
+ Workaround: Reinstall eventmachine with --platform ruby.
27
+
28
+ gem uninstall eventmachine (select all versions if prompted)
29
+ gem install eventmachine --platform ruby
30
+
11
31
  ## Usage
12
32
 
13
33
  The primary usage documentation is in the help output of lmcadm:
@@ -26,6 +46,11 @@ Set the environment variable LMCADM\_PATH\_DEP to 1 to use the _lmc_ gem from ..
26
46
  Example:
27
47
  $ LMCADM_PATH_DEP=1 bundle exec lmcadm --version
28
48
 
49
+ ### Building an exe for windows using ocra
50
+
51
+ * Apply workaround reinstalling eventmachine (see above)
52
+ * run ocra.sh
53
+
29
54
  ## Contributing
30
55
 
31
56
  Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/lmcadm.
data/dev_lmcadm ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ #wrapper script
3
+ #set -x
4
+ LMCADM_PATH_DEP=1 GLI_DEBUG=false bundle exec exe/lmcadm "$@"
data/exe/lmcadm CHANGED
@@ -25,7 +25,7 @@ module LMCAdm
25
25
  commands_from "lmcadm/commands"
26
26
 
27
27
  desc 'Be verbose'
28
- switch [:v, :verbose]
28
+ switch :verbose, :v
29
29
 
30
30
  desc 'debug'
31
31
  switch [:debug]
@@ -33,9 +33,9 @@ module LMCAdm
33
33
  desc 'Measure time taken for operations'
34
34
  switch "take-time"
35
35
 
36
- desc 'cloud host'
36
+ desc 'LMC host, may include a port number'
37
37
  default_value "cloud.lancom.de"
38
- flag :C, :cloud_host
38
+ flag :cloud_host, :C
39
39
 
40
40
  desc 'Use encrypted connection'
41
41
  default_value true
@@ -46,13 +46,16 @@ module LMCAdm
46
46
  switch "verify-tls"
47
47
 
48
48
  desc 'username'
49
- default_value "admin"
50
- flag :U, :user
49
+ default_value ""
50
+ flag :user, :U
51
51
 
52
52
  desc 'password'
53
53
  default_value ""
54
- flag [:P, :password], :mask => true
54
+ flag [:password, :P], :mask => true
55
55
 
56
+ desc 'Use 2FA code'
57
+ default_value false
58
+ switch [:code, 'F']
56
59
 
57
60
  pre do |global, command, options, args|
58
61
  # Pre logic here
@@ -60,17 +63,31 @@ module LMCAdm
60
63
  # chosen command
61
64
  # Use skips_pre before a command to skip this block
62
65
  # on that command only
63
- if command.name != :completion && global[:password] == ""
64
- global[:password] = Helpers::read_pw "Enter password for #{global[:user]}:"
66
+ if command.name != :completion
67
+ if global[:user] == ""
68
+ print "Enter user:"
69
+ global[:user] = STDIN.gets.chomp
70
+ end
71
+ if global[:password] == ""
72
+ global[:password] = Helpers::read_pw "Enter password for #{global[:user]}:"
73
+ end
74
+ twofactor_code = nil
75
+ if global[:code]
76
+ twofactor_code = Helpers::read_pw "Enter 2FA code:"
77
+ end
65
78
  end
66
79
  ::LMC::Cloud.cloud_host = global[:cloud_host]
67
80
  ::LMC::Cloud.user = global[:user]
68
81
  ::LMC::Cloud.password = global[:password]
82
+ ::LMC::Cloud.code = twofactor_code
69
83
  ::LMC::Cloud.verbose = global[:verbose]
70
84
  ::LMC::Cloud.debug = global[:debug]
71
85
  ::LMC::Cloud.verify_tls = global["verify-tls"]
72
86
  ::LMC::Cloud.use_tls = global["use-tls"]
73
87
  LMCAdm::ProgressVisualizer.take_time = global["take-time"]
88
+ # let table_print print wide columns
89
+ tp.set :max_width, 50
90
+
74
91
  true
75
92
  end
76
93
 
@@ -92,5 +109,8 @@ module LMCAdm
92
109
  true
93
110
  end
94
111
 
112
+ if Encoding.find('locale') != 'UTF-8'
113
+ STDIN.set_encoding(Encoding.find('locale'),'UTF-8')
114
+ end
95
115
  exit run(ARGV)
96
116
  end
@@ -16,7 +16,7 @@ module LMCAdm
16
16
  account_list.switch :l, :long
17
17
  account_list.action do |global_options, options, args|
18
18
  t = ProgressVisualizer.new "Cloud login"
19
- lmcen = LMC::Cloud.new(global_options[:cloud_host], global_options[:user], global_options[:password])
19
+ lmcen = LMC::Cloud.instance
20
20
  t.done
21
21
  t = ProgressVisualizer.new "Getting accounts"
22
22
  accounts = lmcen.get_accounts_objects
@@ -26,12 +26,12 @@ module LMCAdm
26
26
  a["type"] == options[:account_type]
27
27
  end
28
28
  end
29
- accounts.sort {|a, b| a["name"] <=> b["name"]}.each do |account|
29
+ accounts.sort { |a, b| a["name"] <=> b["name"] }.each do |account|
30
30
  puts account.inspect if global_options[:v]
31
31
  if options[:l]
32
- puts account["name"] + " (" + account["type"] + ") ID: " + account["id"]
32
+ puts account.summary
33
33
  else
34
- puts account["name"] + " (" + account["type"] + ")"
34
+ puts "\"#{account}\" (#{account["type"]})"
35
35
  end
36
36
  end
37
37
  puts accounts.length.to_s + " Accounts found"
@@ -82,9 +82,9 @@ module LMCAdm
82
82
  account_create.action do |global_options, options, args|
83
83
  parent = LMC::Account.get_by_uuid_or_name options[:p]
84
84
  t = ProgressVisualizer.new "Creating object"
85
- a = LMC::Account.new(LMC::Cloud.instance, {"name" => args.first,
86
- "type" => options[GLI::Command::PARENT][:account_type],
87
- "parent" => parent.id})
85
+ a = LMC::Account.new(LMC::Cloud.instance, { "name" => args.first,
86
+ "type" => options[GLI::Command::PARENT][:account_type],
87
+ "parent" => parent.id })
88
88
  t.done
89
89
  t = ProgressVisualizer.new "Saving #{a.name}"
90
90
  result = a.save
@@ -106,13 +106,13 @@ module LMCAdm
106
106
  t = ProgressVisualizer.new "Getting accounts"
107
107
  if options[:e]
108
108
  accounts = LMC::Cloud.instance.get_accounts_objects
109
- matched_accounts = accounts.select {|account| /#{args.first}/.match(account.name)}
109
+ matched_accounts = accounts.select { |account| /#{args.first}/.match(account.name) }
110
110
  else
111
111
  matched_accounts = [LMC::Account.get_by_uuid_or_name(args.first)]
112
112
  end
113
113
  t.done
114
114
  puts 'Accounts to delete:'
115
- puts matched_accounts.map {|a| "#{a.id} - #{a.name}"}.join("\n")
115
+ puts matched_accounts.map { |a| "#{a.id} - #{a.name}" }.join("\n")
116
116
  print('Type yes to confirm: ')
117
117
  exit unless STDIN.gets.chomp == 'yes'
118
118
  t = ProgressVisualizer.new "Deleting accounts"
@@ -159,12 +159,12 @@ module LMCAdm
159
159
  memberlist.action do |global_options, options, args|
160
160
  account = LMC::Account.get_by_uuid_or_name args.first
161
161
  members = account.members
162
- tp members, [{:id => {:width => 36}}, :name, :type, :state, :invitationState, :principalState,
163
- :authorities => {:display_method => lambda {|m|
164
- m.authorities.map {|a|
162
+ tp members, [{ :id => { :width => 36 } }, :name, :type, :state, :invitationState, :principalState,
163
+ :authorities => { :display_method => lambda { |m|
164
+ m.authorities.map { |a|
165
165
  a['name']
166
166
  }.join(',')
167
- }, :width => 128}]
167
+ }, :width => 128 }]
168
168
  end
169
169
  end
170
170
 
@@ -174,8 +174,8 @@ module LMCAdm
174
174
  auth.action do |_g, _o, args|
175
175
  account = LMC::Account.get_by_uuid_or_name args.first
176
176
  authorities = account.authorities
177
- max = Helpers::longest_in_collection(authorities.map {|a| a.name})
178
- tp authorities, [{:id => {:width => 36}}, {:name => {:width => max}}, :visibility, :type]
177
+ max = Helpers::longest_in_collection(authorities.map { |a| a.name })
178
+ tp authorities, [{ :id => { :width => 36 } }, { :name => { :width => max } }, :visibility, :type]
179
179
  end
180
180
  end
181
181
 
@@ -187,7 +187,7 @@ module LMCAdm
187
187
  create.flag :A, :required => true
188
188
  create.action do |_global_options, options, _args|
189
189
  account = LMC::Account.get_by_uuid_or_name options[:A]
190
- auth = LMC::Authority.new({'name' => _args.first, 'visibility' => 'PRIVATE'}, account)
190
+ auth = LMC::Authority.new({ 'name' => _args.first, 'visibility' => 'PRIVATE' }, account)
191
191
  puts auth.save
192
192
  end
193
193
  end
@@ -202,7 +202,7 @@ module LMCAdm
202
202
  account_invite.action do |global_options, options, args|
203
203
  account = LMC::Account.get_by_uuid_or_name options[:account]
204
204
  cloud = LMC::Cloud.instance
205
- chosen_authorities = account.authorities.select {|auth| auth.name == options[:role]}
205
+ chosen_authorities = account.authorities.select { |auth| auth.name == options[:role] }
206
206
  args.each do |email|
207
207
  cloud.invite_user_to_account email, account.id, options[:type], chosen_authorities
208
208
  end
@@ -256,28 +256,37 @@ module LMCAdm
256
256
  update.flag :A, :account, :required => true
257
257
  update.desc 'authority id'
258
258
  update.flag 'add-authority'
259
- update.action do |_global_options, options, args|
259
+ update.desc 'authority name|id'
260
+ update.flag 'remove-authority'
261
+ update.action do |global_options, options, args|
260
262
  account = LMC::Account.get_by_uuid_or_name(options[:account])
263
+ account.cloud.auth_for_account account
261
264
  membership = account.find_member_by_name args.first
262
- puts membership
265
+ if global_options[:verbose]
266
+ puts "membership class: #{membership.class}"
267
+ puts "membership.authorities first class: #{membership.authorities.first.class}"
268
+ puts membership
269
+ end
270
+ authority_ids = membership.authorities.map do |a|
271
+ a.id
272
+ end
273
+ puts "Existing authority ids: #{authority_ids}"
263
274
  if options['add-authority']
264
- # new_authority = account.authorities.find do |a|
265
- # a.name == options['add-authority']
266
- # end
267
- puts membership.class
268
- puts membership.authorities.class
269
- authority_ids = membership.authorities.map do |a|
270
- a['id']
271
- end
272
- puts authority_ids
273
- authority_ids = authority_ids.concat [options['add-authority']]
274
- puts authority_ids
275
- # POST /accounts/{accountId}/members/{principalId}
276
- cloud = LMC::Cloud.instance
277
- cloud.auth_for_account account
278
- res = cloud.post ['cloud-service-auth', 'accounts', account.id, 'members', membership.id], {'authorities' => authority_ids}
279
- puts res
275
+ add_str = options['add-authority']
276
+ new_authority = Helpers::find_by_id_or_name account.authorities, add_str
277
+ authority_ids = authority_ids.concat [new_authority.id]
278
+ puts "Adding #{authority_ids}"
280
279
  end
280
+ if options['remove-authority']
281
+ remove_str = options['remove-authority']
282
+ deleting_authority = Helpers.find_by_id_or_name account.authorities, remove_str
283
+ puts "Removing #{deleting_authority}"
284
+ authority_ids = authority_ids - [deleting_authority.id]
285
+ end
286
+ puts "New authority ids: #{authority_ids}"
287
+ # POST /accounts/{accountId}/members/{principalId}
288
+ res = account.cloud.post ['cloud-service-auth', 'accounts', account.id, 'members', membership.id], { 'authorities' => authority_ids }
289
+ puts res
281
290
  end
282
291
  end
283
292
 
@@ -288,16 +297,12 @@ module LMCAdm
288
297
  children.flag :special
289
298
  children.action do |global_options, options, args|
290
299
  account = LMC::Account.get_by_uuid_or_name args.first
291
- cloud = LMC::Cloud.instance
292
300
 
293
301
  def recurse_childen account, indent_level
294
302
  children = account.children
295
303
  children.each do |child|
296
304
  puts ' ' * indent_level + child.to_s
297
- begin
298
- recurse_childen child, indent_level + 1
299
- rescue RestClient::Forbidden => e
300
- end
305
+ recurse_childen child, indent_level + 1
301
306
  end
302
307
  end
303
308
 
@@ -8,13 +8,15 @@ module LMCAdm
8
8
  command :cloud do |c|
9
9
  c.desc 'Check cloud connectivity'
10
10
  c.action do |global_options|
11
- lmcen = LMC::Cloud.new(global_options[:cloud_host], global_options[:user], global_options[:password])
11
+ lmcen = LMC::Cloud.instance
12
12
  puts "Base URL: #{lmcen.build_url}"
13
13
  puts "Cloud connection OK" if lmcen.auth_ok
14
14
  if global_options[:v]
15
15
  puts "authentication token: " + lmcen.session_token
16
16
  end
17
17
  end
18
+
19
+ c.desc 'Display cloud version information'
18
20
  c.command :about do |cloud_about|
19
21
  cloud_about.action do |global_options|
20
22
  cloud = LMC::Cloud.instance
@@ -27,6 +29,7 @@ module LMCAdm
27
29
  }}
28
30
  tp backstage_infos
29
31
  puts '---'
32
+ puts "Base URL: #{cloud.build_url}"
30
33
  puts "Principal: #{LMC::Principal.get_self(cloud)}"
31
34
 
32
35
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LMCAdm #:nodoc:
4
+ desc 'Manipulate preferences'
5
+ command :preferences do |preferences|
6
+ preferences.desc 'Get last account data'
7
+ preferences.arg_name 'accounts'
8
+ preferences.command :lastaccounts do |la|
9
+ la.action do |g, _o, args|
10
+ cloud = LMC::Cloud.instance
11
+ self_ui = cloud.preferences [:principals, :self, :ui]
12
+ if args.empty?
13
+ ids = self_ui.get 'lastAccountIds'
14
+ accounts = ids.map do |id|
15
+ LMC::Account.get id
16
+ end
17
+ accounts.each { |a|
18
+ puts a.summary
19
+ }
20
+ else
21
+ account_ids = args.map { |arg|
22
+ LMC::Account.get_by_uuid_or_name(arg).id
23
+ }
24
+ puts account_ids
25
+ puts self_ui.put 'lastAccountIds', account_ids
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -15,7 +15,7 @@ module LMCAdm
15
15
  end
16
16
  rights.arg_name "rights"
17
17
  rights.command :assign do |assign|
18
- assign.flag :A
18
+ assign.flag :A, :account
19
19
  assign.flag :authority
20
20
  assign.flag :service
21
21
  assign.action do |_g, o, a |
@@ -23,9 +23,34 @@ module LMCAdm
23
23
  account = LMC::Account.get_by_uuid_or_name o[:A]
24
24
  c = LMC::Cloud.instance
25
25
  c.auth_for_account account
26
- c.post [o[:service], "accounts", account.id, 'authorities', o[:authority], 'rights' ], a
26
+ service_name = Helpers.complete_service_name o[:service]
27
+ c.post [service_name, "accounts", account.id, 'authorities', o[:authority], 'rights' ], a
27
28
 
28
29
  end
29
30
  end
31
+ rights.arg_name 'servicename account'
32
+ rights.desc 'example: lmcadm rights authorities messaging myproject'
33
+ rights.command :authorities do |authorities|
34
+ authorities.action do |_g, _o, a |
35
+ account = LMC::Account.get_by_uuid_or_name a[1]
36
+ account.cloud.auth_for_account account
37
+ authorities = account.cloud.get [Helpers.complete_service_name(a[0]), 'accounts', account.id, 'authorities']
38
+ tp authorities.body, [:name , :visibility, :type, :id]
39
+ end
40
+ end
41
+
42
+ rights.arg_name '<servicename> <account> <authority_id>'
43
+ rights.desc 'example: lmcadm rights show service-messaging myproject 5c244078-c937-4ff9-bb33-351f5253fe53'
44
+ rights.command :show do |show|
45
+ show.action do |_g, _o, a|
46
+ account = LMC::Account.get_by_uuid_or_name a[1]
47
+ account.cloud.auth_for_account account
48
+ service_name = Helpers.complete_service_name a[0]
49
+ authority = account.cloud.get([service_name, 'accounts', account.id, 'authorities', a[2]]).body
50
+ puts authority.to_h.to_s
51
+ rights = account.cloud.get([service_name, 'accounts', account.id, 'authorities', a[2], 'rights']).body
52
+ puts rights
53
+ end
54
+ end
30
55
  end
31
56
  end
@@ -50,8 +50,8 @@ module LMCAdm
50
50
  begin
51
51
  EventMachine.epoll
52
52
  EventMachine.run do
53
- trap("TERM") { stop g[:debug]}
54
- trap("INT") { stop g[:debug]}
53
+ trap("TERM") { stop g[:debug] }
54
+ trap("INT") { stop g[:debug] }
55
55
  IO.console.raw!
56
56
  EventMachine.open_keyboard(LMCAdm::KeyboardHandler)
57
57
  @ws = WebSocket::EventMachine::Client.connect({uri: url, headers: headers_hash})
@@ -59,19 +59,27 @@ module LMCAdm
59
59
 
60
60
  @ws.onopen do
61
61
  print "Connected to #{device.name} (#{device.id}):\r\n"
62
+ remaining_args = args.drop(1)
63
+ if remaining_args.length > 0
64
+ @ws.send '1' + remaining_args.join(' ') + "\r", type: 'binary'
65
+ end
62
66
  end
63
67
 
64
68
  @ws.onmessage do |msg, type|
65
69
  print "##{msg.length}##{msg.inspect}#" if g[:debug]
70
+ # respond to custom keepalive
71
+ if msg.start_with? '0'
72
+ @ws.send '0', type: 'binary'
73
+ end
66
74
  if msg.start_with? "1"
67
- print msg[1..-1].gsub("\n","\r\n")
75
+ print msg[1..-1].gsub("\n", "\r\n")
68
76
  else
69
77
  print msg if g[:debug]
70
78
  end
71
79
  print DateTime.now.to_s if g[:debug]
72
80
  if msg.include? "\n\nGoodbye\n\n"
73
81
  stop g[:debug]
74
- closing = true
82
+ closing = true
75
83
  end
76
84
  end
77
85
 
@@ -93,7 +101,7 @@ module LMCAdm
93
101
  puts "Received pong: #{msg}" if g[:verbose]
94
102
  end
95
103
 
96
- def stop(debug=false)
104
+ def stop(debug = false)
97
105
  print DateTime.now.to_s if debug
98
106
  print "Terminating connection\r\n"
99
107
  EventMachine.stop
@@ -102,9 +110,9 @@ module LMCAdm
102
110
  ensure
103
111
  IO.console.cooked!
104
112
  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']}"]
113
+ # disabled, getting 401 anyways
114
+ #account.cloud.auth_for_account account
115
+ #account.cloud.delete ['cloud-service-devicetunnel', 'accounts', account.id, "terminal?ids=#{sessionInfo.body.first['id']}"]
108
116
  end
109
117
  end
110
118
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+ module LMCAdm
3
+ module Helpers
4
+ def self.find_by_id_or_name(list, search)
5
+ found = []
6
+ found += list.select do |item|
7
+ item.id == search
8
+ end
9
+ found += list.select do |item|
10
+ item.name == search
11
+ end
12
+ puts "More than one item found for: #{search}" if found.length > 1
13
+ raise "Not found: #{search}" if found.length < 1
14
+ return found.first
15
+ end
16
+ end
17
+ end
18
+
@@ -7,5 +7,15 @@ module LMCAdm
7
7
  end
8
8
  return max
9
9
  end
10
+
11
+ def self.complete_service_name(name)
12
+ if name.start_with? 'cloud-service-'
13
+ return name
14
+ end
15
+ if name.start_with? 'service-'
16
+ return 'cloud-' + name
17
+ end
18
+ return'cloud-service-' + name
19
+ end
10
20
  end
11
21
  end
@@ -1,3 +1,3 @@
1
1
  module LMCAdm
2
- VERSION = '0.13.0'
2
+ VERSION = '0.16.2'
3
3
  end
data/lmcadm.gemspec CHANGED
@@ -24,7 +24,7 @@ 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.11.0'
27
+ spec.add_runtime_dependency 'lmc', '~> 0.14.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'
@@ -0,0 +1,15 @@
1
+ # Temporary gemfile to be used by OCRA.
2
+ GEMFILE = 'ocra_gemfile'
3
+
4
+ # Add gems from gemspec.
5
+ ocra_gemfile = File.new(GEMFILE, 'w')
6
+ File.open("lmcadm.gemspec",'r') do |file|
7
+ file.each { |line| ocra_gemfile.write "gem #{$1}\n" if line =~ /spec.add_runtime_dependency (.+)/ }
8
+ end
9
+ ocra_gemfile.close
10
+
11
+ # Execute OCRA
12
+ #system("ocra --gemfile #{GEMFILE} --console script_name")
13
+
14
+ # Cleanup
15
+ #FileUtils.rm Dir.glob(GEMFILE)
data/ocra.sh ADDED
@@ -0,0 +1,2 @@
1
+ ruby makeocragemfile.rb
2
+ ocra --gemfile ocra_gemfile --gem-full exe/lmcadm
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.13.0
4
+ version: 0.16.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - erpel
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-03 00:00:00.000000000 Z
11
+ date: 2021-06-10 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.11.0
75
+ version: 0.14.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.11.0
82
+ version: 0.14.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: gli
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.3.0
139
- description:
139
+ description:
140
140
  email:
141
141
  - philipp@copythat.de
142
142
  executables:
@@ -144,6 +144,8 @@ executables:
144
144
  extensions: []
145
145
  extra_rdoc_files: []
146
146
  files:
147
+ - ".github/workflows/build-win.yaml"
148
+ - ".github/workflows/gem-push.yml"
147
149
  - ".gitignore"
148
150
  - ".idea/encodings.xml"
149
151
  - ".idea/inspectionProfiles/Project_Default.xml"
@@ -155,6 +157,7 @@ files:
155
157
  - Rakefile
156
158
  - bin/console
157
159
  - bin/setup
160
+ - dev_lmcadm
158
161
  - exe/lmcadm
159
162
  - lib/lmcadm.rb
160
163
  - lib/lmcadm/ColoredProgressVisualizer.rb
@@ -167,6 +170,7 @@ files:
167
170
  - lib/lmcadm/commands/completion.rb
168
171
  - lib/lmcadm/commands/maintenance.rb
169
172
  - lib/lmcadm/commands/monitor.rb
173
+ - lib/lmcadm/commands/preferences.rb
170
174
  - lib/lmcadm/commands/principal.rb
171
175
  - lib/lmcadm/commands/privatecloud.rb
172
176
  - lib/lmcadm/commands/rights.rb
@@ -175,16 +179,19 @@ files:
175
179
  - lib/lmcadm/device_commands.rb
176
180
  - lib/lmcadm/helpers/args_helpers.rb
177
181
  - lib/lmcadm/helpers/device_helpers.rb
182
+ - lib/lmcadm/helpers/find_helpers.rb
178
183
  - lib/lmcadm/helpers/password_helper.rb
179
184
  - lib/lmcadm/helpers/string_helpers.rb
180
185
  - lib/lmcadm/version.rb
181
186
  - lmcadm
182
187
  - lmcadm.gemspec
183
- homepage:
188
+ - makeocragemfile.rb
189
+ - ocra.sh
190
+ homepage:
184
191
  licenses:
185
192
  - BSD-3-Clause
186
193
  metadata: {}
187
- post_install_message:
194
+ post_install_message:
188
195
  rdoc_options: []
189
196
  require_paths:
190
197
  - lib
@@ -200,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
207
  version: '0'
201
208
  requirements: []
202
209
  rubygems_version: 3.1.2
203
- signing_key:
210
+ signing_key:
204
211
  specification_version: 4
205
212
  summary: lmcadm is a command line client for LMC
206
213
  test_files: []