Fossil SCM

On the /rcvfromlist page, show the hash algorithms used for each batch of artifacts received.

drh 2017-03-16 15:29 trunk
Commit 386191d37967aaba59ed7af527874ce572b83c06efbe0d02418618290370d0cf
1 file changed +24 -5
+24 -5
--- src/shun.c
+++ src/shun.c
@@ -308,10 +308,11 @@
308308
void rcvfromlist_page(void){
309309
int ofst = atoi(PD("ofst","0"));
310310
int showAll = P("all")!=0;
311311
int cnt;
312312
Stmt q;
313
+ const int perScreen = 500; /* RCVIDs per page */
313314
314315
login_check_credentials();
315316
if( !g.perm.Admin ){
316317
login_needed(0);
317318
return;
@@ -322,27 +323,39 @@
322323
}else{
323324
style_submenu_element("All", "rcvfromlist?all=1");
324325
}
325326
if( ofst>0 ){
326327
style_submenu_element("Newer", "rcvfromlist?ofst=%d",
327
- ofst>30 ? ofst-30 : 0);
328
+ ofst>perScreen ? ofst-perScreen : 0);
328329
}
329330
db_multi_exec(
330331
"CREATE TEMP TABLE rcvidUsed(x INTEGER PRIMARY KEY);"
332
+ "CREATE TEMP TABLE rcvidSha1(x INTEGER PRIMARY KEY);"
333
+ "CREATE TEMP TABLE rcvidSha3(x INTEGER PRIMARY KEY);"
331334
"INSERT OR IGNORE INTO rcvidUsed(x) SELECT rcvid FROM blob;"
335
+ "INSERT OR IGNORE INTO rcvidSha1(x)"
336
+ " SELECT rcvid FROM blob WHERE length(uuid)==40;"
337
+ "INSERT OR IGNORE INTO rcvidSha3(x)"
338
+ " SELECT rcvid FROM blob WHERE length(uuid)==64;"
332339
);
333340
if( db_table_exists("repository","unversioned") ){
334341
db_multi_exec(
335342
"INSERT OR IGNORE INTO rcvidUsed(x) SELECT rcvid FROM unversioned;"
343
+ "INSERT OR IGNORE INTO rcvidSha1(x)"
344
+ " SELECT rcvid FROM unversioned WHERE length(hash)==40;"
345
+ "INSERT OR IGNORE INTO rcvidSha3(x)"
346
+ " SELECT rcvid FROM unversioned WHERE length(hash)==64;"
336347
);
337348
}
338349
db_prepare(&q,
339350
"SELECT rcvid, login, datetime(rcvfrom.mtime), rcvfrom.ipaddr,"
340
- " EXISTS(SELECT 1 FROM rcvidUsed WHERE x=rcvfrom.rcvid)"
351
+ " EXISTS(SELECT 1 FROM rcvidUsed WHERE x=rcvfrom.rcvid),"
352
+ " EXISTS(SELECT 1 FROM rcvidSha1 WHERE x=rcvfrom.rcvid),"
353
+ " EXISTS(SELECT 1 FROM rcvidSha3 WHERE x=rcvfrom.rcvid)"
341354
" FROM rcvfrom LEFT JOIN user USING(uid)"
342355
" ORDER BY rcvid DESC LIMIT %d OFFSET %d",
343
- showAll ? -1 : 31, ofst
356
+ showAll ? -1 : perScreen+1, ofst
344357
);
345358
@ <p>Whenever new artifacts are added to the repository, either by
346359
@ push or using the web interface, an entry is made in the RCVFROM table
347360
@ to record the source of that artifact. This log facilitates
348361
@ finding and fixing attempts to inject illicit content into the
@@ -356,19 +369,24 @@
356369
@
357370
@ <table cellpadding="0" cellspacing="0" border="0">
358371
@ <tr><th style="padding-right: 15px;text-align: right;">rcvid</th>
359372
@ <th style="padding-right: 15px;text-align: left;">Date</th>
360373
@ <th style="padding-right: 15px;text-align: left;">User</th>
374
+ @ <th style="padding-right: 15px;text-align: left;">Hash</th>
361375
@ <th style="text-align: left;">IP&nbsp;Address</th></tr>
362376
cnt = 0;
363377
while( db_step(&q)==SQLITE_ROW ){
364378
int rcvid = db_column_int(&q, 0);
365379
const char *zUser = db_column_text(&q, 1);
366380
const char *zDate = db_column_text(&q, 2);
367381
const char *zIpAddr = db_column_text(&q, 3);
368
- if( cnt==30 && !showAll ){
369
- style_submenu_element("Older", "rcvfromlist?ofst=%d", ofst+30);
382
+ int usesSha1 = db_column_int(&q, 5)!=0;
383
+ int usesSha3 = db_column_int(&q, 6)!=0;
384
+ static const char *zHashType[] = { "", "sha1", "sha3", "both" };
385
+ const char *zHash = zHashType[usesSha1+usesSha3*2];
386
+ if( cnt==perScreen && !showAll ){
387
+ style_submenu_element("Older", "rcvfromlist?ofst=%d", ofst+perScreen);
370388
}else{
371389
cnt++;
372390
@ <tr>
373391
if( db_column_int(&q,4) ){
374392
@ <td style="padding-right: 15px;text-align: right;">
@@ -376,10 +394,11 @@
376394
}else{
377395
@ <td style="padding-right: 15px;text-align: right;">%d(rcvid)</td>
378396
}
379397
@ <td style="padding-right: 15px;text-align: left;">%s(zDate)</td>
380398
@ <td style="padding-right: 15px;text-align: left;">%h(zUser)</td>
399
+ @ <td style="padding-right: 15px;text-align: left;">%s(zHash)</td>
381400
@ <td style="text-align: left;">%s(zIpAddr)</td>
382401
@ </tr>
383402
}
384403
}
385404
db_finalize(&q);
386405
--- src/shun.c
+++ src/shun.c
@@ -308,10 +308,11 @@
308 void rcvfromlist_page(void){
309 int ofst = atoi(PD("ofst","0"));
310 int showAll = P("all")!=0;
311 int cnt;
312 Stmt q;
 
313
314 login_check_credentials();
315 if( !g.perm.Admin ){
316 login_needed(0);
317 return;
@@ -322,27 +323,39 @@
322 }else{
323 style_submenu_element("All", "rcvfromlist?all=1");
324 }
325 if( ofst>0 ){
326 style_submenu_element("Newer", "rcvfromlist?ofst=%d",
327 ofst>30 ? ofst-30 : 0);
328 }
329 db_multi_exec(
330 "CREATE TEMP TABLE rcvidUsed(x INTEGER PRIMARY KEY);"
 
 
331 "INSERT OR IGNORE INTO rcvidUsed(x) SELECT rcvid FROM blob;"
 
 
 
 
332 );
333 if( db_table_exists("repository","unversioned") ){
334 db_multi_exec(
335 "INSERT OR IGNORE INTO rcvidUsed(x) SELECT rcvid FROM unversioned;"
 
 
 
 
336 );
337 }
338 db_prepare(&q,
339 "SELECT rcvid, login, datetime(rcvfrom.mtime), rcvfrom.ipaddr,"
340 " EXISTS(SELECT 1 FROM rcvidUsed WHERE x=rcvfrom.rcvid)"
 
 
341 " FROM rcvfrom LEFT JOIN user USING(uid)"
342 " ORDER BY rcvid DESC LIMIT %d OFFSET %d",
343 showAll ? -1 : 31, ofst
344 );
345 @ <p>Whenever new artifacts are added to the repository, either by
346 @ push or using the web interface, an entry is made in the RCVFROM table
347 @ to record the source of that artifact. This log facilitates
348 @ finding and fixing attempts to inject illicit content into the
@@ -356,19 +369,24 @@
356 @
357 @ <table cellpadding="0" cellspacing="0" border="0">
358 @ <tr><th style="padding-right: 15px;text-align: right;">rcvid</th>
359 @ <th style="padding-right: 15px;text-align: left;">Date</th>
360 @ <th style="padding-right: 15px;text-align: left;">User</th>
 
361 @ <th style="text-align: left;">IP&nbsp;Address</th></tr>
362 cnt = 0;
363 while( db_step(&q)==SQLITE_ROW ){
364 int rcvid = db_column_int(&q, 0);
365 const char *zUser = db_column_text(&q, 1);
366 const char *zDate = db_column_text(&q, 2);
367 const char *zIpAddr = db_column_text(&q, 3);
368 if( cnt==30 && !showAll ){
369 style_submenu_element("Older", "rcvfromlist?ofst=%d", ofst+30);
 
 
 
 
370 }else{
371 cnt++;
372 @ <tr>
373 if( db_column_int(&q,4) ){
374 @ <td style="padding-right: 15px;text-align: right;">
@@ -376,10 +394,11 @@
376 }else{
377 @ <td style="padding-right: 15px;text-align: right;">%d(rcvid)</td>
378 }
379 @ <td style="padding-right: 15px;text-align: left;">%s(zDate)</td>
380 @ <td style="padding-right: 15px;text-align: left;">%h(zUser)</td>
 
381 @ <td style="text-align: left;">%s(zIpAddr)</td>
382 @ </tr>
383 }
384 }
385 db_finalize(&q);
386
--- src/shun.c
+++ src/shun.c
@@ -308,10 +308,11 @@
308 void rcvfromlist_page(void){
309 int ofst = atoi(PD("ofst","0"));
310 int showAll = P("all")!=0;
311 int cnt;
312 Stmt q;
313 const int perScreen = 500; /* RCVIDs per page */
314
315 login_check_credentials();
316 if( !g.perm.Admin ){
317 login_needed(0);
318 return;
@@ -322,27 +323,39 @@
323 }else{
324 style_submenu_element("All", "rcvfromlist?all=1");
325 }
326 if( ofst>0 ){
327 style_submenu_element("Newer", "rcvfromlist?ofst=%d",
328 ofst>perScreen ? ofst-perScreen : 0);
329 }
330 db_multi_exec(
331 "CREATE TEMP TABLE rcvidUsed(x INTEGER PRIMARY KEY);"
332 "CREATE TEMP TABLE rcvidSha1(x INTEGER PRIMARY KEY);"
333 "CREATE TEMP TABLE rcvidSha3(x INTEGER PRIMARY KEY);"
334 "INSERT OR IGNORE INTO rcvidUsed(x) SELECT rcvid FROM blob;"
335 "INSERT OR IGNORE INTO rcvidSha1(x)"
336 " SELECT rcvid FROM blob WHERE length(uuid)==40;"
337 "INSERT OR IGNORE INTO rcvidSha3(x)"
338 " SELECT rcvid FROM blob WHERE length(uuid)==64;"
339 );
340 if( db_table_exists("repository","unversioned") ){
341 db_multi_exec(
342 "INSERT OR IGNORE INTO rcvidUsed(x) SELECT rcvid FROM unversioned;"
343 "INSERT OR IGNORE INTO rcvidSha1(x)"
344 " SELECT rcvid FROM unversioned WHERE length(hash)==40;"
345 "INSERT OR IGNORE INTO rcvidSha3(x)"
346 " SELECT rcvid FROM unversioned WHERE length(hash)==64;"
347 );
348 }
349 db_prepare(&q,
350 "SELECT rcvid, login, datetime(rcvfrom.mtime), rcvfrom.ipaddr,"
351 " EXISTS(SELECT 1 FROM rcvidUsed WHERE x=rcvfrom.rcvid),"
352 " EXISTS(SELECT 1 FROM rcvidSha1 WHERE x=rcvfrom.rcvid),"
353 " EXISTS(SELECT 1 FROM rcvidSha3 WHERE x=rcvfrom.rcvid)"
354 " FROM rcvfrom LEFT JOIN user USING(uid)"
355 " ORDER BY rcvid DESC LIMIT %d OFFSET %d",
356 showAll ? -1 : perScreen+1, ofst
357 );
358 @ <p>Whenever new artifacts are added to the repository, either by
359 @ push or using the web interface, an entry is made in the RCVFROM table
360 @ to record the source of that artifact. This log facilitates
361 @ finding and fixing attempts to inject illicit content into the
@@ -356,19 +369,24 @@
369 @
370 @ <table cellpadding="0" cellspacing="0" border="0">
371 @ <tr><th style="padding-right: 15px;text-align: right;">rcvid</th>
372 @ <th style="padding-right: 15px;text-align: left;">Date</th>
373 @ <th style="padding-right: 15px;text-align: left;">User</th>
374 @ <th style="padding-right: 15px;text-align: left;">Hash</th>
375 @ <th style="text-align: left;">IP&nbsp;Address</th></tr>
376 cnt = 0;
377 while( db_step(&q)==SQLITE_ROW ){
378 int rcvid = db_column_int(&q, 0);
379 const char *zUser = db_column_text(&q, 1);
380 const char *zDate = db_column_text(&q, 2);
381 const char *zIpAddr = db_column_text(&q, 3);
382 int usesSha1 = db_column_int(&q, 5)!=0;
383 int usesSha3 = db_column_int(&q, 6)!=0;
384 static const char *zHashType[] = { "", "sha1", "sha3", "both" };
385 const char *zHash = zHashType[usesSha1+usesSha3*2];
386 if( cnt==perScreen && !showAll ){
387 style_submenu_element("Older", "rcvfromlist?ofst=%d", ofst+perScreen);
388 }else{
389 cnt++;
390 @ <tr>
391 if( db_column_int(&q,4) ){
392 @ <td style="padding-right: 15px;text-align: right;">
@@ -376,10 +394,11 @@
394 }else{
395 @ <td style="padding-right: 15px;text-align: right;">%d(rcvid)</td>
396 }
397 @ <td style="padding-right: 15px;text-align: left;">%s(zDate)</td>
398 @ <td style="padding-right: 15px;text-align: left;">%h(zUser)</td>
399 @ <td style="padding-right: 15px;text-align: left;">%s(zHash)</td>
400 @ <td style="text-align: left;">%s(zIpAddr)</td>
401 @ </tr>
402 }
403 }
404 db_finalize(&q);
405

Keyboard Shortcuts

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