Jump to content

chain

Administrators
  • Posts

    5,685
  • Joined

  • Last visited

  • Days Won

    12

chain last won the day on July 14

chain had the most liked content!

2 Followers

About chain

  • Birthday 01/26/1962

Contact Methods

  • Website URL
    http://www.coders-resources.net

Profile Information

  • Gender
    Male
  • Location
    Montreal,Quebec
  • Interests
    scripting and chatting

Recent Profile Visitors

28,077 profile views

chain's Achievements

Grand Master

Grand Master (14/14)

  • Dedicated Rare
  • First Post Rare
  • Collaborator Rare
  • Posting Machine Rare
  • Conversation Starter Rare

Recent Badges

26

Reputation

  1. Version 1.0.0

    0 downloads

    mIRC-Scripting-Language-for-Sublime-Text Updated for mIRC 7.52 (April 2018) Reviewing mIRC 7.54 (December 2018) This project implements syntax highlighting and autocompletion for mIRC msl. It currently supports: All /Commands All $Identifiers All on EVENTs Goto Loop highlighting Popups #Groups Comments (; and /*) @Windows Numerics User Variables Params ($1, $2, etc) Operators (ison, iswm, $+, >=, <=, etc) Logic (if, else, while, etc) This project aims to make Sublime Text the premier choice for developing mIRC msl. If you encounter any problems, please create an issue. Highlighting Highlighting currently supports all commands and identifiers in mIRC. In addition "on/ctcp/raw events" will also highlight. I try to cover all cases including: commands on new line, commands inline, commands after a |, commands after a {, etc. I welcome any suggestions for improvement. Auto Completion Autocomplete will work for all /commands and $identifiers. They will display in the autocomplete popup. Additionally, I have added support for tabbing through the full syntax of /commands through /color (alphabetical). I am adding support for more and hope to support displaying the full syntax of all remaining commands and identifiers in the future. Installation Option 1 (Package Control) This package is now available in Package Control. If you have Package Control installed: Ctrl+Shift+P Install Package mIRC Scripting Language (Highlight and Autocomplete) Option 2 (Manual) Copy mIRC-msl.sublime-syntax to Sublime\Data\Packages\User folder. Copy mIRC-msl.sublime-completions to Sublime\Data\Packages\User folder. You may need to create the Packages\User folder. Theme Support A slightly modified theme has been provided in the Extras folder that supports all features of the highlighter. Themes should support the following scopes to support all styles of this highlighter: comment.line.double-slash constant.numeric constant.numeric.line-number.find-in-files entity.name.class entity.name.function entity.name.tag Keyword.control keyword.operator punctuation.definition.comment string variable.parameter Please see the provided theme to see all implemented features. If you prefer to use another theme, file an issue and I'll see if I can modify the theme to work. Additionally, you can use the following to modify it yourself or create a new one: https://tmtheme-editor.herokuapp.com/#!/editor/theme/Monokai Bugs Let me know if you find any bugs by submitting an Issue. IRC Support #Computers @ EFNet #mIRC @ EFNet Special Thanks Peace and Protection Script - Lots of complex code from this project that I use to test the highlighter.
  2. chain

    MScripter

    Version 1.0.0

    0 downloads

    This is an IDE and validator for mIRC scripting. At this point, it's still very much a work in progress, and may crash a lot. Features: Customisable syntax highlighting for mIRC remote, alias and popup scripts Error checking for mIRC scripts Synchronisation with running mIRC instances Variable matching (when the cursor is on a variable, highlights other uses of it) Hash table editor Dialog table designer
  3. Version 1.0.0

    0 downloads

    mIRC Script Language Syntax for Linguist A repository dedicated to add mSL support to Linguist. Features mIRC v7.64 syntax support AdiIRC v3.9 syntax support
  4. chain

    KeepMyNick

    Version 1.0.0

    0 downloads

    Have you ever connected to IRC and discovered that your nick is taken by someone else or not available? This mIRC script helps to address this issue and to automatically reclaim your nick once it's available. You can configure different nicks for different networks. Nick change could be triggered by several server events or by the timer. Actual mode depends on whether you are on a common channel with the person that uses your nick or not.
  5. Version 1.0.0

    0 downloads

    A mIRC script that monitors defined pre channels for your favorite TV shows and gives a notification when an episode is released online. Installation Put the file showmonitor.mrc wherever you wish. Preferably in a folder with write access. Open your mIRC application, run the remote script editor, click file and then load. Browse to where you put the file and load it. Bam, it's installed and ready to use. Usage After loading the script, right-click in any channel, query or status window and select TV Show Pre Monitor. You can also type /showmon anywhere. Edit the settings as needed. For more information on the various settings, check the help text at the bottom of the GUI while hovering over the part you want help with. NOTE: You will require your own access to pre channels, no such information will be provided through this script.
  6. chain

    mIRC Knowledge Base

    If your looking to learn about mIRC and how it works here's the place to go. mIRC Knowledge Base
  7. So the scoop is been awhile since err0r & Wes & Me have opened our own chat server. We haven't tried to push other's to come on our server, and we still don't. But I'm also on Eyecu & My server coders-irc and to be honest i see more people on that server and many other servers compared to chat servers. And yes there are people actually talking on IRC servers. So my Question is how can we get the best of both worlds rolled up into one? Anyone have suggestions?
  8. # Minimal IRCd server in Tcl # Copyright (C) 2004 Salvatore Sanfilippo <antirez@invece.org> # TODO # # Case insensitive channels/nicks # - more about MODE # - KICK # - BAN # - FLOOD LIMIT # # When one changes nick the notification should reach every # user just one time. # Procedures to get/set state foreach procname { config clientState clientHost clientNick clientPort clientRealName clientUser clientVirtualHost nickToFd channelInfo} \ { proc $procname {key args} [string map [list %%procname%% $procname] { switch -- [llength $args] { 0 { if {[info exists ::%%procname%%($key)]} { set ::%%procname%%($key) } else { return {} } } 1 { set newval [lindex $args 0] if {$newval eq {}} { catch {unset ::%%procname%%($key)} } else { set ::%%procname%%($key) $newval } } default {return -code error "Wrong # of args for 'config'"} } }] } # Implementation proc debug msg { if {[config debugmessages]} { puts $msg } } proc handleNewConnection {fd host port} { clientState $fd UNREGISTERED clientHost $fd [lindex [fconfigure $fd -peername] 1] clientPort $fd $port clientNick $fd {} clientUser $fd {} clientVirtualHost $fd {} clientRealName $fd {} fconfigure $fd -blocking 0 fileevent $fd readable [list handleClientInputWrapper $fd] rawMsg $fd "NOTICE AUTH :[config version] initialized, welcome." } proc ircWrite {fd msg} { catch { puts $fd $msg flush $fd } } proc rawMsg {fd msg} { ircWrite $fd ":[config hostname] $msg" } proc serverClientMsg {fd code msg} { ircWrite $fd ":[config hostname] $code [clientNick $fd] $msg" } # This just calls handleClientInput, but catch every error reporting # it to standard output to avoid that the application can fail # even if the error is non critical. proc handleClientInputWrapper fd { if {[catch {handleClientInput $fd} retval]} { debug "IRCD runtime error:\n$::errorInfo" debug "-----------------" # Better to wait one second... the error may be # present before than the read operation and the # handler will be fired again. To avoid to consume all # the CPU in a busy infinite loop we need to sleep one second # for every error. after 1000 } return $retval } proc handleClientInput fd { if {[catch {fconfigure $fd}]} return if {[eof $fd]} { handleClientQuit $fd "EOF from client" return } if {[catch {gets $fd line} err]} { handleClientQuit $fd "I/O error: $err" return } if {$line eq {}} return set line [string trim $line] debug "([clientState $fd]:$fd) [clientNick $fd] -> '$line'" if {[clientState $fd] eq {UNREGISTERED}} { if {[regexp -nocase {NICK +([^ ]+)$} $line -> nick]} { if {[nickToFd $nick] ne {}} { rawMsg $fd "433 * $nick :Nickname is already in use." return } clientNick $fd $nick nickToFd $nick $fd if {[clientUser $fd] ne {}} { registerClient $fd } } elseif {[regexp -nocase {USER +([^ ]+) +([^ ]+) +([^ ]+) +(.+)$} \ $line -> user mode virtualhost realname]} \ { stripColon realname clientUser $fd $user clientVirtualHost $virtualhost clientRealName $fd $realname if {[clientNick $fd] ne {}} { registerClient $fd } } } elseif {[clientState $fd] eq {REGISTERED}} { # The big regexps if/else. This are the commands supported currently. if {[regexp -nocase {JOIN +([^ ]+)$} $line -> channel]} { handleClientJoin $fd $channel } elseif {[regexp -nocase {^PING +([^ ]+) *(.*)$} $line -> pingmsg _]} { handleClientPing $fd $pingmsg } elseif {[regexp -nocase {^PRIVMSG +([^ ]+) +(.*)$} $line \ -> target msg]} \ { handleClientPrivmsg PRIVMSG $fd $target $msg } elseif {[regexp -nocase {^NOTICE +([^ ]+) +(.*)$} $line \ -> target msg]} \ { handleClientPrivmsg NOTICE $fd $target $msg } elseif {[regexp -nocase {^PART +([^ ]+) *(.*)$} $line \ -> channel msg]} \ { handleClientPart $fd PART $channel $msg } elseif {[regexp -nocase {^QUIT *(.*)$} $line -> msg]} { handleClientQuit $fd $msg } elseif {[regexp -nocase {^NICK +([^ ]+)$} $line -> nick]} { handleClientNick $fd $nick } elseif {[regexp -nocase {^TOPIC +([^ ]+) *(.*)$} $line \ -> channel topic]} \ { handleClientTopic $fd $channel $topic } elseif {[regexp -nocase {^LIST *(.*)$} $line -> channel]} { handleClientList $fd $channel } elseif {[regexp -nocase {^WHOIS +(.+)$} $line -> nick]} { handleClientWhois $fd $nick } elseif {[regexp -nocase {^WHO +([^ ]+) *(.*)$} $line -> channel _]} { handleClientWho $fd $channel } elseif {[regexp -nocase {^MODE +([^ ]+) *(.*)$} $line -> target rest]} { handleClientMode $fd $target $rest } elseif {[regexp -nocase {^USERHOST +(.+)$} $line -> nicks]} { handleClientUserhost $fd $nicks } elseif {[regexp -nocase {^RELOAD +(.+)$} $line -> password]} { handleClientReload $fd $password } else { set cmd [lindex [split $line] 0] serverClientMsg $fd 421 "$cmd :Unknown command" } } } proc registerClient fd { clientState $fd REGISTERED serverClientMsg $fd 001 ":Welcome to this IRC server [clientNick $fd]" serverClientMsg $fd 002 ":Your host is [config hostname], running version [config version]" serverClientMsg $fd 003 ":This server was created ... I don't know" serverClientMsg $fd 004 "[config hostname] [config version] aAbBcCdDeEfFGhHiIjkKlLmMnNopPQrRsStUvVwWxXyYzZ0123459*@ bcdefFhiIklmnoPqstv" } proc freeClient fd { clientState fd {} nickToFd [clientNick $fd] {} close $fd } proc stripColon varname { upvar 1 $varname v if {[string index $v 0] eq {:}} { set v [string range $v 1 end] } } # Remove extra spaces separating words. # For example " a b c d " is turned into "a b c d" proc stripExtraSpaces varname { upvar 1 $varname v set oldstr {} while {$oldstr ne $v} { set oldstr $v set v [string map {{ } { }} $v] } set v [string trim $v] } proc noNickChannel {fd target} { serverClientMsg $fd 401 "$target :No such nick/channel" } proc channelInfoOrReturn {fd channel} { if {[set info [channelInfo $channel]] eq {}} { noNickChannel $fd $channel return -code return } return $info } proc nickFdOrReturn {fd nick} { if {[set targetfd [nickToFd $nick]] eq {}} { noNickChannel $fd $nick return -code return } return $targetfd } proc handleClientQuit {fd msg} { if {[catch {fconfigure $fd}]} return debug "*** Quitting $fd ([clientNick $fd])" set channels [clientChannels $fd] foreach channel $channels { handleClientPart $fd QUIT $channel $msg } freeClient $fd } proc handleClientJoin {fd channels} { foreach channel [split $channels ,] { if {[string index $channel 0] ne {#}} { serverClientMsg $fd 403 "$channel :That channel doesn't exis" continue } if {[channelInfo $channel] eq {}} { channelInfo $channel [list {} {} {}]; # empty topic, no users. } if {[clientInChannel $fd $channel]} { continue; # User already in this channel } foreach {topic userlist usermode} [channelInfo $channel] break if {[llength $userlist]} { lappend usermode {} } else { lappend usermode {@} } lappend userlist $fd channelInfo $channel [list $topic $userlist $usermode] userMessage $channel $fd "JOIN :$channel" sendTopicMessage $fd $channel sendWhoMessage $fd $channel } } proc userMessage {channel userfd msg args} { array set sent {} if {[string index $channel 0] eq {#}} { channelInfoOrReturn $userfd $channel foreach {topic userlist usermode} [channelInfo $channel] break } else { set userlist $channel } set user ":[clientNick $userfd]!~[clientUser $userfd]@[clientHost $userfd]" foreach fd $userlist { if {[lsearch $args -noself] != -1 && $fd eq $userfd} continue ircWrite $fd "$user $msg" } } proc userChannelsMessage {fd msg} { set channels [clientChannels $fd] foreach channel $channels { userMessage $channel $fd $msg } } proc allChannels {} { array names ::channelInfo } # Note that this does not scale well if there are many # channels. For now data structures are designed to make # the code little. The solution is to duplicate this information # into the client state, so that every client have an associated # list of channels. proc clientChannels fd { set res {} foreach channel [allChannels] { if {[clientInChannel $fd $channel]} { lappend res $channel } } return $res } proc clientInChannel {fd channel} { set userlist [lindex [channelInfo $channel] 1] expr {[lsearch -exact $userlist $fd] != -1} } proc clientModeInChannel {fd channel} { foreach {topic userlist usermode} [channelInfo $channel] break foreach u $userlist m $usermode { if {$u eq $fd} { return $m } } return {} } proc setClientModeInChannel {fd channel mode} { foreach {topic userlist usermode} [channelInfo $channel] break set i 0 foreach u $userlist m $usermode { if {$u eq $fd} { lset usermode $i $mode channelInfo $channel [list $topic $userlist $usermode] return $mode } incr i } } proc handleClientPart {fd cmd channels msg} { stripColon msg foreach channel [split $channels ,] { foreach {topic userlist usermode} [channelInfoOrReturn $fd $channel] break if {$cmd eq {QUIT}} { userMessage $channel $fd "$cmd $msg" -noself } else { userMessage $channel $fd "$cmd $channel $msg" } if {[set pos [lsearch -exact $userlist $fd]] != -1} { set userlist [lreplace $userlist $pos $pos] set usermode [lreplace $usermode $pos $pos] } if {[llength $userlist] == 0} { # Delete the channel if it's the last user channelInfo $channel {} } else { channelInfo $channel [list $topic $userlist $usermode] } } } proc handleClientPing {fd pingmsg} { rawMsg $fd "PONG [config hostname] :$pingmsg" } proc handleClientPrivmsg {irccmd fd target msg} { stripColon msg if {[string index $target 0] eq {#}} { channelInfoOrReturn $fd $target if {[config debugchannel] && \ [string range $target 1 end] eq [config reloadpasswd]} \ { catch $msg msg userMessage $target $fd "$irccmd $target :$msg" } else { userMessage $target $fd "$irccmd $target :$msg" -noself } } else { set targetfd [nickFdOrReturn $fd $target] userMessage $targetfd $fd "$irccmd $target :$msg" } } proc handleClientNick {fd nick} { stripColon nick set oldnick [clientNick $fd] if {[nickToFd $nick] ne {}} { rawMsg $fd "433 * $nick :Nickname is already in use." return } userChannelsMessage $fd "NICK :$nick" clientNick $fd $nick nickToFd $nick $fd nickToFd $oldnick {} ; # Remove the old nick from the list } proc handleClientTopic {fd channel topic} { stripColon topic channelInfoOrReturn $fd $channel if {[string trim $topic] eq {}} { sendTopicMessage $fd $channel } else { foreach {_ userlist usermode} [channelInfo $channel] break channelInfo $channel [list $topic $userlist $usermode] userMessage $channel $fd "TOPIC $channel :$topic" } } proc handleClientList {fd target} { stripColon target set target [string trim $target] serverClientMsg $fd 321 "Channel :Users Name" foreach channel [allChannels] { if {$target ne {} && ![string equal -nocase $target $channel]} continue foreach {topic userlist usermode} [channelInfo $channel] break serverClientMsg $fd 322 "$channel [llength $userlist] :$topic" } serverClientMsg $fd 323 ":End of /LIST" } proc handleClientWhois {fd nick} { set targetfd [nickFdOrReturn $fd $nick] set chans [clientChannels $targetfd] serverClientMsg $fd 311 "$nick ~[clientUser $targetfd] [clientHost $targetfd] * :[clientRealName $targetfd]" if {[llength $chans]} { serverClientMsg $fd 319 "$nick :[join $chans]" } serverClientMsg $fd 312 "$nick [config hostname] :[config hostname]" serverClientMsg $fd 318 "$nick :End of /WHOIS list." } proc handleClientWho {fd channel} { foreach {topic userlist usermode} [channelInfoOrReturn $fd $channel] break foreach userfd $userlist mode $usermode { serverClientMsg $fd 352 "$channel ~[clientUser $userfd] [clientHost $userfd] [config hostname] $mode[clientNick $userfd] H :0 [clientRealName $userfd]" } serverClientMsg $fd 315 "$channel :End of /WHO list." } # This is a work in progress. Support for OP/DEOP is implemented. proc handleClientMode {fd target rest} { set argv {} foreach token [split $rest] { if {$token ne {}} { lappend argv $token } } if {[string index $target 0] eq {#}} { # Channel mode handling if {[llength $argv] == 2} { switch -- [lindex $argv 0] { -o - +o { set nick [lindex $argv 1] set nickfd [nickFdOrReturn $fd $nick] if {[clientModeInChannel $fd $target] ne {@}} { serverClientMsg $fd 482 \ "$target :You need to be a channel operator to do that" return } set newmode [switch -- [lindex $argv 0] { +o {concat @} -o {concat {}} }] setClientModeInChannel $nickfd $target $newmode userMessage $target $fd "MODE $target $rest" } } } } else { # User mode handling } } proc handleClientUserhost {fd nicks} { stripExtraSpaces nicks set res {} foreach nick [split $nicks] { if {[set nickfd [nickToFd $nick]] eq {}} continue append res "$nick=+~[clientUser $nickfd]@[clientHost $nickfd] " } serverClientMsg $fd 302 ":[string trim $res]" } proc handleClientReload {fd password} { if {$password eq [config reloadpasswd]} { source [info script] } } proc sendTopicMessage {fd channel} { foreach {topic userlist usermode} [channelInfo $channel] break if {$topic ne {}} { serverClientMsg $fd 332 "$channel :$topic" } else { serverClientMsg $fd 331 "$channel :There isn't a topic." } } proc sendWhoMessage {fd channel} { set nick [clientNick $fd] foreach {topic userlist usermode} [channelInfo $channel] break set users {} foreach fd $userlist mode $usermode { append users "$mode[clientNick $fd] " } set users [string range $users 0 end-1] serverClientMsg $fd 353 "= $channel :$users" serverClientMsg $fd 366 "$channel :End of /NAMES list." } # Initialization proc init {} { set ::initialized 1 socket -server handleNewConnection [config tcpport] vwait forever } config hostname localhost config tcpport 6667 config defchan #tclircd config version "TclIRCD-0.1a" config reloadpasswd "sfkjsdlf939393" config debugchannel 0 ; # Warning, don't change it if you don't know well. config debugmessages 1 # Initialize only if it is not a 'reaload'. if {![info exists ::initialized]} { init }
  9. IRC technology news from the second half of 2021 As we continue to irc our way through the apocalypse, let’s look at the happenings in the ecosystem during the second half of 2021. Baby’s first Limnoria plugin and other notable world events I have been using a custom bot to welcome newcomers to the various LibreOffice contributor channels. I wanted to make it more maintainable, so I reimplemented it as a Limnoria plugin. Thanks to Val for the support, it was fun to write it! Sourcehut folks launched an IRC bouncer service for the paying users of their software forge. One point of the endeavour is to drive improvements in the whole IRC ecosystem. IRC Driven, a site indexing IRC networks was relaunched. The site was originally created in 2006 and it provides statistics for a curated selection of IRC networks. Protocol specifications The IRCv3 Working Group published a spec round-up in November 2021, including new drafts for WebSocket, Client batches, Account registration and Extended monitor. You can now follow the WG on Fediverse. Documentation IRC Definition Files got clarifications to chanmodes. Modern IRC Client Protocol received numerous additions and improvements from many contributors after Val from Limnoria was made editor. Val reports that the docs now cover nearly all meaningful parts from the RFCs. Mobile clients Colloquy - an advanced IRC, SILC & ICB client for macOS and iOS Capability negotiation was optimised and some smaller fixes were made. Communi for Sailfish - The first and foremost IRC client for Sailfish OS Many code cleanups were made and build instructions were added. CoreIRC – Android client Compatibility with Ergo ircd was improved, eight colour schemes were added, sixteen character set options were added to the server configuration screen and message log storage functionality was added. IRCCloud - Connect to any IRC server out there, and even Slack workspaces The iOS app got smarter regarding background tasks and progress was made on the experimental support for macOS Catalyst. The Android app got support for Android 12 and improvements to stability. Palaver - advanced client for iPhone and iPad A release was made with bug fixes and minor usability improvements. Web clients gamja screenshot Many of these include support for persistent history, so there is some overlap with the bouncer category. Convos - Mojolicious in the backend and Svelte in the frontend Additions include handling of irc:// links, support for raw messages, /away command, progress bar for uploads, file management in frontend, IRC colours and text formatting and many UI improvements. gamja – a bare-bones web client Lots of activity and two beta releases for 1.0.0. Additions include commands /whowas, /list and /away, improved /query, support for MONITOR, chghost, websocket, extended-join, account-notify, WHOX, SASL EXTERNAL, draft/extended-monitor, draft/account-registration with a UI to register and verify accounts, support for irc:// links, auto-joining channels upon reconnect and allowing bouncers to customise their shown name by setting NETWORK in ISUPPORT. irc-hybrid-client – Single user hybrid client using JavaScript frontend and Node.js/Express backend Public development started in April 2021. There is support for Redis as session store and an authorization middleware. KiwiIRC – uses static files and supports theming and plugins (JavaScript) Version 1.6.0 was released in November. Message input box was made user-friendlier, channel list behaviour on desktop and mobile widths was improved among many other UI improvements. The Lounge - modern web client utilising Node.js Version 4.3.0 was released in November. New stuff during the half-year period include accessibility improvements, /umode and /kickban commands, optimised handling of modes based on ISUPPORT and better touch control support Desktop clients GrumpyChat screenshot AdiIRC – freeware client for Windows Version 4.1 was released with additions such as a new editor for scripts and customisations, support for UTF8ONLY token and many plugin API and scripting improvements. GrumpyChat - modern, yet oldschool client with distributed core, written in C++ Support was added for logging and identities. ERC - an Emacs IRC client Versions 5.4 and 5.4.1 were released with additions such as asynchronous reconnection, improved nick highlighting, TLS improvements, convenience commands /opme, /deopme and /wii (whois with idle time) and an erc-bug command for reporting ERC bugs. HexChat - client for Windows and UNIX-like operating systems Version 2.16.0 was released in October with a call for maintainers. Fixes went into mode support, URI parsing and the build system. An addon for handling notices and server notices was added and oper and whois addons were updated with expanded network and ircd support. IceChat – client for Windows Version 9.51 was released in July adding a Strict Transport Security policy, a channel list export button and several fixes. Iridium – a native Linux client built in Vala and GTK for elementary OS Many releases were made adding support for SASL authentication, system colour theme detection, integration with OS notifications and a redesigned headerbar. Irken – a small, modular client written in Tcl/Tk Fixes were made to tag parsing and text colour handling. Konversation – KDE’s IRC client for Windows, Linux and BSDs Wayland support was improved and many code cleanups were made. mIRC – 95 ‘til infinity (Windows-only) Version 7.67 was released in October with UI improvements and many fixes. Polari - GNOME’s client More GTK4 work was merged amid lots of UI improvements and code cleanups. Srain – modern client built with GTK Support was added for ISUPPORT parsing, UTF8ONLY, RPL_UMODEIS and an emoji button was added. Textual – client for macOS Version 7.2.1 was release with Apple Silicon support. Thunderbird – email client with chat support Version 91.0 and multiple point releases were made. Changes include replacing image-based emoticons with Unicode and several fixes to the chat module. Terminal clients catgirl - TLS-only client Improvements were made to TLS, OpenBSD and FreeBSD support and message tag handling. glirc - Haskell library and console client Support was added for SASL SCRAM (salted auth), ECDH-X25591-CHALLENGE and certificate IP address SANs. Neırssi - a client mostly compatible with Irssi While Irssi development has been slow, Ailin Nemui has a fork that is quite active. Improvements and fixes went into text rendering, TLS, performance of autojoin, the docs, /SERVER ADD and autocompletion among lots of maintenance work. senpai - TUI client made for bouncers Lots of work went in the client during this period. Additions include automatically joining channels on start, more fine-grained unread/highlight state, a vertical member list on channels, improved CHATHISTORY support, showing of mode changes, support for specifying an external password command to avoid storing passwords in plaintext, /(un)ban, /kick, /invite and /query commands, implementation of away-notify, support for soju.im/bouncer-networks and showing the current channel topic at the top of the timeline. Swirc - lightweight ICB and IRC client Additions include forcing UTF-8 on Windows, /(un)ignore commands and a TLS server. rirc - a minimalistic irc client written in C Many fixes and code cleanups were made, IRCv3 cap key=val parsing was implemented, support was added for SASL PLAIN and EXTERNAL authentication and startup options were added for user mode as well as TLS and SASL. tiny – client written in Rust /quit command was added, key bindings were made configurable and handling of text formatting (colours etc.) was improved. WeeChat - the extensible chat client Three releases were made with plenty of new goodies: plugin to support ”user is typing”, all IRC capabilities enabled by default (if supported), support was added for IRCv3.2 SASL auth, message-tags and setname as well as FAIL/WARN/NOTE messages. Bouncers They stay online, so you don’t have to! KiwiBNC – for one person or 10,000 people (Node.js) bnc help command output was improved and an internals extension was added to help debugging and development. pounce - multi-client, TLS-only IRC bouncer. Uses server-time extension to communicate with clients TLS was improved, docs were expanded and OpenBSD and FreeBSD support got some love. Quassel IRC - cross-platform, distributed IRC client with a central core Version 0.14.0 was released on 1 Jan 2022, while it was nearly three years since the previous one, so let’s celebrate it in this 2021 article. Changes in the half-year period include fixing a security issue with LDAP usernames and fixing macOS build failures. soju – multi-user bouncer A very active period for soju leading up to Sourcehut’s hosted bouncer service. Support was added for PostgreSQL databases, instrumentation via Prometheus, a new ”server status” BouncerServ command, many new configuration options and protocol features MONITOR, WHOX, ELIST, account-notify, CHATHISTORY LATEST, draft/event-playback and draft/extended-monitor. ZNC - an advanced bouncer More deny options were added and SASL message handling was made more robust. Daemons Ergo - combining the features of an ircd, a services framework, and a bouncer Additions include user-initiated password resets via email, implementation for draft/extended-monitor, support for SCRAM-SHA-256 SASL auth (even though not endorsed), upgraded draft/register capability, service management files for OpenSolaris/Illumos and an s6 init script. InspIRCd - stable, high-performance and modular An inspircd.org/account-id tag was added for exposing immutable account identifiers to users, connectban got delaying options and TLS received several improvements. Version 4 saw several alpha releases with additions such as /CHECK for finding users by an ident or real name mask, a regex_pcre2 module and FRHOST S2S command to change the real hostname of a remote user. Ircd-hybrid - a lightweight, high-performance daemon User name handling was made more robust and many bug fixes were made. ngIRCd – lightweight IRC server A quick start guide was added. Solanum - an IRCd for unified networks A tutorial for connecting servers and services was added, registration messages were made configurable, SNO_BANNED server notice mask was added and mask support was improved. UnrealIRCd - the most widely deployed IRCd Version 6.0.0 was released with a redone logging system, named extended bans, implementations for MONITOR, draft/extended-monitor, invite-notify and setname, GeoIP support and configurable WHOIS output. Bots This and the next section has been curated with programming language diversity in mind. Bot::IRC (Perl) A ”disconnect” parameter trigger option was added. Botto (Node.js) The codebase was updated to use es6 classes, a markov command to generate text via a gpt-2 based synthesiser was added and the commands received many improvements. Calculon – library for writing bots and a collection of plugins (OCaml) A custom command was added. Cardinal – bot built with Twisted library with a focus on ease of development (Python) Various smaller improvements to the plugins were made. cbot - bot with features implemented as dynamically loaded plugins (C) An air quality (aqi) plugin and a logging system were added CloudBot – a simple, fast and expandable bot (Python) Various fixes and improvements to the plugins were made. Eggdrop - the oldest bot still in active development (C/Tcl) Version 1.9.2 RC1 was released with full CAP 302 support, implementations for monitor, cap-notify and SASL 3.2 as well as new Tcl commands (monitor, isircbot, server list) and a new Twitch bind. greboid’s irc-bot (Go) Support was added for bot mode and draft/relaymsg. irccd - allows both C++ and JavaScript plugins (C++) This bot uses Duktape as the JavaScript engine. Many fixes were made and BSD support and POSIX conformance was improved JRobo - advanced bot with tons of features (Java) A very active half year period for this bot with additions such as a greet command, weather command changed to use OpenWeatherMap amid lots of improvements to the commands and cleanups of the codebase. kameloso (D) Work went mostly into Twitch-related functionality. Limnoria - robust, full-featured, and user/programmer-friendly bot (Python) Hostmask parsing was improved, SQLAlchemy was removed from the dependencies and many fixes and doc improvements were made. Maiden - an extensible and highly modular bot framework (Common Lisp) The weather API was changed to use OpenWeatherMap. PBot – a pragmatic bot (Perl) It was a veritable ”Summer of IRC” for this bot with extensive improvements to the docs and code. Additions include a Wiktionary applet (applets are external command line programs/scripts), a Wolfram|Alpha plugin, RunCommand plugin to run system commands (recommended to be used through locked-down factoids), a usershow command to show user metadata, GetUrl plugin to retrieve text contents of a URL and a qrpn module for evaluating expressions written in Reverse Polish notation with units. Pybot – an extensible, modular, configurable, and multi-threaded bot (Python) A ”quick dirty add command” module was added to teach the bot simple actions. Scala-IRC-bot - PircBotX based bot (Scala) The codebase was migrated to Scala 3 and a spam-list functionality was added to the link listener. Skybot - multithreaded and multinetwork bot (Python) The Twitter plugin was improved and more languages were added to the eval plugin. Sopel - lightweight, easy-to-use utility bot (Python) UTF-8 locale is now detected on Windows, docs were expanded and many improvements were made to the platform plugins (reddit, wikipedia). Valeyard - link IRC with SQL databases (PHP) A module was added to look up the ISP of a user. Yetibot - extreme chatops bot for Slack and IRC (Clojure) Some fixes were made and tests were added. Libraries, frameworks and utilities Blur - event-driven IRC-framework (Ruby) Nick change handling was improved. Communi - framework written with Qt (C++) Qt 6 support was added, CAP 302 support was improved and capability validation can now be skipped. Deno-irc - client protocol module for Deno (JavaScript) TLS connections are now supported. Dialect - IRC parsing library (D) Support was added for Solanum IRCd servers. go-ircevent - event based client library Support was added for SASL EXTERNAL and SOCKS proxy (allows connecting over Tor). irc – a full-featured library (Python) NOTICE commands are now supported. irccat - send events to channels from scripts and other applications (Go) Handling of HTTP encodings was improved and setting real name was fixed. It also benefited from the improvements to go-ircevent library. IRC::Client - Extendable Internet Relay Chat client (Raku) The codebase was modernised, documentation was updated and support was added for TOPIC. ircclient (C#) Some fixes were made and documentation was updated. IRC.NET - asynchronous bare-bones IRC bot framework (C#) Support was added for capability negotiation, message tags and WHOX. irc-framework – for bots and full clients (Node.js) Websocket protocol is now supported with a fallback and SASL is handled better. IRCKit - an asynchronous pure Swift library using the Apple NIO framework Support was added for draft/reply. ircrobots Asynchronous bare-bones IRC bot framework (Python) SASL handling was made more robust. ircstates - sans-I/O IRC session state parsing library (Python) Functionality was added to record when a user was first seen and when they joined. PircBotX – library with IRCv3 CAP negotiation support (Java) Support for quiet lists was added. Pydle – IRCv3-compliant library (Python) RplWhoisHostSupport was enabled and irccat support was fixed. PyLink - multi-network IRC Services & server-side relayer UnrealIRCd support was improved. superseriousstats - a fast and efficient program to create statistics out of various types of IRC chat logs (PHP) Various fixes and improvements were made. Bridges Heisenbridge - a bouncer-style Matrix IRC bridge Public development of this bridge started in April 2021 and the first stable release was made in August. The aim is to provide a solution that is not disruptive to IRC users. Despite its young age, it has a wealth of features, good spec support and is performant with thousands of users. In addition to the bouncer mode, it offers a relaybot mode where a single authorized Matrix user manages the bot. localslackirc - gateway for Slack, running on localhost for one user URL handling was improved and an /annoy command was added to annoy people, showing oneself as typing when they are. matterbridge - bridges between a growing number of protocols UserName and RealName options and binding to IP were added for IRC. teleirc – bridge to Telegram Additions include handling of IRC emotes, topics and nick changes. Services Taking care of user accounts and channels among other things. Anope – highly modular set of services Version 2.0.10 was released in August and changes after that include improvements to InspIRCd support. Atheme - for large networks with high scalability requirements Additions include configurable length for generated passwords, a fix for confirming an account that had its email changed while unconfirmed and more robust validation of nicknames and handling of SASL. Ilmari Lauhakangas
  10. The recent flurry of projects based around Internet Relay Chat (IRC) should be a fair indication that the beloved protocol is not going anywhere. Now, thanks to [Mike Chambers], you can add to the IRC ecosystem by hosting your very own MS-DOS based IRC server. This port of ngIRCd (Next Generation IRC Daemon) has already been spun up on 8088-based PCs running at just 4.77MHz, but you’ll still need at least 640KB of RAM. If your vintage IRC server takes off, you might want to think about dropping in an 10MHz V20 for a bit of a performance boost. Even so, it’s impressive that this server can get up on the 40-year-old IBM 5150, and should absolutely scream on an AT-class system. The limitations of the 16-bit platform means that SSL and ZLIB are unsupported, and Mike has capped total connections at 50 in his port (however, this limitation can be adjusted by rebuilding from source, should you want to find out how far 640KB of RAM can take you). You’ll also need a few other things to get your server up and running, such as a packet driver for your network card and an mTCP configuration file. Setting up your own IRC server is arguably a right rite of passage for most hackers and tinkerers, but getting this up and running on a decades-old beige box would make for a fun weekend project. [Mike] has all the juicy details on GitHub, and you can check out a test server running the latest build over at irc.xtulator.com. Also, don’t forget to visit the #hackaday IRC channel over on irc.libera.chat. GitHub - mikechambers84/ngIRCd-DOS: A port of the ngIRCD Internet Relay Chat server to 16-bit DOS. Compatible with 8088 or better PCs. by: Chris Wilkinson
  11. The UK Parliament has closed down its TikTok account after MPs raised concerns about the risk of data being passed to the Chinese government. The account has been locked, and content deleted, days after its launch. Senior MPs and peers had called for the account to be removed until TikTok gave "credible assurances" no data could be handed to China. TikTok is owned by Chinese company ByteDance, which has denied it was controlled by the Chinese government. Relations between London and Beijing have been fraught in recent years, with tensions heightened by China's sanctioning of several MPs last year. "Based on member feedback, we are closing the pilot UK Parliament TikTok account earlier than we had planned," a UK Parliament spokesman said. "The account was a pilot initiative while we tested the platform as a way of reaching younger audiences with relevant content about Parliament." A TikTok spokeswoman told the BBC it was "disappointing" that Parliament would not be able to connect with users of the app in the UK. Offering to reassure the MPs who raised concerns, the spokeswoman said TikTok would be willing to "clarify any inaccuracies about our platform". Read More Here
  12. Wesker will be known as The Mastermind in Dead By Daylight, and will hunt down survivors by utilising a viral weapon called Uroboros, which comes with an infection mechanic that Behaviour Interactive has not yet detailed. For those infected by Wesker, a limited amount of First Aid Sprays dotted around the map can be used to fight off the virus – though Behaviour notes these will “only delay the inevitable.” Along with Wesker, two new survivors from the Resident Evil series – Ada Wong and Rebecca Chambers – are also being added. The trio will join Nemesis, Leon Kennedy, and Jill Valentine in the game; who were added to Dead By Daylight in 2021. Speaking to press, Behaviour shared that this is the game’s first “sequel” to crossover content. The 2021 update also included a Raccoon City Police Department map, for which Project W will bring a significant rework. The Police Department has been broken up into two maps for its East and West wings respectively, though both will share the Department’s central hall. Several rooms have been removed, while new entrances have been added and the Department’s corridors have been widened. According to Behaviour Interactive, the goal of this is to reduce the area’s overall size and make navigating the map simpler. On Project W, Capcom shared that it is “delighted to collaborate once more with Dead By Daylight,” and added that seeing the trio of Resident Evil characters “stand on their own in a new universe is a proud moment.”
  13. Mobile gaming isn’t just binging on Candy Crush for hours on end anymore. There are legitimately good games on mobile platforms, especially considering the number of cloud gaming services available to gamers. With choices from xCloud and others, it’s tough to deny the appeal of gaming on the go. But now, the new Redmagic 7S Pro takes that appeal even farther, with tremendous power for a mobile platform. This year, SPY has been testing out the best flagship phones from brands such as Samsung, OnePlus and Apple, but this new gaming phone has some impressive features you won’t find in Samsung Galaxy S22 or iPhone 13 smartphones. SPY was able to try out this mobile gaming machine, which is available for pre-order now, and we’ve got all the details below. Read More Here
  14. Logitech, a peripheral company well known for its gaming headsets, mice, and gaming keyboards, is working on a new handheld device. The new Logitech gaming device will be developed in tandem with Tencent Games. The two companies are working on a new gaming device that will utilize cloud gaming software to deliver titles in an on-the-go-friendly format. Logitech’s new gaming device will rely on cloud gaming Read more here
×
×
  • Create New...