diff options
| author | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:41 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:41 +0200 |
| commit | 9cd3ccffd5372dfde3af478e3f832f18db4be3f1 (patch) | |
| tree | 631c295a4a4a16b57502b847626763a279bf6df7 /ychat-0.7.5/src/mods/commands | |
| parent | 13aaf70af703748fe096e0664c305cd202637ad2 (diff) | |
tagging tags
Diffstat (limited to 'ychat-0.7.5/src/mods/commands')
34 files changed, 1576 insertions, 0 deletions
diff --git a/ychat-0.7.5/src/mods/commands/CVS/Entries b/ychat-0.7.5/src/mods/commands/CVS/Entries new file mode 100644 index 0000000..f719ced --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/CVS/Entries @@ -0,0 +1,32 @@ +/Makefile/1.26/Mon Feb 14 20:09:50 2005// +/Makefile.in/1.7/Thu Jul 8 14:39:03 2004// +/yc_about.cpp/1.1/Thu Dec 30 18:36:03 2004// +/yc_all.cpp/1.1/Thu Dec 30 19:14:52 2004// +/yc_away.cpp/1.8/Thu Nov 18 13:41:47 2004// +/yc_col.cpp/1.8/Thu Nov 18 13:41:47 2004// +/yc_compopt.cpp/1.3/Thu Nov 18 13:41:47 2004// +/yc_exec.cpp/1.9/Thu Nov 18 13:41:47 2004// +/yc_fake.cpp/1.11/Thu Nov 18 13:41:47 2004// +/yc_getroom.cpp/1.6/Thu Nov 18 13:41:47 2004// +/yc_getrusage.cpp/1.8/Thu Nov 18 13:41:47 2004// +/yc_help.cpp/1.4/Thu Nov 18 13:41:47 2004// +/yc_invisible.cpp/1.9/Thu Nov 18 13:41:47 2004// +/yc_j.cpp/1.9/Thu Nov 18 13:41:47 2004// +/yc_ko.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_m.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_md5.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_me.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_morph.cpp/1.3/Thu Nov 18 13:41:47 2004// +/yc_msg.cpp/1.9/Thu Dec 30 17:44:05 2004// +/yc_q.cpp/1.8/Thu Nov 18 13:41:47 2004// +/yc_reload.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_ren.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_s.cpp/1.8/Thu Nov 18 13:41:47 2004// +/yc_set.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_template.cpp/1.7/Thu Nov 18 13:41:47 2004// +/yc_time.cpp/1.6/Thu Nov 18 13:41:47 2004// +/yc_topic.cpp/1.10/Mon Feb 14 17:33:09 2005// +/yc_uptime.cpp/1.6/Thu Nov 18 13:41:47 2004// +/yc_users.cpp/1.1/Mon Feb 14 20:09:50 2005// +/yc_version.cpp/1.9/Thu Nov 18 13:41:47 2004// +D diff --git a/ychat-0.7.5/src/mods/commands/CVS/Repository b/ychat-0.7.5/src/mods/commands/CVS/Repository new file mode 100644 index 0000000..567651e --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/CVS/Repository @@ -0,0 +1 @@ +ychat/src/mods/commands diff --git a/ychat-0.7.5/src/mods/commands/CVS/Root b/ychat-0.7.5/src/mods/commands/CVS/Root new file mode 100644 index 0000000..745de68 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot diff --git a/ychat-0.7.5/src/mods/commands/Makefile b/ychat-0.7.5/src/mods/commands/Makefile new file mode 100644 index 0000000..6aec38d --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/Makefile @@ -0,0 +1,48 @@ +SRCS=yc_about.cpp yc_all.cpp yc_away.cpp yc_col.cpp yc_compopt.cpp yc_exec.cpp yc_fake.cpp yc_getroom.cpp yc_getrusage.cpp yc_help.cpp yc_invisible.cpp yc_j.cpp yc_ko.cpp yc_m.cpp yc_md5.cpp yc_me.cpp yc_morph.cpp yc_msg.cpp yc_q.cpp yc_reload.cpp yc_ren.cpp yc_s.cpp yc_set.cpp yc_template.cpp yc_time.cpp yc_topic.cpp yc_uptime.cpp yc_users.cpp yc_version.cpp +MODS=$(addprefix ../../../mods/commands/, $(SRCS:.cpp=.so)) +CC=g++ +INCLUDES=`cat ../../includes.add` +CFLAGS=`cat ../cflags.add` +all: mods +$(MODS): + @echo -n "Compiling command module `basename $@` " + @if ! test -d `dirname $@`; then mkdir -p `dirname $@`; fi + @$(CC) $(CFLAGS) $(INCLUDES) -shared -s -o $@ `echo $(notdir $@) | sed s/.so/.cpp/` + @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 +../../../mods/commands/yc_about.so: yc_about.cpp +../../../mods/commands/yc_all.so: yc_all.cpp +../../../mods/commands/yc_away.so: yc_away.cpp +../../../mods/commands/yc_col.so: yc_col.cpp +../../../mods/commands/yc_compopt.so: yc_compopt.cpp +../../../mods/commands/yc_exec.so: yc_exec.cpp +../../../mods/commands/yc_fake.so: yc_fake.cpp +../../../mods/commands/yc_getroom.so: yc_getroom.cpp +../../../mods/commands/yc_getrusage.so: yc_getrusage.cpp +../../../mods/commands/yc_help.so: yc_help.cpp +../../../mods/commands/yc_invisible.so: yc_invisible.cpp +../../../mods/commands/yc_j.so: yc_j.cpp +../../../mods/commands/yc_ko.so: yc_ko.cpp +../../../mods/commands/yc_m.so: yc_m.cpp +../../../mods/commands/yc_md5.so: yc_md5.cpp +../../../mods/commands/yc_me.so: yc_me.cpp +../../../mods/commands/yc_morph.so: yc_morph.cpp +../../../mods/commands/yc_msg.so: yc_msg.cpp +../../../mods/commands/yc_q.so: yc_q.cpp +../../../mods/commands/yc_reload.so: yc_reload.cpp +../../../mods/commands/yc_ren.so: yc_ren.cpp +../../../mods/commands/yc_s.so: yc_s.cpp +../../../mods/commands/yc_set.so: yc_set.cpp +../../../mods/commands/yc_template.so: yc_template.cpp +../../../mods/commands/yc_time.so: yc_time.cpp +../../../mods/commands/yc_topic.so: yc_topic.cpp +../../../mods/commands/yc_uptime.so: yc_uptime.cpp +../../../mods/commands/yc_users.so: yc_users.cpp +../../../mods/commands/yc_version.so: yc_version.cpp diff --git a/ychat-0.7.5/src/mods/commands/Makefile.in b/ychat-0.7.5/src/mods/commands/Makefile.in new file mode 100755 index 0000000..ce8c00f --- /dev/null +++ b/ychat-0.7.5/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): + @echo -n "Compiling command module `basename $@` " + @if ! test -d `dirname $@`; then mkdir -p `dirname $@`; fi + @$(CC) $(CFLAGS) $(INCLUDES) -shared -s -o $@ `echo $(notdir $@) | sed s/.so/.cpp/` + @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.7.5/src/mods/commands/yc_about.cpp b/ychat-0.7.5/src/mods/commands/yc_about.cpp new file mode 100644 index 0000000..086e126 --- /dev/null +++ b/ychat-0.7.5/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<string> *params = (vector<string>*) 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<string>::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 = "<b>" + p_searched_user->get_colored_name() + "</b>" + + p_conf->get_elem("chat.msgs.userhasstatus") + "<b>" + + tool::int2string(p_searched_user->get_status()) + + "</b>, " + + p_conf->get_elem("chat.msgs.userinroom") + "<b>" + + p_searched_user->get_room()->get_name() + + "</b><br>\n" + + p_conf->get_elem("chat.msgs.lastactivity") + "<b>" + + tool::int2string((int)( p_searched_user->get_last_activity())) + + "</b><br>\n"; + p_user->msg_post( &s_msg ); + } + + else + { + string s_msg = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\"><b>" + + s_searched_user + "</b> " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "</font><br>\n"; + p_user->msg_post( &s_msg ); + + } + } + + return 0; + } + +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_all.cpp b/ychat-0.7.5/src/mods/commands/yc_all.cpp new file mode 100755 index 0000000..c4c9cdf --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_all.cpp @@ -0,0 +1,48 @@ +#include <iostream> +#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<string> *params= (vector<string>*) 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<string>::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_tmp.append( *iter + " " ); + + s_msg = p_timr->get_time() + " <b><font color=\"#" + + p_conf->get_elem("chat.html.sysmsgcolor") + + "\"> " + + p_conf->get_elem("chat.msgs.system"); + + p_chat->string_replacer(&s_tmp); + s_msg.append( s_tmp + "</font></b><br>\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.7.5/src/mods/commands/yc_away.cpp b/ychat-0.7.5/src/mods/commands/yc_away.cpp new file mode 100755 index 0000000..af4a4a5 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_away.cpp @@ -0,0 +1,70 @@ +#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<string> *params = (vector<string>*) c->elem[2]; // param array + + string s_msg; + string s_away; + string s_col; + + vector<string>::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") + + "<font color=" + p_user->get_col2() + ">"; + + 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( "</font><br>\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.7.5/src/mods/commands/yc_col.cpp b/ychat-0.7.5/src/mods/commands/yc_col.cpp new file mode 100755 index 0000000..4449278 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_col.cpp @@ -0,0 +1,85 @@ +#include <iostream> +#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<string> *params= (vector<string>*) 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.<br>\n"); + p_user->msg_post( answerstring ); + } + else if( valid_color(s_color2) != 1 ) + { + string *answerstring=new string( s_color2 + " is not a valid color.<br>\n"); + p_user->msg_post( answerstring ); + } + else + { + string *answerstring=new string(p_timr->get_time() + " " + p_user->get_colored_bold_name()+ " changes color to <font color=\"#" + + s_color + "\">" + s_color + "</font> <font color=\"#" + + s_color2 + "\">" + s_color2 + "</font><br>\n"); + p_user->get_room()->msg_post( answerstring ); + p_user->set_col1(s_color); + p_user->set_col2(s_color2); + } + + return 0; + } + int valid_color( string s_color ){ + + if(s_color.size()!=6) return 0; + string valid="abcdef0123456789"; + for(int i=0;i<s_color.size();i++) + { + string s_char=s_color.substr(i,1); + if(valid.find(s_char)==string::npos) + return 0; + } + + return 1; + } + +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_compopt.cpp b/ychat-0.7.5/src/mods/commands/yc_compopt.cpp new file mode 100755 index 0000000..ad6ae99 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_compopt.cpp @@ -0,0 +1,22 @@ +#include <iostream> +#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 + "<br>\n" + COMPOPT + "<br>\n"); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_exec.cpp b/ychat-0.7.5/src/mods/commands/yc_exec.cpp new file mode 100755 index 0000000..f912c20 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_exec.cpp @@ -0,0 +1,66 @@ +#include "../../incl.h" +#include "../../chat/room.h" +#include "../../chat/user.h" +#include <unistd.h> +#include <sys/wait.h> +#include <stdio.h> +#include <sys/types.h> +#include <fcntl.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<string> *params = (vector<string>*) c->elem[2]; // param array + + string s_command; + string s_msg = p_timr->get_time(); + string s_output; + + vector<string>::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 + "<br>\n" ); + + p_user->msg_post( &s_msg ); + + FILE *file; + char buffer[READBUF]; + + if( (file=popen(s_command.c_str(), "r")) == NULL ) + { + s_output = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + p_conf->get_elem("chat.msgs.err.execcommand") + + "</font><br>\n"; + p_user->msg_post( &s_output ); + } + + else + { + s_output.append("<hr>\n"); + while(true) + { + if(fgets(buffer, READBUF, file) == NULL) + break; + + s_output.append( string(buffer) + "<br>\n" ); + } + + p_user->msg_post( &s_output ); + pclose(file); + } + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_fake.cpp b/ychat-0.7.5/src/mods/commands/yc_fake.cpp new file mode 100755 index 0000000..c708841 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_fake.cpp @@ -0,0 +1,29 @@ +#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") + "<br>\n" + : p_conf->get_elem("chat.msgs.setmodefake") + "<br>\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.7.5/src/mods/commands/yc_getroom.cpp b/ychat-0.7.5/src/mods/commands/yc_getroom.cpp new file mode 100755 index 0000000..87e2d25 --- /dev/null +++ b/ychat-0.7.5/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<string> *params = (vector<string>*) 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<string>::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 = "<b>" + p_searched_user->get_colored_name() + "</b>" + + p_conf->get_elem("chat.msgs.userinroom") + "<b>" + + p_searched_user->get_room()->get_name() + + "</b><br>\n"; + p_user->msg_post( &s_msg ); + } + + else + { + string s_msg = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\"><b>" + + s_searched_user + "</b> " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "</font><br>\n"; + p_user->msg_post( &s_msg ); + + } + } + + return 0; + } + +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_getrusage.cpp b/ychat-0.7.5/src/mods/commands/yc_getrusage.cpp new file mode 100755 index 0000000..83dcbb9 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_getrusage.cpp @@ -0,0 +1,56 @@ +#include <stdio.h> +#include <sys/types.h> +#include <sys/time.h> +#include <sys/resource.h> +#include <iostream> +#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:<br>\nmaxrss: %D (max resident set size)<br>\nixrss: %D (integral shared text memory size)<br>\nidrss: %D (integral unshared data size)<br>\nisrss %D (integral unshared stack size)<br>\nminflt: %D (page reclaims)<br>\nmajflt: %D (page faults)<br>\nnswap: %D (swaps)<br>\ninblock: %D (block input operations)<br>\noublock: %D (block output operations)<br>\nmsgsnd: %D (messages sent)<br>\nmsgrcv: %D (messages received)<br>\nnsignals: %D (signals received)<br>\nnvcsw: %D (voluntary context switches)<br>\nnivcsw: %D (involuntary context switches)<br>\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.7.5/src/mods/commands/yc_help.cpp b/ychat-0.7.5/src/mods/commands/yc_help.cpp new file mode 100755 index 0000000..41899c3 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_help.cpp @@ -0,0 +1,51 @@ +#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<string> *params = (vector<string>*) c->elem[2]; // param array + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + string s_msg = ""; + + if (params->size() >= 1) + { + vector<string>::iterator iter = params->begin(); + + string s_help = p_conf->get_elem("chat.msgs.help." + *iter); + + if ( s_help != "" ) { + s_msg.append("<b>" + *iter + ":</b> " + s_help + "<br>\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 = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\"> " + + s_msg + + "</font><br>\n"; + + p_user->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_invisible.cpp b/ychat-0.7.5/src/mods/commands/yc_invisible.cpp new file mode 100755 index 0000000..b78d934 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_invisible.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_invisible = p_user->get_invisible(); + + string s_msg = b_invisible + ? p_conf->get_elem("chat.msgs.setmodeinvisible") + + "<br>\n" + : p_conf->get_elem("chat.msgs.unsetmodeinvisible") + + "<br>\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.7.5/src/mods/commands/yc_j.cpp b/ychat-0.7.5/src/mods/commands/yc_j.cpp new file mode 100755 index 0000000..903e49b --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_j.cpp @@ -0,0 +1,105 @@ +#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<string> *params = (vector<string> *) 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<string> ::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 = "<font color=\"" + p_conf->get_elem("chat.html.errorcolor") + "\">" + + p_conf->get_elem("chat.msgs.err.alreadyinroom") + "<b>" + + p_user->get_room()->get_name() + "</b></font><br>\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" ) + "<b>"; + string s_msg2 = s_user + p_conf->get_elem( "chat.msgs.userentersroom" ) + "<b>"; + + 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 + "</b><br>\n" ); + s_msg2.append( s_room + "</b><br>\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() + "</b><br>\n" ); + s_msg2.append( p_room->get_name() + "</b><br>\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.7.5/src/mods/commands/yc_ko.cpp b/ychat-0.7.5/src/mods/commands/yc_ko.cpp new file mode 100755 index 0000000..ac32ac7 --- /dev/null +++ b/ychat-0.7.5/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<string> *params = (vector<string>*) 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<string>::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() + + "<br>\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 = "<script confuage=JavaScript>top.location.href='/" + + p_conf->get_elem("httpd.startsite") + + "';</script>"; + + p_searched_user->msg_post( &s_kick ); + p_searched_user->set_online(false); + } + + else + { + string s_msg = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\"><b>" + + s_searched_user + "</b> " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "</font><br>\n"; + p_user->msg_post( &s_msg ); + } + } + + return 0; + } + +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_m.cpp b/ychat-0.7.5/src/mods/commands/yc_m.cpp new file mode 100755 index 0000000..a93cc3b --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_m.cpp @@ -0,0 +1,43 @@ +#include <iostream> +#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<string> *params= (vector<string>*) 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( "<i>" + p_user->get_colored_name() + + " <font color=\"#" + p_user->get_col2() + + "\">" ); + if ( ! params->empty() ) + { + vector<string>::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_msg.append( *iter + " " ); + } + + s_msg.append( "</font></i><br>\n" ); + p_user->get_room()->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_md5.cpp b/ychat-0.7.5/src/mods/commands/yc_md5.cpp new file mode 100755 index 0000000..d79d952 --- /dev/null +++ b/ychat-0.7.5/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<string> *params = (vector<string>*) c->elem[2]; // param array + conf* p_conf = (conf*) ((dynamic_wrap*)c->elem[3])->CONF; + + if (params->size() >= 2) + { + vector<string>::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: <b>" + s_string + "</b>, Salt: <b>" + + s_salt + "</b> = <b>" + + + md5::MD5Crypt(s_string.c_str(), s_salt.c_str()) + + "</b><br>\n"; + p_user->msg_post( &s_msg ); + } + + else + { + string s_msg = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\"> " + + p_conf->get_elem("ERR_WRONG_COMMAND_USAGE") + + "</font><br>\n"; + p_user->msg_post( &s_msg ); + + } + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_me.cpp b/ychat-0.7.5/src/mods/commands/yc_me.cpp new file mode 100755 index 0000000..66d54da --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_me.cpp @@ -0,0 +1,44 @@ +#include <iostream> +#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<string> *params= (vector<string>*) 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( "<i><font color=\"#" +p_user->get_col1() + "\">" + + p_user->get_name() + " "); + + if ( ! params->empty() ) + { + vector<string>::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_msg.append( *iter + " " ); + } + + s_msg.append( "</font></i><br>\n" ); + p_user->get_room()->msg_post( &s_msg ); + + return 0; + + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_morph.cpp b/ychat-0.7.5/src/mods/commands/yc_morph.cpp new file mode 100755 index 0000000..cf1f448 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_morph.cpp @@ -0,0 +1,53 @@ +#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<string> *p_params = (vector<string>*) 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" ) + "<font color=\"#" + p_user->get_col1() + "\"><b>" + s_morphed_name + "</b></font><br>\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.7.5/src/mods/commands/yc_msg.cpp b/ychat-0.7.5/src/mods/commands/yc_msg.cpp new file mode 100755 index 0000000..33beee4 --- /dev/null +++ b/ychat-0.7.5/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<string> *params = (vector<string>*) 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<string>::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 + "<i> " + p_conf->get_elem("chat.msgs.whisperto") + " " + p_whisper_user->get_colored_name() + ": <font color=\"#" + p_user->get_col2() + "\">"; + + string s_whisper_msg = s_time + "<i>" + p_user->get_colored_name() + " " + p_conf->get_elem("chat.msgs.whisper") + ": <font color=\"#" + p_user->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 + "</font></i><br>\n" ); + s_whisper_msg.append( s_tmp + "</font></i><br>\n" ); + + p_user ->msg_post( &s_msg ); + p_whisper_user->msg_post( &s_whisper_msg ); + } + + else + { + string s_msg = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\"><b>" + + s_whisper_user + "</b> " + + p_conf->get_elem("chat.msgs.err.notavailable") + + "</font><br>\n"; + + p_user->msg_post( &s_msg ); + } + } + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_q.cpp b/ychat-0.7.5/src/mods/commands/yc_q.cpp new file mode 100755 index 0000000..4c9584d --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_q.cpp @@ -0,0 +1,29 @@ +#include <iostream> +#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 = "<script confuage=JavaScript>top.location.href='/" + + p_conf->get_elem("httpd.startsite") + + "';</script>"; + + p_user->msg_post( &s_quit ); + p_user->set_online(false); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_reload.cpp b/ychat-0.7.5/src/mods/commands/yc_reload.cpp new file mode 100755 index 0000000..8b9cd0a --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_reload.cpp @@ -0,0 +1,24 @@ +#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") + + "<br>\n"; + + p_user->get_room()->reload_onlineframe(); + p_user->msg_post ( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_ren.cpp b/ychat-0.7.5/src/mods/commands/yc_ren.cpp new file mode 100755 index 0000000..9735d8e --- /dev/null +++ b/ychat-0.7.5/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<string> *params = (vector<string>*) 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<string>::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 = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\">" + + p_conf->get_elem("chat.msgs.err.roomexists") + + "</font><br>\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.userrenamesroom" ) + + "<b>" + s_room + "</b><br>\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.7.5/src/mods/commands/yc_s.cpp b/ychat-0.7.5/src/mods/commands/yc_s.cpp new file mode 100755 index 0000000..30a6892 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_s.cpp @@ -0,0 +1,47 @@ +#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<string> *params= (vector<string>*) 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 + "<i>" + p_user->get_colored_name() + " " + p_conf->get_elem("chat.msgs.scream") + " <font color=\"#" + p_user->get_col2() + "\"><b>"; + + if ( ! params->empty() ) + { + vector<string>::iterator iter = params->begin(); + for ( iter = params->begin(); iter != params->end(); iter++ ) + s_msg.append( to_upper(*iter) + " " ); + } + + s_msg.append( "</b></font></i><br>\n" ); + p_user->get_room()->msg_post( &s_msg ); + + return 0; + + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_set.cpp b/ychat-0.7.5/src/mods/commands/yc_set.cpp new file mode 100755 index 0000000..a18b5e9 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_set.cpp @@ -0,0 +1,101 @@ +#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<string> *params = (vector<string>*) 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)) + + ")<br>\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 + ")<br>\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 = "<font color=\"#" + + p_conf->get_elem("chat.html.errorcolor") + + "\">" + + p_conf->get_elem("chat.msgs.err.wrongcommandusage") + + "</font><br>\n"; + p_user->msg_post( &s_msg ); + } + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_template.cpp b/ychat-0.7.5/src/mods/commands/yc_template.cpp new file mode 100755 index 0000000..e0aa009 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_template.cpp @@ -0,0 +1,24 @@ +#include <iostream> +#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<string> *params=(vector<string>*)c->elem[2]; // param array + + string *quitstring=new string("Text to send<br>"); + p_user->msg_post( quitstring ); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_time.cpp b/ychat-0.7.5/src/mods/commands/yc_time.cpp new file mode 100755 index 0000000..c22e542 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_time.cpp @@ -0,0 +1,21 @@ +#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() + "<br>\n"; + + p_user->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_topic.cpp b/ychat-0.7.5/src/mods/commands/yc_topic.cpp new file mode 100755 index 0000000..5541dc4 --- /dev/null +++ b/ychat-0.7.5/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<string> *params = (vector<string>*) 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<string>::iterator iter; + + s_col = "<font color=\"" + p_user->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( "</font>" ); + + 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 = "<font color=#" + p_conf->get_elem("chat.html.errorcolor") + + ">" + p_conf->get_elem( "chat.msgs.topiccut" ) + "</font><br>"; + + 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( "<script confuage='JavaScript'>parent.online.location.reload();</script><br>\n" ); + + p_room->msg_post ( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_uptime.cpp b/ychat-0.7.5/src/mods/commands/yc_uptime.cpp new file mode 100755 index 0000000..5fe0929 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_uptime.cpp @@ -0,0 +1,21 @@ +#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() + "<br>\n"; + + p_user->msg_post( &s_msg ); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_users.cpp b/ychat-0.7.5/src/mods/commands/yc_users.cpp new file mode 100755 index 0000000..74253b7 --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_users.cpp @@ -0,0 +1,27 @@ +#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") + + "<br><table>" + s_list + "</table>\n"); + + return 0; + } +} + diff --git a/ychat-0.7.5/src/mods/commands/yc_version.cpp b/ychat-0.7.5/src/mods/commands/yc_version.cpp new file mode 100755 index 0000000..d64fabd --- /dev/null +++ b/ychat-0.7.5/src/mods/commands/yc_version.cpp @@ -0,0 +1,22 @@ +#include <iostream> +#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() + "<br>\n"); + + return 0; + } +} + |
