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