⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pfs.h

📁 sock5代理服务器源代码
💻 H
字号:
/* * 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -