summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2013-04-06 13:14:46 +0200
committerPaul Buetow <paul@buetow.org>2013-04-06 13:14:46 +0200
commit56187184e11b085b82584d3b088c62f427aae83c (patch)
tree8f8387e750a62581966900a42dade265d34c3146
parentd3a0d11f93c1ebe38b4301c9bef952bfd24d01a1 (diff)
tagging yhttpd-0.7.1yhttpd-0.7.1
-rw-r--r--CHANGES204
-rwxr-xr-xCOPYING1
-rwxr-xr-xMakefile94
-rwxr-xr-xREADME519
-rwxr-xr-xbin/yhttpdbin468081 -> 473406 bytes
-rwxr-xr-xconfigure12
-rw-r--r--etc/yhttpd.conf544
-rwxr-xr-xhtml/index.html37
-rwxr-xr-xhtml/style.css45
-rw-r--r--scripts/README2
-rwxr-xr-xscripts/buildnr.pl6
-rwxr-xr-xscripts/config.sh6
-rwxr-xr-xscripts/screen.sh2
-rwxr-xr-xscripts/setglobvals.pl2
-rwxr-xr-xscripts/stats.pl26
-rwxr-xr-xsrc/Makefile.in8
-rwxr-xr-xsrc/cli/cli.cpp473
-rwxr-xr-xsrc/cli/cli.h37
-rwxr-xr-xsrc/conf/conf.cpp224
-rwxr-xr-xsrc/conf/conf.h25
-rwxr-xr-xsrc/configure327
-rw-r--r--src/contrib/README4
-rw-r--r--src/contrib/xml/README2
-rw-r--r--src/contrib/xml/tinyxml.cpp1679
-rw-r--r--src/contrib/xml/tinyxml.h2242
-rw-r--r--src/contrib/xml/tinyxmlerror.cpp44
-rw-r--r--src/contrib/xml/tinyxmlparser.cpp2684
-rwxr-xr-xsrc/glob.h184
-rwxr-xr-xsrc/html.cpp162
-rwxr-xr-xsrc/html.h45
-rwxr-xr-xsrc/incl.h6
-rwxr-xr-xsrc/logd.cpp192
-rwxr-xr-xsrc/logd.h39
-rwxr-xr-xsrc/main.cpp163
-rw-r--r--src/maps/mtools.h6
-rw-r--r--src/maps/mtools.tmpl5
-rwxr-xr-xsrc/modl.cpp166
-rwxr-xr-xsrc/modl.h34
-rw-r--r--[-rwxr-xr-x]src/msgs.h72
-rwxr-xr-xsrc/name.cpp34
-rwxr-xr-xsrc/name.h20
-rwxr-xr-xsrc/ncur/menu.cpp149
-rwxr-xr-xsrc/ncur/menu.h27
-rwxr-xr-xsrc/ncur/ncur.cpp358
-rwxr-xr-xsrc/ncur/ncur.h51
-rwxr-xr-xsrc/reqp.cpp475
-rwxr-xr-xsrc/reqp.h61
-rwxr-xr-xsrc/sock/sock.cpp590
-rwxr-xr-xsrc/sock/sock.h108
-rw-r--r--src/stats.cpp47
-rw-r--r--src/stats.h14
-rwxr-xr-xsrc/thrd/pool.cpp257
-rwxr-xr-xsrc/thrd/pool.h82
-rw-r--r--src/thrd/thro.cpp24
-rw-r--r--src/thrd/thro.h26
-rwxr-xr-xsrc/time/timo.cpp24
-rwxr-xr-xsrc/time/timo.h12
-rwxr-xr-xsrc/time/timr.cpp197
-rwxr-xr-xsrc/time/timr.h81
-rw-r--r--src/tool/dir.cpp44
-rw-r--r--src/tool/dir.h26
-rw-r--r--src/tool/tool.cpp255
-rw-r--r--src/tool/tool.h96
-rwxr-xr-xsrc/wrap.cpp143
-rwxr-xr-xsrc/wrap.h130
65 files changed, 6180 insertions, 7474 deletions
diff --git a/CHANGES b/CHANGES
index 9b5ebf8..c01e3d2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,167 +1,37 @@
--Changes from 0.8-RELEASE to 0.8.1-CURRENT
-$ Fixed a HTML bug in the stream html (h1 should get closed w/ /h1)
-$ Fixed some typos in the README
-$ Fixed a bug in the /q command
-$ Implemented The /gag and /ungag commands
-$ Implemented flood protection and added the following ychat.conf options:
-$ chat.floodprotection.seconds
-$ chat.floodprotection.messages
-$ chat.msgs.err.gag
-$ chat.msgs.floodgag
-$ chat.msgs.gag
-$ chat.msgs.ungag
-$ chat.msgs.help.gag
-$ chat.msgs.help.ungag
-$ Added the SHORTDESC file
-$ Changed Copyright to "EXA Digital Solutions GbR"
-
--Changes from 0.7.9.2-RELEASE to 0.8-RELEASE
-$ Modified the Makefiles, so that they produce valid output while using
-$ the -j flag of gmake.
-$ OpenSSL support has been integrated. Thanks to CryptoMail.org for patching!
-$ The next release will also have a credits section in the README!
-$ The HTTP parsing stuff has been reviewed and improved by CryptoMail as well.
-$ Also a mini bug of the configure script has been fixed.
-
--Changes from 0.7.9.1-RELEASE to 0.7.9.2-RELEASE -
-$ Added monitor/dump, and the dump command to the CLI.
-$ Fixed a bug in the session manager.
-$ Added gmake dist do the README.
-$ Added the charset to the HTTP-header.
-
--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.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.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.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.
+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 yhttpd.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 yhttpd 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 (yhttpd.conf)
+- Added default operator option: chat.defaultop
diff --git a/COPYING b/COPYING
index a43ea21..27058a5 100755
--- a/COPYING
+++ b/COPYING
@@ -106,7 +106,6 @@ above, provided that you also meet all of these conditions:
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
diff --git a/Makefile b/Makefile
index 27a8d90..cf91b55 100755
--- a/Makefile
+++ b/Makefile
@@ -1,43 +1,46 @@
-MAKE=`tail -n 1 make.version`
+MAKE=`tail -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!"
+all: base modules version
+ @echo "Now edit the yhttpd.conf and run yhttpd!"
@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.
- @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
+ @echo " ./yhttpd.conf "
+ @echo " ~/.yhttpd/yhttpd.conf "
+ @echo " ./etc/yhttpd.conf "
+ @echo " /etc/yhttpd.conf "
+ @echo " $(PREFIX)/etc/yhttpd.conf "
+install: deinstall
+ @echo "Instaling yhttpd to $(PREFIX)"
+ @cp bin/yhttpd $(PREFIX)/bin
+ @if ! test -d $(PREFIX)/lib/yhttpd; then mkdir -p $(PREFIX)/lib/yhttpd; fi
+ @if ! test -d $(PREFIX)/share/yhttpd/log/rooms; then mkdir -p $(PREFIX)/share/yhttpd/log/rooms; fi
+ @if ! test -d $(PREFIX)/etc; then mkdir $(PREFIX)/etc; fi
+ @if test -d mods; then cp -Rp mods $(PREFIX)/lib/yhttpd/mods; fi
+ @cp -Rp lang $(PREFIX)/share/yhttpd/lang
+ @if test -f $(PREFIX)/etc/yhttpd.conf; then mv $(PREFIX)/etc/yhttpd.conf $(PREFIX)/etc/yhttpd.conf.bak; fi
+ @cp etc/yhttpd.conf etc/yhttpd.conf.tmp
+ @sed "s#mods/#$(PREFIX)/lib/yhttpd/mods/#" etc/yhttpd.conf.tmp > etc/yhttpd.conf.tmp.2 && mv etc/yhttpd.conf.tmp.2 etc/yhttpd.conf.tmp
+ @sed "s#\"log/#\"$(PREFIX)/share/yhttpd/log/#" etc/yhttpd.conf.tmp > etc/yhttpd.conf.tmp.2 && mv etc/yhttpd.conf.tmp.2 etc/yhttpd.conf.tmp
+ @sed "s#LANGUAGE_DIR=\"lang/#LANGUAGE_DIR=\"$(PREFIX)/share/yhttpd/lang/#" etc/yhttpd.conf.tmp > etc/yhttpd.conf.tmp.2 && mv etc/yhttpd.conf.tmp.2 etc/yhttpd.conf.tmp
+ @mv etc/yhttpd.conf.tmp $(PREFIX)/etc/yhttpd.conf
+ @echo "yhttpd configuration file can be found under"
+ @echo " $(PREFIX)/etc/yhttpd.conf"
+ @echo "Copy it to ~/.yhttpd/yhttpd.conf to use local settings :-)"
+ @echo "Be sure that $(PREFIX)/share/yhttpd/logs is writable by your user or modify "
+ @echo "logging dirs in the yhttpd.conf to a local directory."
+ @echo "The most secure would be an additional user 'yhttpd'!"
uninstall: deinstall
deinstall:
- @echo Install/deinstall is not supported!
- @echo Start yChat with ./bin/ychat instead!
- @exit 1
+ @echo "Deinstalling yhttpd from $(PREFIX)"
+ @if test -f $(PREFIX)/bin/yhttpd; then rm -f $(PREFIX)/bin/yhttpd; fi
+ @if test -d $(PREFIX)/lib/yhttpd; then rm -Rf $(PREFIX)/lib/yhttpd; fi
+ @if test -d $(PREFIX)/share/yhttpd; then rm -Rf $(PREFIX)/share/yhttpd; fi
+ @echo "Done. Please remove manually $(PREFIX)/etc/yhttpd.conf to complete"
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
+ @if test -f bin/yhttpd; then echo "Backing up old binary";if test -f bin/yhttpd.old; then rm -f bin/yhttpd.old; fi; mv bin/yhttpd bin/yhttpd.old; fi
@perl ./scripts/buildnr.pl
@perl ./scripts/setglobvals.pl
@${MAKE} -C ./src
@@ -46,21 +49,18 @@ clean_base:
stats:
@perl scripts/stats.pl
run:
- ./bin/ychat
+ ./bin/yhttpd
base_start: base
- ./bin/ychat
+ ./bin/yhttpd
+start: base modules
+ ./bin/yhttpd
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!"
+ @echo "For more questions read the README file or contact mail@yhttpd.org!"
setup:
@./configure
@${MAKE}
@@ -74,22 +74,10 @@ mrproper: clean
@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
+ @echo "`grep VERSION src/msgs.h | cut -d'"' -f2`-`grep BRANCH src/msgs.h| cut -d'"' -f2` Build `grep BUILD src/msgs.h| cut -d' ' -f3`"
debug:
- @gdb bin/ychat ychat.core
-confdebug:
- ./configure -g3 -ggdb
-dist:
- @./scripts/makedist.sh
-ssltest:
- openssl genrsa -des3 -out privkey.pem 2048
- openssl req -new -x509 -key privkey.pem -out cert.pem -days 1095
- @mv -f privkey.pem cert.pem etc
-
-
-
+ @gdb bin/yhttpd yhttpd.core
diff --git a/README b/README
index 324e560..5b94c8c 100755
--- a/README
+++ b/README
@@ -1,9 +1,9 @@
-yChat; Homepage: www.yChat.org; Version 0.8.1-RELEASE
+yhttpd; Homepage: www.yhttpd.org; Version 0.7.1-RELEASE
Copyright (C) 2003 Paul C. Buetow, Volker Richter
Copyright (C) 2004 Paul C. Buetow
-Copyright (C) 2005 EXA Digital Solutions GbR
-----------------------------------------------------------------
+
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
@@ -19,292 +19,81 @@ 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:
-
-1.0.0 GENERAL
-1.1.0 ABOUT RELEASES
-1.2.0 YCHAT FEATURES //<<
-2.0.0 INSTALLATION AND SETUP
-2.1.0 REQUIREMENTS
-2.2.0 TESTED PLATFORMS
-2.3.0 HOW TO OBTAIN YCHAT
-2.4.0 INSTALLATION QUICK-START
-2.4.1 INSTALLATION
-2.3.3 HOW TO USE OPENSSL WITH YCHAT
-2.3.4 HOW TO USE MYSQL WITH YCHAT //<<
-2.3.5 HOW TO USE SCREEN WITH YCHAT
-2.3.6 HOW TO USE SIGNALS WITH YCHAT
-2.4.0 CONFIGURING YCHAT
-2.5.0 YHTTPD CODE BASE GENERATION //<<
-3.0.0 EXTENDING YCHAT
-3.1.0 SOURCE FILES
-4.0.0 DIVERSE
-4.1.0 WRITING BUG REPORTS
-4.2.0 CONTACT ADDRESSES
-4.3.0 CREDITS
-
-1.0.0 GENERAL
-
-1.1.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 around 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.
-
-- Short names -
-
-In addition, each description also has short names: (short names are needed
-if your text space is limited which happens very fast in IRC channel topics)
-
-CURRENT aka CUR aka C
-RELEASE aka REL aka R
-LEGACY aka LEG aka L
-STABLE aka SBL aka S
-DEVEL aka DEV aka D
-PRE aka P
-
-STABLERELEASE aka STBREL aka SR
-PRERELEASE aka PREREL aka PR
-PRELEGACYRELEASE aka PRELEGREL aka PLR
-etc...
-
-The short name of the chat is "yC"
-The short name of the httpd is "yh"
-The short name of ycurses is "yu"
-
-//<<*
-1.2.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.
-Also, yChat supports secure hypertext transfer protocol (HTTPS) connections
-using the OpenSSL library. Then, all chat messages will be encrypted in a
-secure manner. HTTPS is optional to HTTP (unsecured connections).
-
-- 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