headers/AppleShareFileServerRegistry.h

/*
    File:       AppleShareFileServerRegistry.h
 
    Contains:   Registry records for file server.
 
    Version:    Technology: AppleShare IP 6.0
                Release:    ASIP 6.0 SDK - Friday, July 10, 1998 11:16:11 AM
 
    Copyright:  © 1995-1998 by Apple Computer, Inc., all rights reserved.
 
    Bugs?:      For bug reports, consult the following page on
                the World Wide Web:
 
                    http://developer.apple.com/bugreporter/
 
*/
#ifndef __APPLESHAREFILESERVERREGISTRY__
#define __APPLESHAREFILESERVERREGISTRY__
 
#ifndef __FILES__
#include <Files.h>
#endif
 
 
 
#if PRAGMA_ONCE
#pragma once
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
#if PRAGMA_IMPORT
#pragma import on
#endif
 
#if PRAGMA_STRUCT_ALIGN
    #pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
    #pragma pack(2)
#endif
 
typedef unsigned char                   Str42[43];
typedef unsigned char                   Str199[200];
 
enum {
    kFSCreatorSig               = FOUR_CHAR_CODE('ipwf')        /* Attribute Signature for FileServer Service object attributes*/
};
 
 
enum {
                                                                /* Attribute Types for FileServer Service object each attribute */
    kFSServerInfoType           = FOUR_CHAR_CODE('srvr'),       /* ServerInfo*/
    kFSServerGreetingType       = FOUR_CHAR_CODE('gret'),
    kFSCacheInfoType            = FOUR_CHAR_CODE('cach'),
    kFSIdleUserInfoType         = FOUR_CHAR_CODE('idle'),
    kFSAdminInfoType            = FOUR_CHAR_CODE('admm'),
    kFSHTTPInfoType             = FOUR_CHAR_CODE('http'),
    kFSHTTPFolderType           = FOUR_CHAR_CODE('hfol'),
    kFSHTTPFileType             = FOUR_CHAR_CODE('hfil'),
    kFSHTTPPluginType           = FOUR_CHAR_CODE('hplg'),
    kFSMultiWebDirSig           = FOUR_CHAR_CODE('webd'),       /* Multi Domain signature */
    kFSHTTPWebDirCountType      = FOUR_CHAR_CODE('domC'),
    kFSHTTPWebDirType           = FOUR_CHAR_CODE('0000'),
    kFSFTPInfoType              = FOUR_CHAR_CODE('ftp '),
    kFSAFPInfoType              = FOUR_CHAR_CODE('afp '),
    kFSSMBInfoType              = FOUR_CHAR_CODE('smb '),
    kFSMimeType                 = FOUR_CHAR_CODE('mime'),
    kFSIPFilterType             = FOUR_CHAR_CODE('filt'),
    kFSMaxConnection            = FOUR_CHAR_CODE('maxc')        /* max concurrent connection */
};
 
/* Service specific advanced options */
 
enum {
    kFSAFPTCPSig                = FOUR_CHAR_CODE('afpt'),       /* AFP over TCP port signature */
    kFSSMBInfoSig               = FOUR_CHAR_CODE('smb '),       /* SMB over TCP port signature */
    kFSHTTPInfoSig              = FOUR_CHAR_CODE('http'),       /* HTTP port signature */
    kFSFTPInfoSig               = FOUR_CHAR_CODE('ftp ')        /* FTP port signature */
};
 
 
enum {
    kFSPortType                 = FOUR_CHAR_CODE('port'),       /* port number (UInt16) for all services */
    kFSSessionTimeout           = FOUR_CHAR_CODE('ssto')        /* session timeouts for all services (SInt32) */
};
 
 
enum {
    kFSTransferTimeout          = FOUR_CHAR_CODE('trto'),       /* transfer timeout for kFSFTPInfoSig (SInt32) */
    kFSKeepAliveTimeout         = FOUR_CHAR_CODE('kato'),       /* keep alive timeout for kFSHTTPInfoSig (SInt32) */
    kFSCGITimeout               = FOUR_CHAR_CODE('cgto'),       /* CGI timeout for kFSHTTPInfoSig (SInt32) */
    kFSLogSize                  = FOUR_CHAR_CODE('logs')        /* Log Size - for kFSHTTPInfoSig (UInt32) */
};
 
