]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - INSTALL/VentoyWebDeepin.sh
support for tails.img
[Ventoy.git] / INSTALL / VentoyWebDeepin.sh
1 #!/bin/sh
2
3 print_usage() {
4 echo 'Usage: VentoyWebDeepin.sh [ OPTION ]'
5 echo ' OPTION: (optional)'
6 echo ' -H x.x.x.x http server IP address (default is 127.0.0.1)'
7 echo ' -p PORT http server PORT (default is 24680)'
8 echo ' -h print this help'
9 echo ''
10 }
11
12 print_err() {
13 echo ""
14 echo "$*"
15 echo ""
16 }
17
18
19 get_user() {
20 name=$(logname)
21 if [ -n "$name" -a "$name" != "root" ]; then
22 echo $name; return
23 fi
24
25 name=${HOME#/home/}
26 if [ -n "$name" -a "$name" != "root" ]; then
27 echo $name; return
28 fi
29 }
30
31 get_browser_cmd() {
32 if uos-browser --version > /dev/null 2>&1; then
33 echo "uos-browser"; return
34 else
35 echo "browser"
36 fi
37 }
38
39 uid=$(id -u)
40 if [ $uid -ne 0 ]; then
41 exec sudo sh $0 $*
42 fi
43
44 OLDDIR=$(pwd)
45
46 if uname -m | egrep -q 'aarch64|arm64'; then
47 TOOLDIR=aarch64
48 elif uname -m | egrep -q 'x86_64|amd64'; then
49 TOOLDIR=x86_64
50 elif uname -m | egrep -q 'mips64'; then
51 TOOLDIR=mips64el
52 else
53 TOOLDIR=i386
54 fi
55
56 if [ ! -f ./tool/$TOOLDIR/V2DServer ]; then
57 if [ -f ${0%VentoyWebDeepin.sh}/tool/$TOOLDIR/V2DServer ]; then
58 cd ${0%VentoyWebDeepin.sh}
59 fi
60 fi
61
62 PATH=./tool/$TOOLDIR:$PATH
63
64 if [ ! -f ./boot/boot.img ]; then
65 if [ -d ./grub ]; then
66 echo "Don't run VentoyWebDeepin.sh here, please download the released install package, and run the script in it."
67 else
68 echo "Please run under the correct directory!"
69 fi
70 exit 1
71 fi
72
73 HOST="127.0.0.1"
74 PORT=24680
75
76 while [ -n "$1" ]; do
77 if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
78 print_usage
79 exit 0
80 elif [ "$1" = "-H" ]; then
81 shift
82 if echo $1 | grep -q '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'; then
83 HOST="$1"
84 else
85 print_err "Invalid host $1"
86 exit 1
87 fi
88 elif [ "$1" = "-p" ]; then
89 shift
90 if [ $1 -gt 0 -a $1 -le 65535 ]; then
91 PORT="$1"
92 else
93 print_err "Invalid port $1"
94 exit 1
95 fi
96 fi
97
98 shift
99 done
100
101
102 if ps -ef | grep "V2DServer.*$HOST.*$PORT" | grep -q -v grep; then
103 print_err "Another ventoy server is running now, please close it first."
104 exit 1
105 fi
106
107 VUSER=$(get_user)
108
109 LOGFILE=log.txt
110 if [ -e $LOGFILE ]; then
111 LogGroup=$(stat -c '%G' $LOGFILE)
112 if [ "$LogGroup" = "root" ]; then
113 rm -f $LOGFILE
114 su $VUSER -c "touch $LOGFILE"
115 fi
116 else
117 su $VUSER -c "touch $LOGFILE"
118 fi
119
120 #delete the log.txt if it's more than 8MB
121 if [ -f $LOGFILE ]; then
122 logsize=$(stat -c '%s' $LOGFILE)
123 if [ $logsize -gt 8388608 ]; then
124 rm -f $LOGFILE
125 fi
126 fi
127
128
129 if [ -f ./tool/$TOOLDIR/V2DServer.xz ]; then
130 xz -d ./tool/$TOOLDIR/V2DServer.xz
131 chmod +x ./tool/$TOOLDIR/V2DServer
132 fi
133
134 rm -rf ./*_VTMPDIR
135 vtWebTmpDir=$(su $VUSER -c "mktemp -d -p ./ --suffix=_VTMPDIR")
136
137 V2DServer "$HOST" "$PORT" &
138 V2DPid=$!
139 sleep 1
140
141 browsercmd=$(get_browser_cmd)
142 su $VUSER -c "$browsercmd --window-size=550,400 --app=\"http://${HOST}:${PORT}/index.html?chrome-app\" --user-data-dir=$vtWebTmpDir >> $LOGFILE 2>&1" &
143 WebPid=$!
144
145
146 vtoy_trap_exit() {
147
148 [ -d /proc/$V2DPid ] && kill -2 $V2DPid
149 [ -d /proc/$WebPid ] && kill -9 $WebPid
150
151 while [ -n "1" ]; do
152 curPid=$(ps -ef | grep -m1 "$vtWebTmpDir" | egrep -v '\sgrep\s' | awk '{print $2}')
153 if [ -z "$curPid" ]; then
154 break
155 fi
156
157 if [ -d /proc/$curPid ]; then
158 kill -9 $curPid
159 fi
160 done
161
162 [ -d $vtWebTmpDir ] && rm -rf $vtWebTmpDir
163
164 if [ -n "$OLDDIR" ]; then
165 CURDIR=$(pwd)
166 if [ "$CURDIR" != "$OLDDIR" ]; then
167 cd "$OLDDIR"
168 fi
169 fi
170
171 exit 1
172 }
173
174 trap vtoy_trap_exit HUP INT QUIT TSTP
175 sleep 1
176
177
178 vtVer=$(cat ventoy/version)
179 echo ""
180 echo "=================================================="
181 if [ "$LANG" = "zh_CN.UTF-8" ]; then
182 echo " Ventoy Server $vtVer 已经启动 ..."
183 else
184 echo " Ventoy Server $vtVer is running ..."
185 fi
186 echo "=================================================="
187 echo ""
188 echo "########### Press Ctrl + C to exit ###############"
189 echo ""
190
191 wait $WebPid
192
193 [ -d /proc/$V2DPid ] && kill -2 $V2DPid
194
195 [ -d $vtWebTmpDir ] && rm -rf $vtWebTmpDir
196
197 if [ -n "$OLDDIR" ]; then
198 CURDIR=$(pwd)
199 if [ "$CURDIR" != "$OLDDIR" ]; then
200 cd "$OLDDIR"
201 fi
202 fi