netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
globals.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 1990,1993 Regents of The University of Michigan.
3 * All Rights Reserved. See COPYRIGHT.
4 */
5
6#ifndef AFPD_GLOBALS_H
7#define AFPD_GLOBALS_H 1
8
9#include <grp.h>
10#ifdef HAVE_INIPARSER_INIPARSER_H
11#include <iniparser/iniparser.h>
12#else
13#include <iniparser.h>
14#endif
15#include <netdb.h>
16#include <stdbool.h>
17#include <sys/param.h>
18#include <sys/types.h>
19
20#include <netatalk/at.h>
21#include <atalk/afp.h>
22#include <atalk/compat.h>
23#include <atalk/uam.h>
24#include <atalk/unicode.h>
25
26#ifdef WITH_DTRACE
27#include <atalk/afp_dtrace.h>
28#else
29/* List of empty dtrace macros */
30#define AFP_AFPFUNC_START(a,b)
31#define AFP_AFPFUNC_DONE(a, b)
32#define AFP_CNID_START(a)
33#define AFP_CNID_DONE()
34#define AFP_READ_START(a)
35#define AFP_READ_DONE()
36#define AFP_WRITE_START(a)
37#define AFP_WRITE_DONE()
38#endif
39
40/* #define DOSFILELEN 12 */ /* Type1, DOS-compat*/
41#define MACFILELEN 31 /* Type2, HFS-compat */
42#define UTF8FILELEN_EARLY 255 /* Type3, early Mac OS X 10.0-10.4.? */
43/* #define UTF8FILELEN_NAME_MAX 765 */ /* Type3, 10.4.?- , getconf NAME_MAX */
44/* #define UTF8FILELEN_SPEC 0xFFFF */ /* Type3, spec on document */
45/* #define HFSPLUSFILELEN 510 */ /* HFS+ spec, 510byte = 255codepoint */
46
47#define MAXUSERLEN 256
48#define MAXOPTLEN 256
49
50#define DEFAULT_MAX_DIRCACHE_SIZE 8192
51
52/* Directory cache validation settings */
53#define DEFAULT_DIRCACHE_VALIDATION_FREQ 1 /* Validate every Nth access (default 1 for backward compatibility) */
54#define DEFAULT_DIRCACHE_METADATA_WINDOW 300 /* Metadata change window (seconds) */
55#define DEFAULT_DIRCACHE_METADATA_THRESHOLD 60 /* Metadata change threshold (seconds) */
56
57#define OPTION_DEBUG (1 << 0)
58#define OPTION_CLOSEVOL (1 << 1)
59#define OPTION_SERVERNOTIF (1 << 2)
60#define OPTION_NOSENDFILE (1 << 3)
61#define OPTION_VETOMSG (1 << 4) /* whether to send an AFP message for veto file access */
62#define OPTION_AFP_READ_LOCK (1 << 5) /* whether to do AFP spec conforming read locks (default: no) */
63#define OPTION_ANNOUNCESSH (1 << 6)
64#define OPTION_UUID (1 << 7)
65#define OPTION_ACL2MACCESS (1 << 8)
66#define OPTION_NOZEROCONF (1 << 9)
67#define OPTION_ACL2MODE (1 << 10)
68#define OPTION_SHARE_RESERV (1 << 11) /* whether to use Solaris fcntl F_SHARE locks */
69#define OPTION_DBUS_AFPSTATS (1 << 12) /* whether to run dbus thread for afpstats */
70#define OPTION_SPOTLIGHT (1 << 13) /* whether to initialize Spotlight support */
71#define OPTION_SPOTLIGHT_VOL (1 << 14) /* whether spotlight shall be enabled by default for volumes */
72#define OPTION_RECVFILE (1 << 15)
73#define OPTION_SPOTLIGHT_EXPR (1 << 16) /* whether to allow Spotlight logic expressions */
74#define OPTION_DDP (1 << 17) /* whether to allow connections via appletalk/ddp */
75#define OPTION_VALID_SHELLCHECK (1 << 18) /* whether to check for valid login shell */
76
77#define PASSWD_NONE 0
78#define PASSWD_SET (1 << 0)
79#define PASSWD_NOSAVE (1 << 1)
80#define PASSWD_ALL (PASSWD_SET | PASSWD_NOSAVE)
81
82#define IS_AFP_SESSION(obj) (((obj)->dsi && (obj)->dsi->serversock == -1) || ((obj)->Type))
83
84struct DSI;
85
86#define AFPOBJ_TMPSIZ (MAXPATHLEN)
87
89 time_t mtime;
90 int loaded;
91};
92
94 int connections; /* Maximum number of possible AFP connections */
97 int flags;
99 int sleep; /* Maximum time allowed to sleep (in tickles) */
100 int disconnected; /* Maximum time in disconnected state (in tickles) */
101 int fce_fmodwait; /* number of seconds FCE file mod events are put on hold */
102 int fce_sendwait; /* number of ms to wait between udp event sending */
103 unsigned int tcp_sndbuf, tcp_rcvbuf;
104 unsigned char passwdbits, passwdminlen;
106 int dsireadbuf; /* scale factor for sizefof(dsi->buffer) = server_quantum * dsireadbuf */
107 char *hostname;
108 char *zone;
109#ifndef NO_DDP
111#endif
115 char *uampath, *fqdn;
117 char *uuidconf;
119 char *uamlist;
121 unsigned char signature[16];
127 mode_t umask;
128 mode_t save_mask;
129 gid_t admingid;
135 /* default value for winbind authentication */
138 char *logfile;
151 uint64_t sparql_limit;
152};
153
154typedef struct AFPObj {
157 int proto;
158 const void *signature;
159 struct DSI *dsi;
160 void *handle;
161#ifndef NO_DDP
162 int fd;
164 char aspstatus[1400];
165#endif /* NO_DDP */
167 char *Obj, *Type, *Zone;
168 dictionary *iniconfig;
170 /* to prevent confusion, only use these in afp_* calls */
172 void *uam_cookie; /* cookie for uams */
174 uid_t uid; /* client login user id */
175 uid_t euid; /* client effective process user id */
176 int ipc_fd; /* anonymous PF_UNIX socket for IPC with afpd parent */
177 gid_t *groups;
181 /* Functions */
182 void (*logout)(void);
183 void (*exit)(int);
184 int (*reply)(void *, int);
185 int (*attention)(void *, AFPUserBytes);
190 struct sl_ctx *sl_ctx;
192
193/* typedef for AFP functions handlers */
194typedef int (*AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf,
195 size_t *rbuflen);
196
197/* Global variables */
198extern AFPObj *AFPobj;
199extern int afp_version;
200extern int afp_errno;
201extern unsigned char nologin;
202extern struct dir *curdir;
203extern char getwdbuf[];
204extern struct afp_options default_options;
205extern const char *Cnid_srv;
206extern const char *Cnid_port;
207
208extern int get_afp_errno(const int param);
209extern void afp_options_init(struct afp_options *);
210extern void afp_options_parse_cmdline(AFPObj *obj, int ac, char **av);
211extern int setmessage(const char *);
212extern void readmessage(AFPObj *);
213
214#ifndef NO_DDP
215extern void afp_over_asp(AFPObj *);
216#endif /* NO_DDP */
217extern void afp_over_dsi(AFPObj *);
219#endif /* globals.h */
AFPObj * AFPobj
Definition afp_dsi.c:66
static size_t rbuflen
Definition afpfunc_helpers.c:45
static char rbuf[rbufsize]
Definition afpfunc_helpers.c:44
struct dir * curdir
Definition directory.c:71
int afp_errno
Definition directory.c:59
unsigned char nologin
Definition etc/afpd/main.c:46
struct afp_options default_options
int setmessage(const char *)
Definition messages.c:37
#define MAXUSERLEN
Definition globals.h:47
int(* AFPCmd)(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
Definition globals.h:194
#define AFPOBJ_TMPSIZ
Definition globals.h:86
int get_afp_errno(const int param)
Definition directory.c:483
void readmessage(AFPObj *)
Definition messages.c:47
void afp_options_parse_cmdline(AFPObj *obj, int ac, char **av)
Definition afp_options.c:176
void afp_options_init(struct afp_options *)
void afp_over_dsi(AFPObj *)
Definition afp_dsi.c:492
int afp_version
const char * Cnid_port
const char * Cnid_srv
void afp_over_dsi_sighandlers(AFPObj *obj)
Definition afp_dsi.c:402
char getwdbuf[]
void afp_over_asp(AFPObj *)
Definition afp_asp.c:150
uint16_t AFPUserBytes
Definition include/atalk/afp.h:30
static AFPObj obj
Definition netatalk.c:62
Definition globals.h:154
char aspstatus[1400]
Definition globals.h:164
char * Type
Definition globals.h:167
int fd
Definition globals.h:162
void(* exit)(int)
Definition globals.h:183
char newtmp[AFPOBJ_TMPSIZ+1]
Definition globals.h:171
char * Zone
Definition globals.h:167
int fce_version
Definition globals.h:186
int(* reply)(void *, int)
Definition globals.h:184
char * fce_ign_directories
Definition globals.h:188
int ngroups
Definition globals.h:178
uid_t uid
Definition globals.h:174
int cnx_max
Definition globals.h:180
char * fce_notify_script
Definition globals.h:189
struct session_info sinfo
Definition globals.h:173
char * cmdlineconfigfile
Definition globals.h:155
int statuslen
Definition globals.h:163
char oldtmp[AFPOBJ_TMPSIZ+1]
Definition globals.h:171
const void * signature
Definition globals.h:158
struct afp_options options
Definition globals.h:166
char username[MAXUSERLEN]
Definition globals.h:169
char * Obj
Definition globals.h:167
void * uam_cookie
Definition globals.h:172
void(* logout)(void)
Definition globals.h:182
char * fce_ign_names
Definition globals.h:187
uid_t euid
Definition globals.h:175
int cnx_cnt
Definition globals.h:180
int cmdlineflags
Definition globals.h:156
int ipc_fd
Definition globals.h:176
int afp_version
Definition globals.h:179
gid_t * groups
Definition globals.h:177
void * handle
Definition globals.h:160
dictionary * iniconfig
Definition globals.h:168
struct DSI * dsi
Definition globals.h:159
struct sl_ctx * sl_ctx
Definition globals.h:190
int proto
Definition globals.h:157
int(* attention)(void *, AFPUserBytes)
Definition globals.h:185
Definition include/atalk/dsi.h:52
Definition globals.h:93
unsigned int tcp_sndbuf
Definition globals.h:103
charset_t maccharset
Definition globals.h:126
uid_t force_uid
Definition globals.h:131
char * logconfig
Definition globals.h:137
unsigned char signature[16]
Definition globals.h:121
char * configfile
Definition globals.h:114
char * uampath
Definition globals.h:115
char * guest
Definition globals.h:118
gid_t force_gid
Definition globals.h:133
char * signatureopt
Definition globals.h:120
char * cnid_mysql_db
Definition globals.h:149
char * fqdn
Definition globals.h:115
char * zone
Definition globals.h:108
struct afp_volume_name volfile
Definition globals.h:150
char * logfile
Definition globals.h:138
char * uuidconf
Definition globals.h:117
int disconnected
Definition globals.h:100
gid_t admingid
Definition globals.h:129
int volnamelen
Definition globals.h:134
char * Cnid_srv
Definition globals.h:113
bool log_us_timestamp
Definition globals.h:139
char * servername
Definition globals.h:142
char * cnid_mysql_host
Definition globals.h:146
int tickleval
Definition globals.h:95
int sleep
Definition globals.h:99
char * k5keytab
Definition globals.h:122
char * hostname
Definition globals.h:107
char * addomain
Definition globals.h:136
unsigned char passwdminlen
Definition globals.h:104
bool force_user
Definition globals.h:130
char * extmapfile
Definition globals.h:118
char * listen
Definition globals.h:112
int timeout
Definition globals.h:96
char * sigconffile
Definition globals.h:116
int fce_fmodwait
Definition globals.h:101
char * Cnid_port
Definition globals.h:113
int flags
Definition globals.h:97
char * port
Definition globals.h:112
size_t k5principal_buflen
Definition globals.h:123
char * cnid_mysql_pw
Definition globals.h:148
int dsireadbuf
Definition globals.h:106
int dircachesize
Definition globals.h:98
char * k5service
Definition globals.h:122
charset_t unixcharset
Definition globals.h:126
struct at_addr ddpaddr
Definition globals.h:110
char * cnid_mysql_user
Definition globals.h:147
bool force_group
Definition globals.h:132
int connections
Definition globals.h:94
char * keyfile
Definition globals.h:118
mode_t umask
Definition globals.h:127
char * k5principal
Definition globals.h:124
char * volcodepage
Definition globals.h:125
char * maccodepage
Definition globals.h:125
char * legacyicon
Definition globals.h:140
int fce_sendwait
Definition globals.h:102
char * mimicmodel
Definition globals.h:141
char * uamlist
Definition globals.h:119
char * loginmesg
Definition globals.h:118
uint32_t server_quantum
Definition globals.h:105
unsigned char passwdbits
Definition globals.h:104
uint64_t sparql_limit
Definition globals.h:151
char * ignored_attr
Definition globals.h:144
char * passwdfile
Definition globals.h:118
char * unixcodepage
Definition globals.h:125
char * ntdomain
Definition globals.h:136
char * k5realm
Definition globals.h:122
char * adminauthuser
Definition globals.h:143
char * ntseparator
Definition globals.h:136
unsigned int tcp_rcvbuf
Definition globals.h:103
int splice_size
Definition globals.h:145
mode_t save_mask
Definition globals.h:128
char * interfaces
Definition globals.h:112
Definition globals.h:88
int loaded
Definition globals.h:90
time_t mtime
Definition globals.h:89
Definition at.h:68
Definition include/atalk/directory.h:62
Definition config.c:56
Definition uam.h:69
charset_t
Definition unicode.h:68