123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # https://tools.ietf.org/html/rfc2812#section-2.3.1
- p_chanstring= r"[^\x00\x07\r\n ,:]"
- p_channelid = "[a-z0-9]{5}"
- p_user = r"[^\x00\r\n @]+"
- p_key = r"[\z01-05\x07-08\x0C\x0E-F1\x21-7F]{1,23}"
- p_letter = "[a-zA-Z0-9]"
- p_digit = "[0-9]"
- p_hexdigit = "("+p_digit+")|[A-F]"
- p_special = r"[\x5B-60\x7B-7D]"
- p_nospcrlfcl= r"[^\x00\x007\r\n :]"
- p_wildone = r"\x3F"
- p_wildmany = r"\x2A"
- p_nowild = r"[\x01-29\x2B-3E\x40-FF]"
- p_noesc = r"[\x01-5B\5D-FF]"
- p_mask = "(("+p_nowild+")|("+p_noesc+p_wildone+")|("+p_noesc+p_wildmany+"))*"
- p_targetmask= "\$|#"+p_mask
- p_channel = "(#|+|(!"+p_channelid+")|&)+("+p_chanstring+")(:"+p_chanstring+")?"
- p_nickname = "("+p_letter+")|("+p_special+")(("+p_letter+")|("+p_digit+")|("+p_special+")){8}"
- p_shortname = "("+p_letter+")|("+p_digit+")(("+p_letter+")|("+p_digit+")|(-)*(("+p_letter+")|("+p_digit+"))*"
- p_hostname = "("+p_shortname+")(."+p_shortname+")" # dot
- p_servername= p_hostname
- p_ip4addr = "("+p_digit+"){1,3}."+"("+p_digit+"){1,3}."+"("+p_digit+"){1,3}."+"("+p_digit+"){1,3}"
- p_ip6addr = "(("+p_hexdigit+")+(:("+p_hexdigit+")+){7})"\
- + "|(0:0:0:0:0:(0|(FFFF):"+p_ip4addr+")"
- p_hostaddr = "("+p_ip4addr+")|("+p_ip6addr+")"
- p_host = "("+p_hostname+")|("+p_hostaddr+")"
- p_middle = p_nospcrlfcl+"(:|("+p_nospcrlfcl+"))*"
- p_trailing = "(:| |("+p_nospcrlfcl+"))*"
- p_params = "(( "+p_middle+"){0,13}( :"+p_trailing+")?)|(( "+p_middle+"){14}( :?"+p_trailing+")?)"
- p_command = "(\w+)|(\d{3})"
- p_prefix = "("+p_servername+")|("+p_nickname+"((!"+p_user+")?@"+p_host+")?"
- p_message = "(:"+p_prefix+" )?"+p_command+"("+p_params+")?"
- p_target = "("+p_nickname+")|("+p_servername+")" #p_server
- p_msgto = "("+p_channel+")"\
- +"|("+p_user+"(%"+p_host+")@"+p_servername+")"\
- +"|("+p_user+"%"+p_host+")"\
- +"|("+p_targetmask+")"\
- +"|("+p_nickname+")"\
- +"|("+p_nickname+"!"+p_user+"@"+p_host+")"
- p_msgtarget = p_msgto+"(,"+p_msgto+")*"
|