• Sort files listing by name ?

    From Gods69@21:3/220 to All on Sat Jan 24 11:00:02 2026
    Hi,
    There is an setting to (sort)/display in alphabetical order the files (in filebase) after a mass upload ? (on the same day of course). The files uploaded appear in random order.
    Thanks.

    ... Always tell her she's pretty, especially when she isn't.

    --- Mystic BBS v1.12 A48 (Linux/64)
    * Origin: Gods69 BBS (21:3/220)
  • From CloudDancer@21:3/226 to Gods69 on Sat Jan 24 13:36:25 2026
    Hey G,

    There is an setting to (sort)/display in alphabetical order the files (in filebase) after a mass upload ? (on the same day of course). The files uploaded appear in random order.

    Easiest way to do is to set up an mutil event to do this for you say every hour or so, or at least daily ...

    In your main mystic bbs folder create a file called "maintenance.ini".

    Enter this into it:

    [General]
    FileSort = true
    logfile = maintenance.log
    logcache = true
    loglevel = 3
    logtype = 2
    maxlogfiles = 7
    maxlogsize = 10000

    [FileSort]

    ; Sort on which attribute
    ; (0=filename 1=size 2=date 3=downloads)

    attribute = 0

    ; Sort direction 0=Ascending (A to Z, 1 to 10)
    ; 1=Descending (Z to A, 10 to 1)

    direction = 0

    Save this file. Then from mysticbbs root directory call

    ./mutil maintenance.ini

    This will run the script and sort all of your files in all areas.

    To automate this, go to Mystic Config -> Editors -> Event Editor.

    Add a new event (/ followed by I), and set the following:
    - Active : Yes
    - Description : Hourly Maintenance
    - Event Type : Interval
    - Exec Hour : 1 <-- every hour
    - Exec Min : 0
    - Shell : mutil maintenance.ini <-- without ./
    - Prefix ./ : Yes
    And on the right side of the wizard make sure to set all days (Sun, Mon, Tue, etc.) to : YES.

    You may have to shutdown the mystic server and restart it again.

    Then under events tab you will see this guy waiting to run in 59 minutes time.

    Cheers!

    -=-=-=-=-=-=-=-
    CloudDancer
    -=-=-=-=-=-=-=-

    ... The shortest distance between two points is under construction

    --- Mystic BBS v1.12 A48 (Linux/64)
    * Origin: -= bbs.silfenpath.com | Columbus, Ohio (USA) =- (21:3/226)
  • From Gods69@21:3/220 to CloudDancer on Sun Jan 25 08:48:46 2026
    Easiest way to do is to set up an mutil event to do this for you say
    every hour or so, or at least daily ...

    Thanks! I didn't know that i have that possibility with MUTIL ;-)

    ... A bird in the hand might.

    --- Mystic BBS v1.12 A48 (Linux/64)
    * Origin: Gods69 BBS (21:3/220)
  • From paulie420@21:2/150 to Gods69 on Sat Jan 24 12:27:47 2026
    There is an setting to (sort)/display in alphabetical order the files (in filebase) after a mass upload ? (on the same day of course). The files uploaded appear in random order.

    You just need to run mutil with a correct .ini that sorts the file bases.

    https://wiki.mysticbbs.com/doku.php?id=mutil_ini_1.12

    NOTE: The FileToss, PackFileBases and FileSort options; then, UNDERNEATH you'll find settings for those various options that you can set. Do be careful, sometimes PackFileBases can delete files if they aren't present or isn't set up correctly.

    For example, here is MY filesort_packuser.ini:
    ----------
    [General]

    ; list of functions to perform on startup

    Import_FIDONET.NA = false
    Import_MessageBase = false
    Import_FILEBONE.NA = false
    Export_FILEBONE.NA = false
    Import_FILES.BBS = false
    MassUpload = false
    GenerateTopLists = false
    GenerateAllFiles = false
    PurgeMessageBases = false
    PostTextFiles = false
    PackMessageBases = false
    ImportEchoMail = false
    ExportEchoMail = false
    MergeNodeLists = false
    FileToss = false
    PackFileBases = true
    FileSort = true
    LinkMessages = false
    PurgeUserBase = false
    ; Don't use PurgeUserBase:
    ; https://wiki.mysticbbs.com/doku.php?id=mutil_purge_userbase&s[]=purgeu
    serbase
    PackUserBase = true
    AutoHatch = false

    ; Set this value if you want to run mutil from a directory other than
    ; the root Mystic directory or the mysticbbs environment variable:

    ; mystic_directory=c:\mystic\mystic.dat

    ; If no directory is specified in the logfile name, mUtil will attempt
    ; to use the configured LOGS directory from in Mystic's configuration.
    ; Comment out to disable logging completely.

    logfile=mutil.log

    ; If set to TRUE (*HIGHLY* recommended for MUTIL) then it will write the

    ; log file in increments of 8KB at a time. If set to FALSE it will writ
    e
    ; each individual line as it is logged. This will significantly reduce
    ; MUTIL performance if set to FALSE.

    logcache=true

    ; Level 1 = basic
    ; Level 2 = verbose
    ; Level 3 = debug
    ;
    ; Note that the loglevel can also be set in a specific stanza and that v
    alue
    ; will override the value defined here only for that specific stanza

    loglevel=3

    ; logfile time stamp. defaults to NNN DD HH:II:SS if not set here
    ;logstamp = YYYYHHMMHHIISS

    ; Log roller type:
    ; 0 = Do not roll log files
    ; 1 = Roll by number of files/filesize
    ; 2 = Roll by number of days

    logtype = 0

    ; number of log files to keep (0 to disable log rolling)
    maxlogfiles = 3

    ; size of each log file in kilobytes
    maxlogsize = 1000

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [Import_FIDONET.NA]

    ; filename to import

    filename = fidonet.na

    ; convert tags to lower case for message base filename 1=yes

    lowercase_filename = 1

    ; The following options define the "default" values used when creating
    ; any new message bases. netaddress must match an exiting network
    ; address configured within Mystic BBS. default values are also
    ; taken from the system configuration for origin line, colors, etc.

    netaddress = 1:1/1
    acs_list =
    acs_read =
    acs_post =
    acs_sysop = s255
    header = msghead
    read_template = ansimrd
    index_template = ansimlst
    max_msgs = 500
    max_msgs_age = 365

    ; true/false type values 0=false 1=true (newscan 2=forced)

    use_autosig = 1
    use_realname = 0
    use_ansi = 1
    kill_kludge = 1
    private_base = 0
    new_scan = 1
    qwk_scan = 1

    ; value is either 0 for JAM or 1 for Squish

    base_format = 0

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [Import_FILEBONE.NA]

    ; filename of filebone.na

    filename = filebone.na

    ; root directory to create file paths under. when a new filebone echo
    ; is found, mUtil will create a file using "root_dir" + areatag. So
    ; for example if root is "c:\mystic\filebase\" and the areatag is
    ; MYSTICBBS it will create "c:\mystic\filebase\MYSTICBBS". This root
    ; directory MUST exist.

    root_dir = c:\mystic\files\

    ; Use echotag for base description and FTP name

    use_echotag = false

    ; Convert tags to lower case for filebase base filename/dir
    ; True or 1 for yes, false or 0 for no

    lowercase_filename = true

    ; Default values when creating a new file base

    dispfile =
    template = ansiflst
    acs_list =
    acs_ftp =
    acs_download =
    acs_upload =
    acs_hatch =
    acs_sysop = s255

    ; true/false type values 0=false 1=true (newscan 2=forced)

    new_scan = 1
    free_files = 0
    show_uploader = 1
    anon_ftp = 0

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [Export_FILEBONE.NA]

    ; Path/Filename of NA file to create

    filename = filebone.na

    ; Include only the following zones (separated by commas)
    ; If commented out, all network bases that have an echotag and address
    ; set will be exported

    ;zones = 0,1,2,3,4

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [Import_FILES.BBS]

    ; This function searches the filebase directories for existance of a
    ; text-based file listing file (often known as FILES.BBS but other
    ; formats can be imported as well

    ; The files must physically exist in the same directory as the file
    ; in order for them to be uploaded to the BBS.

    ; Files that have have different file size in the database compared
    ; to the physical file can also be updated with the new size and a new
    ; file description, useful for using with external TIC processors.

    ; The name of the file to look for in each directory
    filesbbs=files.bbs

    ; Upload name for files uploaded by this function
    uploader_name = Mystic BBS

    ; Delete the FILES.BBS file after processing
    delete_after = false

    ; Update existing files in the database, if their file sizes do not matc
    h?
    ; Both size and description will be imported
    update_files = false

    ; The FILES.BBS format must be configured here using the following optio
    ns
    ;
    ; DESC_FIRST: Defines how the first line of the file description is hand
    led.
    ;
    ; If the value is 0, the importer will expect for the file description
    to
    ; appear directly after the filename (ie, the second "word" on the lin
    e).
    ;
    ; If the value is -1, then the importer will not look for a descriptio
    n on
    ; the first line.
    ;
    ; If the first description line is always at a specific character posi
    tion
    ; on the first line, then DESC_FIRST should contain the character posi
    tion

    desc_first = 0

    ; DESC_CHAR: Defines the character identifier for an extended descriptio
    n line
    ; if this value is blank, it will mean a space.

    desc_char =

    ; DESC_START: Defines the character position of the extended description
    line.
    ; If a line contains the DESC_CHAR at the DESC_START positio
    n,
    ; then the importer will copy everything after that as an ex
    tended
    ; descripttion line.

    desc_start = 14

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [MassUpload]

    ; this function searches all configured file directories for new
    ; files and will upload them into the BBS. It will attempt to
    ; import FILE_ID.DIZ using the configured archivers if the option
    ; is enabled.

    ; Name to save has the uploader

    uploader_name = paulie420

    ; Import FILE_ID.DIZ? 1=yes

    import_fileid = 1

    ; No description string used when no FILE_ID.DIZ is imported.

    no_description = No Description

    ; Ignore list one file mask per line (allows * and ? wildcards)

    ignore = files.bbs
    ;ignore = *.readme

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [GenerateTopLists]

    ; Top list generator can generate up to top 99 for various different
    ; statistics. Each individual top file can be enabled or disabled and
    ; can each have their own template files that are totally configurable.
    ;
    ; 1=enable for top_call, top_post, etc.
    ;
    ; The number of items in each list is determined by the template. It
    ; could be any number between 1 and 99.
    ;
    ; In the templates use @NA01-99 for name and @DA01-99 for numerical data

    ; @DE returns the value set as _desc in the configuration. You can look

    ; at the provided template as an example.
    ;
    ; namelen and datalen define the width the MCI code is padded to
    ;
    ; exclude list is one name per line text file listing names which should

    ; not be included in the generated output. lines that begin with a ;
    ; are considered comments.

    exclude_list = mutil.toplist.exclude.txt

    ; User name for "no one" when for example you have 3 users and make a
    ; top 10 list

    no_user = No one

    ; Sort order. You can use this to calculate top or bottom 99. 1=top

    sort_top=1

    ; configuration for top callers generator
    ; @NA=name @DA=calls

    top_call = 1
    top_call_template = mutil.toplist.txt
    top_call_output = topcallers.asc
    top_call_desc = Callers
    top_call_namelen = 30
    top_call_datalen = 10

    ; configuration for top downloads
    ; @NA=name @DA=downloads

    top_dl = 1
    top_dl_template = mutil.toplist.txt
    top_dl_output = topdownload.asc
    top_dl_desc = Downloaders
    top_dl_namelen = 30
    top_dl_datalen = 10

    top_ul = 1
    top_ul_template = mutil.toplist.txt
    top_ul_output = topupload.asc
    top_ul_desc = Uploaders
    top_ul_namelen = 30
    top_ul_datalen = 10

    top_post = 1
    top_post_template = mutil.toplist.txt
    top_post_output = topposts.asc
    top_post_desc = Posters
    top_post_namelen = 30
    top_post_datalen = 10

    top_pcr = 1
    top_pcr_template = mutil.toplist.txt
    top_pcr_output = toppcr.asc
    top_pcr_desc = Posts Per Call
    top_pcr_namelen = 30
    top_pcr_datalen = 10

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [GenerateAllFiles]

    ; Generate all files list

    ; Path / filename of output filename. If the path is not included then
    the
    ; file will be created in whatever the current working directory is.

    filename = allfiles.txt

    ; ideas/features for the future?
    ; header, footer, baseheader, basefooter, exclude bases, uploader option
    al
    ; uploader line, format list line 1st,2nd line, space between files?

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [PurgeMessageBases]

    ; No options for this function

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [PackMessageBases]

    ; No options for this function

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [PostTextFiles]

    ; Total number of text files to be posted. For each file there needs to

    ; be a file definition as show below.

    totalfiles = 2

    ; This defines one file which will be posted to the message base. Each
    ; file should be prefixed with file# where # is a number from 1 to
    ; totalfiles.
    ;
    ; The delfile option (if true) will remove the filename after the messag
    e
    ; is posted. The baseidx is the permanent index of the message base to
    ; post the message into (shown as Index at the top of the message base
    ; editor in Mystic's configuration. Address is the echomail destination

    ; address

    file1_name = myfile.txt
    file1_baseidx = 2
    file1_from = Sysop
    file1_to = All
    file1_subj = My subject
    file1_addr = 0:0/0
    file1_delfile = false

    file2_name = myfile.txt
    file2_baseidx = 2
    file2_from = Sysop
    file2_to = All
    file2_subj = My subject
    file2_addr = 0:0/0
    file2_delfile = false

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [Import_MessageBase]

    ; This option scans the message base directory, and creates any messages

    ; bases inside of Mystic that have data files in the directory.

    search_subdirs = true

    ; The following options define the "default" values used when creating
    ; new message bases. netaddress must match an exiting network
    ; address configured within Mystic BBS. default values are also
    ; taken from the system configuration for origin line, colors, etc.

    netaddress = 1:1/1
    acs_list =
    acs_read =
    acs_post =
    acs_sysop = s255
    header = msghead
    read_template = ansimrd
    index_template = ansimlst
    max_msgs = 500
    max_msgs_age = 365

    ; network type (0=local, 1=echomail, 2=newsgroup 3=netmail)

    net_type = 1

    ; true/false type values 0=false 1=true (newscan 2=forced)

    use_autosig = 1
    use_realname = 0
    kill_kludge = 1
    private_base = 0
    new_scan = 1
    qwk_scan = 1
    use_ansi = 1

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [ImportEchoMail]

    ; If you want to save duplicated / bad messages to a certain message
    ; base, then set this value to the *INDEX* of the message base (viewable

    ; at the top of the msgbase editor). Otherwise, set this value to -1
    ; or leave it commented out and they will be ignored.

    ; dupe_msg_index = 5

    ; This defines the number of messages to keep in the duplicate database.

    ; Each message takes 8 bytes of data, so for example 32,000 messages tak
    es
    ; 256kb of memory while importing messages. Max is 250,000 messages.

    dupe_db_size = 32000

    ; Toss packets from unsecure directory in addition to inbound?

    unsecure_dir = true

    ; Strip SEEN-BY lines from messages when importing?
    ; Note: This option should never be enabled if you current hub echomail
    ; or plan to act as an echo echomail hub for other BBS systems in the
    ; future.

    strip_seenby = false

    ; Rescan command to use when someone does a full %RESCAN on all bases
    ; This must be a valid command (ie R=<msgs> D=<days> or else the rescan
    ; will refuse to perform any action. The default is the last 250 messag
    es
    ; for each base. Setting it to D=90 for example would give the last 90
    ; days of messages. If you want the default to send every message in th
    e
    ; base, then set it to go back a ridiculous number of messages R=9999999
    99

    default_rescan = R=250

    ; If you want to remap netmail from one user name to another, you can
    ; define up to 50 remapped names below using the format <orig>;<new>
    ; Names are case insensitive.
    ;
    ;forward = sysop;g00r00
    ;forward = system operator;g00r00

    ; If you want to twit filter names so that messages are not imported
    ; or tossed to downlinks, then you can do one per line here, up to
    ; 100. Example:

    ;twit=John Guillory
    ;twit=kf5qeo
    ;twit=1:396/60
    ;twit=46:1/138

    ; If you want MUTIL to auto create message bases when it finds an
    ; echomail message for a non-existing base, set this value to true
    ; and use the options below to define the default values

    auto_create = true

    ; Convert filenames to lowercased 1=true

    lowercase_filename = 1

    acs_list =
    acs_read =
    acs_post =
    acs_sysop = s255
    header = msghead
    read_template = ansimrd
    index_template = ansimlst
    max_msgs = 500
    max_msgs_age = 365

    ; true/false type values 0=false 1=true (newscan 2=forced)

    use_autosig = 1
    use_realname = 0
    use_ansi = 1
    kill_kludge = 1
    new_scan = 1
    qwk_scan = 1

    ; If you want to create settings specific to certain node addresses you
    can!
    ; For example, if you want auto created bases that are linked to your Ag
    oraNet
    ; address of 46:999/999 then you can by prefixing with the address:

    ;46:999/999_acs_list =
    ;46:999/999_acs_read =
    ;46:999/999_acs_post =
    ;46:999/999_acs_news =
    ;46:999/999_acs_sysop = s255
    ;46:999/999_use_realname = 0

    ; ==========================================================================
    ; ==========================================================================
    ; ==========================================================================

    [ExportEchoMail]

    ; Do not export messages from users currently online
    skip_online = true

    [MergeNodeLists]

    ; Finds the latest nodelists and merges them together in the mystic data

    ; folder.
    ;
    ; Set nodefile value one per line. The value should contain the full pa
    th
    ; and the base filename of the nodelist.
    ;
    ; examples:
    ; nodefile=c:\nodelist\nodelist
    ; nodefile=c:\nodelist\agoranet
    ;
    ; The above example will search in c:\nodelist and select the latest
    ; nodelist.### and agoranet.### nodelists. This comparison is first don
    e
    ; by checking the day extension. If the extension is archived (.z12, et
    c)
    ; it will be unarchived before comparison.
    ;
    ; After decompressing, the 3-digit day extensions are compared, selectin
    g
    ; the highest number. It will also compare the years of the file dates,

    ; and select the newest option. So if you have nodelist.025 dated 2013
    ; and also nodelist.320 dated 2012, nodelist.025 will be selected.
    ;
    ; The same process is then be repeated for agoranet.### and once all of
    ; the defined 'nodefiles' are processed, they will be merged together an
    d
    ; copied into Mystic's DATA folder so it can be used for nodelist lookup
    s.
    ;
    ; If no nodelists are found, Mystic will not overwrite the current
    ; nodelist. Comments are stripped while merging to lower filesize and
    ; increase search performance.

    ; Strip nodes marked as DOWN?
    strip_down = true

    ; Strip nodes marked as PRIVATE?
    strip_private = true

    nodefile=d:\nodelists\nodelist
    nodefile=d:\nodelists\agoranet

    [FileToss]

    ; Processes .TIC files from incoming directories and move/upload files t
    o the
    ; appropriate file bases (optionally creating them). Files are then tos
    sed
    ; to the fileboxes of all downlinks connected to the file base.

    ; Directory where failed files are moved, or comment out to disable arch
    ive of
    ; failed files. This includes incorrect file sizes, bad CRC, missing ar
    ea
    ; when auto-create is disabled, duplicate files, unsecured, etc.

    bad_dir=d:\mystic\files\badfile

    ; Toss TIC from unsecure directory in addition to inbound?

    unsecure_dir = false

    ; File description to use when no DIZ, long description or description c
    an be
    ; found from the file or .TIC file.

    no_desc=No Description

    ; Name of the uploader to use when adding TIC files into the local file
    bases

    uploader=Mystic TIC

    ; Check size and CRC values supplied in TIC file (if found) against the
    actual
    ; file. If the value does not match, then skip tossing the file (moving
    it
    ; to the bad directory if enabled)

    check_crc = true
    check_size = true

    ; If this is true, then files that are FROM an unknown node will still b
    e
    ; processed. If false, they will be moved to the bad directory or delet
    ed
    ; depending on configuration. An "unsecure" node is one that is not dir
    ectly
    ; configured within your echomail nodes configuration.

    allow_unsecure = false

    ; If this is true, then Mystic will allow the REPLACE TIC option, which
    will
    ; remove and replace files by the specified file mask.

    allow_replace = true

    ; If true, then Mystic will attempt to autocreate file bases when a file
    is
    ; found for an Area that does not already exist. If an unknown file is
    found
    ; and this option is disabled, the file will be considered a failure, an
    d will
    ; be ignored/moved to bad directory (if enabled)

    auto_create = true

    ; The directory prefix for auto-created bases. This will be used with t
    he
    ; areatag appended onto it, so for example if prefix was set to:
    ;
    ; dir_prefix=c:\mystic\files\fdn_
    ;
    ; And the areatag was "nodelist", Mystic would create and the use path:
    ; c:\mystic\files\fdn_nodelist\
    ;
    ; And the datafile would be fdn_nodelist

    dir_prefix = d:\mystic\files\fdn_

    ; Auto create base options

    dispfile =
    template = ansiflst
    acs_list =
    acs_ftp =
    acs_download =
    acs_upload =
    acs_hatch =
    acs_sysop = s255

    ; true/false type values 0=false 1=true (newscan 2=forced)

    free_files = 0
    show_uploader = 1
    new_scan = 1

    ; Node-specific options allow some options to be overridden when a file
    is
    ; coming from a specific node. These options should be prefixed with th
    e
    ; address, examples for each supported option are listed below in commen
    ts

    ;46:100/1_bad_dir = d:\mystic\files\badfile_agoranet\
    ;46:100/1_dir_prefix = d:\mystic\files\agora_
    ;46:100/1_allow_replace = true
    ;46:100/1_acs_list = s20z2
    ;46:100/1_acs_ftp = s20z2
    ;46:100/1_acs_download = s20z2
    ;46:100/1_acs_upload = s20z2
    ;46:100/1_acs_hatch = s20z2
    ;46:100/1_acs_sysop = s255z2

    [PackFileBases]

    ; If true, MUTIL will check to make sure files exist, and will update
    ; their file size in the listing, optionally removing missing files
    ; (remove_missing)

    check_files = true

    ; If true, MUTIL will remove any files which do not exist from the file
    ; list database while checking integrity. Otherwise they will be
    ; flagged as OFFLINE in the file listing. 0 byte files are considered
    ; "missing"

    remove_missing = false

    [LinkMessages]

    ; This function has no options

    [PurgeUserBase]

    ; Mark users for deletion that haven't called in days.
    ; This value cannot be less than 7

    days = 365

    [PackUserBase]

    [FileSort]

    ; Sort on which attribute (0=filename 1=size 2=date 3=downloads)

    attribute = 0

    ; Sort direction 0=Ascending (A to Z, 1 to 10) 1=Descending (Z to A, 1
    0 to 1)

    direction = 0

    [AutoHatch]

    ; Files will be automatically hatched to connceted downlinks
    ; Each file must already exist in the file base. The format
    ; file=<base ID or echotag> | filename | replaces filename (optional)

    file=nodelist | nodelist.z99 |nodelist.z99
    file=3 | nodelist.z98
    ----------
    Then on Linux I just run:

    ./mutil filesort_packuser.ini

    Viola.. :P



    |07p|15AULIE|1142|07o
    |08.........

    --- Mystic BBS v1.12 A49 2024/05/29 (Linux/64)
    * Origin: 2o fOr beeRS bbs>>>20ForBeers.com:1337 (21:2/150)
  • From Gods69@21:3/220 to paulie420 on Mon Jan 26 14:37:38 2026
    You just need to run mutil with a correct .ini that sorts the file bases.

    Thanks Paulie420, I've already created a .ini file with only the filesort option inside. And i have also created an Mystic Event that call "./mutil filesort.ini" every 12 hrs.

    ... It is morally wrong to allow suckers to keep their money.

    --- Mystic BBS v1.12 A48 (Linux/64)
    * Origin: Gods69 BBS (21:3/220)