Module: ModSpox

Defined in:
lib/mod_spox/Bot.rb,
lib/mod_spox/Pool.rb,
lib/mod_spox/Timer.rb,
lib/mod_spox/Action.rb,
lib/mod_spox/Loader.rb,
lib/mod_spox/Logger.rb,
lib/mod_spox/Plugin.rb,
lib/mod_spox/Socket.rb,
lib/mod_spox/Helpers.rb,
lib/mod_spox/rfc2812.rb,
lib/mod_spox/Database.rb,
lib/mod_spox/Monitors.rb,
lib/mod_spox/Pipeline.rb,
lib/mod_spox/BotConfig.rb,
lib/mod_spox/BaseConfig.rb,
lib/mod_spox/Exceptions.rb,
lib/mod_spox/models/Auth.rb,
lib/mod_spox/models/Nick.rb,
lib/mod_spox/handlers/Who.rb,
lib/mod_spox/models/Group.rb,
lib/mod_spox/PluginManager.rb,
lib/mod_spox/handlers/Join.rb,
lib/mod_spox/handlers/Kick.rb,
lib/mod_spox/handlers/Mode.rb,
lib/mod_spox/handlers/Motd.rb,
lib/mod_spox/handlers/Nick.rb,
lib/mod_spox/handlers/Part.rb,
lib/mod_spox/handlers/Ping.rb,
lib/mod_spox/handlers/Pong.rb,
lib/mod_spox/handlers/Quit.rb,
lib/mod_spox/models/Config.rb,
lib/mod_spox/models/Server.rb,
lib/mod_spox/MessageFactory.rb,
lib/mod_spox/handlers/Names.rb,
lib/mod_spox/handlers/Topic.rb,
lib/mod_spox/handlers/Whois.rb,
lib/mod_spox/models/Channel.rb,
lib/mod_spox/models/Setting.rb,
lib/mod_spox/models/Trigger.rb,
lib/mod_spox/handlers/Bounce.rb,
lib/mod_spox/handlers/Invite.rb,
lib/mod_spox/handlers/MyInfo.rb,
lib/mod_spox/handlers/Notice.rb,
lib/mod_spox/models/NickMode.rb,
lib/mod_spox/handlers/BadNick.rb,
lib/mod_spox/handlers/Created.rb,
lib/mod_spox/handlers/Handler.rb,
lib/mod_spox/handlers/LuserMe.rb,
lib/mod_spox/handlers/LuserOp.rb,
lib/mod_spox/handlers/Privmsg.rb,
lib/mod_spox/handlers/Welcome.rb,
lib/mod_spox/models/AuthGroup.rb,
lib/mod_spox/models/Signature.rb,
lib/mod_spox/handlers/YourHost.rb,
lib/mod_spox/handlers/NickInUse.rb,
lib/mod_spox/models/ChannelMode.rb,
lib/mod_spox/models/NickChannel.rb,
lib/mod_spox/ConfigurationWizard.rb,
lib/mod_spox/handlers/LuserClient.rb,
lib/mod_spox/handlers/LuserUnknown.rb,
lib/mod_spox/messages/incoming/Who.rb,
lib/mod_spox/messages/outgoing/Die.rb,
lib/mod_spox/messages/outgoing/Who.rb,
lib/mod_spox/handlers/LuserChannels.rb,
lib/mod_spox/messages/incoming/Join.rb,
lib/mod_spox/messages/incoming/Kick.rb,
lib/mod_spox/messages/incoming/Mode.rb,
lib/mod_spox/messages/incoming/Motd.rb,
lib/mod_spox/messages/incoming/Nick.rb,
lib/mod_spox/messages/incoming/Part.rb,
lib/mod_spox/messages/incoming/Ping.rb,
lib/mod_spox/messages/incoming/Pong.rb,
lib/mod_spox/messages/incoming/Quit.rb,
lib/mod_spox/messages/outgoing/Away.rb,
lib/mod_spox/messages/outgoing/Info.rb,
lib/mod_spox/messages/outgoing/Ison.rb,
lib/mod_spox/messages/outgoing/Join.rb,
lib/mod_spox/messages/outgoing/Kick.rb,
lib/mod_spox/messages/outgoing/Kill.rb,
lib/mod_spox/messages/outgoing/List.rb,
lib/mod_spox/messages/outgoing/Motd.rb,
lib/mod_spox/messages/outgoing/Nick.rb,
lib/mod_spox/messages/outgoing/Oper.rb,
lib/mod_spox/messages/outgoing/Part.rb,
lib/mod_spox/messages/outgoing/Pass.rb,
lib/mod_spox/messages/outgoing/Ping.rb,
lib/mod_spox/messages/outgoing/Pong.rb,
lib/mod_spox/messages/outgoing/Quit.rb,
lib/mod_spox/messages/outgoing/Time.rb,
lib/mod_spox/messages/outgoing/User.rb,
lib/mod_spox/messages/incoming/Names.rb,
lib/mod_spox/messages/incoming/Topic.rb,
lib/mod_spox/messages/incoming/Whois.rb,
lib/mod_spox/messages/outgoing/Admin.rb,
lib/mod_spox/messages/outgoing/Links.rb,
lib/mod_spox/messages/outgoing/Names.rb,
lib/mod_spox/messages/outgoing/Squit.rb,
lib/mod_spox/messages/outgoing/Stats.rb,
lib/mod_spox/messages/outgoing/Topic.rb,
lib/mod_spox/messages/outgoing/Trace.rb,
lib/mod_spox/messages/outgoing/Users.rb,
lib/mod_spox/messages/outgoing/Whois.rb,
lib/mod_spox/messages/incoming/Bounce.rb,
lib/mod_spox/messages/incoming/Invite.rb,
lib/mod_spox/messages/incoming/MyInfo.rb,
lib/mod_spox/messages/incoming/Notice.rb,
lib/mod_spox/messages/outgoing/Invite.rb,
lib/mod_spox/messages/outgoing/Lusers.rb,
lib/mod_spox/messages/outgoing/Notice.rb,
lib/mod_spox/messages/outgoing/Rehash.rb,
lib/mod_spox/messages/outgoing/Simple.rb,
lib/mod_spox/messages/outgoing/Squery.rb,
lib/mod_spox/messages/outgoing/Summon.rb,
lib/mod_spox/messages/outgoing/Unaway.rb,
lib/mod_spox/messages/outgoing/WhoWas.rb,
lib/mod_spox/messages/incoming/BadNick.rb,
lib/mod_spox/messages/incoming/Created.rb,
lib/mod_spox/messages/incoming/LuserMe.rb,
lib/mod_spox/messages/incoming/LuserOp.rb,
lib/mod_spox/messages/incoming/Message.rb,
lib/mod_spox/messages/incoming/Privmsg.rb,
lib/mod_spox/messages/incoming/Welcome.rb,
lib/mod_spox/messages/internal/HaltBot.rb,
lib/mod_spox/messages/internal/Request.rb,
lib/mod_spox/messages/outgoing/Connect.rb,
lib/mod_spox/messages/outgoing/Privmsg.rb,
lib/mod_spox/messages/outgoing/Restart.rb,
lib/mod_spox/messages/outgoing/Version.rb,
lib/mod_spox/messages/incoming/YourHost.rb,
lib/mod_spox/messages/internal/Response.rb,
lib/mod_spox/messages/internal/Shutdown.rb,
lib/mod_spox/messages/internal/TimerAdd.rb,
lib/mod_spox/messages/outgoing/ServList.rb,
lib/mod_spox/messages/outgoing/UserHost.rb,
lib/mod_spox/messages/outgoing/UserMode.rb,
lib/mod_spox/migration/001_create_auths.rb,
lib/mod_spox/migration/001_create_nicks.rb,
lib/mod_spox/messages/incoming/NickInUse.rb,
lib/mod_spox/messages/incoming/TopicInfo.rb,
lib/mod_spox/messages/internal/Connected.rb,
lib/mod_spox/migration/001_create_config.rb,
lib/mod_spox/messages/internal/ChangeNick.rb,
lib/mod_spox/messages/internal/TimerClear.rb,
lib/mod_spox/migration/001_create_channel.rb,
lib/mod_spox/migration/001_create_servers.rb,
lib/mod_spox/messages/incoming/LuserClient.rb,
lib/mod_spox/messages/internal/NickRequest.rb,
lib/mod_spox/messages/internal/TimerRemove.rb,
lib/mod_spox/messages/outgoing/ChannelMode.rb,
lib/mod_spox/migration/001_create_settings.rb,
lib/mod_spox/migration/001_create_triggers.rb,
lib/mod_spox/messages/incoming/LuserUnknown.rb,
lib/mod_spox/messages/internal/Disconnected.rb,
lib/mod_spox/messages/internal/NickResponse.rb,
lib/mod_spox/messages/internal/PluginReload.rb,
lib/mod_spox/messages/incoming/LuserChannels.rb,
lib/mod_spox/messages/internal/Disconnecting.rb,
lib/mod_spox/messages/internal/PluginRequest.rb,
lib/mod_spox/messages/internal/StatusRequest.rb,
lib/mod_spox/messages/internal/TimerResponse.rb,
lib/mod_spox/migration/001_create_nick_modes.rb,
lib/mod_spox/migration/001_create_signatures.rb,
lib/mod_spox/messages/internal/BotInitialized.rb,
lib/mod_spox/messages/internal/PluginResponse.rb,
lib/mod_spox/messages/internal/StatusResponse.rb,
lib/mod_spox/messages/internal/TriggersUpdate.rb,
lib/mod_spox/messages/internal/ConnectionFailed.rb,
lib/mod_spox/messages/internal/SignaturesUpdate.rb,
lib/mod_spox/migration/001_create_channel_modes.rb,
lib/mod_spox/migration/001_create_nick_channels.rb,
lib/mod_spox/messages/internal/PluginLoadRequest.rb,
lib/mod_spox/messages/internal/PluginLoadResponse.rb,
lib/mod_spox/messages/internal/EstablishConnection.rb,
lib/mod_spox/messages/internal/PluginModuleRequest.rb,
lib/mod_spox/messages/internal/PluginUnloadRequest.rb,
lib/mod_spox/messages/internal/PluginModuleResponse.rb,
lib/mod_spox/messages/internal/PluginUnloadResponse.rb

