Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

constants.go 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package irc
  2. import (
  3. "errors"
  4. "regexp"
  5. "time"
  6. )
  7. var (
  8. // errors
  9. ErrAlreadyDestroyed = errors.New("already destroyed")
  10. // regexps
  11. ChannelNameExpr = regexp.MustCompile(`^[&!#+][\pL\pN]{1,63}$`)
  12. NicknameExpr = regexp.MustCompile(
  13. "^[\\pL\\pN\\pP\\pS]{1,32}$")
  14. )
  15. const (
  16. SEM_VER = "ergonomadic-1.3.1"
  17. CRLF = "\r\n"
  18. MAX_REPLY_LEN = 512 - len(CRLF)
  19. LOGIN_TIMEOUT = time.Minute / 2 // how long the client has to login
  20. IDLE_TIMEOUT = time.Minute // how long before a client is considered idle
  21. QUIT_TIMEOUT = time.Minute // how long after idle before a client is kicked
  22. // string codes
  23. AWAY StringCode = "AWAY"
  24. CAP StringCode = "CAP"
  25. DEBUG StringCode = "DEBUG"
  26. ERROR StringCode = "ERROR"
  27. INVITE StringCode = "INVITE"
  28. ISON StringCode = "ISON"
  29. JOIN StringCode = "JOIN"
  30. KICK StringCode = "KICK"
  31. KILL StringCode = "KILL"
  32. LIST StringCode = "LIST"
  33. MODE StringCode = "MODE"
  34. MOTD StringCode = "MOTD"
  35. NAMES StringCode = "NAMES"
  36. NICK StringCode = "NICK"
  37. NOTICE StringCode = "NOTICE"
  38. OPER StringCode = "OPER"
  39. PART StringCode = "PART"
  40. PASS StringCode = "PASS"
  41. PING StringCode = "PING"
  42. PONG StringCode = "PONG"
  43. PRIVMSG StringCode = "PRIVMSG"
  44. PROXY StringCode = "PROXY"
  45. QUIT StringCode = "QUIT"
  46. TIME StringCode = "TIME"
  47. TOPIC StringCode = "TOPIC"
  48. USER StringCode = "USER"
  49. VERSION StringCode = "VERSION"
  50. WHO StringCode = "WHO"
  51. WHOIS StringCode = "WHOIS"
  52. WHOWAS StringCode = "WHOWAS"
  53. // numeric codes
  54. RPL_WELCOME NumericCode = 1
  55. RPL_YOURHOST NumericCode = 2
  56. RPL_CREATED NumericCode = 3
  57. RPL_MYINFO NumericCode = 4
  58. RPL_BOUNCE NumericCode = 5
  59. RPL_TRACELINK NumericCode = 200
  60. RPL_TRACECONNECTING NumericCode = 201
  61. RPL_TRACEHANDSHAKE NumericCode = 202
  62. RPL_TRACEUNKNOWN NumericCode = 203
  63. RPL_TRACEOPERATOR NumericCode = 204
  64. RPL_TRACEUSER NumericCode = 205
  65. RPL_TRACESERVER NumericCode = 206
  66. RPL_TRACESERVICE NumericCode = 207
  67. RPL_TRACENEWTYPE NumericCode = 208
  68. RPL_TRACECLASS NumericCode = 209
  69. RPL_TRACERECONNECT NumericCode = 210
  70. RPL_STATSLINKINFO NumericCode = 211
  71. RPL_STATSCOMMANDS NumericCode = 212
  72. RPL_ENDOFSTATS NumericCode = 219
  73. RPL_UMODEIS NumericCode = 221
  74. RPL_SERVLIST NumericCode = 234
  75. RPL_SERVLISTEND NumericCode = 235
  76. RPL_STATSUPTIME NumericCode = 242
  77. RPL_STATSOLINE NumericCode = 243
  78. RPL_LUSERCLIENT NumericCode = 251
  79. RPL_LUSEROP NumericCode = 252
  80. RPL_LUSERUNKNOWN NumericCode = 253
  81. RPL_LUSERCHANNELS NumericCode = 254
  82. RPL_LUSERME NumericCode = 255
  83. RPL_ADMINME NumericCode = 256
  84. RPL_ADMINLOC1 NumericCode = 257
  85. RPL_ADMINLOC2 NumericCode = 258
  86. RPL_ADMINEMAIL NumericCode = 259
  87. RPL_TRACELOG NumericCode = 261
  88. RPL_TRACEEND NumericCode = 262
  89. RPL_TRYAGAIN NumericCode = 263
  90. RPL_AWAY NumericCode = 301
  91. RPL_USERHOST NumericCode = 302
  92. RPL_ISON NumericCode = 303
  93. RPL_UNAWAY NumericCode = 305
  94. RPL_NOWAWAY NumericCode = 306
  95. RPL_WHOISUSER NumericCode = 311
  96. RPL_WHOISSERVER NumericCode = 312
  97. RPL_WHOISOPERATOR NumericCode = 313
  98. RPL_WHOWASUSER NumericCode = 314
  99. RPL_ENDOFWHO NumericCode = 315
  100. RPL_WHOISIDLE NumericCode = 317
  101. RPL_ENDOFWHOIS NumericCode = 318
  102. RPL_WHOISCHANNELS NumericCode = 319
  103. RPL_LIST NumericCode = 322
  104. RPL_LISTEND NumericCode = 323
  105. RPL_CHANNELMODEIS NumericCode = 324
  106. RPL_UNIQOPIS NumericCode = 325
  107. RPL_NOTOPIC NumericCode = 331
  108. RPL_TOPIC NumericCode = 332
  109. RPL_INVITING NumericCode = 341
  110. RPL_SUMMONING NumericCode = 342
  111. RPL_INVITELIST NumericCode = 346
  112. RPL_ENDOFINVITELIST NumericCode = 347
  113. RPL_EXCEPTLIST NumericCode = 348
  114. RPL_ENDOFEXCEPTLIST NumericCode = 349
  115. RPL_VERSION NumericCode = 351
  116. RPL_WHOREPLY NumericCode = 352
  117. RPL_NAMREPLY NumericCode = 353
  118. RPL_LINKS NumericCode = 364
  119. RPL_ENDOFLINKS NumericCode = 365
  120. RPL_ENDOFNAMES NumericCode = 366
  121. RPL_BANLIST NumericCode = 367
  122. RPL_ENDOFBANLIST NumericCode = 368
  123. RPL_ENDOFWHOWAS NumericCode = 369
  124. RPL_INFO NumericCode = 371
  125. RPL_MOTD NumericCode = 372
  126. RPL_ENDOFINFO NumericCode = 374
  127. RPL_MOTDSTART NumericCode = 375
  128. RPL_ENDOFMOTD NumericCode = 376
  129. RPL_YOUREOPER NumericCode = 381
  130. RPL_REHASHING NumericCode = 382
  131. RPL_YOURESERVICE NumericCode = 383
  132. RPL_TIME NumericCode = 391
  133. RPL_USERSSTART NumericCode = 392
  134. RPL_USERS NumericCode = 393
  135. RPL_ENDOFUSERS NumericCode = 394
  136. RPL_NOUSERS NumericCode = 395
  137. ERR_NOSUCHNICK NumericCode = 401
  138. ERR_NOSUCHSERVER NumericCode = 402
  139. ERR_NOSUCHCHANNEL NumericCode = 403
  140. ERR_CANNOTSENDTOCHAN NumericCode = 404
  141. ERR_TOOMANYCHANNELS NumericCode = 405
  142. ERR_WASNOSUCHNICK NumericCode = 406
  143. ERR_TOOMANYTARGETS NumericCode = 407
  144. ERR_NOSUCHSERVICE NumericCode = 408
  145. ERR_NOORIGIN NumericCode = 409
  146. ERR_INVALIDCAPCMD NumericCode = 410
  147. ERR_NORECIPIENT NumericCode = 411
  148. ERR_NOTEXTTOSEND NumericCode = 412
  149. ERR_NOTOPLEVEL NumericCode = 413
  150. ERR_WILDTOPLEVEL NumericCode = 414
  151. ERR_BADMASK NumericCode = 415
  152. ERR_UNKNOWNCOMMAND NumericCode = 421
  153. ERR_NOMOTD NumericCode = 422
  154. ERR_NOADMININFO NumericCode = 423
  155. ERR_FILEERROR NumericCode = 424
  156. ERR_NONICKNAMEGIVEN NumericCode = 431
  157. ERR_ERRONEUSNICKNAME NumericCode = 432
  158. ERR_NICKNAMEINUSE NumericCode = 433
  159. ERR_NICKCOLLISION NumericCode = 436
  160. ERR_UNAVAILRESOURCE NumericCode = 437
  161. ERR_USERNOTINCHANNEL NumericCode = 441
  162. ERR_NOTONCHANNEL NumericCode = 442
  163. ERR_USERONCHANNEL NumericCode = 443
  164. ERR_NOLOGIN NumericCode = 444
  165. ERR_SUMMONDISABLED NumericCode = 445
  166. ERR_USERSDISABLED NumericCode = 446
  167. ERR_NOTREGISTERED NumericCode = 451
  168. ERR_NEEDMOREPARAMS NumericCode = 461
  169. ERR_ALREADYREGISTRED NumericCode = 462
  170. ERR_NOPERMFORHOST NumericCode = 463
  171. ERR_PASSWDMISMATCH NumericCode = 464
  172. ERR_YOUREBANNEDCREEP NumericCode = 465
  173. ERR_YOUWILLBEBANNED NumericCode = 466
  174. ERR_KEYSET NumericCode = 467
  175. ERR_CHANNELISFULL NumericCode = 471
  176. ERR_UNKNOWNMODE NumericCode = 472
  177. ERR_INVITEONLYCHAN NumericCode = 473
  178. ERR_BANNEDFROMCHAN NumericCode = 474
  179. ERR_BADCHANNELKEY NumericCode = 475
  180. ERR_BADCHANMASK NumericCode = 476
  181. ERR_NOCHANMODES NumericCode = 477
  182. ERR_BANLISTFULL NumericCode = 478
  183. ERR_NOPRIVILEGES NumericCode = 481
  184. ERR_CHANOPRIVSNEEDED NumericCode = 482
  185. ERR_CANTKILLSERVER NumericCode = 483
  186. ERR_RESTRICTED NumericCode = 484
  187. ERR_UNIQOPPRIVSNEEDED NumericCode = 485
  188. ERR_NOOPERHOST NumericCode = 491
  189. ERR_UMODEUNKNOWNFLAG NumericCode = 501
  190. ERR_USERSDONTMATCH NumericCode = 502
  191. Add ModeOp = '+'
  192. List ModeOp = '='
  193. Remove ModeOp = '-'
  194. Away UserMode = 'a'
  195. Invisible UserMode = 'i'
  196. LocalOperator UserMode = 'O'
  197. Operator UserMode = 'o'
  198. Restricted UserMode = 'r'
  199. ServerNotice UserMode = 's' // deprecated
  200. WallOps UserMode = 'w'
  201. Anonymous ChannelMode = 'a' // flag
  202. BanMask ChannelMode = 'b' // arg
  203. ChannelCreator ChannelMode = 'O' // flag
  204. ChannelOperator ChannelMode = 'o' // arg
  205. ExceptMask ChannelMode = 'e' // arg
  206. InviteMask ChannelMode = 'I' // arg
  207. InviteOnly ChannelMode = 'i' // flag
  208. Key ChannelMode = 'k' // flag arg
  209. Moderated ChannelMode = 'm' // flag
  210. NoOutside ChannelMode = 'n' // flag
  211. OpOnlyTopic ChannelMode = 't' // flag
  212. Persistent ChannelMode = 'P' // flag
  213. Private ChannelMode = 'p' // flag
  214. Quiet ChannelMode = 'q' // flag
  215. ReOp ChannelMode = 'r' // flag
  216. Secret ChannelMode = 's' // flag, deprecated
  217. UserLimit ChannelMode = 'l' // flag arg
  218. Voice ChannelMode = 'v' // arg
  219. )
  220. const (
  221. Registration Phase = iota
  222. Normal Phase = iota
  223. )