]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/botuser.rb
geoip plugin: added nick based network-wide lookup and fixed some charset issues
[user/henk/code/ruby/rbot.git] / lib / rbot / botuser.rb
index c77db4a54817f61ac939e06fff0be9f61aeb787a..a4bec7088e22be52a6598c25eba6e5dba4695629 100644 (file)
@@ -4,8 +4,6 @@
 #
 # rbot user management
 # Author:: Giuseppe Bilotta (giuseppe.bilotta@gmail.com)
-# Copyright:: Copyright (c) 2006 Giuseppe Bilotta
-# License:: GPLv2
 
 require 'singleton'
 require 'set'
@@ -240,6 +238,7 @@ class Bot
       attr_reader :password
       attr_reader :netmasks
       attr_reader :perm
+      attr_reader :perm_temp
       attr_writer :login_by_mask
       attr_writer :transient
 
@@ -317,6 +316,7 @@ class Bot
         raise "must provide a usable mask for transient BotUser #{@username}" if @transient and @netmasks.empty?
 
         @perm = {}
+        @perm_temp = {}
       end
 
       # Inspection
@@ -327,6 +327,7 @@ class Bot
         str << " @username=#{@username.inspect}"
         str << " @netmasks=#{@netmasks.inspect}"
         str << " @perm=#{@perm.inspect}"
+        str << " @perm_temp=#{@perm_temp.inspect}" unless @perm_temp.empty?
         str << " @login_by_mask=#{@login_by_mask}"
         str << " @autologin=#{@autologin}"
         str << ">"
@@ -426,6 +427,20 @@ class Bot
         set_permission(cmd, nil, chan)
       end
 
+      # Sets the temporary permission for command _cmd_ to _val_ on channel _chan_
+      #
+      def set_temp_permission(cmd, val, chan="*")
+        k = chan.to_s.to_sym
+        @perm_temp[k] = PermissionSet.new unless @perm_temp.has_key?(k)
+        @perm_temp[k].set_permission(cmd, val)
+      end
+
+      # Resets the temporary permission for command _cmd_ on channel _chan_
+      #
+      def reset_temp_permission(cmd, chan ="*")
+        set_temp_permission(cmd, nil, chan)
+      end
+
       # Checks if BotUser is allowed to do something on channel _chan_,
       # or on all channels if _chan_ is nil
       #
@@ -436,8 +451,9 @@ class Bot
           k = :*
         end
         allow = nil
-        if @perm.has_key?(k)
-          allow = @perm[k].permit?(cmd)
+        pt = @perm.merge @perm_temp
+        if pt.has_key?(k)
+          allow = pt[k].permit?(cmd)
         end
         return allow
       end