blob: c1e5fb94de5c899d95098b5612fd968811c2eeb3 (
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
128
129
130
131
132
133
|
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
# remove systemd service symlink
rm -f '/usr/lib/systemd/system/anki-sync-server.service'
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() {
local _config_dir_="/etc/nginx"
local _pacsave_="${_config_dir_}/nginx.conf.pacsave"
local _config_="${_config_dir_}/nginx.conf"
local _sites_available_dir_="${_config_dir_}/sites-available"
local _sites_enabled_dir_="${_config_dir_}/sites-enabled"
local _nginx_plugins_dir_="/opt/anki-sync-server/plugins/nginx"
! [ -f "${_sites_available_dir_}/anki-sync-server-http" ] && \
sudo \
ln -s "${_nginx_plugins_dir_}/anki-sync-server-http" \
"${_sites_available_dir_}/anki-sync-server-http"
! [ -f "${_sites_available_dir_}/anki-sync-server-https" ] && \
sudo \
ln -s "${_nginx_plugins_dir_}/anki-sync-server-https" \
"${_sites_available_dir_}/anki-sync-server-https"
if (grep "include[[:space:]]\+/etc/nginx/sites-enabled" "${_config_}" --quiet); then
echo "nginx config aleady uses sites-enabled"
else
sudo cp "${_config_}" "${_pacsave_}"
sudo awk -f "${_nginx_plugins_dir_}/append.awk" \
"${_pacsave_}" > "${_config_}"
# defaulting to use http
! [ -f "${_sites_enabled_dir_}/anki-sync-server-http" ] && \
sudo \
ln -s "${_sites_available_dir_}/anki-sync-server-http" \
"${_sites_enabled_dir_}/anki-sync-server-http"
fi
}
|