/*
* $LynxId: HTAccess.h,v 1.20 2008/01/03 00:24:16 tom Exp $
* HTAccess: Access manager for libwww
* ACCESS MANAGER
*
* This module keeps a list of valid protocol (naming scheme) specifiers with
* associated access code. It allows documents to be loaded given various
* combinations of parameters. New access protocols may be registered at any
* time.
*
* Part of the libwww library .
*
*/
#ifndef HTACCESS_H
#define HTACCESS_H
/* Definition uses:
*/
#include <HTAnchor.h>
#include <HTFormat.h>
#ifdef __cplusplus
extern "C" {
#endif
extern char *use_this_url_instead;
extern int redirection_attempts;
/* Return codes from load routines:
*
* These codes may be returned by the protocol modules,
* and by the HTLoad routines.
* In general, positive codes are OK and negative ones are bad.
*/
/*
Default Addresses
These control the home page selection. To mess with these for normal browses is asking
for user confusion.
*/
#define LOGICAL_DEFAULT "WWW_HOME" /* Defined to be the home page */
#ifndef PERSONAL_DEFAULT
#define PERSONAL_DEFAULT "WWW/default.html" /* in home directory */
#endif
#ifndef LOCAL_DEFAULT_FILE
#define LOCAL_DEFAULT_FILE "/usr/local/lib/WWW/default.html"
#endif
/* If one telnets to a www access point,
it will look in this file for home page */
#ifndef REMOTE_POINTER
#define REMOTE_POINTER "/etc/www-remote.url" /* can't be file */
#endif
/* and if that fails it will use this. */
#ifndef REMOTE_ADDRESS
#define REMOTE_ADDRESS "http://www.w3.org/remote.html" /* can't be file */
#endif
/* If run from telnet daemon and no -l specified, use this file:
*/
#ifndef DEFAULT_LOGFILE
#define DEFAULT_LOGFILE "/usr/adm/www-log/www-log"
#endif
/* If the home page isn't found, use this file:
*/
#ifndef LAST_RESORT
#define LAST_RESORT "http://www.w3.org/default.html"
#endif
/*
Flags which may be set to control this module
*/
#ifdef NOT
extern int HTDiag; /* Flag: load source as plain text */
#endif /* NOT */
extern char *HTClientHost; /* Name or number of telnetting host */
extern FILE *HTlogfile; /* File to output one-liners to */
extern BOOL HTSecure; /* Disable security holes? */
extern BOOL HTPermitRedir; /* Special flag for getfile() */
extern HTStream *HTOutputStream; /* For non-interactive, set this */
extern HTFormat HTOutputFormat; /* To convert on load, set this */
/* Check for proxy override. override_proxy()
*
* Check the no_proxy environment variable to get the list
* of hosts for which proxy server is not consulted.
*
* no_proxy is a comma- or space-separated list of machine
* or domain names, with optional :port part. If no :port
* part is present, it applies to all ports on that domain.
*
* Example:
* no_proxy="cern.ch,some.domain:8001"
*
* Use "*" to override all proxy service:
* no_proxy="*"
*/
extern BOOL override_proxy(const char *addr);
/*
Load a document from relative name
ON ENTRY,
relative_name The relative address of the file to be accessed.
here The anchor of the object being searched
ON EXIT,
returns YES Success in opening file
NO Failure
*/
extern BOOL HTLoadRelative(const char *relative_name,
HTParentAnchor *here);
/*
Load a document from absolute name
ON ENTRY,
addr The absolute address of the document to be accessed.
filter_it if YES, treat document as HTML
ON EXIT,
returns YES Success in opening document
NO Failure
*/
extern BOOL HTLoadAbsolute(const DocAddress *addr);
/*
Load a document from absolute name to a stream
ON ENTRY,
addr The absolute address of the document to be accessed.
filter_it if YES, treat document as HTML
ON EXIT,
returns YES Success in opening document
NO Failure
Note: This is equivalent to HTLoadDocument
*/
extern BOOL HTLoadToStream(const char *addr, BOOL filter_it,
HTStream *sink);
/*
Load if necessary, and select an anchor
ON ENTRY,
destination The child or parent anchor to be loaded.
ON EXIT,
returns YES Success
returns NO Failure
*/
extern BOOL HTLoadAnchor(HTAnchor * destination);
/*
Make a stream for Saving object back
ON ENTRY,
anchor is valid anchor which has previously been loaded
ON EXIT,
returns 0 if error else a stream to save the object to.
*/
extern HTStream *HTSaveStream(HTParentAnchor *anchor);
/*
Search
Performs a search on word given by the user. Adds the search words to the end of the
current address and attempts to open the new address.
ON ENTRY,
*keywords space-separated keyword list or similar search list
here The anchor of the object being searched
*/
extern BOOL HTSearch(const char *keywords, HTParentAnchor *here);
/*
Search Given Indexname
Performs a keyword search on word given by the user. Adds the keyword to the end of
the current address and attempts to open the new address.
ON ENTRY,
*keywords space-separated keyword list or similar search list
*indexname is name of object search is to be done on.
*/
extern BOOL HTSearchAbsolute(const char *keywords,
char *indexname);
/*
Register an access method
*/
typedef struct _HTProtocol {
const char *name;
int (*load) (const char *full_address,
HTParentAnchor *anchor,
HTFormat format_out,
HTStream *sink);
HTStream *(*saveStream) (HTParentAnchor *anchor);
} HTProtocol;
extern BOOL HTRegisterProtocol(HTProtocol * protocol);
/*
Generate the anchor for the home page
*/
/*
As it involves file access, this should only be done once when the program first runs.
This is a default algorithm -- browser don't HAVE to use this.
*/
extern HTParentAnchor *HTHomeAnchor(void);
/*
Return Host Name
*/
extern const char *HTHostName(void);
/*
For registering protocols supported by Lynx
*/
extern void LYRegisterLynxProtocols(void);
extern void LYUCPushAssumed(HTParentAnchor *anchor);
extern int LYUCPopAssumed(void);
extern BOOL using_proxy; /* Are we using an NNTP proxy? */
#ifdef __cplusplus
}
#endif
#endif /* HTACCESS_H */