diff options
| author | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:42 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:42 +0200 |
| commit | 0537da9d1e0f593130fc3967befb71e673b016bc (patch) | |
| tree | e6733c8494e0dc8df5bd7e5d2dcbd401771272b6 | |
| parent | 3e382f0c9435cbf72570a87640652ad1551c7cfd (diff) | |
tagging ychat-0.5.4ychat-0.5.4
| -rw-r--r-- | CHANGES | 145 | ||||
| -rw-r--r--[-rwxr-xr-x] | COPYING | 0 | ||||
| -rwxr-xr-x | Makefile | 79 | ||||
| -rwxr-xr-x | README | 874 | ||||
| -rwxr-xr-x | conf.txt | 63 | ||||
| -rwxr-xr-x | configure | 76 | ||||
| -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 | 21 | ||||
| -rwxr-xr-x | html/stream.html | 42 | ||||
| -rw-r--r--[-rwxr-xr-x] | html/style.css | 45 | ||||
| -rwxr-xr-x | html/y_ani.gif | bin | 0 -> 35107 bytes | |||
| -rwxr-xr-x | html/y_black.gif | bin | 0 -> 61100 bytes | |||
| -rw-r--r-- | lang/de | 3 | ||||
| -rw-r--r-- | lang/en | 3 | ||||
| -rwxr-xr-x | scripts/astyle.sh | 3 | ||||
| -rwxr-xr-x | scripts/stats.pl | 2 | ||||
| -rwxr-xr-x | src/Makefile.in | 34 | ||||
| -rwxr-xr-x | src/base.cpp | 69 | ||||
| -rwxr-xr-x | src/base.h | 71 | ||||
| -rwxr-xr-x | src/chat.cpp | 156 | ||||
| -rwxr-xr-x | src/chat.h | 46 | ||||
| -rwxr-xr-x | src/conf.cpp | 76 | ||||
| -rwxr-xr-x | src/conf.h | 24 | ||||
| -rwxr-xr-x | src/configure | 1873 | ||||
| -rwxr-xr-x | src/cont.cpp | 24 | ||||
| -rwxr-xr-x | src/cont.h | 29 | ||||
| -rwxr-xr-x | src/glob.h | 221 | ||||
| -rw-r--r-- | src/hmap.cpp | 183 | ||||
| -rw-r--r-- | src/hmap.h | 123 | ||||
| -rwxr-xr-x | src/html.cpp | 131 | ||||
| -rwxr-xr-x | src/html.h | 36 | ||||
| -rwxr-xr-x | src/incl.h | 19 | ||||
| -rwxr-xr-x | src/lang.cpp | 79 | ||||
| -rwxr-xr-x | src/lang.h | 24 | ||||
| -rwxr-xr-x | src/main.cpp | 126 | ||||
| -rwxr-xr-x | src/msgs.h | 151 | ||||
| -rwxr-xr-x | src/mutx.cpp | 20 | ||||
| -rwxr-xr-x | src/mutx.h | 21 | ||||
| -rwxr-xr-x | src/name.cpp | 34 | ||||
| -rwxr-xr-x | src/name.h | 20 | ||||
| -rwxr-xr-x | src/pool.cpp | 180 | ||||
| -rwxr-xr-x | src/pool.h | 52 | ||||
| -rwxr-xr-x | src/reqp.cpp | 465 | ||||
| -rwxr-xr-x | src/reqp.h | 48 | ||||
| -rwxr-xr-x | src/room.cpp | 16 | ||||
| -rwxr-xr-x | src/room.h | 34 | ||||
| -rw-r--r-- | src/s_chat.cpp | 10 | ||||
| -rw-r--r-- | src/s_chat.h | 27 | ||||
| -rw-r--r-- | src/s_conf.cpp | 10 | ||||
| -rw-r--r-- | src/s_conf.h | 27 | ||||
| -rw-r--r-- | src/s_html.cpp | 10 | ||||
| -rw-r--r-- | src/s_html.h | 27 | ||||
| -rw-r--r-- | src/s_lang.cpp | 10 | ||||
| -rw-r--r-- | src/s_lang.h | 28 | ||||
| -rw-r--r-- | src/s_mutx.cpp | 10 | ||||
| -rw-r--r-- | src/s_mutx.h | 27 | ||||
| -rw-r--r-- | src/s_sman.cpp | 10 | ||||
| -rw-r--r-- | src/s_sman.h | 27 | ||||
| -rw-r--r-- | src/s_sock.cpp | 10 | ||||
| -rw-r--r-- | src/s_sock.h | 27 | ||||
| -rw-r--r-- | src/s_tool.cpp | 139 | ||||
| -rw-r--r-- | src/s_tool.h | 21 | ||||
| -rw-r--r-- | src/sess.cpp | 39 | ||||
| -rw-r--r-- | src/sess.h | 28 | ||||
| -rw-r--r-- | src/sman.cpp | 49 | ||||
| -rw-r--r-- | src/sman.h | 36 | ||||
| -rwxr-xr-x | src/sock.cpp | 240 | ||||
| -rwxr-xr-x | src/sock.h | 57 | ||||
| -rwxr-xr-x | src/thrd.cpp | 29 | ||||
| -rwxr-xr-x | src/thrd.h | 29 | ||||
| -rwxr-xr-x | src/user.cpp | 144 | ||||
| -rwxr-xr-x | src/user.h | 102 |
76 files changed, 4771 insertions, 2257 deletions
@@ -1,136 +1,15 @@ --Changes from 0.7.9-RELEASE to 0.7.9.1-RELEASE - -$ Fixed etc/ychat.conf (Its now valid XML) -$ Fixed some typos. -$ Added the scripts/makedist.sh script, which can be invoked by gmake dist. -$ yhttpd.org has been renamed to yChat.org. The yhttpd.org SLD will be -$ canceled! The yhttpd.org Homepage will remain on yChat.org! +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.8-RELEASE to 0.7.9-RELEASE - -$ In the system messages will be the user printed which has requested the - specified module. -$ Removed the cursor from the ncurses interface. -$ Added wrap::init_wrappers -> The main.cpp is now shorter. -$ Added some Makefile modifications -$ Bugfix: cleanipcache shouldn run every minute but every 10! -$ Bugfix: scripts/stats.pl now counts all text-files properly. +Changes from 0.5.2-LEGACYRELEASE to 0.5.3-LEGACYRLEASE +- Code cleanup +- Added ./scripts/* +- Added gmake stats option --Changes from 0.7.7.1-RELEASE to 0.7.8-RELEASE - -$ Updated the yhttpd generation script due new sources in src/memb. -$ Changd some hashmaps back into simple std::map objects, this might -$ has resulted in some bugs due slow hashmap initialization time. -$ Hashmaps now only should being used on permanent objects. -$ Rewrote the dynamic thread pool. -$ makeyhttpd now also removes the yChat specific form etc/yhttpd.conf -$ automatically. -$ Implemnted an IP Cache (makes yChat faster). -$ Implemented signal catcher: -$ SIGUSR1 will clear the html template cache. -$ SIGUSR2 will reload the dynamic modules. -$ SIGSEGV can be catched if defined in src/glob.h. -$ SIGHUP, SIGINT and SIGTERM will shutdown yChat cleanly. -$ Added Allow: GET to the HTTP header. -$ Bugfix: The httpd.logging.accesslines now will be read correctly. -$ Bugfix: JavaScript messages now wont be logged. +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.7-RELEASE to 0.7.7.1-RELEASE - -$ Bugfix in main.cpp which resulted in a core dump on yChat startup. - --Changes from 0.7.6-RELEASE to 0.7.7-RELEASE - -$ Major code cleanup. -$ Bugfix in /col. -$ Bugfix in gcol #1 (destroy session also if no database is used). -$ Bugfix in gcol #2 (now runs each hour not once a day). -$ Renew the style.css and stream.html. - --Changes from 0.7.5-RELEASE to 0.7.6-RELEASE - -$ Removed the old hash maps and included the SGI C++ STL extenstion -$ hash_map. - --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.7.4-RELEASE to 0.7.4.1-RELEASE - -$ Dynamic thread pool bugfix (dead lock). - --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.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.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 do not -$ work). -$ XML based configuration file (ychat.conf). -$ Added default operator option: chat.defaultop. @@ -1,88 +1,23 @@ -MAKE=`tail -n 1 make.version` -PREFIX=`grep "define PREFIX" src/glob.h | cut -d'"' -f2` -all: version base modules - @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. +MAKE=gmake +all: base + @echo "Now edit the ./conf.txt file and run ./ychat!" @echo WARNING! This software is EXPERIMENTAL! -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 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 + ./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 -f bin/ychat; then find bin/ -name "*ychat*" | xargs rm -f; 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 -confdebug: - ./configure -g3 -ggdb -dist: - @./scripts/makedist.sh + @gdb ./ychat ychat.core @@ -1,8 +1,8 @@ -yChat; Homepage: www.yChat.org; Version 0.7.9.1-RELEASE - +yChat; Homepage: www.yChat.org; Version 0.5.4-RELEASE 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 @@ -16,249 +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 ABOUT RELEASES -0.0.1 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.4.1 HOW TO USE SIGNALS 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 //<< -2.0.0 LICENSE - -0.0.0 ABOUT RELEASES - -There are several projects involved: - -- The chat - -Its a HTTP based chat server written in C++. Clients are normal web browsers -such as MSIE or Gecko based browsers using only CSS, HTML and JavaScript. - -- The httpd - -Its a small http server based on the chat's socket and threading engine. -yhttpd does not have as much features but is easy to use and faster than -apache. yhttpd is a subset of the chat. It can be generated using the -srcipts/yhttpdbase.pl script in the chat's source tree. - -- The ycurses - -ycurses is a easy to use and small C++ wrapper of the C ncurses API. - -There are different branches: - -- CURRENT - -The CURRENT branch is unstable, this is the bleeding developing edge with -all the new experimental features. - -A RELEASE of CURRENT can be referred as CURRENTRELEASE. - -- STABLE - -The STABLE branch is more stable than CURRENT. This branch may get new -features as well. But those will be more conservative compared to -CURRENT. - -A RELEASE of STABLE can be referred as STABLERELEASE. - -- LEGACY - -The LEGACY branch has no real support. This branch may get bugfixes and -updates and might get minor improvements. But there is no garuantee to -be bug free and stable at all. LEGACY versions are of historic meaning. - -- DEVEL - -DEVEL is only a meta name. If a version is labeled with DEVEL, then its -currently undefined if this is a CURRENT, STABLE or LEGACY branch. It -can be everything. Commonly DEVEL versions are CURRENT. - -There are also releases made: - -- RELEASE - -There can be RELEASEs made out of each branch. While a branch can get -new features, a RELEASE can not. A RELEASE of a branch is just like -a snapshot. RELEASEs are complete versions to test and use. But keep -in mind, that a RELEASE of the STABLE branch is recommended over a -RELEASE of a CURRENT or a LEGACY branch in a production environment. -RELEASEs of CURRENT are still the bleeding edge and RELEASEs of LEGACY -may be out of date. - -//<<* -0.0.1 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 through own command and dynamic HTML engine - -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 collec |
