Check-in [8e3bad04ee]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add "Truncate" and "Download" buttons to the /errorlog display. Provide a link to the error log on the /setup page.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256:8e3bad04eef13d83fc44cc980a345b153cdc1c22a8a6e804f2f99a4d70b5af7e
User & Date: drh 2018-07-12 14:09:35
Context
2018-07-12
14:21
Put a link to the error log on the /stat page. The link is only visible to administrators. check-in: 488709be44 user: drh tags: trunk
14:09
Add "Truncate" and "Download" buttons to the /errorlog display. Provide a link to the error log on the /setup page. check-in: 8e3bad04ee user: drh tags: trunk
13:15
Get the smtp_mx_host() routine working on Windows in addition to Linux. check-in: 9a6c6c2cda user: drh tags: trunk
Changes

Changes to src/security_audit.c.

394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
...
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
...
430
431
432
433
434
435
436
437










438

439





440
441
442
443
444
445
446

  style_footer();
}

/*
** The maximum number of bytes of log to show
*/
#define MXSHOWLOG 20000

/*
** WEBPAGE: errorlog
**
** Show the content of the error log.  Only the administrator can view
** this page.
*/
................................................................................
  login_check_credentials();
  if( !g.perm.Setup && !g.perm.Admin ){
    login_needed(0);
    return;
  }
  style_header("Server Error Log");
  if( g.zErrlog==0 || fossil_strcmp(g.zErrlog,"-")==0 ){
    @ <p>There is no server error log!
    @ <p>To create a server error log:
    @ <ol>
    @ <li><p>
    @ If the server is running as CGI, then create a line in the CGI file
    @ like this:
    @ <blockquote><pre>
    @ errorlog: <i>FILENAME</i>
................................................................................
    @ If the server is running using one of 
    @ the "fossil http" or "fossil server" commands then add
    @ a command-line option "--errorlog <i>FILENAME</i>" to that
    @ command.
    @ </ol>
    style_footer();
    return;
  }










  szFile = file_size(g.zErrlog, ExtFILE);

  @ <p>The server error log at "%h(g.zErrlog)" is %,lld(szFile) bytes in size.





  in = fossil_fopen(g.zErrlog, "rb");
  if( in==0 ){
    @ <p class='generalError'>Unable top open that file for reading!</p>
    style_footer();
    return;
  }
  if( szFile>MXSHOWLOG ){







|







 







<







 








>
>
>
>
>
>
>
>
>
>

>

>
>
>
>
>







394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
...
413
414
415
416
417
418
419

420
421
422
423
424
425
426
...
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461

  style_footer();
}

/*
** The maximum number of bytes of log to show
*/
#define MXSHOWLOG 50000

/*
** WEBPAGE: errorlog
**
** Show the content of the error log.  Only the administrator can view
** this page.
*/
................................................................................
  login_check_credentials();
  if( !g.perm.Setup && !g.perm.Admin ){
    login_needed(0);
    return;
  }
  style_header("Server Error Log");
  if( g.zErrlog==0 || fossil_strcmp(g.zErrlog,"-")==0 ){

    @ <p>To create a server error log:
    @ <ol>
    @ <li><p>
    @ If the server is running as CGI, then create a line in the CGI file
    @ like this:
    @ <blockquote><pre>
    @ errorlog: <i>FILENAME</i>
................................................................................
    @ If the server is running using one of 
    @ the "fossil http" or "fossil server" commands then add
    @ a command-line option "--errorlog <i>FILENAME</i>" to that
    @ command.
    @ </ol>
    style_footer();
    return;
  }
  if( P("truncate") && cgi_csrf_safe(1) ){
    fclose(fopen(g.zErrlog,"w"));
  }
  if( P("download") ){
    Blob log;
    blob_read_from_file(&log, g.zErrlog, ExtFILE);
    cgi_set_content_type("text/plain");
    cgi_set_content(&log);
    return;
  }
  szFile = file_size(g.zErrlog, ExtFILE);
  @ <form action="%R/errorlog" method="POST">
  @ <p>The server error log at "%h(g.zErrlog)" is %,lld(szFile) bytes in size.
  if( szFile>1000 ){
    @ <input type="submit" name="download" value="Download">
    @ <input type="submit" name="truncate" value="Truncate">
  }
  @ </form>
  in = fossil_fopen(g.zErrlog, "rb");
  if( in==0 ){
    @ <p class='generalError'>Unable top open that file for reading!</p>
    style_footer();
    return;
  }
  if( szFile>MXSHOWLOG ){

Changes to src/setup.c.

139
140
141
142
143
144
145


146
147
148
149
150
151
152
    "Show artifacts that are shunned by this repository");
  setup_menu_entry("Artifact Receipts Log", "rcvfromlist",
    "A record of received artifacts and their sources");
  setup_menu_entry("User Log", "access_log",
    "A record of login attempts");
  setup_menu_entry("Administrative Log", "admin_log",
    "View the admin_log entries");


  setup_menu_entry("Unversioned Files", "uvlist?byage=1",
    "Show all unversioned files held");
  setup_menu_entry("Stats", "stat",
    "Repository Status Reports");
  setup_menu_entry("Sitemap", "sitemap",
    "Links to miscellaneous pages");
  setup_menu_entry("SQL", "admin_sql",







>
>







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
    "Show artifacts that are shunned by this repository");
  setup_menu_entry("Artifact Receipts Log", "rcvfromlist",
    "A record of received artifacts and their sources");
  setup_menu_entry("User Log", "access_log",
    "A record of login attempts");
  setup_menu_entry("Administrative Log", "admin_log",
    "View the admin_log entries");
  setup_menu_entry("Error Log", "errorlog",
    "View the Fossil server error log");
  setup_menu_entry("Unversioned Files", "uvlist?byage=1",
    "Show all unversioned files held");
  setup_menu_entry("Stats", "stat",
    "Repository Status Reports");
  setup_menu_entry("Sitemap", "sitemap",
    "Links to miscellaneous pages");
  setup_menu_entry("SQL", "admin_sql",