Defined Under Namespace

Modules: Exceptions, Handlers, Helpers, Messages, Migrators, Models, Monitors Classes: Action, BaseConfig, Bot, BotConfig, ConfigurationWizard, Database, Logger, MessageFactory, Pipeline, Plugin, PluginManager, Pool, Socket, Timer

Constant Summary collapse

RPL_WELCOME =

client server messages#

'001'
RPL_YOURHOST =
'002'
RPL_CREATED =
'003'
RPL_MYINFO =
'004'
RPL_BOUNCE =
'005'
RPL_USERHOST =

response replies#

'302'
RPL_ISON =
'303'
RPL_AWAY =
'301'
RPL_UNAWAY =
'305'
RPL_NOWAWAY =
'306'
RPL_WHOISIDENTIFIED =
'307'
RPL_WHOISUSER =
'311'
RPL_WHOISSERVER =
'312'
RPL_WHOISOPERATOR =
'313'
RPL_WHOISIDLE =
'317'
RPL_ENDOFWHOIS =
'318'
RPL_WHOISCHANNELS =
'319'
RPL_WHOWASUSER =
'314'
RPL_ENDOFWHOWAS =
'369'
RPL_LISTSTART =
'321'
RPL_LIST =
'322'
RPL_LISTEND =
'323'
RPL_UNIQOPIS =
'325'
RPL_CHANNELMODEIS =
'324'
RPL_NOTOPIC =
'331'
RPL_TOPIC =
'332'
RPL_TOPICINFO =
'333'
RPL_INVITING =
'341'
RPL_SUMMONING =
'342'
RPL_INVITELIST =
'346'
RPL_ENDOFINVITELIST =
'347'
RPL_EXCEPTLIST =
'348'
RPL_ENDOFEXCEPTLIST =
'349'
RPL_VERSION =
'351'
RPL_WHOREPLY =
'352'
RPL_ENDOFWHO =
'315'
RPL_NAMREPLY =
'353'
RPL_ENDOFNAMES =
'366'
'364'
'365'
RPL_BANLIST =
'367'
RPL_ENDOFBANLIST =
'368'
RPL_INFO =
'371'
RPL_ENDOFINFO =
'374'
RPL_MOTDSTART =
'375'
RPL_MOTD =
'372'
RPL_ENDOFMOTD =
'376'
RPL_YOUREOPER =
'381'
RPL_REHASHING =
'382'
RPL_YOURESERVICE =
'383'
RPL_TIME =
'391'
RPL_USERSSTART =
'392'
RPL_USERS =
'393'
RPL_ENDOFUSERS =
'394'
RPL_NOUSERS =
'395'
'200'
RPL_TRACECONNECTING =
'201'
RPL_TRACEHANDSHAKE =
'202'
RPL_TRACEUNKNOWN =
'203'
RPL_TRACEOPERATOR =
'204'
RPL_TRACEUSER =
'205'
RPL_TRACESERVER =
'206'
RPL_TRACESERVICE =
'207'
RPL_TRACENEWTYPE =
'208'
RPL_TRACECLASS =
'209'
RPL_TRACERECONNECT =
'210'
RPL_TRACELOG =
'261'
RPL_TRACEEND =
'262'
RPL_STATSLINKINFO =
'211'
RPL_STATSCOMMANDS =
'212'
RPL_ENDOFSTATS =
'219'
RPL_STATSUPTIME =
'242'
RPL_STATSOLINE =
'243'
RPL_UMODEIS =
'221'
RPL_SERVLIST =
'234'
RPL_SERVLISTEND =
'235'
RPL_LUSERCLIENT =
'251'
RPL_LUSEROP =
'252'
RPL_LUSERUNKNOWN =
'253'
RPL_LUSERCHANNELS =
'254'
RPL_LUSERME =
'255'
RPL_ADMINME =
'256'
RPL_ADMINLOC1 =
'257'
RPL_ADMINLOC2 =
'258'
RPL_ADMINEMAIL =
'259'
RPL_TRYAGAIN =
'263'
ERR_NOSUCHNICK =

