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.6/src/mods/commands | |
| parent | 13aaf70af703748fe096e0664c305cd202637ad2 (diff) | |
tagging tags
Diffstat (limited to 'ychat-0.7.6/src/mods/commands')
34 files changed, 1576 insertions, 0 deletions
diff --git a/ychat-0.7.6/src/mods/commands/CVS/Entries b/ychat-0.7.6/src/mods/commands/CVS/Entries new file mode 100644 index 0000000..f719ced --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/CVS/Repository b/ychat-0.7.6/src/mods/commands/CVS/Repository new file mode 100644 index 0000000..567651e --- /dev/null +++ b/ychat-0.7.6/src/mods/commands/CVS/Repository @@ -0,0 +1 @@ +ychat/src/mods/commands diff --git a/ychat-0.7.6/src/mods/commands/CVS/Root b/ychat-0.7.6/src/mods/commands/CVS/Root new file mode 100644 index 0000000..745de68 --- /dev/null +++ b/ychat-0.7.6/src/mods/commands/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot diff --git a/ychat-0.7.6/src/mods/commands/Makefile b/ychat-0.7.6/src/mods/commands/Makefile new file mode 100644 index 0000000..6aec38d --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/Makefile.in b/ychat-0.7.6/src/mods/commands/Makefile.in new file mode 100755 index 0000000..ce8c00f --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_about.cpp b/ychat-0.7.6/src/mods/commands/yc_about.cpp new file mode 100644 index 0000000..086e126 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_all.cpp b/ychat-0.7.6/src/mods/commands/yc_all.cpp new file mode 100755 index 0000000..c4c9cdf --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_away.cpp b/ychat-0.7.6/src/mods/commands/yc_away.cpp new file mode 100755 index 0000000..af4a4a5 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_col.cpp b/ychat-0.7.6/src/mods/commands/yc_col.cpp new file mode 100755 index 0000000..4449278 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_compopt.cpp b/ychat-0.7.6/src/mods/commands/yc_compopt.cpp new file mode 100755 index 0000000..ad6ae99 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_exec.cpp b/ychat-0.7.6/src/mods/commands/yc_exec.cpp new file mode 100755 index 0000000..f912c20 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_fake.cpp b/ychat-0.7.6/src/mods/commands/yc_fake.cpp new file mode 100755 index 0000000..c708841 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_getroom.cpp b/ychat-0.7.6/src/mods/commands/yc_getroom.cpp new file mode 100755 index 0000000..87e2d25 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_getrusage.cpp b/ychat-0.7.6/src/mods/commands/yc_getrusage.cpp new file mode 100755 index 0000000..83dcbb9 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_help.cpp b/ychat-0.7.6/src/mods/commands/yc_help.cpp new file mode 100755 index 0000000..41899c3 --- /dev/null +++ b/ychat-0.7.6/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.6/src/mods/commands/yc_invisible.cpp b/ychat-0.7.6/src/mods/commands/yc_invisible.cpp new file mode 100755 index 0000000..b78d934 --- /dev/null +++ b/ychat-0.7.6/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; + } +} + |
