phoseum-cli 0.0.9 → 0.0.10

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: 7282f4986b7a9f813c002c354d5fae25c6b0e29fd6274c4cd8ee5fa2a75cc89b
4
- data.tar.gz: 3e22b900db8134c6a90b9cd54c55d672ddef8af86195c0148f7458fe924d47c0
3
+ metadata.gz: a9472d2d52deb75c37183130fce537c43f87e25d2c5366f73d34e2e39f4b2f67
4
+ data.tar.gz: 6e37a6d2768e87133c97e5a7d5257595e39b9a97483be4eddc109f38f15e81e6
5
5
  SHA512:
6
- metadata.gz: 6f23596ae34b88ba0bbb537672304490c2e065e448dfbb9b434052f73dc73080c0dbe89cbbf9b2b149c844b8a5695be19472f669e91fbeaf90e6a89cbe5d773c
7
- data.tar.gz: c044c7b0922aacc1f0830e0592f6b7357266664f9c4ecbc5418a69ad2e86cb0f20cec3067708aa0e3321e76c2b8f5d0c096bdf494717813866e55007eda83ce0
6
+ metadata.gz: a249f7bebf5c8621067a8f52a560ad6c24867d09956acd7e1323c79aa60628d8261ae06f73e45e54e1355ba07b673c883176c13273616c7c66683f90536f2f74
7
+ data.tar.gz: ea4973b4317ee70af953b628fefda619bbc35bc355434bf9c61f2d037ba058194a57959ffa6ef5c976728ae6298bc966af114e269407bf34dd82eca680de569c
@@ -24,16 +24,16 @@ $MULTI = options[:multiple] ? true : false
24
24
  client_checks
25
25
 
26
26
  def upload(album)
27
-
28
- if $config['TOKEN']
29
- headers={ "bearer" => "#{$config['TOKEN']}" }
30
- else
27
+ headers = {}
28
+ if !validate_token($config['TOKEN'])
31
29
  if token = user_login()
32
30
  headers = { "bearer" => token }
33
31
  else
34
32
  puts "Login Failed".red
35
33
  exit 1
36
34
  end
35
+ else
36
+ headers={ "bearer" => "#{$config['TOKEN']}" }
37
37
  end
38
38
 
39
39
  list=Dir.entries("./")
@@ -154,15 +154,15 @@ end
154
154
 
155
155
  def health(what='',name='')
156
156
  headers = {}
157
- if $config['TOKEN']
158
- headers={ "bearer" => "#{$config['TOKEN']}" }
159
- else
157
+ if !validate_token($config['TOKEN'])
160
158
  if token = user_login()
161
159
  headers = { "bearer" => token }
162
160
  else
163
161
  puts "Login Failed".red
164
162
  exit 1
165
163
  end
164
+ else
165
+ headers={ "bearer" => "#{$config['TOKEN']}" }
166
166
  end
167
167
  some_uri=''
168
168
  if what == "album"
@@ -264,29 +264,28 @@ def user_mgmt(action,user,pass='',role='')
264
264
  exit 0
265
265
  end
266
266
 
267
- def user_login()
267
+ def user_login(puser='',ppass='')
268
268
  post_body={}
269
- user=''
270
- pass=''
269
+ user= !puser ? '' : puser
270
+ pass= !ppass ? '' : ppass
271
271
  if $config['USER']
272
272
  user=$config['USER']
273
273
  else
274
274
  print "Username: "
275
- user=STDIN.noecho(&:gets).chomp
275
+ user=STDIN.gets.chomp
276
276
  end
277
277
  if $config['PASS']
278
278
  pass=$config['PASS']
279
- puts "Keeping your password on the configuration file is UNSAFE".red
279
+ puts "\nKeeping your password on the configuration file is UNSAFE".red
280
280
  else
281
- print "\nPassword: "
282
- pass=STDIN.noecho(&:gets).chomp
281
+ pass=STDIN.getpass('Password: ')
283
282
  end
284
283
  post_body=JSON.generate({"action" => "user-login", "user" => "#{user}", "password" => "#{pass}"})