error messages#

'401'
ERR_NOSUCHSERVER =
'402'
ERR_NOSUCHCHANNEL =
'403'
ERR_CANNOTSENDTOCHAN =
'404'
ERR_TOOMANYCHANNELS =
'405'
ERR_WASNOSUCHNICK =
'406'
ERR_TOOMANYTARGETS =
'407'
ERR_NOSUCHSERVICE =
'408'
ERR_NOORIGIN =
'409'
ERR_NORECIPIENT =
'411'
ERR_NOTEXTTOSEND =
'412'
ERR_NOTOPLEVEL =
'413'
ERR_WILDTOPLEVEL =
'413'
ERR_BADMASK =
'415'
ERR_UNKNOWNCOMMAND =
'421'
ERR_NOMOTD =
'422'
ERR_NOADMININFO =
'423'
ERR_FILEERROR =
'424'
ERR_NONICKNAMEGIVEN =
'431'
ERR_ERRONEOUSNICKNAME =
'432'
ERR_NICKNAMEINUSE =
'433'
ERR_NICKCOLLISION =
'436'
ERR_UNAVAILRESOURCE =
'437'
ERR_USERNOTINCHANNEL =
'441'
ERR_NOTONCHANNEL =
'442'
ERR_USERONCHANNEL =
'443'
ERR_NOLOGIN =
'444'
ERR_SUMMONDISABLED =
'445'
ERR_USERDISABLED =
'446'
ERR_NOTREGISTERED =
'451'
ERR_NEEDMOREPARAMS =
'461'
ERR_ALREADYREGISTERED =
'462'
ERR_NOPERMFORHOST =
'463'
ERR_PASSWDMISMATCH =
'464'
ERR_YOUREBANNEDCREEP =
'465'
ERR_YOUWILLBEBANNED =
'466'
ERR_KEYSET =
'467'
ERR_CHANNELISFULL =
'471'
ERR_UNKNOWNMODE =
'472'
ERR_INVITEONLYCHAN =
'473'
ERR_BANNEDFROMCHAN =
'474'
ERR_BADCHANNELKEY =
'475'
ERR_BADCHANMASK =
'476'
ERR_NOCHANMODES =
'477'
ERR_BANLISTFULL =
'478'
ERR_NOPRIVILEGES =
'481'
ERR_CHANOPRIVSNEEDED =
'482'
ERR_CANTKILLSERVER =
'483'
ERR_RESTRICTED =
'484'
ERR_UNIQOPPRIVSNEEDED =
'485'
ERR_NOOPERHOST =
'491'
ERR_UMODEUNKNOWNFLAG =
'501'
ERR_USERSDONTMATCH =
'502'
RPL_SERVICEINFO =

