Repository navigation
v1.17.0 - The Control Panel Release
Project page: https://ninja-fse.github.io/dccore/
mIRC script: download dccore-mirc.zip below. It holds dccore.mrc with its dcx and dll folders and a short README. Extract it into your mIRC folder, or over the old files to update; your settings and token are kept. Then /load -rs dccore.mrc the first time, or /reload -rs dccore.mrc to update.
Upgrading the bot: new settings appear on the dashboard's Settings page, all off or at safe defaults.
Security: this release fixes GHSA-x9w3-xf6g-9747.
- The bot points people at the project page: the reply to CTCP VERSION and the top of every list now show https://ninja-fse.github.io/dccore/. The update check still finds the releases from it. A
PROJECT_URLyou set to the GitHub address keeps working. - New: how long DCCore Chat's history is kept, and how big it may grow. Two settings under Settings → Private messages on the dashboard, and on the control panel's mIRC side (Chat page): Keep the chat history in mIRC for (100 days out of the box) and Largest chat history in mIRC (100 MB). 0 is no limit. The bot sends them to
dccore.mrc, which deletes the oldest months of its history files by them. - Fixed (mIRC): the control panel's start page said "connected" with the bot stopped. It showed the stopped bot's start time and the old session's figures as if they were current. The Connection row now has a coloured dot - green when connected, amber while the script is connecting, red and
offlinewhen not - and while offline Up since, Today and Library show-and Sending says(bot offline), instead of old figures. The page also updates by itself when the link drops or comes back. Updatedccore.mrcto 1.20.0 and reload it with/reload -rs dccore.mrc. - New (mIRC): DCCore Chat keeps a history, on by default. Every line the chat window shows, private conversations included, is written as plain text to mIRC's log folder (
//echo -a $logdir), inDCCore-Chat\: a file per channel and per private conversation for each month, kept for as long and up to the size the bot's settings say (100 days and 100 MB out of the box, #1401). The window says where when it opens, and shows the last 200 lines again, so closing it or restarting mIRC loses nothing. A line that arrives while you are in another window, or while mIRC is in the background, is counted in the chat window's title, lights its button, and makes mIRC flash in the taskbar while it is in the background. Untick Keep a history file or Flash on a new line in the window's right-click menu to turn either off; the menu also opens the folder. Reloaddccore.mrcwith/reload -rs dccore.mrc. - New: someone whose downloads keep failing is paused until midnight. Failed sends in a day before a nick is paused (
DAILY_SEND_FAILS_LIMIT) stops a downloader whose client never accepts your offers, sits behind a firewall, or drops every transfer, from holding your slots all day: once their sends have failed that many times since midnight, the files left in their queue are removed and new requests are refused until midnight, with a notice telling them to check their client. A transfer the downloader closes or cancels in their own client before it finishes counts as a failure, since the bot cannot tell it from a client that drops every send. Taking something out of the queue (packcancel,@<bot>-remove) does not count, nor does a failure on your side (a file that vanished, a network share that stopped answering), and admins are never paused. Offers nobody connects to stop counting once offers to several downloaders in a row go unanswered with no send connecting in between, until a send connects again, so a wrong address or a lost port forward on your side does not pause everybody. Before turning it on, know that someone who keeps connecting to your DCC ports can get in ahead of a downloader and make their sends fail, which with this limit can get them paused: set it high, or leave it off where that is a concern. The console'sstatusshows who is paused, andunpause <nick>lifts it. 0, the default, is off; set it on the Settings page under Transfers or in the mIRC settings window. - New: stop a send that crawls while others wait. Stop sends slower than (
SLOW_SEND_MIN_KB, in KB/s) stops the slowest send when its downloader has received less than that over the last minute, but only while every slot is taken and someone is waiting for one, and only while another of your sends is reaching that speed - so a full uplink, a slow disk or your own Max upload speed never gets a send stopped, and with one slot it never fires. Never in a send's first minute. The slot goes to the next in line. A file that was waiting in the queue stays queued: it counts as a failed try against Max send failures, the person goes to the back and is told why, and their client can resume it later. A file sent straight away without waiting is dropped, and they ask for it again. Set it on the Settings page under Sharing & queue, or in the mIRC settings window. 0, off, out of the box. - New: one large file at a time.
LARGE_FILE_MB(Settings, Sharing & queue; off by default) makes a file of at least that many MB large, and only one large file is then sent at a time, so a few multi-gigabyte requests no longer hold every slot for hours while everyone else waits. Someone whose next file is large keeps their place and waits while another large file is being sent; the slot goes to the next in line, and the console and the Queue page show them as "waiting: one large file at a time". The bot's list never counts as large, and a folder packed with !rar is never held back: its size is not known until it is packed. - Fixed: replies lost to "Target change too fast". When a busy bot answers many people in a row, Undernet drops a message with numeric 439 (707 on other networks). The bot now waits as long as the server asks, up to 120 seconds, and sends the dropped reply again once, with a
[QUEUE]line in the bot's log, instead of losing it silently and running into the same limit again. - Fixed: renaming or replacing a folder while the list rebuilt cost the whole rebuild. The bot kept serving the previous list, which was older still - it named the same folder and lacked everything added since. A folder renamed, replaced or deleted during the scan is now left out of that list, with a line in the log saying so, and the next rebuild lists whatever took its place. A configured folder (or the share it is on) going away mid-scan still stops the rebuild and keeps the previous list.
- Faster (mIRC): the control panel opens faster. A page's menus, frames and tables are made the first time the page is shown rather than all at once when the panel opens (a page full of colour menus takes a moment the first time), and opening and closing the panel also leaks fewer Windows GDI objects with DCX.
- Fixed: asking for a file the bot does not have could leave you "busy" for minutes. A request for a name that is not in the bot's list made it search every folder on disk for it, which on a large or network library takes minutes; meanwhile every further request from that person was answered "Busy looking up other files". The list is now what the bot serves: a name it does not have is answered "File not found" at once, and a file you add is requestable after the next list rebuild. File types you leave out of the list are not served either, even to someone who knows a file's exact name.
- New: read-only console tokens.
pair <name> <version> readonlyat the admin console gives a script a token that can look at the bot (status, queue, sends, library, bans, the feed) and change nothing: no bans, queue changes, rebuilds, settings or shutdown, and it cannot be unlocked. It also never takes the console over from you: while you are logged in with your password or a full token, a read-only login is turned away until the console is free. Handy for a stats script or a status widget that you would rather not trust with everything. - New (mIRC): a dark theme and icons.
/dccore theme darkdarkens the script's windows (or Follow mIRC, which takes mIRC's own dark mode), and/dccore icons onputs an icon beside each of the script's menu items and control panel pages; both are on the control panel's mIRC side too. Two small DLLs of DCCore's own do it,dccore_ui.dllanddccore_icons.dllinscripts/mirc/dll/(sources beside them); without them the script looks as before. Copy thedllfolder besidedccore.mrc, updatedccore.mrcto 1.20.0 and reload it with/reload -rs dccore.mrc. - Fixed (console): the library's totals come on time and say the right thing. After a rebuild, the new totals reach dccore.mrc's start page as soon as they are counted, not up to 30 seconds later; the search index no longer says "still being filled" for days after it was repaired; a list whose figures cannot be read says so instead of showing as empty; and
librarygives a short rebuild's time in seconds. - Fixed: list rebuilds after a crash or a failed start. A rebuild you ran by hand that crashed no longer gets the bot's next rebuild killed within seconds: the bot read the leftover progress report as its new rebuild's, "silent for twenty minutes". Now it reads only its own rebuild's report, and clears a leftover one first. A rare failure could leave a rebuild running with nothing following it, refusing every later rebuild as "already running"; the bot now ends it. A rebuild that failed while starting could leave searches and file requests paused until a restart; they now resume, and the rebuild is recorded as failed and raises a dashboard notice. While a rebuild starts, the dashboard now says "Checking the library's folders…" instead of "Scanning the library". On a network drive that stopped answering, that is where it waits.
- Fixed: a list rebuild stopped with the bot was reported as a failed rebuild. It now says it stopped, and your current list stays in use. The bot also stops only its own rebuild: one you run from a terminal goes through, and a rebuild left running by a bot that crashed is stopped when the bot starts again.
- Fixed: a list rebuild could be killed at once every time, or pause searches until a restart. After a rebuild that was stopped for hanging, or one cut off by a crash or a restart, the next rebuild was often killed within seconds as "stalled", and so was every one after it, so the list never refreshed. And a rebuild that got stuck right at its start, for example on a network drive that stopped answering, kept searches and file requests paused until you restarted the bot. Both are fixed: the rebuild reports from its very first step and is ended like any other stuck rebuild, and an old run's report no longer counts against a new one.
- New (mIRC): the control panel's start page shows the library's totals. With a bot that has them (#1359), the Library frame says what each list holds, the files, folders and size of them all, when the last rebuild finished and how long it took, and how the search index of the lists held from other bots is doing.
- New (console):
libraryshows your library's totals. For each list: its files, folders and size, and when its last rebuild finished and how long it took. Then the search index of the lists you hold from other bots: its rows, and whether it is still being filled after a start. dccore.mrc can ask for the same figures to show on its start page. The folders and the rebuild time appear after each list's next rebuild. - Changed: one place for your folders, and one Save. Settings > Your list no longer has a separate Music directory field: your folders are the rows at the top, and a bot with one folder is a single-folder bot. If you never saved a folder list, your Music directory is the first row. The page's Save button (bottom right) now saves the folders as well as the settings; the Save folders and Save lists buttons are gone. Saving with no folders at all is refused, since a bot with no folders has nothing to share. Rebuild the list from Tools after changing folders, as before. In the mIRC settings window the Music directory field is gone too.
- Fixed: a list rebuild kept running after you stopped the bot, and blocked the next one. Stopped from Tools > Stop (or Ctrl-C) during a rebuild, the bot ended but the rebuild scanned on, and after a restart Update list said "Another list rebuild is already running". Now the bot asks it to stop on the way out, and a rebuild whose bot has gone (a crash, a closed window) stops by itself within seconds. A stopped rebuild publishes nothing: your current list stays in use.
- Fixed: the Settings page said your folder list was saved when it was not. Removing folders under Your list only changed the editor until you clicked Save folders, which Save & rehash did not do. The page said "Serving 0 folders" and "All changes saved" anyway, so the next rebuild still scanned every folder. It now counts the folders that are saved, says "Not saved yet" beside the button, and the save bar says the folder list is not saved.
- New: a maximum upload and download speed. Max upload speed (
MAX_UPLOAD_KB) caps all your sends together, and Max download speed (MAX_DOWNLOAD_KB) everything the bot fetches: lists, automatic grabs, files and folders from other bots. Both are in KB/s and shared by every transfer going that way, so three sends under 600 get about 200 each. A change applies at once, to transfers already running too. Set them on the Settings page under Transfers, or in the mIRC settings window. Both are 0, no limit, out of the box, so nothing changes until you set them. - Changed (mIRC): nicks, channels and the search term in
@DCCoreare coloured by default - purple, teal and blue - so the window is no longer nearly all black. If you never picked these colours in/dccore options, the new script switches them once; a colour you picked stays, and same as the line is still there if you prefer it. Updatedccore.mrcto 1.20.0 and reload it with/reload -rs dccore.mrc. - Faster: the List Browser's search index is built with far less disk writing. Fetching a list, and the one-time re-index after an update, now write about 40% less and take about a third less time, with the same search speed.
- Fixed: the first start after an update that rebuilds the search index could fail with "database or disk is full", and kept the bot off IRC for minutes. Linux SQLite builds overwrote every deleted page through the write-ahead log, so the rebuild needed the index's size again in free disk. The index no longer does that, and every list refresh writes less too. The re-indexing now runs after the bot connects; until it is done, the List Browser's filter waits before it answers.
- New: each list can leave out file types of its own, like OmenServe's per-list Exclude. On the Settings page's lists editor, every list has File types to leave out of this list (for example
.cue, .nfo). These are on top of the file types every list leaves out (LIST_IGNORED_EXTENSIONS). Rebuild the lists to apply it. Saving the lists from the mIRC settings window keeps them as they are. - New: your list requests can carry a short tag, the way AutoQ's carry
::AutoQ::, so a channel can see what is fetching. Set Tag on your list requests (LIST_REQUEST_TAG) on the Settings page under Fetching from bots, or in the mIRC settings window. It is sent only to other DCCore bots, which always accept it. Other bots get the plain request, because many only answer that exact line. Plain text, up to 32 characters. It is empty out of the box, so nothing changes until you set it. - Fixed (security): whoever held the bot's main nick could make it flood itself off the server. While on its alternative nick, the bot asked for its main nick back each time the client holding it left a channel, outside its own pacing, so leaving and rejoining the bot's channels over and over got the bot disconnected for flooding. It now asks only when the nick is actually freed, and at most every 30 seconds. Advisory GHSA-x9w3-xf6g-9747.
- New (mIRC): the settings window is redrawn, and can use DCX. Every section sits in a titled frame with its labels above the fields, in a window that fits a 1080p screen.
dcx.dll(DCX, https://github.com/twig/dcxdll, BSD-3-Clause) now ships inscripts/mirc/dcx/, unmodified, with Microsoft'sWebView2Loader.dlland both licences. With it the window is a control panel: it opens on a start page with two choices, Bot (the bot's settings, six tabs with their pages listed on the left) and mIRC (this mIRC's own: the @dccore window, its look, the link to the bot, chat - what the Options dialog held), with a back arrow at the top left; every line of the window is drawn in one dark grey with rounded corners, the page's name is above the page, and every table has columns - the channels, the lists and the channel bindings, the bans: select a row and use the buttons under it. Lists & channels is two tables now, the lists with their folders and the channel bindings, each with its own Change and Remove. One menu entry, Control Panel..., replaces Script Settings... and Bot Settings...;/dccore optionsstill opens this mIRC's own settings. Whenever DCX cannot be used - a 64-bit or pre-7.45 mIRC, the folder not copied, or the option Use the built-in settings window, not DCX switched on - the same pages open with mIRC's own controls./dccore dcxsays which applies, and/dccore dcx checktests DCX in your mIRC. Copy thedcxfolder besidedccore.mrc, updatedccore.mrcto 1.20.0 and reload it with/reload -rs dccore.mrc.