summaryrefslogtreecommitdiff
path: root/lib/trocla/util.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/trocla/util.rb')
-rw-r--r--lib/trocla/util.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/trocla/util.rb b/lib/trocla/util.rb
new file mode 100644
index 0000000..8e94d0d
--- /dev/null
+++ b/lib/trocla/util.rb
@@ -0,0 +1,43 @@
+require 'securerandom'
+class Trocla
+ class Util
+ class << self
+ def random_str(length=12, charset='default')
+ _charsets = charsets[charset] || charsets['default']
+ _charsets_size = _charsets_size
+ (1..length).collect{|a| _charsets[SecureRandom.random_number(_charsets.size)] }.join.to_s
+ end
+
+ def salt(length=8)
+ alphanumeric_size = alphanumeric.size
+ (1..length).collect{|a| alphanumeric[SecureRandom.random_number(alphanumeric_size)] }.join.to_s
+ end
+
+ private
+
+ def charsets
+ @charsets ||= {
+ 'default' => chars,
+ 'alphanumeric' => alphanumeric,
+ 'shellsafe' => shellsafe,
+ }
+ end
+
+ def chars
+ @chars ||= shellsafe + special_chars
+ end
+ def shellsafe
+ @chars ||= alphanumeric + shellsafe_chars
+ end
+ def alphanumeric
+ @alphanumeric ||= ('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