*/
SpoolDir HylaFAXServer::dirs[] = {
{ "/status/", false, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listStatus, &HylaFAXServer::listStatusFile,
&HylaFAXServer::nlstStatus, &HylaFAXServer::nlstUnixFile, },
{ "/sendq/", false, false, false, 0,
- HylaFAXServer::isVisibleSendQFile,
+ &HylaFAXServer::isVisibleSendQFile,
&HylaFAXServer::listSendQ, &HylaFAXServer::listSendQFile,
&HylaFAXServer::nlstSendQ, &HylaFAXServer::nlstSendQFile, },
{ "/doneq/", false, false, false, 0,
- HylaFAXServer::isVisibleSendQFile,
+ &HylaFAXServer::isVisibleSendQFile,
&HylaFAXServer::listSendQ, &HylaFAXServer::listSendQFile,
&HylaFAXServer::nlstSendQ, &HylaFAXServer::nlstSendQFile, },
{ "/docq/", false, true, true, 0,
- HylaFAXServer::isVisibleDocQFile,
+ &HylaFAXServer::isVisibleDocQFile,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/tmp/", false, true, true, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/log/", false, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/recvq/", false, false, true, 0,
- HylaFAXServer::isVisibleRecvQFile,
+ &HylaFAXServer::isVisibleRecvQFile,
&HylaFAXServer::listRecvQ, &HylaFAXServer::listRecvQFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/archive/", false, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/pollq/", false, true, true, 0,
- HylaFAXServer::isVisibleRecvQFile,
+ &HylaFAXServer::isVisibleRecvQFile,
&HylaFAXServer::listRecvQ, &HylaFAXServer::listRecvQFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/", false, false, false, 0,
- HylaFAXServer::isVisibleRootFile,
+ &HylaFAXServer::isVisibleRootFile,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/etc/", true, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/info/", false, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/bin/", true, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/config/", false, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
{ "/client/", true, false, false, 0,
- HylaFAXServer::isVisibletrue,
+ &HylaFAXServer::isVisibletrue,
&HylaFAXServer::listDirectory, &HylaFAXServer::listUnixFile,
&HylaFAXServer::nlstDirectory, &HylaFAXServer::nlstUnixFile, },
};
bool
HylaFAXServer::fileVisible(const SpoolDir& dir, const char* filename, const struct stat& sb)
{
- return (IS(PRIVILEGED) || (*dir.isVisibleFile)(filename, sb));
+ return (IS(PRIVILEGED) || (this->*dir.isVisibleFile)(filename, sb));
}
bool
HylaFAXServer::isVisibletrue(const char*, const struct stat&)
struct stat sb;
if (!FileCache::update(path | dp->d_name, sb))
continue;
- if ((*sd.isVisibleFile)(dp->d_name, sb)) {
+ if ((this->*sd.isVisibleFile)(dp->d_name, sb)) {
(this->*sd.listFile)(fd, sd, dp->d_name, sb);
fputs("\r\n", fd);
}
struct stat sb;
if (!FileCache::update(path | dp->d_name, sb))
continue;
- if ((*sd.isVisibleFile)(dp->d_name, sb)) {
+ if ((this->*sd.isVisibleFile)(dp->d_name, sb)) {
(this->*sd.nlstFile)(fd, sd, dp->d_name, sb);
fputs("\r\n", fd);
}
};
class SpoolDir;
+struct ParamProtection;
struct stat;
typedef struct tiff TIFF;
time_t lastTime; // time of last shutdown notification
time_t discTime; // time to disconnect service
time_t denyTime; // time to deny service
+ u_int jobProtection; // Protection to use on Jobs
/*
* User authentication and login-related state.
*/
SpoolDir* fileAccess(const char* path, int op, struct stat&);
bool fileVisible(const SpoolDir&, const char*, const struct stat&);
- static bool isVisibleRecvQFile(const char*, const struct stat&);
+ bool isVisibleRecvQFile(const char*, const struct stat&);
void listRecvQ(FILE* fd, const SpoolDir& sd, DIR* dir);
void listRecvQFile(FILE*, const SpoolDir&, const char*, const struct stat&);
- static bool isVisibleSendQFile(const char*, const struct stat&);
+ bool isVisibleSendQFile(const char*, const struct stat&);
void listSendQ(FILE* fd, const SpoolDir& sd, DIR* dir);
void listSendQFile(FILE*, const SpoolDir&, const char*, const struct stat&);
void nlstSendQ(FILE* fd, const SpoolDir& sd, DIR* dir);
void listStatusFile(FILE*, const SpoolDir&, const char*, const struct stat&);
void nlstStatus(FILE* fd, const SpoolDir& sd, DIR* dir);
- static bool isVisibletrue(const char*, const struct stat&);
- static bool isVisibleDocQFile(const char*, const struct stat&);
- static bool isVisibleRootFile(const char*, const struct stat&);
+ bool isVisibletrue(const char*, const struct stat&);
+ bool isVisibleDocQFile(const char*, const struct stat&);
+ bool isVisibleRootFile(const char*, const struct stat&);
void listDirectory(FILE* fd, const SpoolDir& sd, DIR* dir);
void listUnixFile(FILE*, const SpoolDir&, const char*, const struct stat&);
bool storAble; // unprivileged clients may STOR files
bool deleAble; // unprivileged clients may DELE files
ino_t ino; // directory inode number
- bool (*isVisibleFile)(const char*, const struct stat&);
+ bool (HylaFAXServer::*isVisibleFile)(const char*, const struct stat&);
void (HylaFAXServer::*listDirectory)(FILE*, const SpoolDir&, DIR*);
void (HylaFAXServer::*listFile)(FILE*, const SpoolDir&,
const char*, const struct stat&);
FileFmt string \s-1\fIsee below\fP\s+1 format string for file status results
IdleTimeout integer \s-1900\s+1 client idle timeout in seconds
JobFmt string \s-1\fIsee below\fP\s+1 format string for job status results
+JobProtection octal \s-10444\s+1 permissions for client access to jobs
KillTimeMap string \s-1\fIsee below\fP\s+1 mapping from service level to job kill time (\s-1SNPP\s+1)
LogFacility string \s-1daemon\s+1 \fIsyslog\fP facility name for tracing messages
MaxAdminAttempts integer \s-15\s+1 maximum admin attempts before disconnecting
M Notification e-mail address
N Desired use of private tagline (one-character symbol)
O Whether to use continuation cover page (one-character symbol)
-P # pages transmitted/total # pages to transmit
+ P # pages transmitted/total # pages to transmit
Q Client-specified minimum acceptable signalling rate
R Destination person (receiver)
-S Sender's identity
+ S Sender's identity
T Total # tries/maximum # tries
U Page chopping threshold (inches)
-V Job done operation
+ V Job done operation
W Communication identifier
X Job type (one-character symbol)
-Y Scheduled date and time
+ Y Scheduled date and time
Z Scheduled time in seconds since the UNIX epoch
a Job state (one-character symbol)
-b # consecutive failed tries
-c Client machine name
-d Total # dials
-e Public (external) format of dialstring
-f # consecutive failed dials
+ b # consecutive failed tries
+ c Client machine name
+ d Total # dials
+ e Public (external) format of dialstring
+ f # consecutive failed dials
g Group identifier
h Page chop handling (one-character symbol)
-i Current scheduling priority
-j Job identifier
-k Job kill time
-l Page length in mm
+ i Current scheduling priority
+ j Job identifier
+ k Job kill time
+ l Page length in mm
m Assigned modem
n E-mail notification handling (one-character symbol)
-o Job owner
+ o Job owner
p # pages transmitted
q Job retry time (MM::SS)
-r Document resolution in lines/inch
-s Job status information from last failure
-t Total # tries attempted
-u Maximum # tries
-v Client-specified dialstring
-w Page width in mm
-x Maximum # dials
-y Total # pages to transmit
-z Time to send job
-.fi
+ r Document resolution in lines/inch
+ s Job status information from last failure
+ t Total # tries attempted
+ u Maximum # tries
+ v Client-specified dialstring
+ w Page width in mm
+ x Maximum # dials
+ y Total # pages to transmit
+ z Time to send job
+ .fi
.IP
The default format string is ``%\-4j %3i %1a %6.6o %\-12.12e %5P %5D %7z %.25s''.
This string constrains each status line to be less than 80 characters.
that construct headers from the format string can constrain the width of
column title strings.
.TP 10
+.B JobProtection
+The permissions setting for viewing jobs in the \*(Fx queues. The
+default setting of ``0444'' allows all users to view all jobs in the send/done
+queues. The permissions copy unix filesystem permission, with the 3 sets
+being owner, admin, and others, instead of owner/group/other. The only
+permissions that are meaningful are read, because write permissions are
+controlled for the specific properties of the job. If a user doesn't have
+read permissions on the job, the job will not be visible to them. Useful
+settings are ``0444'' (for oao=r), ``0440'' (for oa=r), and ``0400'' (for o=r).
+.TP 10
.B KillTimeMap
The mapping from \s-1SNPP\s+1 service level (0-11) to job expiration time
(kill time).