shadowsocks-libev: add note on nftables set restriction
[feed/packages.git] / net / seafile-server / patches / 022-uci-conf.patch
1 --- a/common/seaf-utils.c
2 +++ b/common/seaf-utils.c
3 @@ -238,7 +238,12 @@ create_ccnet_rpc_client ()
4 SearpcNamedPipeClient *transport = NULL;
5 char *pipe_path = NULL;
6
7 - pipe_path = g_build_path ("/", seaf->ccnet_dir, CCNET_RPC_PIPE_NAME, NULL);
8 + char *socket_dir = g_strdup (g_getenv ("SEAFILE_UCI_SOCKET_DIR"));
9 + if (!socket_dir) {
10 + socket_dir = g_strdup (seaf->ccnet_dir);
11 + }
12 + pipe_path = g_build_path ("/", socket_dir, CCNET_RPC_PIPE_NAME, NULL);
13 + g_free (socket_dir);
14 transport = searpc_create_named_pipe_client(pipe_path);
15 g_free(pipe_path);
16 if (!transport)
17 --- a/controller/seafile-controller.c
18 +++ b/controller/seafile-controller.c
19 @@ -511,7 +511,10 @@ stop_services ()
20 static void
21 init_pidfile_path (SeafileController *ctl)
22 {
23 - char *pid_dir = g_build_filename (topdir, "pids", NULL);
24 + char *pid_dir = g_strdup (g_getenv ("SEAFILE_UCI_PID_DIR"));
25 + if (!pid_dir) {
26 + pid_dir = g_build_filename (topdir, "pids", NULL);
27 + }
28 if (!g_file_test(pid_dir, G_FILE_TEST_EXISTS)) {
29 if (g_mkdir(pid_dir, 0777) < 0) {
30 seaf_warning("failed to create pid dir %s: %s", pid_dir, strerror(errno));
31 @@ -523,6 +526,8 @@ init_pidfile_path (SeafileController *ct
32 ctl->pidfile[PID_SERVER] = g_build_filename (pid_dir, "seaf-server.pid", NULL);
33 ctl->pidfile[PID_SEAFDAV] = g_build_filename (pid_dir, "seafdav.pid", NULL);
34 ctl->pidfile[PID_SEAFEVENTS] = g_build_filename (pid_dir, "seafevents.pid", NULL);
35 +
36 + g_free (pid_dir);
37 }
38
39 static int
40 @@ -545,7 +550,10 @@ seaf_controller_init (SeafileController
41
42 if (logdir == NULL) {
43 char *topdir = g_path_get_dirname(config_dir);
44 - logdir = g_build_filename (topdir, "logs", NULL);
45 + logdir = g_strdup (g_getenv ("SEAFILE_UCI_LOG_DIR"));
46 + if (!logdir) {
47 + logdir = g_build_filename (topdir, "logs", NULL);
48 + }
49 if (checkdir_with_mkdir(logdir) < 0) {
50 fprintf (stderr, "failed to create log folder \"%s\": %s\n",
51 logdir, strerror(errno));
52 @@ -554,10 +562,15 @@ seaf_controller_init (SeafileController
53 g_free (topdir);
54 }
55
56 + char *socket_dir = g_strdup (g_getenv ("SEAFILE_UCI_SOCKET_DIR"));
57 + if (!socket_dir) {
58 + socket_dir = g_build_filename (installpath, "runtime", NULL);
59 + }
60 +
61 ctl->central_config_dir = central_config_dir;
62 ctl->config_dir = config_dir;
63 ctl->seafile_dir = seafile_dir;
64 - ctl->rpc_pipe_path = g_build_filename (installpath, "runtime", NULL);
65 + ctl->rpc_pipe_path = socket_dir;
66 ctl->logdir = logdir;
67
68 if (read_seafdav_config() < 0) {
69 --- a/python/seaserv/service.py
70 +++ b/python/seaserv/service.py
71 @@ -32,11 +32,17 @@ CCNET_CONF_PATH = _load_path_from_env('C
72 SEAFILE_CONF_DIR = _load_path_from_env('SEAFILE_CONF_DIR')
73 SEAFILE_CENTRAL_CONF_DIR = _load_path_from_env('SEAFILE_CENTRAL_CONF_DIR', check=False)
74 SEAFILE_RPC_PIPE_PATH = _load_path_from_env ("SEAFILE_RPC_PIPE_PATH", check=False)
75 +SEAFILE_UCI_SOCKET_DIR = _load_path_from_env('SEAFILE_UCI_SOCKET_DIR', check=False)
76
77 -ccnet_pipe_path = os.path.join (CCNET_CONF_PATH, 'ccnet-rpc.sock')
78 +ccnet_pipe_path = os.path.join (SEAFILE_UCI_SOCKET_DIR if SEAFILE_UCI_SOCKET_DIR else CCNET_CONF_PATH, 'ccnet-rpc.sock')
79 ccnet_threaded_rpc = ccnet.CcnetThreadedRpcClient(ccnet_pipe_path)
80
81 -seafile_pipe_path = os.path.join(SEAFILE_RPC_PIPE_PATH if SEAFILE_RPC_PIPE_PATH else SEAFILE_CONF_DIR,
82 +socket_dir = SEAFILE_CONF_DIR
83 +if SEAFILE_RPC_PIPE_PATH:
84 + socket_dir = SEAFILE_RPC_PIPE_PATH
85 +elif SEAFILE_UCI_SOCKET_DIR:
86 + socket_dir = SEAFILE_UCI_SOCKET_DIR
87 +seafile_pipe_path = os.path.join(socket_dir,
88 'seafile.sock')
89 seafserv_threaded_rpc = seafile.ServerThreadedRpcClient(seafile_pipe_path)
90
91 --- a/scripts/check_init_admin.py
92 +++ b/scripts/check_init_admin.py
93 @@ -284,7 +284,7 @@ class RPC(object):
94 import ccnet
95 ccnet_dir = os.environ['CCNET_CONF_DIR']
96 central_config_dir = os.environ['SEAFILE_CENTRAL_CONF_DIR']
97 - ccnet_named_pipe_path = ccnet_dir + '/' + 'ccnet-rpc.sock'
98 + ccnet_named_pipe_path = os.environ.get('SEAFILE_UCI_SOCKET_DIR', ccnet_dir) + '/' + 'ccnet-rpc.sock'
99 self.rpc_client = ccnet.CcnetThreadedRpcClient(ccnet_named_pipe_path)
100
101 def get_db_email_users(self):
102 --- a/scripts/reset-admin.sh
103 +++ b/scripts/reset-admin.sh
104 @@ -1,11 +1,13 @@
105 #!/bin/bash
106
107 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
108 +
109 SCRIPT=$(readlink -f "$0")
110 INSTALLPATH=/usr/share/seafile/seafile-server
111 TOPDIR=$(dirname "${INSTALLPATH}")
112 -default_ccnet_conf_dir=${TOPDIR}/ccnet
113 -default_seafile_data_dir=${TOPDIR}/seafile-data
114 -central_config_dir=${TOPDIR}/conf
115 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
116 +default_seafile_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data
117 +central_config_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
118
119 function check_python_executable() {
120 if [[ "$PYTHON" != "" && -x $PYTHON ]]; then
121 --- a/scripts/seaf-fsck.sh
122 +++ b/scripts/seaf-fsck.sh
123 @@ -2,12 +2,14 @@
124
125 echo ""
126
127 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
128 +
129 SCRIPT=$(readlink -f "$0")
130 INSTALLPATH=/usr/share/seafile/seafile-server
131 TOPDIR=$(dirname "${INSTALLPATH}")
132 -default_ccnet_conf_dir=${TOPDIR}/ccnet
133 -default_seafile_data_dir=${TOPDIR}/seafile-data
134 -default_conf_dir=${TOPDIR}/conf
135 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
136 +default_seafile_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data
137 +default_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
138 seaf_fsck=/usr/libexec/seaf-fsck
139
140 export PATH=/usr/libexec:$PATH
141 --- a/scripts/seaf-fuse.sh
142 +++ b/scripts/seaf-fuse.sh
143 @@ -2,12 +2,14 @@
144
145 echo ""
146
147 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
148 +
149 SCRIPT=$(readlink -f "$0")
150 INSTALLPATH=/usr/share/seafile/seafile-server
151 TOPDIR=$(dirname "${INSTALLPATH}")
152 -default_ccnet_conf_dir=${TOPDIR}/ccnet
153 -default_seafile_data_dir=${TOPDIR}/seafile-data
154 -default_conf_dir=${TOPDIR}/conf
155 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
156 +default_seafile_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data
157 +default_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
158 seaf_fuse=/usr/libexec/seaf-fuse
159
160 export PATH=/usr/libexec:$PATH
161 @@ -78,7 +80,7 @@ function start_seaf_fuse () {
162
163 echo "Starting seaf-fuse, please wait ..."
164
165 - logfile=${TOPDIR}/logs/seaf-fuse.log
166 + logfile=${SEAFILE_UCI_LOG_DIR-$TOPDIR/logs}/seaf-fuse.log
167
168 LD_LIBRARY_PATH=$SEAFILE_LD_LIBRARY_PATH ${seaf_fuse} \
169 -c "${default_ccnet_conf_dir}" \
170 --- a/scripts/seaf-gc.sh
171 +++ b/scripts/seaf-gc.sh
172 @@ -2,12 +2,14 @@
173
174 echo ""
175
176 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
177 +
178 SCRIPT=$(readlink -f "$0")
179 INSTALLPATH=/usr/share/seafile/seafile-server
180 TOPDIR=$(dirname "${INSTALLPATH}")
181 -default_ccnet_conf_dir=${TOPDIR}/ccnet
182 -default_seafile_data_dir=${TOPDIR}/seafile-data
183 -default_conf_dir=${TOPDIR}/conf
184 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
185 +default_seafile_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data
186 +default_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
187 seaf_gc=/usr/libexec/seafserv-gc
188 seaf_gc_opts=""
189
190 --- a/scripts/seafile.sh
191 +++ b/scripts/seafile.sh
192 @@ -12,12 +12,14 @@
193
194 echo ""
195
196 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
197 +
198 SCRIPT=$(readlink -f "$0")
199 INSTALLPATH=/usr/share/seafile/seafile-server
200 TOPDIR=$(dirname "${INSTALLPATH}")
201 -default_ccnet_conf_dir=${TOPDIR}/ccnet
202 -default_seafile_data_dir=${TOPDIR}/seafile-data
203 -central_config_dir=${TOPDIR}/conf
204 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
205 +default_seafile_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data
206 +central_config_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
207 seaf_controller="/usr/libexec/seafile-controller"
208
209 export PATH=/usr/libexec:$PATH
210 @@ -121,7 +123,7 @@ function start_seafile_server () {
211
212 echo "Starting seafile server, please wait ..."
213
214 - mkdir -p $TOPDIR/logs
215 + mkdir -p ${SEAFILE_UCI_LOG_DIR-$TOPDIR/logs}
216 LD_LIBRARY_PATH=$SEAFILE_LD_LIBRARY_PATH ${seaf_controller} \
217 -c "${default_ccnet_conf_dir}" \
218 -d "${default_seafile_data_dir}" \
219 --- a/scripts/seahub.sh
220 +++ b/scripts/seahub.sh
221 @@ -12,19 +12,21 @@
222
223 echo ""
224
225 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
226 +
227 SCRIPT=$(readlink -f "$0")
228 INSTALLPATH=/usr/share/seafile/seafile-server
229 TOPDIR=$(dirname "${INSTALLPATH}")
230 -default_ccnet_conf_dir=${TOPDIR}/ccnet
231 -default_seafile_data_dir=${TOPDIR}/seafile-data
232 -central_config_dir=${TOPDIR}/conf
233 -seafile_rpc_pipe_path=${INSTALLPATH}/runtime
234 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
235 +default_seafile_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data
236 +central_config_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
237 +seafile_rpc_pipe_path=${SEAFILE_UCI_SOCKET_DIR-$INSTALLPATH/runtime}
238
239 manage_py=${INSTALLPATH}/seahub/manage.py
240 -gunicorn_conf=${TOPDIR}/conf/gunicorn.conf.py
241 -pidfile=${TOPDIR}/pids/seahub.pid
242 -errorlog=${TOPDIR}/logs/gunicorn_error.log
243 -accesslog=${TOPDIR}/logs/gunicorn_access.log
244 +gunicorn_conf=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf/gunicorn.conf.py
245 +pidfile=${SEAFILE_UCI_PID_DIR-$TOPDIR/pids}/seahub.pid
246 +errorlog=${SEAFILE_UCI_LOG_DIR-$TOPDIR/logs}/gunicorn_error.log
247 +accesslog=${SEAFILE_UCI_LOG_DIR-$TOPDIR/logs}/gunicorn_access.log
248 gunicorn_exe=/usr/bin/gunicorn3
249
250 script_name=$0
251 @@ -138,7 +140,7 @@ function warning_if_seafile_not_running
252 }
253
254 function prepare_seahub_log_dir() {
255 - logdir=${TOPDIR}/logs
256 + logdir=${SEAFILE_UCI_LOG_DIR-$TOPDIR/logs}
257 if ! [[ -d ${logsdir} ]]; then
258 if ! mkdir -p "${logdir}"; then
259 echo "ERROR: failed to create logs dir \"${logdir}\""
260 --- a/scripts/setup-seafile-mysql.py
261 +++ b/scripts/setup-seafile-mysql.py
262 @@ -300,9 +300,9 @@ class EnvManager(object):
263 self.install_path = os.path.dirname(os.path.abspath(__file__))
264 self.top_dir = os.path.dirname(self.install_path)
265 self.bin_dir = '/usr/libexec'
266 - self.central_config_dir = os.path.join(self.top_dir, 'conf')
267 - self.central_pids_dir = os.path.join(self.top_dir, 'pids')
268 - self.central_logs_dir = os.path.join(self.top_dir, 'logs')
269 + self.central_config_dir = os.path.join(os.environ.get('SEAFILE_UCI_CONF_DIR', self.top_dir), 'conf')
270 + self.central_pids_dir = os.environ.get('SEAFILE_UCI_PID_DIR', os.path.join(self.top_dir, 'pids'))
271 + self.central_logs_dir = os.environ.get('SEAFILE_UCI_LOG_DIR', os.path.join(self.top_dir, 'logs'))
272 Utils.must_mkdir(self.central_config_dir)
273
274 def check_pre_condiction(self):
275 @@ -790,7 +790,7 @@ class CcnetConfigurator(AbstractConfigur
276 def __init__(self):
277 '''Initialize default values of ccnet configuration'''
278 AbstractConfigurator.__init__(self)
279 - self.ccnet_dir = os.path.join(env_mgr.top_dir, 'ccnet')
280 + self.ccnet_dir = os.path.join(os.environ.get('SEAFILE_UCI_CONF_DIR', env_mgr.top_dir), 'ccnet')
281 self.port = 10001
282 self.server_name = None
283 self.ip_or_domain = None
284 @@ -919,7 +919,7 @@ class CcnetConfigurator(AbstractConfigur
285 class SeafileConfigurator(AbstractConfigurator):
286 def __init__(self):
287 AbstractConfigurator.__init__(self)
288 - self.seafile_dir = os.path.join(env_mgr.top_dir, 'seafile-data')
289 + self.seafile_dir = os.path.join(os.environ.get('SEAFILE_UCI_DATA_DIR', env_mgr.top_dir), 'seafile-data')
290 self.port = 12001
291 self.fileserver_port = None
292 self.seafile_conf = os.path.join(env_mgr.central_config_dir, 'seafile.conf')
293 @@ -983,7 +983,7 @@ class SeafileConfigurator(AbstractConfig
294 question = 'Where do you want to put your seafile data?'
295 key = 'seafile-data'
296 note = 'Please use a volume with enough free space'
297 - default = os.path.join(env_mgr.top_dir, 'seafile-data')
298 + default = os.path.join(os.environ.get('SEAFILE_UCI_DATA_DIR', env_mgr.top_dir), 'seafile-data')
299 self.seafile_dir = Utils.ask_question(question,
300 key=key,
301 note=note,
302 @@ -1204,7 +1204,7 @@ class SeahubConfigurator(AbstractConfigu
303 media_dir = os.path.join(env_mgr.install_path, 'seahub', 'media')
304 orig_avatar_dir = os.path.join(media_dir, 'avatars')
305
306 - seahub_data_dir = os.path.join(env_mgr.top_dir, 'seahub-data')
307 + seahub_data_dir = os.path.join(os.environ.get('SEAFILE_UCI_DATA_DIR', env_mgr.top_dir), 'seahub-data')
308 dest_avatar_dir = os.path.join(seahub_data_dir, 'avatars')
309
310 if os.path.exists(dest_avatar_dir):
311 @@ -1214,7 +1214,7 @@ class SeahubConfigurator(AbstractConfigu
312 os.mkdir(seahub_data_dir)
313
314 shutil.move(orig_avatar_dir, dest_avatar_dir)
315 - os.symlink('../../../seahub-data/avatars', orig_avatar_dir)
316 + os.symlink(dest_avatar_dir, orig_avatar_dir)
317 except Exception as e:
318 Utils.error('Failed to prepare seahub avatars dir: %s' % e)
319
320 @@ -1390,7 +1390,7 @@ def check_params(args):
321 seafile_config.fileserver_port = Utils.validate_port(fileserver_port)
322
323 seafile_dir = get_param_val(args.seafile_dir, 'SEAFILE_DIR',
324 - os.path.join(env_mgr.top_dir, 'seafile-data'))
325 + os.path.join(os.environ.get('SEAFILE_UCI_DATA_DIR', env_mgr.top_dir), 'seafile-data'))
326 seafile_config.seafile_dir = seafile_config.validate_seafile_dir(seafile_dir)
327
328 global db_config
329 --- a/scripts/setup-seafile-mysql.sh
330 +++ b/scripts/setup-seafile-mysql.sh
331 @@ -6,6 +6,8 @@
332
333 set -e
334
335 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
336 +
337 SCRIPT=$(readlink -f "$0")
338 INSTALLPATH=/usr/share/seafile/seafile-server
339
340 --- a/scripts/setup-seafile.sh
341 +++ b/scripts/setup-seafile.sh
342 @@ -1,14 +1,16 @@
343 #!/bin/bash
344
345 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
346 +
347 SCRIPT=$(readlink -f "$0")
348 INSTALLPATH=/usr/share/seafile/seafile-server
349 TOPDIR=$(dirname "${INSTALLPATH}")
350 -default_ccnet_conf_dir=${TOPDIR}/ccnet
351 -default_seafile_data_dir=${TOPDIR}/seafile-data
352 -default_seahub_db=${TOPDIR}/seahub.db
353 -default_conf_dir=${TOPDIR}/conf
354 -default_pids_dir=${TOPDIR}/pids
355 -default_logs_dir=${TOPDIR}/logs
356 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
357 +default_seafile_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data
358 +default_seahub_db=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub.db
359 +default_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
360 +default_pids_dir=${SEAFILE_UCI_PID_DIR-$TOPDIR/pids}
361 +default_logs_dir=${SEAFILE_UCI_LOG_DIR-$TOPDIR/logs}
362
363 export SEAFILE_LD_LIBRARY_PATH=${INSTALLPATH}/seafile/lib/:${INSTALLPATH}/seafile/lib64:${LD_LIBRARY_PATH}
364
365 @@ -516,7 +518,7 @@ gen_seafdav_conf;
366 # -------------------------------------------
367 # generate seahub/settings.py
368 # -------------------------------------------
369 -dest_settings_py=${TOPDIR}/conf/seahub_settings.py
370 +dest_settings_py=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf/seahub_settings.py
371 seahub_secret_keygen=${INSTALLPATH}/seahub/tools/secret_key_generator.py
372
373 if [[ ! -f ${dest_settings_py} ]]; then
374 @@ -621,44 +623,44 @@ function get_seahub_admin_passwd () {
375 echo "Creating database now, it may take one minute, please wait... "
376 echo
377
378 -cd ${TOPDIR}/ccnet && mkdir -m 0755 GroupMgr misc OrgMgr PeerMgr && cd -
379 +cd ${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet && mkdir -m 0755 GroupMgr misc OrgMgr PeerMgr && cd -
380
381 -ccnet_group_db=${TOPDIR}/ccnet/GroupMgr/groupmgr.db
382 +ccnet_group_db=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet/GroupMgr/groupmgr.db
383 ccnet_group_sql=${INSTALLPATH}/sql/sqlite/groupmgr.sql
384 if ! sqlite3 ${ccnet_group_db} ".read ${ccnet_group_sql}" 2>/dev/null 1>&2; then
385 echo "Failed to sync ccnet groupmgr database."
386 err_and_quit;
387 fi
388
389 -ccnet_config_db=${TOPDIR}/ccnet/misc/config.db
390 +ccnet_config_db=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet/misc/config.db
391 ccnet_config_sql=${INSTALLPATH}/sql/sqlite/config.sql
392 if ! sqlite3 ${ccnet_config_db} ".read ${ccnet_config_sql}" 2>/dev/null 1>&2; then
393 echo "Failed to sync ccnet config database."
394 err_and_quit;
395 fi
396
397 -ccnet_org_db=${TOPDIR}/ccnet/OrgMgr/orgmgr.db
398 +ccnet_org_db=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet/OrgMgr/orgmgr.db
399 ccnet_org_sql=${INSTALLPATH}/sql/sqlite/org.sql
400 if ! sqlite3 ${ccnet_org_db} ".read ${ccnet_org_sql}" 2>/dev/null 1>&2; then
401 echo "Failed to sync ccnet org database."
402 err_and_quit;
403 fi
404
405 -ccnet_user_db=${TOPDIR}/ccnet/PeerMgr/usermgr.db
406 +ccnet_user_db=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet/PeerMgr/usermgr.db
407 ccnet_user_sql=${INSTALLPATH}/sql/sqlite/user.sql
408 if ! sqlite3 ${ccnet_user_db} ".read ${ccnet_user_sql}" 2>/dev/null 1>&2; then
409 echo "Failed to sync ccnet user database."
410 err_and_quit;
411 fi
412
413 -seafile_db=${TOPDIR}/seafile-data/seafile.db
414 +seafile_db=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seafile-data/seafile.db
415 seafile_sql=${INSTALLPATH}/sql/sqlite/seafile.sql
416 if ! sqlite3 ${seafile_db} ".read ${seafile_sql}" 2>/dev/null 1>&2; then
417 echo "Failed to sync seafile database."
418 err_and_quit;
419 fi
420
421 -seahub_db=${TOPDIR}/seahub.db
422 +seahub_db=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub.db
423 seahub_sqls=${INSTALLPATH}/seahub/sql/sqlite3.sql
424 if ! sqlite3 ${seahub_db} ".read ${seahub_sqls}" 2>/dev/null 1>&2; then
425 echo "Failed to sync seahub database."
426 @@ -671,12 +673,12 @@ echo "Done."
427
428 media_dir=${INSTALLPATH}/seahub/media
429 orig_avatar_dir=${INSTALLPATH}/seahub/media/avatars
430 -dest_avatar_dir=${TOPDIR}/seahub-data/avatars
431 +dest_avatar_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data/avatars
432
433 if [[ ! -d ${dest_avatar_dir} ]]; then
434 - mkdir -p "${TOPDIR}/seahub-data"
435 + mkdir -p "${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data"
436 mv "${orig_avatar_dir}" "${dest_avatar_dir}"
437 - ln -s ../../../seahub-data/avatars ${media_dir}
438 + ln -s ${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data/avatars ${media_dir}
439 fi
440
441 # Make a seafile-server symlink, like this:
442 --- a/scripts/sqlite2mysql.sh
443 +++ b/scripts/sqlite2mysql.sh
444 @@ -13,17 +13,19 @@
445 # (mysql> source ccnet-db.sql)
446 #
447
448 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
449 +
450 CCNET_DB='ccnet-db.sql'
451 SEAFILE_DB='seafile-db.sql'
452 SEAHUB_DB='seahub-db.sql'
453
454 ########## ccnet
455 seafile_path=$(pwd)
456 -if [ -f "${seafile_path}/conf/ccnet.conf" ]; then
457 - USER_MGR_DB=${seafile_path}/ccnet/PeerMgr/usermgr.db
458 - GRP_MGR_DB=${seafile_path}/ccnet/GroupMgr/groupmgr.db
459 +if [ -f "${SEAFILE_UCI_CONF_DIR-$seafile_path}/conf/ccnet.conf" ]; then
460 + USER_MGR_DB=${SEAFILE_UCI_CONF_DIR-$seafile_path}/ccnet/PeerMgr/usermgr.db
461 + GRP_MGR_DB=${SEAFILE_UCI_CONF_DIR-$seafile_path}/ccnet/GroupMgr/groupmgr.db
462 else
463 - echo "${seafile_path}/conf/ccnet.conf does not exists."
464 + echo "${SEAFILE_UCI_CONF_DIR-$seafile_path}/conf/ccnet.conf does not exists."
465 read -p "Please provide your ccnet.conf path(e.g. /data/haiwen/conf/ccnet.conf): " ccnet_conf_path
466 if [ -f ${ccnet_conf_path} ]; then
467 USER_MGR_DB=$(dirname $(dirname "${ccnet_conf_path}"))/ccnet/PeerMgr/usermgr.db
468 @@ -50,11 +52,11 @@ sed 's/email TEXT, role TEXT/email VARCH
469 ########## seafile
470 rm -rf ${SEAFILE_DB}
471
472 -if [ -f "${seafile_path}/seafile-data/seafile.db" ]; then
473 - echo "sqlite3 ${seafile_path}/seafile-data/seafile.db .dump | python sqlite2mysql.py > ${SEAFILE_DB}"
474 - sqlite3 ${seafile_path}/seafile-data/seafile.db .dump | python sqlite2mysql.py > ${SEAFILE_DB}
475 +if [ -f "${SEAFILE_UCI_DATA_DIR-$seafile_path}/seafile-data/seafile.db" ]; then
476 + echo "sqlite3 ${SEAFILE_UCI_DATA_DIR-$seafile_path}/seafile-data/seafile.db .dump | python sqlite2mysql.py > ${SEAFILE_DB}"
477 + sqlite3 ${SEAFILE_UCI_DATA_DIR-$seafile_path}/seafile-data/seafile.db .dump | python sqlite2mysql.py > ${SEAFILE_DB}
478 else
479 - echo "${seafile_path}/seafile-data/seafile.db does not exists."
480 + echo "${SEAFILE_UCI_DATA_DIR-$seafile_path}/seafile-data/seafile.db does not exists."
481 read -p "Please provide your seafile.db path(e.g. /data/haiwen/seafile-data/seafile.db): " seafile_db_path
482 if [ -f ${seafile_db_path} ];then
483 echo "sqlite3 ${seafile_db_path} .dump | python sqlite2mysql.py > ${SEAFILE_DB}"
484 @@ -74,11 +76,11 @@ sed 's/user_name TEXT/user_name VARCHAR(
485 ########## seahub
486 rm -rf ${SEAHUB_DB}
487
488 -if [ -f "${seafile_path}/seahub.db" ]; then
489 - echo "sqlite3 ${seafile_path}/seahub.db .dump | tr -d '\n' | sed 's/;/;\n/g' | python sqlite2mysql.py > ${SEAHUB_DB}"
490 - sqlite3 ${seafile_path}/seahub.db .dump | tr -d '\n' | sed 's/;/;\n/g' | python sqlite2mysql.py > ${SEAHUB_DB}
491 +if [ -f "${SEAFILE_UCI_DATA_DIR-$seafile_path}/seahub.db" ]; then
492 + echo "sqlite3 ${SEAFILE_UCI_DATA_DIR-$seafile_path}/seahub.db .dump | tr -d '\n' | sed 's/;/;\n/g' | python sqlite2mysql.py > ${SEAHUB_DB}"
493 + sqlite3 ${SEAFILE_UCI_DATA_DIR-$seafile_path}/seahub.db .dump | tr -d '\n' | sed 's/;/;\n/g' | python sqlite2mysql.py > ${SEAHUB_DB}
494 else
495 - echo "${seafile_path}/seahub.db does not exists."
496 + echo "${SEAFILE_UCI_DATA_DIR-$seafile_path}/seahub.db does not exists."
497 read -p "Please prove your seahub.db path(e.g. /data/haiwen/seahub.db): " seahub_db_path
498 if [ -f ${seahub_db_path} ]; then
499 echo "sqlite3 ${seahub_db_path} .dump | tr -d '\n' | sed 's/;/;\n/g' | python sqlite2mysql.py > ${SEAHUB_DB}"
500 --- a/scripts/upgrade/minor-upgrade.sh
501 +++ b/scripts/upgrade/minor-upgrade.sh
502 @@ -1,5 +1,7 @@
503 #!/bin/bash
504
505 +/etc/init.d/seafile-server generate_uci_conf && . /var/run/seafile/uci.conf
506 +
507 SCRIPT=$(readlink -f "$0") # haiwen/seafile-server-1.3.0/upgrade/upgrade_xx_xx.sh
508 UPGRADE_DIR=$(dirname "$SCRIPT") # haiwen/seafile-server-1.3.0/upgrade/
509 INSTALLPATH=$(dirname "$UPGRADE_DIR") # haiwen/seafile-server-1.3.0/
510 @@ -15,11 +17,11 @@ read dummy
511
512 media_dir=${INSTALLPATH}/seahub/media
513 orig_avatar_dir=${INSTALLPATH}/seahub/media/avatars
514 -dest_avatar_dir=${TOPDIR}/seahub-data/avatars
515 +dest_avatar_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data/avatars
516 seafile_server_symlink=${TOPDIR}/seafile-server-latest
517 -default_conf_dir=${TOPDIR}/conf
518 -default_ccnet_conf_dir=${TOPDIR}/ccnet
519 -seahub_data_dir=${TOPDIR}/seahub-data
520 +default_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/conf
521 +default_ccnet_conf_dir=${SEAFILE_UCI_CONF_DIR-$TOPDIR}/ccnet
522 +seahub_data_dir=${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data
523 elasticsearch_config_file=${seafile_server_symlink}/pro/elasticsearch/config/jvm.options
524
525 function migrate_avatars() {
526 @@ -37,7 +39,7 @@ function migrate_avatars() {
527 elif [[ ! -L ${orig_avatar_dir} ]]; then
528 mv "${orig_avatar_dir}"/* "${dest_avatar_dir}" 2>/dev/null 1>&2
529 rm -rf "${orig_avatar_dir}"
530 - ln -s ../../../seahub-data/avatars "${media_dir}"
531 + ln -s ${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data/avatars "${media_dir}"
532 fi
533 echo
534 echo "DONE"
535 @@ -51,14 +53,14 @@ function make_media_custom_symlink() {
536 return
537
538 elif [[ ! -e "${media_symlink}" ]]; then
539 - ln -s ../../../seahub-data/custom "${media_symlink}"
540 + ln -s ${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data/custom "${media_symlink}"
541 return
542
543
544 elif [[ -d "${media_symlink}" ]]; then
545 cp -rf "${media_symlink}" "${seahub_data_dir}/"
546 rm -rf "${media_symlink}"
547 - ln -s ../../../seahub-data/custom "${media_symlink}"
548 + ln -s ${SEAFILE_UCI_DATA_DIR-$TOPDIR}/seahub-data/custom "${media_symlink}"
549 fi
550
551 }
552 --- a/server/seaf-server.c
553 +++ b/server/seaf-server.c
554 @@ -767,8 +767,12 @@ static void start_rpc_service (const cha
555 "set_server_config_boolean",
556 searpc_signature_int__string_string_int());
557
558 + const char *socket_dir = g_getenv ("SEAFILE_UCI_SOCKET_DIR");
559 +
560 if (rpc_pipe_path) {
561 pipe_path = g_build_path ("/", rpc_pipe_path, SEAFILE_RPC_PIPE_NAME, NULL);
562 + } else if (socket_dir) {
563 + pipe_path = g_build_path ("/", socket_dir, SEAFILE_RPC_PIPE_NAME, NULL);
564 } else {
565 pipe_path = g_build_path ("/", seafile_dir, SEAFILE_RPC_PIPE_NAME, NULL);
566 }
567 @@ -973,8 +977,14 @@ main (int argc, char **argv)
568
569 if (seafile_dir == NULL)
570 seafile_dir = g_build_filename (ccnet_dir, "seafile", NULL);
571 - if (logfile == NULL)
572 - logfile = g_build_filename (seafile_dir, "seafile.log", NULL);
573 + if (logfile == NULL) {
574 + char *log_dir = g_strdup (g_getenv("SEAFILE_UCI_LOG_DIR"));
575 + if (!log_dir) {
576 + log_dir = g_strdup (seafile_dir);
577 + }
578 + logfile = g_build_filename (log_dir, "seafile.log", NULL);
579 + g_free (log_dir);
580 + }
581
582 if (seafile_log_init (logfile, "info", "debug") < 0) {
583 seaf_warning ("Failed to init log.\n");