extras#

'231'
RPL_ENDOFSERVICES =
'232'
RPL_SERVICE =
'233'
RPL_NONE =
'300'
RPL_WHOISCHANOP =
'316'
RPL_KILLDONE =
'361'
RPL_CLOSING =
'362'
RPL_CLOSEEND =
'363'
RPL_INFOSTART =
'373'
RPL_MYPORTIS =
'384'
RPL_STATSCLINE =
'213'
RPL_STATSNLINE =
'214'
RPL_STATSILINE =
'215'
RPL_STATSKLINE =
'216'
RPL_STATSQLINE =
'217'
RPL_STATSYLINE =
'218'
RPL_STATSVLINE =
'240'
RPL_STATSLLINE =
'241'
RPL_STATSHLINE =
'244'
RPL_STATSSLINE =
'244'
RPL_STATSPING =
'246'
RPL_STATSBLINE =
'247'
RPL_STATSDLINE =
'250'
ERR_NOSERVICEHOST =
'492'

Instance Method Summary collapse

Instance Method Details

#initialize_botObject

Loads all files needed by the bot



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/mod_spox/Loader.rb', line 32

def initialize_bot
    setup_adapter
    @@failed = Array.new
    load_directory
    tries = 0
    message = nil
    until @@failed.empty? || tries > 5 do
        @@failed.each{|f|
            begin
                require "mod_spox/#{f}"
                @@failed.delete(f)
            rescue Object => boom
                message = boom
            end
        }
        tries += 1
    end
    if(tries > 5)
        puts 'Failed'
        puts "ERROR: Failed to load required libraries"
        puts "Reason: #{message}"
        puts "#{message.backtrace.join("\n")}"
        exit
    end
