Last updated 20041110. Welcome to the Sophster software. Sophster is the all encompasing name for the software that makes up this suite of functionality. Individual components have their names as well. Generally I try to keep the names for the individual components self evident, but that is not always possible. GettingStarted.htm Helps in the initial configuration. README.txt This file. CHANGELOG.txt Brief notes about each build. CORE.htm Documentation about the core server. METHODS.htm Documentation about the Methods application. CGI.htm Documentation about the CGI application. V4L.htm Documentation about the still image capture application. EMAIL.htm Copy of correspondence I've had during this development. What's left ... as far as FreeSophster goes? (tentative) 0.9.6 archive functionality tar formats other than GNU's WinZip format append to archives update files within archives? 0.9.7 unrelated stuff other compression formats than 'zlib's clear up METHODS todolist application specific access logging 0.9.8 complete Common Gateway Interface and documentation 0.9.9 core server features access logging complete Digest authentication support support other kinds of authenticating databases clear up the core server todolist 1.0.0+ other lofty goals internationalization complete developers guide to writing applications complete credit card processing application feasibility study of an actual persistent application consider [UN]LINK support for Methods application consider ways of search support for files in Methods, maybe through externally referenced program // OLD GETTING STARTED INFO BELOW, Please refer to the new GettingStarted.htm \\ Compress and decompress feature is complete and tested on files greater 2^32 bytes. The compression algorithm is thru zlib library. Other compression formats will be added in the future. Thinking I'll add a TAR function before adding more compression formats. '-small' file copies of FreeSophster are still provided (read below), but be aware that files with sizes between the range of 2 to 4 gigabyte probably will have trouble, a fix I may need to work on (fixed 20040429). I removed a work around for old versions of Netscape Navigator. I experienced an issue when the browser received a status code of 201 Created and would flake out. I tested it (recently) with Navigator 7.01 and 6.0 after taking out the work around and no problems. I could not find a copy of 4.XX that I had originally experienced the problem with to see if it was an issue with my workstation. Problems occurred when renaming a file, uploading a file thru the form method, or creating file/folder/types with the New button. Let me know if you want me to add the workaround back in. I've increased the FreeSophster's deny simultaneous requests to 2 seconds. This will have the affect of annoying you more often with a 'Buy the full version.' message. I still don't have a pay site up yet, but you can always make a purchase thru other means. I plan on working on adding some sort of advertisement functionality to provide you with a (free to you) FULL version. I've added support for files larger than 2^32, and it appears Linux is set for a 8 byte variable (or 2^64 or 18,446,744,073,709,551,616 bytes). I haven't found any user agents (Internet Explorer, Netscape, etc.) that recognize Content-Lengths greater than 2^32. Unfortunately Internet Explorer caches it's entity body before sending it to the server, so even for small files 64 MB to 4 GB will be cumbersome. Nonetheless, please let me know if you have any trouble with the server. I've included executables for the original < 2^32 support, and they have a "-small" in their file name. Chances are that there are computers out there that won't accept the large file support code... but since the code has been around in Linux for sometime this should be a rare encounter. If I don't hear any complaints, next build will not include the "-small" versions. Also, if you know of a user agent that can handle large files, please let me know so I can try it out. Why all the releases in such short order? Mostly because the additions in the releases were already coded some time ago. I have recently gone back and verified compliance (legal/technical). So the drive to release 1.0.0 will be in the next year. The release number represents the core HTTP code. As for applications, there really isn't a release number associated with them, therefore reading their HTML documents will give you the information about their current status. Once 1.0.0 is released I will likely stop coding the core software and focus on some applications I want to implement. I am open to suggestions/feature requests, but keep in mind that I have designed a programming interface for you to develop your own ideas. Also, that not every possible function is best suited for this server. For example, public file sharing, do-able and would work just fine, but why not just use something like Apache which was originally designed for that purpose? The Sophster suite is generally made up of the core HTTP server, and applications written according to the core's API. The API documentation isn't completed but it will be soon, at which time I will provide the object code for you to link to. The free version currently only provides the Methods application. The Sophster uses the shared libraries of OpenSSL and Linux-PAM which must be accessible at run-time. Zlib library, on the otherhand, is linked statically, therefore you do not need it on your system for that functionality to work. I have added a seperate executable with support for PAM. The latest Linux PAM appears to be 0.77 which is what I've coded/compiled to. There doesn't appear to be any license information to print out since the code is only using the shared library and not redistributing it. The link I used was http://www.kernel.org/pub/linux/libs/pam/modules.html to obtain the Linux-PAM. Understand that the Sophster code is still looking at the passwd file for information about the user who is authenticating. I have not tested it yet to know what will happen if a user is authenticated by PAM and no entry in the passwd file about the user and their home directory, if you can try this please let me know what you experience. Also, I've only been able to get the PAM to work when the entries in the pam.conf file used full path for the module name and that there be two entries for the service, one for "auth" the other for "account", in that order. Any module "should" work if you have the system setup correctly, but I have not tested anything other than pam_unix.so, my pam.conf entries are: Sophster auth required /lib/security/pam_unix.so Sophster account required /lib/security/pam_unix.so OpenSSL is a beast in and of itself, please don't ask me to help you in creating a server certificate, I have enough trouble with it myself. Once you have the certificate (public and private) adding it so that the Sophster uses them for encryption is nothing more than setting up the configuration file options to reflect the location and whether the private key is password encoded, and if so what the password is. Then make sure you have set the configuration file to direct the server to operate as an SSL HTTP server and what port to use, then start it. I have not worked with certificate chains, however if you need support for this I will work with you in getting whatever code needs added to the source that may need added. Also, OpenSSL apparently can't handle more than two server certificates (public and private pair count as one), and it is partial to using only one set at that. Correct me if I'm wrong, but this means you must generate your certificates using the lowest level of encryption that you want to support. To make matters worse some browsers will not accept your server's certificate if it is too strong, and sometimes if it is too weak. I've found the best support so far with 128 bit RSA(?). IF YOU HAVE TROUBLE getting it started, first make sure you are supplying a configuration file location on the command line AND that all required configuration options are in the configuration file. Next, check to make sure that the shared libraries it requires are accessible to it. A helpful tool is 'ldd FreeSophster' which will show you the shared libraries needed by the server. See the man page of 'ldd' (man ldd). You can find configuration file options documented in CORE.htm and METHODS.htm HTML files. I'll add in a configuration file I use for you to get started. Note, however, that the instance I use has all the features and contains some name value pairs that won't be necessary/used in your instance. In other words, you will see options listed that may not affect the FreeSophster since it lacks some functionality from the full version. URI settings for applications are moving from static to being defined in the configuration file, this means if an application (Methods in particular) doesn't find it's URI mapping in the configuration file then it will not service any requests. As far as the FreeSophster goes, Methods-instance_URI_mapping should be mapped to / only. I have included this in the example configuration file. !!!!!!!!!!!!!!!!!!TAKE NOTE!!!!!!!!!!!!!!!!!!!!! HTTP status code 500 is generated on most errors -- if you are using Internet Explorer and have not turned off "Show friendly HTTP error messages" you will get the WRONG impression that the Sophster is malfunctioning. I have this recorded in the CORE.htm documentation along with instructions of how to disable that IE option. This free version only runs on i386 machines running a not-to-old Linux distribution. Typical syntax for starting the server, needs to be run as root: ./FreeSophster -c configuration.txt & BEWARE when you are clicking buttons, it's easy to click DELETE accidentally, or have other items selected that you didn't realize were selected at the time you want to click the DELETE button. Once you click DELETE, you'll NEVER get back (whatever you just deleted). I'm interested in knowing what you think of it. sschaefer1@woh.rr.com To date know one has emailed me, not that you need to, so I'm still wondering if anyone finds it useful.