• exec/webfileindex.ssjs

    From echicken@VERT to Git commit to main/sbbs/master on Tue Dec 19 21:16:33 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/22e2668c910966d08041a227
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Style updates and HyperText Mark-Up Language doodads.

    Put th row inside a thead as is proper.
    Put td rows inside a tbody as is proper.
    Close td elements even if not strictly necessary. Good form.
    Use a subjectively nicer font.
    Use a subjectively more readable date format.
    Put some space and border between table elements.
    Stripe rows for better visual indicator of separate data.
    Make the header row sticky so we always know which column's what.
    Add dark mode colors if browser prefers-color-scheme dark.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From echicken@VERT to Git commit to main/sbbs/master on Tue Dec 19 21:29:05 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/5445c5db9a7ed0637d9b7ec3
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Don't bold date, abbreviate month
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From echicken@VERT to Git commit to main/sbbs/master on Tue Dec 19 21:35:36 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/0036760824a80574ebfb937b
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Dark mode links should pop out a bit more.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From echicken@VERT to Git commit to main/sbbs/master on Tue Dec 19 22:38:43 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/a47ce702daae16e8e22786e0
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Top-align cell contents; cursor: pointer on description hover; show extended description if any on description click.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From echicken@VERT to Git commit to main/sbbs/master on Tue Dec 19 23:01:12 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/e0ec9ae216b6c6b0ebba67b4
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Fix whoopsiedoodle in last committeroo
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From echicken@VERT to Git commit to main/sbbs/master on Tue Dec 19 23:05:32 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/4c93d71c5896a47b4b8ecd98
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Only change cursor if desc td has div child; exit desc click handler if no extdesc div; only add div child to desc td if extdesc present;
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From echicken@VERT to Git commit to main/sbbs/master on Tue Dec 19 23:16:49 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/3af564a2a2120477033a3574
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    get extended detail when reading file meta list
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From echicken@VERT to Git commit to main/sbbs/master on Wed Dec 20 06:20:12 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/1cc8d294625958505d866880
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    02:23:11 <DigitalMan> maybe a button/link to expand/collapse all the extended comments? Would make text searching easier
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Dec 20 17:09:58 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/22f1c81eeea8d6d126f46ae3
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Strip Ctrl-A codes from extended file descriptions

    I'm doing this manually with String.replace() because the "built-in" strip_ctrl_a() function doesn't expand ^A/ (conditional line-break) as it
    would need to.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Apr 3 22:53:00 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/8a062f598a8e7ed9545ccde4
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    When file size is less than 1 byte in length, don't list

    0-byte or non-existent files can't be http-downloaded anyway
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Sep 16 13:57:39 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/dc1f8759e7d313c532432c15
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Display the file index date-time instead of the file's date-time

    Since sorting works on the file index record date-time (date/time added)
    it was confusing to display dates that didn't always match the sort order.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Dec 5 17:00:15 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/37126d82ef319ffc51fb393b
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Display directory aliases from web_alias.ini as shortcuts on index page

    Other kinds of aliases are supported in web_alias.ini (e.g. libraries, files) but not displaying those here (yet).
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Jan 22 23:19:39 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/50d04b24aae59ae24d57d1bf
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Add support for viewing file (images and archive) contents
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Jan 22 23:58:33 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/6d41d290d62dc14fbf6dad09
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Filter out the non-viewable files for the next/prev file buttons
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Jan 23 01:59:25 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/9e039b2006a57b0d8b8ca4cd
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Display file SHA1 (if has one) and date/time in div title (hover text)
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Jan 23 02:54:19 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/f0ca1a1846408f01345d0f0d
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Minor beautification

    Indenting lib and dir lists use the ul tag, I'm sure this isn't technically the most correct way to do this, but its providing the cosmetic result I want.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Jan 23 23:32:17 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/65f79e9c747589dc1a4ab53e
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Cosmetic improvements using Unicode characters as icons

    (file cabinets, folders)

    Bold the directory/library names and other markup improvements.

    Expand viewable types to more readable archive types supported by libarchive (many more than the list in Archive.supported_formats).
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Feb 5 18:44:18 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/c830577e0aab9ef087aedce7
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Handle files where the 'added' property is 0 or undefined
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thu Feb 20 20:29:35 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/936351241814cec19ee5e95a
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    Fix links to filenames with spaces

    View images in a smaller viewport (I'm no CSS expert here, obviously)
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Jul 29 20:43:50 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/3957d2aee3c84479ae2339e1
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    webfileindex: quote the interpolated URL attributes

    Three attributes interpolated a filename into an unquoted value: the
    file-view href, the download href, and the image src that view_image()
    emits.

    The view href was the worst of them, because its opening quote sat on the
    wrong side of the ?view= token:

    <a href=?view="somefile.zip" title='View'>

    A parser reading an unquoted attribute value takes everything up to the
    first whitespace, so href became ?view="somefile.zip" - quotes included -
    which browsers then request as ?view=%22somefile.zip%22. Both forms
    resolve to the same archive listing, so every viewable file had two working URLs and crawlers walked both: 14,067 of one day's 20,583 ?view= requests
    on this host were the quoted duplicate.

    The other two were merely unquoted. encodeURIComponent leaves ' unencoded,
    and an apostrophe is not legal in an unquoted attribute value, so both
    relied on parser leniency. There is a real instance here: JAIL'M.ZIP in Cyber.Xpo.95/GOVWATCH rendered as href=JAIL'M.ZIP. Of 1412 file
    directories, 8 filenames contain a character encodeURIComponent leaves
    alone that an unquoted attribute disallows, and one of those is viewable.

    Spaces were never at risk in any of the three - encodeURIComponent had
    already turned them into %20, so nothing terminated the value early - and
    they still work; no URL that worked before stops working. Verified that the directory index still renders and that JAIL'M.ZIP both views and downloads.

    One unquoted attribute is left alone deliberately: the static href=http://www.synchro.net in the footer interpolates nothing, so its value cannot vary.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Sep 20 03:31:33 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/12504437d6e893524b5f72be
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    webfileindex: serve archive listings from the content store

    view_archive() re-enumerated the archive on every request. It now reads the per-area content store, extracting and storing only on a miss, so a crawl of the file base pays for each archive once rather than once per view.

    Archive entry names are now HTML-encoded. Those names come from inside the archive, where ILLEGAL_FILENAME_CHARS does not constrain them, so an entry named with markup was written into the page as-is. File-base names elsewhere
    on the page are unaffected, since < > and " are illegal in those.

    'arc' joins the viewable-archive list. libarchive cannot read the format at all, so the web reported "Non-viewable file type" for every one of them and never reached the extraction path; the store's external-tool fallback lists them.

    #1247

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Sep 21 22:21:21 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/cc328fcea5c7d4b48e7ccb6a
    Modified Files:
    exec/webfileindex.ssjs
    Log Message:
    webfileindex: encode archive entry names as text rather than as ANSI

    An entry name came from inside the archive and went through
    html_encode() with the ANSI and Ctrl-A conversions left enabled, so
    every listing row was wrapped in a hard-coded inline color span (black background, overriding the dark-mode style sheet), and an ESC or Ctrl-A
    in a name was rendered as markup rather than escaped.

    Extended ASCII was converted to numeric character references, which is
    correct for the CP437 names in a DOS-era archive but mangles a name a
    modern tool wrote in UTF-8: every byte of the sequence became a separate
    CP437 entity.

    Encode with only the HTML escaping enabled, then convert CP437 to UTF-8
    the way this script already does for file descriptions, skipping the
    conversion when the name is valid UTF-8 already. That is the test
    newsutil.js applies to a message body.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net