Fossil SCM
Add the /clusterlist webpage.
Commit
a2ce1f109a21dc6426820f1e23fb10e278ca6befaacaa4f1f56d8a4fb7f6df84
Parent
4170e0bb0240180…
1 file changed
+53
+53
| --- src/name.c | ||
| +++ src/name.c | ||
| @@ -2163,5 +2163,58 @@ | ||
| 2163 | 2163 | " ORDER BY 1"); |
| 2164 | 2164 | @ <h1>Hash Prefix Collisions on All Artifacts</h1> |
| 2165 | 2165 | collision_report("SELECT uuid FROM blob ORDER BY 1"); |
| 2166 | 2166 | style_finish_page(); |
| 2167 | 2167 | } |
| 2168 | + | |
| 2169 | +/* | |
| 2170 | +** WEBPAGE: clusterlist | |
| 2171 | +** | |
| 2172 | +** Show information about all cluster artifacts in the database. | |
| 2173 | +** This page is accessible by administrators only. | |
| 2174 | +*/ | |
| 2175 | +void clusterlist_page(void){ | |
| 2176 | + Stmt q; | |
| 2177 | + login_check_credentials(); | |
| 2178 | + if( !g.perm.Admin ){ login_needed(g.anon.Admin); return; } | |
| 2179 | + style_header("All Cluster Artifacts"); | |
| 2180 | + db_prepare(&q, | |
| 2181 | + "SELECT blob.uuid, " | |
| 2182 | + " datetime(rcvfrom.mtime)," | |
| 2183 | + " user.login," | |
| 2184 | + " rcvfrom.ipaddr" | |
| 2185 | + " FROM tagxref JOIN blob ON tagxref.rid=blob.rid" | |
| 2186 | + " LEFT JOIN rcvfrom ON blob.rcvid=rcvfrom.rcvid" | |
| 2187 | + " LEFT JOIN user ON user.uid=rcvfrom.uid" | |
| 2188 | + " WHERE tagxref.tagid=%d" | |
| 2189 | + " ORDER BY rcvfrom.mtime, blob.uuid", | |
| 2190 | + TAG_CLUSTER | |
| 2191 | + ); | |
| 2192 | + @ <table cellpadding="2" cellspacing="0" border="1"> | |
| 2193 | + @ <tr><th>Hash<th>Date<th>User<th>IP-Address | |
| 2194 | + while( db_step(&q)==SQLITE_ROW ){ | |
| 2195 | + const char *zUuid = db_column_text(&q, 0); | |
| 2196 | + const char *zDate = db_column_text(&q, 1); | |
| 2197 | + const char *zUser = db_column_text(&q, 2); | |
| 2198 | + const char *zIp = db_column_text(&q, 3); | |
| 2199 | + @ <tr><td><a href="%R/info/%S(zUuid)">%S(zUuid)</a> | |
| 2200 | + if( zDate ){ | |
| 2201 | + @ <td>%h(zDate) | |
| 2202 | + }else{ | |
| 2203 | + @ <td> | |
| 2204 | + } | |
| 2205 | + if( zUser ){ | |
| 2206 | + @ <td>%h(zUser) | |
| 2207 | + }else{ | |
| 2208 | + @ <td> | |
| 2209 | + } | |
| 2210 | + if( zIp ){ | |
| 2211 | + @ <td>%h(zIp) | |
| 2212 | + }else{ | |
| 2213 | + @ <td> | |
| 2214 | + } | |
| 2215 | + @ </tr> | |
| 2216 | + } | |
| 2217 | + @ </table> | |
| 2218 | + db_finalize(&q); | |
| 2219 | + style_finish_page(); | |
| 2220 | +} | |
| 2168 | 2221 |
| --- src/name.c | |
| +++ src/name.c | |
| @@ -2163,5 +2163,58 @@ | |
| 2163 | " ORDER BY 1"); |
| 2164 | @ <h1>Hash Prefix Collisions on All Artifacts</h1> |
| 2165 | collision_report("SELECT uuid FROM blob ORDER BY 1"); |
| 2166 | style_finish_page(); |
| 2167 | } |
| 2168 |
| --- src/name.c | |
| +++ src/name.c | |
| @@ -2163,5 +2163,58 @@ | |
| 2163 | " ORDER BY 1"); |
| 2164 | @ <h1>Hash Prefix Collisions on All Artifacts</h1> |
| 2165 | collision_report("SELECT uuid FROM blob ORDER BY 1"); |
| 2166 | style_finish_page(); |
| 2167 | } |
| 2168 | |
| 2169 | /* |
| 2170 | ** WEBPAGE: clusterlist |
| 2171 | ** |
| 2172 | ** Show information about all cluster artifacts in the database. |
| 2173 | ** This page is accessible by administrators only. |
| 2174 | */ |
| 2175 | void clusterlist_page(void){ |
| 2176 | Stmt q; |
| 2177 | login_check_credentials(); |
| 2178 | if( !g.perm.Admin ){ login_needed(g.anon.Admin); return; } |
| 2179 | style_header("All Cluster Artifacts"); |
| 2180 | db_prepare(&q, |
| 2181 | "SELECT blob.uuid, " |
| 2182 | " datetime(rcvfrom.mtime)," |
| 2183 | " user.login," |
| 2184 | " rcvfrom.ipaddr" |
| 2185 | " FROM tagxref JOIN blob ON tagxref.rid=blob.rid" |
| 2186 | " LEFT JOIN rcvfrom ON blob.rcvid=rcvfrom.rcvid" |
| 2187 | " LEFT JOIN user ON user.uid=rcvfrom.uid" |
| 2188 | " WHERE tagxref.tagid=%d" |
| 2189 | " ORDER BY rcvfrom.mtime, blob.uuid", |
| 2190 | TAG_CLUSTER |
| 2191 | ); |
| 2192 | @ <table cellpadding="2" cellspacing="0" border="1"> |
| 2193 | @ <tr><th>Hash<th>Date<th>User<th>IP-Address |
| 2194 | while( db_step(&q)==SQLITE_ROW ){ |
| 2195 | const char *zUuid = db_column_text(&q, 0); |
| 2196 | const char *zDate = db_column_text(&q, 1); |
| 2197 | const char *zUser = db_column_text(&q, 2); |
| 2198 | const char *zIp = db_column_text(&q, 3); |
| 2199 | @ <tr><td><a href="%R/info/%S(zUuid)">%S(zUuid)</a> |
| 2200 | if( zDate ){ |
| 2201 | @ <td>%h(zDate) |
| 2202 | }else{ |
| 2203 | @ <td> |
| 2204 | } |
| 2205 | if( zUser ){ |
| 2206 | @ <td>%h(zUser) |
| 2207 | }else{ |
| 2208 | @ <td> |
| 2209 | } |
| 2210 | if( zIp ){ |
| 2211 | @ <td>%h(zIp) |
| 2212 | }else{ |
| 2213 | @ <td> |
| 2214 | } |
| 2215 | @ </tr> |
| 2216 | } |
| 2217 | @ </table> |
| 2218 | db_finalize(&q); |
| 2219 | style_finish_page(); |
| 2220 | } |
| 2221 |