sup view server/sup/sup-admin.cgi @ rev 42

Improvment and fixes after some usage/testing
author Christophe Lincoln <pankso@slitaz.org>
date Wed Mar 08 00:15:04 2017 +0100 (2017-03-08)
parents 642f0fa9f0ff
children
line source
1 #!/bin/sh
2 #
3 # TinyCM/TazBug Plugin - Admin part split so less code sourced by
4 # TinyCM core spript. echo ENGLISH Only :-). Admin tools: handle SQLite
5 # packages.md5 for the mirror, clean any unconforming, buggy or corrupted
6 # packages in wok.
7 #
8 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License
9 # Author: Christophe Lincoln <pankso@slitaz.org>
10 #
11 . /lib/libtaz.sh
13 case " $(GET sup) " in
15 *\ admin\ *)
16 d="SUP Admin tools"
17 header
18 html_header
19 user_box
20 if ! check_auth && admin_user; then
21 echo "Only for admins"; html_footer; exit 0
22 fi
23 cat << EOT
24 <h2>${d}</h2>
25 <div id="tools">
26 <a href="?sup">SUP Hub</a>
27 <a href='?sup=db&amp;command=create'>Create SQL db</a>
28 <a href="?sup=db&amp;command=testsuite">SQL Testsuite</a>
29 </div>
31 <h3>SQL Packages db</h3>
32 <pre>
33 EOT
34 # SQLite commands for ?sup=db&sqlite=command
35 if [ -f "$pkgsdb" ]; then
36 cat << EOT
37 SQLite version : $(sqlite3 -version | cut -d " " -f 1)
38 Database tables : $(sqlite3 ${pkgsdb} '.tables')
39 Database size : $(du -mh ${pkgsdb} | cut -d " " -f 1)
40 EOT
41 sqlite3 ${pkgsdb} 'SELECT timestamp FROM info' \
42 | awk '{printf "Timestamp : %s %s\n",$1,$2 }'
43 echo "</pre>"
44 else
45 echo "WARNING: missing : $pkgsdb"
46 fi
48 # Check/admin wok: remove packagage
49 #
50 echo "<h3>Public wok</h3>"
51 echo "<pre>"
52 echo "Wok path : $wok"
53 echo "Wok size : $(du -smh $wok | cut -d " " -f 1)"
54 echo "Packages : $(ls $wok | wc -l)"
55 echo "README files : $(find ${wok} -name README -type f | wc -l)"
57 #${wok}/${pkg}/receip
58 #for pkg in $(ls $wok); do
59 #echo "$pkg"
60 #done
61 echo "</pre>"
63 html_footer && exit 0 ;;
65 *\ db\ *)
66 d="SUP packages.sql"
67 command=$(GET command)
68 header
69 html_header
70 user_box
71 if ! check_auth && admin_user; then
72 echo "Only for admins"; html_footer; exit 0
73 fi
75 # Tools
76 cat << EOT
77 <h2>${d}</h2>
78 <div id="tools">
79 <a href="?sup=admin">Admin tools</a>
80 <a href="?sup=db&amp;command=testsuite">SQL Testsuite</a>
81 </div>
82 EOT
84 # Used by command=create
85 create_pkgs_table() {
86 sqlite3 ${pkgsdb} << EOT
87 CREATE TABLE pkgs(
88 name PRIMARY KEY,
89 version,
90 short_desc,
91 maintainer,
92 license,
93 website,
94 sup_deps,
95 depends,
96 cook_date,
97 md5sum UNIQUE
98 );
99 EOT
100 }
101 create_info_table() {
102 sqlite3 ${pkgsdb} << EOT
103 CREATE TABLE info(
104 timestamp PRIMARY KEY,
105 pkgs_nb
106 );
107 EOT
108 }
110 # Handle SQlite commands
111 [ "$command" ] && echo "<h3>Command: ${command}</h3>"
112 case "$command" in
114 create)
115 timestart="$(date -u +%s)"
116 rm -f ${pkgsdb}
117 echo "<pre>"
118 echo -n "Creating pkgs table..."
119 create_pkgs_table; status
120 echo -n "Creating info table..."
121 create_info_table; status
123 for pkg in $(ls $wok)
124 do
125 . ${wok}/${pkg}/receip
126 # Faster ? | awk '{printf $1}'
127 sum=$(md5sum ${packages}/${PACKAGE}-${VERSION}.sup | cut -d " " -f 1)
128 echo -n "Inserting: $PACKAGE $VERSION"
129 sqlite3 ${pkgsdb} << EOT
130 INSERT INTO pkgs VALUES(
131 "$PACKAGE",
132 "$VERSION",
133 "$SHORT_DESC",
134 "$MAINTAINER",
135 "$LICENSE",
136 "$WEB_SITE",
137 "$SUP_DEPS",
138 "$DEPENDS",
139 "$cook_date",
140 "$sum"
141 );
142 EOT
143 status
144 done
146 timestamp="$(date "+%Y-%m-%d %H:%M")"
147 pkgs_nb=$(ls $wok | wc -l)
148 sqlite3 ${pkgsdb} << EOT
149 INSERT INTO info VALUES("$timestamp", "$pkgs_nb");
150 EOT
151 gentime=$(( $(date -u +%s) - ${timestart} ))
152 echo "Database generated in: \
153 <span class='float-right value'>$gentime sec</span>"
154 echo "</pre>" ;;
156 testsuite)
157 # SUP SQLite commands testsuite
158 echo "<pre>"
160 echo -n "Running: sqlite3 ANALYZE..."
161 sqlite3 ${pkgsdb} 'ANALYZE'
162 status
164 echo "Running: <span class='value'>SELECT name FROM pkgs LIMIT 4</span>"
165 sqlite3 ${pkgsdb} 'SELECT name FROM pkgs LIMIT 4' && newline
167 # sqlite_master .schema
168 echo "<span class='value'>sqlite_master schema</span>"
169 echo "-----------------"
170 sqlite3 ${pkgsdb} '.schema sqlite_master'; newline
172 # .schema
173 echo "<span class='value'>CREATE statements</span>"
174 echo "-----------------"
175 sqlite3 ${pkgsdb} '.schema'; newline
177 echo "</pre>" ;;
179 *) echo "<pre>Unknown or command not implemented</pre>" ;;
181 esac
183 echo "<pre>"
184 if [ -f "$pkgsdb" ]; then
185 echo -n "SQLite version : "; sqlite3 -version | cut -d " " -f 1
186 echo -n "Database size : "; du -mh ${pkgsdb} | cut -d " " -f 1
187 else
188 echo "<span class='error'>WARNING: missing : $pkgsdb</span>"
189 fi
190 echo "</pre>"
192 html_footer && exit 0 ;;
193 esac