pfs.h
资源名称:socks5.zip [点击查看]
上传用户:sddyfurun
上传日期:2007-01-04
资源大小:525k
文件大小:14k
源码类别:
代理服务器
开发平台:
Unix_Linux
- /*
- * Copyright (c) 1989, 1990, 1991 by the University of Washington
- *
- * For copying and distribution information, please see the file
- * <copyright.h>.
- */
- #include <copyright.h>
- #include <sys/types.h>
- #include <netinet/in.h>
- #ifndef NULL
- # define NULL 0
- #endif /* NULL */
- #define PFS_RELEASE "Beta.4.2E"
- #define PFS_SW_ID "B42E"
- /* moved up for vdir_init */
- #define ZERO(p) bzero((char *)(p), sizeof(*(p)))
- /* General Definitions */
- #define MAX_PTXT_LEN 1250 /* Max length of PTEXT structure */
- #define MAX_PTXT_HDR 32 /* Max offset for start */
- #define P_ERR_STRING_SZ 100 /* Size of error string */
- #define MAX_VPATH 1024 /* Max length of virtual pathname */
- /* Definition of text structure used to pass text around */
- struct ptext {
- int length; /* Length of text (from start) */
- char *start; /* Start of text */
- char dat[MAX_PTXT_LEN+2*MAX_PTXT_HDR];/* The data itself */
- unsigned long mbz; /* ZERO to catch runaway strings */
- struct ptext *previous; /* Previous element in list */
- struct ptext *next; /* Next element in linked list */
- int seq; /* Sequence Number */
- };
- typedef struct ptext *PTEXT;
- typedef struct ptext PTEXT_ST;
- /* Request structure: maintains information about server requests */
- struct preq {
- int cid; /* Connection ID */
- short priority; /* Connection priority */
- int pf_priority; /* Priority assigned by pri_func */
- int recv_tot; /* Total # of packets received */
- int trns_tot; /* Total # of packets to transmit */
- struct ptext *cpkt; /* Current packet being filled in */
- struct ptext *recv; /* Received packets */
- struct ptext *trns; /* Transmitted packets */
- int rcvd_thru; /* Received all packets through # */
- struct preq *previous; /* Previous element in list */
- struct preq *next; /* Next element in linked list */
- struct sockaddr_in fromto; /* Sender/Destination */
- };
- typedef struct preq *PREQ;
- typedef struct preq PREQ_ST;
- /* Definition of structure containing information on virtual link */
- struct vlink {
- int dontfree; /* Flag: don't free this link */
- char *name; /* Component of path name */
- char linktype; /* L = Link, U = Union, N= Native */
- int expanded; /* Has a union link been expanded */
- char *type; /* Type of object pointed to */
- struct vlink *filters; /* Filters associated with link */
- struct vlink *replicas; /* Replicas (* see comment below) */
- char *hosttype; /* Type of hostname */
- char *host; /* Files physical location */
- char *nametype; /* Type of filename */
- char *filename; /* System level filename */
- long version; /* Version number of destination */
- long f_magic_no; /* File's magic number */
- struct acl *acl; /* ACL for link */
- long dest_exp; /* Expiration for dest of link */
- long link_exp; /* Expiration of link itself */
- char *args; /* Arguments if this is a filter */
- struct pattrib *lattrib; /* Attributes associated w/ link */
- struct pfile *f_info; /* Info to be assoicated w/ file */
- struct vlink *previous; /* Previous elt in linked list */
- struct vlink *next; /* Next element in linked list */
- };
- typedef struct vlink *VLINK;
- typedef struct vlink VLINK_ST;
- /* * Note that vlink->replicas is not really a list of replicas of the */
- /* object. Instead, it is a list of the objects returned during name */
- /* resolution that share the same name as the current object. Such */
- /* an object should only be considered a replica if it also shares */
- /* the same non-zero magic number. */
- /* Definition of structure continiaing virtual directory information */
- struct vdir {
- int version; /* Version of local directory fmt */
- int inc_native; /* Include the native directory */
- long magic_no; /* Magic number of current file */
- struct acl *dacl; /* Default acl for links in dir */
- struct pfile *f_info; /* Directory file info */
- struct vlink *links; /* The directory entries */
- struct vlink *lastlink; /* Last directory entry */
- struct vlink *ulinks; /* The entries for union links */
- struct vdir *previous; /* Previous element in linked list */
- struct vdir *next; /* Next element in linked list */
- };
- typedef struct vdir *PVDIR;
- typedef struct vdir VDIR_ST;
- /* Initialize directory */
- #define vdir_init(dir) ZERO(dir)
- /* XXX: was
- dir->version = 0; dir->inc_native = 0;
- dir->magic_no = 0; dir->f_info = NULL;
- dir->links = NULL; dir->lastlink = NULL;
- dir->ulinks = NULL; dir->dacl = NULL;
- dir->previous = NULL; dir->next = NULL;
- */
- #define vdir_copy(d1,d2) d2->version = d1->version;
- d2->inc_native = d1->inc_native;
- d2->magic_no = d1->magic_no;
- d2->f_info = d1->f_info;
- d2->links = d1->links;
- d2->lastlink = d1->lastlink;
- d2->ulinks = d1->ulinks;
- d2->dacl = d1->dacl;
- d2->previous = d1->previous;
- d2->next = d1->next;
- /* Values of ->inc_native in vdir structure */
- #define VDIN_REALONLY -1 /* Include native files, but not . and .. */
- #define VDIN_NONATIVE 0 /* Do not include files from native directory */
- #define VDIN_INCLNATIVE 1 /* Include files from native directory */
- #define VDIN_NATIVEONLY 2 /* All entries in directory are from native dir */
- #define VDIN_PSEUDO 3 /* Directory is not real */
- /* Definition of structure containing information on a specific file */
- union avalue {
- char *ascii; /* Character string */
- struct vlink *link; /* A link */
- };
- struct pattrib {
- char precedence; /* Precedence for link attribute */
- char *aname; /* Name of the attribute */
- char *avtype; /* Type of the attribute value */
- union avalue value; /* Attribute Value */
- struct pattrib *previous; /* Previous element in linked list */
- struct pattrib *next; /* Next element in linked list */
- };
- typedef struct pattrib *PATTRIB;
- typedef struct pattrib PATTRIB_ST;
- #define ATR_PREC_OBJECT 'O' /* Authoritative answer for object */
- #define ATR_PREC_LINK 'L' /* Authoritative answer for link */
- #define ATR_PREC_CACHED 'C' /* Object info cached w/ link */
- #define ATR_PREC_REPLACE 'R' /* From link (replaces O) */
- #define ATR_PREC_ADD 'A' /* From link (additional value) */
- /* **** Incomplete **** */
- struct pfile {
- int version; /* Version of local finfo format */
- long f_magic_no; /* Magic number of current file */
- long exp; /* Expiration date of timeout */
- long ttl; /* Time to live after reference */
- long last_ref; /* Time of last reference */
- struct vlink *forward; /* List of forwarding pointers */
- struct vlink *backlinks; /* Partial list of back links */
- struct pattrib *attributes; /* List of file attributes */
- struct pfile *previous; /* Previous element in linked list */
- struct pfile *next; /* Next element in linked list */
- };
- typedef struct pfile *PFILE;
- typedef struct pfile PFILE_ST;
- /* Definition of structure contining an access control list entry */
- struct acl {
- int acetype; /* Access Contol Entry type */
- char *atype; /* Authentication type */
- char *rights; /* Rights */
- char *principals; /* Authorized principals */
- struct archie_restrict *restrictions; /* Restrictions on use */
- struct acl *previous; /* Previous elt in linked list */
- struct acl *next; /* Next element in linked list */
- };
- typedef struct acl *ACL;
- typedef struct acl ACL_ST;
- #define ACL_NONE 0 /* Nobody authorized by ths entry */
- #define ACL_DEFAULT 1 /* System default */
- #define ACL_SYSTEM 2 /* System administrator */
- #define ACL_OWNER 3 /* Directory owner */
- #define ACL_DIRECTORY 4 /* Same as directory */
- #define ACL_ANY 5 /* Any user */
- #define ACL_AUTHENT 6 /* Authenticated principal */
- #define ACL_LGROUP 7 /* Local group */
- #define ACL_GROUP 8 /* External group */
- #define ACL_ASRTHOST 10 /* Check host and asserted userid */
- #define ACL_TRSTHOST 11 /* ASRTHOST from privileged port */
- /* Definition of structure contining access restrictions */
- /* for future extensions */
- struct archie_restrict {
- struct acl *previous; /* Previous elt in linked list */
- struct acl *next; /* Next element in linked list */
- };
- /* Definitions for send_to_dirsrv */
- #define CLIENT_DIRSRV_TIMEOUT 4 /* time between retries */
- #define CLIENT_DIRSRV_BACKOFF(x) (2 * x) /* Backoff algorithm */
- #define CLIENT_DIRSRV_RETRY 3 /* retry this many times */
- /* Definitions for rd_vlink and rd_vdir */
- #define SYMLINK_NESTING 10 /* Max nesting depth for sym links */
- /* Definition fo check_acl */
- #define ACL_NESTING 10 /* Max depth for ACL group nesting */
- /* Flags for mk_vdir */
- #define MKVD_LPRIV 1 /* Minimize privs for creator in new ACL */
- /* Flags for get_vdir */
- #define GVD_UNION 0 /* Do not expand union links */
- #define GVD_EXPAND 1 /* Expand union links locally */
- #define GVD_LREMEXP 3 /* Request remote expansion of local links */
- #define GVD_REMEXP 7 /* Request remote expansion of all links */
- #define GVD_VERIFY 8 /* Only verify args are for a directory */
- #define GVD_FIND 16 /* Stop expanding when match is found */
- #define GVD_ATTRIB 32 /* Request attributes from remote server */
- #define GVD_NOSORT 64 /* Do not sort links when adding to dir */
- /* Flags for rd_vdir */
- #define RVD_UNION GVD_UNION
- #define RVD_EXPAND GVD_EXPAND
- #define RVD_LREMEXP GVD_LREMEXP
- #define RVD_REMEXP GVD_REMEXP
- #define RVD_DFILE_ONLY GVD_VERIFY /* Only return ptr to dir file */
- #define RVD_FIND GVD_FIND
- #define RVD_ATTRIB GVD_ATTRIB
- #define RVD_NOSORT GVD_NOSORT
- #define RVD_NOCACHE 128
- /* Flags for add_vlink */
- #define AVL_UNION 1 /* Link is a union link */
- /* Flags for vl_insert */
- #define VLI_NOCONFLICT 0 /* Do not insert links w/ conflicting names */
- #define VLI_ALLOW_CONF 1 /* Allow links with conflicting names */
- #define VLI_NOSORT 2 /* Allow conflicts and don't sort */
- /* Flags for mapname */
- #define MAP_READWRITE 0 /* Named file to be read and written */
- #define MAP_READONLY 1 /* Named file to be read only */
- /* Flags for modify_acl */
- #define MACL_NOSYSTEM 0x01
- #define MACL_NOSELF 0x02
- #define MACL_DEFAULT 0x08
- #define MACL_SET 0x0C
- #define MACL_INSERT 0x14
- #define MACL_DELETE 0x10
- #define MACL_ADD 0x1C
- #define MACL_SUBTRACT 0x18
- #define MACL_LINK 0x00
- #define MACL_DIRECTORY 0x20
- #define MACL_OBJECT 0x60
- #define MACL_INCLUDE 0x40
- #define MACL_OP (MACL_DEFAULT|MACL_SET|MACL_INSERT|
- MACL_DELETE|MACL_ADD|MACL_SUBTRACT)
- #define MACL_OTYPE (MACL_LINK|MACL_DIRECTORY|MACL_OBJECT|MACL_INCLUDE)
- /* Flags for dsrdir */
- #define DSRD_ATTRIBUTES 0x1 /* Fill in attributes for links */
- /* Access methods returned by Pget_am */
- #define P_AM_ERROR 0
- #define P_AM_FTP 1
- #define P_AM_AFTP 2 /* Anonymous FTP */
- #define P_AM_NFS 4
- #define P_AM_KNFS 8 /* Kerberized NFS */
- #define P_AM_AFS 16
- /* Return codes */
- #define PSUCCESS 0
- #define PFAILURE 255
- /* Hush up warnings. */
- void vllfree();
- /* Procedures in libpfs.a */
- char *pget_wdhost(), *pget_wdfile(), *pget_wd(), *pget_hdhost();
- char *pget_hdfile(), *pget_hd(), *pget_rdhost(), *pget_rdfile();
- char *pget_dhost(), *pget_dfile(), *pget_vsname(), *nlsindex();
- char *sindex(), *strtok(), *nxtline(), *unquote(), *stcopy();
- char *stcopyr(), *readheader(), *month_sname();
- long asntotime();
- void procquery();
- PTEXT ptalloc();
- PTEXT dirsend();
- void ptfree();
- void ptlfree();
- PREQ pralloc();
- PREQ get_next_request();
- VLINK rd_slink();
- VLINK rd_vlink();
- VLINK vl_delete();
- VLINK vlalloc();
- VLINK vlcopy();
- void vlfree();
- int vl_comp();
- int vl_equal();
- int vl_insert();
- int ul_insert();
- PFILE pfalloc();
- PATTRIB parse_attribute();
- PATTRIB atalloc();
- PATTRIB pget_at();
- void atfree();
- void atlfree();
- ACL acalloc();
- ACL get_acl();
- void stfree();
- int get_vdir();
- int wcmatch();
- int scan_error();
- /* Miscellaneous useful definitions */
- #ifndef TRUE
- #define TRUE 1
- #endif
- #ifndef FALSE
- #define FALSE 0
- #endif
- #define AUTHORIZED 1
- #define NOT_AUTHORIZED 0
- #define NEG_AUTHORIZED -1
- #ifndef NULL
- #define NULL 0
- #endif
- #define FAILED -1