summarylogtreecommitdiffstats
path: root/anki-sync-server.install
blob: b6c13482b559d5acd98330e378a5634653ce1525 (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
post_install() {
  # create user and set ownership
  useradd -d /opt/anki-sync-server -r -s /sbin/nologin anki-sync-server
  chown -R anki-sync-server /opt/anki-sync-server
  chgrp -R anki-sync-server /opt/anki-sync-server

  # install prerequisites as stated on the website
  echo "installing python packages as anki-sync-server user..."
  sudo -u anki-sync-server pip install -r /opt/anki-sync-server/requirements.txt --user --no-warn-script-location

  append_nginx_config

  # link systemd service file
  ln -s /opt/anki-sync-server/plugins/systemd/anki-sync-server.service /usr/lib/systemd/system/
  systemctl enable anki-sync-server
  systemctl start anki-sync-server

  # post installation instructions
  echo "==============================================="
  echo "Check the manpage for post-install instructions"
  echo "==============================================="
}

post_remove(){
  # stop service (and remove systemd files)
  systemctl stop anki-sync-server
  systemctl disable anki-sync-server
  echo "Executing systemctl daemon-reload"
  systemctl daemon-reload

  # remove user (& group)
  getent passwd anki-sync-server &>/dev/null && userdel anki-sync-server || true
  getent group anki-sync-server &>/dev/null && groupdel anki-sync-server || true

  echo "==================================================================="
  echo "rm -rf /opt/anki-sync-server to remove the database and cache files"
  echo "==================================================================="
}

pre_upgrade(){
  echo "stopping anki-sync-server.service..."
  sudo systemctl stop anki-sync-server.service

  cd "/opt/anki-sync-server"

  local _auth_="auth.db"
  local _coll_="collections"
  local _sess_="session.db"

  if [ -f "${_auth_}" ]; then
    sudo mv -v "${_auth_}" "${_auth_}.BAK"
  fi

  if [ -d "${_coll_}" ]; then
    sudo mv -v "${_coll_}" "${_coll_}.BAK"
  fi

  if [ -f "${_sess_}" ]; then
    sudo mv -v "${_sess_}" "${_sess_}.BAK"
  fi
}

post_upgrade(){
  # install prerequisites as stated on the website
  echo "installing python packages as anki-sync-server user..."
  sudo -u anki-sync-server pip install -r /opt/anki-sync-server/requirements.txt --user

  append_nginx_config

  cd "/opt/anki-sync-server"

  local _auth_="auth.db"
  local _coll_="collections"
  local _sess_="session.db"

  if [ -f "${_auth_}.BAK" ]; then
    sudo mv -v "${_auth_}.BAK" "${_auth_}"
  fi

  if [ -d "${_coll_}.BAK" ]; then
    sudo mv -v "${_coll_}.BAK" "${_coll_}"
  fi

  if [ -f "${_sess_}.BAK" ]; then
    sudo mv -v "${_sess_}.BAK" "${_sess_}"
  fi

  sudo chown -R anki-sync-server /opt/anki-sync-server
  sudo chgrp -R anki-sync-server /opt/anki-sync-server

  echo "reloading systemd daemon..."
  sudo systemctl daemon-reload
  echo "starting anki-sync-server.service..."
  sudo systemctl start anki-sync-server
  echo "restarting nginx..."
  sudo systemctl restart nginx
}

function append_nginx_config() {
  # append nginx config to nginx config file
  echo "appending nginx server config to /etc/nginx/nginx.conf"
  local _config_dir_="/etc/nginx/"
  local _pacsave_="${_config_dir_}/nginx.conf.pacsave"
  local _config_="${_config_dir_}/nginx.conf"

  if (grep "anki-sync-server-request-unchunker" "${_config_}" --quiet); then
    echo "nginx config aleady updated!"
  else
    sudo cp "${_config_}" "${_pacsave_}"
    sudo awk -f /opt/anki-sync-server/plugins/nginx/append.awk \
      "${_pacsave_}" > "${_config_}"
  fi
}