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 | } |
---|