// $Id: relay.c,v 1.9 2007/09/18 08:37:58 lynx Exp $ // vim:syntax=lpc // // to become a generic gateway to all sorts of services // // dies ist noch auf AIM zugeschnitten.. "aim" und AIM_GATEWAY müssen // einfach nur in konfigurierbare strings rein und schon hat man // einen generischen relay für allerlei zwecke. #include #include //#include //inherit NET_PATH "gateway/generic"; inherit PSYC_PATH "active"; #ifdef AIM_GATEWAY void create() { array(string) u = URL(AIM_GATEWAY); // for a gateway that only supports tcp, append "c" // #define AIM_GATEWAY "psyc://aim.symlynX.com:49152c" // for a gateway that only supports udp, append "d" // #define AIM_GATEWAY "psyc://aim.symlynX.com:49152d" // // we prefer using udp, but if the gateway cannot handle that // we'll have to open up a tcp connection.. // if (u && u[URL_TRANSPORT] == "c") { ahost = u[URL_HOST]; aport = u[URL_PORT]; register_target(lower_case(AIM_GATEWAY)); } else ahost = 0; // joe = "nobody"; // sTextPath("default", "en", "aim"); register_scheme("aim"); } msg(source, mc, data, mapping vars, showingLog, target) { if (target && stringp(target) && abbrev("aim:", target)) { vars["_source_relay"] = source; vars["_target_relay"] = target; if (interactive(ME)) return ::msg(target, mc, data, vars, ME); //delivermsg(target, mc, data, vars, ME); else sendmsg(AIM_GATEWAY, mc, data, vars); } else if (source && stringp(source) && abbrev(AIM_GATEWAY, source)) { target = vars["_target_relay"]; source = vars["_source_relay"]; m_delete(vars, "_target_relay"); m_delete(vars, "_source_relay"); sendmsg(target, mc, data, vars, source); } } #endif