Fossil SCM

Add the /clusterlist webpage.

drh 2024-12-20 15:04 trunk
Commit a2ce1f109a21dc6426820f1e23fb10e278ca6befaacaa4f1f56d8a4fb7f6df84
1 file changed +53
+53
--- src/name.c
+++ src/name.c
@@ -2163,5 +2163,58 @@
21632163
" ORDER BY 1");
21642164
@ <h1>Hash Prefix Collisions on All Artifacts</h1>
21652165
collision_report("SELECT uuid FROM blob ORDER BY 1");
21662166
style_finish_page();
21672167
}
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>&nbsp;
2204
+ }
2205
+ if( zUser ){
2206
+ @ <td>%h(zUser)
2207
+ }else{
2208
+ @ <td>&nbsp;
2209
+ }
2210
+ if( zIp ){
2211
+ @ <td>%h(zIp)
2212
+ }else{
2213
+ @ <td>&nbsp;
2214
+ }
2215
+ @ </tr>
2216
+ }
2217
+ @ </table>
2218
+ db_finalize(&q);
2219
+ style_finish_page();
2220
+}
21682221
--- 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>&nbsp;
2204 }
2205 if( zUser ){
2206 @ <td>%h(zUser)
2207 }else{
2208 @ <td>&nbsp;
2209 }
2210 if( zIp ){
2211 @ <td>%h(zIp)
2212 }else{
2213 @ <td>&nbsp;
2214 }
2215 @ </tr>
2216 }
2217 @ </table>
2218 db_finalize(&q);
2219 style_finish_page();
2220 }
2221

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button