
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
This is a client module for IRCCloud. It allows you to operate an IRC bot via IRCCloud. You will need at least a free IRCCloud account to use this module. All normal IRCCloud limits apply if you haven't upgraded your account.
This isn't quite complete just yet, so some things might be missing or the documentation might be a bit unclear at times.
All post-connection methods take an optional callback. If provided, this will be called with a single object argument
when the method has been successfully executed by IRCCloud. This object will always have a boolean success
property.
email
- Your account's email addresspassword
- Your account's passwordreconnectAllConnections
- Optional. Pass true here to automatically reconnect all connections that have a status of disconnected
once we connect to IRCCloud. Default false.Start the process of logging in and connecting to IRCCloud. You will get a connect
event once connected,
and loaded
once data is fully loaded.
If you have a free account which is subject to being diconnected from IRC after 2 hours of inactivity, you could pass
true
to reconnectAllConnections
to automatically reconnect to IRC once your bot starts back up. If you use this
functionality, the reconnect process will be initiated after loaded
is emitted.
Disconnect an established connection.
getHostnames
- true if you want to return hostnames (e.g. "chat.freenode.net") instead of network names (e.g. "freenode")Returns an array containing the names or hostnames of all connections on your account. Should only be used after loaded
is emitted.
This method does not consult the network; it merely pulls data from memory therefore it returns the data immediately.
networkName
- Either the name of the network (e.g. "freenode") or the hostname you connected to (e.g. "chat.freenode.net"), case-insensitiveGets a connection object and returns it, if it exists. Returns null
if no matching connection is found on your account.
This method does not consult the network; it merely pulls data from memory therefore it returns the data immediately.
options
- An object containing all or some of these properties:
hostname
- Required. The hostname of the server (either a domain name or an IP address)nick
- Required. Your desired nickname on this network.port
- Optional. The port number to connect to. Defaults to 6667.ssl
- Optional. true
to use SSL, false
or omitted to not.realName
- Optional. Your "real name" on the network, or empty if omitted.channels
- Optional. An array of channel names to auto-join on connection. Omit to not auto-join anything.joinCommands
- Optional. An array of commands to automatically execute on connection.nickservPassword
- Optional. Your NickServ password, if applicable.serverPassword
- Optional. The password to use to connect to the server, if applicable. You need a paid account for this.callback
- Optional. In addition to the default success
property, the response object also has cid
which is the new connection's ID.Creates a new IRC connection and connects to that server. You need a paid account to have more than 2 (in addition to irc.irccloud.com).
connection
- Either a connection ID or an object with a cid
property (e.g. a connection object)callback
- Optional. Just the normal method callback.Re-connects to an existing connection which has previously been disconnected.
connection
- Either a connection ID or an object with a cid
property (e.g. a connection object)msg
- Optional. A quit message.callback
- Optional. Just the normal method callback.Disconnects and quits an IRC connection. The connection object will remain in your account which you can reconnect later or delete.
connection
- Either a connection ID or an object with a cid
property (e.g. a connection object)callback
- Optional. Just the normal method callback.Deletes a connection. This connection must be disconnected first.
networkName
- Either the name of the network (e.g. "freenode") or the hostname you connected to (e.g. "chat.freenode.net"), case-insensitivebufferName
- The name of the buffer you're looking for (e.g. "#channel" or "somenick"), case-insensitiveFinds a buffer, if it exists, and returns its object. If not, returns null
.
This method does not consult the network; it merely pulls data from memory therefore it returns the data immediately.
buffer
- A buffer object (or an object containing cid
and bid
properties)archived
- true
if you want to archive it, or false
if you want to unarchive itcallback
- Optional. Just the normal method callback.Archives or unarchives a buffer. If you're archiving a buffer for a channel you're in, this will part that channel.
buffer
- A buffer object (or an object containing cid
and bid
properties)callback
- Optional. Just the normal method callback.Deletes a buffer. If it's a buffer for a channel you're currently in, this will part it before deleting it.
connection
- A connection object (or an object containing a cid
property)channel
- A string containing the name of the channel to joinkey
- Optional. If you need a key to join this channel, provide it here as a string.callback
- Optional. Just the normal method callback.Join a channel. Listen for channelInit
to know when you've successfully joined.
connection
- A connection object (or an object containing a cid
property)channel
- A string containing the name of the channel you want to leavemsg
- Optional. A part message to display to the rest of the channelcallback
- Optional. Just the normal method callback.Leave a channel. Listen for youPart
to know when you've successfully parted.
connection
- A connection object (or an object containing a cid
property)recipient
- A string containing the name of the channel (or nick of the recipient if it's a PM) you're sending this message tomessage
- The message textcallback
- Optional. Just the normal method callback.Send a message to a recipient (either a channel or a nick to send a PM).
connection
- A connection object (or an object containing a cid
property)recipient
- A string containing the name of the channel (or nick of the recipient if it's a PM) you're sending this message tomessage
- The message textcallback
- Optional. Just the normal method callback.Identical to the message
method except prefixes the message
with /me
.
buffer
- An object representing the buffer whose topic you want to change. Must have cid
(connection ID) and bid
(buffer ID) propertiestext
- The new topiccallback
- Optional. Just the normal method callback.Sets a channel's topic, provided you have permission to do so.
options
- An object with the following properties:
contents
- Required. The contents of your pastename
- Optional. A filename for your pasteextension
- Optional. A file extension for your pastecallback
- Optional. Normal method callback. Properties of interest:
url
- The URL where your paste can be viewed. This is what you should send over IRC.id
- The ID for your pastesize
- Paste size in byteslines
- Number of lines in pasteCreate a pastebin.
err
- An Error objectEmitted when an error occurs either during connection (e.g. bad email or password) or if there's some kind of error that drops our connection. This is always fatal to the connection.
Emitted after a WebSocket connection is successfully established to IRCCloud, but before any data is loaded.
code
- A WebSocket status codereason
- A reason string for the disconnection (may be empty)initiatedByUs
- true
if this disconnect was intentionally initiated by us, or false
if it was the result of an error or the server closing the connectionEmitted when the WebSocket connection is lost. At the present moment, this module will not automatically reconnect.
Emitted after all connections and buffers have been fully loaded from IRCCloud after connection.
details
- An object containing your IRCCloud account's detailsEmitted shortly after connection to IRCCloud with your account's details. This is (partially) documented here.
connection
- An object containing the connection's details.Emitted when a new connection is created either by your session or by another session logged into your account.
A "connection" is a connection to a specific IRC server. Each connection has its own nick and set of channels, even if it's connected to the same server as another connection. Free accounts can only have two connections at a time.
The connection
object is (partially) documented here.
Note that this module also adds a buffers
property which is an object containing the buffers which are owned by this
connection (see below).
buffer
- An object containing the buffer's details.Emitted when a new buffer is created. This might be a result of your joining a new channel, as a result of your creating a new connection (e.g. the console/status buffer), as a result of someone new PMing you, or something else.
A "buffer" is a "chat window". Buffers show up as tabs in the sidebar of the IRCCloud client. There are three types of buffers:
console
- Each connection has exactly one console buffer, which is where notices and server messages are routed.channel
- Each channel you're in has its own buffer.conversation
- Each user who has privately messaged you (or who you've privately messaged) has their own buffer. These can be renamed if the other party changes their nick.Channel buffers have a users
property which is an array of users who we know to be in the channel. Channel buffers
also have an initialized
property which is false
if you're not currently in the channel, or true
if you are.
connection
- A connection objectnewStatus
- The connection's new statusfailInfo
- An object containing the connection's new fail info (may be empty object)Emitted when a connection changes state. Possible states are:
failInfo
will be defined when the state unexpectedly changes to disconnected
. Possible keys and values for failInfo
are:
type
- Indicates what type of disconnect this was
connecting_restricted
- Your subscription level restricted this connectionsocket_closed
- The network connection went awayconnecting_failed
- IRCCloud couldn't establish a connection in the first placekilled
- You were booted off IRC (killed) by an IRCOpreason
- A more specific failure reason
pool_lost
- Connection pool failedno_pool
- No available connection poolsenetdown
- Network downetimedout
- Connection timed outtimeout
- Connection timed outehostunreach
- Host unreachableeconnrefused
- IRC server refused the connectionnxdomain
- Invalid hostname (domain doesn't exist)ssl_certificate_error
- SSL certificate errorssl_error
- Generic SSL errorcrash
- Connection crashedtimestamp
- A Date
object for when the disconnect happenedretry_timeout
- Number if seconds after which IRCCloud will try againattempts
- How many times IRCCloud has already tried to connectgive_up
- Only defined, and true
, if IRCCloud has attempted many times and has now given upoldConnection
- Connection object containing old connection datanewConnection
- Connection object containing new connection dataEmitted when a connection's options are changed by you.
connection
- A connection objectEmitted when a connection is permanently deleted. It must have already been disconnected.
buffer
- A buffer objectEmitted when you successfully join a new channel and load its details. At this point you can safely chat to the channel, and you can retrieve all data about the channel.
buffer
- A buffer objectEmitted when a buffer is successfully archived (hidden from view). Archived buffers are not deleted, and can be unarchived at any time. Note that if a channel is archived while you're in it, you are automatically parted from it.
buffer
- A buffer objectEmitted when a buffer is unarchived. This doesn't automatically rejoin the channel if it's a channel buffer.
buffer
- A buffer objectEmitted when a buffer is deleted. This is not reversible and all history from the buffer is permanently deleted.
buffer
- A buffer objectchanges
- An object with two properties:
add
- An array of objects for modes which were added, each with two properties:
mode
- The mode letter which was addedparam
- The parameter for the mode, if applicable, or empty string if notremove
- An array of objects identical to add
for modes which were removednewMode
- A string of mode characters representing the channel's up-to-date modeactor
- A user object for the person who changed the modeEmitted when a channel's mode is changed.
buffer
- A buffer objectuser
- A user object for the person whose mode was changedchanges
- Same as changes
in mode
newMode
- Same as newMode
in mode
actor
- A user object for the person who changed the modeEmitted when another user's channel mode is changed. For example, when a user is voiced or opped.
connection
- A connection objectchanges
- Same as changes
in mode
newMode
- Same as newMode
in mode
Emitted when your connection-wide user mode changes.
buffer
- A buffer objectactor
- A user object for the person who changed the modetext
- The new topic, as a stringtime
- A Date
object representing the time and date when this mode was set (should be just now)Emitted when a channel's topic changes.
buffer
- A buffer objectuser
- A user object for the person who joinedEmitted when someone joins one of your channels.
buffer
- A buffer objectuser
- A user object for the person who leftmsg
- The user's part message (may be empty)Emitted when someone leaves one of your channels voluntarily.
buffer
- A buffer objectmsg
- Your part message (may be empty)Emitted when you leave one of your channels voluntarily (or perhaps not, as some networks allow channel ops to force-part a user instead of kicking them, e.g. to defeat auto-rejoin mechanisms).
buffer
- A buffer objectuser
- A user object for the person who was kickedmsg
- The kick reason (may be empty)actor
- A user object for the person who did the kickingEmitted when someone is kicked out of one of your channels.
buffer
- A buffer objectmsg
- The kick reason (may be empty)actor
- A user object for the person who kicked youEmitted when you are kicked out of a channel.
buffer
- A buffer objectuser
- A user object for the person who quitmsg
- The quit message (may be empty)Emitted once per buffer when a user quits the IRC server for each buffer you see that user in, potentially including a
conversation
type buffer (a PM).
buffer
- A buffer objectsender
- A user object for the person who sent the messagemsg
- The message texthighlight
- true
if this message highlighted you based on your highlight rules, or false
if notEmitted when someone sends a message to either a channel you're in or to you directly.
buffer
- A buffer objectsender
- A user object for the person who sent the messagemsg
- The message text (not including their nick)highlight
- true
if this message highlighted you based on your highlight rules, or false
if notEmitted when someone sends an action-message (/me) to either a channel you're in or to you directly.
buffer
- A buffer objectsender
- A user object for the person who sent the messagemsg
- The message textEmitted for either message
or action
when you're highlighted only.
buffer
- A buffer objectsender
- A user object for the person who sent the noticemsg
- The notice texttarget
- If this notice was sent to a channel, this is the channel nameEmitted when someone sends a notice to either a channel you're in or to you directly.
buffer
- A buffer objectsender
- A user object for the sender of the message (you!)msg
- The message textSame as message
, except for messages we sent ourselves (potentially on another client session).
buffer
- A buffer objectsender
- A user object for the sender of the message (you!)msg
- The message text (not including your nick)Same as action
, except for messages we sent ourselves (potentially on another client session).
buffer
- A buffer objectsender
- A user object for the sender of the message (you!)msg
- The notice textSame as notice
, except for messages we sent ourselves (potentially on another client session).
buffer
- A buffer object (the connection's console buffer)channel
- The name of the channel to which you were deniedmsg
- The error messageEmitted when you try to do something that requires channel operator (or similar) access, which you don't have.
buffer
- A buffer objectoldNick
- The old nick of the user who changed their nicknewNick
- The new nick to which the user changedEmitted once per buffer you share with this user when someone changes their nick.
buffer
- A buffer objectoldNick
- Your old nicknewNick
- Your new nickEmitted when you change your own nick (or it's changed forcefully by the server).
buffer
- A buffer objectnewName
- The new name of the bufferEmitted when a conversation
buffer is renamed because the other party changed their nick.
buffer
- A buffer objectcommand
- The command that was unknownEmitted when you try to run an unknown /command on a server. The provided buffer is the buffer in which the command was run.
FAQs
Client module for IRCCloud.com hosted IRC service
We found that irccloud demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.