static CHashCompare hashPong("PONG");
// END of HASH values
- if (argc > 3 && iRaw == 433) {
+ if (argc > 6 && iRaw == 4) {
+ free(m_Server);
+ m_Server = strdup(argv[3]);
+
+ free(m_ServerVersion);
+ m_ServerVersion = strdup(argv[4]);
+
+ free(m_UserModes);
+ m_UserModes = strdup(argv[5]);
+
+ free(m_ChanModes);
+ m_ChanModes = strdup(argv[6]);
+ } else if (argc > 3 && iRaw == 433) {
bool ReturnValue = ModuleEvent(argc, argv);
if (ReturnValue) {
return m_ServerFeat;
}
+const char *CIRCConnection::GetServerChanModes(void) const {
+ return m_ChanModes;
+}
+
+const char *CIRCConnection::GetServerUserModes(void) const {
+ return m_UserModes;
+}
+
/**
* GetISupportAll
*
CHashtable<CChannel *, false> *m_Channels; /**< the channels this IRC user is on */
- char *m_ServerVersion; /**< the version from the 351 reply */
+ char *m_ServerVersion; /**< the version from the 004 reply */
char *m_ServerFeat; /**< the server features from the 351 reply */
+ char *m_ChanModes; /**< the channel modes from the 004 reply */
+ char *m_UserModes; /**< the user modes from the 004 reply */
CHashtable<char *, false> *m_ISupport; /**< the key/value pairs from the 005 replies */
const char *GetServerVersion(void) const;
const char *GetServerFeat(void) const;
+ const char *GetServerUserModes(void) const;
+ const char *GetServerChanModes(void) const;
CQueue *GetQueueHigh(void);
CQueue *GetQueueMiddle(void);
Client->ChangeNick(IrcNick);
Client->WriteLine(":%s 001 %s :Welcome to the Internet Relay Network %s", m_IRC->GetServer(), IrcNick, IrcNick);
+ Client->WriteLine(":%s 002 %s :Your host is %s, running %s", m_IRC->GetServer(), IrcNick, m_IRC->GetServer(), m_IRC->GetServerVersion());
+ Client->WriteLine(":%s 004 %s %s %s %s %s", m_IRC->GetServer(), IrcNick, m_IRC->GetServer(), m_IRC->GetServerVersion(), m_IRC->GetServerUserModes(), m_IRC->GetServerChanModes());
if (Motd->IsEmpty()) {
Client->WriteLine(":%s 422 %s :MOTD File is missing", m_IRC->GetServer(), IrcNick);