mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-25 03:17:13 +00:00
112 lines
3.3 KiB
Bash
112 lines
3.3 KiB
Bash
|
#! @shell@ -e
|
||
|
|
||
|
# The following lines create/update the HylaFAX spool directory:
|
||
|
# Subdirectories/files with persistent data are kept,
|
||
|
# other directories/files are removed/recreated,
|
||
|
# mostly from the template spool
|
||
|
# directory in the HylaFAX package.
|
||
|
|
||
|
# This block explains how the spool area is
|
||
|
# derived from the spool template in the HylaFAX package:
|
||
|
#
|
||
|
# + capital letter: directory; file otherwise
|
||
|
# + P/p: persistent directory
|
||
|
# + F/f: directory with symlinks per entry
|
||
|
# + T/t: temporary data
|
||
|
# + S/s: single symlink into package
|
||
|
# |
|
||
|
# | + u: change ownership to uucp:uucp
|
||
|
# | + U: ..also change access mode to user-only
|
||
|
# | |
|
||
|
# archive P U
|
||
|
# bin S
|
||
|
# client T u (client connection info)
|
||
|
# config S
|
||
|
# COPYRIGHT s
|
||
|
# dev T u (maybe some FIFOs)
|
||
|
# docq P U
|
||
|
# doneq P U
|
||
|
# etc F contains customized config files!
|
||
|
# etc/hosts.hfaxd f
|
||
|
# etc/xferfaxlog f
|
||
|
# info P u (database of called devices)
|
||
|
# log P u (communication logs)
|
||
|
# pollq P U
|
||
|
# recvq P u
|
||
|
# sendq P U
|
||
|
# status T u (modem status info files)
|
||
|
# tmp T U
|
||
|
|
||
|
|
||
|
shopt -s dotglob # if bash sees "*", it also includes dot files
|
||
|
lnsym () { ln --symbol "$@" ; }
|
||
|
lnsymfrc () { ln --symbolic --force "$@" ; }
|
||
|
cprd () { cp --remove-destination "$@" ; }
|
||
|
update () { install --owner=@faxuser@ --group=@faxgroup@ "$@" ; }
|
||
|
|
||
|
|
||
|
## create/update spooling area
|
||
|
|
||
|
update --mode=0750 -d "@spoolAreaPath@"
|
||
|
cd "@spoolAreaPath@"
|
||
|
|
||
|
persist=(archive docq doneq info log pollq recvq sendq)
|
||
|
|
||
|
# remove entries that don't belong here
|
||
|
touch dummy # ensure "*" resolves to something
|
||
|
for k in *
|
||
|
do
|
||
|
keep=0
|
||
|
for j in "${persist[@]}" xferfaxlog clientlog faxcron.lastrun
|
||
|
do
|
||
|
if test "$k" == "$j"
|
||
|
then
|
||
|
keep=1
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
if test "$keep" == "0"
|
||
|
then
|
||
|
rm --recursive "$k"
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# create persistent data directories (unless they exist already)
|
||
|
update --mode=0700 -d "${persist[@]}"
|
||
|
chmod 0755 info log recvq
|
||
|
|
||
|
# create ``xferfaxlog``, ``faxcron.lastrun``, ``clientlog``
|
||
|
touch clientlog faxcron.lastrun xferfaxlog
|
||
|
chown @faxuser@:@faxgroup@ clientlog faxcron.lastrun xferfaxlog
|
||
|
|
||
|
# create symlinks for frozen directories/files
|
||
|
lnsym --target-directory=. "@hylafax@"/spool/{COPYRIGHT,bin,config}
|
||
|
|
||
|
# create empty temporary directories
|
||
|
update --mode=0700 -d client dev status
|
||
|
update -d tmp
|
||
|
|
||
|
|
||
|
## create and fill etc
|
||
|
|
||
|
install -d "@spoolAreaPath@/etc"
|
||
|
cd "@spoolAreaPath@/etc"
|
||
|
|
||
|
# create symlinks to all files in template's etc
|
||
|
lnsym --target-directory=. "@hylafax@/spool/etc"/*
|
||
|
|
||
|
# set LOCKDIR in setup.cache
|
||
|
sed --regexp-extended 's|^(UUCP_LOCKDIR=).*$|\1'"'@lockPath@'|g" --in-place setup.cache
|
||
|
|
||
|
# etc/{xferfaxlog,lastrun} are stored in the spool root
|
||
|
lnsymfrc --target-directory=. ../xferfaxlog
|
||
|
lnsymfrc --no-target-directory ../faxcron.lastrun lastrun
|
||
|
|
||
|
# etc/hosts.hfaxd is provided by the NixOS configuration
|
||
|
lnsymfrc --no-target-directory "@userAccessFile@" hosts.hfaxd
|
||
|
|
||
|
# etc/config and etc/config.${DEVID} must be copied:
|
||
|
# hfaxd reads these file after locking itself up in a chroot
|
||
|
cprd --no-target-directory "@globalConfigPath@" config
|
||
|
cprd --target-directory=. "@modemConfigPath@"/*
|