phoseum-cli 0.0.17 → 0.0.22
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 +4 -4
- data/bin/phoseum-cli +150 -59
- data/lib/phoseum/phoseum-cli-lib.rb +118 -78
- data/lib/phoseum/phoseum-common-lib.rb +44 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dda101298c10dfba931a42da89cf49f7621341ab94c6f6eb5b763d17abe36084
|
4
|
+
data.tar.gz: 3b60673f5aa9ace4862570622496360d83352d89407d9863cf4f2391ba73efb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 113d85253686c204b3eaa02643050193cdb7a65ea33e1654b7fa8da1c1e65f56b197db195c0f4cc9059f447a4781c18f5b48afce52dd5b7b36e23ff25657d6dd
|
7
|
+
data.tar.gz: 46efcbf1a8b7679f9c0888355ebc1963f047bc56ab079b9122f9e0050b84ab4162b6d4906066b4b213d8410b16c544475664ceed0fccb2a86bbb3948bedf8771
|
data/bin/phoseum-cli
CHANGED
@@ -237,45 +237,6 @@ def health(what='',name='')
|
|
237
237
|
exit 0
|
238
238
|
end
|
239
239
|
|
240
|
-
def user_mgmt(action,user,pass='',role='')
|
241
|
-
post_body={}
|
242
|
-
if action == "add_user"
|
243
|
-
post_body=JSON.generate({"action" => "create-user", "user" => "#{user}", "password" => "#{pass}", "role" => "#{role}"})
|
244
|
-
if !$config['DEFAULT_SECRET']
|
245
|
-
puts "You must have a DEFAULT_SECRET setting to be able to create a user".red
|
246
|
-
exit 1
|
247
|
-
end
|
248
|
-
end
|
249
|
-
base = URI.parse("#{$config['SERVERURL']}")
|
250
|
-
puts "\nConnecting to: #{$config['SERVERURL']}".yellow if !$QUIET
|
251
|
-
request = Net::HTTP::Post.new(base)
|
252
|
-
request.body = post_body
|
253
|
-
request.basic_auth("auth", $config['DEFAULT_SECRET'])
|
254
|
-
response = Net::HTTP.start(base.hostname, $config['PORT'],
|
255
|
-
:timeout => $config['CALL_TIMEOUT'],
|
256
|
-
:use_ssl => base.scheme == "https",
|
257
|
-
:verify_mode => OpenSSL::SSL::VERIFY_PEER,
|
258
|
-
:ca_file => $config['CA_TRUST']
|
259
|
-
) do |http|
|
260
|
-
http.request(request)
|
261
|
-
end
|
262
|
-
begin
|
263
|
-
list = JSON.parse(response.body)
|
264
|
-
if list['error']
|
265
|
-
puts list['error'].red
|
266
|
-
exit 1
|
267
|
-
end
|
268
|
-
if list['success']
|
269
|
-
data=list['success']
|
270
|
-
puts data
|
271
|
-
end
|
272
|
-
rescue
|
273
|
-
puts "Error on Login".red
|
274
|
-
puts clean_html(response.body)
|
275
|
-
end
|
276
|
-
exit 0
|
277
|
-
end
|
278
|
-
|
279
240
|
def user_login(puser='',ppass='')
|
280
241
|
|
281
242
|
server_value = cross_versions()
|
@@ -341,7 +302,6 @@ def user_login(puser='',ppass='')
|
|
341
302
|
return false
|
342
303
|
end
|
343
304
|
|
344
|
-
|
345
305
|
def delete(what='',path='')
|
346
306
|
if !validate_token($config['TOKEN'])
|
347
307
|
if token = user_login()
|
@@ -389,12 +349,24 @@ case options
|
|
389
349
|
end
|
390
350
|
health(what,value)
|
391
351
|
when -> (cre) { cre[:create_user] }
|
392
|
-
|
352
|
+
secretinfo = api_caller({"action" => "check-secret", "value" => $config['DEFAULT_SECRET']},true)
|
353
|
+
if secretinfo['error']
|
354
|
+
err_msg = JSON.parse(secretinfo)
|
355
|
+
puts err_msg['error'].red
|
356
|
+
puts "You will only be able to change your own password.".red
|
357
|
+
exit 1
|
358
|
+
end
|
359
|
+
if secretinfo['success']
|
360
|
+
puts secretinfo['success'].green
|
361
|
+
end
|
362
|
+
|
393
363
|
if options[:create_user]
|
394
364
|
value=check_string_sanity(options[:create_user])
|
365
|
+
username_sanity(value)
|
366
|
+
puts "Creating User #{value}".green if !$QUIET
|
395
367
|
what='add_user'
|
396
|
-
if !options[:role]
|
397
|
-
puts "You need to select one of the valid Roles".red
|
368
|
+
if !options[:role] || options[:role] != "Super" && options[:role] != "User"
|
369
|
+
puts "You need to select one of the valid Roles (Super or User)".red
|
398
370
|
exit 1
|
399
371
|
else
|
400
372
|
print "Please type the password twice for user #{value}.\n\t"
|
@@ -402,7 +374,17 @@ case options
|
|
402
374
|
print "\t"
|
403
375
|
confirm=STDIN.getpass('Confirm: ')
|
404
376
|
if new_password == confirm
|
405
|
-
|
377
|
+
password_sanity(new_password)
|
378
|
+
if add_user(value,confirm,options[:role])
|
379
|
+
puts "User #{value} added successfully".green
|
380
|
+
exit 0
|
381
|
+
else
|
382
|
+
puts "Failed to add User #{value}".red
|
383
|
+
exit 1
|
384
|
+
end
|
385
|
+
else
|
386
|
+
puts "Passwords won't match, aborting. #{new_password} != #{confirm}".red
|
387
|
+
exit 1
|
406
388
|
end
|
407
389
|
end
|
408
390
|
end
|
@@ -444,15 +426,24 @@ case options
|
|
444
426
|
if options[:user]
|
445
427
|
what='user'
|
446
428
|
value=options[:user]
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
429
|
+
secretinfo = api_caller({"action" => "check-secret", "value" => $config['DEFAULT_SECRET']},true)
|
430
|
+
if secretinfo['error']
|
431
|
+
err_msg = JSON.parse(secretinfo)
|
432
|
+
puts err_msg['error'].red
|
433
|
+
puts "You cannot delete users if you don't have the Server Secret."
|
434
|
+
exit 1
|
435
|
+
end
|
436
|
+
if secretinfo['success']
|
437
|
+
if confirm_action("Are you sure you want to delete the #{what} #{value}")
|
438
|
+
puts "Deleting #{what} #{value}".green if !$QUIET
|
439
|
+
if delete_user(value)
|
440
|
+
puts "#{value} successfully deleted.".green
|
441
|
+
else
|
442
|
+
puts "#{value} failed to be deleted.".red
|
443
|
+
end
|
451
444
|
else
|
452
|
-
puts "#{
|
445
|
+
puts "Deleting #{what} cancelled.".green
|
453
446
|
end
|
454
|
-
else
|
455
|
-
puts "Deleting #{what} cancelled.".green
|
456
447
|
end
|
457
448
|
end
|
458
449
|
if !what
|
@@ -461,17 +452,116 @@ case options
|
|
461
452
|
end
|
462
453
|
when -> (o) { o[:options] }
|
463
454
|
if options[:user]
|
464
|
-
|
465
|
-
|
466
|
-
if
|
467
|
-
|
468
|
-
confirm=STDIN.gets.chomp
|
469
|
-
else
|
470
|
-
puts "User Check Failed".red
|
455
|
+
user_work=check_string_sanity(options[:user])
|
456
|
+
tokeninfo = api_caller({"action" => "token-payload", "token" => "#{$config['TOKEN']}"})
|
457
|
+
if tokeninfo['error']
|
458
|
+
puts "Your token seems invalid, please login again (-l or -c)".red
|
471
459
|
exit 1
|
472
460
|
end
|
461
|
+
auth_user = ''
|
462
|
+
role_user = ''
|
463
|
+
if tokeninfo['success']
|
464
|
+
payload = tokeninfo['payload']
|
465
|
+
tkdata = JSON.parse(payload)
|
466
|
+
auth_user = tkdata[0]['data']['user'].clone
|
467
|
+
role_user = tkdata[0]['data']['role'].clone
|
468
|
+
puts "Current user is #{auth_user}".green
|
469
|
+
end
|
470
|
+
|
471
|
+
secretinfo = api_caller({"action" => "check-secret", "value" => $config['DEFAULT_SECRET']},true)
|
472
|
+
if secretinfo['error']
|
473
|
+
err_msg = JSON.parse(secretinfo)
|
474
|
+
puts err_msg['error'].red
|
475
|
+
puts "You will only be able to change your own password."
|
476
|
+
if user_work != auth_user
|
477
|
+
puts "Requesting other user than your own at command line is wrong, aborting. (#{user_work} is not #{auth_user})".red
|
478
|
+
exit 1
|
479
|
+
end
|
480
|
+
end
|
481
|
+
if secretinfo['success']
|
482
|
+
puts secretinfo['success'].green
|
483
|
+
if role_user == "Super"
|
484
|
+
puts "You will be able to change any user on the system".green
|
485
|
+
else
|
486
|
+
if user_work != auth_user
|
487
|
+
puts "Having a regular user will now allow to change other users's options".yellow
|
488
|
+
puts "Requesting other user than your own at command line is wrong, aborting. (#{user_work} is not #{auth_user})".red
|
489
|
+
exit 1
|
490
|
+
end
|
491
|
+
end
|
492
|
+
end
|
493
|
+
|
494
|
+
if user_work == auth_user
|
495
|
+
print "Please type new password for user #{user_work} .\n\t"
|
496
|
+
new_password=STDIN.getpass('Password: ')
|
497
|
+
print "\t"
|
498
|
+
check_password=STDIN.getpass('Confirm: ')
|
499
|
+
if new_password != check_password
|
500
|
+
puts "Passwords won't match, try again.".red
|
501
|
+
exit 1
|
502
|
+
end
|
503
|
+
if change_user_password(auth_user,check_password)
|
504
|
+
puts "Password changed successfully".green
|
505
|
+
exit 0
|
506
|
+
else
|
507
|
+
puts "Could not change user password.".red
|
508
|
+
exit 1
|
509
|
+
end
|
510
|
+
end
|
511
|
+
|
512
|
+
if user_work != auth_user && secretinfo['success']
|
513
|
+
print "\n Change [P]assword, [U]sername, [R]ole from user #{user_work} :[P/U/R]: "
|
514
|
+
opt_action=STDIN.gets.chomp
|
515
|
+
if opt_action == "P"
|
516
|
+
print "Please type new password for user #{user_work} .\n\t"
|
517
|
+
new_password=STDIN.getpass('Password: ')
|
518
|
+
print "\t"
|
519
|
+
check_password=STDIN.getpass('Confirm: ')
|
520
|
+
if new_password != check_password
|
521
|
+
puts "Passwords won't match, try again.".red
|
522
|
+
exit 1
|
523
|
+
end
|
524
|
+
password_sanity(new_password)
|
525
|
+
if change_user_password(options[:user],check_password,true)
|
526
|
+
puts "Password changed successfully".green
|
527
|
+
exit 0
|
528
|
+
else
|
529
|
+
puts "Could not change user password.".red
|
530
|
+
exit 1
|
531
|
+
end
|
532
|
+
end
|
533
|
+
if opt_action == "U"
|
534
|
+
print "\tPlease type new username for user #{user_work} : "
|
535
|
+
new_user_proto=STDIN.gets.chomp
|
536
|
+
new_user=check_string_sanity(new_user_proto)
|
537
|
+
username_sanity(new_user)
|
538
|
+
if change_username(user_work,new_user)
|
539
|
+
puts "Username changed successfully".green
|
540
|
+
exit 0
|
541
|
+
else
|
542
|
+
puts "Could not change username.".red
|
543
|
+
exit 1
|
544
|
+
end
|
545
|
+
end
|
546
|
+
if opt_action == "R"
|
547
|
+
print " Please select between roles [S]uper,[U]ser for user #{user_work} :[S/U]: "
|
548
|
+
new_role=STDIN.gets.chomp
|
549
|
+
if new_role == "S" || new_role == "U"
|
550
|
+
role_nominal = new_role == "S" ? "Super" : "User"
|
551
|
+
if change_role(user_work,role_nominal)
|
552
|
+
puts "Username changed successfully".green
|
553
|
+
exit 0
|
554
|
+
else
|
555
|
+
puts "Could not change username.".red
|
556
|
+
exit 1
|
557
|
+
end
|
558
|
+
else
|
559
|
+
puts "Unknown option: #{new_role} .".red
|
560
|
+
exit 1
|
561
|
+
end
|
562
|
+
end
|
563
|
+
end
|
473
564
|
else
|
474
|
-
# if !what
|
475
565
|
puts "Got no user to work with. Exiting.".red
|
476
566
|
exit 1
|
477
567
|
end
|
@@ -526,6 +616,7 @@ case options
|
|
526
616
|
test
|
527
617
|
else
|
528
618
|
ARGV[0] = '--help'
|
619
|
+
local_version
|
529
620
|
option_parser(ARGV)
|
530
621
|
exit 1
|
531
622
|
end
|
@@ -1,4 +1,12 @@
|
|
1
1
|
|
2
|
+
# Provide some help and options!
|
3
|
+
#
|
4
|
+
# Example:
|
5
|
+
# >> options = option_parser(ARGV)
|
6
|
+
# => puts options[:option]
|
7
|
+
#
|
8
|
+
# Arguments:
|
9
|
+
# ARGV: (Array or command line parameters)
|
2
10
|
def option_parser(opts)
|
3
11
|
options = {}
|
4
12
|
OptionParser.new do |opts|
|
@@ -60,7 +68,7 @@ def option_parser(opts)
|
|
60
68
|
options[:role] = r
|
61
69
|
end
|
62
70
|
|
63
|
-
opts.on("-o", "--options", "Update options from
|
71
|
+
opts.on("-o", "--options", "Update options from User. Use with: [user]") do |o|
|
64
72
|
options[:options] = o
|
65
73
|
end
|
66
74
|
|
@@ -88,6 +96,15 @@ def option_parser(opts)
|
|
88
96
|
return options
|
89
97
|
end
|
90
98
|
|
99
|
+
# Give yes/no prompt!
|
100
|
+
#
|
101
|
+
# Example:
|
102
|
+
# >> confirm_action("message")
|
103
|
+
# => You must write 'YES' to confirm, otherwise NO is assumed
|
104
|
+
# => message :[YES/NO]:
|
105
|
+
#
|
106
|
+
# Arguments:
|
107
|
+
# msg: (String)
|
91
108
|
def confirm_action(msg)
|
92
109
|
puts "You must write 'YES' to confirm, otherwise NO is assumed".yellow
|
93
110
|
print "#{msg} :[YES/NO]: "
|
@@ -138,16 +155,6 @@ def client_checks
|
|
138
155
|
puts "I could not find a valid SERVERURL configuration. Contains: #{$config['SERVERURL']}".red
|
139
156
|
exit 1
|
140
157
|
end
|
141
|
-
if !$config['DEFAULT_SECRET']
|
142
|
-
puts "I could not find the DEFAULT_SECRET from Phoseum config, this will limit our actions.".red
|
143
|
-
exit 1
|
144
|
-
elsif $config['DEFAULT_SECRET'] == 'copy-secret-from-server'
|
145
|
-
puts "DEFAULT_SECRET from Phoseum config. Still on self generated value, copy a valid one from the server.".red
|
146
|
-
exit 1
|
147
|
-
elsif $config['DEFAULT_SECRET'] == ''
|
148
|
-
puts "I could not find the DEFAULT_SECRET from Phoseum config, Variable is empty.".red
|
149
|
-
exit 1
|
150
|
-
end
|
151
158
|
if !$config['SERVERURL']
|
152
159
|
puts "I could not find the SERVERURL from Phoseum config, this client is then useless.".red
|
153
160
|
exit 1
|
@@ -228,45 +235,31 @@ def search_image(sign,album='')
|
|
228
235
|
end
|
229
236
|
end
|
230
237
|
|
231
|
-
def
|
238
|
+
def api_caller(json_body,auth=false,cli=false)
|
232
239
|
headers = {}
|
233
|
-
if
|
234
|
-
|
235
|
-
|
236
|
-
|
240
|
+
if !auth
|
241
|
+
if $config['TOKEN']
|
242
|
+
headers={ "bearer" => "#{$config['TOKEN']}" }
|
243
|
+
else
|
244
|
+
return false
|
245
|
+
end
|
237
246
|
end
|
238
247
|
base = URI.parse("#{$config['SERVERURL']}")
|
239
248
|
request = Net::HTTP::Post.new(base,headers)
|
240
|
-
request.body = JSON.generate(
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
http.request(request)
|
248
|
-
end
|
249
|
-
begin
|
250
|
-
list = JSON.parse(response.body)
|
251
|
-
if list['error']
|
252
|
-
return false
|
249
|
+
request.body = JSON.generate(json_body)
|
250
|
+
|
251
|
+
if auth
|
252
|
+
if cli
|
253
|
+
request.basic_auth("cli", "loginNOauth")
|
254
|
+
else
|
255
|
+
request.basic_auth("auth", $config['DEFAULT_SECRET'])
|
253
256
|
end
|
254
|
-
|
255
|
-
|
257
|
+
else
|
258
|
+
if cli
|
259
|
+
request.basic_auth("cli", "loginNOauth")
|
256
260
|
end
|
257
|
-
rescue
|
258
|
-
puts "\nThe server sent out an Error:".red
|
259
|
-
puts clean_html(response.body)
|
260
|
-
exit 1
|
261
261
|
end
|
262
|
-
end
|
263
262
|
|
264
|
-
def cross_versions
|
265
|
-
headers = {}
|
266
|
-
base = URI.parse("#{$config['SERVERURL']}")
|
267
|
-
request = Net::HTTP::Post.new(base,headers)
|
268
|
-
request.basic_auth("cli", "loginNOauth")
|
269
|
-
request.body = JSON.generate({"action" => "version-check" })
|
270
263
|
response = Net::HTTP.start(base.hostname, $config['PORT'],
|
271
264
|
:timeout => $config['CALL_TIMEOUT'],
|
272
265
|
:use_ssl => base.scheme == "https",
|
@@ -278,56 +271,103 @@ def cross_versions
|
|
278
271
|
begin
|
279
272
|
list = JSON.parse(response.body)
|
280
273
|
return list
|
281
|
-
# if list['error']
|
282
|
-
# return false
|
283
|
-
# end
|
284
|
-
# if list['success']
|
285
|
-
# return true
|
286
|
-
# end
|
287
274
|
rescue
|
288
|
-
|
289
|
-
|
290
|
-
|
275
|
+
if !auth
|
276
|
+
puts "\nThe server sent out an Error:".red
|
277
|
+
puts clean_html(response.body)
|
278
|
+
exit 1
|
279
|
+
else
|
280
|
+
return '{"error": "Secret is invalid"}'
|
281
|
+
end
|
291
282
|
end
|
292
283
|
end
|
293
284
|
|
285
|
+
def validate_token(token)
|
286
|
+
result = api_caller({"action" => "check-token" })
|
287
|
+
if result['error']
|
288
|
+
return false
|
289
|
+
end
|
290
|
+
if result['success']
|
291
|
+
return true
|
292
|
+
end
|
293
|
+
end
|
294
294
|
|
295
|
-
def
|
296
|
-
|
297
|
-
if
|
298
|
-
headers={ "bearer" => "#{$config['TOKEN']}" }
|
299
|
-
else
|
295
|
+
def change_user_password(user,pass,auth=false)
|
296
|
+
result = api_caller({"action" => "change-password", "username" => user, "password" => pass},auth)
|
297
|
+
if result['error']
|
300
298
|
return false
|
301
299
|
end
|
302
|
-
|
303
|
-
|
304
|
-
request.body = JSON.generate({"action" => "delete-user", "username" => username })
|
305
|
-
response = Net::HTTP.start(base.hostname, $config['PORT'],
|
306
|
-
:timeout => $config['CALL_TIMEOUT'],
|
307
|
-
:use_ssl => base.scheme == "https",
|
308
|
-
:verify_mode => OpenSSL::SSL::VERIFY_PEER,
|
309
|
-
:ca_file => $config['CA_TRUST']
|
310
|
-
) do |http|
|
311
|
-
http.request(request)
|
300
|
+
if result['success']
|
301
|
+
return true
|
312
302
|
end
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
303
|
+
end
|
304
|
+
|
305
|
+
def change_username(user,new_user)
|
306
|
+
result = api_caller({"action" => "change-username", "username" => user, "new-username" => new_user},true)
|
307
|
+
if result['error']
|
308
|
+
return false
|
309
|
+
end
|
310
|
+
if result['success']
|
311
|
+
return true
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
def add_user(user,password,role)
|
316
|
+
result = api_caller({"action" => "create-user", "user" => user, "password" => password, "role" => role},true)
|
317
|
+
if result['error']
|
318
|
+
return false
|
319
|
+
end
|
320
|
+
if result['success']
|
321
|
+
return true
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
325
|
+
|
326
|
+
def change_role(user,new_role)
|
327
|
+
result = api_caller({"action" => "change-role", "username" => user, "new-role" => new_role},true)
|
328
|
+
if result['error']
|
329
|
+
return false
|
330
|
+
end
|
331
|
+
if result['success']
|
332
|
+
return true
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
def password_sanity(password)
|
337
|
+
if password.length < MIN_PASS
|
338
|
+
puts "New password is shorter than #{MIN_PASS} chars, please use a bigger password.".red
|
339
|
+
exit 1
|
340
|
+
end
|
341
|
+
if !password.test_password
|
342
|
+
puts "Password must be at least #{MIN_PASS} and contain at least one capital, one symbol, one number, one regular characters.".red
|
343
|
+
exit 1
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
def username_sanity(username)
|
348
|
+
if username.length < MIN_USER
|
349
|
+
puts "New Username is shorter than #{MIN_USER} chars, please use a bigger username.".red
|
324
350
|
exit 1
|
325
351
|
end
|
326
352
|
end
|
327
353
|
|
354
|
+
def cross_versions
|
355
|
+
return api_caller({"action" => "version-check" },true,true)
|
356
|
+
end
|
357
|
+
|
358
|
+
def delete_user(username)
|
359
|
+
result = api_caller({"action" => "delete-user", "username" => username},true)
|
360
|
+
if result['error']
|
361
|
+
return false
|
362
|
+
end
|
363
|
+
if result['success']
|
364
|
+
return true
|
365
|
+
end
|
366
|
+
end
|
367
|
+
|
328
368
|
def local_version
|
329
369
|
puts "This CLI library is running version: #{VERSION_SIGN}"
|
330
370
|
return
|
331
371
|
end
|
332
372
|
|
333
|
-
VERSION_SIGN="0.0.
|
373
|
+
VERSION_SIGN="0.0.22"
|
@@ -1,17 +1,50 @@
|
|
1
|
+
MIN_USER = 3
|
2
|
+
MIN_PASS = 7
|
3
|
+
|
1
4
|
class String
|
2
5
|
def remove_non_ascii(replacement='')
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
n=self.split("")
|
7
|
+
self.slice!(0..self.size)
|
8
|
+
n.each { |b|
|
9
|
+
if b.ord < 48 || b.ord > 57 && b.ord < 65 || b.ord > 90 && b.ord < 97 || b.ord > 122 then
|
10
|
+
self.concat(replacement)
|
11
|
+
else
|
12
|
+
self.concat(b)
|
13
|
+
end
|
14
|
+
}
|
15
|
+
self.to_s
|
16
|
+
end
|
14
17
|
|
18
|
+
def test_password()
|
19
|
+
symbol = false
|
20
|
+
number = false
|
21
|
+
capital= false
|
22
|
+
regular= false
|
23
|
+
all_valid= true
|
24
|
+
n=self.split("")
|
25
|
+
self.slice!(0..self.size)
|
26
|
+
n.each { |b|
|
27
|
+
# test symbols
|
28
|
+
if b.ord > 32 && b.ord < 48 || b.ord > 58 && b.ord < 65 || b.ord > 91 && b.ord < 97 || b.ord > 123 && b.ord < 126 then
|
29
|
+
symbol = true
|
30
|
+
# test capital letters
|
31
|
+
elsif b.ord > 65 && b.ord < 91 then
|
32
|
+
capital = true
|
33
|
+
# test numbers
|
34
|
+
elsif b.ord > 47 && b.ord < 58 then
|
35
|
+
number = true
|
36
|
+
# test regular alphabet
|
37
|
+
elsif b.ord > 96 && b.ord < 123 then
|
38
|
+
regular = true
|
39
|
+
else
|
40
|
+
# com character out of the acceptable ranges
|
41
|
+
all_valid = false
|
42
|
+
end
|
43
|
+
}
|
44
|
+
if symbol && capital && number && regular && all_valid
|
45
|
+
return true
|
46
|
+
end
|
47
|
+
end
|
15
48
|
end
|
16
49
|
|
17
50
|
def check_string_sanity(album)
|
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.
|
4
|
+
version: 0.0.22
|
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-10-
|
11
|
+
date: 2020-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yaml
|