[39] | 1 | /* |
---|
| 2 | * MangChat By |Death| And Cybrax |
---|
| 3 | * |
---|
| 4 | * This Program Is Free Software; You Can Redistribute It And/Or Modify It Under The Terms |
---|
| 5 | * Of The GNU General Public License |
---|
| 6 | * Written and Developed by Cybrax. cybraxvd@gmail.com |
---|
| 7 | * |Death| <death@hell360.net>, Lice <lice@yeuxverts.net>, Dj_baby & Sanaell, Tase |
---|
| 8 | * With Help And Support From The MaNGOS Project Community. |
---|
| 9 | * PLEASE RETAIN THE COPYRIGHT OF THE AUTHORS. |
---|
| 10 | */ |
---|
| 11 | #include "IRCClient.h" |
---|
| 12 | #include "IRCCmd.h" |
---|
| 13 | #include "../shared/Config/Config.h" |
---|
| 14 | #include "IRCConf.h" |
---|
| 15 | Config MCConfig; |
---|
| 16 | void IRCClient::SetCfg(char const* cfgfile) |
---|
| 17 | { |
---|
| 18 | sIRC.CfgFile = cfgfile; |
---|
| 19 | } |
---|
| 20 | bool IRCClient::LoadConfig(char const* cfgfile) |
---|
| 21 | { |
---|
| 22 | if (!MCConfig.SetSource(cfgfile)) |
---|
| 23 | sLog.outString("*** MangChat: Unable to open configuration file, All default options are being used."); |
---|
| 24 | else sLog.outString("*** MangChat: Found the configuration file, %s", cfgfile); |
---|
| 25 | |
---|
| 26 | int ConfCnt = 0; |
---|
| 27 | sIRC._chan_count = 0; |
---|
| 28 | if(MCConfig.GetIntDefault("irc.active", 1) == 1) |
---|
| 29 | sIRC.Active = true; |
---|
| 30 | else |
---|
| 31 | sIRC.Active = false; |
---|
| 32 | sIRC._Host = MCConfig.GetStringDefault("irc.host", "irc.freenode.net"); |
---|
| 33 | if(sIRC._Host.size() > 0) |
---|
| 34 | ConfCnt++; |
---|
| 35 | sIRC._Mver = MCConfig.GetStringDefault("irc.mver", "Version 1.6.5"); |
---|
| 36 | sIRC._Port = MCConfig.GetIntDefault("irc.port", 6667); |
---|
| 37 | sIRC._User = MCConfig.GetStringDefault("irc.user", "MangChat"); |
---|
| 38 | sIRC._Pass = MCConfig.GetStringDefault("irc.pass", "MyDumbPass"); |
---|
| 39 | sIRC._Nick = MCConfig.GetStringDefault("irc.nick", "MangChat"); |
---|
| 40 | sIRC._Auth = MCConfig.GetIntDefault("irc.auth", 0); |
---|
| 41 | sIRC._Auth_Nick = MCConfig.GetStringDefault("irc.auth.nick", "AuthNick"); |
---|
| 42 | sIRC._ICC = MCConfig.GetStringDefault("irc.icc", "001"); |
---|
| 43 | sIRC._defchan = MCConfig.GetStringDefault("irc.defchan", "lobby"); |
---|
| 44 | sIRC._ldefc = MCConfig.GetIntDefault("irc.ldef", 0); |
---|
| 45 | sIRC._wct = MCConfig.GetIntDefault("irc.wct", 30000); |
---|
| 46 | sIRC.ajoin = MCConfig.GetIntDefault("irc.ajoin", 1); |
---|
| 47 | sIRC.ajchan = MCConfig.GetStringDefault("irc.ajchan", "world"); |
---|
| 48 | sIRC.onlrslt = MCConfig.GetIntDefault("irc.online.result", 10); |
---|
| 49 | sIRC.BOTMASK = MCConfig.GetIntDefault("Botmask", 0); |
---|
| 50 | sIRC.logfile = MCConfig.GetStringDefault("irc.logfile.prefix", "IRC_"); |
---|
| 51 | for(int i = 1; i < MAX_CONF_CHANNELS;i++) |
---|
| 52 | { |
---|
| 53 | std::ostringstream ss; |
---|
| 54 | ss << i; |
---|
| 55 | std::string ci = "irc.chan_" + ss.str(); |
---|
| 56 | std::string t_chan = MCConfig.GetStringDefault(ci.c_str(), ""); |
---|
| 57 | if(t_chan.size() > 0) |
---|
| 58 | { |
---|
| 59 | sIRC._chan_count++; |
---|
| 60 | sIRC._irc_chan[sIRC._chan_count] = t_chan; |
---|
| 61 | ci = "wow.chan_" + ss.str(); |
---|
| 62 | sIRC._wow_chan[sIRC._chan_count] = MCConfig.GetStringDefault(ci.c_str(), t_chan.c_str()); |
---|
| 63 | } |
---|
| 64 | } |
---|
| 65 | sIRC.JoinMsg = MCConfig.GetStringDefault("irc.joinmsg", "Whhaaazzzzaaaa, MangChat $Ver Baby!!"); |
---|
| 66 | sIRC.RstMsg = MCConfig.GetStringDefault("irc.rstmsg", "MangChat Is Restarting, I Will Be Right Back!"); |
---|
| 67 | sIRC.kikmsg = MCConfig.GetStringDefault("irc.kickmsg", "Do Not Kick Me Again, Severe Actions Will Be Taken!"); |
---|
| 68 | // IRC LINES |
---|
| 69 | sIRC.ILINES[WOW_IRC] = MCConfig.GetStringDefault("chat.wow_irc", "\003<WoW>[\002$Name($Level)\002\003] $Msg"); |
---|
| 70 | sIRC.ILINES[IRC_WOW] = MCConfig.GetStringDefault("chat.irc_wow", "\003<IRC>[$Name]: $Msg"); |
---|
| 71 | sIRC.ILINES[JOIN_WOW] = MCConfig.GetStringDefault("chat.join_wow", "\00312>>\00304 $Name \003Joined The Channel!"); |
---|
| 72 | sIRC.ILINES[JOIN_IRC] = MCConfig.GetStringDefault("chat.join_irc", "\003[$Name]: Has Joined IRC!"); |
---|
| 73 | sIRC.ILINES[LEAVE_WOW] = MCConfig.GetStringDefault("chat.leave_wow", "\00312<<\00304 $Name \003Left The Channel!"); |
---|
| 74 | sIRC.ILINES[LEAVE_IRC] = MCConfig.GetStringDefault("chat.leave_irc", "\003[$Name]: Has Left IRC!"); |
---|
| 75 | sIRC.ILINES[CHANGE_NICK] = MCConfig.GetStringDefault("chat.change_nick", "\003<> $Name Is Now Known As $NewName!"); |
---|
| 76 | // MangChat Options |
---|
| 77 | sIRC._MCA = MCConfig.GetIntDefault("irc.maxattempt", 10); |
---|
| 78 | sIRC._autojoinkick = MCConfig.GetIntDefault("irc.autojoin_kick", 1); |
---|
| 79 | sIRC._cmd_prefx = MCConfig.GetStringDefault("irc.command_prefix", "."); |
---|
| 80 | |
---|
| 81 | sIRC._op_gm = MCConfig.GetIntDefault("irc.op_gm_login", 0); |
---|
| 82 | sIRC._op_gm_lev = MCConfig.GetIntDefault("irc.op_gm_level", 3); |
---|
| 83 | |
---|
| 84 | // Misc Options |
---|
| 85 | sIRC.games = MCConfig.GetIntDefault("irc.fun.games", 0); |
---|
| 86 | sIRC.gmlog = MCConfig.GetIntDefault("irc.gmlog", 1); |
---|
| 87 | sIRC.BOTMASK = MCConfig.GetIntDefault("BotMask", 0); |
---|
| 88 | sIRC.Status = MCConfig.GetIntDefault("irc.StatusChannel", 1); |
---|
| 89 | sIRC.anchn = MCConfig.GetIntDefault("irc.AnnounceChannel", 1); |
---|
| 90 | sIRC.autoanc = MCConfig.GetIntDefault("irc.auto.announce", 30); |
---|
| 91 | sIRC.ojGM1 = MCConfig.GetStringDefault("irc.gm1", "[Moderator]"); |
---|
| 92 | sIRC.ojGM2 = MCConfig.GetStringDefault("irc.gm2", "[Game Master]"); |
---|
| 93 | sIRC.ojGM3 = MCConfig.GetStringDefault("irc.gm3", "[BugTracker]"); |
---|
| 94 | sIRC.ojGM4 = MCConfig.GetStringDefault("irc.gm4", "[DevTeam Admin]"); |
---|
| 95 | sIRC.ojGM5 = MCConfig.GetStringDefault("irc.gm5", "[Root Admin]"); |
---|
| 96 | // REQUIRED GM LEVEL |
---|
| 97 | QueryResult *result = WorldDatabase.PQuery("SELECT `Command`, `gmlevel` FROM `IRC_Commands` ORDER BY `Command`"); |
---|
| 98 | if(result) |
---|
| 99 | { |
---|
| 100 | Field *fields = result->Fetch(); |
---|
| 101 | for (uint64 i=0; i < result->GetRowCount(); i++) |
---|
| 102 | { |
---|
| 103 | std::string command = fields[0].GetCppString(); |
---|
| 104 | uint32 gmlvl = fields[1].GetUInt32(); |
---|
| 105 | if(command == "acct") sIRC.CACCT = gmlvl; |
---|
| 106 | if(command == "ban") sIRC.CBAN = gmlvl; |
---|
| 107 | if(command == "char") sIRC.CCHAN = gmlvl; |
---|
| 108 | if(command == "char") sIRC.CCHAR = gmlvl; |
---|
| 109 | if(command == "fun") sIRC.CFUN = gmlvl; |
---|
| 110 | if(command == "help") sIRC.CHELP = gmlvl; |
---|
| 111 | if(command == "inchan") sIRC.CINCHAN = gmlvl; |
---|
| 112 | if(command == "info") sIRC.CINFO = gmlvl; |
---|
| 113 | if(command == "item") sIRC.CITEM = gmlvl; |
---|
| 114 | if(command == "jail") sIRC.CJAIL = gmlvl; |
---|
| 115 | if(command == "kick") sIRC.CKICK = gmlvl; |
---|
| 116 | if(command == "kill") sIRC._KILL = gmlvl; |
---|
| 117 | if(command == "level") sIRC.CLEVEL = gmlvl; |
---|
| 118 | if(command == "lookup") sIRC.CLOOKUP = gmlvl; |
---|
| 119 | if(command == "money") sIRC.CMONEY = gmlvl; |
---|
| 120 | if(command == "mute") sIRC.CMUTE = gmlvl; |
---|
| 121 | if(command == "online") sIRC.CONLINE = gmlvl; |
---|
| 122 | if(command == "pm") sIRC.CPM = gmlvl; |
---|
| 123 | if(command == "restart") sIRC.CRESTART = gmlvl; |
---|
| 124 | if(command == "revive") sIRC.CREVIVE = gmlvl; |
---|
| 125 | if(command == "saveall") sIRC.CSAVEALL = gmlvl; |
---|
| 126 | if(command == "shutdown") sIRC.CSHUTDOWN = gmlvl; |
---|
| 127 | if(command == "spell") sIRC.CSPELL = gmlvl; |
---|
| 128 | if(command == "sysmsg") sIRC.CSYSMSG = gmlvl; |
---|
| 129 | if(command == "tele") sIRC.CTELE = gmlvl; |
---|
| 130 | if(command == "top") sIRC.CTOP = gmlvl; |
---|
| 131 | if(command == "who") sIRC.CWHO = gmlvl; |
---|
| 132 | result->NextRow(); |
---|
| 133 | } |
---|
| 134 | delete result; |
---|
| 135 | } |
---|
| 136 | else |
---|
| 137 | { |
---|
| 138 | sIRC.CACCT = 3; |
---|
| 139 | sIRC.CBAN = 3; |
---|
| 140 | sIRC.CCHAN = 3; |
---|
| 141 | sIRC.CCHAR = 3; |
---|
| 142 | sIRC.CFUN = 3; |
---|
| 143 | sIRC.CHELP = 3; |
---|
| 144 | sIRC.CINCHAN = 3; |
---|
| 145 | sIRC.CINFO = 3; |
---|
| 146 | sIRC.CITEM = 3; |
---|
| 147 | sIRC.CJAIL = 3; |
---|
| 148 | sIRC.CKICK = 3; |
---|
| 149 | sIRC._KILL = 3; |
---|
| 150 | sIRC.CLEVEL = 3; |
---|
| 151 | sIRC.CLOOKUP = 3; |
---|
| 152 | sIRC.CMONEY = 3; |
---|
| 153 | sIRC.CMUTE = 3; |
---|
| 154 | sIRC.CONLINE = 3; |
---|
| 155 | sIRC.CPM = 3; |
---|
| 156 | sIRC.CRESTART = 3; |
---|
| 157 | sIRC.CREVIVE = 3; |
---|
| 158 | sIRC.CSAVEALL = 3; |
---|
| 159 | sIRC.CSHUTDOWN = 3; |
---|
| 160 | sIRC.CSPELL = 3; |
---|
| 161 | sIRC.CSYSMSG = 3; |
---|
| 162 | sIRC.CTELE = 3; |
---|
| 163 | sIRC.CTOP = 3; |
---|
| 164 | sIRC.CWHO = 3; |
---|
| 165 | } |
---|
| 166 | return true; |
---|
| 167 | } |
---|
| 168 | |
---|
| 169 | std::string IRCClient::GetChatLine(int nItem) |
---|
| 170 | { |
---|
| 171 | return sIRC.ILINES[nItem]; |
---|
| 172 | } |
---|