end

#load_directory(directory = '') ⇒ Object

directory

path to directory

Requires all .rb files found within the given directory and all its subdirectories



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/mod_spox/Loader.rb', line 6

def load_directory(directory='')
    base = File.dirname(__FILE__)
    Dir.new("#{base}/#{directory}").each{|item|
        next if ['.', '..'].include?(item)
        if(File.directory?("#{base}/#{directory}/#{item}"))
            load_directory("#{directory}/#{item}")
        elsif(item =~ /\.rb$/)
            item = "#{directory}/#{item}" if directory.length > 0
            begin
                require "mod_spox/#{item}"
            rescue Object => boom
                @@failed << item
            end
        end
    }
    @@failed.each{|f| 
        begin
            require "mod_spox/#{f}"
            @@failed.delete(f)
        rescue Object => boom
            # do nothing #
        end
    }
end

#setup_adapterObject

Setup the DataMapper adapter



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/mod_spox/Loader.rb', line 59

def setup_adapter
    require 'mod_spox/Exceptions'
    require 'mod_spox/BotConfig'
    require 'mod_spox/BaseConfig'
    require 'mod_spox/Database'
    memcache = false
    config = BaseConfig.new(BotConfig[:userconfigpath])
    if(config[:memcache] == 'on')
        begin
            require 'memcache'
            memcache = true
            Database.cache = MemCache.new('localhost:11211', :namespace => 'modspox')
        rescue Object => boom
            puts "FAILED TO LOAD MEMCACHE SUPPORT: #{boom}"
            # do nothing #
        end
    end
    case config[:db_adapter]
        when 'mysql'
            Database.db = Sequel.mysql(config[:db_database], :user => config[:db_username],
                    :password => config[:db_password], :host => config[:db_host])
            Database.type = :mysql
        when 'pgsql'
            Database.db = Sequel.open("postgres://#{config[:db_username]}:#{config[:db_password]}@#{config[:db_host]}/#{config[:db_database]}")
            Database.type = :pgsql
        when 'sqlite'
            Database.db = Sequel.sqlite "#{BotConfig[:userpath]}/mod_spox.db"
            Database.type = :sqlite
    end
end