summarylogtreecommitdiffstats
path: root/hylafax.install
blob: bce1df69bc2aebd5af88a9b307411718a8933776 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
_hyhome='/var/spool/hylafax'
_hyfax='/usr/lib/fax'
#_hyuser='fax'
_hyuser='uucp'
_hygroup='uucp'

_print_install() {
  echo -e '\n'
  echo 'Run faxsetup to configure and be sure to set...'
  echo '  The device to configure is usually ttyS0, ttyUSB0, or ttyACM0'
  echo '  The number of pages to accept to more than 25'
  echo '  The country code and area code'
  echo '  The Fax Class to 1 or 1.0' # I can find no modem reliable at Class 2*
  echo '  Most other defaults are OK'
  echo -e '\n'
}

_print_remove() {
  echo -e '\n\n'
  echo "You may manually remove ${_hyhome} and ${_hyfax} if you do not need anything."
  echo 'You may also remove any aliases added to /etc/mail/aliases.'
  echo -e '\n'
}

post_install() {
  set -u
  #groupadd -g 14 "${_hygroup}" &>/dev/null
  useradd -u 10 -g "${_hygroup}" -d "${_hyhome}" -s '/bin/false' "${_hyuser}" &>/dev/null
  #useradd -u 69 -g 'daemon' -d '/' -s '/bin/false' 'fax' &>/dev/null
  post_upgrade
  #usermod -d '/' "${_hyuser}" &>/dev/null
  _print_install
  /usr/share/libalpm/scripts/hylafax-ps2afm.sh build
  mandb -q
  set +u
}

# define _clean_or_copy_doit() to tell this what to do
_clean_or_copy() {
  for _outfile in 'archive' 'faxrcvd' 'notify' 'pollrcvd'; do
    _clean_or_copy_doit "${_hyhome}/bin/${_outfile}.hylafaxplus.default" "${_hyhome}/bin/${_outfile}"
  done
  for _outfile in ${_hyhome}/etc/*.default; do
    _clean_or_copy_doit "${_outfile}" "$(expr "${_outfile}" : '^\(.\+\).default$')"
  done
}

post_upgrade() {
  set -u
  /usr/bin/sh "${_hyhome}/bin/_install_chown.sh"
  # Only some of the files and folders are chown
  chown "${_hyuser}:${_hygroup}" "${_hyhome}"/{,archive,bin,client,config,dev,docq,doneq,etc}
  chown "${_hyuser}:${_hygroup}" "${_hyhome}"/{info,log,pollq,recvq,sendq,status,tmp}
  chown "${_hyuser}:${_hygroup}" "${_hyhome}/FIFO" "${_hyhome}"/FIFO.* 2> /dev/null
  # Don't overwrite existing configuration files.
  _clean_or_copy_doit() {
    cp -np "$1" "$2"
    chmod 'u+w' "$2"
  }
  _clean_or_copy

  cp -n /dev/null "${_hyhome}/etc/xferfaxlog" # This doesn't modify the timestamp of an existing file
  chown "${_hyuser}:${_hygroup}" "${_hyhome}/etc"/{hosts.hfaxd,lutRS18.pcf,xferfaxlog}
  # chown -R "${_hyuser}:${_hygroup}"\ "${_hyhome}/etc/templates"
  systemctl daemon-reload
  systemctl enable 'hylafax.timer'
  systemctl start 'hylafax.timer'
  # Now done by pacman hook
  #if [ ! -z "$(command -v 'avantfaxsetup.sh')" ]; then
  #  avantfaxsetup.sh 2 'install'
  #fi
  set +u
}

_pre_upgrade_fix_faxcover() {
  # Two fax covers in different places causes problems. Since I didn't notice this before I can't trash the covers
  if [ ! -L "${_hyfax}/faxcover.ps" ]; then
    if [ "$(md5sum < "${_hyfax}/faxcover.ps" | cut -d' ' -f1)" != '756ff1ce327f89d5651cdb99f02efc25' ]; then
      if [ "$(md5sum < "${_hyhome}/etc/cover.templ")" = "$(md5sum < "${_hyhome}/etc/cover.templ.default")" ]; then
        mv "${_hyfax}/faxcover.ps" "${_hyhome}/etc/cover.templ"
      else
        mv "${_hyfax}/faxcover.ps"{,.pacsave}
        echo "Modified faxcover.ps has been saved as ${_hyfax}/faxcover.ps.pacsave"
      fi
    fi
  fi
}

pre_upgrade() {
  set -u
  _pre_upgrade_fix_faxcover
  _clean_or_copy_doit() {
    # Delete unmodified files
    if [ "$(md5sum < "$1")" = "$(md5sum < "$2")" ]; then
      rm -f "$2"
    fi
  }
  _clean_or_copy
  set +u
}

pre_remove() {
  set -u
  pre_upgrade
  userdel "${_hyuser}" &>/dev/null
  ##groupdel "${_hygroup}" &>/dev/null
  # we could put this into pre_upgrade() but I'd rather let the admin restart when convenient.
  systemctl stop 'hfaxd.service'
  systemctl disable 'hfaxd.service'
  systemctl stop 'faxq.service'
  systemctl disable 'faxq.service'
  systemctl stop 'faxgetty@*.service'
  rm -f '/etc/systemd/system/multi-user.target.wants'/faxgetty@*.service # systemctl disable doesn't accept wildcards/PATTERN
  systemctl stop 'hylafax.timer'
  systemctl disable 'hylafax.timer'
  #rm -f "${_hyhome}/bin"/{pdf2fax,ps2fax} "${_hyhome}/dev/null"
  _print_remove
  /usr/share/libalpm/scripts/hylafax-ps2afm.sh destroy
  set +u
}

post_remove() {
  set -u
  systemctl daemon-reload
  mandb -q
  set +u
}