/* UAM information... */
 
enum {
    kFSUAMInfoSig               = FOUR_CHAR_CODE('uam ')        /* Signature */
};
 
 
 
enum {
    kFSNumUAMS                  = FOUR_CHAR_CODE('uamc'),       /* Number of UAMs (UInt32) */
    kFSUAMNames                 = FOUR_CHAR_CODE('uams')        /* UAM names (buffer of packed pascal strings) */
};
 
/*----------------------------------------------------------*/
/*      Server Preference - General Information             */
/*----------------------------------------------------------*/
 
enum {
    kFSServerInfoVersion        = 1
};
 
 
 
struct ServerInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt16                          fileServerVersion;          /* version# for file server */
    SInt16                          userActivityLimit;          /* user activity limit in % */
    SInt16                          maxLogin;                   /* maximum client connections */
    SInt16                          maxGuestAccess;             /* maximum number of guest and anonymous logins */
    SInt16                          shutdownMinutes;            /* minutes until shutdown */
};
typedef struct ServerInfo               ServerInfo;
/*----------------------------------------------------------*/
/*      Server Preference - connect info & Login Greeting   */
/*----------------------------------------------------------*/
 
enum {
    kFSServerGreetingVersion    = 1
};
 
 
struct ServerGreeting {
    SInt16                          versionNumber;              /* version number for this record */
    Str199                          greetingMsg;                /* login greeting */
};
typedef struct ServerGreeting           ServerGreeting;
/*----------------------------------------------------------*/
/*      Server Preference - Additional Cache Information    */
/*----------------------------------------------------------*/
 
enum {
    kFSCacheInfoVersion         = 1
};
 
 
struct CacheInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt32                          cacheForOthers;             /* memory to be reserved for other applications */
};
typedef struct CacheInfo                CacheInfo;
/*----------------------------------------------------------*/
/*      Server Preference - Idle User Information           */
/*----------------------------------------------------------*/
/* idleFlag bits. */
 
enum {
    kFSIdleDisconEnabledMask    = 0x0001,                       /* allow to disconnect idle users */
    kFSDisconExeptOpenFilesMask = 0x0002,                       /* if true, disconnect except open file users */
    kFSDisconSuperUserMask      = 0x0004,                       /* if true, isconnect idel super users */
    kFSDisconNormalUserMask     = 0x0008,                       /* if true, disconnect idle normal users */
    kFSDisconGuestUserMask      = 0x0010                        /* if true, disconnect idle guest users */
};
 
 
 
enum {
    kFSIdleUserInfoVersion      = 1
};
 
 
struct IdleUserInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt16                          idleFlag;                   /* see above */
    SInt16                          idleMinute;                 /* max # of minute for idle users */
    Str199                          disconnectMsg;              /* disconnect message */
};
typedef struct IdleUserInfo             IdleUserInfo;
/*----------------------------------------------------------*/
/*      Server Preference - Serial Miscelleneous Information*/
/*----------------------------------------------------------*/
 
enum {
    kFSAdminInfoVersion         = 1
};
 
 
struct AdminInfo {
    SInt16                          versionNumber;              /* version number for this record */
    Str31                           namePhone;                  /* name & phone */
    Str31                           organization;               /* organization */
};
typedef struct AdminInfo                AdminInfo;
/*----------------------------------------------------------*/
/*      Server Preference - HTTP Information                */
/*----------------------------------------------------------*/
/* Flag bits.   */
 
