source: tags/debian_version_0_6_3/variable.lisp

Last change on this file was 76, checked in by Erik Huelsmann, 19 years ago

Make default behaviours obey rpl_isupport parameters advertized by the server.

  • variable.lisp (*default-isupport-values*): New.
  • utility.lisp (irc-string-downcase): New. Method to do case mapping required to canonicalize entity (channel, nick) identity names. (parse-isupport-multivalue-argument): New. Parse isupport string used in multi-value argument-values as used for CHANLIMIT, CHANMODES, IDCHAN and others.
  • protocol.lisp (connection:server-capabilities): New. This slot stores the assoc list of parameter keys and their values. (case-map-name): New. Returns the case-mapping used for a connection. (re-apply-case-mapping): New. Make sure all nicks and channels have been mapped using the same function. Also assures all hashes are based on the same mapping function. (add-default-hooks): Add irc-rpl_isupport-message to the default hooks list. (normalize-channel-name): Add connection parameter; use case-mapping active for the given connection. (make-channel): Add a connection to be passed in order to be able to do name-normalization. (make-user): Add connection parameter in order to be able to do name-normalization. (canonicalize-nickname): Use server-advertized nickname prefixes to determine how to canonicalize. (normalize-nickname): Use connections case-mapping to do normalization. (find-or-make-user): Pass connection in call to make-user. (find-channel, find-user, change-nickname): Update callers of normalize-nickname, normalize-channel-name and canonicalize-nickname
  • command.lisp (connect): Change instance creation order; creating a user requires a connection now.
  • event.lisp (default-hook [irc-rpl_isupport-message]): New. Implement default hook message for rpl_isupport message. Make sure that default values do get set. (default-hook [irc-rpl_list-message,

irc-join-message]): Update caller of make-channel.

