/* * $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 #include #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 */