diff options
Diffstat (limited to 'yhttpd/README')
| -rw-r--r-- | yhttpd/README | 462 |
1 files changed, 0 insertions, 462 deletions
diff --git a/yhttpd/README b/yhttpd/README deleted file mode 100644 index 5fa183e..0000000 --- a/yhttpd/README +++ /dev/null @@ -1,462 +0,0 @@ -yhttpd; Homepage: www.yChat.org; Version 0.8-CURRENT - -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 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -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. ------------------------------------------------------------------ - -YHTTPD TABLE OF CONTENTS: - -1.0 GENERAL -1.1 ABOUT DEVELS -2.0 INSTALLATION AND SETUP -2.1 REQUIREMENTS -2.2 TESTED PLATFORMS -2.3 HOW TO OBTAIN YHTTPD -2.4 INSTALLATION QUICK-START -2.4 INSTALLATION -2.3 HOW TO USE OPENSSL WITH YHTTPD -2.3 HOW TO USE SCREEN WITH YHTTPD -2.3 HOW TO USE SIGNALS WITH YHTTPD -2.4 CONFIGURING YHTTPD -3.0 EXTENDING YHTTPD -3.1 SOURCE FILES -4.0 DIVERSE -4.1 WRITING BUG REPORTS -4.2 CONTACT ADDRESSES -4.3 CREDITS - -1.0 GENERAL - -1.1 ABOUT DEVELS - -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 DEVEL of CURRENT can be referred as CURRENTDEVEL. - -- 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 STABLDEVEL. - -- 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: - -- 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 -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 -DEVEL aka REL aka R -LEGACY aka LEG aka L -STABLE aka SBL aka S -DEVEL aka DEV aka D -PRE aka P - -STABLDEVEL aka STBREL aka SR -DEVEL aka PREREL aka PR -PRELEGACYDEVEL 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. Version 0.T.Y.2 -would be also valid. - -Therefore: The lowest value is 0, the highest possible value is Z. - - -2.0 INSTALLATION AND SETUP - -2.1 REQUIREMENTS: - -- GNU GCC G++ - The GNU C++ compiler version 3.1 or up. - -- 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. - 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. - -- OpenSSL - Includes libssl and the ssl header files of the open source SSL library. - OpenSSL is only needed if you chose to compile yhttpd w/OpenSSL support. - -- ncurses 5.x - Includes libncurses and the ncurses.h header files. - -- Screen - Only needed if yhttpd 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. - -2.1 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.4-DEVEL (i386) 3.4 3.80 -- FreeBSD 5.3-DEVEL (i386) 3.4 3.80 - - Tested longer time before: -- FreeBSD 5.2-DEVEL (i386) 3.3 3.80 -- FreeBSD 4.10-DEVEL (i386) 3.4 3.80 -- FreeBSD 4.9-DEVEL (i386) 3.3 3.80 -- Gentoo Linux 2004 (i386) 3.3 3.80 -- OpenBSD 3.6 SMP (i386) 3.3 3.80 -- Red Hat Linux 8.0 SMP (i386) 3.2-7 3.79 -- Slackware Linux 10.0 (i386) 3.4 3.80 -- SUSE Linux 9.0 (i386) 3.3 3.80 -- SUSE Linux 8.1 (i386) 3.2 3.79 - -Other platforms like Linux based systems, other BSD-Systems or UNICES -are very likely to work too. - -2.3 HOW TO OBTAIN YHTTPD: - -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/yhttpd/yhttpd . - -For CVS download type: - -cvs -d:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot login -( You will be asked for a password. Use "just enter" ). - -vs -z3 -d:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot co BRANCH -( The sources will be copied into your local folder ) - -cvs -d:pserver:anonymous@buetow.org:/usr/home/cvs/cvsroot logout -( Logs your CVS session out ). - -Now you may continue with the installation. - -here are different branches in the CVS: - -yhttpd: This is the latest CURRENT branch of yhttpd. -yhttpd-stable: This is the latest STABLE branch of yhttpd. -yhttpd-X.Y: This is the branch with the specified version prefix. -yhttpd: This is the latest CURRENT snapshot of yhttpd. - -The CURRENT branch of yhttpd is mostly untested and unstable, so don't -cry if you get errors. - -2.4 INSTALLATION QUICK START - -If you in hury, then you may just type gmake setup. In the yhttpd configurator -you may just choose all the default values. If done, yhttpd will get compiled -and is ready to run with ./bin/yhttpd! If you chose OpenSSL support, then -also run gmake ssltest before starting yhttpd. - -2.3 INSTALLATION - -Invoke "./configure". Afterwards you will get prompted with the before-compile -options of yhttpd. After choosing those options you are ready to type "gmake" -afterwards. See below what gmake is doing. - - -You may also invoke gmake with the following options (the PREFIX can be set -in the yhttpd 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 confdebug (runs ./configure with enabling debugging) - gmake config (runs yhttpd configurator) - gmake debug (runs gdb on ./yhttpd.core) - gmake dist (creates a .tar.bz2 ball) - gmake gpl (shows the GNU General Public License) - gmake help (shows all available yhttpd gmake targets) - gmake mail (sends a mail to the yhttpd 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 stats (generates yhttpd statistics) - gmake ssltest (generates a self signed ssl test certificate) - gmake version (shows the current version of yhttpd) - -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/yhttpd. - -Aferwards point your webbrowser to http://yourip:port ! - -... have fun :-). - -2.3 HOW TO USE OPENSSL WITH YHTTPD - -If you chose to use OpenSSL support you have to have a valid SSL private and -public key. If you are in hurry, use the gmake ssltest command from the top -source tree directory and follow the instructions. Otherwise type the -following commands manually: - -The private key can be created w/the following command: - - openssl genrsa -des3 -out privkey.pem 2048 - -Afterwards, you can create a self-signed test certificate using the following -command: - - openssl req -new -x509 -key privkey.pem -out cert.pem -days 1095 - -Be sure to move the privkey.pem and cert.pem files into the ./etc directory -or edit the path names in the ./etc/yhttpd.conf file. yhttpd wont start if there -are no valid files found. - -To learn more about SSL certificates, visit http://www.openssl.org/docs/HOWTO/. - -Now use https:// and NOT http:// to connect to the yhttpd server. - - -2.3 HOW TO USE SCREEN WITH YHTTPD: - -If you are running yhttpd 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. - -Just do: - - screen -S yhttpd ./bin/yhttpd ( creates a new session and starts yhttpd in it ) - ctrl+d+a ( will detach the yhttpd session ) - ( closing the terminal ) - ( opening a new terminal ) - screen -r yhttpd ( will return you to the yhttpd process ) - -Screen will terminate automaticaly if all processes in its sessions are -terminated. - -For a closer look read the screen manual page ( man screen ). - -2.3 HOW TO USE SIGNALS WITH YHTTPD: - -You can send UNIX signals to yhttpd. This becomes very interesting if you -don't use the command line interface or the ncurses interface and you -don't have access to the options below. - -Run one of the following commands to send the signal you want: -($PID is here the process id of the current yhttpd process) - -kill -USR1 $PID # yhttpd clears the HTML template cache -kill -HUP $PID # yhttpd will shutdown savely - -2.4 CONFIGURING YHTTPD: - -If you like to customize the design/layout/language of yhttpd, 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/yhttpd.conf). - -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. - -You can edit the etc/yhttpd.conf to fit your needs. If you dont want to change -the config file, then you also can use yhttpd start parameters. - -Exmpl: ./bin/yhttpd -o chat.database.password secretpassword - -You can also use multiple words for a specific option. - -Exmpl: ./bin/yhttpd -o yhttpd.version "word1 word2 word3" - -will overwrite the default database password value of the yhttpd.conf. You can -do this with every configuration element by adding several -o option value -arguments to the start command. - -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. - -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 ). - -Read also section 3.0 of this README. - - -3.0 EXTENDING YHTTPD - -3.1 SOURCE FILES - -This list is not complete. Only the most important files are listed here! - -etc/yhttpd.conf - The yhttpd configuration file -html/* - The html template files -src/* - The yhttpd base sources -src/mods/* - The dynamic loadable modules sources -scripts/* - Some nice scripts needed for building & co. - -The following is created by building yhttpd: -obj/* - The object files of the compiled yhttpd base -mods/* - The compiled dynamic loadable modules -bin/yhttpd - The yhttpd binary (linked by the object files) - -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 - - -4.0 DIVERSE - -4.1 WRITING BUG REPORTS - -How to submit a good bug report? - -Send them to Mail at yhttpd dot org. - -First you should give the following information: -- yhttpd version, if CVS (or devel. tarball) then which day? -- operating system / distribution and it's version -- when did it crash? did you do something? can you reproduce the crash? - -Getting backtrace of the crash also helps a lot, especially if yhttpd crashes -randomly. If after crash you see text: - - "segmentation fault (core dumped)" - -It writes a file named "core" or "yhttpd.core" depending on your OS to directory -where you started yhttpd. If it doesn't print the "(core dumped)" or you can't -find the core file, you'll have to raise the limit for max. core file size -before running yhttpd. To do this, say: - - ulimit -c unlimited - -So, if you have the core file and GNU debugger (gdb), you can get the -backtrace with: - - gdb ./bin/yhttpd yhttpd.core - bt - -Paste all the lines starting from line having #0 at the beginning. - -Here's an example session: - - in reqp::parse(thrd*, std::string, std::map<std::string, std::string, - std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) () - (gdb) bt - #0 0x0805c287 in reqp::parse(thrd*, std::string, std::map<std::string, - std::string, std::less<std::string>, std::allocator<std::pair<std::string - const, std::string> > >&) () - #1 0x0806060f in sock::read_write(thrd*, int) () - #2 0x080612ba in thrd::run() () - #3 0x0805a3b8 in pool::run_func(void*) () - #4 0x0805a375 in pool::tpool_thread(void*) () - #5 0x281d44ae in _thread_start () from /usr/lib/libc_r.so.5 - (gdb) - -If you dont get such a gdb output, you need to recompile the yhttpd using -debuggig symbols. You can do it this way: - -gmake clean confdebug all run - -4.2 CONTACT ADDRESSES - -You may contact us through the following addresses: - -- Homepage - The yhttpd homepage is located at http://www.yChat.org - The EXA Digital Solutions homepage is located at http://www.exa-ds.com - -- E-Mail - Paul C. Buetow: buetow at yhttpd point org ( core developer ) - Mail at yhttpd dot org ( reaches everybody of yhttpd ) - -- ICQ - Paul C. Buetow: 11655527 - -- IRC - #Ychat and #Coding at irc.german-elite.net - -- EXA Digital Solutions GbR - Laubenstr. 16b - D-44866 Bochum - Germany - -4.2 CREDITS - -Thanks to the following persons. Without them yhttpd would not be like today: - -- Volker Richter <volker at exa-ds dot de> of EXA Digital Solutions GbR - for adding initial MySQL support and lots of more code. - -- Joshua Teitelbaum <joshuat at cryptomail.org> of CryptpMail.org for adding - initial OpenSSL support and lots of security patches in the HTTP header - handling. |