(default-hook [irc-rpl_namreply-message]): Update caller of
canonicalize-nickname.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.4 KB
Line 
1;;;; $Id: variable.lisp 76 2005-01-20 23:59:19Z ehuelsmann $
2;;;; $Source$
3
4;;;; See the LICENSE file for licensing information.
5
6(in-package :irc)
7
8(defvar *debug-p* nil)
9(defvar *debug-stream* t)
10
11(defconstant +soh+ #.(code-char 1))
12
13(defparameter *version* "0.1.0")
14(defparameter *ctcp-version*
15  (format nil "CL IRC library, cl-irc:~A:~A ~A"
16          *version* (machine-type) (machine-version)))
17
18(defparameter *download-host* "ftp://common-lisp.net/")
19(defparameter *download-directory* "/pub/project/cl-irc/")
20(defparameter *download-file*
21  (format nil "cl-irc-~A.tar.gz" *version*))
22
23(defvar *default-nickname* "cl-irc")
24(defvar *default-irc-server* "irc.freenode.net")
25(defvar *default-irc-server-port* 6667)
26(defvar *default-quit-message*
27  "Common Lisp IRC library - http://common-lisp.net/project/cl-irc")
28
29(defparameter *default-isupport-values*
30  '(("CASEMAPPING" "rfc1459")
31    ("CHANNELLEN" "200")
32    ("CHANTYPES" "#&")
33    ("MODES" "3")
34    ("NICKLEN" "9")
35    ("PREFIX" "(ov)@+")
36    ("TARGMAX")))
37
38
39(defvar *dcc-connections* nil)
40
41(defparameter *reply-names*
42  '((1 :rpl_welcome)
43    (2 :rpl_yourhost)
44    (3 :rpl_created)
45    (4 :rpl_myinfo)
46    (5 :rpl_isupport) ;; The RFC was wrong to define RPL_BOUNCE here,
47     ;; see http://www.irc.org/tech_docs/draft-brocklesby-irc-isupport-03.txt
48    (10 :rpl_bounce)
49    (200 :rpl_tracelink)
50    (201 :rpl_traceconnecting)
51    (202 :rpl_tracehandshake)
52    (203 :rpl_traceunknown)
53    (204 :rpl_traceoperator)
54    (205 :rpl_traceuser)
55    (206 :rpl_traceserver)
56    (207 :rpl_traceservice)
57    (208 :rpl_tracenewtype)
58    (209 :rpl_traceclass)
59    (210 :rpl_tracereconnect)
60    (211 :rpl_statslinkinfo)
61    (212 :rpl_statscommands)
62    (213 :rpl_statscline)
63    (214 :rpl_statsnline)
64    (215 :rpl_statsiline)
65    (216 :rpl_statskline)
66    (217 :rpl_statsqline)
67    (218 :rpl_statsyline)
68    (219 :rpl_endofstats)
69    (221 :rpl_umodeis)
70    (225 :rpl_statsdline) ; Seen in dancer ircd source
71    (227 :rpl_option) ; Seen in dancer ircd source
72    (228 :rpl_endoptions) ; Seen in dancer ircd source
73    (231 :rpl_serviceinfo)
74    (232 :rpl_endofservices)
75    (233 :rpl_service)
76    (234 :rpl_servlist)
77    (235 :rpl_servlistend)
78    (240 :rpl_statsvline)
79    (241 :rpl_statslline)
80    (242 :rpl_statsuptime)
81    (243 :rpl_statsonline)
82    (244 :rpl_statshline)
83    (245 :rpl_statssline) ; The RFC says 244 but I believe that was a typo.
84    (246 :rpl_statsping)
85    (247 :rpl_statsbline)
86    (248 :rpl_statsuline) ; Seen in dancer ircd source
87    (249 :rpl_statsdebug) ; Seen in dancer ircd source
88    (250 :rpl_statsdline)
89    (251 :rpl_luserclient)
90    (252 :rpl_luserop)
91    (253 :rpl_luserunknown)
92    (254 :rpl_luserchannels)
93    (255 :rpl_luserme)
94    (256 :rpl_adminme)
95    (257 :rpl_adminloc1)
96    (258 :rpl_adminloc2)
97    (259 :rpl_adminemail)
98    (261 :rpl_tracelog)
99    (262 :rpl_traceend)
100    (263 :rpl_tryagain)
101    (265 :rpl_localusers) ; Seen in dancer ircd source
102    (266 :rpl_globalusers) ; Seen in dancer ircd source
103    (268 :rpl_mode) ; Seen in dancer ircd source
104    (269 :rpl_endmode) ; Seen in dancer ircd source
105    (271 :rpl_sitelist) ; Seen in dancer ircd source
106    (272 :rpl_endsitelist) ; Seen in dancer ircd source
107    (290 :rpl_clientcapab) ; Seen in dancer ircd source
108    (292 :rpl_noservicehost)
109    (300 :rpl_none)
110    (301 :rpl_away)
111    (302 :rpl_userhost)
112    (303 :rpl_ison)
113    (304 :rpl_away)
114    (305 :rpl_unaway)
115    (306 :rpl_noaway)
116    (311 :rpl_whoisuser)
117    (312 :rpl_whoisserver)
118    (313 :rpl_whoisoperator)
119    (314 :rpl_whowasuser)
120    (315 :rpl_endofwho)
121    (316 :rpl_whoischanop)
122    (317 :rpl_whoisidle)
123    (318 :rpl_endofwhois)
124    (319 :rpl_whoischannels)
125    (320 :rpl_whoisidentified) ; Seen in dancer ircd source
126    (321 :rpl_liststart)
127    (322 :rpl_list)
128    (323 :rpl_listend)
129    (324 :rpl_channelmodeis)
130    (325 :rpl_uniqopis)
131    (326 :rpl_whoisoperprivs) ; Seen in dancer ircd source
132    (327 :rpl_whoisrealhost) ; Seen in dancer ircd source
133    (329 :rpl_creationtime) ; Seen in dancer ircd source
134    (331 :rpl_notopic)
135    (332 :rpl_topic)
136    (333 :rpl_topicwhotime) ; Seen in dancer ircd source
137    (341 :rpl_inviting)
138    (342 :rpl_summoning)
139    (346 :rpl_invitelist)
140    (347 :rpl_endofinvitelist)
141    (348 :rpl_exceptlist)
142    (349 :rpl_endofexceptlist)
143    (351 :rpl_version)
144    (352 :rpl_whoreply)
145    (353 :rpl_namreply)
146    (361 :rpl_killdone)
147    (362 :rpl_closing)
148    (363 :rpl_closeend)
149    (366 :rpl_endofnames)
150    (364 :rpl_links)
151    (365 :rpl_endoflinks)
152    (367 :rpl_banlist)
153    (368 :rpl_endofbanlist)
154    (369 :rpl_endofwhowas)
155    (371 :rpl_info)
156    (372 :rpl_motd)
157    (373 :rpl_infostart)
158    (374 :rpl_endofinfo)
159    (375 :rpl_motdstart)
160    (376 :rpl_endofmotd)
161    (377 :rpl_map) ; Seen in dancer ircd source
162    (378 :rpl_endofmap) ; Seen in dancer ircd source
163    (379 :rpl_forward) ; Seen in dancer ircd source
164    (381 :rpl_youreoper)
165    (382 :rpl_rehashing)
166    (383 :rpl_yourservice)
167    (384 :rpl_myportis)
168    (391 :rpl_time)
169    (392 :rpl_usersstart)
170    (393 :rpl_users)
171    (394 :rpl_endofusers)
172    (395 :rpl_nousers)
173    (399 :rpl_message) ; Seen in dancer ircd source
174    (401 :err_nosuchnick)
175    (402 :err_nosuchserver)
176    (403 :err_nosuchchannel)
177    (404 :err_cannotsendtochan)
178    (405 :err_toomanychannels)
179    (406 :err_wasnosuchnick)
180    (407 :err_toomanytargets)
181    (408 :err_nosuchservice)
182    (409 :err_noorigin)
183    (410 :err_services_offline) ; Seen in dancer ircd source
184    (411 :err_norecipient)
185    (412 :err_notexttosend)
186    (413 :err_notoplevel)
187    (414 :err_wildtoplevel)
188    (415 :err_badmask)
189    (421 :err_unknowncommand)
190    (422 :err_nomotd)
191    (423 :err_noadmininfo)
192    (424 :err_fileerror)
193    (431 :err_nonicknamegiven)
194    (432 :err_erroneusnickname)
195    (433 :err_nicknameinuse)
196    (436 :err_nickcollision)
197    (437 :err_unavailresource)
198    (438 :err_bannickchange) ; Seen in dancer ircd source
199    (441 :err_usernotinchannel)
200    (442 :err_notonchannel)
201    (443 :err_useronchannel)
202    (444 :err_nologin)
203    (445 :err_summondisabled)
204    (446 :err_userdisabled)
205    (447 :err_targetninvite) ; Seen in dancer ircd source
206    (448 :err_sourceninvite) ; Seen in dancer ircd source
207    (451 :err_notregistered)
208    (461 :err_needmoreparams)
209    (462 :err_alreadyregistered)
210    (463 :err_nopermforhost)
211    (464 :err_passwdmismatch)
212    (465 :err_yourebannedcreep)
213    (466 :err_youwillbebanned)
214    (467 :err_keyset)
215    (471 :err_channelisfull)
216    (472 :err_unknownmode)
217    (473 :err_inviteonlychan)
218    (474 :err_bannedfromchan)
219    (475 :err_badchannelkey)
220    (476 :err_badchanmask)
221    (477 :err_nochanmodes)
222    (478 :err_banlistfull)
223    (479 :err_badchanname) ; Seen in dancer ircd source
224    (480 :err_throttled) ; Seen in dancer ircd source
225    (481 :err_noprivileges)
226    (482 :err_chanoprivsneeded)
227    (483 :err_cantkillserver)
228    (484 :err_restricted)
229    (485 :err_uniqopprivsneeded)
230    (486 :err_restricted) ; Seen in dancer ircd source
231    (487 :err_no_op_split) ; Seen in dancer ircd source
232    (488 :err_need_umode) ; Seen in dancer ircd source
233    (491 :err_nooperhost)
234    (501 :err_umodeunknownflag)
235    (502 :err_usersdontmatch)
236    (503 :err_ghostedclient) ; Seen in dancer ircd source
237    (505 :err_blocking_notid) ; Seen in dancer ircd source
238    (511 :err_sitelistfull) ; Seen in dancer ircd source
239    (512 :err_maxmapnodes) ; Seen in dancer ircd source
240    (513 :err_maxforwarding) ; Seen in dancer ircd source
241    (514 :err_noforwarding) ; Seen in dancer ircd source
242    (515 :err_nounidentified) ; Seen in dancer ircd source
243    (516 :err_last_err_msg))) ; Seen in dancer ircd source
244
Note: See TracBrowser for help on using the repository browser.