diff options
| author | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:43 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2013-04-06 13:14:43 +0200 |
| commit | 312fe18cb5f97143f3600b207e979bc559256b6f (patch) | |
| tree | de14514b4b4c20adf0eecdcd261ae21839f6a645 | |
| parent | f038883a6e004eb4312ba1e761da06b596e14d3f (diff) | |
tagging yhttpd-0.7.0yhttpd-0.7.0
69 files changed, 6084 insertions, 6689 deletions
@@ -1,75 +1,4 @@ -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: +Changes from 0.6 to 0.7 RELEASE - Better stability - Better performance (using more hmaps) - HTML color switcher menu @@ -89,9 +18,9 @@ Changes from 0.6 to 0.7.0-RELEASE: - 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) +- 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 (ychat.conf) +- XML based configuration file (yhttpd.conf) - Added default operator option: chat.defaultop @@ -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.) @@ -1,84 +1,81 @@ -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!" +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. -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 + @if test -d ./src/mods; then gmake -C ./src/mods; fi clean_modules: - @if test -d ./src/mods; then ${MAKE} -C ./src/mods clean; fi + @if test -d ./src/mods; then gmake -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 + @gmake -C ./src clean_base: - @${MAKE} -C ./src clean + @gmake -C ./src clean stats: @perl scripts/stats.pl run: - ./bin/ychat + ./bin/yhttpd base_start: base - ./bin/ychat + ./bin/yhttpd start: base modules - ./bin/ychat + ./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 "You may run gmake with the following parameters:" + @grep "^ gmake " README + @echo "For more questions read the README file or contact mail@yhttpd.org!" setup: @./configure - @${MAKE} + @gmake config: @sh -c "scripts/config.sh" - @echo If you run ${MAKE} config from the command line then you may need + @echo If you run gmake 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 + @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 + @gdb bin/yhttpd yhttpd.core @@ -1,8 +1,9 @@ -yChat; Homepage: www.yChat.org; Version 0.7.7-RELEASE +yhttpd; Homepage: www.yhttpd.org; Version 0.7-RELEASE Copyright (C) 2003 Paul C. Buetow, Volker Richter -Copyright (C) 2004, 2005 Paul C. Buetow +Copyright (C) 2004 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 @@ -18,131 +19,20 @@ 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: +YHTTPD TABLE OF CONTENTS: -0.0.0 YCHAT FEATURES //<< 1.0.0 REQUIREMENTS 1.1.0 TESTED PLATFORMS 1.2.0 IMPORTANT NOTICES -1.3.0 HOW TO OBTAIN YCHAT +1.3.0 HOW TO OBTAIN YHTTPD 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.0 HOW TO USE SCREEN WITH YHTTPD 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 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 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: @@ -152,25 +42,18 @@ lot of user and room objects are created and destroyed frequently. - 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 + yhttpd 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. + Only needed if yhttpd should run in background with + ncurses enabled. - Perl 5.x Is needed for some scripts. Is not needed if you use precompiled binaries. @@ -181,16 +64,13 @@ 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 +- FreeBSD 4.10-RELEASE (i386) 3.4.1 3.80 +- Gentoo Linux 2004.2 (i386) 3.3.2 3.80 +- OpenBSD 3.6 MP (i386) 3.3.2 3.80 - 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 +- SUSE Linux 8.0, G (i386) 3.3.1 3.80 Other platforms like Linux based systems, other BSD-Systems or UNICES are very likely to work too. @@ -200,23 +80,23 @@ are very likely to work too. 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 -you can/like/would help ;-]. Please also take a look at the yChat -homepage which is located at http://www.yChat.org. +If you like to support yhttpd++, please write us an email and tell what +you can/like/would help ;-]. Please also take a look at the yhttpd++ +homepage which is located at http://www.yhttpd.org. -1.3.0 HOW TO OBTAIN YCHAT: +1.3.0 HOW TO OBTAIN YHTTPD++: -yChat can be downloaded as a source package or through CVS. +yhttpd 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 . +The packages are located at http://www.yhttpd.org -> Sourcecode -> |
