summaryrefslogtreecommitdiff
path: root/ychat-0.7.9.0/src/mods
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:41 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:41 +0200
commit9cd3ccffd5372dfde3af478e3f832f18db4be3f1 (patch)
tree631c295a4a4a16b57502b847626763a279bf6df7 /ychat-0.7.9.0/src/mods
parent13aaf70af703748fe096e0664c305cd202637ad2 (diff)
tagging tags
Diffstat (limited to 'ychat-0.7.9.0/src/mods')
-rw-r--r--ychat-0.7.9.0/src/mods/CVS/Entries3
-rw-r--r--ychat-0.7.9.0/src/mods/CVS/Entries.Log3
-rw-r--r--ychat-0.7.9.0/src/mods/CVS/Repository1
-rw-r--r--ychat-0.7.9.0/src/mods/CVS/Root1
-rwxr-xr-xychat-0.7.9.0/src/mods/Makefile9
-rw-r--r--ychat-0.7.9.0/src/mods/commands/CVS/Entries32
-rw-r--r--ychat-0.7.9.0/src/mods/commands/CVS/Repository1
-rw-r--r--ychat-0.7.9.0/src/mods/commands/CVS/Root1
-rw-r--r--ychat-0.7.9.0/src/mods/commands/Makefile48
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/Makefile.in18
-rw-r--r--ychat-0.7.9.0/src/mods/commands/yc_about.cpp59
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_all.cpp49
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_away.cpp72
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_col.cpp88
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_compopt.cpp23
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_exec.cpp66
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_fake.cpp30
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_getroom.cpp53
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_getrusage.cpp57
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_help.cpp52
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_invisible.cpp31
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_j.cpp104
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_ko.cpp72
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_m.cpp44
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_md5.cpp54
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_me.cpp45
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_morph.cpp52
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_msg.cpp68
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_q.cpp30
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_reload.cpp25
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_ren.cpp74
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_s.cpp48
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_set.cpp100
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_template.cpp25
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_time.cpp22
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_topic.cpp78
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_uptime.cpp22
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_users.cpp28
-rwxr-xr-xychat-0.7.9.0/src/mods/commands/yc_version.cpp23
-rwxr-xr-xychat-0.7.9.0/src/mods/configure26
-rw-r--r--ychat-0.7.9.0/src/mods/html/CVS/Entries9
-rw-r--r--ychat-0.7.9.0/src/mods/html/CVS/Repository1
-rw-r--r--ychat-0.7.9.0/src/mods/html/CVS/Root1
-rw-r--r--ychat-0.7.9.0/src/mods/html/Makefile25
-rwxr-xr-xychat-0.7.9.0/src/mods/html/Makefile.in18
-rw-r--r--ychat-0.7.9.0/src/mods/html/yc_admin.cpp72
-rwxr-xr-xychat-0.7.9.0/src/mods/html/yc_colors.cpp37
-rwxr-xr-xychat-0.7.9.0/src/mods/html/yc_help.cpp50
-rwxr-xr-xychat-0.7.9.0/src/mods/html/yc_loggedin.cpp29
-rwxr-xr-xychat-0.7.9.0/src/mods/html/yc_options.cpp56
-rwxr-xr-xychat-0.7.9.0/src/mods/html/yc_register.cpp96
-rw-r--r--ychat-0.7.9.0/src/mods/irc/CVS/Entries1
-rw-r--r--ychat-0.7.9.0/src/mods/irc/CVS/Repository1
-rw-r--r--ychat-0.7.9.0/src/mods/irc/CVS/Root1
54 files changed, 2034 insertions, 0 deletions
diff --git a/ychat-0.7.9.0/src/mods/CVS/Entries b/ychat-0.7.9.0/src/mods/CVS/Entries
new file mode 100644
index 0000000..7567a1c
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/CVS/Entries
@@ -0,0 +1,3 @@
+/Makefile/1.4/Tue Jan 4 13:51:00 2005//
+/configure/1.7/Thu Jul 8 14:39:03 2004//
+D
diff --git a/ychat-0.7.9.0/src/mods/CVS/Entries.Log b/ychat-0.7.9.0/src/mods/CVS/Entries.Log
new file mode 100644
index 0000000..e9f894a
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/CVS/Entries.Log
@@ -0,0 +1,3 @@
+A D/commands////
+A D/html////
+A D/irc////
diff --git a/ychat-0.7.9.0/src/mods/CVS/Repository b/ychat-0.7.9.0/src/mods/CVS/Repository
new file mode 100644
index 0000000..d3c2e91
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/CVS/Repository
@@ -0,0 +1 @@
+ychat/src/mods
diff --git a/ychat-0.7.9.0/src/mods/CVS/Root b/ychat-0.7.9.0/src/mods/CVS/Root
new file mode 100644
index 0000000..745de68
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot
diff --git a/ychat-0.7.9.0/src/mods/Makefile b/ychat-0.7.9.0/src/mods/Makefile
new file mode 100755
index 0000000..1b0712b
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/Makefile
@@ -0,0 +1,9 @@
+MAKE=`tail -n 1 ../../make.version`
+all: mods
+mods:
+ @${MAKE} -C ./commands #//<<
+ @${MAKE} -C ./html
+clean:
+ @${MAKE} -C ./commands clean #//<<
+ @${MAKE} -C ./html clean
+ @if test -d ../../mods; then rm -Rf ../../mods; fi
diff --git a/ychat-0.7.9.0/src/mods/commands/CVS/Entries b/ychat-0.7.9.0/src/mods/commands/CVS/Entries
new file mode 100644
index 0000000..0e0d041
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/commands/CVS/Entries
@@ -0,0 +1,32 @@
+/Makefile/1.31/Sun Mar 6 20:44:47 2005//
+/Makefile.in/1.8/Sun Mar 6 20:44:47 2005//
+/yc_about.cpp/1.2/Mon Feb 21 01:55:49 2005//
+/yc_all.cpp/1.2/Mon Feb 21 01:55:49 2005//
+/yc_away.cpp/1.9/Mon Feb 21 01:55:49 2005//
+/yc_col.cpp/1.10/Mon Feb 21 01:55:49 2005//
+/yc_compopt.cpp/1.4/Mon Feb 21 01:55:49 2005//
+/yc_exec.cpp/1.10/Mon Feb 21 01:55:49 2005//
+/yc_fake.cpp/1.12/Mon Feb 21 01:55:49 2005//
+/yc_getroom.cpp/1.7/Mon Feb 21 01:55:49 2005//
+/yc_getrusage.cpp/1.9/Mon Feb 21 01:55:49 2005//
+/yc_help.cpp/1.5/Mon Feb 21 01:55:49 2005//
+/yc_invisible.cpp/1.10/Mon Feb 21 01:55:49 2005//
+/yc_j.cpp/1.10/Mon Feb 21 01:55:50 2005//
+/yc_ko.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_m.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_md5.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_me.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_morph.cpp/1.4/Mon Feb 21 01:55:50 2005//
+/yc_msg.cpp/1.10/Mon Feb 21 01:55:50 2005//
+/yc_q.cpp/1.9/Mon Feb 21 01:55:50 2005//
+/yc_reload.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_ren.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_s.cpp/1.9/Mon Feb 21 01:55:50 2005//
+/yc_set.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_template.cpp/1.8/Mon Feb 21 01:55:50 2005//
+/yc_time.cpp/1.7/Mon Feb 21 01:55:50 2005//
+/yc_topic.cpp/1.11/Mon Feb 21 01:55:50 2005//
+/yc_uptime.cpp/1.7/Mon Feb 21 01:55:50 2005//
+/yc_users.cpp/1.2/Mon Feb 21 01:55:50 2005//
+/yc_version.cpp/1.10/Mon Feb 21 01:55:50 2005//
+D
diff --git a/ychat-0.7.9.0/src/mods/commands/CVS/Repository b/ychat-0.7.9.0/src/mods/commands/CVS/Repository
new file mode 100644
index 0000000..567651e
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/commands/CVS/Repository
@@ -0,0 +1 @@
+ychat/src/mods/commands
diff --git a/ychat-0.7.9.0/src/mods/commands/CVS/Root b/ychat-0.7.9.0/src/mods/commands/CVS/Root
new file mode 100644
index 0000000..745de68
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/commands/CVS/Root
@@ -0,0 +1 @@
+:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot
diff --git a/ychat-0.7.9.0/src/mods/commands/Makefile b/ychat-0.7.9.0/src/mods/commands/Makefile
new file mode 100644
index 0000000..977b548
--- /dev/null
+++ b/ychat-0.7.9.0/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 $@ | sed s/\.so// | sed s/yc_//` "
+ @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.9.0/src/mods/commands/Makefile.in b/ychat-0.7.9.0/src/mods/commands/Makefile.in
new file mode 100755
index 0000000..7ca8455
--- /dev/null
+++ b/ychat-0.7.9.0/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 $@ | sed s/\.so// | sed s/yc_//` "
+ @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.9.0/src/mods/commands/yc_about.cpp b/ychat-0.7.9.0/src/mods/commands/yc_about.cpp
new file mode 100644
index 0000000..dece71d
--- /dev/null
+++ b/ychat-0.7.9.0/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.9.0/src/mods/commands/yc_all.cpp b/ychat-0.7.9.0/src/mods/commands/yc_all.cpp
new file mode 100755
index 0000000..3b5713f
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/commands/yc_all.cpp
@@ -0,0 +1,49 @@
+#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.9.0/src/mods/commands/yc_away.cpp b/ychat-0.7.9.0/src/mods/commands/yc_away.cpp
new file mode 100755
index 0000000..81a2089
--- /dev/null
+++ b/ychat-0.7.9.0/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<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.9.0/src/mods/commands/yc_col.cpp b/ychat-0.7.9.0/src/mods/commands/yc_col.cpp
new file mode 100755
index 0000000..3e1f591
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/commands/yc_col.cpp
@@ -0,0 +1,88 @@
+#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);
+ 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<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.9.0/src/mods/commands/yc_compopt.cpp b/ychat-0.7.9.0/src/mods/commands/yc_compopt.cpp
new file mode 100755
index 0000000..cd21f6f
--- /dev/null
+++ b/ychat-0.7.9.0/src/mods/commands/yc_compopt.cpp
@@ -0,0 +1,23 @@
+#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.9.0/src/mods/commands/yc_exec.cpp b/ychat-0.7.9.0/src/mods/commands/yc_exec.cpp
new file mode 100755
index 0000000..119942d
--- /dev/null
+++ b/ychat-0.7.9.0/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.9.0/src/mods/commands/yc_fake.cpp b/ychat-0.7.9.0/src/mods/commands/yc_fake.cpp
new file mode 100755
index 0000000..cfc22c0
--- /dev/null
+++ b/ychat-0.7.9.0/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") + "<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.9.0/src/mods/commands/yc_getroom.cpp b/ychat-0.7.9.0/src/mods/commands/yc_getroom.cpp
new file mode 100755
index 0000000..e27c468
--- /dev/null
+++ b/