else
@commands = Hash.new
end
-
- # Migrate old Hash to new:
- @commands.each_pair do |name, cmd|
- unless cmd.instance_of?( Command )
- @commands[name] = Command.new( cmd, 'unknown hacker', 'somedate', '#somechan' )
- end
- end
end
user = args.empty? ? m.sourcenick : args.first
Thread.start {
+ # TODO allow different safe levels for different botusers
$SAFE = 3
begin
end
+ def handle_eval( m, params )
+ code = params[:code].to_s.dup.untaint
+ Thread.start {
+ # TODO allow different safe levels for different botusers
+ begin
+ eval( code )
+ rescue => e
+ m.reply( "Script '#{name}' crapped out :(" )
+ m.reply( e.inspect )
+ end
+ }
+ end
+
+
+ def handle_echo( m, params )
+ code = params[:code].to_s.dup.untaint
+ Thread.start {
+ # TODO allow different safe levels for different botusers
+ begin
+ m.reply eval( code ).to_s
+ rescue => e
+ m.reply( "Script '#{name}' crapped out :(" )
+ m.reply( e.inspect )
+ end
+ }
+ end
+
+
def handle_add( m, params, force = false )
name = params[:name]
if !force and @commands.has_key?( name )
return
end
- code = params[:code].join( " " )
+ code = params[:code].to_s
nick = m.sourcenick
created = Time.new.strftime '%Y/%m/%d %H:%m'
channel = m.target
plugin = ScriptPlugin.new
plugin.register( "script" )
-
-plugin.map 'script add -f :name *code', :action => 'handle_add_force', :auth => 'scriptedit'
-plugin.map 'script add :name *code', :action => 'handle_add', :auth => 'scriptedit'
-plugin.map 'script del :name', :action => 'handle_del', :auth => 'scriptedit'
+plugin.default_auth( 'edit', false )
+plugin.default_auth( 'eval', false )
+plugin.default_auth( 'echo', false )
+
+plugin.map 'script add -f :name *code', :action => 'handle_add_force', :auth_path => 'edit'
+plugin.map 'script add :name *code', :action => 'handle_add', :auth_path => 'edit'
+plugin.map 'script del :name', :action => 'handle_del', :auth_path => 'edit'
+plugin.map 'script eval *code', :action => 'handle_eval'
+plugin.map 'script echo *code', :action => 'handle_echo'
plugin.map 'script list :page', :action => 'handle_list', :defaults => { :page => '1' }
plugin.map 'script show :name', :action => 'handle_show'