Esempio n. 1
0
/*
====================
IRC_Callback_Default

Libircclient event handler for non-numeric events.
====================
*/
static void IRC_Callback_Default(void *session, const char *event, const char *origin, const char **params, unsigned int count) {
    unsigned int i;
    irc_session_t *s = (irc_session_t*)irc_get_ctx(session);
    char nick[MAX_INPUTLINE];
    
    
    if(irc_eventlog.integer) {
        IRC_Printf("^1%i^7 [^3%s^7] origin: %s, params: \n", s->handle, event, origin);
        for(i = 0; i < count; ++i)
            IRC_Printf("    %i: ^2%s\n", i, params[i]);
    }
    
    if(!strcmp(event, "CONNECT")) {
        // In case the server doesn't like our nickname
        strlcpy(s->nick, params[0], sizeof(s->nick));
    } else if(!strcmp(event, "NICK")) {
        irc_target_get_nick(origin, nick, sizeof(nick));
        if(!strcmp(s->nick, nick))  // our nickname changed
            strlcpy(s->nick, params[0], sizeof(s->nick));
    } else if(!strcmp(event, "CTCP") && !strncmp(params[0], "VERSION", 7)) {
        char ctcpreply[sizeof(engineversion) + 8];
        irc_target_get_nick(origin, nick, sizeof(nick));
        strlcpy(ctcpreply, "VERSION ", sizeof(ctcpreply));
        strlcat(ctcpreply, engineversion, sizeof(ctcpreply));
        irc_cmd_ctcp_reply(s->session, nick, ctcpreply);
    }
    
    IRC_Callback_QuakeC(SVVM_prog, s->handle, event, -1, origin, params, count);
}
Esempio n. 2
0
static void libirc_event_ctcp_internal (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
	if ( origin )
	{
		char nickbuf[128], textbuf[256];
		irc_target_get_nick (origin, nickbuf, sizeof(nickbuf));

		if(is_lua_active(session))
			if(lua_process_event(session,event,origin,params,count))
				return;

		if ( strstr (params[0], "PING") == params[0] ){
			_snprintf(textbuf,sizeof(textbuf),"PONG%s",params[0]+4);
			irc_cmd_ctcp_reply (session, nickbuf, textbuf);
			printf("--->pong reply %s\n",textbuf);
		}
		else if ( !strcmp (params[0], "VERSION") )
		{
			unsigned int high, low;
			irc_get_version (&high, &low);

			sprintf (textbuf, "VERSION slimIRC client - using libirc by Georgy Yunaev ver.%d.%d", high, low);
			irc_cmd_ctcp_reply (session, nickbuf, textbuf);
		}
		else if ( !strcmp (params[0], "FINGER") )
		{
			sprintf (textbuf, "FINGER %s (%s) Idle 0 seconds", 
				session->username ? session->username : "******",
				session->realname ? session->realname : "noname");

			irc_cmd_ctcp_reply (session, nickbuf, textbuf);
		}
		else if ( !strcmp (params[0], "TIME") )
		{
			time_t now = time(0);

#if defined (ENABLE_THREADS) && defined (HAVE_LOCALTIME_R)
			struct tm tmtmp, *ltime = localtime_r (&now, &tmtmp);
#else
			struct tm * ltime = localtime (&now);
#endif
			strftime (textbuf, sizeof(textbuf), "%a %b %d %H:%M:%S %Z %Y", ltime);
			irc_cmd_ctcp_reply (session, nickbuf, textbuf);
		}
	}
}
void event_ctcp_request(irc_session_t *session,const char* WXUNUSED(event),const char *origin,
                        const char **params,unsigned int WXUNUSED(count))
{
    char nick[128];

    irc_target_get_nick(origin,nick,sizeof(nick));

    if (!strcasecmp(params[0],"VERSION"))
    {
        wxString s;
        s<<wxT("VERSION ")<<CSL_NAME_STR<<wxT(" ")<<CSL_VERSION_LONG_STR<<CSL_WEBADDRFULL_STR;
        irc_cmd_ctcp_reply(session,nick,U2A(s));
    }
}
Esempio n. 4
0
static int lua_irc_cmd_ctcp_reply(lua_State *L)
{
	void *session;
	const char *nick,*reply;
	int result=LIBIRC_ERR_INVAL;
	if(lua_gettop(L)==3){
		//(void *session,char *nick,char *reply)
		session=lua_touserdata(L,1);
		nick=lua_tostring(L,2);
		reply=lua_tostring(L,3);
		if(session && nick && reply)
			result=irc_cmd_ctcp_reply(session,nick,reply);
	}
	lua_pushinteger(L,result);
	return 1;
}
Esempio n. 5
0
void dazeus::Server::ctcpReply( const std::string &destination, const std::string &message ) {
	ircEventMe("CTCP_REP_ME", destination, message);
	irc_cmd_ctcp_reply(IRC, destination.c_str(), message.c_str());
}