url2keep
上传用户:seven77cht
上传日期:2007-01-04
资源大小:486k
文件大小:3k
源码类别:

浏览器

开发平台:

Unix_Linux

  1. #!/usr/bin/perl
  2. ################################################################
  3. #                                                              #
  4. #  url2keep         Extracts hostnames from html files         #
  5. #                   and adds them to the no-purge              #
  6. #                   section of the WWWOffle proxy server.      #
  7. #                                                              #
  8. #  Requires: HTML::LinkExtor (get it it from www.cpan.org)     #
  9. #                                                              #
  10. ################################################################
  11. #                                                              #
  12. # Copyright (C)2000 by Joerg Mensmann <joerg.mensmann@gmx.net> #
  13. # This script is released under the GNU Public License.        #
  14. #                                                              #
  15. ################################################################
  16. # sam mar 25 CET 2000                                          #
  17. # modified as a filter by Jacques L'helgoualc'h <lhh@free.fr>  #
  18. # Mon Mar 27 CEST 2000                                         #
  19. # added LinkExtor; now works correctly with "=" in URLs. jm    #
  20. ################################################################
  21. #
  22. # To use this with WWWOffle:
  23. #
  24. # 1. Save the contents of the "Purge" section in "wwwoffle.conf"
  25. #    (everything between "{" and "}") to a file called
  26. #    "wwwoffle.purge.conf" in the same directory
  27. #
  28. # 2. Replace the "Purge" section by:
  29. #      Purge
  30. #      [
  31. #        wwwoffle.purge-extended.conf
  32. #      ]
  33. #
  34. # ---------------
  35. #
  36. # 3. Choose html file(s) containing urls to keep in wwwoffle cache,
  37. #    for instance
  38. #
  39. #    FILES="~/.netcape/bookmarks.html ~/.lynx_bookmarks.html"
  40. #
  41. # 4. Do "cp wwwoffle.purge wwwoffle.purge-extended" and
  42. #
  43. #    "url2keep $FILES | sort | uniq >> wwwoffle.purge-extended"
  44. #
  45. # 5. Let WWWOffle re-read the config file: "wwwoffle -config"
  46. #
  47. #
  48. # Repeat steps 3, 4 and 5 every time you change the bookmarks files.
  49. # You can also put them in a cron job, or use it as a filter:
  50. #
  51. # lynx -source http://gedanken.demon.co.uk/ | url2keep | ...
  52. #
  53. ################################################################
  54. require HTML::LinkExtor;  # for extracting links out of HTML
  55. sub WorkOnLink
  56. {
  57.     my($tag, @attr) = @_; 
  58.     return if $tag ne 'a';  # only work on <a>-tags
  59.     $link = join(" ", @attr);
  60.     # extract href and extract the wanted fields
  61.     if (!($link =~ /href (((ht|f)tp)://([^/]*)([^ ]*))/i)) { return };
  62.     $url = $1;
  63.     $proto = $2;
  64.     $server = $4;
  65.     $file = $5;
  66.     # Remove "=" from URL
  67.     if( $file =~ /=/) {
  68.         $file =~ s/?[^/]*=.*/?*/g;  # for CGI parameters
  69.         $file =~ s/[^/]*=.*//g;       # no CGI -> remove last part
  70.     }
  71.     # Try to find out what to keep - This is only taken into account
  72.     # if "use-url" is set to yes in wwwoffle.conf. If it's not then
  73.     # always the entire server is kept.
  74.     # root directory or root-index file => keep entire server
  75.     if ($url =~ /^((ht|f)tp)://([^/]*)(/((index|default).[^/]*)?)?$/i) {
  76.         $nopurge = "$proto://$server";
  77.     }
  78.     # subdirectory or sub-index file => keep directory
  79.     elsif ($file =~ /./((index|default).[^/]*)$/i) {
  80.         $file =~ s//[^/]*$//g;
  81.         $nopurge = "$proto://$server$file/*";
  82.     }
  83.     # keep single file
  84.     else {
  85.         $nopurge = "$proto://$server$file";
  86.     }
  87.     print "  $nopurge = -1n";
  88. }
  89. $parser = HTML::LinkExtor->new(&WorkOnLink);
  90. for (<>) { $parser->parse($_) }
  91. $parser->eof;