yChat

yChat is an experimental, XML-configurable, HTML template-driven, fast, multi-threaded Web-based chat server daemon.
Download

yChat Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • yChat team
  • Publisher web site:
  • http://www.yChat.org

yChat Tags


yChat Description

yChat is an experimental, XML-configurable, HTML template-driven, fast, multi-threaded Web-based chat server daemon. yChat is an experimental, XML-configurable, fast, very portable, multi-platform Web-based chat server written in C++ and a little subset of C which supports secure SSL sockets using OpenSSL, MySQL databases and is compatible with almost all browsers that support frames and JavaScript.yChat runs on all servers which are POSIX.4a compatible and use the GNU GCC C++ compiler from 3.1 and up with pthreads enabled. Its developed under the GNU General Public License.yhttpd is a very light webserver based on yChat socket and thread engines.Here are some key features of "yChat":Its free & portable · yChat is developed under the GNU general public license and is based on GNUtools (gcc, gmake), other open source library stuff (such as libncurses etc.)and should run on any POSIX capable operating system (such as all Linux basedsystems, FreeBSD, NetBSD, OpenBSD and other BSD-Systems and on UNICES likeIRIX, 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 serverwith 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 buildon like Apache and does not need to be run via any kind of CGI. yChat createsits own socket on a customized port (standard port: 2000) and seems to be a fullfeatured HTTP web server to the clients (web browsers). · The yChat code base can be converted to an yhttpd code base automaticaly. yhttpdis the webserver subset of yChat which runs completely stand alone and providesnormal 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 anyserver written in a scripting language like PHP, Python or Perl. As theinternal data structures hash maps are used to garuantee searching certainvalues 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 secondon a FreeBSD based server box while using less than 2% of CPU usageon 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 lengthof 50 chars to authenticate each logged in user. The length of the session idcan be redefined as well. Also, the session id will get md5-hashed optionallyso thats even harder to reverse engineering the session ids of other users.Also, yChat supports secure hypertext transfer protocol (HTTPS) connectionsusing the OpenSSL library. Then, all chat messages will be encrypted in asecure 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 modifiedto use with an customized web design. Also, a lot of yChat preferences can beset in the main configuration file (ychat.conf). ychat.conf is completely writtenin XML 1.0 which makes it easier to use the configuration options in programs of3rd persons which may want to write some usefull tools for yChat.yChat caches all HTML and web images to improve overall performance. If needed, thecache 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 messagesappear to the Chat-User. The predefined languages is english but others can beadded 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 freeto replace the database wrapper class (data.h) with another database routinesto 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 someinteresting statistics and system messages and enables you to do certainadministrative tasks. In addition, you can switch to the CLI (command lineinterface) mode of the administration interface in order to be provided withmore 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 userswich log in and out, modules which are loaded, MySQL queries etc.). Also, anApache-Style combined log file format is created by yChat (you can parse thislogfile with any Apache logfile parser like awstats etc.). And last but notleast, all public messages of all available rooms will be logged to disk aswell . To improve performance, you can define the logging puffer (standardlynew logs will be written to disk after each 20 lines). If you want to logeverything 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 canbe recompiled and reloaded without restarting the whole yChat server. AlsoHTML-Sites with certain tasks can be compiled as a module likemods/html/yc_register.so, mods/html/yc_options.so and mods/html/yc_colors.soetc. 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 ownunique task. For example one thread is used to handle the socket manager whichwaits for incoming TCP/IP requests, another thread schedules the system timerwhich proves if clients are still active or frees not needed memory in certaintime intervals (see also "Garbage collector"). Also, each Chat-User gets it ownthread. There is no need of memory wastage by creating for each task a newprocess. All User-Threads are managed by a thread pool to avoid CPU wastagecreating every time a new thread by reusing thread objects which have done itsjobs already and have been readded into the queue of the thread pool. Thestandard 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 theuser has logged out or the room has been destroyed because it was empty) willnot be deleted immediately but be placed for about 10 minutes in the yChatgarbage collector. Each time a new room is created the systems checks thegarbage to reuse an inactive room object. If a certain user wants to log in, thesystem checks if he is already present in the garbage collector. If yes, he willbe reactivated without wasting expensive database queries to fetch the user'soptions. This improves overall performance on heavily loaded yChat servers if alot of user and room objects are created and destroyed frequently.What's New in 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.hWhat's New in 0.7.9.5 Release:· This release adds .pm detection to scripts/stats.pl.· It modifies the README (new CVS pserver address).· All .cpp, .h, and .tmpl files now have a new source header using docs/header.txt as header skeleton.· Some minor bugfixes were made.


yChat Related Software