Open Bug 44423 Opened 24 years ago Updated 14 years ago

Tracker Bug, implement irc [76] commands

Categories

(Other Applications :: ChatZilla, enhancement, P3)

enhancement

Tracking

(Not tracked)

People

(Reporter: timeless, Unassigned)

References

Details

<general> dns, hash, ison, kill, kline, list, mode, notice, links, time, trace, 
unkline, user, userip, userhost, users, version, wallops, whowas

<moznet> admin, die, dline, error, htm, info, locops, lusers, oper, operwall, 
pass, rehash, restart, set, sjoin, squit, stats, svinfo
<undernet> cnotice, connect, cprivmsg, create, destruct, desynch, gline, map, 
proto, settime, silence, uping, wallchops
<efnet> capab, knock, locops, ltrace, testline
<dalnet> akill, dccallow, chanserv, chatops, globops, gnotice, goper, identify, 
memoserv, operserv, rakill, samode, services, statserv, svskill, svsmode, 
svsnick, svsnoop, unsqline, watch, zline
--
Those are the only commands i know we're missing.  How to tackle this bug? It 
probably needs to be blocked by a few bugs, one for each network, and some for 
general features.
Where should these things be implemented? I think the general features should 
go w/ the core chatzilla, but special network specific commands should probably 
go into scripts that are grouped with the irc network that supports them.

This list was designed to not include duplicates, and I surveyed the networks 
in the order listed, many of the commands probably should be considered 
general, but I'm not advocating them [die is a general command but it's a 
server command that probably isn't used often; hash is a general server command 
that is also rarely used but isn't dangerous]
QA Contact: rginda → David
*MASS SPAM*

Changing QA contact on all open or unverified ChatZilla bugs to me, David
Krause, as I am now the QA contact for this component.
I like the way mIRC just sends a command to the server if it isn't familiar 
with the command.  That works for all comands that don't require a colon.
with the recent landing of the new chatzilla code some of these commands can be
marked as completed: list for example is now implemented. :)

Others are successfully passed through to the server as suggested previously,
after the client mentions that they're unrecognized and it's just guessing.
(dns, ison, time, kline, links, users, userhost, version, whowas, mode...
there are probably more, but most of the interesting ones require ircop status,
so I can't really test them.)

One other has been aparently removed... quit. (it shows up on the opening
info list, but trying to call it barfs with command not implemented.)
before all these changes, there was an /exit command to disconnect from all
servers and close chatzilla, and /quit to just disconnect from the current
server.  I figured I wasn't the only one who could never remember which command
did what, so I renamed /quit to /disconnect, but left the help info for /quit
there (it says "This command has been replaced by /disconnect".)  I'll probably
either take /quit out altogether, or make it an alias for /exit in the next
round of patches.
/quit shouldn't be listed in help if typing /quit just results in the 
message "use /disconnect to disconnect from a single server or /exit to leave 
chatzilla".
Should there be an /ignore command in chatzilla?
If someone were to provide reasonable parameters and helptext for each of these
commands, they would be helping alot.

See
<http://lxr.mozilla.org/mozilla/source/extensions/irc/xul/locale/en-US/chatzilla.properties>
for an example of the existing commands.

Any command that can be implemented by just sending the command an list of
parameters directly as supplied by the user can be implemented by providing the
helptext and hooking it up to "onSimpleCommand" in commands.js.
Status: NEW → ASSIGNED
/ignore is now bug 111475
Please add support for SQUERY - ircnet's way of talking to services.
Syntax is SQUERY <target> :<text>. 
For reference: all common IRC commands, including special features of the ircu
servers (undernet-like):

http://www.student.uib.no/~st01369/ccosmos/ccosmos.html

I would also like to see the variant of /whois

/whois <nick> <nick>

(the nick repeated two times) implemented.

For networks with multiple servers (the big four, and many others), it takes
some more information from the local server of <nick> such as the user idle
time. This would be very useful... at least for me :)
Remove myself from QA of 33 open Chatzilla bugs and change to default QA
contact, since I have no way to verify these easily.  Still no working Mozilla
on my primary platform and it doesn't look like it will happen anytime soon. :(
QA Contact: mozilla → samuel
dns, hash: I believe these are debugging commands and aren't intended for
general use (esp by clients), at least on undernet.

