rredir.pl
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:2k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. #!/usr/bin/perl -T -w
  2. #
  3. # rredir.pl
  4. #
  5. # Author: Peter Eisenhauer <pe@pipetronix.de>
  6. # First Version: 26. May 1997
  7. #
  8. # Description: Direct all request to files who are in a local dir to
  9. # this directory
  10. use File::Basename;
  11. use URI::URL;
  12. # customization part
  13. # Local Domainame from which no redirects should be done
  14. $localdomain = 'pipetronix.de';
  15. # Local domainame qouted for regexps
  16. $regexlocaldomain = quotemeta($localdomain);
  17. # Path under which the scripts accesses the local dir (must end with /)
  18. $access_local_dir='/opt/utils/etc/httpd/htdocs/local-rredir/';
  19. # Information for the redirected URL (redirect_path must end with /)
  20. $redirect_scheme = 'http';
  21. $redirect_host = 'ws-server.pipetronix.de';
  22. $redirect_path = 'local-rredir/';
  23. # end of customization part
  24. # flush after every print
  25. $| = 1;
  26. # Process lines of the form 'URL ip-address/fqdn ident method'
  27. # See release notes of Squid 1.1 for details
  28. while ( <> ) {
  29.     ($url, $addr, $fqdn, $ident, $method) = m:(S*) (S*)/(S*) (S*) (S*):;
  30.     $url = url $url;
  31.     $host = lc($url->host);
  32.     # do not process hosts in local domain or unqualified hostnames
  33.     if ( $host =~ /$regexlocaldomain/ || $host !~ /./ ) {
  34. next;
  35.     }
  36.     # just the file, without any host or path parts
  37.     # and just in case: lowercase the file name, so you should make sure
  38.     # all the files in the local dir are only lowercase !!
  39.     $file = lc(basename($url->path));
  40.     # look if in local dir, if yes redirect
  41.     if ( $file && -r $access_local_dir . $file
  42. && $file ne '.' && $file ne '..' ) {
  43. $url->scheme($redirect_scheme);
  44. $url->host($redirect_host);
  45. $url->path($redirect_path . $file);
  46.     }
  47. } continue {
  48.     print "$url $addr/$fqdn $ident $methodn"
  49. }