285
284
  base = URI.parse("#{$config['SERVERURL']}")
286
285
  puts "\nLogging to: #{$config['SERVERURL']}".yellow if !$QUIET
287
286
  request = Net::HTTP::Post.new(base)
288
287
  request.body = post_body
289
- request.basic_auth("auth", $config['DEFAULT_SECRET'])
288
+ request.basic_auth("cli", "loginNOauth")
290
289
  response = Net::HTTP.start(base.hostname, $config['PORT'],
291
290
  :timeout => $config['CALL_TIMEOUT'],
292
291
  :use_ssl => base.scheme == "https",
@@ -323,50 +322,40 @@ end
323
322
 
324
323
 
325
324
  def delete(what='',path='')
326
- puts "You must write 'YES' to confirm, otherwise NO is assumed".yellow
327
- print "Are you sure you want to delete the #{what} #{path} :[YES/NO]: "
328
- confirm=STDIN.gets.chomp
329
-
330
- if confirm == "YES"
331
- headers={}
332
- if $config['TOKEN']
333
- headers={ "bearer" => "#{$config['TOKEN']}" }
325
+ if !validate_token($config['TOKEN'])
326
+ if token = user_login()
327
+ headers = { "bearer" => token }
334
328
  else
335
- if token = user_login()
336
- headers = { "bearer" => token }
337
- else
338
- puts "Login Failed".red
339
- exit 1
340
- end
341
- end
342
-
343
- base = URI.parse("#{$config['SERVERURL']}/#{path}")
344
- puts "Connecting to: #{$config['SERVERURL']}".yellow if !$QUIET
345
- request = Net::HTTP::Delete.new(base,headers)
346
- response = Net::HTTP.start(base.hostname, $config['PORT'],
347
- :timeout => $config['CALL_TIMEOUT'],
348
- :use_ssl => base.scheme == "https",
349
- :verify_mode => OpenSSL::SSL::VERIFY_PEER,
350
- :ca_file => $config['CA_TRUST']
351
- ) do |http|
352
- http.request(request)
353
- end
354
- begin
355
- list = JSON.parse(response.body)
356
- if list['error']
357
- puts list['error'].red
358
- exit 1
359
- else
360
- puts list['success'].green
361
- exit 0
362
- end
363
- rescue
364
- puts "\nThe server sent out an Error:".red
365
- puts clean_html(response.body)
329
+ puts "Login Failed".red
366
330
  exit 1
367
331
  end
368
332
  else
369
- puts "Deleting cancelled.".green
333
+ headers={ "bearer" => "#{$config['TOKEN']}" }
334
+ end
335
+ base = URI.parse("#{$config['SERVERURL']}/#{path}")
336
+ puts "Connecting to: #{$config['SERVERURL']}".yellow if !$QUIET
337
+ request = Net::HTTP::Delete.new(base,headers)
338
+ response = Net::HTTP.start(base.hostname, $config['PORT'],
339
+ :timeout => $config['CALL_TIMEOUT'],
340
+ :use_ssl => base.scheme == "https",
341
+ :verify_mode => OpenSSL::SSL::VERIFY_PEER,
342
+ :ca_file => $config['CA_TRUST']
343
+ ) do |http|
344
+ http.request(request)
345
+ end
346
+ begin
347
+ list = JSON.parse(response.body)
348
+ if list['error']
349
+ puts list['error'].red
350
+ exit 1
351
+ else
352
+ puts list['success'].green
353
+ exit 0
354
+ end
355
+ rescue
356
+ puts "\nThe server sent out an Error:".red
357
+ puts clean_html(response.body)
358
+ exit 1
370
359
  end
371
360
  end
372
361
 
@@ -387,10 +376,10 @@ case options
387
376
  puts "You need to select one of the valid Roles".red
388
377
  exit 1
389
378
  else
390
- print "Please type the password twice for user #{value}.\n\tPassword: "
391
- new_password=STDIN.noecho(&:gets).chomp
392
- print "\n\tConfirm: "
393
- confirm=STDIN.noecho(&:gets).chomp
379
+ print "Please type the password twice for user #{value}.\n\t"
380
+ new_password=STDIN.getpass('Password: ')
381
+ print "\t"
382
+ confirm=STDIN.getpass('Confirm: ')
394
383
  if new_password == confirm
395
384
  user_mgmt(what,value,new_password,options[:role])
396
385
  end
@@ -405,19 +394,66 @@ case options
405
394
  puts "It is Not possible to delete base album".red
406
395
  exit 1
407
396
  end
397
+ if !confirm_action("Are you sure you want to delete the #{what} #{value}")
398
+ puts "Deleting #{what} cancelled.".green
399
+ end
408
400
  end
409
401
  if options[:image]
410
402
  if _found = check_image_exists(options[:image])
411
- img_data = JSON.parse(_found)
412
- value="#{img_data['web_path']}/#{img_data['image']}"
403
+ if _found =~ /^Signature Found at \[\"(.*)\"\]/
404
+ capt = _found.match(/^Signature Found at \[\"(.*)\"\]/).captures
405
+ capt_part = capt[0].match(/.*(Albums.*)$/).captures
406
+ value = capt_part[0]
407
+ else
408
+ img_data = JSON.parse(_found)
409
+ value="#{img_data['web_path']}/#{img_data['image']}"
410
+ end
413
411
  what='image'
414
412
  else
415
413
  puts "Image not found on server".red
416
414
  exit 1
417
415
  end
416
+ if confirm_action("Are you sure you want to delete the #{what} #{value}")
417
+ puts "Deleting #{what} #{value}".green if !$QUIET
418
+ delete(what,value)
419
+ else
420
+ puts "Deleting #{what} cancelled.".green
421
+ end
422
+ end
423
+ if options[:user]
424
+ what='user'
425
+ value=options[:user]
426
+ if confirm_action("Are you sure you want to delete the #{what} #{value}")
427
+ puts "Deleting #{what} #{value}".green if !$QUIET
428
+ if delete_user(value)
429
+ puts "#{value} successfully deleted.".green
430
+ else
431
+ puts "#{value} failed to be deleted.".red
432
+ end
433
+ else
434
+ puts "Deleting #{what} cancelled.".green
435
+ end
436
+ end
437
+ if !what
438
+ puts "Got no object to delete. Exiting.".red
439
+ exit 1
440
+ end
441
+ when -> (o) { o[:options] }
442
+ if options[:user]
443
+ print "Please confirm #{options[:user]} password.\n\t"
444
+ current_password=STDIN.getpass('Password: ')
445
+ if token = user_login(options[:user],current_password)
446
+ print "\n Change [P]assword, [U]sername, [R]ole :[P/U/R]: "
447
+ confirm=STDIN.gets.chomp
448
+ else
449
+ puts "User Check Failed".red
450
+ exit 1
451
+ end
452
+ else
453
+ # if !what
454
+ puts "Got no user to work with. Exiting.".red
455
+ exit 1
418
456
  end
419
- puts "Deleting #{what} #{value}".green if !$QUIET
420
- delete(what,value)
421
457
  when -> (u) { u[:upload] }
422
458
  puts "Preparing to upload images to API server".green if !$QUIET
423
459
  if !options.key?(:album)
@@ -44,6 +44,10 @@ def option_parser(opts)
44
44
  options[:role] = r
45
45
  end
46
46
 
47
+ opts.on("-o", "--options", "Update options from object. Use with: [user]") do |o|
48
+ options[:options] = o
49
+ end
50
+
47
51
  opts.on("-q", "--quiet", "Avoid regular info, useful for JSON output") do |q|
48
52
  options[:quiet] = q
49
53
  end
@@ -56,6 +60,10 @@ def option_parser(opts)
56
60
  options[:upload] = u
57
61
  end
58
62
 
63
+ opts.on("-U", "--User USERNAME", "Username for delete or change password / role. Use with: [delete, options]") do |usr|
64
+ options[:user] = usr
65
+ end
66
+
59
67
  opts.on("-h", "-h", "That is this...") do |h|
60
68
  options[:help] = h
61
69
  end
@@ -64,6 +72,17 @@ def option_parser(opts)
64
72
  return options
65
73
  end
66
74
 
75
+ def confirm_action(msg)
76
+ puts "You must write 'YES' to confirm, otherwise NO is assumed".yellow
77
+ print "#{msg} :[YES/NO]: "
78
+ confirm=STDIN.gets.chomp
79
+ if confirm == "YES"
80
+ return true
81
+ else
82
+ return false
83
+ end
84
+ end
85
+
67
86
  class String
68
87
  # colorization
69
88
  def colorize(color_code)
@@ -145,16 +164,15 @@ def check_image_exists(fpath)
145
164
  end
146
165
 
147
166
  def search_image(sign,album='')
148
- headers = {}
149
- if $config['TOKEN']
150
- headers={ "bearer" => "#{$config['TOKEN']}" }
151
- else
167
+ if !validate_token($config['TOKEN'])
152
168
  if token = user_login()
153
169
  headers = { "bearer" => token }
154
170
  else
155
171
  puts "Login Failed".red
156
172
  exit 1
157
173
  end
174
+ else
175
+ headers={ "bearer" => "#{$config['TOKEN']}" }
158
176
  end
159
177
  some_uri= album == '' ? "?signature=#{sign}" : "?signature=#{sign}&inside_album=#{album}"
160
178
  base = URI.parse("#{$config['SERVERURL']}#{some_uri}")
@@ -182,3 +200,69 @@ def search_image(sign,album='')
182
200
  exit 1
183
201
  end
184
202
  end
203
+
204
+ def validate_token(token)
205
+ headers = {}
206
+ if $config['TOKEN']
207
+ headers={ "bearer" => "#{$config['TOKEN']}" }
208
+ else
209
+ return false
210
+ end
211
+ base = URI.parse("#{$config['SERVERURL']}")
212
+ request = Net::HTTP::Post.new(base,headers)
213
+ request.body = JSON.generate({"action" => "check-token" })
214
+ response = Net::HTTP.start(base.hostname, $config['PORT'],
215
+ :timeout => $config['CALL_TIMEOUT'],
216
+ :use_ssl => base.scheme == "https",
217
+ :verify_mode => OpenSSL::SSL::VERIFY_PEER,
218
+ :ca_file => $config['CA_TRUST']
219
+ ) do |http|
220
+ http.request(request)
221
+ end
222
+ begin
223
+ list = JSON.parse(response.body)
224
+ if list['error']
225
+ return false
226
+ end
227
+ if list['success']
228
+ return true
229
+ end
230
+ rescue
231
+ puts "\nThe server sent out an Error:".red
232
+ puts clean_html(response.body)
233
+ exit 1
234
+ end
235
+ end
236
+
237
+ def delete_user(username)
238
+ headers = {}
239
+ if $config['TOKEN']
240
+ headers={ "bearer" => "#{$config['TOKEN']}" }
241
+ else
242
+ return false
243
+ end
244
+ base = URI.parse("#{$config['SERVERURL']}")
245
+ request = Net::HTTP::Post.new(base,headers)
246
+ request.body = JSON.generate({"action" => "delete-user", "username" => username })
247
+ response = Net::HTTP.start(base.hostname, $config['PORT'],
248
+ :timeout => $config['CALL_TIMEOUT'],
249
+ :use_ssl => base.scheme == "https",
250
+ :verify_mode => OpenSSL::SSL::VERIFY_PEER,
251
+ :ca_file => $config['CA_TRUST']
252
+ ) do |http|
253
+ http.request(request)
254
+ end
255
+ begin
256
+ list = JSON.parse(response.body)
257
+ if list['error']
258
+ return false
259
+ end
260
+ if list['success']
261
+ return true
262
+ end
263
+ rescue
264
+ puts "\nThe server sent out an Error:".red
265
+ puts clean_html(response.body)
266
+ exit 1
267
+ end
268
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phoseum-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julio C Hegedus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-07 00:00:00.000000000 Z
11
+ date: 2020-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yaml