diff options
author | asq <asq@asq.art.pl> | 2014-04-03 17:15:37 +0200 |
---|---|---|
committer | Anna Janackova <anna.janackova@gmail.com> | 2014-06-24 08:11:44 +0200 |
commit | b70fcc845696f58b2a5d36039df5f2c8c1dd2e04 (patch) | |
tree | bbb7c1cb640552e3582872d460ccde16805c56fe /lib/trocla/util.rb | |
parent | 44027adce7333c406e3308686b53b31c43161efa (diff) |
add option to generate shell-safe passwords
basically excludes characters that might be dangerous if used in shell.
many passwords generated by trocla may end up in some sort of bash
scripts (initscripts, sourced shell variables, etc) which may yeld
problems with default trocla random generator.
this can be now changed either in troclarc (with "shellsafe: true")
or on (ie. "trocla create foo plain '{ length: 32, shellsafe: true}'").
Diffstat (limited to 'lib/trocla/util.rb')
-rw-r--r-- | lib/trocla/util.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/trocla/util.rb b/lib/trocla/util.rb index 2b1c6c6..ff7e3ce 100644 --- a/lib/trocla/util.rb +++ b/lib/trocla/util.rb @@ -2,8 +2,12 @@ require 'securerandom' class Trocla class Util class << self - def random_str(length=12) - (1..length).collect{|a| chars[SecureRandom.random_number(chars.size)] }.join.to_s + def random_str(length=12,shellsafe=:undef) + if shellsafe + (1..length).collect{|a| safechars[SecureRandom.random_number(safechars.size)] }.join.to_s + else + (1..length).collect{|a| chars[SecureRandom.random_number(chars.size)] }.join.to_s + end end def salt(length=8) @@ -14,12 +18,18 @@ class Trocla def chars @chars ||= normal_chars + special_chars end + def safechars + @chars ||= normal_chars + shellsafe_chars + end def normal_chars @normal_chars ||= ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a end def special_chars @special_chars ||= "+*%/()@&=?![]{}-_.,;:".split(//) end + def shellsafe_chars + @shellsafe_chars ||= "+%/@=?_.,:".split(//) + end end end end |