enum {
    kFSMultiDomainEnabled       = 0x0001,                       /* allow multi-domain support */
    kFSDirListingEnabled        = 0x0002,                       /* allow directory listing */
    kFSAutoShareWebFolder       = 0x0004                        /* if on, web folder share point at start up; server will clear */
};
 
 
enum {
    kFSHTTPServiceInfoVersion   = 2
};
 
 
enum {
    kFSHTTPEnable               = 1,                            /* enable HTTP*/
    kFSHTTPLogEnable            = 1,                            /* enable HTTP Log*/
    kFSHTTPGuestEnable          = 1                             /* guest turned on for HTTP*/
};
 
 
struct HTTPServiceInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt16                          enabled;                    /* Enable HTTP, 1-enable, 0-not enable */
    SInt16                          status;
    SInt16                          logEnabled;                 /* Enable HTTP Log, 1-enable, 0-not enable */
    SInt16                          maxConnect;                 /* HTTP maximum client connections */
    SInt16                          guestEnabled;               /* Whether guest allowed for HTTP */
    SInt32                          flag;                       /* new field for ASIP6 */
};
typedef struct HTTPServiceInfo          HTTPServiceInfo;
 
struct HTTPFolderRec {
    SInt16                          vRefNum;                    /* HTML folder path vRefNum*/
    Str27                           volumeName;                 /* HTML folder path volume name*/
    UInt32                          volCreateDate;              /* HTML folder path volume creation date*/
    SInt32                          dirID;                      /* HTML folder path DirID*/
};
typedef struct HTTPFolderRec            HTTPFolderRec;
 
struct HTTPFileRec {
    Str255                          partialPath;                /* partial path to HTML file starting from the Web folder */
};
typedef struct HTTPFileRec              HTTPFileRec;
 
enum {
    kFSPlugInEnable             = 1,                            /* enable Plug-ins*/
    kFSPlugInLoggingEnable      = 1                             /* enable Plug-in logging*/
};
 
 
struct HTTPPlugInsRec {
    SInt16                          pluginEnable;               /* Plug-ins,  1-enable, 0-not enable */
    SInt16                          loggingEnable;              /* Plug-in logging, 1-enable, 0-not enable */
    SInt32                          memSize;                    /* Plug-in memory allocation */
    FSSpec                          preProcessorSpec;           /* Preprocessor plugin spec */
    FSSpec                          postProcessorSpec;          /* Postprocessor plugin spec */
    FSSpec                          errorSpec;                  /* Error plugin spec */
};
typedef struct HTTPPlugInsRec           HTTPPlugInsRec;
 
struct VolSpec {
    Str32                           vName;                      /* pascal string because FSSpec uses pascal string*/
    UInt8                           filler;
    SInt16                          vRefNum;
    UInt32                          vCreateDate;
};
typedef struct VolSpec                  VolSpec;
 
enum {
    kFSHTTPWebDirCountRecVersion = 1
};
 
 
struct HTTPWebDirCountRec {
    UInt16                          count;                      /* How many HTTPWebDirRec there are */
    SInt16                          version;                    /* Version of the HTTPWebDirRec */
};
typedef struct HTTPWebDirCountRec       HTTPWebDirCountRec;
 
enum {
    kFSWebFolderEnabled         = 1
};
 
 
enum {
    kFSAddressTypeDNS           = 0,
    kFSAddressTypeIPAddress     = 1
};
 
 
struct HTTPWebDirRec {
    UInt16                          enabled;                    /* 1 == this web folder enabled, 0 == disabled */
    SInt16                          addressType;                /* Indicates how to decode addressText: 0 == DNS name, 1 = IP Address (in ASCII) */
    Str63                           addressText;                /* Domain name or IP address (in ASCII) of this web folder (pascal str) See addressType field */
    UInt16                          portNumber;                 /* Port number for this web folder's IP address (InetPort) */
    VolSpec                         volSpec;                    /* Volume specifier */
    SInt32                          dirID;                      /* Dir ID of this web folder */
};
typedef struct HTTPWebDirRec            HTTPWebDirRec;
/*----------------------------------------------------------*/
/*      Server Preference - FTP Information                 */
/*----------------------------------------------------------*/
 
enum {
    kFSFTPServiceInfoVersion    = 1
};
 
 
struct FTPServiceInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt16                          ftpEnable;                  /* Enable FTP, 1-enable, 0-not enable */
    SInt16                          status;
    SInt16                          ftpAnonymousEnable;         /* Enable Anonymous Login, 1-enable, 0-not enable */
};
typedef struct FTPServiceInfo           FTPServiceInfo;
/*----------------------------------------------------------*/
/*      Server Preference - AFP Information                 */
/*----------------------------------------------------------*/
 
