]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/botuser.rb
* apparently, synthetic privmsgs for remotectl are hard. may need some massive rework...
[user/henk/code/ruby/rbot.git] / lib / rbot / botuser.rb
index 52b831518e8cd634ea8616e8128994c27b9c2ab9..bed2b627cb59e9a36ea3a0ca1757f6771ecf88e8 100644 (file)
@@ -34,8 +34,8 @@ module Irc
     #\r
     def Auth.random_password(l=8)\r
       pwd = ""\r
-      8.times do\r
-        pwd += (rand(26) + (rand(2) == 0 ? 65 : 97) ).chr\r
+      l.times do\r
+        pwd << (rand(26) + (rand(2) == 0 ? 65 : 97) ).chr\r
       end\r
       return pwd\r
     end\r
@@ -263,18 +263,19 @@ module Irc
       # This method sets the password if the proposed new password\r
       # is valid\r
       def password=(pwd=nil)\r
-        if pwd\r
+        pass = pwd.to_s\r
+        if pass.empty?\r
+          reset_password\r
+        else\r
           begin\r
-            raise InvalidPassword, "#{pwd} contains invalid characters" if pwd !~ /^[A-Za-z0-9]+$/\r
-            raise InvalidPassword, "#{pwd} too short" if pwd.length < 4\r
-            @password = pwd\r
+            raise InvalidPassword, "#{pass} contains invalid characters" if pass !~ /^[\x21-\x7e]+$/\r
+            raise InvalidPassword, "#{pass} too short" if pass.length < 4\r
+            @password = pass\r
           rescue InvalidPassword => e\r
             raise e\r
           rescue => e\r
-            raise InvalidPassword, "Exception #{e.inspect} while checking #{pwd}"\r
+            raise InvalidPassword, "Exception #{e.inspect} while checking #{pass.inspect} (#{pwd.inspect})"\r
           end\r
-        else\r
-          reset_password\r
         end\r
       end\r
 \r