From 9cd3ccffd5372dfde3af478e3f832f18db4be3f1 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Apr 2013 13:14:41 +0200 Subject: tagging tags --- ychat-0.8.2/src/mods/commands/Makefile.in | 18 +++++ ychat-0.8.2/src/mods/commands/yc_about.cpp | 59 ++++++++++++++ ychat-0.8.2/src/mods/commands/yc_all.cpp | 49 ++++++++++++ ychat-0.8.2/src/mods/commands/yc_away.cpp | 72 +++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_col.cpp | 88 +++++++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_compopt.cpp | 23 ++++++ ychat-0.8.2/src/mods/commands/yc_exec.cpp | 66 ++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_fake.cpp | 30 +++++++ ychat-0.8.2/src/mods/commands/yc_gag.cpp | 68 ++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_getroom.cpp | 53 +++++++++++++ ychat-0.8.2/src/mods/commands/yc_getrusage.cpp | 57 ++++++++++++++ ychat-0.8.2/src/mods/commands/yc_help.cpp | 52 +++++++++++++ ychat-0.8.2/src/mods/commands/yc_invisible.cpp | 31 ++++++++ ychat-0.8.2/src/mods/commands/yc_j.cpp | 104 +++++++++++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_ko.cpp | 72 +++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_m.cpp | 44 +++++++++++ ychat-0.8.2/src/mods/commands/yc_md5.cpp | 54 +++++++++++++ ychat-0.8.2/src/mods/commands/yc_me.cpp | 45 +++++++++++ ychat-0.8.2/src/mods/commands/yc_morph.cpp | 52 +++++++++++++ ychat-0.8.2/src/mods/commands/yc_msg.cpp | 68 ++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_q.cpp | 30 +++++++ ychat-0.8.2/src/mods/commands/yc_reload.cpp | 25 ++++++ ychat-0.8.2/src/mods/commands/yc_ren.cpp | 74 ++++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_s.cpp | 48 ++++++++++++ ychat-0.8.2/src/mods/commands/yc_set.cpp | 100 ++++++++++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_time.cpp | 22 ++++++ ychat-0.8.2/src/mods/commands/yc_topic.cpp | 78 +++++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_ungag.cpp | 68 ++++++++++++++++ ychat-0.8.2/src/mods/commands/yc_uptime.cpp | 22 ++++++ ychat-0.8.2/src/mods/commands/yc_users.cpp | 28 +++++++ ychat-0.8.2/src/mods/commands/yc_version.cpp | 23 ++++++ 31 files changed, 1623 insertions(+) create mode 100755 ychat-0.8.2/src/mods/commands/Makefile.in create mode 100644 ychat-0.8.2/src/mods/commands/yc_about.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_all.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_away.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_col.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_compopt.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_exec.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_fake.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_gag.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_getroom.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_getrusage.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_help.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_invisible.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_j.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_ko.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_m.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_md5.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_me.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_morph.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_msg.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_q.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_reload.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_ren.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_s.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_set.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_time.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_topic.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_ungag.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_uptime.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_users.cpp create mode 100755 ychat-0.8.2/src/mods/commands/yc_version.cpp (limited to 'ychat-0.8.2/src/mods/commands') diff --git a/ychat-0.8.2/src/mods/commands/Makefile.in b/ychat-0.8.2/src/mods/commands/Makefile.in new file mode 100755 index 0000000..42884b6 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/Makefile.in @@ -0,0 +1,18 @@ +MODS=$(addprefix ../../../mods/commands/, $(SRCS:.cpp=.so)) +CC=COMPILER +INCLUDES=`cat ../../includes.add` +CFLAGS=`cat ../cflags.add` +all: mods +$(MODS): + @if ! test -d `dirname $@`; then mkdir -p `dirname $@`; fi + @$(CC) $(CFLAGS) $(INCLUDES) -shared -s -o $@ `echo $(notdir $@) | sed s/.so/.cpp/` + @echo -n "Command module `basename $@ | sed s/\.so// | sed s/yc_//` " + @du -hc $@ | tail -n 1 | sed s/total// | sed "s/ //g" +infotext: + @echo Compiling command modules +mods: infotext $(MODS) + @echo "Num of command modules: " + @ls ../../../mods/commands/*.so | wc -l +clean: + @echo Cleaning command modules + @if test -d ../../../mods/commands; then rm -Rf ../../../mods/commands; fi diff --git a/ychat-0.8.2/src/mods/commands/yc_about.cpp b/ychat-0.8.2/src/mods/commands/yc_about.cpp new file mode 100644 index 0000000..dece71d --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_about.cpp @@ -0,0 +1,59 @@ +#include "../../incl.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + string s_searched_user( *iter ); + bool b_found; + user* p_searched_user = p_chat->get_user( s_searched_user, b_found ); + + if ( b_found ) + { + string s_msg = "" + p_searched_user->get_colored_name() + "" + + p_conf->get_elem("chat.msgs.userhasstatus") + "" + + tool::int2string(p_searched_user->get_status()) + + ", " + + p_conf->get_elem("chat.msgs.userinroom") + "" + + p_searched_user->get_room()->get_name() + + "
\n" + + p_conf->get_elem("chat.msgs.lastactivity") + "" + + tool::int2string((int)( p_searched_user->get_last_activity())) + + "
\n"; + p_user->msg_post( &s_msg ); + } + else + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + s_searched_user + " " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "
\n"; + p_user->msg_post( &s_msg ); + + } + } + + return 0; + } + +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_all.cpp b/ychat-0.8.2/src/mods/commands/yc_all.cpp new file mode 100755 index 0000000..3b5713f --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_all.cpp @@ -0,0 +1,49 @@ +#include +#include "../../chat/chat.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params= (vector*) c->elem[2]; // param array + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + + string s_tmp = ""; + string s_msg = ""; + + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_tmp.append( *iter + " " ); + + s_msg = p_timr->get_time() + " get_elem("chat.html.sysmsgcolor") + + "\"> " + + p_conf->get_elem("chat.msgs.system"); + + p_chat->string_replacer(&s_tmp); + s_msg.append( s_tmp + "
\n" ); + p_chat->msg_post( &s_msg ); + return 0; + } + + s_msg = p_conf->colored_error_msg("chat.msgs.err.wrongcommandusage"); + p_user->msg_post(s_msg); + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_away.cpp b/ychat-0.8.2/src/mods/commands/yc_away.cpp new file mode 100755 index 0000000..81a2089 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_away.cpp @@ -0,0 +1,72 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; // the corresponding user + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + vector *params = (vector*) c->elem[2]; // param array + + string s_msg; + string s_away; + string s_col; + + vector::iterator iter; + + string s_time = p_timr->get_time(); + + s_away.append( s_time ).append( " " ); + + s_msg = s_time + + " " + + p_user->get_colored_bold_name() + + " " + + p_conf->get_elem("chat.msgs.setmodeaway") + + ""; + + if ( params->size() > 0 ) + { + s_msg.append(": "); + for ( iter = params->begin(); iter != params->end(); iter++ ) + { + s_msg.append( " " + *iter ); + s_away.append( *iter + " " ); + } + } + else + { + s_msg.append("."); + } + + s_msg.append( "
\n" ); + + room* p_room = p_user->get_room(); + + // Remove ' from away message: + auto unsigned int pos; + + do + { + pos = s_away.find_first_of( "'" ); + if ( pos == string::npos ) + break; + s_away.replace( pos, 1, "\"" ); + } + while (true); + + p_user->set_away( true, s_away ); + p_room->reload_onlineframe(); + p_room->msg_post ( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_col.cpp b/ychat-0.8.2/src/mods/commands/yc_col.cpp new file mode 100755 index 0000000..3e1f591 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_col.cpp @@ -0,0 +1,88 @@ +#include +#include "../../wrap.h" +#include "../../chat/room.h" +#include "../../chat/user.h" +#include "../../tool/tool.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + + user *p_user = (user*)c->elem[1]; // the corresponding user + vector *params= (vector*) c->elem[2]; // param array + + string s_color; + string s_color2; + + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + if ( params->empty() ) + { + s_color = p_conf->get_elem( "chat.html.user.color1" ); + s_color2 = p_conf->get_elem( "chat.html.user.color2" ); + } + else + { + s_color = (string) params->front(); + params->erase( params->begin() ); + if ( ! params->empty() ) + s_color2 = (string) params->front(); + else + s_color2 = p_conf->get_elem( "chat.html.user.color1" ); + } + + s_color = tool::to_lower( s_color ); + s_color2 = tool::to_lower( s_color2 ); + + if( valid_color(s_color) != 1 ) + { + string *answerstring=new string(s_color + " is not a valid color.
\n"); + p_user->msg_post( answerstring ); + } + else if( valid_color(s_color2) != 1 ) + { + string *answerstring=new string( s_color2 + " is not a valid color.
\n"); + p_user->msg_post( answerstring ); + } + else + { + string *answerstring=new string(p_timr->get_time() + " " + p_user->get_colored_bold_name()+ " changes color to " + s_color + " " + s_color2 + "
\n"); + p_user->get_room()->msg_post( answerstring ); + p_user->set_col1(s_color); + p_user->set_col2(s_color2); + p_user->get_room()->reload_onlineframe(); + } + + return 0; + } + int valid_color( string s_color ) + { + + if(s_color.size()!=6) + return 0; + string valid="abcdef0123456789"; + for(int i=0;i +#include "../../msgs.h" +#include "../../chat/user.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + user *p_user = (user*)c->elem[1]; // the corresponding user + p_user->msg_post( tool::ychat_version() + " " + UNAME + "
\n" + COMPOPT + "
\n"); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_exec.cpp b/ychat-0.8.2/src/mods/commands/yc_exec.cpp new file mode 100755 index 0000000..119942d --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_exec.cpp @@ -0,0 +1,66 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" +#include +#include +#include +#include +#include + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; // the corresponding user + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + vector *params = (vector*) c->elem[2]; // param array + + string s_command; + string s_msg = p_timr->get_time(); + string s_output; + + vector::iterator iter; + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_command.append( " " + *iter ); + + s_command.append(" 2>error.log"); + + s_msg.append( " " + s_command + "
\n" ); + + p_user->msg_post( &s_msg ); + + FILE *file; + char buffer[READBUF]; + + if( (file=popen(s_command.c_str(), "r")) == NULL ) + { + s_output = "get_elem("chat.html.errorcolor") + + p_conf->get_elem("chat.msgs.err.execcommand") + + "
\n"; + p_user->msg_post( &s_output ); + } + else + { + s_output.append("
\n"); + while(true) + { + if(fgets(buffer, READBUF, file) == NULL) + break; + + s_output.append( string(buffer) + "
\n" ); + } + + p_user->msg_post( &s_output ); + pclose(file); + } + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_fake.cpp b/ychat-0.8.2/src/mods/commands/yc_fake.cpp new file mode 100755 index 0000000..cfc22c0 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_fake.cpp @@ -0,0 +1,30 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; // the corresponding user + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + bool b_fake = p_user->get_fake(); + + string s_msg = (b_fake == 1 + ? p_conf->get_elem("chat.msgs.unsetmodefake") + "
\n" + : p_conf->get_elem("chat.msgs.setmodefake") + "
\n"); + + + p_user->set_fake( !b_fake ); + p_user->get_room()->reload_onlineframe(); + p_user->msg_post ( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_gag.cpp b/ychat-0.8.2/src/mods/commands/yc_gag.cpp new file mode 100755 index 0000000..2da03f6 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_gag.cpp @@ -0,0 +1,68 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + string s_gag_user(*iter); + bool b_found; + user* p_gag_user = p_chat->get_user( s_gag_user, b_found ); + + if ( b_found ) + { + string s_time = ""; + if ( p_conf->get_elem("chat.printalwaystime") == "true" ) + s_time = p_timr->get_time() + " "; + + string s_reason = ""; + for ( iter++; iter != params->end(); iter++ ) + s_reason.append( *iter + " " ); + + if ( s_reason.length() > 0 ) + s_reason = " (" + p_user->make_colors(s_reason) + ")"; + + string s_msg = s_time + " " + p_user->get_colored_bold_name() + " " + p_conf->get_elem("chat.msgs.gag") + " " + + p_gag_user->get_colored_bold_name() + s_reason + "
\n"; + + + p_user->msg_post(s_msg); + if (! p_user->same_rooms(p_gag_user) ) + p_gag_user->msg_post(s_msg); + + p_gag_user->set_is_gag(true); + + } + else + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + s_gag_user + " " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "
\n"; + + p_user->msg_post( &s_msg ); + } + } + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_getroom.cpp b/ychat-0.8.2/src/mods/commands/yc_getroom.cpp new file mode 100755 index 0000000..e27c468 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_getroom.cpp @@ -0,0 +1,53 @@ +#include "../../incl.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + string s_searched_user( *iter ); + bool b_found; + user* p_searched_user = p_chat->get_user( s_searched_user, b_found ); + + if ( b_found ) + { + string s_msg = "" + p_searched_user->get_colored_name() + "" + + p_conf->get_elem("chat.msgs.userinroom") + "" + + p_searched_user->get_room()->get_name() + + "
\n"; + p_user->msg_post( &s_msg ); + } + else + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + s_searched_user + " " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "
\n"; + p_user->msg_post( &s_msg ); + + } + } + + return 0; + } + +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_getrusage.cpp b/ychat-0.8.2/src/mods/commands/yc_getrusage.cpp new file mode 100755 index 0000000..42faa67 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_getrusage.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include +#include +#include "../../chat/user.h" + +#ifndef RUSAGE_SELF +#define RUSAGE_SELF 0 +#endif +#ifndef RUSAGE_CHILDREN +#define RUSAGE_CHILDREN -1 +#endif + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + rusage* p_rusage = new rusage; + getrusage( RUSAGE_SELF, p_rusage ); + char c_msg[1024]; + + /* see man getrusage */ + + sprintf(c_msg, "getrusage:
\nmaxrss: %D (max resident set size)
\nixrss: %D (integral shared text memory size)
\nidrss: %D (integral unshared data size)
\nisrss %D (integral unshared stack size)
\nminflt: %D (page reclaims)
\nmajflt: %D (page faults)
\nnswap: %D (swaps)
\ninblock: %D (block input operations)
\noublock: %D (block output operations)
\nmsgsnd: %D (messages sent)
\nmsgrcv: %D (messages received)
\nnsignals: %D (signals received)
\nnvcsw: %D (voluntary context switches)
\nnivcsw: %D (involuntary context switches)
\n", + p_rusage->ru_maxrss, + p_rusage->ru_ixrss, + p_rusage->ru_idrss, + p_rusage->ru_isrss, + p_rusage->ru_minflt, + p_rusage->ru_majflt, + p_rusage->ru_nswap, + p_rusage->ru_inblock, + p_rusage->ru_oublock, + p_rusage->ru_msgsnd, + p_rusage->ru_msgrcv, + p_rusage->ru_nsignals, + p_rusage->ru_nvcsw, + p_rusage->ru_nivcsw + ); + + p_user->msg_post( new string( c_msg ) ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_help.cpp b/ychat-0.8.2/src/mods/commands/yc_help.cpp new file mode 100755 index 0000000..cdeb1be --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_help.cpp @@ -0,0 +1,52 @@ +#include "../../incl.h" +#include "../../chat/user.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + string s_msg = ""; + + if (params->size() >= 1) + { + vector::iterator iter = params->begin(); + + string s_help = p_conf->get_elem("chat.msgs.help." + *iter); + + if ( s_help != "" ) + { + s_msg.append("" + *iter + ": " + s_help + "
\n"); + p_user->msg_post( &s_msg ); + return 0; + } + + s_msg.append(*iter + " " + p_conf->get_elem("chat.msgs.err.notavailable")); + } + else + { + s_msg.append(p_conf->get_elem("chat.msgs.err.wrongcommandusage")); + } + + s_msg = "get_elem("chat.html.errorcolor") + + "\"> " + + s_msg + + "
\n"; + + p_user->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_invisible.cpp b/ychat-0.8.2/src/mods/commands/yc_invisible.cpp new file mode 100755 index 0000000..58a8912 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_invisible.cpp @@ -0,0 +1,31 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; // the corresponding user + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + bool b_invisible = p_user->get_invisible(); + + string s_msg = b_invisible + ? p_conf->get_elem("chat.msgs.setmodeinvisible") + + "
\n" + : p_conf->get_elem("chat.msgs.unsetmodeinvisible") + + "
\n"; + + p_user->set_invisible( !b_invisible ); + p_user->get_room()->reload_onlineframe(); + p_user->msg_post ( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_j.cpp b/ychat-0.8.2/src/mods/commands/yc_j.cpp new file mode 100755 index 0000000..178a388 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_j.cpp @@ -0,0 +1,104 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector *) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + gcol* p_gcol = (gcol*) ((dynamic_wrap*)c->elem[3])->GCOL; + + if ( ! params->empty() ) + { + vector ::iterator iter; + + string s_room; + + for ( iter = params->begin(); iter != params->end(); iter++ ) + { + s_room.append( *iter ); + if ( iter+1 != params->end() ) + s_room.append(" "); + } + + int i_max_room_len = tool::string2int( p_conf->get_elem("chat.maxlength.roomname") ); + if ( i_max_room_len < s_room.length() ) + s_room = s_room.substr(0, i_max_room_len ); + + if ( tool::to_lower(s_room) == p_user->get_room()->get_lowercase_name() ) + { + string s_msg = "get_elem("chat.html.errorcolor") + "\">" + + p_conf->get_elem("chat.msgs.err.alreadyinroom") + "" + + p_user->get_room()->get_name() + "
\n"; + p_user->msg_post( &s_msg ); + } + else + { + string s_user = p_timr->get_time() + " " + p_user->get_colored_bold_name(); + string s_msg = s_user + p_conf->get_elem( "chat.msgs.userleavesroom" ) + ""; + string s_msg2 = s_user + p_conf->get_elem( "chat.msgs.userentersroom" ) + ""; + + bool b_flag; + room* p_room = p_chat->get_room( s_room , b_flag ); + + // if room does not exist add room to list! + if ( p_room == NULL ) + { + p_room = p_gcol->get_room_from_garbage_or_new( s_room ); + + s_msg.append( s_room + "
\n" ); + s_msg2.append( s_room + "

\n" ); + + room* p_room_old = p_user->get_room(); + + string s_name_lowercase = p_user->get_lowercase_name(); + p_user->get_room()->del_elem( s_name_lowercase ); + + p_gcol->lock_mutex(); + if ( p_room_old != NULL ) + p_room_old->msg_post( &s_msg ); + p_gcol->unlock_mutex(); + + p_room->add_user( p_user ); + p_chat->add_elem( p_room ); + p_room->msg_post( &s_msg2 ); + } + else // p_room != NULL + { + s_msg.append( p_room->get_name() + "
\n" ); + s_msg2.append( p_room->get_name() + "
\n" ); + + room* p_room_old = p_user->get_room(); + + string s_name_lowercase = p_user->get_lowercase_name(); + p_user->get_room()->del_elem( s_name_lowercase ); + + p_gcol->lock_mutex(); + if ( p_room_old != NULL ) + p_room_old->msg_post( &s_msg ); + p_gcol->unlock_mutex(); + + p_room->add_user( p_user ); + p_room->msg_post( &s_msg2 ); + } + } + } + + return 0; + } + +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_ko.cpp b/ychat-0.8.2/src/mods/commands/yc_ko.cpp new file mode 100755 index 0000000..36b2fa0 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_ko.cpp @@ -0,0 +1,72 @@ +#include "../../incl.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + string s_searched_user( *iter ); + bool b_found; + user* p_searched_user = p_chat->get_user( s_searched_user, b_found ); + + if ( b_found ) + { + + string s_msg = p_timr->get_time() + " " + + p_user->get_colored_bold_name() + + p_conf->get_elem( "chat.msgs.userkicksout1" ) + + p_searched_user->get_colored_bold_name() + + p_conf->get_elem( "chat.msgs.userkicksout2" ) + + p_searched_user->get_room()->get_bold_name() + + "
\n"; + + room* p_room1 = p_user->get_room(); + room* p_room2 = p_searched_user->get_room(); + + p_room1->msg_post( &s_msg ); + + if ( p_room1->get_lowercase_name() != + p_room2->get_lowercase_name() ) + p_room2->msg_post( &s_msg ); + + string s_kick = ""; + + p_searched_user->msg_post( &s_kick ); + p_searched_user->set_online(false); + } + else + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + s_searched_user + " " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "
\n"; + p_user->msg_post( &s_msg ); + } + } + + return 0; + } + +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_m.cpp b/ychat-0.8.2/src/mods/commands/yc_m.cpp new file mode 100755 index 0000000..4a57727 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_m.cpp @@ -0,0 +1,44 @@ +#include +#include "../../chat/user.h" +#include "../../chat/room.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params= (vector*) c->elem[2]; // param array + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + string s_msg = ""; + + if ( p_conf->get_elem("chat.printalwaystime") == "true" ) + s_msg = p_timr->get_time() + " "; + + s_msg.append( "" + p_user->get_colored_name() + + " get_col2() + + "\">" ); + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_msg.append( *iter + " " ); + } + + s_msg.append( "
\n" ); + p_user->get_room()->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_md5.cpp b/ychat-0.8.2/src/mods/commands/yc_md5.cpp new file mode 100755 index 0000000..13bfc3b --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_md5.cpp @@ -0,0 +1,54 @@ +#include "../../incl.h" +#include "../../chat/user.h" +#include "../../contrib/crypt/md5.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + if (params->size() >= 2) + { + vector::iterator iter; + string s_string = ""; + string s_salt = ""; + + for (iter = params->begin(); iter+1 != params->end(); ++iter) + { + s_string.append(*iter); + } + + s_salt = *iter; + + string s_msg = "Crypt: " + s_string + ", Salt: " + + s_salt + " = " + + + md5::MD5Crypt(s_string.c_str(), s_salt.c_str()) + + "
\n"; + p_user->msg_post( &s_msg ); + } + else + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\"> " + + p_conf->get_elem("ERR_WRONG_COMMAND_USAGE") + + "
\n"; + p_user->msg_post( &s_msg ); + + } + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_me.cpp b/ychat-0.8.2/src/mods/commands/yc_me.cpp new file mode 100755 index 0000000..d9de98c --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_me.cpp @@ -0,0 +1,45 @@ +#include +#include "../../chat/user.h" +#include "../../chat/room.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params= (vector*) c->elem[2]; // param array + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + string s_msg = ""; + + if ( p_conf->get_elem("chat.printalwaystime") == "true" ) + s_msg = p_timr->get_time() + " "; + + s_msg.append( "get_col1() + "\">" + + p_user->get_name() + " "); + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_msg.append( *iter + " " ); + } + + s_msg.append( "
\n" ); + p_user->get_room()->msg_post( &s_msg ); + + return 0; + + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_morph.cpp b/ychat-0.8.2/src/mods/commands/yc_morph.cpp new file mode 100755 index 0000000..1a7db27 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_morph.cpp @@ -0,0 +1,52 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" +#include "../../tool/tool.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c = (container*) v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *p_params = (vector*) c->elem[2]; // param array + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + if ( p_params->empty() ) + { + string s_msg = p_conf->colored_error_msg("chat.msgs.err.wrongcommandusage"); + p_user->msg_post(s_msg); + } + else + { + string s_morphed_name = p_params->at(0); + + if ( tool::to_lower(s_morphed_name) != p_user->get_lowercase_name() ) + { + string s_msg = p_conf->colored_error_msg("chat.msgs.err.morphnick"); + p_user->msg_post(s_msg); + } + else + { + string s_msg = p_timr->get_time() + " " + p_user->get_colored_bold_name() + p_conf->get_elem( "chat.msgs.usermorphs" ) + "get_col1() + "\">" + s_morphed_name + "
\n"; + + room* p_room = p_user->get_room(); + p_room->msg_post( &s_msg ); + p_user->set_name( s_morphed_name ); + p_room->reload_onlineframe(); + } + } + + return 0; + } + +} + + diff --git a/ychat-0.8.2/src/mods/commands/yc_msg.cpp b/ychat-0.8.2/src/mods/commands/yc_msg.cpp new file mode 100755 index 0000000..8d8f2cf --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_msg.cpp @@ -0,0 +1,68 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + string s_whisper_user( *iter ); + bool b_found; + user* p_whisper_user = p_chat->get_user( s_whisper_user, b_found ); + + if ( b_found ) + { + string s_time = ""; + if ( p_conf->get_elem("chat.printalwaystime") == "true" ) + s_time = p_timr->get_time() + " "; + + string s_msg = s_time + " " + p_conf->get_elem("chat.msgs.whisperto") + " " + p_whisper_user->get_colored_name() + ": get_col2() + "\">"; + + string s_whisper_msg = s_time + "" + p_user->get_colored_name() + " " + p_conf->get_elem("chat.msgs.whisper") + ": get_col2() + "\">"; + + string s_tmp = ""; + for ( iter++; iter != params->end(); iter++ ) + s_tmp.append( *iter + " " ); + + p_chat->string_replacer(&s_tmp); + + s_msg .append( s_tmp + "
\n" ); + s_whisper_msg.append( s_tmp + "

\n" ); + + p_user ->msg_post( &s_msg ); + p_whisper_user->msg_post( &s_whisper_msg ); + } + else + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + s_whisper_user + " " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "
\n"; + + p_user->msg_post( &s_msg ); + } + } + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_q.cpp b/ychat-0.8.2/src/mods/commands/yc_q.cpp new file mode 100755 index 0000000..a250f72 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_q.cpp @@ -0,0 +1,30 @@ +#include +#include "../../chat/user.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + + +extern "C" +{ + int extern_function(void *v_arg) + { + container* c = (container*) v_arg; + user* p_user = (user*)c->elem[1]; + + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + string s_quit = ""; + + p_user->msg_post( &s_quit ); + p_user->set_online(false); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_reload.cpp b/ychat-0.8.2/src/mods/commands/yc_reload.cpp new file mode 100755 index 0000000..9d613fc --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_reload.cpp @@ -0,0 +1,25 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; // the corresponding user + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + string s_msg = p_conf->get_elem("chat.msgs.reloadonlineframe") + + "
\n"; + + p_user->get_room()->reload_onlineframe(); + p_user->msg_post ( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_ren.cpp b/ychat-0.8.2/src/mods/commands/yc_ren.cpp new file mode 100755 index 0000000..c1d1f78 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_ren.cpp @@ -0,0 +1,74 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" + +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c = (container*) v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + if ( ! params->empty() ) + { + vector::iterator iter; + + string s_room; + + for ( iter = params->begin(); iter != params->end(); iter++ ) + { + s_room.append( *iter ); + if ( iter+1 != params->end() ) + s_room.append(" "); + } + + int i_max_room_len = tool::string2int( p_conf->get_elem("chat.maxlength.roomname") ); + if ( i_max_room_len < s_room.length() ) + s_room = s_room.substr(0, i_max_room_len ); + + bool b_found; + string s_room_lower = tool::to_lower(s_room); + room* p_room = p_user->get_room(); + + if ( s_room_lower != p_room->get_lowercase_name() && + NULL != p_chat->get_room( s_room_lower , b_found ) ) + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + p_conf->get_elem("chat.msgs.err.roomexists") + + "
\n"; + + p_user->msg_post( &s_msg ); + } + else + { + string s_msg = p_timr->get_time() + " " + + p_user->get_colored_bold_name() + + p_conf->get_elem( "chat.msgs.us_errorenamesroom" ) + + "" + s_room + "
\n"; + + p_chat->del_elem( p_room->get_lowercase_name() ); + p_room->set_name( s_room ); + p_chat->add_elem( p_room ); + p_room->msg_post( &s_msg ); + p_room->reload_onlineframe(); + } + } + + return 0; + } + +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_s.cpp b/ychat-0.8.2/src/mods/commands/yc_s.cpp new file mode 100755 index 0000000..011d21e --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_s.cpp @@ -0,0 +1,48 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" + +using namespace std; + +extern "C" +{ + string to_upper( string &s_msg ) + { + char* c_msg = (char*) s_msg.c_str(); + + for ( int i = 0; i < strlen( c_msg ); i++ ) + c_msg[i] = toupper( c_msg[i] ); + + return string( c_msg ); + }; + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params= (vector*) c->elem[2]; // param array + + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + string s_time = ""; + if ( p_conf->get_elem("chat.printalwaystime") == "true" ) + s_time = p_timr->get_time() + " "; + + string s_msg = s_time + "" + p_user->get_colored_name() + " " + p_conf->get_elem("chat.msgs.scream") + " get_col2() + "\">"; + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_msg.append( to_upper(*iter) + " " ); + } + + s_msg.append( "
\n" ); + p_user->get_room()->msg_post( &s_msg ); + + return 0; + + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_set.cpp b/ychat-0.8.2/src/mods/commands/yc_set.cpp new file mode 100755 index 0000000..3a1afb0 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_set.cpp @@ -0,0 +1,100 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + + vector *params = (vector*) c->elem[2]; // param array + + bool b_invalid_syntax = 0; + + if ( params->size() >= 3 ) + { + string s_msg; + string s_command_name = params->at(0); + string s_option = params->at(1); + string s_newval = params->at(2); + + if ( s_option == "status" ) + { + const char* c_newval = s_newval.c_str(); + if ( isdigit( c_newval[0] ) ) + { + int i_newval = c_newval[0] - '0'; + + s_msg = p_timr->get_time() + + " " + + p_user->get_colored_bold_name() + + " " + + p_conf->get_elem("chat.msgs.setcommandstatus") + + " (" + + s_command_name + "," + s_newval + "," + + tool::int2string( p_chat->get_command_disabled(s_command_name)) + + ")
\n"; + + p_user->get_room()->msg_post(&s_msg); + p_chat->set_command_status( s_command_name, i_newval ); + } + } + else if ( s_option == "disable" ) + { + const char* c_newval = s_newval.c_str(); + if ( isdigit( c_newval[0] ) ) + { + int i_newval = c_newval[0] - '0'; + + if ( i_newval != 0 ) + i_newval = 1; + + s_newval = tool::int2string(i_newval); + + s_msg = p_timr->get_time() + + " " + + p_user->get_colored_bold_name() + + " " + + p_conf->get_elem("chat.msgs.setcommandstatus") + + " (" + + s_command_name + "," + + tool::int2string( p_chat->get_command_status(s_command_name)) + + "," + s_newval + ")
\n"; + + p_user->get_room()->msg_post(&s_msg); + p_chat->set_command_disabled( s_command_name, (bool)i_newval ); + } + } + else + { + b_invalid_syntax = 1; + } + + } + else + { + b_invalid_syntax = 1; + } + + if ( b_invalid_syntax ) + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + p_conf->get_elem("chat.msgs.err.wrongcommandusage") + + "
\n"; + p_user->msg_post( &s_msg ); + } + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_time.cpp b/ychat-0.8.2/src/mods/commands/yc_time.cpp new file mode 100755 index 0000000..86a93ec --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_time.cpp @@ -0,0 +1,22 @@ +#include "../../incl.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + string s_msg = p_conf->get_elem("chat.msgs.servertime") + p_timr->get_time() + "
\n"; + + p_user->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_topic.cpp b/ychat-0.8.2/src/mods/commands/yc_topic.cpp new file mode 100755 index 0000000..bf650b2 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_topic.cpp @@ -0,0 +1,78 @@ +#include "../../tool/tool.h" +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user* p_user = (user*) c->elem[1]; // the corresponding user + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + vector *params = (vector*) c->elem[2]; // param array + + string s_msg; + string s_topic; + string s_col; + + room* p_room = p_user->get_room(); + + if ( ! params->empty() ) + { + vector::iterator iter; + + s_col = "get_col1() + "\">"; + + s_msg = p_timr->get_time() + + " " + + p_user->get_colored_bold_name() + + " " + + p_conf->get_elem("chat.msgs.topic") + + s_col; + + for ( iter = params->begin(); iter != params->end(); iter++ ) + { + s_msg.append( " " + *iter ); + s_topic.append( *iter + " " ); + } + s_msg.append( "" ); + + int i_topic_length = tool::string2int(p_conf->get_elem("chat.maxlength.topic")); + if ( s_topic.length() > i_topic_length ) + { + s_topic = s_topic.substr(0, i_topic_length ); + s_topic.append(" ... "); + + string s_private_msg = "get_elem("chat.html.errorcolor") + + ">" + p_conf->get_elem( "chat.msgs.topiccut" ) + "
"; + + p_user->msg_post ( &s_private_msg ); + } + + s_topic = "( " + s_topic + ")"; + p_room->set_topic( s_topic, p_user->get_col1() ); + } + else + { + s_msg = p_timr->get_time() + + " " + + p_user->get_colored_bold_name() + + " " + + p_conf->get_elem("chat.msgs.topicdelete"); + + p_room->set_topic( "" ); + } + + s_msg.append( "
\n" ); + + p_room->msg_post ( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_ungag.cpp b/ychat-0.8.2/src/mods/commands/yc_ungag.cpp new file mode 100755 index 0000000..b727be2 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_ungag.cpp @@ -0,0 +1,68 @@ +#include "../../chat/user.h" +#include "../../chat/room.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + vector *params = (vector*) c->elem[2]; // param array + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + if ( ! params->empty() ) + { + vector::iterator iter = params->begin(); + string s_ungag_user(*iter); + bool b_found; + user* p_ungag_user = p_chat->get_user( s_ungag_user, b_found ); + + if ( b_found ) + { + string s_time = ""; + if ( p_conf->get_elem("chat.printalwaystime") == "true" ) + s_time = p_timr->get_time() + " "; + + string s_reason = ""; + for ( iter++; iter != params->end(); iter++ ) + s_reason.append( *iter + " " ); + + if ( s_reason.length() > 0 ) + s_reason = " (" + p_user->make_colors(s_reason) + ")"; + + string s_msg = s_time + " " + p_user->get_colored_bold_name() + " " + p_conf->get_elem("chat.msgs.ungag") + " " + + p_ungag_user->get_colored_bold_name() + s_reason + "
\n"; + + + p_user->msg_post(s_msg); + if (! p_user->same_rooms(p_ungag_user) ) + p_ungag_user->msg_post(s_msg); + + p_ungag_user->set_is_gag(false); + + } + else + { + string s_msg = "get_elem("chat.html.errorcolor") + + "\">" + + s_ungag_user + " " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "
\n"; + + p_user->msg_post( &s_msg ); + } + } + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_uptime.cpp b/ychat-0.8.2/src/mods/commands/yc_uptime.cpp new file mode 100755 index 0000000..163629b --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_uptime.cpp @@ -0,0 +1,22 @@ +#include "../../incl.h" + +using namespace std; + +extern "C" +{ + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + + user *p_user = (user*) c->elem[1]; // the corresponding user + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + timr* p_timr = (timr*) ((dynamic_wrap*)c->elem[3])->TIMR; + + string s_msg = p_conf->get_elem("chat.msgs.uptime") + p_timr->get_uptime() + "
\n"; + + p_user->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_users.cpp b/ychat-0.8.2/src/mods/commands/yc_users.cpp new file mode 100755 index 0000000..0603183 --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_users.cpp @@ -0,0 +1,28 @@ +#include "../../chat/chat.h" +#include "../../chat/user.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + chat* p_chat = (chat*) ((dynamic_wrap*)c->elem[3])->CHAT; + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + user *p_user = (user*)c->elem[1]; + + string s_list; + p_chat->get_user_list(s_list); + p_user->msg_post( p_conf->get_elem("chat.msgs.userlist") + + "
" + s_list + "
\n"); + + return 0; + } +} + diff --git a/ychat-0.8.2/src/mods/commands/yc_version.cpp b/ychat-0.8.2/src/mods/commands/yc_version.cpp new file mode 100755 index 0000000..cb4831e --- /dev/null +++ b/ychat-0.8.2/src/mods/commands/yc_version.cpp @@ -0,0 +1,23 @@ +#include +#include "../../msgs.h" +#include "../../chat/user.h" +/* + gcc -shared -o yc_name.so yc_name.cpp +*/ + +using namespace std; + +extern "C" +{ + int valid_color( string ); + + int extern_function(void *v_arg) + { + container *c=(container *)v_arg; + user *p_user = (user*)c->elem[1]; // the corresponding user + p_user->msg_post( tool::ychat_version() + "
\n"); + + return 0; + } +} + -- cgit v1.2.3