enum {
    kFSAFPServiceInfoVersion    = 1
};
 
 
struct AFPServiceInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt16                          afpOverTCPIPEnable;         /* Enable AFP over TCPIP, 1-enable, 0-not enable */
    SInt16                          afpOverTCPIPStatus;
    SInt16                          afpOverATalkEnable;         /* Enable AFP over AppleTalk, 1-enable, 0-not enable */
};
typedef struct AFPServiceInfo           AFPServiceInfo;
/*----------------------------------------------------------*/
/*      Server Preference - SMB Information                 */
/*----------------------------------------------------------*/
 
enum {
    kFSSMBServiceInfoVersion    = 1
};
 
 
enum {
    kFSSMBMaxNetBIOSnameLength  = 15,
    kFSSMBMaxWorkGroupLength    = 15,
    kFSSMBMaxCommentLength      = 43,
    kFSSMBWINSAddressLength     = 62
};
 
 
struct SMBServiceInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt16                          smbEnable;                  /* Enable SMB, 1-enable, 0-not enable */
    SInt16                          status;
    SInt16                          guestEnabled;               /* Whether guest allowed for SMB */
    Str31                           netBIOSname;                /* Server name. Limited to 15 bytes */
    Str31                           workGroup;                  /* NETBIOS group name.  Limited to 15 bytes */
    Str63                           comment;                    /* ASCII comment for the server. Limited to 43 bytes */
    SInt16                          winsEnabled;                /* Enable WINS, 1-enable, 0-not enable */
    Str63                           winsAddress;                /* WINS IP address */
 
};
typedef struct SMBServiceInfo           SMBServiceInfo;
/*----------------------------------------------------------------------*/
/*      MIME type changes - Notify server SrvrMimeTypePrefs has changed */
/*----------------------------------------------------------------------*/
 
enum {
    kFSMimeTypeChangedVersion   = 1
};
 
 
struct MimeTypeChanged {
    SInt16                          version;                    /* version number for this record */
    SInt32                          counter;                    /* no meaning, just for notification */
};
typedef struct MimeTypeChanged          MimeTypeChanged;
/*----------------------------------------------------------*/
/*      IPFilter Options - Advanced option for filtering IP */
/*----------------------------------------------------------*/
 
enum {
    kFSIPFilterAllow            = 1
};
 
/* Structure of individual filters */
 
struct IPFilterStruct {
    SInt16                          allow;                      /* 0 for disallow, 1 for allow */
    UInt32                          highIPBytes;
    UInt32                          lowIPBytes;
};
typedef struct IPFilterStruct           IPFilterStruct;
 
enum {
    kFSMaxIPFilters             = 10
};
 
 
struct IPFilterInfo {
    SInt16                          versionNumber;              /* version number for this record */
    SInt16                          numFilters;                 /* numberOfIPFilters */
    IPFilterStruct                  filters[10];
};
typedef struct IPFilterInfo             IPFilterInfo;
/*----------------------------------------------------------*/
/*      Max connection information                          */
/*----------------------------------------------------------*/
/*
   tags for this record are type:kFSCreatorSig  and attribute:kFSMacConnextion
   this value will be used if the max connection number encoded in serial number is 250
*/
 
enum {
    kFSServerMaxConnectionInfoVersion = 1
};
 
 
struct ServerMaxConnectionInfo {
    SInt16                          version;
    SInt32                          flag;                       /* reserved for future use */
    SInt32                          maxConnection;
};
typedef struct ServerMaxConnectionInfo  ServerMaxConnectionInfo;
/* ------------------------------------------------------------------------------------------------- */
 
#if PRAGMA_STRUCT_ALIGN
    #pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
    #pragma pack()
#endif
 
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
 
#ifdef __cplusplus
}
#endif
 
#endif /* __APPLESHAREFILESERVERREGISTRY__ */