Mercurial > libervia-backend
annotate bin/sat @ 3216:8418e0c83ed7
plugin text commands: handles coroutines + better command parsing:
- async coroutine can now be used for text commands (in addition to Deferred and regular
callbacks)
- isidentifier is now used to detect a command, allowing to use "_" in command names
- if message starts with a single `/`, it is never sent (previously it could be sent is
some corner cases)
- don't use OrderedDict anymore as dict now keep insertion order by default
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 13 Mar 2020 17:50:08 +0100 |
parents | 0b6d56a8f7e3 |
children | e81ad34e8af8 |
rev | line source |
---|---|
4 | 1 #!/bin/sh |
225
fd9b7834d98a
distutils installation script, draft
Goffi <goffi@goffi.org>
parents:
223
diff
changeset
|
2 |
249
0ed5553b5313
added "debug" command to sat launcher script
Goffi <goffi@goffi.org>
parents:
234
diff
changeset
|
3 DEBUG="" |
1115 | 4 DAEMON="" |
3028 | 5 PYTHON="python3" |
3099 | 6 |
7 # for Python 3, "twistd" is named "twistd3" on some distros, so we check for it first | |
8 TWISTD="$(which twistd3 2>/dev/null)" | |
9 if [ $? -ne 0 ]; then | |
10 TWISTD="$(which twistd 2>/dev/null)" | |
11 fi | |
12 if [ $? -ne 0 ]; then | |
13 printf "Can't find \"twistd\" script, are you sure that Twisted is installed?\n" | |
14 exit 1 | |
15 fi | |
234
a7079e835432
added stop command in sat.sh launching script
Goffi <goffi@goffi.org>
parents:
226
diff
changeset
|
16 |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
17 kill_process() { |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
18 # $1 is the file containing the PID to kill, $2 is the process name |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
19 if [ -f $1 ]; then |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
20 PID=`cat $1` |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
21 if ps -p $PID > /dev/null; then |
1878
7a07f232e7cb
misc (sat.sh): exec + better stop:
Goffi <goffi@goffi.org>
parents:
1548
diff
changeset
|
22 printf "Terminating $2... " |
1548
61c03265e133
launching script: use SIGTERM instead of SIGINT with the “stop” command
Goffi <goffi@goffi.org>
parents:
1151
diff
changeset
|
23 kill $PID |
1878
7a07f232e7cb
misc (sat.sh): exec + better stop:
Goffi <goffi@goffi.org>
parents:
1548
diff
changeset
|
24 while ps -p $PID > /dev/null; do |
7a07f232e7cb
misc (sat.sh): exec + better stop:
Goffi <goffi@goffi.org>
parents:
1548
diff
changeset
|
25 sleep 0.2 |
7a07f232e7cb
misc (sat.sh): exec + better stop:
Goffi <goffi@goffi.org>
parents:
1548
diff
changeset
|
26 done |
7a07f232e7cb
misc (sat.sh): exec + better stop:
Goffi <goffi@goffi.org>
parents:
1548
diff
changeset
|
27 printf "OK\n" |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
28 else |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
29 echo "No running process of ID $PID... removing PID file" |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
30 rm -f $1 |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
31 fi |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
32 else |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
33 echo "$2 is probably not running (PID file doesn't exist)" |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
34 fi |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
35 } |
4 | 36 |
369
e83d0c21d64d
launching script now read config files
Goffi <goffi@goffi.org>
parents:
358
diff
changeset
|
37 #We use python to parse config files |
3053
8b36e5c3f28f
misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents:
3028
diff
changeset
|
38 eval `/usr/bin/env "$PYTHON" << PYTHONEND |
1003
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
39 from sat.core.constants import Const as C |
3053
8b36e5c3f28f
misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents:
3028
diff
changeset
|
40 from sat.tools.config import fixLocalDir |
3028 | 41 from configparser import ConfigParser |
369
e83d0c21d64d
launching script now read config files
Goffi <goffi@goffi.org>
parents:
358
diff
changeset
|
42 from os.path import expanduser, join |
463 | 43 import sys |
369
e83d0c21d64d
launching script now read config files
Goffi <goffi@goffi.org>
parents:
358
diff
changeset
|
44 |
1003
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
45 fixLocalDir() # XXX: tmp update code, will be removed in the future |
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
46 |
3028 | 47 config = ConfigParser(defaults=C.DEFAULT_CONFIG) |
369
e83d0c21d64d
launching script now read config files
Goffi <goffi@goffi.org>
parents:
358
diff
changeset
|
48 try: |
1003
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
49 config.read(C.CONFIG_FILES) |
369
e83d0c21d64d
launching script now read config files
Goffi <goffi@goffi.org>
parents:
358
diff
changeset
|
50 except: |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
51 print ("echo \"/!\\ Can't read main config ! Please check the syntax\";") |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
52 print ("exit 1") |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
53 sys.exit() |
463 | 54 |
55 env=[] | |
56 env.append("PID_DIR='%s'" % join(expanduser(config.get('DEFAULT', 'pid_dir')),'')) | |
930
cbf4122baae7
core, memory: use XDG recommended paths as the defaults for the config and local directories
souliane <souliane@mailoo.org>
parents:
587
diff
changeset
|
57 env.append("LOG_DIR='%s'" % join(expanduser(config.get('DEFAULT', 'log_dir')),'')) |
1114
7293233970ab
misc: stdout encoding management in python part of sat.sh
Goffi <goffi@goffi.org>
parents:
1003
diff
changeset
|
58 env.append("APP_NAME='%s'" % C.APP_NAME) |
1003
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
59 env.append("APP_NAME_FILE='%s'" % C.APP_NAME_FILE) |
3028 | 60 print (";".join(env)) |
369
e83d0c21d64d
launching script now read config files
Goffi <goffi@goffi.org>
parents:
358
diff
changeset
|
61 PYTHONEND |
e83d0c21d64d
launching script now read config files
Goffi <goffi@goffi.org>
parents:
358
diff
changeset
|
62 ` |
1114
7293233970ab
misc: stdout encoding management in python part of sat.sh
Goffi <goffi@goffi.org>
parents:
1003
diff
changeset
|
63 APP_NAME="$APP_NAME" |
1003
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
64 PID_FILE="$PID_DIR$APP_NAME_FILE.pid" |
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
65 LOG_FILE="$LOG_DIR$APP_NAME_FILE.log" |
1151
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
66 RUNNING_MSG="$APP_NAME is running" |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
67 NOT_RUNNING_MSG="$APP_NAME is *NOT* running" |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
68 |
2562 | 69 # if there is one argument which is "stop", then we kill SaT |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
70 if [ $# -eq 1 ];then |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
71 if [ $1 = "stop" ];then |
1003
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
72 kill_process $PID_FILE "$APP_NAME" |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
73 exit 0 |
1115 | 74 elif [ $1 = "debug" ];then |
1003
52ec79aa5bbe
memory: fixes the method fixLocalDir for pid_dir and log_dir to use local_dir as default
souliane <souliane@mailoo.org>
parents:
931
diff
changeset
|
75 echo "Launching $APP_NAME in debug mode" |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
76 DEBUG="--debug" |
1115 | 77 elif [ $1 = "fg" ];then |
78 echo "Launching $APP_NAME in foreground mode" | |
79 DAEMON="n" | |
1151
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
80 elif [ $1 = "status" ];then |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
81 if [ -f $PID_FILE ]; then |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
82 PID=`cat $PID_FILE` |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
83 ps -p$PID 2>&1 > /dev/null |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
84 if [ $? = 0 ];then |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
85 echo "$RUNNING_MSG (pid: $PID)" |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
86 exit 0 |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
87 else |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
88 echo "$NOT_RUNNING_MSG, but a pid file is present (bad exit ?): $PID_FILE" |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
89 exit 2 |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
90 fi |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
91 else |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
92 echo "$NOT_RUNNING_MSG" |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
93 exit 1 |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
94 fi |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
95 else |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
96 echo "bad argument, please use one of (stop, debug, fg, status) or no argument" |
02c26e6630d0
misc (launch script): added a "status" command
Goffi <goffi@goffi.org>
parents:
1122
diff
changeset
|
97 exit 1 |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
98 fi |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
99 fi |
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
100 |
1122
9ae01ccf89c1
core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents:
1115
diff
changeset
|
101 MAIN_OPTIONS="-${DAEMON}o" |
225
fd9b7834d98a
distutils installation script, draft
Goffi <goffi@goffi.org>
parents:
223
diff
changeset
|
102 |
1122
9ae01ccf89c1
core: sat bakcend is now a twisted plugin (no more .tac file)
Goffi <goffi@goffi.org>
parents:
1115
diff
changeset
|
103 #Don't change the next lines |
225
fd9b7834d98a
distutils installation script, draft
Goffi <goffi@goffi.org>
parents:
223
diff
changeset
|
104 AUTO_OPTIONS="" |
249
0ed5553b5313
added "debug" command to sat launcher script
Goffi <goffi@goffi.org>
parents:
234
diff
changeset
|
105 ADDITIONAL_OPTIONS="--pidfile $PID_FILE --logfile $LOG_FILE $AUTO_OPTIONS $DEBUG" |
225
fd9b7834d98a
distutils installation script, draft
Goffi <goffi@goffi.org>
parents:
223
diff
changeset
|
106 |
226
d8bb72f00eec
distutils install: fixed plugin import and log file path
Goffi <goffi@goffi.org>
parents:
225
diff
changeset
|
107 log_dir=`dirname "$LOG_FILE"` |
d8bb72f00eec
distutils install: fixed plugin import and log file path
Goffi <goffi@goffi.org>
parents:
225
diff
changeset
|
108 if [ ! -d $log_dir ] ; then |
931
3b30e9f83d88
misc: sat stop would not kill all sat instances anymore
souliane <souliane@mailoo.org>
parents:
930
diff
changeset
|
109 mkdir $log_dir |
226
d8bb72f00eec
distutils install: fixed plugin import and log file path
Goffi <goffi@goffi.org>
parents:
225
diff
changeset
|
110 fi |
d8bb72f00eec
distutils install: fixed plugin import and log file path
Goffi <goffi@goffi.org>
parents:
225
diff
changeset
|
111 |
3053
8b36e5c3f28f
misc: don't import memory in launch script:
Goffi <goffi@goffi.org>
parents:
3028
diff
changeset
|
112 exec /usr/bin/env $PYTHON $TWISTD $MAIN_OPTIONS $ADDITIONAL_OPTIONS $APP_NAME_FILE |