Henrik Nordström's Squid work -> Related software


Related software

I have some software which is related to Squid, but not part of the Squid core.

PAM authenticator module

This program authenticates users against a PAM configured authentication service "squid". This allows you to authenticate Squid users to any authentication source for which you have a PAM module. Commonly available PAM modules includes "UNIX", RADIUS, Kerberos and SMB, but a lot of other PAM modules are available from various sources.

Example PAM configuration for standard UNIX passwd authentication:

/etc/pam.conf:
    squid auth     required /lib/security/pam_unix.so.1
    squid account  required /lib/security/pam_unix.so.1

Note that some PAM modules (for example shadow password authentication) requires the program to be installed suid root, or PAM will not allow it to authenticate other users than it runs as (this is a security limitation of PAM to avoid automated probing of passwords).

Current version: 2.0, releases 2002-01-07

C source
pam_auth.c
MAN page
pam_auth.8
Pre-formatted MAN page
pam_auth.txt

Tools I use to maintain my development tree

I have now switched to CVS for maintaining the source tree. To simplify the matters a bit, I have some small shell scripts.

cvsimport dirname
Import a new release. Takes a unpacked directory tree as argument, with full version in the name. If you have applied any patches make sure that the directory name reflects this (preferably by using -<patchname> extensions to the directory name). When this is done you have a work directory called squid (or whatever the basename of the application is).
mkcvspatch dirname
Build a patch file, with all changes since you last ran mkcvspatch.
cvsresetlastpatch dirname/file ...
Resets the mkcvspatch level to the base revision. Useful when you have to correct errors in previous patches, and want to make a new patch including the fix.
cvssetlastpatch file revision
Resets the mkcvspatch level to a specified revision
mksnapshot dirname
Build a snapshot patch file, with all local changes.
tag-logger.sh
A small shell script helper to CVS to generate a cronological changelog based on persistent tags. Called on checkin from CVSROOT/loginfo by
^squid /home/henrik/bin/tag-logger.sh
$HOME/.cvsrc settings
rdiff -kk -u
diff -u
mkcvsbranch module basetag extension
A tool I uses when I need to make a separate branch for a larger task, or when I need to start from a clean source tree.
Hen's cvsweb (CGI interface to CVS)
This makes wonders when one needs to browse back in the CVS history. A must for every CVS site. (includes a number of enhancements by me ;-)
DebugCache
A RunCache dropin replacement which uses gdb to get automated stacktraces on failures. Handy if you have trouble getting your OS to dump core when (if) Squid fails, or if signal handling or crash shutdown of Squid messes up the traces.
cvsexport
Exports sources from CVS to a plain directory in the same state as it was when checked in (including revision tags and similar stuff). Used primarily to retreive identical copies of what what imported using cvsimport.

These scripts uses a number of symbolic tags to keep track of the different versions.

squid_1_2_beta6
Base distribution.
squid_1_2_beta6-local
The local branch. This is where you do your work.
squid_1_2_beta6-local-lastpatch
When you last ran mkcvspatch.

squid_1_2_beta6 is the directory name used when running cvsimport, with "." replaced by "_".

I have selected to use separate branches from the main distribution, since every time Duane releases a new version/patch, most or all of my patches is included but slightly changed to conform to code conventions, and those that are not either needs to be cleaned up or was lost somewhere and needs to be resubmitted as as updated patches, so whatever I do I have to do some manual work when importing a new Squid release.

Example session:

  1. run "cvsimport squid-1.2.beta6" to begin
  2. Manually merge any patches not merged into the distribution
  3. Go to the squid directory, and hack...
  4. run "cvs commit" when you have something that works, even if it only is a small step on the way to the final functionality. By using commit quite often you
    1. Keep track of what you have done
    2. Can easily back out a change that doesn't work.
  5. Repeat 3 & 4 until done
  6. run "mkcvspatch squid" and send the resulting patch to squid-bugs@squid-cache.org
  7. Go back to 3 and code some more.
  8. When a new release is made, then run "cvsimport <new release>". check which changes that got committed or not, merge those that wasn't and resend updated diffs to squid-bugs@squid-cache.org.

OS / Library Bug tests

Sometimes bugs are found in various operating systems or system libraries during the development of Squid. Here I provide any test samples I where I have been able to isolate a bug or misfeature of a OS.

Squid diagnostic tools

This is various tools I developed for diagnosing Squid

dump_swap_state
Dumps swap.state to plain text format

© 1999-2000 Henrik Nordström <hno@squid-cache.org>.

Squid Now! Cache Now! Valid HTML 4.0! SourceForge