ison: http://www.zvon.org/tmRFC/RFC1459/Output/chapter5.html#sub8 used to
implement NOTIFY (which isn't a server command)

kill: /kill <nick> :message
IRC operator command to remove a user from a network (with "message")

kline: Not on Undernet

list: /list, different networks provide different features, On Undernet /list
<parameters>

Where (parameters) is a space- or comma-separated list of one or more of:

	< max_users 	Show all channels with less then max_users.
	> min_users 	Show all channels with more then min_users.
	C < max_minutes 	Channels that exist less then max_minutes.
	C > min_minutes 	Channels that exist more then min_minutes.
	T < max_minutes 	Channels with a topic last set less then max_minutes ago.
	T > min_minutes 	Channels with a topic last set more then min_minutes ago.

For example: /list <3, >1, C <10 lists channels with less than three users and
more than one (i.e., two) and which are less than 10 minutes old. A simpler
example (and more typical of the way people use it) is /list >10, to list
channels with more than 10 people. As it always has, the /list command does not
list secret or private channels (see section 3 for more information on these).

mode: there are channel modes and user modes
Undernet channel modes:
 b  +b <mask> or -b <mask> - ban/unban a user
 i  +i or -i  - set invite only
 k  +k <key> or -k <key> - set/remove a key (password) for a channel
 l  +l <limit> or -l - set/remove a limit (note -l doesn't take a parameter)
 m  +m or -m - set/clear moderated, only +v or +o users can speak
 n  +n or -n - set/clear no external notices, only people on the channel can speak
 o  +o <nick> or -o <nick> - set/clear ops on a channel
 p  +p or -p - set "Private" channels (don't appear in /list), cannot be set at
the same time as +s
 s  +s or -s - set "Secret" channel (don't appear in /list or /whois), cannot be
set at the same time as +p
 t  +t or -t - ops only can set topic
 v  +v <nick> or -v <nick> - voiced can speak on +m channels (on undernet, can
speak if +ban'd too)

User modes:
 d - sets the user unable to recieve public messages, used by services and bots.
 Undernetism.

 i - invisible, doesn't show up in queries (such as /who) unless you are on a
common channel
 o - oper'd
 s - +s [<snomask>] or -s [<snomask>] snomasks are an Undernetism, documented
http://cvs.undernet.org/cgi-bin/viewcvs.cgi/undernet-ircu/ircu2.10/doc/snomask.html?rev=1.2&content-type=text/vnd.viewcvs-markup

 w - recieves /wallusers 
 k - unkillable, unkickable. this user cannot be /kill'd or /kick'd, cann't be
set by users (set only by services)
 g - recieve debuG messages undernetism.
 x - host hidden.  if set, and user is logged in, their host is shown as
@<username>.users.undernet.org, undernetism.

notice: /notice <target> :<message>
 <target> = channel 
 @<channel> = ops on a channel (not supported by all networks)
 +<channel> = voice+ops on a channel (not supported by many networks, conflicts 
with modeless channels)
 <ident>@<server> = send to user on specific server, used especially on undernet
to talk to services.  Note <ident> isn't nick.
 $<mask> = send to all users on a server matching mask (undernet only?)
 $#<mask> = send to all users who's host matches <mask> (undernet only?)

links: http://www.zvon.org/tmRFC/RFC1459/Output/chapter4.html#sub3

time: Shows the server time,
http://www.zvon.org/tmRFC/RFC1459/Output/chapter4.html#sub3

trace: shows the hops between you and a server/channel/user
 /trace <target>
oper only on Undernet. http://www.zvon.org/tmRFC/RFC1459/Output/chapter4.html#sub3

unkline: Not on undernet

user: Used in registration, 
 USER <preferedident> <unused> <unused> :<realname>

userip: Undernetism, /userip <nick> shows the users real IP, used to catch users
spoofing DNS.  Works just like USERHOST.

userhost: /userhost <nick> returns the users nick.  Often used by scripts or
clients.  (often used to implement /ban <nick>, get the userhost of <nick> then
ban them)

users: the command is /lusers, syntax /lusers [<server match>] [<server>]

server match is ignored on undernet.  Remote queries are oper only on Undernet.

version: /version <server>
returns the version that the server is running.  Oper only on undernet.

wallops: /wallops :<message>
Sent to all +w users, oper only.
On Undernet it's sent to all opered +w clients only, use /wallusers :<message>
to send to all +w users.

whowas: /whowas <nick>
looks up <nick> in the whowas information. 

admin: /admin [<server>] = returns the admin contact for a server, oper only
under undernet.  Some servers allow this command during registration.

die: /die [:<reason>] = causes the IRC server to exit.  Oper only.

error: Ignored by the server, sent by the server in case of critical errors
(before dumping the client).  /error :<message>

htm: High Transfer Mode.  Hybridism.

info: /info [<server>] returns the GPL and who worked on the daemon and other
useless information.

oper: /oper <nick> :<password>
allows an IRC operator to become uh, an oper. sets usermode +o (may also set +w
and +s depending on the server)

operwall, oper only wallops.

pass: sends password for passworded I:lines, needed to connect.

rehash - reload the config oper only

restart - /restart <message>, restarts the irc server, Oper only,

sjoin - server <->server only command, hybridism

squit - /squit <server> :<reason>
disconnects a server

stats - /stats <type> [<server>], queries information about the server.

cnotice - /cnotice <nick> <channel> :<message>
sends <message> to <nick> who is on <channel> which you have ops on, without
using up a "target", Undernetism.  Mostly automatically used by clients/scripts
instead of /notice when the criteria is met.

connect - /connect <servera> [<port>] [<serverb>], connects <servera> to the
network, using port <port> (if not defined used the one from the config), from
serverb if defined.

cprivmsg - same as cnotice

create - ignored

destruct - ignored (server to server)

desynch - server<->server only

gline -
 /gline <mask> show all glines matching mask
 /gline +<mask> <duration> :<reason> - sets a temp server ban on <mask>, oper only
 /gline -<mask> <duration> :<reason> - removes a ban on <mask>, oper onyly

map - show a pretty version of /links, undernetism, oper only.

proto - unused

settime  - oper only command to change the servers idea of time

silence -
 /silence +<mask> - add mask to your silence list (can't recieve messages from mask>
 /silence -<mask> - remove mask from your silence list
 /silence [<nick>] - show <nick>'s silence list (if not specified your own)

uping
 - oper only feature to send a udp ping to a server to test it for connectivity
while it's squit
 - /uping <dest> [<number>] [<fromserver>]

wallchops
 - /wallchops :<message>
sent to all +w users (irrespective of if they are +o or not)

These are all off the top of my head, let me know if you want clarifications :)
Product: Core → Other Applications
I felt we needed an update on this one, so here goes. I'll do Timeless' list
first, and then I'll see if there's any other ones we still miss as per comment #12.

General commands: dns, hash, ison, kill, kline, mode, time, trace, unkline,
userip, userhost, users, version (the server version, that is, right now
/version maps to /ctcp <nick> version )

<undernet> cnotice, connect, cprivmsg, create, destruct, desynch, gline, map, 
proto, settime, silence, uping, wallchops
<efnet> capab, knock, locops, ltrace, testline
<dalnet> akill, dccallow, chanserv, chatops, globops, gnotice, goper, identify, 
memoserv, operserv, rakill, samode, services, statserv, svskill, svsmode, 
svsnick, svsnoop, unsqline, watch, zline

I'm not sure what to do about the server-specific commands though. While some
are quite easy to handle, I'm wondering if and how they should be excluded,
especially if they work by the 'guess' method (which just sends everything to
the server)

Depends on: 144037
Depends on: 299521
Depends on: 300610
It would seem to me that the right way to handle this is to use /quote for what it's for, and simply add aliases for all of these commands. There's no need to hard-code anything server specific.

See http://hacksrus.com/~ginda/chatzilla/faq/#alias

I would think that if anything is to be done in the application, it would be to provide default per-network scripts for features supported on those networks.

There really is no advantage to having these built in to the client over what aliases will provide.

adding myself as CC
QA Contact: samuel → chatzilla
This is a mass change. Every comment has "assigned-to-new" in it.

I didn't look through the bugs, so I'm sorry if I change a bug which shouldn't be changed. But I guess these bugs are just bugs that were once assigned and people forgot to change the Status back when unassigning.
Status: ASSIGNED → NEW
You need to log in before you can comment on or make changes to this bug.