From 4f45be77dbca1f961c7aa6564f4296095be30ebc Mon Sep 17 00:00:00 2001 From: calvin Date: Mon, 20 Nov 2000 22:25:55 +0000 Subject: [PATCH] man page git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@201 e7d03fd6-7b0d-0410-9947-9c21f3af8025 --- FAQ | 40 +++++++++- MANIFEST.in | 2 +- Makefile | 1 + README | 22 +++--- debian/changelog | 9 +++ debian/rules | 4 +- linkcheck/Config.py | 4 +- linkcheck/Logging.py | 38 +++++++--- linkcheck/MailtoUrlData.py | 2 +- linkcheck/UrlData.py | 19 +++-- linkchecker | 65 ++++++++-------- linkcheckerrc | 16 ++-- po/de.po | 148 ++++++++++++++++++------------------ po/fr.po | 150 +++++++++++++++++++------------------ setup.py | 72 +++++++++++++----- 15 files changed, 347 insertions(+), 245 deletions(-) diff --git a/FAQ b/FAQ index e54d7e5c..868025dd 100644 --- a/FAQ +++ b/FAQ @@ -7,4 +7,42 @@ A: You have to quote special characters (e.g. spaces) in the subject field. Q: I have a pretty large site to check. How can I restrict link checking to check only my own pages? -A: Look at the options --intern, --extern, --strict and --recursion-level. +A: Look at the options --intern, --extern, --strict, --allowdeny and + --recursion-level. + + +Q: I dont get this extern/intern stuff. +A: When it comes to checking there are three types of URLs: + 1) strict URLs: + we do only syntax checking + 2) extern URLs: + like 1), but we additionally check if they are valid by connect()ing + to them + 3) intern URLs: + like 2), but we additionally check if they are HTML pages and if so, + we descend recursively into this link and check all the links in the + HTML content. + The --recursion-level option restricts the number of such recursive + descends. + + LinkChecker provides four options which affect URLs to fall in one + of those three categories: --intern, --extern, --strict and + --denyallow. + By default all URLs are intern. With --extern you specify what URLs + are extern. With --intern you specify what URLs are intern. + Now imagine you have both --extern and --intern. What happens + when an URL matches both patterns? Or when it matches none? In this + situation the --denyallow option specifies the order in which we match + the URL. By default it is intern/extern, with --denyallow the order is + extern/intern. Either way, the first match counts, and if none matches, + the last checked category is the category for the URL. + Finally, with --strict all extern URLs are strict. + + Oh, and just to boggle your mind: you can have more than one extern + regular expression in a config file and for each of those expressions + you can specify if those matched extern URLs should be strict or not. + + An example. Assume we want to check only urls of our domains named + 'mydomain.com' and 'myotherdomain.com'. Then we specify + -i'^http://my(other)?domain\.com' as intern regular expression, all other + urls are treated extern. diff --git a/MANIFEST.in b/MANIFEST.in index a53a9d33..a66a5b86 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,6 @@ include MANIFEST.in include README FAQ INSTALL LICENSE TODO draft-gilman-news-url-00.txt -include linkcheckerrc linkchecker linkchecker.bat create.sql +include linkcheckerrc linkchecker linkchecker.bat linkchecker.1 create.sql include lc.cgi lc.fcgi lc.sz_fcgi include Makefile include create.sql diff --git a/Makefile b/Makefile index cb12f367..f2b871a6 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,7 @@ VERSION: upload: distclean dist package files VERSION scp debian/changelog shell1.sourceforge.net:/home/groups/$(PACKAGE)/htdocs/changes.txt + scp README shell1.sourceforge.net:/home/groups/$(PACKAGE)/htdocs/readme.txt scp linkchecker-out.* shell1.sourceforge.net:/home/groups/$(PACKAGE)/htdocs scp VERSION shell1.sourceforge.net:/home/groups/$(PACKAGE)/htdocs/raw/ scp dist/* shell1.sourceforge.net:/home/groups/ftp/pub/$(PACKAGE)/ diff --git a/README b/README index 9dc0f99a..a94bf512 100644 --- a/README +++ b/README @@ -1,24 +1,22 @@ LinkChecker ============= -With LinkChecker you can check your HTML documents for broken links. +LinkChecker checks HTML documents for broken links. -Features: ---------- +It features o recursive checking -o multithreaded -o output can be colored or normal text, HTML, SQL, CSV, or a sitemap +o multithreading +o output in colored or normal text, HTML, SQL, CSV or a sitemap graph in GML or XML. o HTTP/1.1, HTTPS, FTP, mailto:, news:, nntp:, Gopher, Telnet and local - file links are supported. - Javascript links are currently ignored -o restrict link checking with regular expression filters for URLs + file links support +o restriction of link checking with regular expression filters for URLs o proxy support -o give username/password for HTTP and FTP authorization +o username/password authorization for HTTP and FTP o robots.txt exclusion protocol support o i18n support -o command line interface -o (Fast)CGI web interface (requires HTTP server) +o a command line interface +o a (Fast)CGI web interface (requires HTTP server) Installing, Requirements, Running @@ -106,4 +104,4 @@ Each logger has functions init(), newUrl() and endOfOutput(). We call init() once to initialize the Logger. UrlData.check() calls newUrl() (through UrlData.logMe()) and after all checking we call endOfOutput(). Easy. -New loggers are created with the Config.newLogger(name, fileoutput) function. +New loggers are created with the Config.newLogger function. diff --git a/debian/changelog b/debian/changelog index e74d3a0e..9302eccd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +linkchecker (1.2.9) unstable; urgency=low + + * changed specification and better documentation of intern/extern + checking; see the FAQ for detailed information + * added a man page + * setup.py: fix for distutils debugging function dump_dirs + + -- Bastian Kleineidam Mon, 20 Nov 2000 19:47:02 +0100 + linkchecker (1.2.8) unstable; urgency=low * INSTALL: more documentation for the CGI scripts diff --git a/debian/rules b/debian/rules index 821ec9c0..cdbd0c70 100755 --- a/debian/rules +++ b/debian/rules @@ -64,9 +64,9 @@ binary-arch: build install # dh_installpam # dh_installinit # dh_installcron -# dh_installmanpages + dh_installmanpages # dh_installinfo - dh_undocumented linkchecker.1 +# dh_undocumented linkchecker.1 dh_installchangelogs dh_link dh_strip diff --git a/linkcheck/Config.py b/linkcheck/Config.py index 1456664c..a46929e9 100644 --- a/linkcheck/Config.py +++ b/linkcheck/Config.py @@ -92,7 +92,7 @@ class Configuration(UserDict.UserDict): self.data["anchors"] = 0 self.data["externlinks"] = [] self.data["internlinks"] = [] - self.data["allowdeny"] = 0 + self.data["denyallow"] = 0 self.data["authentication"] = [(re.compile(r'^.+'), 'anonymous', 'joe@')] @@ -472,5 +472,5 @@ class Configuration(UserDict.UserDict): except ConfigParser.Error: pass try: self.data["internlinks"].append(re.compile(cfgparser.get(section, "internlinks"))) except ConfigParser.Error: pass - try: self.data["allowdeny"] = cfgparser.getboolean(section, "allowdeny") + try: self.data["denyallow"] = cfgparser.getboolean(section, "denyallow") except ConfigParser.Error: pass diff --git a/linkcheck/Logging.py b/linkcheck/Logging.py index e322f29c..95d8b08e 100644 --- a/linkcheck/Logging.py +++ b/linkcheck/Logging.py @@ -36,7 +36,7 @@ __init__(self, **args) default parameters. Adjust these parameters in the configuration files in the appropriate logger section. """ -import sys,time +import sys,time,string import Config,StringUtil from linkcheck import _ @@ -60,6 +60,21 @@ Spaces = {} for key in KeyWords: Spaces[key] = " "*(MaxIndent - len(_(key))) +EntityTable = { + '<': '<', + '>': '>', + '&': '&', + '"': '"', + '\'': ''', +} + +def quote(s): + res = list(s) + for i in range(len(res)): + c = res[i] + res[i] = EntityTable.get(c, c) + return string.joinfields(res, '') + # return formatted time def _strtime(t): return time.strftime("%d.%m.%Y %H:%M:%S", time.localtime(t)) @@ -478,7 +493,7 @@ class XMLLogger(StandardLogger): def init(self): self.starttime = time.time() - self.fd.write("\n") + self.fd.write('\n') self.fd.write("\n\n") - self.fd.write("\n\n") + self.fd.write('\n\n') self.fd.flush() def newUrl(self, urlData): @@ -496,15 +511,15 @@ class XMLLogger(StandardLogger): node.id = self.nodeid self.nodes[node.url] = node self.nodeid = self.nodeid + 1 - self.fd.write(" \n") - self.fd.write(" \n" % node.url) + self.fd.write(" \n" % quote(node.url)) self.fd.write(" \n") if node.downloadtime: - self.fd.write(" %d\n" \ + self.fd.write(" %f\n" \ % node.downloadtime) if node.checktime: - self.fd.write(" %d\n" \ + self.fd.write(" %f\n" \ % node.checktime) self.fd.write(" %d\n" % \ (node.extern and 1 or 0)) @@ -519,13 +534,14 @@ class XMLLogger(StandardLogger): for node in self.nodes.values(): if self.nodes.has_key(node.parentName): self.fd.write(" \n") - self.fd.write(" \n" % node.urlName) + self.fd.write(" \n" % quote(node.urlName)) self.fd.write(" \n") - self.fd.write(" %d" % (node.valid and 1 or 0)) + self.fd.write(" %d\n" % \ + (node.valid and 1 or 0)) self.fd.write(" \n") self.fd.write(" \n") self.fd.flush() diff --git a/linkcheck/MailtoUrlData.py b/linkcheck/MailtoUrlData.py index 54165156..a4d14653 100644 --- a/linkcheck/MailtoUrlData.py +++ b/linkcheck/MailtoUrlData.py @@ -70,7 +70,7 @@ class MailtoUrlData(HostCheckingUrlData): return for name,mail in self.adresses: - Config.debug("DEBUG: checking mail address %s" % mail) + Config.debug("DEBUG: checking mail address %s\n" % mail) user,host = self._split_adress(mail) mxrecords = DNS.mxlookup(host) if not len(mxrecords): diff --git a/linkcheck/UrlData.py b/linkcheck/UrlData.py index 8ddc147c..c02fa057 100644 --- a/linkcheck/UrlData.py +++ b/linkcheck/UrlData.py @@ -177,6 +177,7 @@ class UrlData: # apply filter debug("DEBUG: checking filter\n") + debug("DEBUG: extern = %s\n" % str(self.extern)) if self.extern and (config["strict"] or self.extern[1]): self.setWarning(_("outside of domain filter, checked only syntax")) self.logMe(config) @@ -262,21 +263,23 @@ class UrlData: if not (config["externlinks"] or config["internlinks"]): return 0 # deny and allow external checking - if config["allowdeny"]: - for pat in config["internlinks"]: - if pat.search(self.url): - return 0 + if config["denyallow"]: for pat, strict in config["externlinks"]: if pat.search(self.url): return (1, strict) + for pat in config["internlinks"]: + if pat.search(self.url): + return 0 + return 0 else: - for pat, strict in config["externlinks"]: - if pat.search(self.url): - return (1, strict) for pat in config["internlinks"]: if pat.search(self.url): return 0 - return (1,0) + for pat, strict in config["externlinks"]: + if pat.search(self.url): + return (1, strict) + return (1,0) + raise ValueError, "internal error in UrlData._getExtern" def getContent(self): diff --git a/linkchecker b/linkchecker index 2d014cbb..9a2e7dbf 100755 --- a/linkchecker +++ b/linkchecker @@ -27,42 +27,45 @@ import linkcheck, StringUtil from linkcheck import _ -Usage = _("USAGE\tlinkchecker [options] file_or_url...\n" +Usage = _("USAGE\tlinkchecker [options] file-or-url...\n" "\n" "OPTIONS\n" +"For single-letter option arguments the space is not a necessity. So\n" +"'-o colored' is the same as '-ocolored'.\n" "-a, --anchors\n" " Check anchor references. Default is don't check anchors.\n" +"-d, --denyallow\n" +" Swap checking order to extern/intern. Default checking order\n" +" is intern/extern.\n" "-D, --debug\n" " Print additional debugging information.\n" "-e regex, --extern=regex\n" " Assume urls that match the given expression as extern.\n" -" Only intern HTTP links are checked recursively.\n" +" Only intern HTML links are checked recursively.\n" "-f file, --config=file\n" " Use file as configuration file. LinkChecker first searches\n" " ~/.linkcheckerrc and then /etc/linkcheckerrc\n" " (under Windows \\linkcheckerrc).\n" -"-F name, --file-output=name\n" -" Same as output, but write to a file linkchecker-out..\n" +"-F type, --file-output=type\n" +" Same as output, but write to a file linkchecker-out..\n" " If the file already exists, it is overwritten. You can specify\n" " this option more than once. There is no file output for the\n" " blacklist logger. Default is no file output.\n" "-i regex, --intern=regex\n" -" Assume urls that match the given expression as intern.\n" +" Assume URLs that match the given expression as intern.\n" +" LinkChecker descends recursively only to intern URLs, not to extern.\n" "-h, --help\n" " Help me! Print usage information for this program.\n" -"-l, --allowdeny\n" -" Swap checking order to intern/extern. Default checking order\n" -" is extern/intern.\n" -"-N, --nntp-server\n" +"-N server, --nntp-server=server\n" " Specify an NNTP server for 'news:...' links. Default is the\n" " environment variable NNTP_SERVER. If no host is given,\n" " only the syntax of the link is checked.\n" -"-o name, --output=name\n" -" Specify output as %s.\n" -" Default is text.\n" +"-o type, --output=type\n" +" Specify output type as %s.\n" +" Default type is text.\n" "-p pwd, --password=pwd\n" -" Try given password for HTML and FTP authorization.\n" -" Default is 'guest@'. See -u.\n" +" Try password pwd for HTML and FTP authorization.\n" +" Default password is 'guest@'. See also -u.\n" "-q, --quiet\n" " Quiet operation. This is only useful with -F.\n" "-r depth, --recursion-level=depth\n" @@ -76,8 +79,8 @@ Usage = _("USAGE\tlinkchecker [options] file_or_url...\n" " Generate no more than num threads. Default number of threads is 5.\n" " To disable threading specify a non-positive number.\n" "-u name, --user=name\n" -" Try given username for HTML and FTP authorization.\n" -" Default is 'anonymous'. See -p.\n" +" Try username name for HTML and FTP authorization.\n" +" Default is 'anonymous'. See also -p.\n" "-V, --version\n" " Print version and exit.\n" "-v, --verbose\n" @@ -90,30 +93,30 @@ Usage = _("USAGE\tlinkchecker [options] file_or_url...\n" " any content of the checked link.\n" " This applies of course only to pages which are valid, so we can\n" " get their content.\n" -" You can use this to check for pages that contain some form of\n" -" error message, for example 'This page has moved' or\n" -" 'Oracle Application Server error'.\n" +" Use this to check for pages that contain some form of error\n" +" message, for example 'This page has moved' or 'Oracle\n" +" Application Server error'.\n" " This option implies -w.\n") % linkcheck.Config.LoggerKeys Notes = _("NOTES\n" "o LinkChecker assumes an http:// resp. ftp:// link when a commandline URL\n" " starts with 'www.' resp. 'ftp.'\n" -" You can also give local files as arguments\n" +" You can also give local files as arguments.\n" "o If you have your system configured to automatically establish a\n" " connection to the internet (e.g. with diald), it will connect when\n" -" checking links not pointing to your local host\n" -" Use the -s and -i options to prevent this (see EXAMPLES)\n" -"o Javascript links are currently ignored\n" -"o If your platform does not support threading, LinkChecker uses -t0\n" -"o You can supply multiple user/password pairs in a configuration file\n" -"o Cookies are not accepted by LinkChecker\n" +" checking links not pointing to your local host.\n" +" Use the -s and -i options to prevent this.\n" +"o Javascript links are currently ignored.\n" +"o If your platform does not support threading, LinkChecker uses -t0.\n" +"o You can supply multiple user/password pairs in a configuration file.\n" +"o Cookies are not accepted by LinkChecker.\n" "o To use proxies set $http_proxy, $https_proxy on Unix or Windows.\n" " On a Mac use the Internet Config.\n" "o When checking 'news:' links the given NNTP host doesn't need to be the\n" " same as the host of the user browsing your pages!\n") Examples = _("EXAMPLES\n" -"o linkchecker -v -o html -r2 -s -i treasure.calvinsplayground.de \\\n" +"o linkchecker -v -ohtml -r2 -s -itreasure.calvinsplayground.de \\\n" " http://treasure.calvinsplayground.de/~calvin/ > sample.html\n" "o Local files and syntactic sugar on the command line:\n" " linkchecker c:\\temp\\test.html\n" @@ -144,7 +147,7 @@ def printUsage(msg): try: # Note: cut out the name of the script options, args = getopt.getopt(sys.argv[1:], - "aDe:f:F:hi:lN:o:p:qr:Rst:u:VvwW:", # short options + "adDe:f:F:hi:N:o:p:qr:Rst:u:VvwW:", # short options ["anchors", # long options "config=", "debug", @@ -153,7 +156,7 @@ try: "nntp-server=", "help", "intern=", - "allowdeny", + "denyallow", "output=", "password=", "quiet", @@ -214,8 +217,8 @@ for opt,arg in options: elif opt=="-i" or opt=="--intern": config["internlinks"].append(re.compile(arg)) - elif opt=="-l" or opt=="--allowdeny": - config["allowdeny"] = 1 + elif opt=="-l" or opt=="--denyallow": + config["denyallow"] = 1 elif opt=="-N" or opt=="--nntp-server": config["nntpserver"] = arg diff --git a/linkcheckerrc b/linkcheckerrc index 32cecfd3..21e8a461 100644 --- a/linkcheckerrc +++ b/linkcheckerrc @@ -85,24 +85,18 @@ # Basic NNTP server. Overrides NNTP_SERVER environment variable. #nntpserver=news.uni-stuttgart.de -# filtering options +# filtering options (see FAQ) # for each extern link we can specify if it is strict or not -# extern means we do not recurse into extern HTML pages -# strict means we do not even make a network connection to extern URLs, -# we only check their syntax -# Note that if you specify any extern patterns you should specify the -# intern pattern as well. If the intern pattern is not specified than -# no URL will be intern (==> all URLs will be extern) and thats not -# what you wanted. [filtering] # everything with 'lconline' in the URL name is extern # extern1=lconline 0 -# everything with 'bookmark' in the URL name is extern and we make -# no network connection to such URLs (strict) +# everything with 'bookmark' in the URL name is strict # extern2=bookmark 1 # links to our domain are intern # internlinks=calvinsplayground\.de -#allowdeny=0 +# check only syntax of all mail adresses +# extern3=^mailto: 1 +#denyallow=0 # You can provide different user/password pairs for different link types. # Entries are a triple (link regular expression, username, password), diff --git a/po/de.po b/po/de.po index 2ab349d9..1e7cd831 100644 --- a/po/de.po +++ b/po/de.po @@ -104,44 +104,6 @@ msgstr "Beginne Pr msgid "D/L Time" msgstr "D/L Zeit" -msgid "" -"NOTES\n" -"o LinkChecker assumes an http:// resp. ftp:// link when a commandline URL\n" -" starts with 'www.' resp. 'ftp.'\n" -" You can also give local files as arguments\n" -"o If you have your system configured to automatically establish a\n" -" connection to the internet (e.g. with diald), it will connect when\n" -" checking links not pointing to your local host\n" -" Use the -s and -i options to prevent this (see EXAMPLES)\n" -"o Javascript links are currently ignored\n" -"o If your platform does not support threading, LinkChecker uses -t0\n" -"o You can supply multiple user/password pairs in a configuration file\n" -"o Cookies are not accepted by LinkChecker\n" -"o To use proxies set $http_proxy, $https_proxy on Unix or Windows.\n" -" On a Mac use the Internet Config.\n" -"o When checking 'news:' links the given NNTP host doesn't need to be the\n" -" same as the host of the user browsing your pages!\n" -msgstr "" -"KOMMENTARE\n" -"o LinkChecker verwendet eine http:// bzw. ftp:// URL wenn eine URL auf der\n" -" Kommandozeile mit 'www.' bzw. 'ftp.' beginnt\n" -" Sie können auch lokale Dateien als Argumente angeben\n" -"o Falls sich Ihr System automatisch mit dem Internet verbindet\n" -" (z.B. mit diald), wird es dies tun wenn Sie Links prüfen, die nicht\n" -" auf Ihren lokalen Rechner verweisen\n" -" Benutzen Sie die Optionen -s und -i um dies zu verhindern (siehe " -"BEISPIELE)\n" -"o Javascript Links werden zur Zeit ignoriert\n" -"o Wenn Ihr System keine Threads unterstützt verwendet LinkChecker die\n" -" Option -t0\n" -"o Sie können mehrere user/password Paare in einer Konfigurationsdatei\n" -" angeben\n" -"o Cookies werden von LinkChecker nicht akzeptiert\n" -"o Um Proxies zu benutzen, setzen Sie $http_proxy, $https_proxy unter\n" -" Unix oder Windows. Auf einem Mac benutzen Sie die Internet Config.\n" -"o Beim Prüfen von 'news:' Links muß der angegebene NNTP Rechner nicht\n" -" unbedingt derselbe wie der des Benutzers sein!\n" - msgid "seconds" msgstr "Sekunden" @@ -207,26 +169,9 @@ msgstr "Kein Benutzername oder Passwort gefunden" msgid "Get the newest version at %s\n" msgstr "Die neueste Version gibt es unter %s\n" -msgid "Got no answer from FTP server" -msgstr "Keine Antwort vom FTP Server" - -msgid "found mail host %s" -msgstr "Mail host %s gefunden" - -msgid "Error: %s\n" -msgstr "Fehler: %s\n" - -msgid "Javascript url ignored" -msgstr "Javascript url ignoriert" - -msgid "could not split the mail adress" -msgstr "konnte Mail Adresse nicht splitten" - -msgid "invalid log option '%s'" -msgstr "ungültige Log Option '%s'" - +#, fuzzy msgid "" -"USAGE\tlinkchecker [options] file_or_url...\n" +"USAGE\tlinkchecker [options] file-or-url...\n" "\n" "OPTIONS\n" "-a, --anchors\n" @@ -235,33 +180,35 @@ msgid "" " Print additional debugging information.\n" "-e regex, --extern=regex\n" " Assume urls that match the given expression as extern.\n" -" Only intern HTTP links are checked recursively.\n" +" Only intern HTML links are checked recursively.\n" "-f file, --config=file\n" " Use file as configuration file. LinkChecker first searches\n" " ~/.linkcheckerrc and then /etc/linkcheckerrc\n" " (under Windows \\linkcheckerrc).\n" -"-F name, --file-output=name\n" -" Same as output, but write to a file linkchecker-out..\n" +"-F type, --file-output=type\n" +" Same as output, but write to a file linkchecker-out..\n" " If the file already exists, it is overwritten. You can specify\n" " this option more than once. There is no file output for the\n" " blacklist logger. Default is no file output.\n" "-i regex, --intern=regex\n" -" Assume urls that match the given expression as intern.\n" +" Assume URLs that match the given expression as intern.\n" +" LinkChecker descends recursively only to intern URLs, not to " +"extern.\n" "-h, --help\n" " Help me! Print usage information for this program.\n" "-l, --allowdeny\n" " Swap checking order to intern/extern. Default checking order\n" " is extern/intern.\n" -"-N, --nntp-server\n" +"-N server, --nntp-server=server\n" " Specify an NNTP server for 'news:...' links. Default is the\n" " environment variable NNTP_SERVER. If no host is given,\n" " only the syntax of the link is checked.\n" -"-o name, --output=name\n" -" Specify output as %s.\n" -" Default is text.\n" +"-o type, --output=type\n" +" Specify output type as %s.\n" +" Default type is text.\n" "-p pwd, --password=pwd\n" -" Try given password for HTML and FTP authorization.\n" -" Default is 'guest@'. See -u.\n" +" Try password pwd for HTML and FTP authorization.\n" +" Default password is 'guest@'. See also -u.\n" "-q, --quiet\n" " Quiet operation. This is only useful with -F.\n" "-r depth, --recursion-level=depth\n" @@ -275,8 +222,8 @@ msgid "" " Generate no more than num threads. Default number of threads is 5.\n" " To disable threading specify a non-positive number.\n" "-u name, --user=name\n" -" Try given username for HTML and FTP authorization.\n" -" Default is 'anonymous'. See -p.\n" +" Try username name for HTML and FTP authorization.\n" +" Default is 'anonymous'. See also -p.\n" "-V, --version\n" " Print version and exit.\n" "-v, --verbose\n" @@ -289,9 +236,9 @@ msgid "" " any content of the checked link.\n" " This applies of course only to pages which are valid, so we can\n" " get their content.\n" -" You can use this to check for pages that contain some form of\n" -" error message, for example 'This page has moved' or\n" -" 'Oracle Application Server error'.\n" +" Use this to check for pages that contain some form of error\n" +" message, for example 'This page has moved' or 'Oracle\n" +" Application Server error'.\n" " This option implies -w.\n" msgstr "" "BENUTZUNG\tlinkchecker [options] datei_oder_url...\n" @@ -365,6 +312,63 @@ msgstr "" " 'Diese Seite ist umgezogen' oder 'Oracle Server Fehler'.\n" " Diese Option nimmt -w an.\n" +msgid "Got no answer from FTP server" +msgstr "Keine Antwort vom FTP Server" + +msgid "found mail host %s" +msgstr "Mail host %s gefunden" + +msgid "Javascript url ignored" +msgstr "Javascript url ignoriert" + +msgid "could not split the mail adress" +msgstr "konnte Mail Adresse nicht splitten" + +msgid "invalid log option '%s'" +msgstr "ungültige Log Option '%s'" + +msgid "Error: %s\n" +msgstr "Fehler: %s\n" + +#, fuzzy +msgid "" +"NOTES\n" +"o LinkChecker assumes an http:// resp. ftp:// link when a commandline URL\n" +" starts with 'www.' resp. 'ftp.'\n" +" You can also give local files as arguments.\n" +"o If you have your system configured to automatically establish a\n" +" connection to the internet (e.g. with diald), it will connect when\n" +" checking links not pointing to your local host.\n" +" Use the -s and -i options to prevent this.\n" +"o Javascript links are currently ignored.\n" +"o If your platform does not support threading, LinkChecker uses -t0.\n" +"o You can supply multiple user/password pairs in a configuration file.\n" +"o Cookies are not accepted by LinkChecker.\n" +"o To use proxies set $http_proxy, $https_proxy on Unix or Windows.\n" +" On a Mac use the Internet Config.\n" +"o When checking 'news:' links the given NNTP host doesn't need to be the\n" +" same as the host of the user browsing your pages!\n" +msgstr "" +"KOMMENTARE\n" +"o LinkChecker verwendet eine http:// bzw. ftp:// URL wenn eine URL auf der\n" +" Kommandozeile mit 'www.' bzw. 'ftp.' beginnt\n" +" Sie können auch lokale Dateien als Argumente angeben\n" +"o Falls sich Ihr System automatisch mit dem Internet verbindet\n" +" (z.B. mit diald), wird es dies tun wenn Sie Links prüfen, die nicht\n" +" auf Ihren lokalen Rechner verweisen\n" +" Benutzen Sie die Optionen -s und -i um dies zu verhindern (siehe " +"BEISPIELE)\n" +"o Javascript Links werden zur Zeit ignoriert\n" +"o Wenn Ihr System keine Threads unterstützt verwendet LinkChecker die\n" +" Option -t0\n" +"o Sie können mehrere user/password Paare in einer Konfigurationsdatei\n" +" angeben\n" +"o Cookies werden von LinkChecker nicht akzeptiert\n" +"o Um Proxies zu benutzen, setzen Sie $http_proxy, $https_proxy unter\n" +" Unix oder Windows. Auf einem Mac benutzen Sie die Internet Config.\n" +"o Beim Prüfen von 'news:' Links muß der angegebene NNTP Rechner nicht\n" +" unbedingt derselbe wie der des Benutzers sein!\n" + msgid "Articel number %s found" msgstr "Artikel nummer %s wurde gefunden" diff --git a/po/fr.po b/po/fr.po index 0c859912..7180be5e 100644 --- a/po/fr.po +++ b/po/fr.po @@ -96,45 +96,6 @@ msgstr "D msgid "D/L Time" msgstr "Durée D/L" -msgid "" -"NOTES\n" -"o LinkChecker assumes an http:// resp. ftp:// link when a commandline URL\n" -" starts with 'www.' resp. 'ftp.'\n" -" You can also give local files as arguments\n" -"o If you have your system configured to automatically establish a\n" -" connection to the internet (e.g. with diald), it will connect when\n" -" checking links not pointing to your local host\n" -" Use the -s and -i options to prevent this (see EXAMPLES)\n" -"o Javascript links are currently ignored\n" -"o If your platform does not support threading, LinkChecker uses -t0\n" -"o You can supply multiple user/password pairs in a configuration file\n" -"o Cookies are not accepted by LinkChecker\n" -"o To use proxies set $http_proxy, $https_proxy on Unix or Windows.\n" -" On a Mac use the Internet Config.\n" -"o When checking 'news:' links the given NNTP host doesn't need to be the\n" -" same as the host of the user browsing your pages!\n" -msgstr "" -"NOTES\n" -"o LinkChecker suppose qu'il s'agit de liens http:// et respectivement ftp:// " -"lorsque l'URL\n" -" de la ligne de commande commence par 'www.' et respectivement 'ftp.'\n" -" Vous pouvez aussi donner des fichiers locaux comme arguments\n" -"o Si votre systeme est configuré pour établir automatiquement une\n" -" connexion à internet (e.g. with diald), il se connectera lorsque les " -"liens\n" -" contrôlés ne pointent pas vers votre réseau local\n" -" Utiliser l'option -s et -i pour l'éviter (voir EXEMPLES)\n" -"o Les liens Javascript sont actuellement ignorés\n" -"o If your platform does not support threading, LinkChecker uses -t0\n" -"o Vous pouvez fournir plusieurs couples 'utilisateurs'/'mots de passe' dans " -"le fichier de configuration\n" -"o Les cookies ne sont pas acceptés par LinkChecker\n" -"o To use proxies set $http_proxy, $https_proxy on Unix or Windows.\n" -" On a Mac use the Internet Config.\n" -"o Lors d'un contrôle des liens 'news:', l'hôte NNTP spécifié n'a pas besoin " -"d'être le\n" -" même que l'hôte de l'utilisateur qui parcourt vos pages!\n" - msgid "seconds" msgstr "secondes" @@ -199,26 +160,9 @@ msgstr "Aucun utilisateur ou mot de passe trouv msgid "Get the newest version at %s\n" msgstr "Obtenir la dernière version à %s\n" -msgid "Got no answer from FTP server" -msgstr "N'obtient pas de réponse du serveur FTP" - -msgid "found mail host %s" -msgstr "trouvé un hôte de messagerie %s" - -msgid "Error: %s\n" -msgstr "Erreur: %s\n" - -msgid "Javascript url ignored" -msgstr "Url Javascript ignorée" - -msgid "could not split the mail adress" -msgstr "impossible de partager l'adresse e-mail" - -msgid "invalid log option '%s'" -msgstr "option de log invalide '%s'" - +#, fuzzy msgid "" -"USAGE\tlinkchecker [options] file_or_url...\n" +"USAGE\tlinkchecker [options] file-or-url...\n" "\n" "OPTIONS\n" "-a, --anchors\n" @@ -227,33 +171,35 @@ msgid "" " Print additional debugging information.\n" "-e regex, --extern=regex\n" " Assume urls that match the given expression as extern.\n" -" Only intern HTTP links are checked recursively.\n" +" Only intern HTML links are checked recursively.\n" "-f file, --config=file\n" " Use file as configuration file. LinkChecker first searches\n" " ~/.linkcheckerrc and then /etc/linkcheckerrc\n" " (under Windows \\linkcheckerrc).\n" -"-F name, --file-output=name\n" -" Same as output, but write to a file linkchecker-out..\n" +"-F type, --file-output=type\n" +" Same as output, but write to a file linkchecker-out..\n" " If the file already exists, it is overwritten. You can specify\n" " this option more than once. There is no file output for the\n" " blacklist logger. Default is no file output.\n" "-i regex, --intern=regex\n" -" Assume urls that match the given expression as intern.\n" +" Assume URLs that match the given expression as intern.\n" +" LinkChecker descends recursively only to intern URLs, not to " +"extern.\n" "-h, --help\n" " Help me! Print usage information for this program.\n" "-l, --allowdeny\n" " Swap checking order to intern/extern. Default checking order\n" " is extern/intern.\n" -"-N, --nntp-server\n" +"-N server, --nntp-server=server\n" " Specify an NNTP server for 'news:...' links. Default is the\n" " environment variable NNTP_SERVER. If no host is given,\n" " only the syntax of the link is checked.\n" -"-o name, --output=name\n" -" Specify output as %s.\n" -" Default is text.\n" +"-o type, --output=type\n" +" Specify output type as %s.\n" +" Default type is text.\n" "-p pwd, --password=pwd\n" -" Try given password for HTML and FTP authorization.\n" -" Default is 'guest@'. See -u.\n" +" Try password pwd for HTML and FTP authorization.\n" +" Default password is 'guest@'. See also -u.\n" "-q, --quiet\n" " Quiet operation. This is only useful with -F.\n" "-r depth, --recursion-level=depth\n" @@ -267,8 +213,8 @@ msgid "" " Generate no more than num threads. Default number of threads is 5.\n" " To disable threading specify a non-positive number.\n" "-u name, --user=name\n" -" Try given username for HTML and FTP authorization.\n" -" Default is 'anonymous'. See -p.\n" +" Try username name for HTML and FTP authorization.\n" +" Default is 'anonymous'. See also -p.\n" "-V, --version\n" " Print version and exit.\n" "-v, --verbose\n" @@ -281,9 +227,9 @@ msgid "" " any content of the checked link.\n" " This applies of course only to pages which are valid, so we can\n" " get their content.\n" -" You can use this to check for pages that contain some form of\n" -" error message, for example 'This page has moved' or\n" -" 'Oracle Application Server error'.\n" +" Use this to check for pages that contain some form of error\n" +" message, for example 'This page has moved' or 'Oracle\n" +" Application Server error'.\n" " This option implies -w.\n" msgstr "" "USAGE\tlinkchecker [options] fichier_ou_url...\n" @@ -361,6 +307,64 @@ msgstr "" " 'Oracle Application Server error'.\n" " This option implies -w.\n" +msgid "Got no answer from FTP server" +msgstr "N'obtient pas de réponse du serveur FTP" + +msgid "found mail host %s" +msgstr "trouvé un hôte de messagerie %s" + +msgid "Javascript url ignored" +msgstr "Url Javascript ignorée" + +msgid "could not split the mail adress" +msgstr "impossible de partager l'adresse e-mail" + +msgid "invalid log option '%s'" +msgstr "option de log invalide '%s'" + +msgid "Error: %s\n" +msgstr "Erreur: %s\n" + +#, fuzzy +msgid "" +"NOTES\n" +"o LinkChecker assumes an http:// resp. ftp:// link when a commandline URL\n" +" starts with 'www.' resp. 'ftp.'\n" +" You can also give local files as arguments.\n" +"o If you have your system configured to automatically establish a\n" +" connection to the internet (e.g. with diald), it will connect when\n" +" checking links not pointing to your local host.\n" +" Use the -s and -i options to prevent this.\n" +"o Javascript links are currently ignored.\n" +"o If your platform does not support threading, LinkChecker uses -t0.\n" +"o You can supply multiple user/password pairs in a configuration file.\n" +"o Cookies are not accepted by LinkChecker.\n" +"o To use proxies set $http_proxy, $https_proxy on Unix or Windows.\n" +" On a Mac use the Internet Config.\n" +"o When checking 'news:' links the given NNTP host doesn't need to be the\n" +" same as the host of the user browsing your pages!\n" +msgstr "" +"NOTES\n" +"o LinkChecker suppose qu'il s'agit de liens http:// et respectivement ftp:// " +"lorsque l'URL\n" +" de la ligne de commande commence par 'www.' et respectivement 'ftp.'\n" +" Vous pouvez aussi donner des fichiers locaux comme arguments\n" +"o Si votre systeme est configuré pour établir automatiquement une\n" +" connexion à internet (e.g. with diald), il se connectera lorsque les " +"liens\n" +" contrôlés ne pointent pas vers votre réseau local\n" +" Utiliser l'option -s et -i pour l'éviter (voir EXEMPLES)\n" +"o Les liens Javascript sont actuellement ignorés\n" +"o If your platform does not support threading, LinkChecker uses -t0\n" +"o Vous pouvez fournir plusieurs couples 'utilisateurs'/'mots de passe' dans " +"le fichier de configuration\n" +"o Les cookies ne sont pas acceptés par LinkChecker\n" +"o To use proxies set $http_proxy, $https_proxy on Unix or Windows.\n" +" On a Mac use the Internet Config.\n" +"o Lors d'un contrôle des liens 'news:', l'hôte NNTP spécifié n'a pas besoin " +"d'être le\n" +" même que l'hôte de l'utilisateur qui parcourt vos pages!\n" + msgid "Articel number %s found" msgstr "" diff --git a/setup.py b/setup.py index 45d61e26..855794d0 100755 --- a/setup.py +++ b/setup.py @@ -17,14 +17,14 @@ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. from types import StringType -from distutils.core import setup +from distutils.core import setup, DEBUG from distutils.dist import Distribution from distutils.extension import Extension from distutils.command.install import install from distutils.command.config import config from distutils import util from distutils.file_util import write_file -import os +import os,string class LCInstall(install): @@ -46,6 +46,24 @@ class LCInstall(install): data.append('outputs = %s' % pformat(self.get_outputs())) self.distribution.create_conf_file(self.install_lib, data) + # sent a patch for this, but here it is for compatibility + def dump_dirs (self, msg): + if DEBUG: + from distutils.fancy_getopt import longopt_xlate + print msg + ":" + for opt in self.user_options: + opt_name = opt[0] + if opt_name[-1] == "=": + opt_name = opt_name[0:-1] + if self.negative_opt.has_key(opt_name): + opt_name = string.translate(self.negative_opt[opt_name], + longopt_xlate) + val = not getattr(self, opt_name) + else: + opt_name = string.translate(opt_name, longopt_xlate) + val = getattr(self, opt_name) + print " %s: %s" % (opt_name, val) + class LCConfig(config): user_options = config.user_options + [ @@ -55,25 +73,37 @@ class LCConfig(config): "directories to search for SSL library files"), ] + def initialize_options (self): config.initialize_options(self) self.ssl_include_dirs = None self.ssl_library_dirs = None + def finalize_options(self): # we have some default include and library directories + # suitable for each platform self.basic_finalize_options() if self.ssl_include_dirs is None: - self.ssl_include_dirs = ['/usr/include/openssl', - '/usr/local/include/openssl'] + if os.name=='posix': + self.ssl_include_dirs = ['/usr/include/openssl', + '/usr/local/include/openssl'] + else: + # dont know default incldirs on other platforms + self.ssl_include_dirs = [] if self.ssl_library_dirs is None: - self.ssl_library_dirs = ['/usr/lib', - '/usr/local/lib'] + if os.name=='posix': + self.ssl_library_dirs = ['/usr/lib', '/usr/local/lib'] + else: + # dont know default libdirs on other platforms + self.ssl_library_dirs = [] + def basic_finalize_options(self): """fix up types of option values""" # this should be in config.finalize_options # I submitted a patch + # ok, its in 1.0.1, but I still leave this here for compatibility if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] elif type(self.include_dirs) is StringType: @@ -153,8 +183,8 @@ myname = "Bastian Kleineidam" myemail = "calvin@users.sourceforge.net" setup (name = "LinkChecker", - version = "1.2.8", - description = "check links of HTML pages", + version = "1.2.9", + description = "check HTML documents for broken links", author = myname, author_email = myemail, maintainer = myname, @@ -162,24 +192,20 @@ setup (name = "LinkChecker", url = "http://linkchecker.sourceforge.net/", licence = "GPL", long_description = -"""With LinkChecker you can check your HTML documents for broken links. - -Features: ---------- +"""LinkChecker features o recursive checking -o multithreaded -o output can be colored or normal text, HTML, SQL, CSV or a sitemap +o multithreading +o output in colored or normal text, HTML, SQL, CSV or a sitemap graph in GML or XML. o HTTP/1.1, HTTPS, FTP, mailto:, news:, nntp:, Gopher, Telnet and local - file links are supported. - Javascript links are currently ignored -o restrict link checking with regular expression filters for URLs + file links support +o restriction of link checking with regular expression filters for URLs o proxy support -o give username/password for HTTP and FTP authorization +o username/password authorization for HTTP and FTP o robots.txt exclusion protocol support o i18n support -o command line interface -o (Fast)CGI web interface (requires HTTP server) +o a command line interface +o a (Fast)CGI web interface (requires HTTP server) """, distclass = LCDistribution, cmdclass = {'config': LCConfig, 'install': LCInstall}, @@ -191,5 +217,11 @@ o (Fast)CGI web interface (requires HTTP server) ['locale/fr/LC_MESSAGES/linkcheck.mo']), ('share/linkchecker',['linkchecker.bat', 'linkcheckerrc',]), + ('share/linkchecker', + ['lc.cgi','lc.fcgi','lc.sz_fcgi']), + ('share/linkchecker/lconline', + ['lconline/leer.html','lconline/index.html', + 'lconline/lc_cgi.html']), + ('man/man1', ['linkchecker.1']), ], )