diff options
72 files changed, 1986 insertions, 570 deletions
@@ -1,11 +1,176 @@ -Changes from 0.5.2-LEGACYRELEASE to 0.5.3-LEGACYRLEASE -- Code cleanup -- Added ./scripts/* -- Added gmake stats option +-Changes from 0.8.1-RELEASE to 0.8.2-RELEASE +$ Fixed some typos +$ Added the - Versioning - paragraph into the README file +$ Removed the yc_template command module source file +$ scripts/config.pl now also accepts q and quit as a command +$ Minor bugfix in scripts/config.pl +$ Some improvements in src/configure +$ Changed some default values in the src/glob.h -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.8-RELEASE to 0.8.1-RELEASE +$ 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. @@ -106,6 +106,7 @@ 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.) @@ -1,12 +1,95 @@ -SRCS=base.cpp chat.cpp CHAT.cpp cmnd.cpp conf.cpp CONF.cpp cont.cpp html.cpp HTML.cpp main.cpp mutx.cpp MUTX.cpp name.cpp reqp.cpp room.cpp sock.cpp SOCK.cpp thrd.cpp TOOL.cpp user.cpp -OBJS=$(SRCS:.cpp=.o) -CC=c++ -LDFLAGS=-lstdc++ -LDADD=-pthread -D_THREAD_SAFE -all: ychat -$(SRCS): - $(CC) $(CFLAGS) -c $*.cpp -ychat: $(OBJS) - $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDADD) -clean: - rm *.o +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. + @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! + @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 +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 +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 + + + @@ -1,3 +1,5 @@ +::(21.06.05)::yChat 0.8.1-RELEASE is available. Some changes which were made: The /gag and /ungag commands were added. Flood protection has been implemented. The Copyright has been changed to EXA Digital Solutions (yChat will stay open source as usual, no panic!). Also some minor bugs have been fixed. +::(14.06.05)::The Copyright holder of yChat has been changed from Paul C. Buetow (thats me) into <a href="http://www.exa-ds.com">EXA Digital Solutions</a> webhosting, which a webhosting firm in which I am involved. With EXA DS I could make more yChat publicity. ::(25.05.05)::yChat 0.8-RELEASE is available. This is the first release of the 0.8-CURRENT branch. OpenSSL support has been integrated. Thanks to CryptoMail.org for the patches! Also, the HTTP parsing methods have been reviewed and improved by the CryptoMail crew as well. In addition, several smaller bugs were fixed. ::(08.05.05)::yChat 0.7.9.3-RELEASE is available. This is the first STABLE release of the 0.7 branch. yChat 0.7.9.2 still has been of CURRENT. The new release only includes some bugfixes related to the Makefiles, configure-scripts. Also a security patch for the 0.8-CURRENT branch has been backported into 0.7.9.3. ::(04.05.05)::OpenSSL support has been integrated into yChat 0.8-CURRENT. The 0.8-RELEASE will come soon after some additional documentation stuff related to OpenSSL has been done. Thanks to <a href="http://CryptoMail.org">CryptoMail.org</a> for mailing the OpenSSL patch. @@ -1,4 +1,4 @@ -yhttpd; Homepage: www.yChat.org; Version 0.7.2-RELEASE +yChat; Homepage: www.yChat.org; Version 0.8.2-CURRENT Copyright (C) 2003 Paul C. Buetow, Volker Richter Copyright (C) 2004 Paul C. Buetow @@ -19,39 +19,48 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ----------------------------------------------------------------- -YHTTPD TABLE OF CONTENTS: - -0.0 ABOUT DEVELS -1.0 REQUIREMENTS -1.1 TESTED PLATFORMS -1.2 IMPORTANT NOTICES -1.3 HOW TO OBTAIN YHTTPD -1.3 INSTALLATION -1.3 INSTALLATION QUICK-START -1.4 HOW TO USE SCREEN WITH YHTTPD -1.4 HOW TO USE SIGNALS WITH YHTTPD -1.5 CUSTOMIZATION -1.6 FILES -1.7 WRITING BUG REPORTS -1.8 CONTACT -2.0 CREDITS - -0.0 ABOUT DEVELS +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. +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. +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. +ycurses is a easy to use and small C++ wrapper around the C ncurses API. There are different branches: @@ -59,14 +68,14 @@ There are different branches: The CURRENT branch is unstable, this is the bleeding developing edge with all the new experimental features. -A DEVEL of CURRENT can be referred as CURRENTDEVEL. +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 DEVEL of STABLE can be referred as STABLEDEVEL. +A RELEASE of STABLE can be referred as STABLERELEASE. - LEGACY - The LEGACY branch has no real support. This branch may get bugfixes and @@ -80,17 +89,161 @@ can be everything. Commonly DEVEL versions are CURRENT. There are also releases made: -- DEVEL - -There can be DEVELs made out of each branch. While a branch can get -new features, a DEVEL can not. A DEVEL of a branch is just like -a snapshot. DEVELs are complete versions to test and use. But keep -in mind, that a DEVEL of the STABLE branch is recommended over a -DEVEL of a CURRENT or a LEGACY branch in a production environment. -DEVELs of CURRENT are still the bleeding edge and DEVELs of LEGACY +- 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. - -1.0 REQUIREMENTS: +- 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" + +- Versioning - +In general, versions are made up like X.Y.Z.W. X specifies the major version, +Y specifies the branch of the major version, Z specifies a sub revision +of a specific branch. The optional W can be used to specify a maintenance +revision which only changes small issues. Version numbers can be also normal +alphabetic characters. Example: Version 0.7.A follows 0.7.9. Version 0.T.Y.2 +would be also valid. + +Therefore: The lowest value is 0, the highest possible value is Z. + +//<<* +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 |
