diff options
| author | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:44 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:44 +0200 |
| commit | b3a99e6e15af3be25394e66d1138bb2682f565c3 (patch) | |
| tree | 0206b0018cd075cc8b0d8d4f34a1d27c38598f36 | |
| parent | 5b7605790328c6c0f473296df444d0f4a79ac779 (diff) | |
tagging ychat-0.5.5ychat-0.5.5
| -rw-r--r-- | CHANGES | 98 | ||||
| -rw-r--r--[-rwxr-xr-x] | COPYING | 0 | ||||
| -rwxr-xr-x | Makefile | 78 | ||||
| -rwxr-xr-x | README | 465 | ||||
| -rwxr-xr-x | conf.txt | 45 | ||||
| -rwxr-xr-x | configure | 77 | ||||
| -rw-r--r--[-rwxr-xr-x] | html/favicon.ico | bin | 2238 -> 2238 bytes | |||
| -rwxr-xr-x | html/frameset.html | 12 | ||||
| -rwxr-xr-x | html/index.html | 46 | ||||
| -rwxr-xr-x | html/input.html | 52 | ||||
| -rwxr-xr-x | html/notfound.html | 4 | ||||
| -rwxr-xr-x | html/online.html | 22 | ||||
| -rwxr-xr-x | html/stream.html | 39 | ||||
| -rw-r--r--[-rwxr-xr-x] | html/style.css | 49 | ||||
| -rw-r--r-- | lang/de | 10 | ||||
| -rw-r--r-- | lang/en | 7 | ||||
| -rwxr-xr-x | scripts/astyle.sh | 5 | ||||
| -rwxr-xr-x | scripts/stats.pl | 4 | ||||
| -rwxr-xr-x | scripts/version.sh | 9 | ||||
| -rw-r--r-- | src/Makefile | 18 | ||||
| -rwxr-xr-x | src/Makefile.in | 34 | ||||
| -rw-r--r-- | src/config.cache | 30 | ||||
| -rw-r--r-- | src/config.log | 71 | ||||
| -rwxr-xr-x | src/config.status | 151 | ||||
| -rwxr-xr-x | src/configure | 1805 | ||||
| -rwxr-xr-x | src/glob.h | 218 | ||||
| -rwxr-xr-x | src/html.cpp | 186 | ||||
| -rwxr-xr-x | src/html.h | 56 | ||||
| -rwxr-xr-x | src/incl.h | 19 | ||||
| -rwxr-xr-x | src/main.cpp | 220 | ||||
| -rwxr-xr-x | src/msgs.h | 145 | ||||
| -rwxr-xr-x | src/name.cpp | 38 | ||||
| -rwxr-xr-x | src/name.h | 24 | ||||
| -rwxr-xr-x | src/reqp.cpp | 641 | ||||
| -rwxr-xr-x | src/reqp.h | 62 | ||||
| -rw-r--r-- | src/sman.cpp | 8 |
36 files changed, 2746 insertions, 2002 deletions
@@ -1,86 +1,20 @@ -Changes from 0.7.4.1-RELEASE to 0.7.5-RELEASE -- Garbage collector will now run once a hour rather than each ten minutes. -- Dynamic thread pool improvements. -- Removed equiv-http-refresh meta tag from the online list. -- Minor bugfix in the /topic command. -- Implemented "User list" +Changes from 0.5.4-STABLERELEASE to 0.5.5-STABLERELEASE +- Added scripts/version.sh (can be invoked by gmake version) +- Fixed a bug in the session manager. +- Removed the large animated GIF graphic. -Changes from 0.7.4-RELEASE to 0.7.4.1-RELEASE: -- Dynamic thread pool bugfix (dead lock) +Changes from 0.5.3-LEGACYRELEASE to 0.5.4-STABLERELEASE +- Backported reqp::get_url from yChat 0.7.8-CURRENT. +- Tagged 0.5-STABLE -Changes from 0.7.3-RELEASE to 0.7.4-RELEASE: -- Code cleanup. -- Made the thread pool increasing dynamic. -- Added some thread pool optimazions. -- Added some more ${MAKE} vars to the Makefiles. -- Added Content-length to the HTTPD header. -- Added the !command to the command line interface. -- Added Content-type text/plain. -- Added scrolling checkbox to input.html -- Removed modl from yhttpd. Dynamic modules are not needed in yhttpd yet. -- Improved session engine. -- Fixed auto logout bug. -- Fixed newline bug (one \n too much for each html template) -- Logging can now be completely disabled. +Changes from 0.5.2-LEGACYRELEASE to 0.5.3-LEGACYRLEASE +- Code cleanup +- Added ./scripts/* +- Added gmake stats option -Changes from 0.7.2 to 0.7.3-RELEASE: -- Added FreeBSD 5.3-RELEASE support. -- Added chat.enableguest option. -- Added the /all command (Global system message) -- Renamed the /getstatus command into /about. -- Fixed the &-bug (& should be allowed in messages). \AND is now a - synonym for & too. -- Fixed the /msg bug (In /msg the string replacer should be activated). -- Fixed logging bug (do not log any timestamps if there are no messages). +Changes from 0.5.1-RELEASE to 0.5.2-LEGACYRLEASE +- Changed this branch into a LEGACY branch. +- Rewrote the dynamic thread pool (backport from 0.7.8-CURRENT). +- Added scripts/* +- Code now uses ANSI C++ style with 2 space code indenting. -Changes from 0.7.1 to 0.7.2-RELEASE: -New features: -- /morph -- Added the new standard html template design. -Bugfixes: -- /away prints a . instead of a : if no away reason is given. -- /ko message was wrong. Displayed not room name of the user to be kicked out. -- /invisible command displayed wrong private messages. -- /getstatus had no help text. -- /msg and /s should now print the system time if printalwaystime == true. -- Added a blank to the /uptime message. -- /topic now prints the topic in the user's color. -- Fixed some typos. - -Changes from 0.7.0 to 0.7.1-RELEASE: -- Added ${MAKE} to the config file because some Linux distros dont use - the "gmake" command for GNU make but just "make"! Modified the - configure script to generate a make.version file. -- Removed some typos from the ychat.conf. -- Fixed the auto away message. This one will be posted in the room - as public rather than only private to the auto-away-user. -- Fixed some documentation stuff for yhttpd because yhttpd does not - need MySQL at all. -- Added the chat.maxlength.word option. - -Changes from 0.6 to 0.7.0-RELEASE: -- Better stability -- Better performance (using more hmaps) -- HTML color switcher menu -- New commands: /away /room /j /ren -- Simple garbage collector for old user and room objects -- Use of the database (MySQL) -- Nick registration and password protection -- Status images for Operator, Half-Operator, Voiced user and Guests -- New Makefiles -- Useful Perl scripts for sourcecode stats generation etc. -- Added system_log and room logging to access_log logging -- Added time-offset option -- Added to the admin interface new options -- Added Logout button -- Added string replacer there certain substr. of postings will be replaced by another string (such as smiley images) -- Added Superuser levels and the /ko and /set commands -- Added admin CLI (Command Line Interface) mode -- Added memory rusage history which tracks memory usage for the last 10 days -- Added HTTP POST request parsing -- Made yChat more modular so yhttpd can be extracted from it (scripts/makeyhttpd.pl) -- Added CGI support -- Rewrote big parts of the Makefiles and the configure scripts -- Made it compatible to GNU G++ 3.4, 3.3, 3.2 and 3.1 (3.0 and earlier does not work) -- XML based configuration file (ychat.conf) -- Added default operator option: chat.defaultop @@ -1,84 +1,24 @@ -MAKE=`tail -n 1 make.version` -PREFIX=`grep "define PREFIX" src/glob.h | cut -d'"' -f2` -all: version base modules version - @echo "Now edit the ychat.conf and run ychat!" - @echo "The config file is searched in the following order:" - @echo " ./ychat.conf " - @echo " ~/.ychat/ychat.conf " - @echo " ./etc/ychat.conf " - @echo " /etc/ychat.conf " - @echo " $(PREFIX)/etc/ychat.conf " - @echo If you want to help the yChat project please run gmake mail - @echo so that the developers receive an email about the platform - @echo being used. -mail: - @echo "VERSION:" > mail.tmp - @${MAKE} version >> mail.tmp - @echo >> mail.tmp - @echo "UNAME:" >> mail.tmp - @uname -a >> mail.tmp - @echo >> mail.tmp - @echo "DATE:" >> mail.tmp - @date >> mail.tmp - @echo >> mail.tmp - @echo "COMPILER AND MAKE:" >> mail.tmp - @cat g++.version make.version >> mail.tmp - @cat mail.tmp | mail -s "Successfull build of yChat" successfullbuild@yhttpd.org - @rm -f mail.tmp +MAKE=gmake +all: base + @echo "Now edit the ./conf.txt file and run ./ychat!" install: deinstall uninstall: deinstall deinstall: @echo Install/deinstall is not supported! - @echo Start yChat with ./bin/ychat instead! + @echo Start yChat with ./ychat instead! @exit 1 -modules: - @if test -d ./src/mods; then ${MAKE} -C ./src/mods; fi -clean_modules: - @if test -d ./src/mods; then ${MAKE} -C ./src/mods clean; fi base: - @if test -f bin/ychat; then echo "Backing up old binary";if test -f bin/ychat.old; then rm -f bin/ychat.old; fi; mv bin/ychat bin/ychat.old; fi - @perl ./scripts/buildnr.pl - @perl ./scripts/setglobvals.pl @${MAKE} -C ./src clean_base: @${MAKE} -C ./src clean stats: @perl scripts/stats.pl run: - ./bin/ychat -base_start: base - ./bin/ychat -start: base modules - ./bin/ychat + ./ychat gpl: @more COPYING -#//<<* -yhttpdbase: - @perl scripts/makeyhttpd.pl || echo "You need to have perl to do this!" - @echo yhttpd code base has been generated in ../yhttpd -#//*>> -clean: clean_base clean_modules -help: - @echo "You may run ${MAKE} with the following parameters:" - @grep "^ ${MAKE} " README - @echo "For more questions read the README file or contact mail@ychat.org!" -setup: - @./configure - @${MAKE} -config: - @sh -c "scripts/config.sh" - @echo If you run ${MAKE} config from the command line then you may need - @echo to rerun ./configure and recompile all now! - -mrproper: clean - @if test -f src/glob.h.org; then mv -f src/glob.h.org src/glob.h;fi - @if test -f g++.version; then rm -f g++.version; fi - @if test -f make.version; then rm -f make.version; fi - @if test -f src/Makefile; then rm -f src/Makefile; fi - @if test -d src/mods; then find src/mods/*/ -name Makefile | xargs rm -f; fi - @find . -name "*.add" | xargs rm -f - @ls | grep core | xargs rm -f -version: - @./scripts/version.sh +clean: clean_base debug: - @gdb bin/ychat ychat.core + @gdb ./ychat ychat.core +version: + @sh ./scripts/version.sh @@ -1,7 +1,8 @@ -yChat; Homepage: www.yChat.org; Version 0.7.6-RELEASE +yChat; Homepage: www.yChat.org; Version 0.5.5-CURRENT Copyright (C) 2003 Paul C. Buetow, Volker Richter -Copyright (C) 2004, 2005 Paul C. Buetow +Copyright (C) 2005 Paul C. Buetow ----------------------------------------------------------------- + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 @@ -15,191 +16,39 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ------------------------------------------------------------------ -YCHAT TABLE OF CONTENTS: +----------------------------------------------------------------- -0.0.0 YCHAT FEATURES //<< +0.0.0 LEGACY YCHAT 0.5 TABLE OF CONTENTS 1.0.0 REQUIREMENTS 1.1.0 TESTED PLATFORMS -1.2.0 IMPORTANT NOTICES +1.2.0 IMPORTANT NOTES 1.3.0 HOW TO OBTAIN YCHAT 1.3.1 INSTALLATION -1.3.2 INSTALLATION QUICK-START -1.3.3 MYSQL SETUP //<< -1.4.0 HOW TO USE SCREEN WITH YCHAT 1.5.0 CUSTOMIZATION 1.6.0 FILES 1.7.0 WRITING BUG REPORTS 1.8.0 CONTACT -1.9.0 YHTTPD CODE BASE GENERATION //<< - -//<<* -0.0.0 YCHAT FEATURES - -- Its free & portable - -yChat is developed under the GNU general public license and is based on GNU -tools (gcc, gmake), other open source library stuff (such as libncurses etc.) -and should run on any POSIX capable operating system (such as all Linux based -systems, FreeBSD, NetBSD, OpenBSD and other BSD-Systems and on UNICES like -IRIX, HP-UX, Solaris etc.). - -- There is no need for special chat clients - -yChat is web based, that means clients may only connect to the chat server -with an normal web browser such as Microsoft Internet Explorer or any Gecko- -Engine powerd browsers like Mozilla, Firefox, Camino etc. - -- It has features of a real HTTP webserver - -yChat runs completely stand alone and does not need another webserver to build -on like Apache and does not need to be run via any kind of CGI. yChat creates -its own socket on a customized port (standard port: 2000) and seems to be a full -featured HTTP web server to the clients (web browsers). - -The yChat code base can be converted to an yhttpd code base automaticaly. yhttpd -is the webserver subset of yChat which runs completely stand alone and provides -normal websites to the net. It also supports Common Gateway Interface (CGI) -scripting. - -- Its fast and secure - -yChat is written in C++ which is faster than any Java based Chat-Server or any -server written in a scripting language like PHP, Python or Perl. As the -internal data structures hash maps are used to garuantee searching certain -values in O(1) amount of time. If a hash maps gets full, it will be rehashed. -Currently, yChat has been measured providing over 1000 hits/requests per second -on a FreeBSD based server box while using less than 2% of CPU usage -on a Athlon XP 1900+. Performance seems to be limited by your bandwith only. -Also, each user gets its own session id (random string) with a standard length -of 50 chars to authenticate each logged in user. The length of the session id -can be redefined as well. Also, the session id will get md5-hashed optionally -so thats even harder to reverse engineering the session ids of other users. - -- Its HTML template based and easy to customize via XML based configuration - -All HTML sites are predefined as HTML-Template files and can be easily modified -to use with an customized web design. Also, a lot of yChat preferences can be -set in the main configuration file (ychat.conf). ychat.conf is completely written -in XML 1.0 which makes it easier to use the configuration options in programs of -3rd persons which may want to write some usefull tools for yChat. -yChat caches all HTML and web images to improve overall performance. If needed, the -cache can be cleared to recache new versions of the template files. - -- Its language template based - -The administrator can easily create a new language in which all system messages -appear to the Chat-User. The predefined languages is english but others can be -added easily. The language can be edited in the XML based configuration file. - -- MySQL based database - -Registered users are stored in a MySQL database. C++ Programmers may feel free -to replace the database wrapper class (data.h) with another database routines -to use other databases such as PostgreSQL, SQLite or a text based database etc. -If wished, you can disable database support in the pre-compile options. - -- It has an administration interface - -yChat includes an ncurses based administration interface which tracks some -interesting statistics and system messages and enables you to do certain -administrative tasks. In addition, you can switch to the CLI (command line -interface) mode of the administration interface in order to be provided with -more available functions (like keeping track of the current system usage etc.). -If you dont like ncurses and/or the CLI you can disable both options in the pre- -compile options. - -- It has logging capabilities - -The logging manager keeps track to all yChat system messages (such as users -wich log in and out, modules which are loaded, MySQL queries etc.). Also, an -Apache-Style combined log file format is created by yChat (you can parse this -logfile with any Apache logfile parser like awstats etc.). And last but not -least, all public messages of all available rooms will be logged to disk as -well . To improve performance, you can define the logging puffer (standardly -new logs will be written to disk after each 20 lines). If you want to log -everything immediately, you can reset this option to 1 in ychat.conf. - -- Its modular - -All chat commands are realized through dynamic loadable module files which can -be recompiled and reloaded without restarting the whole yChat server. Also -HTML-Sites with certain tasks can be compiled as a module like -mods/html/yc_register.so, mods/html/yc_options.so and mods/html/yc_colors.so -etc. so you can also program your dynamic yChat websites in C++. - -- Its multi threaded (POSIX threads) - -There is only one main process which spawns several threads, each for its own -unique task. For example one thread is used to handle the socket manager which -waits for incoming TCP/IP requests, another thread schedules the system timer -which proves if clients are still active or frees not needed memory in certain -time intervals (see also "Garbage collector"). Also, each Chat-User gets it own -thread. There is no need of memory wastage by creating for each task a new -process. All User-Threads are managed by a thread pool to avoid CPU wastage -creating every time a new thread by reusing thread objects which have done its -jobs already and have been readded into the queue of the thread pool. The -standard sizes of the queue and the total pool size can be set in ychat.conf. - -- Its using a smart garbage collection engine - -All users and rooms which dont have to be kept in the main memory (because the -user has logged out or the room has been destroyed because it was empty) will -not be deleted immediately but be placed for about 10 minutes in the yChat -garbage collector. Each time a new room is created the systems checks the -garbage to reuse an inactive room object. If a certain user wants to log in, the -system checks if he is already present in the garbage collector. If yes, he will -be reactivated without wasting expensive database queries to fetch the user's -options. This improves overall performance on heavily loaded yChat servers if a -lot of user and room objects are created and destroyed frequently. -//*>> 1.0.0 REQUIREMENTS: -- GNU GCC G++ 3.4 or 3.3 or 3.2 or 3.1 - The GNU C++ compiler. G++ version 3.0 or 2.x does NOT work. - -- GNU make 3.80 (gmake) or higher - If you dont have a gmake executable but make is gnu make then you need - to add a symlink or alias from gmake to make. - yChat Makefiles only have been tested with GNU make and may not work with - other make versions. - -- SGI STL extension - Includes ext/hash_map which may be already default on every Linux distro. - On *BSD you have to install it first before compiling. On FreeBSD - /usr/ports/devel/stlport is your friend. - -//<<* -- mysql-client 4.x (3.x may do too but is not supported) - Includes libmysqlclient and the mysql.h header files. - -//*>> -- ncurses 5.x - Includes libncurses and the ncurses.h header files. - -- Screen - Only needed if yChat should run in background with - ncurses or CLI enabled. - -- Perl 5.x - Is needed for some scripts. Is not needed if you use precompiled binaries. +- gcc 3.x + The GNU C++ compiler. 1.1.0 TESTED PLATFORMS: -The following platforms have been tested with success. If you find out that -a listed platform did not work at all please contact me: - - Operating system (arch) GNU G++ GNU make -- FreeBSD 5.3-RELEASE (i386) 3.4.2 3.80 -- FreeBSD 5.2.1-RELEASE (i386) 3.3.3 3.80 -- FreeBSD 4.10-RELEASE (i386) 3.4.1 3.80 -- FreeBSD 4.9-RELEASE (i386) 3.3.4 3.80 -- Gentoo Linux 2004 (i386) 3.3.2 3.80 -- OpenBSD 3.6 SMP (i386) 3.3.2 3.80 -- Red Hat Linux 8.0 SMP (i386) 3.2-7 3.79 -- Slackware Linux 10.0 (i386) 3.4.0 3.80 -- SUSE Linux 9.0 (i386) 3.3.1 3.80 -- SUSE Linux 8.1 (i386) 3.2 3.79.1 +The following platforms have been tested with success: -Other platforms like Linux based systems, other BSD-Systems or UNICES -are very likely to work too. +- Linux with GCC 3.2.0, GNU make 3.79.1 +- FreeBSD 5.1-RELEASE-p2, GCC 3.2.2, GNU make 3.80 +- FreeBSD 5.3-RELEASE, GCC 3.4, GNU make 3.80 -1.2.0 IMPORTANT NOTICES: +1.2.0 IMPORTANT NOTES: Before you compile the source you have to be sure to use at least GCC -version 3.1 with pthreads enabled. ( Type gcc -v to check it ). -GCC 2.95 and 3.0 did not work while testing and WON'T BE SUPPORTED! -If you like to support yChat, please write us an email and tell what +version 3.x with pthreads enabled. ( Type gcc -v to check it ). +GCC 2.95 did not work while testing on linux and WON'T BE SUPPORTED! +If you like to support yChat please write us an email and tell what you can/like/would help ;-]. Please also take a look at the yChat homepage which is located at http://www.yChat.org. @@ -208,173 +57,151 @@ homepage which is located at http://www.yChat.org. yChat can be downloaded as a source package or through CVS. The packages are located at http://www.yChat.org -> Sourcecode -> -Packages or go to http://pub.buetow.org/yChat/CPP-yChat . +Packages or go to http://programming.buetow.org/CPP-yChat . -For CVS download type: +For CVS download type also look at the homepage please. -cvs -d:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot login -( You will be asked for a password. Use "just enter" ). +1.3.1 INSTALLATION: -vs -z3 -d:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot co ychat -( The sources will be copied into your local folder ) +Invoke "./configure" and afterwards "make", edit the conf.txt. -cvs -d:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot logout -( Logs your CVS session out ). +Now we want to compile all the dynamic loadable modules of ychat. +Invoke "cd cmnd && ./compile.sh && cd -". All command modules should get +compiled. -Now you may continue with the installation. +Now its time to run the server with ./ychat. +Then point your webbrowser to http://yourip:port ! -1.3.1 INSTALLATION: +... have fun :-). -Invoke "./configure". Afterwards you will get prompted with the before-compile -options of yChat. After choosing those options you are ready to type "gmake" -afterwards. See below what gmake is doing. - -//<<* -If you have choosen MySQL database support, then take a look at section 1.3.2 -how to setup a valid database table. Be also sure to enter the valid MySQL -accessing data in the yChat configuration file which is normally located in -the etc/ychat.conf file if not changed by you with the yChat configurator. -//*>> - -You may also invoke gmake with the following options (the PREFIX can be set -in the yChat configurator which will be launched by the top configure script -or gmake config): - - gmake or gmake all (compiles everything, also modules and runs "gmake mail") - gmake base (only compiles the base) - gmake base_start (only compiles the base and starts the server) - gmake clean (cleans everything) - gmake clean_base (only cleans the base obj and rpo files) - gmake clean_modules (only cleans the modules .so files) - gmake config (runs yChat configurator) - gmake gpl (shows the GNU General Public License) - gmake help (shows all available ychat gmake targets) - gmake mail (sends a mail to the yChat developers containing build opts.) - gmake modules (only compiles modules) - gmake mrproper (same as gmake clean plus removing all temp files) - gmake setup (runs all configure scripts and afterwards gmake all) - gmake start (compiles everything and starts the server) - gmake stats (generates ychat statistics) - gmake version (shows the current version of yChat) -//<<* - gmake yhttpdbase (generates an yhttpd code base) -//*>> (See section 1.9 to read about this marks) - -Example: "gmake all install clean" compiles everything, installs it to PREFIX -and cleans the source directories. - -Now its time to run the server with ./bin/ychat. - -Aferwards point your webbrowser to http://yourip:port ! +1.5.0 CUSTOMIZATION: -... have fun :-). +If you like to customize the design/layout/language of yChat, you will have +to edit msgs.h and glob.h before you compile the sources. Afterwards you can +change the html-template files which are placed in the html/ subdirectory. +Dynamic loadable modules can be found in the cmnd/ subdirectory. -1.3.2 INSTALLATION QUICK START: +1.6.0 FILES: ( This list is not complete ) -If you in hury, then you may just type gmake setup. In the yChat configurator -you may just choose all the default values. If done, yChat will get compiled -and is ready to run with ./bin/ychat! +conf.txt - The yChat configuration file. ( read by conf.cpp ). +Files in ./src: -//<<* -1.3.3 MYSQL SETUP +base.cpp - Encapsulates vector fields of room's or user ( may be later + hash_maps ) and provides methods for manipulating data + objects. -If you chose to use MySQL database support you have to create a valid database -to use with yChat. +hmap.cpp - The hash map implementation which is a very fast data + structure. is needed for saving users, rooms and so on. -Create a new MySQL database called 'ychat' and type the following command into -a MySQL command line client of your choice: +main.cpp - This includes the required manager headers for starting + the server and finally regulates the correct starting. -USE ychat -CREATE TABLE `user` ( - `uid` int(10) NOT NULL auto_increment, - `nick` varchar(30) NOT NULL default '', - `password` varchar(30) NOT NULL default '', - `color1` varchar(30), - `color2` varchar(30), - `email` varchar(50) default '-', - `registerdate` varchar(30) default '-', - `logincounter` varchar(10) default '0', - `status` char(1) default '3', - PRIMARY KEY (`uid`), - KEY `uid` (`uid`) -) TYPE=MyISAM; -GRANT ALL PRIVILEGES ON ychat.* to ychat@localhost IDENTIFIED BY "yctest"; +modl.cpp - The module loader. Stores pointers of all dynamic loaded + yChat modules in a hash map object and loads new modules + if desired or returns their pointers. -This database uses the default MySQL access informations which are stored in the -ychat.conf file. -//*>> +pool.cpp - The implementation of the thread pool. all threads are stored + in a queue. Each thread will be reused if the assigned job is + finished. -1.4.0 HOW TO USE SCREEN WITH YCHAT: +reqp.cpp - This class implements the http request parser. If a client + starts a request to the server the reqp class will be + invoked. -If you are running yChat in ncurses mode you might want to install -the tool which is called "screen". This will enable you putting the -ncurses interface into the background, closing the terminal session -and reusing the interface later through another terminal. +room.cpp - Specifies a chat room. For each chat room an instance of + this class exists. -Just do: - - screen -S ychat ./bin/ychat ( creates a new session and starts yChat in it ) - ctrl+d+a ( will detach the yChat session ) - ( closing the terminal ) - ( opening a new terminal ) - screen -r ychat ( will return you to the yChat process ) +thrd.cpp - This class is needed by sock.cpp while creating a POSIX thread. + All data which a thread needs to do its tasks are stored in a + thrd object and then a pointer to it will be passed to the + POSIX thread function. -Screen will terminate automaticaly if all processes in its sessions are -terminated. +user.cpp - Specifies a chat user. For each chat user an instance of + this class exists. -For a closer look read the screen manual page ( man screen ). +Abstract classes: -1.5.0 CUSTOMIZATION: +cont.cpp - All classes which need to store "key - value" data sets + inherit from this class. ( cont for content ). -If you like to customize the design/layout/language of yChat, you will have -to edit src/msgs.h and src/glob.h before you compile the sources. Afterwards -you can change the html-template files which are placed in the html/ -subdirectory and the language-templates which are placed in the XML config -file (etc/ychat.conf). +name.cpp - All classes which own a private member string name inherit + from this class. It also provides public get_name and + set_name methods. + +As described ( main.cpp ), there are so called managers. Managers are +accessible through their assigned wrapper classes and may be +instanciated only once. + +chat.cpp - The chat manager. Is responsible for managing the internal + data structure of the system and also covers a lot of + important methods of the system. + +conf.cpp - The config manager. Parses the config file specified in + glob.h and stores all the values of it in a map. + +html.cpp - The html-template manager. Reads the requested html-template + files, stores them in an internal cache ( averts reading + template-files from hd twice or more ) and parses the + partivular template in order to substituate dynamic values + of it. -Notice, that you dont have to edit the src/glob.h file by hand any more, its -already done by the top ./configure script for you. +mutx.cpp - The mutex manager. Contains all global mutex handlers for + synchronizing POSIX thread shared data. until now only the + stdout is synchronized by mutx.cpp because most of objects + use their own mutex'. -You can edit the etc/ychat.conf to fit your needs. If you dont want to change -the config file, then you also can use ychat start parameters. +sock.cpp - The socket manager. Manages the socket connections. There + are multiplexed sockets. For each requests a new POSIX thread + will be created. -Exmpl: ./bin/ychat -o chat.database.password secretpassword +Files with a leading s_ contain static C++ classes -You can also use multiple words for a specific option. +s_chat.cpp - Static wrapper for the dynamic chat class. holds one global + reachable instance of chat until the program shuts down. -Exmpl: ./bin/ychat -o ychat.version "word1 word2 word3" +s_conf.cpp - Static wrapper for the dynamic conf class. holds one global + reachable instance of conf until the program shuts down. -will overwrite the default database password value of the ychat.conf. You can -do this with every configuration element by adding several -o option value -arguments to the start command. +s_html.cpp - Static wrapper for the dynamic html class. holds one global + reachable instance of conf until the program shuts down. -Dynamic loadable modules can be found in the mods/ subdirectory. (chat -commands are realized through modules too). Sources of modules can be found -in src/mods instead. If you want to create a new module just create a new -.cpp file and run in src/mods the ./configure script again. Next time -you run gmake your new module gets compiled. +s_mutx.cpp - Static wrapper for the dynamic mutx class. holds one global + reachable instance of conf until the program shuts down. -All messages defined in the msgs.h file contain server messages only ( a chat -user never wont read them, only the administrator will get to see them ). +s_sock.cpp - Static wrapper for the dynamic sock class. holds one global + reachable instance of conf until the program shuts down. -1.6.0 FILES: +s_tool.cpp - Static class which includes some usefull global reachable + methods which are not integraded in independent classes. -etc/ychat.conf - The yChat configuration file -html/* - The html template files -src/* - The yChat base sources -src/mods/* - The dynamic loadable modules sources -scripts/* - Some nice scripts needed for building & co. +Special header files ( all other header files which are not listed here +belong to their respective .cpp files ): -The following is created by building yChat: -obj/* - The object files of the compiled yChat base -mods/* - The compiled dynamic loadable modules -bin/ychat - The yChat binary (linked by the object files) +glob.h - Defines global variables which are known by compilation + time. -Customizable source files (if changed you need to run gmake clean all) -src/glob.h - Contains some global building options -src/msgs.h - Defines some server side messages +incl.h - This file is included from every other header file and + includes a set of headers which every class should be able + to use. +msgs.h - Defines console output messages for verbosity level 0 ( see + glob.h for setting up verbosity levels ). and also defines + all the system messages. you may edit this file for translating + the system user language. |
