From 473acc61c8392dc7ae303d91568e179c4f105a76 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 2 Jul 2019 12:12:53 +0200 Subject: add black list --- flood.go | 4 + flood_test.go | 1 + go.mod | 10 +- go.sum | 27 + vendor/github.com/fluffle/goirc/.gitignore | 8 - vendor/github.com/fluffle/goirc/.travis.yml | 19 - vendor/github.com/fluffle/goirc/README.md | 119 - vendor/github.com/fluffle/goirc/client.go | 104 - .../fluffle/goirc/client/commands_test.go | 205 - .../fluffle/goirc/client/connection_test.go | 585 - .../fluffle/goirc/client/dispatch_test.go | 201 - .../fluffle/goirc/client/handlers_test.go | 451 - .../github.com/fluffle/goirc/client/line_test.go | 186 - .../fluffle/goirc/client/mocknetconn_test.go | 154 - vendor/github.com/fluffle/goirc/doc/rfc2811.txt | 1067 - vendor/github.com/fluffle/goirc/doc/rfc2812.txt | 3531 - .../github.com/fluffle/goirc/doc/unreal32docs.html | 3666 - .../github.com/fluffle/goirc/logging/glog/glog.go | 32 - .../fluffle/goirc/logging/golog/golog.go | 15 - vendor/github.com/fluffle/goirc/logging/logging.go | 9 +- vendor/github.com/fluffle/goirc/state/channel.go | 14 +- .../github.com/fluffle/goirc/state/channel_test.go | 176 - vendor/github.com/fluffle/goirc/state/nick.go | 7 +- vendor/github.com/fluffle/goirc/state/nick_test.go | 88 - .../github.com/fluffle/goirc/state/tracker_test.go | 564 - vendor/github.com/fluffle/goirc/vims | 1 - vendor/github.com/golang/mock/.gitignore | 17 - vendor/github.com/golang/mock/.travis.yml | 14 - vendor/github.com/golang/mock/README.md | 94 - vendor/github.com/golang/mock/ci/check_go_fmt.sh | 12 - .../github.com/golang/mock/ci/check_go_generate.sh | 25 - vendor/github.com/golang/mock/gomock/call.go | 20 +- vendor/github.com/golang/mock/gomock/call_test.go | 51 - .../github.com/golang/mock/gomock/callset_test.go | 76 - vendor/github.com/golang/mock/gomock/controller.go | 119 +- .../golang/mock/gomock/controller_test.go | 712 - vendor/github.com/golang/mock/gomock/matchers.go | 50 +- .../github.com/golang/mock/gomock/matchers_test.go | 70 - .../mock/gomock/mock_matcher/mock_matcher.go | 57 - vendor/github.com/golang/mock/mockgen/mockgen.go | 559 - .../github.com/golang/mock/mockgen/mockgen_test.go | 181 - .../github.com/golang/mock/mockgen/model/model.go | 449 - vendor/github.com/golang/mock/mockgen/parse.go | 504 - .../github.com/golang/mock/mockgen/parse_test.go | 108 - vendor/github.com/golang/mock/mockgen/reflect.go | 197 - .../tests/aux_imports_embedded_interface/README.md | 36 - .../aux_imports_embedded_interface/bugreport.go | 18 - .../bugreport_mock.go | 46 - .../bugreport_test.go | 18 - .../aux_imports_embedded_interface/faux/faux.go | 10 - .../mockgen/tests/custom_package_name/README.md | 22 - .../tests/custom_package_name/client/v1/client.go | 13 - .../tests/custom_package_name/greeter/greeter.go | 31 - .../greeter/greeter_mock_test.go | 46 - .../custom_package_name/greeter/greeter_test.go | 37 - .../custom_package_name/validator/validate.go | 5 - .../mock/mockgen/tests/empty_interface/input.go | 4 - .../mock/mockgen/tests/empty_interface/mock.go | 32 - .../tests/generated_identifier_conflict/README.md | 26 - .../generated_identifier_conflict/bugreport.go | 16 - .../bugreport_mock.go | 58 - .../bugreport_test.go | 26 - .../mock/mockgen/tests/import_source/Readme.md | 3 - .../tests/import_source/definition/source.go | 9 - .../tests/import_source/definition/source_mock.go | 43 - .../mockgen/tests/import_source/source_mock.go | 44 - .../mock/mockgen/tests/internal_pkg/generate.go | 3 - .../internal_pkg/subdir/internal/pkg/input.go | 9 - .../subdir/internal/pkg/reflect_output/mock.go | 46 - .../subdir/internal/pkg/source_output/mock.go | 81 - .../mock/mockgen/tests/unexported_method/README.md | 1 - .../mockgen/tests/unexported_method/bugreport.go | 15 - .../tests/unexported_method/bugreport_mock.go | 45 - .../tests/unexported_method/bugreport_test.go | 17 - .../golang/mock/mockgen/tests/vendor_dep/README.md | 2 - .../golang/mock/mockgen/tests/vendor_dep/doc.go | 4 - .../golang/mock/mockgen/tests/vendor_dep/mock.go | 46 - .../tests/vendor_dep/source_mock_package/mock.go | 46 - .../mock/mockgen/tests/vendor_dep/vendor_dep.go | 7 - .../golang/mock/mockgen/tests/vendor_pkg/README.md | 1 - .../golang/mock/mockgen/tests/vendor_pkg/doc.go | 3 - .../golang/mock/mockgen/tests/vendor_pkg/mock.go | 99 - vendor/github.com/golang/mock/sample/README.md | 16 - .../golang/mock/sample/concurrent/concurrent.go | 8 - .../mock/sample/concurrent/concurrent_test.go | 46 - .../mock/sample/concurrent/mock/concurrent_mock.go | 45 - vendor/github.com/golang/mock/sample/imp1/imp1.go | 17 - vendor/github.com/golang/mock/sample/imp2/imp2.go | 3 - vendor/github.com/golang/mock/sample/imp3/imp3.go | 3 - vendor/github.com/golang/mock/sample/imp4/imp4.go | 3 - .../golang/mock/sample/mock_user/mock_user.go | 384 - vendor/github.com/golang/mock/sample/user.go | 114 - vendor/github.com/golang/mock/sample/user_test.go | 161 - vendor/github.com/hashicorp/golang-lru/2q_test.go | 306 - vendor/github.com/hashicorp/golang-lru/arc_test.go | 377 - vendor/github.com/hashicorp/golang-lru/go.mod | 1 + vendor/github.com/hashicorp/golang-lru/lru.go | 30 +- vendor/github.com/hashicorp/golang-lru/lru_test.go | 221 - .../golang-lru/simplelru/lru_interface.go | 45 +- .../hashicorp/golang-lru/simplelru/lru_test.go | 167 - vendor/golang.org/x/net/.gitattributes | 10 - vendor/golang.org/x/net/.gitignore | 2 - vendor/golang.org/x/net/CONTRIBUTING.md | 26 - vendor/golang.org/x/net/README.md | 16 - vendor/golang.org/x/net/bpf/asm.go | 41 - vendor/golang.org/x/net/bpf/constants.go | 218 - vendor/golang.org/x/net/bpf/doc.go | 82 - vendor/golang.org/x/net/bpf/instructions.go | 704 - vendor/golang.org/x/net/bpf/instructions_test.go | 525 - vendor/golang.org/x/net/bpf/setter.go | 10 - .../x/net/bpf/testdata/all_instructions.bpf | 1 - .../x/net/bpf/testdata/all_instructions.txt | 79 - vendor/golang.org/x/net/bpf/vm.go | 140 - vendor/golang.org/x/net/bpf/vm_aluop_test.go | 512 - vendor/golang.org/x/net/bpf/vm_bpf_test.go | 192 - vendor/golang.org/x/net/bpf/vm_extension_test.go | 49 - vendor/golang.org/x/net/bpf/vm_instructions.go | 174 - vendor/golang.org/x/net/bpf/vm_jump_test.go | 380 - vendor/golang.org/x/net/bpf/vm_load_test.go | 246 - vendor/golang.org/x/net/bpf/vm_ret_test.go | 115 - vendor/golang.org/x/net/bpf/vm_scratch_test.go | 247 - vendor/golang.org/x/net/bpf/vm_test.go | 144 - vendor/golang.org/x/net/codereview.cfg | 1 - vendor/golang.org/x/net/context/context.go | 56 - vendor/golang.org/x/net/context/context_test.go | 583 - vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go | 74 - .../x/net/context/ctxhttp/ctxhttp_17_test.go | 29 - .../x/net/context/ctxhttp/ctxhttp_pre17.go | 147 - .../x/net/context/ctxhttp/ctxhttp_pre17_test.go | 79 - .../x/net/context/ctxhttp/ctxhttp_test.go | 105 - vendor/golang.org/x/net/context/go17.go | 72 - vendor/golang.org/x/net/context/go19.go | 20 - vendor/golang.org/x/net/context/pre_go17.go | 300 - vendor/golang.org/x/net/context/pre_go19.go | 109 - .../golang.org/x/net/context/withtimeout_test.go | 31 - vendor/golang.org/x/net/dict/dict.go | 210 - .../x/net/dns/dnsmessage/example_test.go | 132 - vendor/golang.org/x/net/dns/dnsmessage/message.go | 2606 - .../x/net/dns/dnsmessage/message_test.go | 1451 - vendor/golang.org/x/net/html/atom/atom_test.go | 109 - vendor/golang.org/x/net/html/atom/table_test.go | 376 - .../golang.org/x/net/html/charset/charset_test.go | 237 - .../x/net/html/charset/testdata/HTTP-charset.html | 48 - .../html/charset/testdata/HTTP-vs-UTF-8-BOM.html | 48 - .../charset/testdata/HTTP-vs-meta-charset.html | 49 - .../charset/testdata/HTTP-vs-meta-content.html | 49 - .../charset/testdata/No-encoding-declaration.html | 47 - .../golang.org/x/net/html/charset/testdata/README | 9 - .../x/net/html/charset/testdata/UTF-16BE-BOM.html | Bin 2670 -> 0 bytes .../x/net/html/charset/testdata/UTF-16LE-BOM.html | Bin 2682 -> 0 bytes .../testdata/UTF-8-BOM-vs-meta-charset.html | 49 - .../testdata/UTF-8-BOM-vs-meta-content.html | 48 - .../charset/testdata/meta-charset-attribute.html | 48 - .../charset/testdata/meta-content-attribute.html | 48 - vendor/golang.org/x/net/html/const.go | 10 +- vendor/golang.org/x/net/html/entity_test.go | 29 - vendor/golang.org/x/net/html/escape_test.go | 97 - vendor/golang.org/x/net/html/example_test.go | 40 - vendor/golang.org/x/net/html/node.go | 2 +- vendor/golang.org/x/net/html/node_test.go | 146 - vendor/golang.org/x/net/html/parse.go | 271 +- vendor/golang.org/x/net/html/parse_test.go | 402 - vendor/golang.org/x/net/html/render_test.go | 156 - .../golang.org/x/net/html/testdata/go/template.dat | 13 - vendor/golang.org/x/net/html/testdata/go1.html | 2237 - .../golang.org/x/net/html/testdata/webkit/README | 28 - .../x/net/html/testdata/webkit/adoption01.dat | 194 - .../x/net/html/testdata/webkit/adoption02.dat | 31 - .../x/net/html/testdata/webkit/comments01.dat | 135 - .../x/net/html/testdata/webkit/doctype01.dat | 370 - .../x/net/html/testdata/webkit/entities01.dat | 603 - .../x/net/html/testdata/webkit/entities02.dat | 249 - .../x/net/html/testdata/webkit/html5test-com.dat | 246 - .../x/net/html/testdata/webkit/inbody01.dat | 43 - .../x/net/html/testdata/webkit/isindex.dat | 40 - .../pending-spec-changes-plain-text-unsafe.dat | Bin 115 -> 0 bytes .../html/testdata/webkit/pending-spec-changes.dat | 52 - .../net/html/testdata/webkit/plain-text-unsafe.dat | Bin 4166 -> 0 bytes .../golang.org/x/net/html/testdata/webkit/ruby.dat | 298 - .../x/net/html/testdata/webkit/scriptdata01.dat | 308 - .../html/testdata/webkit/scripted/adoption01.dat | 15 - .../net/html/testdata/webkit/scripted/webkit01.dat | 28 - .../x/net/html/testdata/webkit/tables01.dat | 212 - .../x/net/html/testdata/webkit/template.dat | 1117 - .../x/net/html/testdata/webkit/tests1.dat | 1952 - .../x/net/html/testdata/webkit/tests10.dat | 799 - .../x/net/html/testdata/webkit/tests11.dat | 482 - .../x/net/html/testdata/webkit/tests12.dat | 62 - .../x/net/html/testdata/webkit/tests14.dat | 74 - .../x/net/html/testdata/webkit/tests15.dat | 208 - .../x/net/html/testdata/webkit/tests16.dat | 2299 - .../x/net/html/testdata/webkit/tests17.dat | 153 - .../x/net/html/testdata/webkit/tests18.dat | 269 - .../x/net/html/testdata/webkit/tests19.dat | 1237 - .../x/net/html/testdata/webkit/tests2.dat | 763 - .../x/net/html/testdata/webkit/tests20.dat | 455 - .../x/net/html/testdata/webkit/tests21.dat | 221 - .../x/net/html/testdata/webkit/tests22.dat | 157 - .../x/net/html/testdata/webkit/tests23.dat | 155 - .../x/net/html/testdata/webkit/tests24.dat | 79 - .../x/net/html/testdata/webkit/tests25.dat | 219 - .../x/net/html/testdata/webkit/tests26.dat | 313 - .../x/net/html/testdata/webkit/tests3.dat | 305 - .../x/net/html/testdata/webkit/tests4.dat | 59 - .../x/net/html/testdata/webkit/tests5.dat | 191 - .../x/net/html/testdata/webkit/tests6.dat | 663 - .../x/net/html/testdata/webkit/tests7.dat | 390 - .../x/net/html/testdata/webkit/tests8.dat | 148 - .../x/net/html/testdata/webkit/tests9.dat | 457 - .../net/html/testdata/webkit/tests_innerHTML_1.dat | 741 - .../x/net/html/testdata/webkit/tricky01.dat | 261 - .../x/net/html/testdata/webkit/webkit01.dat | 610 - .../x/net/html/testdata/webkit/webkit02.dat | 159 - vendor/golang.org/x/net/html/token_test.go | 748 - vendor/golang.org/x/net/http/httpguts/guts.go | 50 - vendor/golang.org/x/net/http/httpguts/httplex.go | 346 - .../golang.org/x/net/http/httpguts/httplex_test.go | 119 - .../golang.org/x/net/http/httpproxy/export_test.go | 13 - .../golang.org/x/net/http/httpproxy/go19_test.go | 13 - vendor/golang.org/x/net/http/httpproxy/proxy.go | 370 - .../golang.org/x/net/http/httpproxy/proxy_test.go | 351 - vendor/golang.org/x/net/http2/.gitignore | 2 - vendor/golang.org/x/net/http2/Dockerfile | 51 - vendor/golang.org/x/net/http2/Makefile | 3 - vendor/golang.org/x/net/http2/README | 20 - vendor/golang.org/x/net/http2/ciphers.go | 641 - vendor/golang.org/x/net/http2/ciphers_test.go | 309 - vendor/golang.org/x/net/http2/client_conn_pool.go | 282 - .../golang.org/x/net/http2/configure_transport.go | 82 - vendor/golang.org/x/net/http2/databuffer.go | 146 - vendor/golang.org/x/net/http2/databuffer_test.go | 157 - vendor/golang.org/x/net/http2/errors.go | 133 - vendor/golang.org/x/net/http2/errors_test.go | 24 - vendor/golang.org/x/net/http2/flow.go | 50 - vendor/golang.org/x/net/http2/flow_test.go | 87 - vendor/golang.org/x/net/http2/frame.go | 1614 - vendor/golang.org/x/net/http2/frame_test.go | 1235 - vendor/golang.org/x/net/http2/go111.go | 26 - vendor/golang.org/x/net/http2/go16.go | 16 - vendor/golang.org/x/net/http2/go17.go | 121 - vendor/golang.org/x/net/http2/go17_not18.go | 36 - vendor/golang.org/x/net/http2/go18.go | 56 - vendor/golang.org/x/net/http2/go18_test.go | 79 - vendor/golang.org/x/net/http2/go19.go | 16 - vendor/golang.org/x/net/http2/go19_test.go | 59 - vendor/golang.org/x/net/http2/gotrack.go | 170 - vendor/golang.org/x/net/http2/gotrack_test.go | 33 - vendor/golang.org/x/net/http2/h2demo/.gitignore | 6 - vendor/golang.org/x/net/http2/h2demo/Dockerfile | 11 - vendor/golang.org/x/net/http2/h2demo/Dockerfile.0 | 134 - vendor/golang.org/x/net/http2/h2demo/Makefile | 55 - vendor/golang.org/x/net/http2/h2demo/README | 16 - .../x/net/http2/h2demo/deployment-prod.yaml | 28 - vendor/golang.org/x/net/http2/h2demo/h2demo.go | 546 - vendor/golang.org/x/net/http2/h2demo/launch.go | 302 - vendor/golang.org/x/net/http2/h2demo/rootCA.key | 27 - vendor/golang.org/x/net/http2/h2demo/rootCA.pem | 26 - vendor/golang.org/x/net/http2/h2demo/rootCA.srl | 1 - vendor/golang.org/x/net/http2/h2demo/server.crt | 20 - vendor/golang.org/x/net/http2/h2demo/server.key | 27 - vendor/golang.org/x/net/http2/h2demo/service.yaml | 17 - vendor/golang.org/x/net/http2/h2demo/tmpl.go | 1991 - vendor/golang.org/x/net/http2/h2i/README.md | 97 - vendor/golang.org/x/net/http2/h2i/h2i.go | 522 - vendor/golang.org/x/net/http2/headermap.go | 78 - vendor/golang.org/x/net/http2/hpack/encode.go | 240 - vendor/golang.org/x/net/http2/hpack/encode_test.go | 386 - vendor/golang.org/x/net/http2/hpack/hpack.go | 496 - vendor/golang.org/x/net/http2/hpack/hpack_test.go | 741 - vendor/golang.org/x/net/http2/hpack/huffman.go | 212 - vendor/golang.org/x/net/http2/hpack/tables.go | 479 - vendor/golang.org/x/net/http2/hpack/tables_test.go | 214 - vendor/golang.org/x/net/http2/http2.go | 391 - vendor/golang.org/x/net/http2/http2_test.go | 227 - vendor/golang.org/x/net/http2/not_go111.go | 17 - vendor/golang.org/x/net/http2/not_go16.go | 21 - vendor/golang.org/x/net/http2/not_go17.go | 95 - vendor/golang.org/x/net/http2/not_go18.go | 29 - vendor/golang.org/x/net/http2/not_go19.go | 16 - vendor/golang.org/x/net/http2/pipe.go | 163 - vendor/golang.org/x/net/http2/pipe_test.go | 130 - vendor/golang.org/x/net/http2/server.go | 2897 - vendor/golang.org/x/net/http2/server_push_test.go | 521 - vendor/golang.org/x/net/http2/server_test.go | 3888 - .../http2/testdata/draft-ietf-httpbis-http2.xml | 5021 -- vendor/golang.org/x/net/http2/transport.go | 2453 - vendor/golang.org/x/net/http2/transport_test.go | 4185 -- vendor/golang.org/x/net/http2/write.go | 365 - vendor/golang.org/x/net/http2/writesched.go | 242 - .../golang.org/x/net/http2/writesched_priority.go | 452 - .../x/net/http2/writesched_priority_test.go | 541 - vendor/golang.org/x/net/http2/writesched_random.go | 72 - .../x/net/http2/writesched_random_test.go | 44 - vendor/golang.org/x/net/http2/writesched_test.go | 125 - vendor/golang.org/x/net/http2/z_spec_test.go | 356 - vendor/golang.org/x/net/icmp/diag_test.go | 274 - vendor/golang.org/x/net/icmp/dstunreach.go | 41 - vendor/golang.org/x/net/icmp/echo.go | 157 - vendor/golang.org/x/net/icmp/endpoint.go | 112 - vendor/golang.org/x/net/icmp/example_test.go | 63 - vendor/golang.org/x/net/icmp/extension.go | 108 - vendor/golang.org/x/net/icmp/extension_test.go | 333 - vendor/golang.org/x/net/icmp/helper_posix.go | 75 - vendor/golang.org/x/net/icmp/interface.go | 322 - vendor/golang.org/x/net/icmp/ipv4.go | 61 - vendor/golang.org/x/net/icmp/ipv4_test.go | 75 - vendor/golang.org/x/net/icmp/ipv6.go | 23 - vendor/golang.org/x/net/icmp/listen_posix.go | 100 - vendor/golang.org/x/net/icmp/listen_stub.go | 33 - vendor/golang.org/x/net/icmp/message.go | 157 - vendor/golang.org/x/net/icmp/message_test.go | 155 - vendor/golang.org/x/net/icmp/messagebody.go | 41 - vendor/golang.org/x/net/icmp/mpls.go | 77 - vendor/golang.org/x/net/icmp/multipart.go | 121 - vendor/golang.org/x/net/icmp/multipart_test.go | 575 - vendor/golang.org/x/net/icmp/packettoobig.go | 43 - vendor/golang.org/x/net/icmp/paramprob.go | 63 - vendor/golang.org/x/net/icmp/sys_freebsd.go | 11 - vendor/golang.org/x/net/icmp/timeexceeded.go | 39 - vendor/golang.org/x/net/idna/example_test.go | 70 - vendor/golang.org/x/net/idna/idna.go | 732 - vendor/golang.org/x/net/idna/idna_test.go | 108 - vendor/golang.org/x/net/idna/punycode.go | 203 - vendor/golang.org/x/net/idna/punycode_test.go | 198 - vendor/golang.org/x/net/idna/tables.go | 4557 -- vendor/golang.org/x/net/idna/trie.go | 72 - vendor/golang.org/x/net/idna/trieval.go | 119 - vendor/golang.org/x/net/internal/iana/const.go | 223 - vendor/golang.org/x/net/internal/iana/gen.go | 383 - .../x/net/internal/nettest/helper_bsd.go | 53 - .../x/net/internal/nettest/helper_nobsd.go | 15 - .../x/net/internal/nettest/helper_posix.go | 31 - .../x/net/internal/nettest/helper_stub.go | 32 - .../x/net/internal/nettest/helper_unix.go | 29 - .../x/net/internal/nettest/helper_windows.go | 42 - .../golang.org/x/net/internal/nettest/interface.go | 94 - vendor/golang.org/x/net/internal/nettest/rlimit.go | 11 - vendor/golang.org/x/net/internal/nettest/stack.go | 152 - vendor/golang.org/x/net/internal/socket/cmsghdr.go | 11 - .../x/net/internal/socket/cmsghdr_bsd.go | 13 - .../x/net/internal/socket/cmsghdr_linux_32bit.go | 14 - .../x/net/internal/socket/cmsghdr_linux_64bit.go | 14 - .../x/net/internal/socket/cmsghdr_solaris_64bit.go | 14 - .../x/net/internal/socket/cmsghdr_stub.go | 17 - .../x/net/internal/socket/defs_darwin.go | 44 - .../x/net/internal/socket/defs_dragonfly.go | 44 - .../x/net/internal/socket/defs_freebsd.go | 44 - .../golang.org/x/net/internal/socket/defs_linux.go | 49 - .../x/net/internal/socket/defs_netbsd.go | 47 - .../x/net/internal/socket/defs_openbsd.go | 44 - .../x/net/internal/socket/defs_solaris.go | 44 - .../golang.org/x/net/internal/socket/error_unix.go | 31 - .../x/net/internal/socket/error_windows.go | 26 - .../x/net/internal/socket/iovec_32bit.go | 19 - .../x/net/internal/socket/iovec_64bit.go | 19 - .../x/net/internal/socket/iovec_solaris_64bit.go | 19 - .../golang.org/x/net/internal/socket/iovec_stub.go | 11 - .../x/net/internal/socket/mmsghdr_stub.go | 21 - .../x/net/internal/socket/mmsghdr_unix.go | 42 - .../golang.org/x/net/internal/socket/msghdr_bsd.go | 39 - .../x/net/internal/socket/msghdr_bsdvar.go | 16 - .../x/net/internal/socket/msghdr_linux.go | 36 - .../x/net/internal/socket/msghdr_linux_32bit.go | 24 - .../x/net/internal/socket/msghdr_linux_64bit.go | 24 - .../x/net/internal/socket/msghdr_openbsd.go | 14 - .../x/net/internal/socket/msghdr_solaris_64bit.go | 36 - .../x/net/internal/socket/msghdr_stub.go | 14 - vendor/golang.org/x/net/internal/socket/rawconn.go | 66 - .../x/net/internal/socket/rawconn_mmsg.go | 74 - .../x/net/internal/socket/rawconn_msg.go | 77 - .../x/net/internal/socket/rawconn_nommsg.go | 18 - .../x/net/internal/socket/rawconn_nomsg.go | 18 - .../x/net/internal/socket/rawconn_stub.go | 25 - vendor/golang.org/x/net/internal/socket/reflect.go | 62 - vendor/golang.org/x/net/internal/socket/socket.go | 285 - .../x/net/internal/socket/socket_go1_9_test.go | 259 - .../x/net/internal/socket/socket_test.go | 46 - vendor/golang.org/x/net/internal/socket/sys.go | 33 - vendor/golang.org/x/net/internal/socket/sys_bsd.go | 17 - .../golang.org/x/net/internal/socket/sys_bsdvar.go | 14 - .../golang.org/x/net/internal/socket/sys_darwin.go | 7 - .../x/net/internal/socket/sys_dragonfly.go | 7 - .../golang.org/x/net/internal/socket/sys_linux.go | 27 - .../x/net/internal/socket/sys_linux_386.go | 55 - .../x/net/internal/socket/sys_linux_386.s | 11 - .../x/net/internal/socket/sys_linux_amd64.go | 10 - .../x/net/internal/socket/sys_linux_arm.go | 10 - .../x/net/internal/socket/sys_linux_arm64.go | 10 - .../x/net/internal/socket/sys_linux_mips.go | 10 - .../x/net/internal/socket/sys_linux_mips64.go | 10 - .../x/net/internal/socket/sys_linux_mips64le.go | 10 - .../x/net/internal/socket/sys_linux_mipsle.go | 10 - .../x/net/internal/socket/sys_linux_ppc64.go | 10 - .../x/net/internal/socket/sys_linux_ppc64le.go | 10 - .../x/net/internal/socket/sys_linux_s390x.go | 55 - .../x/net/internal/socket/sys_linux_s390x.s | 11 - .../golang.org/x/net/internal/socket/sys_netbsd.go | 25 - .../golang.org/x/net/internal/socket/sys_posix.go | 168 - .../x/net/internal/socket/sys_solaris.go | 71 - .../x/net/internal/socket/sys_solaris_amd64.s | 11 - .../golang.org/x/net/internal/socket/sys_stub.go | 64 - .../golang.org/x/net/internal/socket/sys_unix.go | 33 - .../x/net/internal/socket/sys_windows.go | 70 - .../x/net/internal/socket/zsys_darwin_386.go | 59 - .../x/net/internal/socket/zsys_darwin_amd64.go | 61 - .../x/net/internal/socket/zsys_darwin_arm.go | 59 - .../x/net/internal/socket/zsys_darwin_arm64.go | 61 - .../x/net/internal/socket/zsys_dragonfly_amd64.go | 61 - .../x/net/internal/socket/zsys_freebsd_386.go | 59 - .../x/net/internal/socket/zsys_freebsd_amd64.go | 61 - .../x/net/internal/socket/zsys_freebsd_arm.go | 59 - .../x/net/internal/socket/zsys_linux_386.go | 63 - .../x/net/internal/socket/zsys_linux_amd64.go | 66 - .../x/net/internal/socket/zsys_linux_arm.go | 63 - .../x/net/internal/socket/zsys_linux_arm64.go | 66 - .../x/net/internal/socket/zsys_linux_mips.go | 63 - .../x/net/internal/socket/zsys_linux_mips64.go | 66 - .../x/net/internal/socket/zsys_linux_mips64le.go | 66 - .../x/net/internal/socket/zsys_linux_mipsle.go | 63 - .../x/net/internal/socket/zsys_linux_ppc64.go | 66 - .../x/net/internal/socket/zsys_linux_ppc64le.go | 66 - .../x/net/internal/socket/zsys_linux_s390x.go | 66 - .../x/net/internal/socket/zsys_netbsd_386.go | 65 - .../x/net/internal/socket/zsys_netbsd_amd64.go | 68 - .../x/net/internal/socket/zsys_netbsd_arm.go | 65 - .../x/net/internal/socket/zsys_openbsd_386.go | 59 - .../x/net/internal/socket/zsys_openbsd_amd64.go | 61 - .../x/net/internal/socket/zsys_openbsd_arm.go | 59 - .../x/net/internal/socket/zsys_solaris_amd64.go | 60 - .../golang.org/x/net/internal/socks/dial_test.go | 170 - vendor/golang.org/x/net/internal/socks/socks.go | 1 + .../golang.org/x/net/internal/sockstest/server.go | 241 - .../x/net/internal/sockstest/server_test.go | 103 - .../x/net/internal/timeseries/timeseries.go | 525 - .../x/net/internal/timeseries/timeseries_test.go | 170 - vendor/golang.org/x/net/ipv4/batch.go | 190 - vendor/golang.org/x/net/ipv4/bpf_test.go | 93 - vendor/golang.org/x/net/ipv4/control.go | 144 - vendor/golang.org/x/net/ipv4/control_bsd.go | 40 - vendor/golang.org/x/net/ipv4/control_pktinfo.go | 39 - vendor/golang.org/x/net/ipv4/control_stub.go | 13 - vendor/golang.org/x/net/ipv4/control_test.go | 21 - vendor/golang.org/x/net/ipv4/control_unix.go | 73 - vendor/golang.org/x/net/ipv4/control_windows.go | 16 - vendor/golang.org/x/net/ipv4/defs_darwin.go | 77 - vendor/golang.org/x/net/ipv4/defs_dragonfly.go | 38 - vendor/golang.org/x/net/ipv4/defs_freebsd.go | 75 - vendor/golang.org/x/net/ipv4/defs_linux.go | 122 - vendor/golang.org/x/net/ipv4/defs_netbsd.go | 37 - vendor/golang.org/x/net/ipv4/defs_openbsd.go | 37 - vendor/golang.org/x/net/ipv4/defs_solaris.go | 84 - vendor/golang.org/x/net/ipv4/dgramopt.go | 264 - vendor/golang.org/x/net/ipv4/doc.go | 244 - vendor/golang.org/x/net/ipv4/endpoint.go | 186 - vendor/golang.org/x/net/ipv4/example_test.go | 224 - vendor/golang.org/x/net/ipv4/gen.go | 199 - vendor/golang.org/x/net/ipv4/genericopt.go | 55 - vendor/golang.org/x/net/ipv4/header.go | 158 - vendor/golang.org/x/net/ipv4/header_test.go | 228 - vendor/golang.org/x/net/ipv4/helper.go | 64 - vendor/golang.org/x/net/ipv4/iana.go | 38 - vendor/golang.org/x/net/ipv4/icmp.go | 57 - vendor/golang.org/x/net/ipv4/icmp_linux.go | 25 - vendor/golang.org/x/net/ipv4/icmp_stub.go | 25 - vendor/golang.org/x/net/ipv4/icmp_test.go | 95 - vendor/golang.org/x/net/ipv4/multicast_test.go | 334 - .../x/net/ipv4/multicastlistener_test.go | 265 - .../golang.org/x/net/ipv4/multicastsockopt_test.go | 195 - vendor/golang.org/x/net/ipv4/packet.go | 68 - vendor/golang.org/x/net/ipv4/packet_go1_8.go | 56 - vendor/golang.org/x/net/ipv4/packet_go1_9.go | 67 - vendor/golang.org/x/net/ipv4/payload.go | 23 - vendor/golang.org/x/net/ipv4/payload_cmsg.go | 33 - vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go | 59 - vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go | 67 - vendor/golang.org/x/net/ipv4/payload_nocmsg.go | 39 - .../golang.org/x/net/ipv4/readwrite_go1_8_test.go | 248 - .../golang.org/x/net/ipv4/readwrite_go1_9_test.go | 388 - vendor/golang.org/x/net/ipv4/readwrite_test.go | 140 - vendor/golang.org/x/net/ipv4/sockopt.go | 44 - vendor/golang.org/x/net/ipv4/sockopt_posix.go | 71 - vendor/golang.org/x/net/ipv4/sockopt_stub.go | 42 - vendor/golang.org/x/net/ipv4/sys_asmreq.go | 119 - vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go | 25 - vendor/golang.org/x/net/ipv4/sys_asmreqn.go | 42 - vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go | 21 - vendor/golang.org/x/net/ipv4/sys_bpf.go | 23 - vendor/golang.org/x/net/ipv4/sys_bpf_stub.go | 16 - vendor/golang.org/x/net/ipv4/sys_bsd.go | 37 - vendor/golang.org/x/net/ipv4/sys_darwin.go | 93 - vendor/golang.org/x/net/ipv4/sys_dragonfly.go | 35 - vendor/golang.org/x/net/ipv4/sys_freebsd.go | 76 - vendor/golang.org/x/net/ipv4/sys_linux.go | 59 - vendor/golang.org/x/net/ipv4/sys_solaris.go | 57 - vendor/golang.org/x/net/ipv4/sys_ssmreq.go | 54 - vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go | 21 - vendor/golang.org/x/net/ipv4/sys_stub.go | 13 - vendor/golang.org/x/net/ipv4/sys_windows.go | 67 - vendor/golang.org/x/net/ipv4/unicast_test.go | 247 - .../golang.org/x/net/ipv4/unicastsockopt_test.go | 148 - vendor/golang.org/x/net/ipv4/zsys_darwin.go | 99 - vendor/golang.org/x/net/ipv4/zsys_dragonfly.go | 31 - vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go | 93 - vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go | 95 - vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go | 95 - vendor/golang.org/x/net/ipv4/zsys_linux_386.go | 148 - vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go | 150 - vendor/golang.org/x/net/ipv4/zsys_linux_arm.go | 148 - vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go | 150 - vendor/golang.org/x/net/ipv4/zsys_linux_mips.go | 148 - vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go | 150 - .../golang.org/x/net/ipv4/zsys_linux_mips64le.go | 150 - vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go | 148 - vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go | 148 - vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go | 150 - vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go | 150 - vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go | 150 - vendor/golang.org/x/net/ipv4/zsys_netbsd.go | 30 - vendor/golang.org/x/net/ipv4/zsys_openbsd.go | 30 - vendor/golang.org/x/net/ipv4/zsys_solaris.go | 100 - vendor/golang.org/x/net/ipv6/batch.go | 118 - vendor/golang.org/x/net/ipv6/bpf_test.go | 96 - vendor/golang.org/x/net/ipv6/control.go | 187 - .../golang.org/x/net/ipv6/control_rfc2292_unix.go | 48 - .../golang.org/x/net/ipv6/control_rfc3542_unix.go | 94 - vendor/golang.org/x/net/ipv6/control_stub.go | 13 - vendor/golang.org/x/net/ipv6/control_test.go | 21 - vendor/golang.org/x/net/ipv6/control_unix.go | 55 - vendor/golang.org/x/net/ipv6/control_windows.go | 16 - vendor/golang.org/x/net/ipv6/defs_darwin.go | 112 - vendor/golang.org/x/net/ipv6/defs_dragonfly.go | 84 - vendor/golang.org/x/net/ipv6/defs_freebsd.go | 105 - vendor/golang.org/x/net/ipv6/defs_linux.go | 147 - vendor/golang.org/x/net/ipv6/defs_netbsd.go | 80 - vendor/golang.org/x/net/ipv6/defs_openbsd.go | 89 - vendor/golang.org/x/net/ipv6/defs_solaris.go | 114 - vendor/golang.org/x/net/ipv6/dgramopt.go | 301 - vendor/golang.org/x/net/ipv6/doc.go | 243 - vendor/golang.org/x/net/ipv6/endpoint.go | 127 - vendor/golang.org/x/net/ipv6/example_test.go | 216 - vendor/golang.org/x/net/ipv6/gen.go | 199 - vendor/golang.org/x/net/ipv6/genericopt.go | 56 - vendor/golang.org/x/net/ipv6/header.go | 55 - vendor/golang.org/x/net/ipv6/header_test.go | 55 - vendor/golang.org/x/net/ipv6/helper.go | 58 - vendor/golang.org/x/net/ipv6/iana.go | 86 - vendor/golang.org/x/net/ipv6/icmp.go | 60 - vendor/golang.org/x/net/ipv6/icmp_bsd.go | 29 - vendor/golang.org/x/net/ipv6/icmp_linux.go | 27 - vendor/golang.org/x/net/ipv6/icmp_solaris.go | 27 - vendor/golang.org/x/net/ipv6/icmp_stub.go | 23 - vendor/golang.org/x/net/ipv6/icmp_test.go | 96 - vendor/golang.org/x/net/ipv6/icmp_windows.go | 22 - .../golang.org/x/net/ipv6/mocktransponder_test.go | 32 - vendor/golang.org/x/net/ipv6/multicast_test.go | 264 - .../x/net/ipv6/multicastlistener_test.go | 261 - .../golang.org/x/net/ipv6/multicastsockopt_test.go | 157 - vendor/golang.org/x/net/ipv6/payload.go | 23 - vendor/golang.org/x/net/ipv6/payload_cmsg.go | 32 - vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go | 55 - vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go | 57 - vendor/golang.org/x/net/ipv6/payload_nocmsg.go | 38 - .../golang.org/x/net/ipv6/readwrite_go1_8_test.go | 242 - .../golang.org/x/net/ipv6/readwrite_go1_9_test.go | 373 - vendor/golang.org/x/net/ipv6/readwrite_test.go | 148 - vendor/golang.org/x/net/ipv6/sockopt.go | 43 - vendor/golang.org/x/net/ipv6/sockopt_posix.go | 87 - vendor/golang.org/x/net/ipv6/sockopt_stub.go | 46 - vendor/golang.org/x/net/ipv6/sockopt_test.go | 133 - vendor/golang.org/x/net/ipv6/sys_asmreq.go | 24 - vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go | 17 - vendor/golang.org/x/net/ipv6/sys_bpf.go | 23 - vendor/golang.org/x/net/ipv6/sys_bpf_stub.go | 16 - vendor/golang.org/x/net/ipv6/sys_bsd.go | 57 - vendor/golang.org/x/net/ipv6/sys_darwin.go | 106 - vendor/golang.org/x/net/ipv6/sys_freebsd.go | 92 - vendor/golang.org/x/net/ipv6/sys_linux.go | 74 - vendor/golang.org/x/net/ipv6/sys_solaris.go | 74 - vendor/golang.org/x/net/ipv6/sys_ssmreq.go | 54 - vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go | 21 - vendor/golang.org/x/net/ipv6/sys_stub.go | 13 - vendor/golang.org/x/net/ipv6/sys_windows.go | 75 - vendor/golang.org/x/net/ipv6/unicast_test.go | 184 - .../golang.org/x/net/ipv6/unicastsockopt_test.go | 120 - vendor/golang.org/x/net/ipv6/zsys_darwin.go | 131 - vendor/golang.org/x/net/ipv6/zsys_dragonfly.go | 88 - vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go | 122 - vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go | 124 - vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go | 124 - vendor/golang.org/x/net/ipv6/zsys_linux_386.go | 170 - vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go | 172 - vendor/golang.org/x/net/ipv6/zsys_linux_arm.go | 170 - vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go | 172 - vendor/golang.org/x/net/ipv6/zsys_linux_mips.go | 170 - vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go | 172 - .../golang.org/x/net/ipv6/zsys_linux_mips64le.go | 172 - vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go | 170 - vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go | 170 - vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go | 172 - vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go | 172 - vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go | 172 - vendor/golang.org/x/net/ipv6/zsys_netbsd.go | 84 - vendor/golang.org/x/net/ipv6/zsys_openbsd.go | 93 - vendor/golang.org/x/net/ipv6/zsys_solaris.go | 131 - vendor/golang.org/x/net/lif/address.go | 105 - vendor/golang.org/x/net/lif/address_test.go | 123 - vendor/golang.org/x/net/lif/binary.go | 115 - vendor/golang.org/x/net/lif/defs_solaris.go | 90 - vendor/golang.org/x/net/lif/lif.go | 43 - vendor/golang.org/x/net/lif/link.go | 126 - vendor/golang.org/x/net/lif/link_test.go | 63 - vendor/golang.org/x/net/lif/sys.go | 21 - vendor/golang.org/x/net/lif/sys_solaris_amd64.s | 8 - vendor/golang.org/x/net/lif/syscall.go | 28 - vendor/golang.org/x/net/lif/zsys_solaris_amd64.go | 103 - vendor/golang.org/x/net/nettest/conntest.go | 456 - vendor/golang.org/x/net/nettest/conntest_go16.go | 24 - vendor/golang.org/x/net/nettest/conntest_go17.go | 24 - vendor/golang.org/x/net/nettest/conntest_test.go | 76 - vendor/golang.org/x/net/netutil/listen.go | 74 - vendor/golang.org/x/net/netutil/listen_test.go | 147 - vendor/golang.org/x/net/proxy/dial.go | 54 + vendor/golang.org/x/net/proxy/direct.go | 15 +- vendor/golang.org/x/net/proxy/per_host.go | 15 + vendor/golang.org/x/net/proxy/per_host_test.go | 55 - vendor/golang.org/x/net/proxy/proxy.go | 33 +- vendor/golang.org/x/net/proxy/proxy_test.go | 123 - vendor/golang.org/x/net/proxy/socks5.go | 10 +- vendor/golang.org/x/net/publicsuffix/gen.go | 713 - vendor/golang.org/x/net/publicsuffix/list.go | 170 - vendor/golang.org/x/net/publicsuffix/list_test.go | 416 - vendor/golang.org/x/net/publicsuffix/table.go | 9745 --- vendor/golang.org/x/net/publicsuffix/table_test.go | 17308 ----- vendor/golang.org/x/net/route/address.go | 425 - .../golang.org/x/net/route/address_darwin_test.go | 63 - vendor/golang.org/x/net/route/address_test.go | 103 - vendor/golang.org/x/net/route/binary.go | 90 - vendor/golang.org/x/net/route/defs_darwin.go | 114 - vendor/golang.org/x/net/route/defs_dragonfly.go | 113 - vendor/golang.org/x/net/route/defs_freebsd.go | 337 - vendor/golang.org/x/net/route/defs_netbsd.go | 112 - vendor/golang.org/x/net/route/defs_openbsd.go | 116 - vendor/golang.org/x/net/route/interface.go | 64 - .../golang.org/x/net/route/interface_announce.go | 32 - vendor/golang.org/x/net/route/interface_classic.go | 66 - vendor/golang.org/x/net/route/interface_freebsd.go | 78 - .../golang.org/x/net/route/interface_multicast.go | 30 - vendor/golang.org/x/net/route/interface_openbsd.go | 90 - vendor/golang.org/x/net/route/message.go | 72 - .../golang.org/x/net/route/message_darwin_test.go | 34 - .../golang.org/x/net/route/message_freebsd_test.go | 92 - vendor/golang.org/x/net/route/message_test.go | 239 - vendor/golang.org/x/net/route/route.go | 123 - vendor/golang.org/x/net/route/route_classic.go | 75 - vendor/golang.org/x/net/route/route_openbsd.go | 65 - vendor/golang.org/x/net/route/route_test.go | 390 - vendor/golang.org/x/net/route/sys.go | 39 - vendor/golang.org/x/net/route/sys_darwin.go | 87 - vendor/golang.org/x/net/route/sys_dragonfly.go | 76 - vendor/golang.org/x/net/route/sys_freebsd.go | 155 - vendor/golang.org/x/net/route/sys_netbsd.go | 71 - vendor/golang.org/x/net/route/sys_openbsd.go | 80 - vendor/golang.org/x/net/route/syscall.go | 28 - vendor/golang.org/x/net/route/zsys_darwin.go | 99 - vendor/golang.org/x/net/route/zsys_dragonfly.go | 98 - vendor/golang.org/x/net/route/zsys_freebsd_386.go | 126 - .../golang.org/x/net/route/zsys_freebsd_amd64.go | 123 - vendor/golang.org/x/net/route/zsys_freebsd_arm.go | 123 - vendor/golang.org/x/net/route/zsys_netbsd.go | 97 - vendor/golang.org/x/net/route/zsys_openbsd.go | 101 - vendor/golang.org/x/net/trace/events.go | 532 - vendor/golang.org/x/net/trace/histogram.go | 365 - vendor/golang.org/x/net/trace/histogram_test.go | 325 - vendor/golang.org/x/net/trace/trace.go | 1103 - vendor/golang.org/x/net/trace/trace_go16.go | 21 - vendor/golang.org/x/net/trace/trace_go17.go | 21 - vendor/golang.org/x/net/trace/trace_test.go | 178 - vendor/golang.org/x/net/webdav/file.go | 796 - vendor/golang.org/x/net/webdav/file_go1.6.go | 17 - vendor/golang.org/x/net/webdav/file_go1.7.go | 16 - vendor/golang.org/x/net/webdav/file_test.go | 1184 - vendor/golang.org/x/net/webdav/if.go | 173 - vendor/golang.org/x/net/webdav/if_test.go | 322 - vendor/golang.org/x/net/webdav/internal/xml/README | 11 - .../x/net/webdav/internal/xml/atom_test.go | 56 - .../x/net/webdav/internal/xml/example_test.go | 151 - .../x/net/webdav/internal/xml/marshal.go | 1223 - .../x/net/webdav/internal/xml/marshal_test.go | 1939 - .../golang.org/x/net/webdav/internal/xml/read.go | 692 - .../x/net/webdav/internal/xml/read_test.go | 744 - .../x/net/webdav/internal/xml/typeinfo.go | 371 - vendor/golang.org/x/net/webdav/internal/xml/xml.go | 1998 - .../x/net/webdav/internal/xml/xml_test.go | 752 - .../golang.org/x/net/webdav/litmus_test_server.go | 94 - vendor/golang.org/x/net/webdav/lock.go | 445 - vendor/golang.org/x/net/webdav/lock_test.go | 731 - vendor/golang.org/x/net/webdav/prop.go | 470 - vendor/golang.org/x/net/webdav/prop_test.go | 717 - vendor/golang.org/x/net/webdav/webdav.go | 702 - vendor/golang.org/x/net/webdav/webdav_test.go | 344 - vendor/golang.org/x/net/webdav/xml.go | 519 - vendor/golang.org/x/net/webdav/xml_test.go | 906 - vendor/golang.org/x/net/websocket/client.go | 106 - vendor/golang.org/x/net/websocket/dial.go | 24 - vendor/golang.org/x/net/websocket/dial_test.go | 43 - .../golang.org/x/net/websocket/exampledial_test.go | 31 - .../x/net/websocket/examplehandler_test.go | 26 - vendor/golang.org/x/net/websocket/hybi.go | 583 - vendor/golang.org/x/net/websocket/hybi_test.go | 608 - vendor/golang.org/x/net/websocket/server.go | 113 - vendor/golang.org/x/net/websocket/websocket.go | 451 - .../golang.org/x/net/websocket/websocket_test.go | 665 - vendor/golang.org/x/net/xsrftoken/xsrf.go | 94 - vendor/golang.org/x/net/xsrftoken/xsrf_test.go | 83 - vendor/golang.org/x/text/.gitattributes | 10 - vendor/golang.org/x/text/.gitignore | 6 - vendor/golang.org/x/text/CONTRIBUTING.md | 31 - vendor/golang.org/x/text/README.md | 93 - vendor/golang.org/x/text/cases/cases.go | 162 - vendor/golang.org/x/text/cases/context.go | 376 - vendor/golang.org/x/text/cases/context_test.go | 438 - vendor/golang.org/x/text/cases/example_test.go | 53 - vendor/golang.org/x/text/cases/fold.go | 34 - vendor/golang.org/x/text/cases/fold_test.go | 51 - vendor/golang.org/x/text/cases/gen.go | 839 - vendor/golang.org/x/text/cases/gen_trieval.go | 219 - vendor/golang.org/x/text/cases/icu.go | 61 - vendor/golang.org/x/text/cases/icu_test.go | 210 - vendor/golang.org/x/text/cases/info.go | 82 - vendor/golang.org/x/text/cases/map.go | 816 - vendor/golang.org/x/text/cases/map_test.go | 950 - vendor/golang.org/x/text/cases/tables10.0.0.go | 2253 - .../golang.org/x/text/cases/tables10.0.0_test.go | 1160 - vendor/golang.org/x/text/cases/tables9.0.0.go | 2213 - vendor/golang.org/x/text/cases/tables9.0.0_test.go | 1156 - vendor/golang.org/x/text/cases/trieval.go | 215 - vendor/golang.org/x/text/cmd/gotext/common.go | 46 - vendor/golang.org/x/text/cmd/gotext/doc.go | 53 - .../x/text/cmd/gotext/examples/extract/catalog.go | 76 - .../extract/locales/de/messages.gotext.json | 186 - .../examples/extract/locales/de/out.gotext.json | 206 - .../extract/locales/en-US/messages.gotext.json | 82 - .../examples/extract/locales/en-US/out.gotext.json | 206 - .../examples/extract/locales/extracted.gotext.json | 206 - .../extract/locales/zh/messages.gotext.json | 203 - .../examples/extract/locales/zh/out.gotext.json | 206 - .../x/text/cmd/gotext/examples/extract/main.go | 87 - .../extract_http/locales/de/out.gotext.json | 39 - .../extract_http/locales/en-US/out.gotext.json | 39 - .../extract_http/locales/extracted.gotext.json | 39 - .../extract_http/locales/zh/out.gotext.json | 39 - .../text/cmd/gotext/examples/extract_http/main.go | 17 - .../cmd/gotext/examples/extract_http/pkg/pkg.go | 25 - .../x/text/cmd/gotext/examples/rewrite/main.go | 37 - .../x/text/cmd/gotext/examples/rewrite/printer.go | 16 - vendor/golang.org/x/text/cmd/gotext/extract.go | 81 - vendor/golang.org/x/text/cmd/gotext/generate.go | 104 - vendor/golang.org/x/text/cmd/gotext/main.go | 352 - vendor/golang.org/x/text/cmd/gotext/rewrite.go | 55 - vendor/golang.org/x/text/codereview.cfg | 1 - vendor/golang.org/x/text/collate/build/builder.go | 702 - .../x/text/collate/build/builder_test.go | 290 - vendor/golang.org/x/text/collate/build/colelem.go | 294 - .../x/text/collate/build/colelem_test.go | 215 - vendor/golang.org/x/text/collate/build/contract.go | 309 - .../x/text/collate/build/contract_test.go | 266 - vendor/golang.org/x/text/collate/build/order.go | 393 - .../golang.org/x/text/collate/build/order_test.go | 229 - vendor/golang.org/x/text/collate/build/table.go | 81 - vendor/golang.org/x/text/collate/build/trie.go | 290 - .../golang.org/x/text/collate/build/trie_test.go | 107 - vendor/golang.org/x/text/collate/collate.go | 403 - vendor/golang.org/x/text/collate/collate_test.go | 482 - vendor/golang.org/x/text/collate/export_test.go | 51 - vendor/golang.org/x/text/collate/index.go | 32 - vendor/golang.org/x/text/collate/maketables.go | 553 - vendor/golang.org/x/text/collate/option.go | 239 - vendor/golang.org/x/text/collate/option_test.go | 209 - vendor/golang.org/x/text/collate/reg_test.go | 230 - vendor/golang.org/x/text/collate/sort.go | 81 - vendor/golang.org/x/text/collate/sort_test.go | 55 - vendor/golang.org/x/text/collate/table_test.go | 291 - vendor/golang.org/x/text/collate/tables.go | 73789 ------------------- .../x/text/collate/tools/colcmp/Makefile | 7 - .../x/text/collate/tools/colcmp/chars.go | 1156 - .../golang.org/x/text/collate/tools/colcmp/col.go | 97 - .../x/text/collate/tools/colcmp/colcmp.go | 529 - .../x/text/collate/tools/colcmp/darwin.go | 111 - .../golang.org/x/text/collate/tools/colcmp/gen.go | 183 - .../golang.org/x/text/collate/tools/colcmp/icu.go | 209 - vendor/golang.org/x/text/currency/common.go | 67 - vendor/golang.org/x/text/currency/currency.go | 185 - vendor/golang.org/x/text/currency/currency_test.go | 171 - vendor/golang.org/x/text/currency/example_test.go | 27 - vendor/golang.org/x/text/currency/format.go | 215 - vendor/golang.org/x/text/currency/format_test.go | 70 - vendor/golang.org/x/text/currency/gen.go | 400 - vendor/golang.org/x/text/currency/gen_common.go | 71 - vendor/golang.org/x/text/currency/query.go | 152 - vendor/golang.org/x/text/currency/query_test.go | 107 - vendor/golang.org/x/text/currency/tables.go | 2629 - vendor/golang.org/x/text/currency/tables_test.go | 93 - vendor/golang.org/x/text/date/data_test.go | 335 - vendor/golang.org/x/text/date/gen.go | 329 - vendor/golang.org/x/text/date/gen_test.go | 241 - vendor/golang.org/x/text/date/tables.go | 64522 ---------------- vendor/golang.org/x/text/doc.go | 13 - .../x/text/encoding/charmap/charmap_test.go | 258 - vendor/golang.org/x/text/encoding/encoding.go | 2 +- vendor/golang.org/x/text/encoding/encoding_test.go | 290 - vendor/golang.org/x/text/encoding/example_test.go | 42 - .../x/text/encoding/htmlindex/htmlindex_test.go | 144 - .../golang.org/x/text/encoding/htmlindex/tables.go | 1 + .../x/text/encoding/ianaindex/example_test.go | 27 - vendor/golang.org/x/text/encoding/ianaindex/gen.go | 192 - .../x/text/encoding/ianaindex/ianaindex.go | 209 - .../x/text/encoding/ianaindex/ianaindex_test.go | 192 - .../golang.org/x/text/encoding/ianaindex/tables.go | 2348 - .../x/text/encoding/internal/enctest/enctest.go | 180 - .../x/text/encoding/internal/identifier/gen.go | 7 +- .../encoding/internal/identifier/identifier.go | 2 +- .../x/text/encoding/internal/identifier/mib.go | 96 +- .../x/text/encoding/japanese/all_test.go | 248 - .../x/text/encoding/japanese/maketables.go | 4 +- .../golang.org/x/text/encoding/korean/all_test.go | 94 - .../x/text/encoding/simplifiedchinese/all_test.go | 143 - .../x/text/encoding/testdata/candide-gb18030.txt | 510 - .../x/text/encoding/testdata/candide-utf-16le.txt | Bin 51932 -> 0 bytes .../x/text/encoding/testdata/candide-utf-32be.txt | Bin 103864 -> 0 bytes .../x/text/encoding/testdata/candide-utf-8.txt | 510 - .../encoding/testdata/candide-windows-1252.txt | 510 - .../x/text/encoding/testdata/rashomon-euc-jp.txt | 178 - .../encoding/testdata/rashomon-iso-2022-jp.txt | 178 - .../text/encoding/testdata/rashomon-shift-jis.txt | 178 - .../x/text/encoding/testdata/rashomon-utf-8.txt | 178 - .../sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt | 107 - .../sunzi-bingfa-gb-levels-1-and-2-utf-8.txt | 107 - .../testdata/sunzi-bingfa-simplified-gbk.txt | 107 - .../testdata/sunzi-bingfa-simplified-utf-8.txt | 107 - .../testdata/sunzi-bingfa-traditional-big5.txt | 106 - .../testdata/sunzi-bingfa-traditional-utf-8.txt | 106 - .../encoding/testdata/unsu-joh-eun-nal-euc-kr.txt | 175 - .../encoding/testdata/unsu-joh-eun-nal-utf-8.txt | 175 - .../x/text/encoding/traditionalchinese/all_test.go | 114 - .../golang.org/x/text/encoding/unicode/unicode.go | 2 +- .../x/text/encoding/unicode/unicode_test.go | 499 - .../x/text/encoding/unicode/utf32/utf32.go | 296 - .../x/text/encoding/unicode/utf32/utf32_test.go | 248 - vendor/golang.org/x/text/feature/plural/common.go | 70 - .../golang.org/x/text/feature/plural/data_test.go | 197 - .../x/text/feature/plural/example_test.go | 46 - vendor/golang.org/x/text/feature/plural/gen.go | 513 - .../golang.org/x/text/feature/plural/gen_common.go | 74 - vendor/golang.org/x/text/feature/plural/message.go | 244 - .../x/text/feature/plural/message_test.go | 197 - vendor/golang.org/x/text/feature/plural/plural.go | 258 - .../x/text/feature/plural/plural_test.go | 216 - vendor/golang.org/x/text/feature/plural/tables.go | 548 - vendor/golang.org/x/text/gen.go | 319 - vendor/golang.org/x/text/internal/catmsg/catmsg.go | 376 - .../x/text/internal/catmsg/catmsg_test.go | 316 - vendor/golang.org/x/text/internal/catmsg/codec.go | 407 - vendor/golang.org/x/text/internal/catmsg/varint.go | 62 - .../x/text/internal/catmsg/varint_test.go | 123 - .../x/text/internal/cldrtree/cldrtree.go | 353 - .../x/text/internal/cldrtree/cldrtree_test.go | 456 - .../x/text/internal/cldrtree/generate.go | 208 - .../golang.org/x/text/internal/cldrtree/option.go | 86 - .../cldrtree/testdata/test1/common/main/root.xml | 89 - .../internal/cldrtree/testdata/test1/output.go | 350 - .../cldrtree/testdata/test2/common/main/en.xml | 171 - .../cldrtree/testdata/test2/common/main/en_001.xml | 60 - .../cldrtree/testdata/test2/common/main/en_GB.xml | 63 - .../cldrtree/testdata/test2/common/main/root.xml | 646 - .../internal/cldrtree/testdata/test2/output.go | 889 - vendor/golang.org/x/text/internal/cldrtree/tree.go | 181 - vendor/golang.org/x/text/internal/cldrtree/type.go | 139 - .../x/text/internal/colltab/collate_test.go | 121 - .../golang.org/x/text/internal/colltab/collelem.go | 371 - .../x/text/internal/colltab/collelem_test.go | 183 - .../golang.org/x/text/internal/colltab/colltab.go | 105 - .../x/text/internal/colltab/colltab_test.go | 64 - .../golang.org/x/text/internal/colltab/contract.go | 145 - .../x/text/internal/colltab/contract_test.go | 131 - vendor/golang.org/x/text/internal/colltab/iter.go | 178 - .../x/text/internal/colltab/iter_test.go | 63 - .../golang.org/x/text/internal/colltab/numeric.go | 236 - .../x/text/internal/colltab/numeric_test.go | 159 - vendor/golang.org/x/text/internal/colltab/table.go | 275 - vendor/golang.org/x/text/internal/colltab/trie.go | 159 - .../x/text/internal/colltab/trie_test.go | 106 - .../golang.org/x/text/internal/colltab/weighter.go | 31 - .../x/text/internal/colltab/weighter_test.go | 42 - vendor/golang.org/x/text/internal/export/README | 4 - .../x/text/internal/export/idna/common_test.go | 55 - .../x/text/internal/export/idna/example_test.go | 68 - .../golang.org/x/text/internal/export/idna/gen.go | 276 - .../x/text/internal/export/idna/gen10.0.0_test.go | 93 - .../x/text/internal/export/idna/gen9.0.0_test.go | 84 - .../x/text/internal/export/idna/gen_common.go | 59 - .../x/text/internal/export/idna/gen_trieval.go | 123 - .../x/text/internal/export/idna/idna10.0.0.go | 733 - .../x/text/internal/export/idna/idna10.0.0_test.go | 140 - .../x/text/internal/export/idna/idna9.0.0.go | 681 - .../x/text/internal/export/idna/idna9.0.0_test.go | 136 - .../x/text/internal/export/idna/idna_test.go | 178 - .../x/text/internal/export/idna/punycode.go | 201 - .../x/text/internal/export/idna/punycode_test.go | 198 - .../x/text/internal/export/idna/tables10.0.0.go | 4559 -- .../x/text/internal/export/idna/tables9.0.0.go | 4486 -- .../golang.org/x/text/internal/export/idna/trie.go | 70 - .../x/text/internal/export/idna/trieval.go | 119 - vendor/golang.org/x/text/internal/format/format.go | 41 - vendor/golang.org/x/text/internal/format/parser.go | 357 - .../x/text/internal/format/parser_test.go | 32 - vendor/golang.org/x/text/internal/gen.go | 52 - vendor/golang.org/x/text/internal/gen/code.go | 369 - vendor/golang.org/x/text/internal/gen/gen.go | 333 - vendor/golang.org/x/text/internal/gen_test.go | 38 - vendor/golang.org/x/text/internal/internal.go | 51 - vendor/golang.org/x/text/internal/internal_test.go | 38 - .../golang.org/x/text/internal/language/common.go | 16 + .../golang.org/x/text/internal/language/compact.go | 29 + .../x/text/internal/language/compact/compact.go | 61 + .../x/text/internal/language/compact/gen.go | 64 + .../x/text/internal/language/compact/gen_index.go | 113 + .../text/internal/language/compact/gen_parents.go | 54 + .../x/text/internal/language/compact/language.go | 260 + .../x/text/internal/language/compact/parents.go | 120 + .../x/text/internal/language/compact/tables.go | 1015 + .../x/text/internal/language/compact/tags.go | 91 + .../golang.org/x/text/internal/language/compose.go | 167 + .../x/text/internal/language/coverage.go | 28 + vendor/golang.org/x/text/internal/language/gen.go | 1520 + .../x/text/internal/language/gen_common.go | 20 + .../x/text/internal/language/language.go | 596 + .../golang.org/x/text/internal/language/lookup.go | 412 + .../golang.org/x/text/internal/language/match.go | 226 + .../golang.org/x/text/internal/language/parse.go | 594 + .../golang.org/x/text/internal/language/tables.go | 3431 + vendor/golang.org/x/text/internal/language/tags.go | 48 + vendor/golang.org/x/text/internal/match.go | 67 - vendor/golang.org/x/text/internal/match_test.go | 56 - vendor/golang.org/x/text/internal/number/common.go | 51 - .../golang.org/x/text/internal/number/decimal.go | 498 - .../x/text/internal/number/decimal_test.go | 329 - vendor/golang.org/x/text/internal/number/format.go | 540 - .../x/text/internal/number/format_test.go | 522 - vendor/golang.org/x/text/internal/number/gen.go | 458 - .../x/text/internal/number/gen_common.go | 55 - vendor/golang.org/x/text/internal/number/number.go | 156 - .../x/text/internal/number/number_test.go | 104 - .../golang.org/x/text/internal/number/pattern.go | 485 - .../x/text/internal/number/pattern_test.go | 438 - .../x/text/internal/number/roundingmode_string.go | 16 - vendor/golang.org/x/text/internal/number/tables.go | 1211 - .../x/text/internal/number/tables_test.go | 125 - vendor/golang.org/x/text/internal/stringset/set.go | 86 - .../x/text/internal/stringset/set_test.go | 53 - vendor/golang.org/x/text/internal/tables.go | 118 - vendor/golang.org/x/text/internal/tag/tag_test.go | 67 - .../x/text/internal/testtext/codesize.go | 53 - vendor/golang.org/x/text/internal/testtext/flag.go | 22 - vendor/golang.org/x/text/internal/testtext/gc.go | 14 - .../golang.org/x/text/internal/testtext/gccgo.go | 11 - .../golang.org/x/text/internal/testtext/go1_6.go | 23 - .../golang.org/x/text/internal/testtext/go1_7.go | 17 - vendor/golang.org/x/text/internal/testtext/text.go | 105 - .../golang.org/x/text/internal/triegen/compact.go | 58 - .../x/text/internal/triegen/data_test.go | 875 - .../text/internal/triegen/example_compact_test.go | 71 - .../x/text/internal/triegen/example_test.go | 148 - .../golang.org/x/text/internal/triegen/gen_test.go | 68 - vendor/golang.org/x/text/internal/triegen/print.go | 251 - .../golang.org/x/text/internal/triegen/triegen.go | 494 - .../golang.org/x/text/internal/ucd/example_test.go | 81 - vendor/golang.org/x/text/internal/ucd/ucd.go | 371 - vendor/golang.org/x/text/internal/ucd/ucd_test.go | 105 - vendor/golang.org/x/text/language/Makefile | 16 - vendor/golang.org/x/text/language/common.go | 16 - vendor/golang.org/x/text/language/coverage.go | 34 +- vendor/golang.org/x/text/language/coverage_test.go | 154 - vendor/golang.org/x/text/language/display/dict.go | 92 - .../x/text/language/display/dict_test.go | 39 - .../golang.org/x/text/language/display/display.go | 420 - .../x/text/language/display/display_test.go | 714 - .../x/text/language/display/examples_test.go | 116 - .../golang.org/x/text/language/display/lookup.go | 251 - .../x/text/language/display/maketables.go | 602 - .../golang.org/x/text/language/display/tables.go | 53114 ------------- vendor/golang.org/x/text/language/examples_test.go | 413 - vendor/golang.org/x/text/language/gen.go | 1513 +- vendor/golang.org/x/text/language/gen_common.go | 20 - vendor/golang.org/x/text/language/gen_index.go | 162 - .../golang.org/x/text/language/httpexample_test.go | 48 - vendor/golang.org/x/text/language/index.go | 783 - vendor/golang.org/x/text/language/language.go | 720 +- vendor/golang.org/x/text/language/language_test.go | 911 - vendor/golang.org/x/text/language/lookup.go | 396 - vendor/golang.org/x/text/language/lookup_test.go | 457 - vendor/golang.org/x/text/language/match.go | 422 +- vendor/golang.org/x/text/language/match_test.go | 505 - vendor/golang.org/x/text/language/parse.go | 735 +- vendor/golang.org/x/text/language/parse_test.go | 517 - vendor/golang.org/x/text/language/tables.go | 3442 +- vendor/golang.org/x/text/language/tags.go | 160 +- .../language/testdata/CLDRLocaleMatcherTest.txt | 389 - .../text/language/testdata/GoLocaleMatcherTest.txt | 226 - vendor/golang.org/x/text/message/catalog.go | 36 - .../golang.org/x/text/message/catalog/catalog.go | 369 - .../x/text/message/catalog/catalog_test.go | 296 - vendor/golang.org/x/text/message/catalog/dict.go | 129 - vendor/golang.org/x/text/message/catalog/go19.go | 15 - .../golang.org/x/text/message/catalog/gopre19.go | 23 - vendor/golang.org/x/text/message/catalog_test.go | 43 - vendor/golang.org/x/text/message/doc.go | 100 - vendor/golang.org/x/text/message/examples_test.go | 42 - vendor/golang.org/x/text/message/fmt_test.go | 1871 - vendor/golang.org/x/text/message/format.go | 510 - vendor/golang.org/x/text/message/message.go | 186 - vendor/golang.org/x/text/message/message_test.go | 181 - .../golang.org/x/text/message/pipeline/extract.go | 305 - .../golang.org/x/text/message/pipeline/generate.go | 251 - .../golang.org/x/text/message/pipeline/message.go | 241 - .../golang.org/x/text/message/pipeline/pipeline.go | 57 - .../golang.org/x/text/message/pipeline/rewrite.go | 268 - vendor/golang.org/x/text/message/print.go | 979 - vendor/golang.org/x/text/number/doc.go | 28 - vendor/golang.org/x/text/number/examples_test.go | 28 - vendor/golang.org/x/text/number/format.go | 122 - vendor/golang.org/x/text/number/format_test.go | 112 - vendor/golang.org/x/text/number/number.go | 77 - vendor/golang.org/x/text/number/number_test.go | 190 - vendor/golang.org/x/text/number/option.go | 177 - vendor/golang.org/x/text/runes/cond_test.go | 282 - vendor/golang.org/x/text/runes/example_test.go | 60 - vendor/golang.org/x/text/runes/runes_test.go | 664 - vendor/golang.org/x/text/search/index.go | 35 - vendor/golang.org/x/text/search/pattern.go | 155 - vendor/golang.org/x/text/search/pattern_test.go | 357 - vendor/golang.org/x/text/search/search.go | 237 - vendor/golang.org/x/text/search/tables.go | 12448 ---- .../x/text/secure/bidirule/bench_test.go | 54 - .../golang.org/x/text/secure/bidirule/bidirule.go | 336 - .../x/text/secure/bidirule/bidirule10.0.0.go | 11 - .../x/text/secure/bidirule/bidirule10.0.0_test.go | 694 - .../x/text/secure/bidirule/bidirule9.0.0.go | 14 - .../x/text/secure/bidirule/bidirule9.0.0_test.go | 668 - .../x/text/secure/bidirule/bidirule_test.go | 168 - vendor/golang.org/x/text/secure/doc.go | 6 - .../x/text/secure/precis/benchmark_test.go | 82 - vendor/golang.org/x/text/secure/precis/class.go | 36 - .../golang.org/x/text/secure/precis/class_test.go | 50 - vendor/golang.org/x/text/secure/precis/context.go | 139 - vendor/golang.org/x/text/secure/precis/doc.go | 14 - .../x/text/secure/precis/enforce10.0.0_test.go | 244 - .../x/text/secure/precis/enforce9.0.0_test.go | 244 - .../x/text/secure/precis/enforce_test.go | 162 - vendor/golang.org/x/text/secure/precis/gen.go | 310 - .../golang.org/x/text/secure/precis/gen_trieval.go | 68 - vendor/golang.org/x/text/secure/precis/nickname.go | 72 - vendor/golang.org/x/text/secure/precis/options.go | 157 - vendor/golang.org/x/text/secure/precis/profile.go | 402 - .../x/text/secure/precis/profile_test.go | 149 - vendor/golang.org/x/text/secure/precis/profiles.go | 78 - .../x/text/secure/precis/tables10.0.0.go | 3889 - .../golang.org/x/text/secure/precis/tables9.0.0.go | 3790 - .../golang.org/x/text/secure/precis/tables_test.go | 69 - .../golang.org/x/text/secure/precis/transformer.go | 32 - vendor/golang.org/x/text/secure/precis/trieval.go | 64 - .../golang.org/x/text/transform/examples_test.go | 37 - vendor/golang.org/x/text/transform/transform.go | 6 +- .../golang.org/x/text/transform/transform_test.go | 1317 - vendor/golang.org/x/text/unicode/bidi/bidi.go | 198 - vendor/golang.org/x/text/unicode/bidi/bracket.go | 335 - vendor/golang.org/x/text/unicode/bidi/core.go | 1058 - vendor/golang.org/x/text/unicode/bidi/core_test.go | 224 - vendor/golang.org/x/text/unicode/bidi/gen.go | 133 - .../golang.org/x/text/unicode/bidi/gen_ranges.go | 57 - .../golang.org/x/text/unicode/bidi/gen_trieval.go | 64 - vendor/golang.org/x/text/unicode/bidi/prop.go | 206 - .../golang.org/x/text/unicode/bidi/ranges_test.go | 53 - .../golang.org/x/text/unicode/bidi/tables10.0.0.go | 1815 - .../golang.org/x/text/unicode/bidi/tables9.0.0.go | 1781 - .../golang.org/x/text/unicode/bidi/tables_test.go | 82 - vendor/golang.org/x/text/unicode/bidi/trieval.go | 60 - vendor/golang.org/x/text/unicode/cldr/base.go | 105 - vendor/golang.org/x/text/unicode/cldr/cldr.go | 130 - vendor/golang.org/x/text/unicode/cldr/cldr_test.go | 27 - vendor/golang.org/x/text/unicode/cldr/collate.go | 359 - .../golang.org/x/text/unicode/cldr/collate_test.go | 275 - vendor/golang.org/x/text/unicode/cldr/data_test.go | 186 - vendor/golang.org/x/text/unicode/cldr/decode.go | 171 - .../x/text/unicode/cldr/examples_test.go | 21 - vendor/golang.org/x/text/unicode/cldr/makexml.go | 400 - vendor/golang.org/x/text/unicode/cldr/resolve.go | 602 - .../golang.org/x/text/unicode/cldr/resolve_test.go | 368 - vendor/golang.org/x/text/unicode/cldr/slice.go | 144 - .../golang.org/x/text/unicode/cldr/slice_test.go | 175 - vendor/golang.org/x/text/unicode/cldr/xml.go | 1494 - vendor/golang.org/x/text/unicode/doc.go | 8 - .../golang.org/x/text/unicode/norm/composition.go | 508 - .../x/text/unicode/norm/composition_test.go | 130 - .../x/text/unicode/norm/data10.0.0_test.go | 7424 -- .../x/text/unicode/norm/data9.0.0_test.go | 7409 -- .../x/text/unicode/norm/example_iter_test.go | 82 - .../golang.org/x/text/unicode/norm/example_test.go | 27 - vendor/golang.org/x/text/unicode/norm/forminfo.go | 259 - .../x/text/unicode/norm/forminfo_test.go | 54 - vendor/golang.org/x/text/unicode/norm/input.go | 109 - vendor/golang.org/x/text/unicode/norm/iter.go | 457 - vendor/golang.org/x/text/unicode/norm/iter_test.go | 98 - .../golang.org/x/text/unicode/norm/maketables.go | 976 - vendor/golang.org/x/text/unicode/norm/normalize.go | 609 - .../x/text/unicode/norm/normalize_test.go | 1287 - .../golang.org/x/text/unicode/norm/readwriter.go | 125 - .../x/text/unicode/norm/readwriter_test.go | 56 - .../golang.org/x/text/unicode/norm/tables10.0.0.go | 7653 -- .../golang.org/x/text/unicode/norm/tables9.0.0.go | 7633 -- vendor/golang.org/x/text/unicode/norm/transform.go | 88 - .../x/text/unicode/norm/transform_test.go | 101 - vendor/golang.org/x/text/unicode/norm/trie.go | 54 - vendor/golang.org/x/text/unicode/norm/triegen.go | 117 - vendor/golang.org/x/text/unicode/norm/ucd_test.go | 275 - vendor/golang.org/x/text/unicode/rangetable/gen.go | 115 - .../golang.org/x/text/unicode/rangetable/merge.go | 260 - .../x/text/unicode/rangetable/merge_test.go | 184 - .../x/text/unicode/rangetable/rangetable.go | 70 - .../x/text/unicode/rangetable/rangetable_test.go | 55 - .../x/text/unicode/rangetable/tables10.0.0.go | 6378 -- .../x/text/unicode/rangetable/tables9.0.0.go | 5737 -- vendor/golang.org/x/text/unicode/runenames/bits.go | 59 - .../x/text/unicode/runenames/example_test.go | 118 - vendor/golang.org/x/text/unicode/runenames/gen.go | 195 - .../x/text/unicode/runenames/gen_bits.go | 63 - .../x/text/unicode/runenames/runenames.go | 48 - .../x/text/unicode/runenames/runenames_test.go | 46 - .../golang.org/x/text/unicode/runenames/tables.go | 15514 ---- vendor/golang.org/x/text/width/common_test.go | 92 - vendor/golang.org/x/text/width/example_test.go | 52 - vendor/golang.org/x/text/width/gen.go | 115 - vendor/golang.org/x/text/width/gen_common.go | 96 - vendor/golang.org/x/text/width/gen_trieval.go | 34 - vendor/golang.org/x/text/width/kind_string.go | 16 - vendor/golang.org/x/text/width/runes_test.go | 461 - vendor/golang.org/x/text/width/tables10.0.0.go | 1318 - vendor/golang.org/x/text/width/tables9.0.0.go | 1286 - vendor/golang.org/x/text/width/tables_test.go | 59 - vendor/golang.org/x/text/width/transform.go | 239 - vendor/golang.org/x/text/width/transform_test.go | 701 - vendor/golang.org/x/text/width/trieval.go | 30 - vendor/golang.org/x/text/width/width.go | 206 - vendor/modules.txt | 35 + 1153 files changed, 10057 insertions(+), 560611 deletions(-) create mode 100644 go.sum delete mode 100644 vendor/github.com/fluffle/goirc/.gitignore delete mode 100644 vendor/github.com/fluffle/goirc/.travis.yml delete mode 100644 vendor/github.com/fluffle/goirc/README.md delete mode 100644 vendor/github.com/fluffle/goirc/client.go delete mode 100644 vendor/github.com/fluffle/goirc/client/commands_test.go delete mode 100644 vendor/github.com/fluffle/goirc/client/connection_test.go delete mode 100644 vendor/github.com/fluffle/goirc/client/dispatch_test.go delete mode 100644 vendor/github.com/fluffle/goirc/client/handlers_test.go delete mode 100644 vendor/github.com/fluffle/goirc/client/line_test.go delete mode 100644 vendor/github.com/fluffle/goirc/client/mocknetconn_test.go delete mode 100644 vendor/github.com/fluffle/goirc/doc/rfc2811.txt delete mode 100644 vendor/github.com/fluffle/goirc/doc/rfc2812.txt delete mode 100644 vendor/github.com/fluffle/goirc/doc/unreal32docs.html delete mode 100644 vendor/github.com/fluffle/goirc/logging/glog/glog.go delete mode 100644 vendor/github.com/fluffle/goirc/logging/golog/golog.go delete mode 100644 vendor/github.com/fluffle/goirc/state/channel_test.go delete mode 100644 vendor/github.com/fluffle/goirc/state/nick_test.go delete mode 100644 vendor/github.com/fluffle/goirc/state/tracker_test.go delete mode 100644 vendor/github.com/fluffle/goirc/vims delete mode 100644 vendor/github.com/golang/mock/.gitignore delete mode 100644 vendor/github.com/golang/mock/.travis.yml delete mode 100644 vendor/github.com/golang/mock/README.md delete mode 100755 vendor/github.com/golang/mock/ci/check_go_fmt.sh delete mode 100755 vendor/github.com/golang/mock/ci/check_go_generate.sh delete mode 100644 vendor/github.com/golang/mock/gomock/call_test.go delete mode 100644 vendor/github.com/golang/mock/gomock/callset_test.go delete mode 100644 vendor/github.com/golang/mock/gomock/controller_test.go delete mode 100644 vendor/github.com/golang/mock/gomock/matchers_test.go delete mode 100644 vendor/github.com/golang/mock/gomock/mock_matcher/mock_matcher.go delete mode 100644 vendor/github.com/golang/mock/mockgen/mockgen.go delete mode 100644 vendor/github.com/golang/mock/mockgen/mockgen_test.go delete mode 100644 vendor/github.com/golang/mock/mockgen/model/model.go delete mode 100644 vendor/github.com/golang/mock/mockgen/parse.go delete mode 100644 vendor/github.com/golang/mock/mockgen/parse_test.go delete mode 100644 vendor/github.com/golang/mock/mockgen/reflect.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/README.md delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/bugreport_test.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/aux_imports_embedded_interface/faux/faux.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/custom_package_name/README.md delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/custom_package_name/client/v1/client.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/custom_package_name/greeter/greeter.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/custom_package_name/greeter/greeter_mock_test.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/custom_package_name/greeter/greeter_test.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/custom_package_name/validator/validate.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/empty_interface/input.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/empty_interface/mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/generated_identifier_conflict/README.md delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/generated_identifier_conflict/bugreport.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/generated_identifier_conflict/bugreport_mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/generated_identifier_conflict/bugreport_test.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/import_source/Readme.md delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/import_source/definition/source.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/import_source/definition/source_mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/import_source/source_mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/internal_pkg/generate.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/internal_pkg/subdir/internal/pkg/input.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/internal_pkg/subdir/internal/pkg/reflect_output/mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/internal_pkg/subdir/internal/pkg/source_output/mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/unexported_method/README.md delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_test.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_dep/README.md delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_dep/doc.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_dep/mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_dep/source_mock_package/mock.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_dep/vendor_dep.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_pkg/README.md delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_pkg/doc.go delete mode 100644 vendor/github.com/golang/mock/mockgen/tests/vendor_pkg/mock.go delete mode 100644 vendor/github.com/golang/mock/sample/README.md delete mode 100644 vendor/github.com/golang/mock/sample/concurrent/concurrent.go delete mode 100644 vendor/github.com/golang/mock/sample/concurrent/concurrent_test.go delete mode 100644 vendor/github.com/golang/mock/sample/concurrent/mock/concurrent_mock.go delete mode 100644 vendor/github.com/golang/mock/sample/imp1/imp1.go delete mode 100644 vendor/github.com/golang/mock/sample/imp2/imp2.go delete mode 100644 vendor/github.com/golang/mock/sample/imp3/imp3.go delete mode 100644 vendor/github.com/golang/mock/sample/imp4/imp4.go delete mode 100644 vendor/github.com/golang/mock/sample/mock_user/mock_user.go delete mode 100644 vendor/github.com/golang/mock/sample/user.go delete mode 100644 vendor/github.com/golang/mock/sample/user_test.go delete mode 100644 vendor/github.com/hashicorp/golang-lru/2q_test.go delete mode 100644 vendor/github.com/hashicorp/golang-lru/arc_test.go create mode 100644 vendor/github.com/hashicorp/golang-lru/go.mod delete mode 100644 vendor/github.com/hashicorp/golang-lru/lru_test.go delete mode 100644 vendor/github.com/hashicorp/golang-lru/simplelru/lru_test.go delete mode 100644 vendor/golang.org/x/net/.gitattributes delete mode 100644 vendor/golang.org/x/net/.gitignore delete mode 100644 vendor/golang.org/x/net/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/net/README.md delete mode 100644 vendor/golang.org/x/net/bpf/asm.go delete mode 100644 vendor/golang.org/x/net/bpf/constants.go delete mode 100644 vendor/golang.org/x/net/bpf/doc.go delete mode 100644 vendor/golang.org/x/net/bpf/instructions.go delete mode 100644 vendor/golang.org/x/net/bpf/instructions_test.go delete mode 100644 vendor/golang.org/x/net/bpf/setter.go delete mode 100644 vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf delete mode 100644 vendor/golang.org/x/net/bpf/testdata/all_instructions.txt delete mode 100644 vendor/golang.org/x/net/bpf/vm.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_aluop_test.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_bpf_test.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_extension_test.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_instructions.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_jump_test.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_load_test.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_ret_test.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_scratch_test.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_test.go delete mode 100644 vendor/golang.org/x/net/codereview.cfg delete mode 100644 vendor/golang.org/x/net/context/context.go delete mode 100644 vendor/golang.org/x/net/context/context_test.go delete mode 100644 vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go delete mode 100644 vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go delete mode 100644 vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go delete mode 100644 vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go delete mode 100644 vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.go delete mode 100644 vendor/golang.org/x/net/context/go17.go delete mode 100644 vendor/golang.org/x/net/context/go19.go delete mode 100644 vendor/golang.org/x/net/context/pre_go17.go delete mode 100644 vendor/golang.org/x/net/context/pre_go19.go delete mode 100644 vendor/golang.org/x/net/context/withtimeout_test.go delete mode 100644 vendor/golang.org/x/net/dict/dict.go delete mode 100644 vendor/golang.org/x/net/dns/dnsmessage/example_test.go delete mode 100644 vendor/golang.org/x/net/dns/dnsmessage/message.go delete mode 100644 vendor/golang.org/x/net/dns/dnsmessage/message_test.go delete mode 100644 vendor/golang.org/x/net/html/atom/atom_test.go delete mode 100644 vendor/golang.org/x/net/html/atom/table_test.go delete mode 100644 vendor/golang.org/x/net/html/charset/charset_test.go delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/README delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html delete mode 100644 vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html delete mode 100644 vendor/golang.org/x/net/html/entity_test.go delete mode 100644 vendor/golang.org/x/net/html/escape_test.go delete mode 100644 vendor/golang.org/x/net/html/example_test.go delete mode 100644 vendor/golang.org/x/net/html/node_test.go delete mode 100644 vendor/golang.org/x/net/html/parse_test.go delete mode 100644 vendor/golang.org/x/net/html/render_test.go delete mode 100644 vendor/golang.org/x/net/html/testdata/go/template.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/go1.html delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/README delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/comments01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/entities01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/entities02.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/isindex.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/ruby.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tables01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/template.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests1.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests10.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests11.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests12.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests14.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests15.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests16.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests17.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests18.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests19.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests2.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests20.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests21.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests22.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests23.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests24.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests25.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests26.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests3.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests4.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests5.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests6.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests7.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests8.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests9.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat delete mode 100644 vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat delete mode 100644 vendor/golang.org/x/net/html/token_test.go delete mode 100644 vendor/golang.org/x/net/http/httpguts/guts.go delete mode 100644 vendor/golang.org/x/net/http/httpguts/httplex.go delete mode 100644 vendor/golang.org/x/net/http/httpguts/httplex_test.go delete mode 100644 vendor/golang.org/x/net/http/httpproxy/export_test.go delete mode 100644 vendor/golang.org/x/net/http/httpproxy/go19_test.go delete mode 100644 vendor/golang.org/x/net/http/httpproxy/proxy.go delete mode 100644 vendor/golang.org/x/net/http/httpproxy/proxy_test.go delete mode 100644 vendor/golang.org/x/net/http2/.gitignore delete mode 100644 vendor/golang.org/x/net/http2/Dockerfile delete mode 100644 vendor/golang.org/x/net/http2/Makefile delete mode 100644 vendor/golang.org/x/net/http2/README delete mode 100644 vendor/golang.org/x/net/http2/ciphers.go delete mode 100644 vendor/golang.org/x/net/http2/ciphers_test.go delete mode 100644 vendor/golang.org/x/net/http2/client_conn_pool.go delete mode 100644 vendor/golang.org/x/net/http2/configure_transport.go delete mode 100644 vendor/golang.org/x/net/http2/databuffer.go delete mode 100644 vendor/golang.org/x/net/http2/databuffer_test.go delete mode 100644 vendor/golang.org/x/net/http2/errors.go delete mode 100644 vendor/golang.org/x/net/http2/errors_test.go delete mode 100644 vendor/golang.org/x/net/http2/flow.go delete mode 100644 vendor/golang.org/x/net/http2/flow_test.go delete mode 100644 vendor/golang.org/x/net/http2/frame.go delete mode 100644 vendor/golang.org/x/net/http2/frame_test.go delete mode 100644 vendor/golang.org/x/net/http2/go111.go delete mode 100644 vendor/golang.org/x/net/http2/go16.go delete mode 100644 vendor/golang.org/x/net/http2/go17.go delete mode 100644 vendor/golang.org/x/net/http2/go17_not18.go delete mode 100644 vendor/golang.org/x/net/http2/go18.go delete mode 100644 vendor/golang.org/x/net/http2/go18_test.go delete mode 100644 vendor/golang.org/x/net/http2/go19.go delete mode 100644 vendor/golang.org/x/net/http2/go19_test.go delete mode 100644 vendor/golang.org/x/net/http2/gotrack.go delete mode 100644 vendor/golang.org/x/net/http2/gotrack_test.go delete mode 100644 vendor/golang.org/x/net/http2/h2demo/.gitignore delete mode 100644 vendor/golang.org/x/net/http2/h2demo/Dockerfile delete mode 100644 vendor/golang.org/x/net/http2/h2demo/Dockerfile.0 delete mode 100644 vendor/golang.org/x/net/http2/h2demo/Makefile delete mode 100644 vendor/golang.org/x/net/http2/h2demo/README delete mode 100644 vendor/golang.org/x/net/http2/h2demo/deployment-prod.yaml delete mode 100644 vendor/golang.org/x/net/http2/h2demo/h2demo.go delete mode 100644 vendor/golang.org/x/net/http2/h2demo/launch.go delete mode 100644 vendor/golang.org/x/net/http2/h2demo/rootCA.key delete mode 100644 vendor/golang.org/x/net/http2/h2demo/rootCA.pem delete mode 100644 vendor/golang.org/x/net/http2/h2demo/rootCA.srl delete mode 100644 vendor/golang.org/x/net/http2/h2demo/server.crt delete mode 100644 vendor/golang.org/x/net/http2/h2demo/server.key delete mode 100644 vendor/golang.org/x/net/http2/h2demo/service.yaml delete mode 100644 vendor/golang.org/x/net/http2/h2demo/tmpl.go delete mode 100644 vendor/golang.org/x/net/http2/h2i/README.md delete mode 100644 vendor/golang.org/x/net/http2/h2i/h2i.go delete mode 100644 vendor/golang.org/x/net/http2/headermap.go delete mode 100644 vendor/golang.org/x/net/http2/hpack/encode.go delete mode 100644 vendor/golang.org/x/net/http2/hpack/encode_test.go delete mode 100644 vendor/golang.org/x/net/http2/hpack/hpack.go delete mode 100644 vendor/golang.org/x/net/http2/hpack/hpack_test.go delete mode 100644 vendor/golang.org/x/net/http2/hpack/huffman.go delete mode 100644 vendor/golang.org/x/net/http2/hpack/tables.go delete mode 100644 vendor/golang.org/x/net/http2/hpack/tables_test.go delete mode 100644 vendor/golang.org/x/net/http2/http2.go delete mode 100644 vendor/golang.org/x/net/http2/http2_test.go delete mode 100644 vendor/golang.org/x/net/http2/not_go111.go delete mode 100644 vendor/golang.org/x/net/http2/not_go16.go delete mode 100644 vendor/golang.org/x/net/http2/not_go17.go delete mode 100644 vendor/golang.org/x/net/http2/not_go18.go delete mode 100644 vendor/golang.org/x/net/http2/not_go19.go delete mode 100644 vendor/golang.org/x/net/http2/pipe.go delete mode 100644 vendor/golang.org/x/net/http2/pipe_test.go delete mode 100644 vendor/golang.org/x/net/http2/server.go delete mode 100644 vendor/golang.org/x/net/http2/server_push_test.go delete mode 100644 vendor/golang.org/x/net/http2/server_test.go delete mode 100644 vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml delete mode 100644 vendor/golang.org/x/net/http2/transport.go delete mode 100644 vendor/golang.org/x/net/http2/transport_test.go delete mode 100644 vendor/golang.org/x/net/http2/write.go delete mode 100644 vendor/golang.org/x/net/http2/writesched.go delete mode 100644 vendor/golang.org/x/net/http2/writesched_priority.go delete mode 100644 vendor/golang.org/x/net/http2/writesched_priority_test.go delete mode 100644 vendor/golang.org/x/net/http2/writesched_random.go delete mode 100644 vendor/golang.org/x/net/http2/writesched_random_test.go delete mode 100644 vendor/golang.org/x/net/http2/writesched_test.go delete mode 100644 vendor/golang.org/x/net/http2/z_spec_test.go delete mode 100644 vendor/golang.org/x/net/icmp/diag_test.go delete mode 100644 vendor/golang.org/x/net/icmp/dstunreach.go delete mode 100644 vendor/golang.org/x/net/icmp/echo.go delete mode 100644 vendor/golang.org/x/net/icmp/endpoint.go delete mode 100644 vendor/golang.org/x/net/icmp/example_test.go delete mode 100644 vendor/golang.org/x/net/icmp/extension.go delete mode 100644 vendor/golang.org/x/net/icmp/extension_test.go delete mode 100644 vendor/golang.org/x/net/icmp/helper_posix.go delete mode 100644 vendor/golang.org/x/net/icmp/interface.go delete mode 100644 vendor/golang.org/x/net/icmp/ipv4.go delete mode 100644 vendor/golang.org/x/net/icmp/ipv4_test.go delete mode 100644 vendor/golang.org/x/net/icmp/ipv6.go delete mode 100644 vendor/golang.org/x/net/icmp/listen_posix.go delete mode 100644 vendor/golang.org/x/net/icmp/listen_stub.go delete mode 100644 vendor/golang.org/x/net/icmp/message.go delete mode 100644 vendor/golang.org/x/net/icmp/message_test.go delete mode 100644 vendor/golang.org/x/net/icmp/messagebody.go delete mode 100644 vendor/golang.org/x/net/icmp/mpls.go delete mode 100644 vendor/golang.org/x/net/icmp/multipart.go delete mode 100644 vendor/golang.org/x/net/icmp/multipart_test.go delete mode 100644 vendor/golang.org/x/net/icmp/packettoobig.go delete mode 100644 vendor/golang.org/x/net/icmp/paramprob.go delete mode 100644 vendor/golang.org/x/net/icmp/sys_freebsd.go delete mode 100644 vendor/golang.org/x/net/icmp/timeexceeded.go delete mode 100644 vendor/golang.org/x/net/idna/example_test.go delete mode 100644 vendor/golang.org/x/net/idna/idna.go delete mode 100644 vendor/golang.org/x/net/idna/idna_test.go delete mode 100644 vendor/golang.org/x/net/idna/punycode.go delete mode 100644 vendor/golang.org/x/net/idna/punycode_test.go delete mode 100644 vendor/golang.org/x/net/idna/tables.go delete mode 100644 vendor/golang.org/x/net/idna/trie.go delete mode 100644 vendor/golang.org/x/net/idna/trieval.go delete mode 100644 vendor/golang.org/x/net/internal/iana/const.go delete mode 100644 vendor/golang.org/x/net/internal/iana/gen.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/helper_bsd.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/helper_nobsd.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/helper_posix.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/helper_stub.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/helper_unix.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/helper_windows.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/interface.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/rlimit.go delete mode 100644 vendor/golang.org/x/net/internal/nettest/stack.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_darwin.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_dragonfly.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_freebsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_linux.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_netbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_openbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_solaris.go delete mode 100644 vendor/golang.org/x/net/internal/socket/error_unix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/error_windows.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_32bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_msg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/reflect.go delete mode 100644 vendor/golang.org/x/net/internal/socket/socket.go delete mode 100644 vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go delete mode 100644 vendor/golang.org/x/net/internal/socket/socket_test.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsdvar.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_darwin.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.s delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_netbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_posix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_unix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_windows.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socks/dial_test.go delete mode 100644 vendor/golang.org/x/net/internal/sockstest/server.go delete mode 100644 vendor/golang.org/x/net/internal/sockstest/server_test.go delete mode 100644 vendor/golang.org/x/net/internal/timeseries/timeseries.go delete mode 100644 vendor/golang.org/x/net/internal/timeseries/timeseries_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/batch.go delete mode 100644 vendor/golang.org/x/net/ipv4/bpf_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/control.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_pktinfo.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_unix.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_windows.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_linux.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv4/dgramopt.go delete mode 100644 vendor/golang.org/x/net/ipv4/doc.go delete mode 100644 vendor/golang.org/x/net/ipv4/endpoint.go delete mode 100644 vendor/golang.org/x/net/ipv4/example_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/gen.go delete mode 100644 vendor/golang.org/x/net/ipv4/genericopt.go delete mode 100644 vendor/golang.org/x/net/ipv4/header.go delete mode 100644 vendor/golang.org/x/net/ipv4/header_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/helper.go delete mode 100644 vendor/golang.org/x/net/ipv4/iana.go delete mode 100644 vendor/golang.org/x/net/ipv4/icmp.go delete mode 100644 vendor/golang.org/x/net/ipv4/icmp_linux.go delete mode 100644 vendor/golang.org/x/net/ipv4/icmp_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/icmp_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/multicast_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/multicastlistener_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/multicastsockopt_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/packet.go delete mode 100644 vendor/golang.org/x/net/ipv4/packet_go1_8.go delete mode 100644 vendor/golang.org/x/net/ipv4/packet_go1_9.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload_cmsg.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload_nocmsg.go delete mode 100644 vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/readwrite_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/sockopt.go delete mode 100644 vendor/golang.org/x/net/ipv4/sockopt_posix.go delete mode 100644 vendor/golang.org/x/net/ipv4/sockopt_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_linux.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_windows.go delete mode 100644 vendor/golang.org/x/net/ipv4/unicast_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/unicastsockopt_test.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_386.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/batch.go delete mode 100644 vendor/golang.org/x/net/ipv6/bpf_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/control.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_unix.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_windows.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_linux.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/dgramopt.go delete mode 100644 vendor/golang.org/x/net/ipv6/doc.go delete mode 100644 vendor/golang.org/x/net/ipv6/endpoint.go delete mode 100644 vendor/golang.org/x/net/ipv6/example_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/gen.go delete mode 100644 vendor/golang.org/x/net/ipv6/genericopt.go delete mode 100644 vendor/golang.org/x/net/ipv6/header.go delete mode 100644 vendor/golang.org/x/net/ipv6/header_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/helper.go delete mode 100644 vendor/golang.org/x/net/ipv6/iana.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_linux.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_windows.go delete mode 100644 vendor/golang.org/x/net/ipv6/mocktransponder_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/multicast_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/multicastlistener_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/multicastsockopt_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload_cmsg.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload_nocmsg.go delete mode 100644 vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/readwrite_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/sockopt.go delete mode 100644 vendor/golang.org/x/net/ipv6/sockopt_posix.go delete mode 100644 vendor/golang.org/x/net/ipv6/sockopt_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sockopt_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_linux.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_windows.go delete mode 100644 vendor/golang.org/x/net/ipv6/unicast_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/unicastsockopt_test.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_386.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_solaris.go delete mode 100644 vendor/golang.org/x/net/lif/address.go delete mode 100644 vendor/golang.org/x/net/lif/address_test.go delete mode 100644 vendor/golang.org/x/net/lif/binary.go delete mode 100644 vendor/golang.org/x/net/lif/defs_solaris.go delete mode 100644 vendor/golang.org/x/net/lif/lif.go delete mode 100644 vendor/golang.org/x/net/lif/link.go delete mode 100644 vendor/golang.org/x/net/lif/link_test.go delete mode 100644 vendor/golang.org/x/net/lif/sys.go delete mode 100644 vendor/golang.org/x/net/lif/sys_solaris_amd64.s delete mode 100644 vendor/golang.org/x/net/lif/syscall.go delete mode 100644 vendor/golang.org/x/net/lif/zsys_solaris_amd64.go delete mode 100644 vendor/golang.org/x/net/nettest/conntest.go delete mode 100644 vendor/golang.org/x/net/nettest/conntest_go16.go delete mode 100644 vendor/golang.org/x/net/nettest/conntest_go17.go delete mode 100644 vendor/golang.org/x/net/nettest/conntest_test.go delete mode 100644 vendor/golang.org/x/net/netutil/listen.go delete mode 100644 vendor/golang.org/x/net/netutil/listen_test.go create mode 100644 vendor/golang.org/x/net/proxy/dial.go delete mode 100644 vendor/golang.org/x/net/proxy/per_host_test.go delete mode 100644 vendor/golang.org/x/net/proxy/proxy_test.go delete mode 100644 vendor/golang.org/x/net/publicsuffix/gen.go delete mode 100644 vendor/golang.org/x/net/publicsuffix/list.go delete mode 100644 vendor/golang.org/x/net/publicsuffix/list_test.go delete mode 100644 vendor/golang.org/x/net/publicsuffix/table.go delete mode 100644 vendor/golang.org/x/net/publicsuffix/table_test.go delete mode 100644 vendor/golang.org/x/net/route/address.go delete mode 100644 vendor/golang.org/x/net/route/address_darwin_test.go delete mode 100644 vendor/golang.org/x/net/route/address_test.go delete mode 100644 vendor/golang.org/x/net/route/binary.go delete mode 100644 vendor/golang.org/x/net/route/defs_darwin.go delete mode 100644 vendor/golang.org/x/net/route/defs_dragonfly.go delete mode 100644 vendor/golang.org/x/net/route/defs_freebsd.go delete mode 100644 vendor/golang.org/x/net/route/defs_netbsd.go delete mode 100644 vendor/golang.org/x/net/route/defs_openbsd.go delete mode 100644 vendor/golang.org/x/net/route/interface.go delete mode 100644 vendor/golang.org/x/net/route/interface_announce.go delete mode 100644 vendor/golang.org/x/net/route/interface_classic.go delete mode 100644 vendor/golang.org/x/net/route/interface_freebsd.go delete mode 100644 vendor/golang.org/x/net/route/interface_multicast.go delete mode 100644 vendor/golang.org/x/net/route/interface_openbsd.go delete mode 100644 vendor/golang.org/x/net/route/message.go delete mode 100644 vendor/golang.org/x/net/route/message_darwin_test.go delete mode 100644 vendor/golang.org/x/net/route/message_freebsd_test.go delete mode 100644 vendor/golang.org/x/net/route/message_test.go delete mode 100644 vendor/golang.org/x/net/route/route.go delete mode 100644 vendor/golang.org/x/net/route/route_classic.go delete mode 100644 vendor/golang.org/x/net/route/route_openbsd.go delete mode 100644 vendor/golang.org/x/net/route/route_test.go delete mode 100644 vendor/golang.org/x/net/route/sys.go delete mode 100644 vendor/golang.org/x/net/route/sys_darwin.go delete mode 100644 vendor/golang.org/x/net/route/sys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/route/sys_freebsd.go delete mode 100644 vendor/golang.org/x/net/route/sys_netbsd.go delete mode 100644 vendor/golang.org/x/net/route/sys_openbsd.go delete mode 100644 vendor/golang.org/x/net/route/syscall.go delete mode 100644 vendor/golang.org/x/net/route/zsys_darwin.go delete mode 100644 vendor/golang.org/x/net/route/zsys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/route/zsys_freebsd_386.go delete mode 100644 vendor/golang.org/x/net/route/zsys_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/net/route/zsys_freebsd_arm.go delete mode 100644 vendor/golang.org/x/net/route/zsys_netbsd.go delete mode 100644 vendor/golang.org/x/net/route/zsys_openbsd.go delete mode 100644 vendor/golang.org/x/net/trace/events.go delete mode 100644 vendor/golang.org/x/net/trace/histogram.go delete mode 100644 vendor/golang.org/x/net/trace/histogram_test.go delete mode 100644 vendor/golang.org/x/net/trace/trace.go delete mode 100644 vendor/golang.org/x/net/trace/trace_go16.go delete mode 100644 vendor/golang.org/x/net/trace/trace_go17.go delete mode 100644 vendor/golang.org/x/net/trace/trace_test.go delete mode 100644 vendor/golang.org/x/net/webdav/file.go delete mode 100644 vendor/golang.org/x/net/webdav/file_go1.6.go delete mode 100644 vendor/golang.org/x/net/webdav/file_go1.7.go delete mode 100644 vendor/golang.org/x/net/webdav/file_test.go delete mode 100644 vendor/golang.org/x/net/webdav/if.go delete mode 100644 vendor/golang.org/x/net/webdav/if_test.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/README delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/atom_test.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/example_test.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/marshal.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/read.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/read_test.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/xml.go delete mode 100644 vendor/golang.org/x/net/webdav/internal/xml/xml_test.go delete mode 100644 vendor/golang.org/x/net/webdav/litmus_test_server.go delete mode 100644 vendor/golang.org/x/net/webdav/lock.go delete mode 100644 vendor/golang.org/x/net/webdav/lock_test.go delete mode 100644 vendor/golang.org/x/net/webdav/prop.go delete mode 100644 vendor/golang.org/x/net/webdav/prop_test.go delete mode 100644 vendor/golang.org/x/net/webdav/webdav.go delete mode 100644 vendor/golang.org/x/net/webdav/webdav_test.go delete mode 100644 vendor/golang.org/x/net/webdav/xml.go delete mode 100644 vendor/golang.org/x/net/webdav/xml_test.go delete mode 100644 vendor/golang.org/x/net/websocket/client.go delete mode 100644 vendor/golang.org/x/net/websocket/dial.go delete mode 100644 vendor/golang.org/x/net/websocket/dial_test.go delete mode 100644 vendor/golang.org/x/net/websocket/exampledial_test.go delete mode 100644 vendor/golang.org/x/net/websocket/examplehandler_test.go delete mode 100644 vendor/golang.org/x/net/websocket/hybi.go delete mode 100644 vendor/golang.org/x/net/websocket/hybi_test.go delete mode 100644 vendor/golang.org/x/net/websocket/server.go delete mode 100644 vendor/golang.org/x/net/websocket/websocket.go delete mode 100644 vendor/golang.org/x/net/websocket/websocket_test.go delete mode 100644 vendor/golang.org/x/net/xsrftoken/xsrf.go delete mode 100644 vendor/golang.org/x/net/xsrftoken/xsrf_test.go delete mode 100644 vendor/golang.org/x/text/.gitattributes delete mode 100644 vendor/golang.org/x/text/.gitignore delete mode 100644 vendor/golang.org/x/text/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/text/README.md delete mode 100644 vendor/golang.org/x/text/cases/cases.go delete mode 100644 vendor/golang.org/x/text/cases/context.go delete mode 100644 vendor/golang.org/x/text/cases/context_test.go delete mode 100644 vendor/golang.org/x/text/cases/example_test.go delete mode 100644 vendor/golang.org/x/text/cases/fold.go delete mode 100644 vendor/golang.org/x/text/cases/fold_test.go delete mode 100644 vendor/golang.org/x/text/cases/gen.go delete mode 100644 vendor/golang.org/x/text/cases/gen_trieval.go delete mode 100644 vendor/golang.org/x/text/cases/icu.go delete mode 100644 vendor/golang.org/x/text/cases/icu_test.go delete mode 100644 vendor/golang.org/x/text/cases/info.go delete mode 100644 vendor/golang.org/x/text/cases/map.go delete mode 100644 vendor/golang.org/x/text/cases/map_test.go delete mode 100644 vendor/golang.org/x/text/cases/tables10.0.0.go delete mode 100644 vendor/golang.org/x/text/cases/tables10.0.0_test.go delete mode 100644 vendor/golang.org/x/text/cases/tables9.0.0.go delete mode 100644 vendor/golang.org/x/text/cases/tables9.0.0_test.go delete mode 100644 vendor/golang.org/x/text/cases/trieval.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/common.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/doc.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/extracted.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json delete mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/extracted.gotext.json delete mode 100755 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json delete mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/extract.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/generate.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/main.go delete mode 100644 vendor/golang.org/x/text/cmd/gotext/rewrite.go delete mode 100644 vendor/golang.org/x/text/codereview.cfg delete mode 100644 vendor/golang.org/x/text/collate/build/builder.go delete mode 100644 vendor/golang.org/x/text/collate/build/builder_test.go delete mode 100644 vendor/golang.org/x/text/collate/build/colelem.go delete mode 100644 vendor/golang.org/x/text/collate/build/colelem_test.go delete mode 100644 vendor/golang.org/x/text/collate/build/contract.go delete mode 100644 vendor/golang.org/x/text/collate/build/contract_test.go delete mode 100644 vendor/golang.org/x/text/collate/build/order.go delete mode 100644 vendor/golang.org/x/text/collate/build/order_test.go delete mode 100644 vendor/golang.org/x/text/collate/build/table.go delete mode 100644 vendor/golang.org/x/text/collate/build/trie.go delete mode 100644 vendor/golang.org/x/text/collate/build/trie_test.go delete mode 100644 vendor/golang.org/x/text/collate/collate.go delete mode 100644 vendor/golang.org/x/text/collate/collate_test.go delete mode 100644 vendor/golang.org/x/text/collate/export_test.go delete mode 100644 vendor/golang.org/x/text/collate/index.go delete mode 100644 vendor/golang.org/x/text/collate/maketables.go delete mode 100644 vendor/golang.org/x/text/collate/option.go delete mode 100644 vendor/golang.org/x/text/collate/option_test.go delete mode 100644 vendor/golang.org/x/text/collate/reg_test.go delete mode 100644 vendor/golang.org/x/text/collate/sort.go delete mode 100644 vendor/golang.org/x/text/collate/sort_test.go delete mode 100644 vendor/golang.org/x/text/collate/table_test.go delete mode 100644 vendor/golang.org/x/text/collate/tables.go delete mode 100644 vendor/golang.org/x/text/collate/tools/colcmp/Makefile delete mode 100644 vendor/golang.org/x/text/collate/tools/colcmp/chars.go delete mode 100644 vendor/golang.org/x/text/collate/tools/colcmp/col.go delete mode 100644 vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go delete mode 100644 vendor/golang.org/x/text/collate/tools/colcmp/darwin.go delete mode 100644 vendor/golang.org/x/text/collate/tools/colcmp/gen.go delete mode 100644 vendor/golang.org/x/text/collate/tools/colcmp/icu.go delete mode 100644 vendor/golang.org/x/text/currency/common.go delete mode 100644 vendor/golang.org/x/text/currency/currency.go delete mode 100644 vendor/golang.org/x/text/currency/currency_test.go delete mode 100644 vendor/golang.org/x/text/currency/example_test.go delete mode 100644 vendor/golang.org/x/text/currency/format.go delete mode 100644 vendor/golang.org/x/text/currency/format_test.go delete mode 100644 vendor/golang.org/x/text/currency/gen.go delete mode 100644 vendor/golang.org/x/text/currency/gen_common.go delete mode 100644 vendor/golang.org/x/text/currency/query.go delete mode 100644 vendor/golang.org/x/text/currency/query_test.go delete mode 100644 vendor/golang.org/x/text/currency/tables.go delete mode 100644 vendor/golang.org/x/text/currency/tables_test.go delete mode 100644 vendor/golang.org/x/text/date/data_test.go delete mode 100644 vendor/golang.org/x/text/date/gen.go delete mode 100644 vendor/golang.org/x/text/date/gen_test.go delete mode 100644 vendor/golang.org/x/text/date/tables.go delete mode 100644 vendor/golang.org/x/text/doc.go delete mode 100644 vendor/golang.org/x/text/encoding/charmap/charmap_test.go delete mode 100644 vendor/golang.org/x/text/encoding/encoding_test.go delete mode 100644 vendor/golang.org/x/text/encoding/example_test.go delete mode 100644 vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go delete mode 100644 vendor/golang.org/x/text/encoding/ianaindex/example_test.go delete mode 100644 vendor/golang.org/x/text/encoding/ianaindex/gen.go delete mode 100644 vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go delete mode 100644 vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go delete mode 100644 vendor/golang.org/x/text/encoding/ianaindex/tables.go delete mode 100644 vendor/golang.org/x/text/encoding/internal/enctest/enctest.go delete mode 100644 vendor/golang.org/x/text/encoding/japanese/all_test.go delete mode 100644 vendor/golang.org/x/text/encoding/korean/all_test.go delete mode 100644 vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go delete mode 100644 vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt delete mode 100644 vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt delete mode 100644 vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go delete mode 100644 vendor/golang.org/x/text/encoding/unicode/unicode_test.go delete mode 100644 vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go delete mode 100644 vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go delete mode 100644 vendor/golang.org/x/text/feature/plural/common.go delete mode 100644 vendor/golang.org/x/text/feature/plural/data_test.go delete mode 100644 vendor/golang.org/x/text/feature/plural/example_test.go delete mode 100644 vendor/golang.org/x/text/feature/plural/gen.go delete mode 100644 vendor/golang.org/x/text/feature/plural/gen_common.go delete mode 100644 vendor/golang.org/x/text/feature/plural/message.go delete mode 100644 vendor/golang.org/x/text/feature/plural/message_test.go delete mode 100644 vendor/golang.org/x/text/feature/plural/plural.go delete mode 100644 vendor/golang.org/x/text/feature/plural/plural_test.go delete mode 100644 vendor/golang.org/x/text/feature/plural/tables.go delete mode 100644 vendor/golang.org/x/text/gen.go delete mode 100644 vendor/golang.org/x/text/internal/catmsg/catmsg.go delete mode 100644 vendor/golang.org/x/text/internal/catmsg/catmsg_test.go delete mode 100644 vendor/golang.org/x/text/internal/catmsg/codec.go delete mode 100644 vendor/golang.org/x/text/internal/catmsg/varint.go delete mode 100644 vendor/golang.org/x/text/internal/catmsg/varint_test.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/cldrtree.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/generate.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/option.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en.xml delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_001.xml delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_GB.xml delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/root.xml delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/tree.go delete mode 100644 vendor/golang.org/x/text/internal/cldrtree/type.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/collate_test.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/collelem.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/collelem_test.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/colltab.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/colltab_test.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/contract.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/contract_test.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/iter.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/iter_test.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/numeric.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/numeric_test.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/table.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/trie.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/trie_test.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/weighter.go delete mode 100644 vendor/golang.org/x/text/internal/colltab/weighter_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/README delete mode 100644 vendor/golang.org/x/text/internal/export/idna/common_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/example_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/gen.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/gen10.0.0_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/gen9.0.0_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/gen_common.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/gen_trieval.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/idna10.0.0.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/idna10.0.0_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/idna9.0.0.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/idna9.0.0_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/idna_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/punycode.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/punycode_test.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/tables10.0.0.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/tables9.0.0.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/trie.go delete mode 100644 vendor/golang.org/x/text/internal/export/idna/trieval.go delete mode 100644 vendor/golang.org/x/text/internal/format/format.go delete mode 100644 vendor/golang.org/x/text/internal/format/parser.go delete mode 100644 vendor/golang.org/x/text/internal/format/parser_test.go delete mode 100644 vendor/golang.org/x/text/internal/gen.go delete mode 100644 vendor/golang.org/x/text/internal/gen/code.go delete mode 100644 vendor/golang.org/x/text/internal/gen/gen.go delete mode 100644 vendor/golang.org/x/text/internal/gen_test.go delete mode 100644 vendor/golang.org/x/text/internal/internal.go delete mode 100644 vendor/golang.org/x/text/internal/internal_test.go create mode 100644 vendor/golang.org/x/text/internal/language/common.go create mode 100644 vendor/golang.org/x/text/internal/language/compact.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/compact.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/gen.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/gen_index.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/gen_parents.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/language.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/parents.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/tables.go create mode 100644 vendor/golang.org/x/text/internal/language/compact/tags.go create mode 100644 vendor/golang.org/x/text/internal/language/compose.go create mode 100644 vendor/golang.org/x/text/internal/language/coverage.go create mode 100644 vendor/golang.org/x/text/internal/language/gen.go create mode 100644 vendor/golang.org/x/text/internal/language/gen_common.go create mode 100644 vendor/golang.org/x/text/internal/language/language.go create mode 100644 vendor/golang.org/x/text/internal/language/lookup.go create mode 100644 vendor/golang.org/x/text/internal/language/match.go create mode 100644 vendor/golang.org/x/text/internal/language/parse.go create mode 100644 vendor/golang.org/x/text/internal/language/tables.go create mode 100644 vendor/golang.org/x/text/internal/language/tags.go delete mode 100644 vendor/golang.org/x/text/internal/match.go delete mode 100644 vendor/golang.org/x/text/internal/match_test.go delete mode 100644 vendor/golang.org/x/text/internal/number/common.go delete mode 100644 vendor/golang.org/x/text/internal/number/decimal.go delete mode 100644 vendor/golang.org/x/text/internal/number/decimal_test.go delete mode 100644 vendor/golang.org/x/text/internal/number/format.go delete mode 100644 vendor/golang.org/x/text/internal/number/format_test.go delete mode 100644 vendor/golang.org/x/text/internal/number/gen.go delete mode 100644 vendor/golang.org/x/text/internal/number/gen_common.go delete mode 100644 vendor/golang.org/x/text/internal/number/number.go delete mode 100644 vendor/golang.org/x/text/internal/number/number_test.go delete mode 100644 vendor/golang.org/x/text/internal/number/pattern.go delete mode 100644 vendor/golang.org/x/text/internal/number/pattern_test.go delete mode 100644 vendor/golang.org/x/text/internal/number/roundingmode_string.go delete mode 100644 vendor/golang.org/x/text/internal/number/tables.go delete mode 100644 vendor/golang.org/x/text/internal/number/tables_test.go delete mode 100644 vendor/golang.org/x/text/internal/stringset/set.go delete mode 100644 vendor/golang.org/x/text/internal/stringset/set_test.go delete mode 100644 vendor/golang.org/x/text/internal/tables.go delete mode 100644 vendor/golang.org/x/text/internal/tag/tag_test.go delete mode 100644 vendor/golang.org/x/text/internal/testtext/codesize.go delete mode 100644 vendor/golang.org/x/text/internal/testtext/flag.go delete mode 100644 vendor/golang.org/x/text/internal/testtext/gc.go delete mode 100644 vendor/golang.org/x/text/internal/testtext/gccgo.go delete mode 100644 vendor/golang.org/x/text/internal/testtext/go1_6.go delete mode 100644 vendor/golang.org/x/text/internal/testtext/go1_7.go delete mode 100644 vendor/golang.org/x/text/internal/testtext/text.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/compact.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/data_test.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/example_compact_test.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/example_test.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/gen_test.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/print.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/triegen.go delete mode 100644 vendor/golang.org/x/text/internal/ucd/example_test.go delete mode 100644 vendor/golang.org/x/text/internal/ucd/ucd.go delete mode 100644 vendor/golang.org/x/text/internal/ucd/ucd_test.go delete mode 100644 vendor/golang.org/x/text/language/Makefile delete mode 100644 vendor/golang.org/x/text/language/common.go delete mode 100644 vendor/golang.org/x/text/language/coverage_test.go delete mode 100644 vendor/golang.org/x/text/language/display/dict.go delete mode 100644 vendor/golang.org/x/text/language/display/dict_test.go delete mode 100644 vendor/golang.org/x/text/language/display/display.go delete mode 100644 vendor/golang.org/x/text/language/display/display_test.go delete mode 100644 vendor/golang.org/x/text/language/display/examples_test.go delete mode 100644 vendor/golang.org/x/text/language/display/lookup.go delete mode 100644 vendor/golang.org/x/text/language/display/maketables.go delete mode 100644 vendor/golang.org/x/text/language/display/tables.go delete mode 100644 vendor/golang.org/x/text/language/examples_test.go delete mode 100644 vendor/golang.org/x/text/language/gen_common.go delete mode 100644 vendor/golang.org/x/text/language/gen_index.go delete mode 100644 vendor/golang.org/x/text/language/httpexample_test.go delete mode 100644 vendor/golang.org/x/text/language/index.go delete mode 100644 vendor/golang.org/x/text/language/language_test.go delete mode 100644 vendor/golang.org/x/text/language/lookup.go delete mode 100644 vendor/golang.org/x/text/language/lookup_test.go delete mode 100644 vendor/golang.org/x/text/language/match_test.go delete mode 100644 vendor/golang.org/x/text/language/parse_test.go delete mode 100644 vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt delete mode 100644 vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt delete mode 100644 vendor/golang.org/x/text/message/catalog.go delete mode 100644 vendor/golang.org/x/text/message/catalog/catalog.go delete mode 100644 vendor/golang.org/x/text/message/catalog/catalog_test.go delete mode 100644 vendor/golang.org/x/text/message/catalog/dict.go delete mode 100644 vendor/golang.org/x/text/message/catalog/go19.go delete mode 100644 vendor/golang.org/x/text/message/catalog/gopre19.go delete mode 100644 vendor/golang.org/x/text/message/catalog_test.go delete mode 100644 vendor/golang.org/x/text/message/doc.go delete mode 100644 vendor/golang.org/x/text/message/examples_test.go delete mode 100644 vendor/golang.org/x/text/message/fmt_test.go delete mode 100644 vendor/golang.org/x/text/message/format.go delete mode 100644 vendor/golang.org/x/text/message/message.go delete mode 100644 vendor/golang.org/x/text/message/message_test.go delete mode 100644 vendor/golang.org/x/text/message/pipeline/extract.go delete mode 100644 vendor/golang.org/x/text/message/pipeline/generate.go delete mode 100644 vendor/golang.org/x/text/message/pipeline/message.go delete mode 100644 vendor/golang.org/x/text/message/pipeline/pipeline.go delete mode 100644 vendor/golang.org/x/text/message/pipeline/rewrite.go delete mode 100644 vendor/golang.org/x/text/message/print.go delete mode 100644 vendor/golang.org/x/text/number/doc.go delete mode 100644 vendor/golang.org/x/text/number/examples_test.go delete mode 100644 vendor/golang.org/x/text/number/format.go delete mode 100644 vendor/golang.org/x/text/number/format_test.go delete mode 100644 vendor/golang.org/x/text/number/number.go delete mode 100644 vendor/golang.org/x/text/number/number_test.go delete mode 100644 vendor/golang.org/x/text/number/option.go delete mode 100644 vendor/golang.org/x/text/runes/cond_test.go delete mode 100644 vendor/golang.org/x/text/runes/example_test.go delete mode 100644 vendor/golang.org/x/text/runes/runes_test.go delete mode 100644 vendor/golang.org/x/text/search/index.go delete mode 100644 vendor/golang.org/x/text/search/pattern.go delete mode 100644 vendor/golang.org/x/text/search/pattern_test.go delete mode 100644 vendor/golang.org/x/text/search/search.go delete mode 100644 vendor/golang.org/x/text/search/tables.go delete mode 100644 vendor/golang.org/x/text/secure/bidirule/bench_test.go delete mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule.go delete mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go delete mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0_test.go delete mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go delete mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go delete mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule_test.go delete mode 100644 vendor/golang.org/x/text/secure/doc.go delete mode 100644 vendor/golang.org/x/text/secure/precis/benchmark_test.go delete mode 100644 vendor/golang.org/x/text/secure/precis/class.go delete mode 100644 vendor/golang.org/x/text/secure/precis/class_test.go delete mode 100644 vendor/golang.org/x/text/secure/precis/context.go delete mode 100644 vendor/golang.org/x/text/secure/precis/doc.go delete mode 100644 vendor/golang.org/x/text/secure/precis/enforce10.0.0_test.go delete mode 100644 vendor/golang.org/x/text/secure/precis/enforce9.0.0_test.go delete mode 100644 vendor/golang.org/x/text/secure/precis/enforce_test.go delete mode 100644 vendor/golang.org/x/text/secure/precis/gen.go delete mode 100644 vendor/golang.org/x/text/secure/precis/gen_trieval.go delete mode 100644 vendor/golang.org/x/text/secure/precis/nickname.go delete mode 100644 vendor/golang.org/x/text/secure/precis/options.go delete mode 100644 vendor/golang.org/x/text/secure/precis/profile.go delete mode 100644 vendor/golang.org/x/text/secure/precis/profile_test.go delete mode 100644 vendor/golang.org/x/text/secure/precis/profiles.go delete mode 100644 vendor/golang.org/x/text/secure/precis/tables10.0.0.go delete mode 100644 vendor/golang.org/x/text/secure/precis/tables9.0.0.go delete mode 100644 vendor/golang.org/x/text/secure/precis/tables_test.go delete mode 100644 vendor/golang.org/x/text/secure/precis/transformer.go delete mode 100644 vendor/golang.org/x/text/secure/precis/trieval.go delete mode 100644 vendor/golang.org/x/text/transform/examples_test.go delete mode 100644 vendor/golang.org/x/text/transform/transform_test.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/bidi.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/bracket.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/core.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/core_test.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/gen.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/gen_ranges.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/gen_trieval.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/prop.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/ranges_test.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/tables_test.go delete mode 100644 vendor/golang.org/x/text/unicode/bidi/trieval.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/base.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/cldr.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/cldr_test.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/collate.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/collate_test.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/data_test.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/decode.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/examples_test.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/makexml.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/resolve.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/resolve_test.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/slice.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/slice_test.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/xml.go delete mode 100644 vendor/golang.org/x/text/unicode/doc.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/composition.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/composition_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/data10.0.0_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/data9.0.0_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/example_iter_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/example_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/forminfo.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/forminfo_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/input.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/iter.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/iter_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/maketables.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/normalize.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/normalize_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/readwriter.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/readwriter_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/tables10.0.0.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/tables9.0.0.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/transform.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/transform_test.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/trie.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/triegen.go delete mode 100644 vendor/golang.org/x/text/unicode/norm/ucd_test.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/gen.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/merge.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/merge_test.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/rangetable.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/tables10.0.0.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/tables9.0.0.go delete mode 100644 vendor/golang.org/x/text/unicode/runenames/bits.go delete mode 100644 vendor/golang.org/x/text/unicode/runenames/example_test.go delete mode 100644 vendor/golang.org/x/text/unicode/runenames/gen.go delete mode 100644 vendor/golang.org/x/text/unicode/runenames/gen_bits.go delete mode 100644 vendor/golang.org/x/text/unicode/runenames/runenames.go delete mode 100644 vendor/golang.org/x/text/unicode/runenames/runenames_test.go delete mode 100644 vendor/golang.org/x/text/unicode/runenames/tables.go delete mode 100644 vendor/golang.org/x/text/width/common_test.go delete mode 100644 vendor/golang.org/x/text/width/example_test.go delete mode 100644 vendor/golang.org/x/text/width/gen.go delete mode 100644 vendor/golang.org/x/text/width/gen_common.go delete mode 100644 vendor/golang.org/x/text/width/gen_trieval.go delete mode 100644 vendor/golang.org/x/text/width/kind_string.go delete mode 100644 vendor/golang.org/x/text/width/runes_test.go delete mode 100644 vendor/golang.org/x/text/width/tables10.0.0.go delete mode 100644 vendor/golang.org/x/text/width/tables9.0.0.go delete mode 100644 vendor/golang.org/x/text/width/tables_test.go delete mode 100644 vendor/golang.org/x/text/width/transform.go delete mode 100644 vendor/golang.org/x/text/width/transform_test.go delete mode 100644 vendor/golang.org/x/text/width/trieval.go delete mode 100644 vendor/golang.org/x/text/width/width.go create mode 100644 vendor/modules.txt diff --git a/flood.go b/flood.go index dd1540f..d7fd05d 100644 --- a/flood.go +++ b/flood.go @@ -11,6 +11,7 @@ import ( const ( runes = 6 words = 6 + black = "\u24B6\u262D\u272F\u262E\u2721\u5350\u534D\u2719\u0FD5\u0FD6\u16CB\u16CB\uA5A6\u0FD7\u0FD8" ) func entropy(s string) (e float64) { @@ -25,6 +26,9 @@ func entropy(s string) (e float64) { } func isFlood(s string) bool { + if strings.ContainsAny(s, black) { + return true + } if utf8.RuneCountInString(s) <= runes { return false } diff --git a/flood_test.go b/flood_test.go index 8fc0194..8f5045c 100644 --- a/flood_test.go +++ b/flood_test.go @@ -16,6 +16,7 @@ func TestFlood(t *testing.T) { {`AAAAAAAAAAAAAAAAAAAA`, true}, {`AAAAAAAAAABBBBBBBBBB`, true}, {`ivy 3 3 rho (iota 9) in 2 6 7 8 9`, false}, + {"\u262etest", true}, } for _, tc := range testCases { t.Run(tc.line, func(t *testing.T) { diff --git a/go.mod b/go.mod index dcf78a0..60c7779 100644 --- a/go.mod +++ b/go.mod @@ -2,9 +2,9 @@ module dim13.org/bot require ( dim13.org/rss v0.0.0-20180126111859-6312ad4bf7e4 - github.com/fluffle/goirc v0.0.0-20180216210456-fc1dfa1ceb88 - github.com/golang/mock v1.1.1 - github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47 - golang.org/x/net v0.0.0-20180724234803-3673e40ba225 - golang.org/x/text v0.3.0 + github.com/fluffle/goirc v1.0.1 + github.com/golang/mock v1.3.1 // indirect + github.com/hashicorp/golang-lru v0.5.1 + golang.org/x/net v0.0.0-20190628185345-da137c7871d7 + golang.org/x/text v0.3.2 // indirect ) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..8aa31db --- /dev/null +++ b/go.sum @@ -0,0 +1,27 @@ +dim13.org/rss v0.0.0-20180126111859-6312ad4bf7e4 h1:7CYS9UUI3FlPOxjo6CkzUa+gjGhQxsyE7reu3tt+SSc= +dim13.org/rss v0.0.0-20180126111859-6312ad4bf7e4/go.mod h1:TM/hRb4GUvCSD5p+ErqA5P5qFagf4KD9rZZc+/ngaCg= +github.com/fluffle/goirc v1.0.1 h1:YHBfWIXSFgABz8dbijvOIKucFejnbHdk78+r2z/6B/Q= +github.com/fluffle/goirc v1.0.1/go.mod h1:bm91JNJ5r070PbWm8uG9UDcy9GJxvB6fmVuHDttWwR4= +github.com/fluffle/golog v1.0.2/go.mod h1:TKZoUh/MNb9worAhWP158Ol0TXc5EfhMJK/qB/7j+Ko= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3 h1:dgd4x4kJt7G4k4m93AYLzM8Ni6h2qLTfh9n9vXJT3/0= +golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7 h1:rTIdg5QFRR7XCaK4LCjBiPbx8j4DQRpdYMnGn/bJUEU= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= diff --git a/vendor/github.com/fluffle/goirc/.gitignore b/vendor/github.com/fluffle/goirc/.gitignore deleted file mode 100644 index 1cbcab5..0000000 --- a/vendor/github.com/fluffle/goirc/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -/gobot -*.[568] -_obj/ -_test/ -*.swp -*~ -*.out -/.gitconfig diff --git a/vendor/github.com/fluffle/goirc/.travis.yml b/vendor/github.com/fluffle/goirc/.travis.yml deleted file mode 100644 index 420a9a8..0000000 --- a/vendor/github.com/fluffle/goirc/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -language: go - -go: - - 1.5 - - 1.5.3 - - 1.6 - -sudo : false - -notifications: - irc: - channels: - - "irc.pl0rt.org#sp0rklf" - skip_join: true - -script: - - if [ "$TRAVIS_REPO_SLUG" != "fluffle/goirc" ] ; then ln -s "$HOME/gopath/src/github.com/$TRAVIS_REPO_SLUG" /home/travis/gopath/src/github.com/fluffle/goirc ; fi - - go test -v ./... diff --git a/vendor/github.com/fluffle/goirc/README.md b/vendor/github.com/fluffle/goirc/README.md deleted file mode 100644 index 2c12e84..0000000 --- a/vendor/github.com/fluffle/goirc/README.md +++ /dev/null @@ -1,119 +0,0 @@ -[![Build Status](https://api.travis-ci.org/fluffle/goirc.svg)](https://travis-ci.org/fluffle/goirc) - -GoIRC Client Framework -====================== - -### Acquiring and Building - -Pretty simple, really: - - go get github.com/fluffle/goirc/client - -There is some example code that demonstrates usage of the library in `client.go`. This will connect to freenode and join `#go-nuts` by default, so be careful ;-) - -See `fix/goirc.go` and the README there for a quick way to migrate from the -old `go1` API. - -### Using the framework - -Synopsis: -```go -package main - -import ( - "crypto/tls" - "fmt" - - irc "github.com/fluffle/goirc/client" -) - -func main() { - // Creating a simple IRC client is simple. - c := irc.SimpleClient("nick") - - // Or, create a config and fiddle with it first: - cfg := irc.NewConfig("nick") - cfg.SSL = true - cfg.SSLConfig = &tls.Config{ServerName: "irc.freenode.net"} - cfg.Server = "irc.freenode.net:7000" - cfg.NewNick = func(n string) string { return n + "^" } - c = irc.Client(cfg) - - // Add handlers to do things here! - // e.g. join a channel on connect. - c.HandleFunc(irc.CONNECTED, - func(conn *irc.Conn, line *irc.Line) { conn.Join("#channel") }) - // And a signal on disconnect - quit := make(chan bool) - c.HandleFunc(irc.DISCONNECTED, - func(conn *irc.Conn, line *irc.Line) { quit <- true }) - - // Tell client to connect. - if err := c.Connect(); err != nil { - fmt.Printf("Connection error: %s\n", err.Error()) - } - - // With a "simple" client, set Server before calling Connect... - c.Config().Server = "irc.freenode.net" - - // ... or, use ConnectTo instead. - if err := c.ConnectTo("irc.freenode.net"); err != nil { - fmt.Printf("Connection error: %s\n", err.Error()) - } - - // Wait for disconnect - <-quit -} -``` - -The test client provides a good (if basic) example of how to use the framework. -Reading `client/handlers.go` gives a more in-depth look at how handlers can be -written. Commands to be sent to the server (e.g. PRIVMSG) are methods of the -main `*Conn` struct, and can be found in `client/commands.go` (not all of the -possible IRC commands are implemented yet). Events are produced directly from -the messages from the IRC server, so you have to handle e.g. "332" for -`RPL_TOPIC` to get the topic for a channel. - -The vast majority of handlers implemented within the framework deal with state -tracking of all nicks in any channels that the client is also present in. These -handlers are in `client/state_handlers.go`. State tracking is optional, disabled -by default, and can be enabled and disabled by calling `EnableStateTracking()` -and `DisableStateTracking()` respectively. Doing this while connected to an IRC -server will probably result in an inconsistent state and a lot of warnings to -STDERR ;-) - -### Misc. - -Sorry the documentation is crap. Use the source, Luke. - -[Feedback](mailto:a.bramley@gmail.com) on design decisions is welcome. I am -indebted to Matt Gruen for his work on -[go-bot](http://code.google.com/p/go-bot/source/browse/irc.go) which inspired -the re-organisation and channel-based communication structure of `*Conn.send()` -and `*Conn.recv()`. I'm sure things could be more asynchronous, still. - -This code is (c) 2009-15 Alex Bramley, and released under the same licence terms -as Go itself. - -Contributions gratefully received from: - - - [3onyc](https://github.com/3onyc) - - [bramp](https://github.com/bramp) - - [cgt](https://github.com/cgt) - - [iopred](https://github.com/iopred) - - [Krayons](https://github.com/Krayons) - - [StalkR](https://github.com/StalkR) - - [sztanpet](https://github.com/sztanpet) - - [wathiede](https://github.com/wathiede) - - [scrapbird](https://github.com/scrapbird) - - [soul9](https://github.com/soul9) - - [jakebailey](https://github.com/jakebailey) - - [stapelberg](https://github.com/stapelberg) - -And thanks to the following for minor doc/fix PRs: - - - [tmcarr](https://github.com/tmcarr) - - [Gentux](https://github.com/Gentux) - - [kidanger](https://github.com/kidanger) - - [ripcurld00d](https://github.com/ripcurld00d) - - [bob-smith](https://github.com/bob-smith) diff --git a/vendor/github.com/fluffle/goirc/client.go b/vendor/github.com/fluffle/goirc/client.go deleted file mode 100644 index b71d706..0000000 --- a/vendor/github.com/fluffle/goirc/client.go +++ /dev/null @@ -1,104 +0,0 @@ -package main - -import ( - "bufio" - "flag" - "fmt" - "os" - "strings" - - irc "github.com/fluffle/goirc/client" - "github.com/fluffle/goirc/logging/glog" -) - -var host *string = flag.String("host", "irc.freenode.net", "IRC server") -var channel *string = flag.String("channel", "#go-nuts", "IRC channel") - -func main() { - flag.Parse() - glog.Init() - - // create new IRC connection - c := irc.SimpleClient("GoTest", "gotest") - c.EnableStateTracking() - c.HandleFunc("connected", - func(conn *irc.Conn, line *irc.Line) { conn.Join(*channel) }) - - // Set up a handler to notify of disconnect events. - quit := make(chan bool) - c.HandleFunc("disconnected", - func(conn *irc.Conn, line *irc.Line) { quit <- true }) - - // set up a goroutine to read commands from stdin - in := make(chan string, 4) - reallyquit := false - go func() { - con := bufio.NewReader(os.Stdin) - for { - s, err := con.ReadString('\n') - if err != nil { - // wha?, maybe ctrl-D... - close(in) - break - } - // no point in sending empty lines down the channel - if len(s) > 2 { - in <- s[0 : len(s)-1] - } - } - }() - - // set up a goroutine to do parsey things with the stuff from stdin - go func() { - for cmd := range in { - if cmd[0] == ':' { - switch idx := strings.Index(cmd, " "); { - case cmd[1] == 'd': - fmt.Printf(c.String()) - case cmd[1] == 'n': - parts := strings.Split(cmd, " ") - username := strings.TrimSpace(parts[1]) - channelname := strings.TrimSpace(parts[2]) - _, userIsOn := c.StateTracker().IsOn(channelname, username) - fmt.Printf("Checking if %s is in %s Online: %t\n", username, channelname, userIsOn) - case cmd[1] == 'f': - if len(cmd) > 2 && cmd[2] == 'e' { - // enable flooding - c.Config().Flood = true - } else if len(cmd) > 2 && cmd[2] == 'd' { - // disable flooding - c.Config().Flood = false - } - for i := 0; i < 20; i++ { - c.Privmsg("#", "flood test!") - } - case idx == -1: - continue - case cmd[1] == 'q': - reallyquit = true - c.Quit(cmd[idx+1 : len(cmd)]) - case cmd[1] == 's': - reallyquit = true - c.Close() - case cmd[1] == 'j': - c.Join(cmd[idx+1 : len(cmd)]) - case cmd[1] == 'p': - c.Part(cmd[idx+1 : len(cmd)]) - } - } else { - c.Raw(cmd) - } - } - }() - - for !reallyquit { - // connect to server - if err := c.ConnectTo(*host); err != nil { - fmt.Printf("Connection error: %s\n", err) - return - } - - // wait on quit channel - <-quit - } -} diff --git a/vendor/github.com/fluffle/goirc/client/commands_test.go b/vendor/github.com/fluffle/goirc/client/commands_test.go deleted file mode 100644 index 15a8a05..0000000 --- a/vendor/github.com/fluffle/goirc/client/commands_test.go +++ /dev/null @@ -1,205 +0,0 @@ -package client - -import ( - "reflect" - "testing" -) - -func TestCutNewLines(t *testing.T) { - tests := []struct{ in, out string }{ - {"", ""}, - {"foo bar", "foo bar"}, - {"foo bar\rbaz", "foo bar"}, - {"foo bar\nbaz", "foo bar"}, - {"blorp\r\n\r\nbloop", "blorp"}, - {"\n\rblaap", ""}, - {"\r\n", ""}, - {"boo\\r\\n\\n\r", "boo\\r\\n\\n"}, - } - for i, test := range tests { - out := cutNewLines(test.in) - if test.out != out { - t.Errorf("test %d: expected %q, got %q", i, test.out, out) - } - } -} - -func TestIndexFragment(t *testing.T) { - tests := []struct { - in string - out int - }{ - {"", -1}, - {"foobarbaz", -1}, - {"foo bar baz", 8}, - {"foo. bar baz", 5}, - {"foo: bar baz", 5}, - {"foo; bar baz", 5}, - {"foo, bar baz", 5}, - {"foo! bar baz", 5}, - {"foo? bar baz", 5}, - {"foo\" bar baz", 5}, - {"foo' bar baz", 5}, - {"foo. bar. baz beep", 10}, - {"foo. bar, baz beep", 10}, - } - for i, test := range tests { - out := indexFragment(test.in) - if test.out != out { - t.Errorf("test %d: expected %d, got %d", i, test.out, out) - } - } -} - -func TestSplitMessage(t *testing.T) { - tests := []struct { - in string - sp int - out []string - }{ - {"", 0, []string{""}}, - {"foo", 0, []string{"foo"}}, - {"foo bar baz beep", 0, []string{"foo bar baz beep"}}, - {"foo bar baz beep", 15, []string{"foo bar baz ...", "beep"}}, - {"foo bar, baz beep", 15, []string{"foo bar, ...", "baz beep"}}, - {"0123456789012345", 0, []string{"0123456789012345"}}, - {"0123456789012345", 15, []string{"012345678901...", "2345"}}, - {"0123456789012345", 16, []string{"0123456789012345"}}, - } - for i, test := range tests { - out := splitMessage(test.in, test.sp) - if !reflect.DeepEqual(test.out, out) { - t.Errorf("test %d: expected %q, got %q", i, test.out, out) - } - } -} - -func TestClientCommands(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Avoid having to type ridiculously long lines to test that - // messages longer than SplitLen are correctly sent to the server. - c.cfg.SplitLen = 23 - - c.Pass("password") - s.nc.Expect("PASS password") - - c.Nick("test") - s.nc.Expect("NICK test") - - c.User("test", "Testing IRC") - s.nc.Expect("USER test 12 * :Testing IRC") - - c.Raw("JUST a raw :line") - s.nc.Expect("JUST a raw :line") - - c.Join("#foo") - s.nc.Expect("JOIN #foo") - c.Join("#foo bar") - s.nc.Expect("JOIN #foo bar") - - c.Part("#foo") - s.nc.Expect("PART #foo") - c.Part("#foo", "Screw you guys...") - s.nc.Expect("PART #foo :Screw you guys...") - - c.Quit() - s.nc.Expect("QUIT :GoBye!") - c.Quit("I'm going home.") - s.nc.Expect("QUIT :I'm going home.") - - c.Whois("somebody") - s.nc.Expect("WHOIS somebody") - - c.Who("*@some.host.com") - s.nc.Expect("WHO *@some.host.com") - - c.Privmsg("#foo", "bar") - s.nc.Expect("PRIVMSG #foo :bar") - - c.Privmsgln("#foo", "bar") - s.nc.Expect("PRIVMSG #foo :bar") - - c.Privmsgf("#foo", "say %s", "foo") - s.nc.Expect("PRIVMSG #foo :say foo") - - c.Privmsgln("#foo", "bar", 1, 3.54, []int{24, 36}) - s.nc.Expect("PRIVMSG #foo :bar 1 3.54 [24 36]") - - c.Privmsgf("#foo", "user %d is at %s", 2, "home") - s.nc.Expect("PRIVMSG #foo :user 2 is at home") - - // 0123456789012345678901234567890123 - c.Privmsg("#foo", "foo bar baz blorp. woo woobly woo.") - s.nc.Expect("PRIVMSG #foo :foo bar baz blorp. ...") - s.nc.Expect("PRIVMSG #foo :woo woobly woo.") - - c.Privmsgln("#foo", "foo bar baz blorp. woo woobly woo.") - s.nc.Expect("PRIVMSG #foo :foo bar baz blorp. ...") - s.nc.Expect("PRIVMSG #foo :woo woobly woo.") - - c.Privmsgf("#foo", "%s %s", "foo bar baz blorp.", "woo woobly woo.") - s.nc.Expect("PRIVMSG #foo :foo bar baz blorp. ...") - s.nc.Expect("PRIVMSG #foo :woo woobly woo.") - - c.Privmsgln("#foo", "foo bar", 3.54, "blorp.", "woo", "woobly", []int{1, 2}) - s.nc.Expect("PRIVMSG #foo :foo bar 3.54 blorp. ...") - s.nc.Expect("PRIVMSG #foo :woo woobly [1 2]") - - c.Privmsgf("#foo", "%s %.2f %s %s %s %v", "foo bar", 3.54, "blorp.", "woo", "woobly", []int{1, 2}) - s.nc.Expect("PRIVMSG #foo :foo bar 3.54 blorp. ...") - s.nc.Expect("PRIVMSG #foo :woo woobly [1 2]") - - c.Notice("somebody", "something") - s.nc.Expect("NOTICE somebody :something") - - // 01234567890123456789012345678901234567 - c.Notice("somebody", "something much much longer that splits") - s.nc.Expect("NOTICE somebody :something much much ...") - s.nc.Expect("NOTICE somebody :longer that splits") - - c.Ctcp("somebody", "ping", "123456789") - s.nc.Expect("PRIVMSG somebody :\001PING 123456789\001") - - c.Ctcp("somebody", "ping", "123456789012345678901234567890") - s.nc.Expect("PRIVMSG somebody :\001PING 12345678901234567890...\001") - s.nc.Expect("PRIVMSG somebody :\001PING 1234567890\001") - - c.CtcpReply("somebody", "pong", "123456789012345678901234567890") - s.nc.Expect("NOTICE somebody :\001PONG 12345678901234567890...\001") - s.nc.Expect("NOTICE somebody :\001PONG 1234567890\001") - - c.CtcpReply("somebody", "pong", "123456789") - s.nc.Expect("NOTICE somebody :\001PONG 123456789\001") - - c.Version("somebody") - s.nc.Expect("PRIVMSG somebody :\001VERSION\001") - - c.Action("#foo", "pokes somebody") - s.nc.Expect("PRIVMSG #foo :\001ACTION pokes somebody\001") - - c.Topic("#foo") - s.nc.Expect("TOPIC #foo") - c.Topic("#foo", "la la la") - s.nc.Expect("TOPIC #foo :la la la") - - c.Mode("#foo") - s.nc.Expect("MODE #foo") - c.Mode("#foo", "+o somebody") - s.nc.Expect("MODE #foo +o somebody") - - c.Away() - s.nc.Expect("AWAY") - c.Away("Dave's not here, man.") - s.nc.Expect("AWAY :Dave's not here, man.") - - c.Invite("somebody", "#foo") - s.nc.Expect("INVITE somebody #foo") - - c.Oper("user", "pass") - s.nc.Expect("OPER user pass") - - c.VHost("user", "pass") - s.nc.Expect("VHOST user pass") -} diff --git a/vendor/github.com/fluffle/goirc/client/connection_test.go b/vendor/github.com/fluffle/goirc/client/connection_test.go deleted file mode 100644 index acf4713..0000000 --- a/vendor/github.com/fluffle/goirc/client/connection_test.go +++ /dev/null @@ -1,585 +0,0 @@ -package client - -import ( - "runtime" - "strings" - "testing" - "time" - - "github.com/fluffle/goirc/state" - "github.com/golang/mock/gomock" -) - -type checker struct { - t *testing.T - c chan struct{} -} - -func callCheck(t *testing.T) checker { - return checker{t: t, c: make(chan struct{})} -} - -func (c checker) call() { - c.c <- struct{}{} -} - -func (c checker) assertNotCalled(fmt string, args ...interface{}) { - select { - case <-c.c: - c.t.Errorf(fmt, args...) - default: - } -} - -func (c checker) assertWasCalled(fmt string, args ...interface{}) { - select { - case <-c.c: - case <-time.After(time.Millisecond): - // Usually need to wait for goroutines to settle :-/ - c.t.Errorf(fmt, args...) - } -} - -type testState struct { - ctrl *gomock.Controller - st *state.MockTracker - nc *mockNetConn - c *Conn -} - -// NOTE: including a second argument at all prevents calling c.postConnect() -func setUp(t *testing.T, start ...bool) (*Conn, *testState) { - ctrl := gomock.NewController(t) - st := state.NewMockTracker(ctrl) - nc := MockNetConn(t) - c := SimpleClient("test", "test", "Testing IRC") - c.initialise() - - c.st = st - c.sock = nc - c.cfg.Flood = true // Tests can take a while otherwise - c.connected = true - // If a second argument is passed to setUp, we tell postConnect not to - // start the various goroutines that shuttle data around. - c.postConnect(len(start) == 0) - // Sleep 1ms to allow background routines to start. - <-time.After(time.Millisecond) - - return c, &testState{ctrl, st, nc, c} -} - -func (s *testState) tearDown() { - s.nc.ExpectNothing() - s.c.Close() - s.ctrl.Finish() -} - -// Practically the same as the above test, but Close is called implicitly -// by recv() getting an EOF from the mock connection. -func TestEOF(t *testing.T) { - c, s := setUp(t) - // Since we're not using tearDown() here, manually call Finish() - defer s.ctrl.Finish() - - // Set up a handler to detect whether disconnected handlers are called - dcon := callCheck(t) - c.HandleFunc(DISCONNECTED, func(conn *Conn, line *Line) { - dcon.call() - }) - - // Simulate EOF from server - s.nc.Close() - - // Verify that disconnected handler was called - dcon.assertWasCalled("Conn did not call disconnected handlers.") - - // Verify that the connection no longer thinks it's connected - if c.Connected() { - t.Errorf("Conn still thinks it's connected to the server.") - } -} - -func TestClientAndStateTracking(t *testing.T) { - ctrl := gomock.NewController(t) - st := state.NewMockTracker(ctrl) - c := SimpleClient("test", "test", "Testing IRC") - - // Assert some basic things about the initial state of the Conn struct - me := c.cfg.Me - if me.Nick != "test" || me.Ident != "test" || - me.Name != "Testing IRC" || me.Host != "" { - t.Errorf("Conn.cfg.Me not correctly initialised.") - } - // Check that the internal handlers are correctly set up - for k, _ := range intHandlers { - if _, ok := c.intHandlers.set[strings.ToLower(k)]; !ok { - t.Errorf("Missing internal handler for '%s'.", k) - } - } - - // Now enable the state tracking code and check its handlers - c.EnableStateTracking() - for k, _ := range stHandlers { - if _, ok := c.intHandlers.set[strings.ToLower(k)]; !ok { - t.Errorf("Missing state handler for '%s'.", k) - } - } - if len(c.stRemovers) != len(stHandlers) { - t.Errorf("Incorrect number of Removers (%d != %d) when adding state handlers.", - len(c.stRemovers), len(stHandlers)) - } - if neu := c.Me(); neu.Nick != me.Nick || neu.Ident != me.Ident || - neu.Name != me.Name || neu.Host != me.Host { - t.Errorf("Enabling state tracking erased information about me!") - } - - // We're expecting the untracked me to be replaced by a tracked one - if c.st == nil { - t.Errorf("State tracker not enabled correctly.") - } - if me = c.cfg.Me; me.Nick != "test" || me.Ident != "test" || - me.Name != "Testing IRC" || me.Host != "" { - t.Errorf("Enabling state tracking did not replace Me correctly.") - } - - // Now, shim in the mock state tracker and test disabling state tracking - c.st = st - gomock.InOrder( - st.EXPECT().Me().Return(me), - st.EXPECT().Wipe(), - ) - c.DisableStateTracking() - if c.st != nil || !c.cfg.Me.Equals(me) { - t.Errorf("State tracker not disabled correctly.") - } - - // Finally, check state tracking handlers were all removed correctly - for k, _ := range stHandlers { - if _, ok := c.intHandlers.set[strings.ToLower(k)]; ok && k != "NICK" { - // A bit leaky, because intHandlers adds a NICK handler. - t.Errorf("State handler for '%s' not removed correctly.", k) - } - } - if len(c.stRemovers) != 0 { - t.Errorf("stRemovers not zeroed correctly when removing state handlers.") - } - ctrl.Finish() -} - -func TestSendExitsOnDie(t *testing.T) { - // Passing a second value to setUp stops goroutines from starting - c, s := setUp(t, false) - defer s.tearDown() - - // Assert that before send is running, nothing should be sent to the socket - // but writes to the buffered channel "out" should not block. - c.out <- "SENT BEFORE START" - s.nc.ExpectNothing() - - // We want to test that the a goroutine calling send will exit correctly. - exited := callCheck(t) - // send() will decrement the WaitGroup, so we must increment it. - c.wg.Add(1) - go func() { - c.send() - exited.call() - }() - - // send is now running in the background as if started by postConnect. - // This should read the line previously buffered in c.out, and write it - // to the socket connection. - s.nc.Expect("SENT BEFORE START") - - // Send another line, just to be sure :-) - c.out <- "SENT AFTER START" - s.nc.Expect("SENT AFTER START") - - // Now, use the control channel to exit send and kill the goroutine. - // This sneakily uses the fact that the other two goroutines that would - // normally be waiting for die to close are not running, so we only send - // to the goroutine started above. Normally Close() closes c.die and - // signals to all three goroutines (send, ping, runLoop) to exit. - exited.assertNotCalled("Exited before signal sent.") - c.die <- struct{}{} - exited.assertWasCalled("Didn't exit after signal.") - s.nc.ExpectNothing() - - // Sending more on c.out shouldn't reach the network. - c.out <- "SENT AFTER END" - s.nc.ExpectNothing() -} - -func TestSendExitsOnWriteError(t *testing.T) { - // Passing a second value to setUp stops goroutines from starting - c, s := setUp(t, false) - // We can't use tearDown here because we're testing shutdown conditions - // (and so need to EXPECT() a call to st.Wipe() in the right place) - defer s.ctrl.Finish() - - // We want to test that the a goroutine calling send will exit correctly. - exited := callCheck(t) - // send() will decrement the WaitGroup, so we must increment it. - c.wg.Add(1) - go func() { - c.send() - exited.call() - }() - - // Send a line to be sure things are good. - c.out <- "SENT AFTER START" - s.nc.Expect("SENT AFTER START") - - // Now, close the underlying socket to cause write() to return an error. - // This will call Close() => a call to st.Wipe() will happen. - exited.assertNotCalled("Exited before signal sent.") - s.nc.Close() - // Sending more on c.out shouldn't reach the network, but we need to send - // *something* to trigger a call to write() that will fail. - c.out <- "SENT AFTER END" - exited.assertWasCalled("Didn't exit after signal.") - s.nc.ExpectNothing() -} - -func TestSendDeadlockOnFullBuffer(t *testing.T) { - // Passing a second value to setUp stops goroutines from starting - c, s := setUp(t, false) - // We can't use tearDown here because we're testing a deadlock condition - // and if tearDown tries to call Close() it will deadlock some more - // because send() is holding the conn mutex via Close() already. - defer s.ctrl.Finish() - - // We want to test that the a goroutine calling send will exit correctly. - loopExit := callCheck(t) - sendExit := callCheck(t) - // send() and runLoop() will decrement the WaitGroup, so we must increment it. - c.wg.Add(2) - - // The deadlock arises when a handler being called from conn.dispatch() in - // runLoop() tries to write to conn.out to send a message back to the IRC - // server, but the buffer is full. If at the same time send() is - // calling conn.Close() and waiting in there for runLoop() to call - // conn.wg.Done(), it will not empty the buffer of conn.out => deadlock. - // - // We simulate this by artifically filling conn.out. We must use a - // goroutine to put in one more line than the buffer can hold, because - // send() will read a line from conn.out on its first loop iteration: - go func() { - for i := 0; i < 33; i++ { - c.out <- "FILL BUFFER WITH CRAP" - } - }() - // Then we add a handler that tries to write a line to conn.out: - c.HandleFunc(PRIVMSG, func(conn *Conn, line *Line) { - conn.Raw(line.Raw) - }) - // And trigger it by starting runLoop and inserting a line into conn.in: - go func() { - c.runLoop() - loopExit.call() - }() - c.in <- &Line{Cmd: PRIVMSG, Raw: "WRITE THAT CAUSES DEADLOCK"} - - // At this point the handler should be blocked on a write to conn.out, - // preventing runLoop from looping and thus noticing conn.die is closed. - // - // The next part is to force send() to call conn.Close(), which can - // be done by closing the fake net.Conn so that it returns an error on - // calls to Write(): - s.nc.ExpectNothing() - s.nc.Close() - - // Now when send is started it will read one line from conn.out and try - // to write it to the socket. It should immediately receive an error and - // call conn.Close(), triggering the deadlock as it waits forever for - // runLoop to call conn.wg.Done. - go func() { - c.send() - sendExit.call() - }() - - // Make sure that things are definitely deadlocked. - <-time.After(time.Millisecond) - - // Verify that the connection no longer thinks it's connected, i.e. - // conn.Close() has definitely been called. We can't call - // conn.Connected() here because conn.Close() holds the mutex. - if c.connected { - t.Errorf("Conn still thinks it's connected to the server.") - } - - // We expect both loops to terminate cleanly. If either of them don't - // then we have successfully deadlocked :-( - loopExit.assertWasCalled("runLoop did not exit cleanly.") - sendExit.assertWasCalled("send did not exit cleanly.") -} - -func TestRecv(t *testing.T) { - // Passing a second value to setUp stops goroutines from starting - c, s := setUp(t, false) - // We can't use tearDown here because we're testing shutdown conditions - // (and so need to EXPECT() a call to st.Wipe() in the right place) - defer s.ctrl.Finish() - - // Send a line before recv is started up, to verify nothing appears on c.in - s.nc.Send(":irc.server.org 001 test :First test line.") - - // reader is a helper to do a "non-blocking" read of c.in - reader := func() *Line { - select { - case <-time.After(time.Millisecond): - case l := <-c.in: - return l - } - return nil - } - if l := reader(); l != nil { - t.Errorf("Line parsed before recv started.") - } - - // We want to test that the a goroutine calling recv will exit correctly. - exited := callCheck(t) - // recv() will decrement the WaitGroup, so we must increment it. - c.wg.Add(1) - go func() { - c.recv() - exited.call() - }() - - // Now, this should mean that we'll receive our parsed line on c.in - if l := reader(); l == nil || l.Cmd != "001" { - t.Errorf("Bad first line received on input channel") - } - - // Send a second line, just to be sure. - s.nc.Send(":irc.server.org 002 test :Second test line.") - if l := reader(); l == nil || l.Cmd != "002" { - t.Errorf("Bad second line received on input channel.") - } - - // Test that recv does something useful with a line it can't parse - // (not that there are many, ParseLine is forgiving). - s.nc.Send(":textwithnospaces") - if l := reader(); l != nil { - t.Errorf("Bad line still caused receive on input channel.") - } - - // The only way recv() exits is when the socket closes. - exited.assertNotCalled("Exited before socket close.") - s.nc.Close() - exited.assertWasCalled("Didn't exit on socket close.") - - // Since s.nc is closed we can't attempt another send on it... - if l := reader(); l != nil { - t.Errorf("Line received on input channel after socket close.") - } -} - -func TestPing(t *testing.T) { - // Passing a second value to setUp stops goroutines from starting - c, s := setUp(t, false) - defer s.tearDown() - - res := time.Millisecond - - // Windows has a timer resolution of 15.625ms by default. - // This means the test will be slower on windows, but - // should at least stop most of the flakiness... - // https://github.com/fluffle/goirc/issues/88 - if runtime.GOOS == "windows" { - res = 15625 * time.Microsecond - } - - // Set a low ping frequency for testing. - c.cfg.PingFreq = 10 * res - - // reader is a helper to do a "non-blocking" read of c.out - reader := func() string { - select { - case <-time.After(res): - case s := <-c.out: - return s - } - return "" - } - if s := reader(); s != "" { - t.Errorf("Line output before ping started.") - } - - // Start ping loop. - exited := callCheck(t) - // ping() will decrement the WaitGroup, so we must increment it. - c.wg.Add(1) - go func() { - c.ping() - exited.call() - }() - - // The first ping should be after 10*res ms, - // so we don't expect anything now on c.in - if s := reader(); s != "" { - t.Errorf("Line output directly after ping started.") - } - - <-time.After(c.cfg.PingFreq) - if s := reader(); s == "" || !strings.HasPrefix(s, "PING :") { - t.Errorf("Line not output after %s.", c.cfg.PingFreq) - } - - // Reader waits for res ms and we call it a few times above. - <-time.After(7 * res) - if s := reader(); s != "" { - t.Errorf("Line output <%s after last ping.", 7*res) - } - - // This is a short window in which the ping should happen - // This may result in flaky tests; sorry (and file a bug) if so. - <-time.After(2 * res) - if s := reader(); s == "" || !strings.HasPrefix(s, "PING :") { - t.Errorf("Line not output after another %s.", 2*res) - } - - // Now kill the ping loop. - // This sneakily uses the fact that the other two goroutines that would - // normally be waiting for die to close are not running, so we only send - // to the goroutine started above. Normally Close() closes c.die and - // signals to all three goroutines (send, ping, runLoop) to exit. - exited.assertNotCalled("Exited before signal sent.") - c.die <- struct{}{} - exited.assertWasCalled("Didn't exit after signal.") - // Make sure we're no longer pinging by waiting >2x PingFreq - <-time.After(2*c.cfg.PingFreq + res) - if s := reader(); s != "" { - t.Errorf("Line output after ping stopped.") - } -} - -func TestRunLoop(t *testing.T) { - // Passing a second value to setUp stops goroutines from starting - c, s := setUp(t, false) - defer s.tearDown() - - // Set up a handler to detect whether 001 handler is called - h001 := callCheck(t) - c.HandleFunc("001", func(conn *Conn, line *Line) { - h001.call() - }) - h002 := callCheck(t) - // Set up a handler to detect whether 002 handler is called - c.HandleFunc("002", func(conn *Conn, line *Line) { - h002.call() - }) - - l1 := ParseLine(":irc.server.org 001 test :First test line.") - c.in <- l1 - h001.assertNotCalled("001 handler called before runLoop started.") - - // We want to test that the a goroutine calling runLoop will exit correctly. - // Now, we can expect the call to Dispatch to take place as runLoop starts. - exited := callCheck(t) - // runLoop() will decrement the WaitGroup, so we must increment it. - c.wg.Add(1) - go func() { - c.runLoop() - exited.call() - }() - h001.assertWasCalled("001 handler not called after runLoop started.") - - // Send another line, just to be sure :-) - h002.assertNotCalled("002 handler called before expected.") - l2 := ParseLine(":irc.server.org 002 test :Second test line.") - c.in <- l2 - h002.assertWasCalled("002 handler not called while runLoop started.") - - // Now, use the control channel to exit send and kill the goroutine. - // This sneakily uses the fact that the other two goroutines that would - // normally be waiting for die to close are not running, so we only send - // to the goroutine started above. Normally Close() closes c.die and - // signals to all three goroutines (send, ping, runLoop) to exit. - exited.assertNotCalled("Exited before signal sent.") - c.die <- struct{}{} - exited.assertWasCalled("Didn't exit after signal.") - - // Sending more on c.in shouldn't dispatch any further events - c.in <- l1 - h001.assertNotCalled("001 handler called after runLoop ended.") -} - -func TestWrite(t *testing.T) { - // Passing a second value to setUp stops goroutines from starting - c, s := setUp(t, false) - // We can't use tearDown here because we're testing shutdown conditions - // (and so need to EXPECT() a call to st.Wipe() in the right place) - defer s.ctrl.Finish() - - // Write should just write a line to the socket. - if err := c.write("yo momma"); err != nil { - t.Errorf("Write returned unexpected error %v", err) - } - s.nc.Expect("yo momma") - - // Flood control is disabled -- setUp sets c.cfg.Flood = true -- so we should - // not have set c.badness at this point. - if c.badness != 0 { - t.Errorf("Flood control used when Flood = true.") - } - - c.cfg.Flood = false - if err := c.write("she so useless"); err != nil { - t.Errorf("Write returned unexpected error %v", err) - } - s.nc.Expect("she so useless") - - // The lastsent time should have been updated very recently... - if time.Now().Sub(c.lastsent) > time.Millisecond { - t.Errorf("Flood control not used when Flood = false.") - } - - // Finally, test the error state by closing the socket then writing. - s.nc.Close() - if err := c.write("she can't pass unit tests"); err == nil { - t.Errorf("Expected write to return error after socket close.") - } -} - -func TestRateLimit(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - if c.badness != 0 { - t.Errorf("Bad initial values for rate limit variables.") - } - - // We'll be needing this later... - abs := func(i time.Duration) time.Duration { - if i < 0 { - return -i - } - return i - } - - // Since the changes to the time module, c.lastsent is now a time.Time. - // It's initialised on client creation to time.Now() which for the purposes - // of this test was probably around 1.2 ms ago. This is inconvenient. - // Making it >10s ago effectively clears out the inconsistency, as this - // makes elapsed > linetime and thus zeros c.badness and resets c.lastsent. - c.lastsent = time.Now().Add(-10 * time.Second) - if l := c.rateLimit(60); l != 0 || c.badness != 0 { - t.Errorf("Rate limit got non-zero badness from long-ago lastsent.") - } - - // So, time at the nanosecond resolution is a bit of a bitch. Choosing 60 - // characters as the line length means we should be increasing badness by - // 2.5 seconds minus the delta between the two ratelimit calls. This should - // be minimal but it's guaranteed that it won't be zero. Use 20us as a fuzz. - if l := c.rateLimit(60); l != 0 || - abs(c.badness-2500*time.Millisecond) > 20*time.Microsecond { - t.Errorf("Rate limit calculating badness incorrectly.") - } - // At this point, we can tip over the badness scale, with a bit of help. - // 720 chars => +8 seconds of badness => 10.5 seconds => ratelimit - if l := c.rateLimit(720); l != 8*time.Second || - abs(c.badness-10500*time.Millisecond) > 20*time.Microsecond { - t.Errorf("Rate limit failed to return correct limiting values.") - t.Errorf("l=%d, badness=%d", l, c.badness) - } -} diff --git a/vendor/github.com/fluffle/goirc/client/dispatch_test.go b/vendor/github.com/fluffle/goirc/client/dispatch_test.go deleted file mode 100644 index b79df64..0000000 --- a/vendor/github.com/fluffle/goirc/client/dispatch_test.go +++ /dev/null @@ -1,201 +0,0 @@ -package client - -import ( - "sync/atomic" - "testing" - "time" -) - -func TestHandlerSet(t *testing.T) { - // A Conn is needed here because the previous behaviour of passing nil to - // hset.dispatch causes a nil pointer dereference with panic recovery. - c, s := setUp(t) - defer s.tearDown() - - hs := handlerSet() - if len(hs.set) != 0 { - t.Errorf("New set contains things!") - } - - callcount := new(int32) - f := func(_ *Conn, _ *Line) { - atomic.AddInt32(callcount, 1) - } - - // Add one - hn1 := hs.add("ONE", HandlerFunc(f)).(*hNode) - hl, ok := hs.set["one"] - if len(hs.set) != 1 || !ok { - t.Errorf("Set doesn't contain 'one' list after add().") - } - if hn1.set != hs || hn1.event != "one" || hn1.prev != nil || hn1.next != nil { - t.Errorf("First node for 'one' not created correctly") - } - if hl.start != hn1 || hl.end != hn1 { - t.Errorf("Node not added to empty 'one' list correctly.") - } - - // Add another one... - hn2 := hs.add("one", HandlerFunc(f)).(*hNode) - if len(hs.set) != 1 { - t.Errorf("Set contains more than 'one' list after add().") - } - if hn2.set != hs || hn2.event != "one" { - t.Errorf("Second node for 'one' not created correctly") - } - if hn1.prev != nil || hn1.next != hn2 || hn2.prev != hn1 || hn2.next != nil { - t.Errorf("Nodes for 'one' not linked correctly.") - } - if hl.start != hn1 || hl.end != hn2 { - t.Errorf("Node not appended to 'one' list correctly.") - } - - // Add a third one! - hn3 := hs.add("one", HandlerFunc(f)).(*hNode) - if len(hs.set) != 1 { - t.Errorf("Set contains more than 'one' list after add().") - } - if hn3.set != hs || hn3.event != "one" { - t.Errorf("Third node for 'one' not created correctly") - } - if hn1.prev != nil || hn1.next != hn2 || - hn2.prev != hn1 || hn2.next != hn3 || - hn3.prev != hn2 || hn3.next != nil { - t.Errorf("Nodes for 'one' not linked correctly.") - } - if hl.start != hn1 || hl.end != hn3 { - t.Errorf("Node not appended to 'one' list correctly.") - } - - // And finally a fourth one! - hn4 := hs.add("one", HandlerFunc(f)).(*hNode) - if len(hs.set) != 1 { - t.Errorf("Set contains more than 'one' list after add().") - } - if hn4.set != hs || hn4.event != "one" { - t.Errorf("Fourth node for 'one' not created correctly.") - } - if hn1.prev != nil || hn1.next != hn2 || - hn2.prev != hn1 || hn2.next != hn3 || - hn3.prev != hn2 || hn3.next != hn4 || - hn4.prev != hn3 || hn4.next != nil { - t.Errorf("Nodes for 'one' not linked correctly.") - } - if hl.start != hn1 || hl.end != hn4 { - t.Errorf("Node not appended to 'one' list correctly.") - } - - // Dispatch should result in 4 additions. - if atomic.LoadInt32(callcount) != 0 { - t.Errorf("Something incremented call count before we were expecting it.") - } - hs.dispatch(c, &Line{Cmd: "One"}) - <-time.After(time.Millisecond) - if atomic.LoadInt32(callcount) != 4 { - t.Errorf("Our handler wasn't called four times :-(") - } - - // Remove node 3. - hn3.Remove() - if len(hs.set) != 1 { - t.Errorf("Set list count changed after remove().") - } - if hn3.set != nil || hn3.prev != nil || hn3.next != nil { - t.Errorf("Third node for 'one' not removed correctly.") - } - if hn1.prev != nil || hn1.next != hn2 || - hn2.prev != hn1 || hn2.next != hn4 || - hn4.prev != hn2 || hn4.next != nil { - t.Errorf("Third node for 'one' not unlinked correctly.") - } - if hl.start != hn1 || hl.end != hn4 { - t.Errorf("Third node for 'one' changed list pointers.") - } - - // Dispatch should result in 3 additions. - hs.dispatch(c, &Line{Cmd: "One"}) - <-time.After(time.Millisecond) - if atomic.LoadInt32(callcount) != 7 { - t.Errorf("Our handler wasn't called three times :-(") - } - - // Remove node 1. - hs.remove(hn1) - if len(hs.set) != 1 { - t.Errorf("Set list count changed after remove().") - } - if hn1.set != nil || hn1.prev != nil || hn1.next != nil { - t.Errorf("First node for 'one' not removed correctly.") - } - if hn2.prev != nil || hn2.next != hn4 || hn4.prev != hn2 || hn4.next != nil { - t.Errorf("First node for 'one' not unlinked correctly.") - } - if hl.start != hn2 || hl.end != hn4 { - t.Errorf("First node for 'one' didn't change list pointers.") - } - - // Dispatch should result in 2 additions. - hs.dispatch(c, &Line{Cmd: "One"}) - <-time.After(time.Millisecond) - if atomic.LoadInt32(callcount) != 9 { - t.Errorf("Our handler wasn't called two times :-(") - } - - // Remove node 4. - hn4.Remove() - if len(hs.set) != 1 { - t.Errorf("Set list count changed after remove().") - } - if hn4.set != nil || hn4.prev != nil || hn4.next != nil { - t.Errorf("Fourth node for 'one' not removed correctly.") - } - if hn2.prev != nil || hn2.next != nil { - t.Errorf("Fourth node for 'one' not unlinked correctly.") - } - if hl.start != hn2 || hl.end != hn2 { - t.Errorf("Fourth node for 'one' didn't change list pointers.") - } - - // Dispatch should result in 1 addition. - hs.dispatch(c, &Line{Cmd: "One"}) - <-time.After(time.Millisecond) - if atomic.LoadInt32(callcount) != 10 { - t.Errorf("Our handler wasn't called once :-(") - } - - // Remove node 2. - hs.remove(hn2) - if len(hs.set) != 0 { - t.Errorf("Removing last node in 'one' didn't remove list.") - } - if hn2.set != nil || hn2.prev != nil || hn2.next != nil { - t.Errorf("Second node for 'one' not removed correctly.") - } - if hl.start != nil || hl.end != nil { - t.Errorf("Second node for 'one' didn't change list pointers.") - } - - // Dispatch should result in NO additions. - hs.dispatch(c, &Line{Cmd: "One"}) - <-time.After(time.Millisecond) - if atomic.LoadInt32(callcount) != 10 { - t.Errorf("Our handler was called?") - } -} - -func TestPanicRecovery(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - recovered := callCheck(t) - c.cfg.Recover = func(conn *Conn, line *Line) { - if err, ok := recover().(string); ok && err == "panic!" { - recovered.call() - } - } - c.HandleFunc(PRIVMSG, func(conn *Conn, line *Line) { - panic("panic!") - }) - c.in <- ParseLine(":nick!user@host.com PRIVMSG #channel :OH NO PIGEONS") - recovered.assertWasCalled("Failed to recover panic!") -} diff --git a/vendor/github.com/fluffle/goirc/client/handlers_test.go b/vendor/github.com/fluffle/goirc/client/handlers_test.go deleted file mode 100644 index 7808022..0000000 --- a/vendor/github.com/fluffle/goirc/client/handlers_test.go +++ /dev/null @@ -1,451 +0,0 @@ -package client - -import ( - "github.com/fluffle/goirc/state" - "github.com/golang/mock/gomock" - "testing" - "time" -) - -// This test performs a simple end-to-end verification of correct line parsing -// and event dispatch as well as testing the PING handler. All the other tests -// in this file will call their respective handlers synchronously, otherwise -// testing becomes more difficult. -func TestPING(t *testing.T) { - _, s := setUp(t) - defer s.tearDown() - s.nc.Send("PING :1234567890") - s.nc.Expect("PONG :1234567890") -} - -// Test the REGISTER handler matches section 3.1 of rfc2812 -func TestREGISTER(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - c.h_REGISTER(&Line{Cmd: REGISTER}) - s.nc.Expect("NICK test") - s.nc.Expect("USER test 12 * :Testing IRC") - s.nc.ExpectNothing() - - c.cfg.Pass = "12345" - c.cfg.Me.Ident = "idiot" - c.cfg.Me.Name = "I've got the same combination on my luggage!" - c.h_REGISTER(&Line{Cmd: REGISTER}) - s.nc.Expect("PASS 12345") - s.nc.Expect("NICK test") - s.nc.Expect("USER idiot 12 * :I've got the same combination on my luggage!") - s.nc.ExpectNothing() -} - -// Test the handler for 001 / RPL_WELCOME -func Test001(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - l := ParseLine(":irc.server.org 001 test :Welcome to IRC test!ident@somehost.com") - // Set up a handler to detect whether connected handler is called from 001 - hcon := false - c.HandleFunc("connected", func(conn *Conn, line *Line) { - hcon = true - }) - - // Test state tracking first. - gomock.InOrder( - s.st.EXPECT().Me().Return(c.cfg.Me), - s.st.EXPECT().NickInfo("test", "test", "somehost.com", "Testing IRC"), - ) - // Call handler with a valid 001 line - c.h_001(l) - <-time.After(time.Millisecond) - if !hcon { - t.Errorf("001 handler did not dispatch connected event.") - } - - // Now without state tracking. - c.st = nil - c.h_001(l) - // Check host parsed correctly - if c.cfg.Me.Host != "somehost.com" { - t.Errorf("Host parsing failed, host is '%s'.", c.cfg.Me.Host) - } - c.st = s.st -} - -// Test the handler for 433 / ERR_NICKNAMEINUSE -func Test433(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Call handler with a 433 line, not triggering c.cfg.Me.Renick() - s.st.EXPECT().Me().Return(c.cfg.Me) - c.h_433(ParseLine(":irc.server.org 433 test new :Nickname is already in use.")) - s.nc.Expect("NICK new_") - - // Send a line that will trigger a renick. This happens when our wanted - // nick is unavailable during initial negotiation, so we must choose a - // different one before the connection can proceed. No NICK line will be - // sent by the server to confirm nick change in this case. - gomock.InOrder( - s.st.EXPECT().Me().Return(c.cfg.Me), - s.st.EXPECT().ReNick("test", "test_").Return(c.cfg.Me), - ) - c.h_433(ParseLine(":irc.server.org 433 test test :Nickname is already in use.")) - s.nc.Expect("NICK test_") - - // Test the code path that *doesn't* involve state tracking. - c.st = nil - c.h_433(ParseLine(":irc.server.org 433 test test :Nickname is already in use.")) - s.nc.Expect("NICK test_") - - if c.cfg.Me.Nick != "test_" { - t.Errorf("My nick not updated from '%s'.", c.cfg.Me.Nick) - } - c.st = s.st -} - -// Test the handler for NICK messages when state tracking is disabled -func TestNICK(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // State tracking is enabled by default in setUp - c.st = nil - - // Call handler with a NICK line changing "our" nick to test1. - c.h_NICK(ParseLine(":test!test@somehost.com NICK :test1")) - - // Verify that our Nick has changed - if c.cfg.Me.Nick != "test1" { - t.Errorf("NICK did not result in changing our nick.") - } - - // Send a NICK line for something that isn't us. - c.h_NICK(ParseLine(":blah!moo@cows.com NICK :milk")) - - // Verify that our Nick hasn't changed - if c.cfg.Me.Nick != "test1" { - t.Errorf("NICK did not result in changing our nick.") - } - - // Re-enable state tracking and send a line that *should* change nick. - c.st = s.st - c.h_NICK(ParseLine(":test1!test@somehost.com NICK :test2")) - - // Verify that our Nick hasn't changed (should be handled by h_STNICK). - if c.cfg.Me.Nick != "test1" { - t.Errorf("NICK changed our nick when state tracking enabled.") - } -} - -// Test the handler for CTCP messages -func TestCTCP(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Call handler with CTCP VERSION - c.h_CTCP(ParseLine(":blah!moo@cows.com PRIVMSG test :\001VERSION\001")) - - // Expect a version reply - s.nc.Expect("NOTICE blah :\001VERSION Powered by GoIRC\001") - - // Call handler with CTCP PING - c.h_CTCP(ParseLine(":blah!moo@cows.com PRIVMSG test :\001PING 1234567890\001")) - - // Expect a ping reply - s.nc.Expect("NOTICE blah :\001PING 1234567890\001") - - // Call handler with CTCP UNKNOWN - c.h_CTCP(ParseLine(":blah!moo@cows.com PRIVMSG test :\001UNKNOWN ctcp\001")) -} - -// Test the handler for JOIN messages -func TestJOIN(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // The state tracker should be creating a new channel in this first test - chan1 := &state.Channel{Name: "#test1"} - - gomock.InOrder( - s.st.EXPECT().GetChannel("#test1").Return(nil), - s.st.EXPECT().GetNick("test").Return(c.cfg.Me), - s.st.EXPECT().Me().Return(c.cfg.Me), - s.st.EXPECT().NewChannel("#test1").Return(chan1), - s.st.EXPECT().Associate("#test1", "test"), - ) - - // Use #test1 to test expected behaviour - // Call handler with JOIN by test to #test1 - c.h_JOIN(ParseLine(":test!test@somehost.com JOIN :#test1")) - - // Verify that the MODE and WHO commands are sent correctly - s.nc.Expect("MODE #test1") - s.nc.Expect("WHO #test1") - - // In this second test, we should be creating a new nick - nick1 := &state.Nick{Nick: "user1"} - - gomock.InOrder( - s.st.EXPECT().GetChannel("#test1").Return(chan1), - s.st.EXPECT().GetNick("user1").Return(nil), - s.st.EXPECT().NewNick("user1").Return(nick1), - s.st.EXPECT().NickInfo("user1", "ident1", "host1.com", "").Return(nick1), - s.st.EXPECT().Associate("#test1", "user1"), - ) - - // OK, now #test1 exists, JOIN another user we don't know about - c.h_JOIN(ParseLine(":user1!ident1@host1.com JOIN :#test1")) - - // Verify that the WHO command is sent correctly - s.nc.Expect("WHO user1") - - // In this third test, we'll be pretending we know about the nick already. - nick2 := &state.Nick{Nick: "user2"} - gomock.InOrder( - s.st.EXPECT().GetChannel("#test1").Return(chan1), - s.st.EXPECT().GetNick("user2").Return(nick2), - s.st.EXPECT().Associate("#test1", "user2"), - ) - c.h_JOIN(ParseLine(":user2!ident2@host2.com JOIN :#test1")) - - // Test error paths - gomock.InOrder( - // unknown channel, unknown nick - s.st.EXPECT().GetChannel("#test2").Return(nil), - s.st.EXPECT().GetNick("blah").Return(nil), - s.st.EXPECT().Me().Return(c.cfg.Me), - // unknown channel, known nick that isn't Me. - s.st.EXPECT().GetChannel("#test2").Return(nil), - s.st.EXPECT().GetNick("user2").Return(nick2), - s.st.EXPECT().Me().Return(c.cfg.Me), - ) - c.h_JOIN(ParseLine(":blah!moo@cows.com JOIN :#test2")) - c.h_JOIN(ParseLine(":user2!ident2@host2.com JOIN :#test2")) -} - -// Test the handler for PART messages -func TestPART(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // PART should dissociate a nick from a channel. - s.st.EXPECT().Dissociate("#test1", "user1") - c.h_PART(ParseLine(":user1!ident1@host1.com PART #test1 :Bye!")) -} - -// Test the handler for KICK messages -// (this is very similar to the PART message test) -func TestKICK(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // KICK should dissociate a nick from a channel. - s.st.EXPECT().Dissociate("#test1", "user1") - c.h_KICK(ParseLine(":test!test@somehost.com KICK #test1 user1 :Bye!")) -} - -// Test the handler for QUIT messages -func TestQUIT(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Have user1 QUIT. All possible errors handled by state tracker \o/ - s.st.EXPECT().DelNick("user1") - c.h_QUIT(ParseLine(":user1!ident1@host1.com QUIT :Bye!")) -} - -// Test the handler for MODE messages -func TestMODE(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Channel modes - gomock.InOrder( - s.st.EXPECT().GetChannel("#test1").Return(&state.Channel{Name: "#test1"}), - s.st.EXPECT().ChannelModes("#test1", "+sk", "somekey"), - ) - c.h_MODE(ParseLine(":user1!ident1@host1.com MODE #test1 +sk somekey")) - - // Nick modes for Me. - gomock.InOrder( - s.st.EXPECT().GetChannel("test").Return(nil), - s.st.EXPECT().GetNick("test").Return(c.cfg.Me), - s.st.EXPECT().Me().Return(c.cfg.Me), - s.st.EXPECT().NickModes("test", "+i"), - ) - c.h_MODE(ParseLine(":test!test@somehost.com MODE test +i")) - - // Check error paths - gomock.InOrder( - // send a valid user mode that's not us - s.st.EXPECT().GetChannel("user1").Return(nil), - s.st.EXPECT().GetNick("user1").Return(&state.Nick{Nick: "user1"}), - s.st.EXPECT().Me().Return(c.cfg.Me), - // Send a random mode for an unknown channel - s.st.EXPECT().GetChannel("#test2").Return(nil), - s.st.EXPECT().GetNick("#test2").Return(nil), - ) - c.h_MODE(ParseLine(":user1!ident1@host1.com MODE user1 +w")) - c.h_MODE(ParseLine(":user1!ident1@host1.com MODE #test2 +is")) -} - -// Test the handler for TOPIC messages -func TestTOPIC(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Ensure TOPIC reply calls Topic - gomock.InOrder( - s.st.EXPECT().GetChannel("#test1").Return(&state.Channel{Name: "#test1"}), - s.st.EXPECT().Topic("#test1", "something something"), - ) - c.h_TOPIC(ParseLine(":user1!ident1@host1.com TOPIC #test1 :something something")) - - // Check error paths -- send a topic for an unknown channel - s.st.EXPECT().GetChannel("#test2").Return(nil) - c.h_TOPIC(ParseLine(":user1!ident1@host1.com TOPIC #test2 :dark side")) -} - -// Test the handler for 311 / RPL_WHOISUSER -func Test311(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Ensure 311 reply calls NickInfo - gomock.InOrder( - s.st.EXPECT().GetNick("user1").Return(&state.Nick{Nick: "user1"}), - s.st.EXPECT().Me().Return(c.cfg.Me), - s.st.EXPECT().NickInfo("user1", "ident1", "host1.com", "name"), - ) - c.h_311(ParseLine(":irc.server.org 311 test user1 ident1 host1.com * :name")) - - // Check error paths -- send a 311 for an unknown nick - s.st.EXPECT().GetNick("user2").Return(nil) - c.h_311(ParseLine(":irc.server.org 311 test user2 ident2 host2.com * :dongs")) -} - -// Test the handler for 324 / RPL_CHANNELMODEIS -func Test324(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Ensure 324 reply calls ChannelModes - gomock.InOrder( - s.st.EXPECT().GetChannel("#test1").Return(&state.Channel{Name: "#test1"}), - s.st.EXPECT().ChannelModes("#test1", "+sk", "somekey"), - ) - c.h_324(ParseLine(":irc.server.org 324 test #test1 +sk somekey")) - - // Check error paths -- send 324 for an unknown channel - s.st.EXPECT().GetChannel("#test2").Return(nil) - c.h_324(ParseLine(":irc.server.org 324 test #test2 +pmt")) -} - -// Test the handler for 332 / RPL_TOPIC -func Test332(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Ensure 332 reply calls Topic - gomock.InOrder( - s.st.EXPECT().GetChannel("#test1").Return(&state.Channel{Name: "#test1"}), - s.st.EXPECT().Topic("#test1", "something something"), - ) - c.h_332(ParseLine(":irc.server.org 332 test #test1 :something something")) - - // Check error paths -- send 332 for an unknown channel - s.st.EXPECT().GetChannel("#test2").Return(nil) - c.h_332(ParseLine(":irc.server.org 332 test #test2 :dark side")) -} - -// Test the handler for 352 / RPL_WHOREPLY -func Test352(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Ensure 352 reply calls NickInfo and NickModes - gomock.InOrder( - s.st.EXPECT().GetNick("user1").Return(&state.Nick{Nick: "user1"}), - s.st.EXPECT().Me().Return(c.cfg.Me), - s.st.EXPECT().NickInfo("user1", "ident1", "host1.com", "name"), - ) - c.h_352(ParseLine(":irc.server.org 352 test #test1 ident1 host1.com irc.server.org user1 G :0 name")) - - // Check that modes are set correctly from WHOREPLY - gomock.InOrder( - s.st.EXPECT().GetNick("user1").Return(&state.Nick{Nick: "user1"}), - s.st.EXPECT().Me().Return(c.cfg.Me), - s.st.EXPECT().NickInfo("user1", "ident1", "host1.com", "name"), - s.st.EXPECT().NickModes("user1", "+o"), - s.st.EXPECT().NickModes("user1", "+i"), - ) - c.h_352(ParseLine(":irc.server.org 352 test #test1 ident1 host1.com irc.server.org user1 H* :0 name")) - - // Check error paths -- send a 352 for an unknown nick - s.st.EXPECT().GetNick("user2").Return(nil) - c.h_352(ParseLine(":irc.server.org 352 test #test2 ident2 host2.com irc.server.org user2 G :0 fooo")) -} - -// Test the handler for 353 / RPL_NAMREPLY -func Test353(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // 353 handler is called twice, so GetChannel will be called twice - s.st.EXPECT().GetChannel("#test1").Return(&state.Channel{Name: "#test1"}).Times(2) - gomock.InOrder( - // "test" is Me, i am known, and already on the channel - s.st.EXPECT().GetNick("test").Return(c.cfg.Me), - s.st.EXPECT().IsOn("#test1", "test").Return(&state.ChanPrivs{}, true), - // user1 is known, but not on the channel, so should be associated - s.st.EXPECT().GetNick("user1").Return(&state.Nick{Nick: "user1"}), - s.st.EXPECT().IsOn("#test1", "user1").Return(nil, false), - s.st.EXPECT().Associate("#test1", "user1").Return(&state.ChanPrivs{}), - s.st.EXPECT().ChannelModes("#test1", "+o", "user1"), - ) - for n, m := range map[string]string{ - "user2": "", - "voice": "+v", - "halfop": "+h", - "op": "+o", - "admin": "+a", - "owner": "+q", - } { - calls := []*gomock.Call{ - s.st.EXPECT().GetNick(n).Return(nil), - s.st.EXPECT().NewNick(n).Return(&state.Nick{Nick: n}), - s.st.EXPECT().IsOn("#test1", n).Return(nil, false), - s.st.EXPECT().Associate("#test1", n).Return(&state.ChanPrivs{}), - } - if m != "" { - calls = append(calls, s.st.EXPECT().ChannelModes("#test1", m, n)) - } - gomock.InOrder(calls...) - } - - // Send a couple of names replies (complete with trailing space) - c.h_353(ParseLine(":irc.server.org 353 test = #test1 :test @user1 user2 +voice ")) - c.h_353(ParseLine(":irc.server.org 353 test = #test1 :%halfop @op &admin ~owner ")) - - // Check error paths -- send 353 for an unknown channel - s.st.EXPECT().GetChannel("#test2").Return(nil) - c.h_353(ParseLine(":irc.server.org 353 test = #test2 :test ~user3")) -} - -// Test the handler for 671 (unreal specific) -func Test671(t *testing.T) { - c, s := setUp(t) - defer s.tearDown() - - // Ensure 671 reply calls NickModes - gomock.InOrder( - s.st.EXPECT().GetNick("user1").Return(&state.Nick{Nick: "user1"}), - s.st.EXPECT().NickModes("user1", "+z"), - ) - c.h_671(ParseLine(":irc.server.org 671 test user1 :some ignored text")) - - // Check error paths -- send a 671 for an unknown nick - s.st.EXPECT().GetNick("user2").Return(nil) - c.h_671(ParseLine(":irc.server.org 671 test user2 :some ignored text")) -} diff --git a/vendor/github.com/fluffle/goirc/client/line_test.go b/vendor/github.com/fluffle/goirc/client/line_test.go deleted file mode 100644 index 88b758d..0000000 --- a/vendor/github.com/fluffle/goirc/client/line_test.go +++ /dev/null @@ -1,186 +0,0 @@ -package client - -import ( - "reflect" - "testing" - "time" -) - -func TestLineCopy(t *testing.T) { - l1 := &Line{ - Tags: map[string]string{"foo": "bar", "fizz": "buzz"}, - Nick: "nick", - Ident: "ident", - Host: "host", - Src: "src", - Cmd: "cmd", - Raw: "raw", - Args: []string{"arg", "text"}, - Time: time.Now(), - } - - l2 := l1.Copy() - - // Ugly. Couldn't be bothered to bust out reflect and actually think. - if l2.Tags == nil || l2.Tags["foo"] != "bar" || l2.Tags["fizz"] != "buzz" || - l2.Nick != "nick" || l2.Ident != "ident" || l2.Host != "host" || - l2.Src != "src" || l2.Cmd != "cmd" || l2.Raw != "raw" || - l2.Args[0] != "arg" || l2.Args[1] != "text" || l2.Time != l1.Time { - t.Errorf("Line not copied correctly") - t.Errorf("l1: %#v\nl2: %#v", l1, l2) - } - - // Now, modify l2 and verify l1 not changed - l2.Tags["foo"] = "baz" - l2.Nick = l2.Nick[1:] - l2.Ident = "foo" - l2.Host = "" - l2.Args[0] = l2.Args[0][1:] - l2.Args[1] = "bar" - l2.Time = time.Now() - - if l2.Tags == nil || l2.Tags["foo"] != "baz" || l2.Tags["fizz"] != "buzz" || - l1.Nick != "nick" || l1.Ident != "ident" || l1.Host != "host" || - l1.Src != "src" || l1.Cmd != "cmd" || l1.Raw != "raw" || - l1.Args[0] != "arg" || l1.Args[1] != "text" || l1.Time == l2.Time { - t.Errorf("Original modified when copy changed") - t.Errorf("l1: %#v\nl2: %#v", l1, l2) - } -} - -func TestLineText(t *testing.T) { - tests := []struct { - in *Line - out string - }{ - {&Line{}, ""}, - {&Line{Args: []string{"one thing"}}, "one thing"}, - {&Line{Args: []string{"one", "two"}}, "two"}, - } - - for i, test := range tests { - out := test.in.Text() - if out != test.out { - t.Errorf("test %d: expected: '%s', got '%s'", i, test.out, out) - } - } -} - -func TestLineTarget(t *testing.T) { - tests := []struct { - in *Line - out string - }{ - {&Line{}, ""}, - {&Line{Cmd: JOIN, Args: []string{"#foo"}}, "#foo"}, - {&Line{Cmd: PART, Args: []string{"#foo", "bye"}}, "#foo"}, - {&Line{Cmd: PRIVMSG, Args: []string{"Me", "la"}, Nick: "Them"}, "Them"}, - {&Line{Cmd: NOTICE, Args: []string{"Me", "la"}, Nick: "Them"}, "Them"}, - {&Line{Cmd: ACTION, Args: []string{"Me", "la"}, Nick: "Them"}, "Them"}, - {&Line{Cmd: CTCP, Args: []string{"PING", "Me", "1"}, Nick: "Them"}, "Them"}, - {&Line{Cmd: CTCPREPLY, Args: []string{"PONG", "Me", "2"}, Nick: "Them"}, "Them"}, - {&Line{Cmd: PRIVMSG, Args: []string{"#foo", "la"}, Nick: "Them"}, "#foo"}, - {&Line{Cmd: NOTICE, Args: []string{"&foo", "la"}, Nick: "Them"}, "&foo"}, - {&Line{Cmd: ACTION, Args: []string{"!foo", "la"}, Nick: "Them"}, "!foo"}, - {&Line{Cmd: CTCP, Args: []string{"PING", "#foo", "1"}, Nick: "Them"}, "#foo"}, - {&Line{Cmd: CTCPREPLY, Args: []string{"PONG", "#foo", "2"}, Nick: "Them"}, "#foo"}, - } - - for i, test := range tests { - out := test.in.Target() - if out != test.out { - t.Errorf("test %d: expected: '%s', got '%s'", i, test.out, out) - } - } -} - -func TestLineTags(t *testing.T) { - tests := []struct { - in string - out *Line - }{ - { // Make sure ERROR lines work - "ERROR :Closing Link: example.org (Too many user connections (global))", - &Line{ - Nick: "", - Ident: "", - Host: "", - Src: "", - Cmd: ERROR, - Raw: "ERROR :Closing Link: example.org (Too many user connections (global))", - Args: []string{"Closing Link: example.org (Too many user connections (global))"}, - }, - }, - { // Make sure non-tagged lines work - ":nick!ident@host.com PRIVMSG me :Hello", - &Line{ - Nick: "nick", - Ident: "ident", - Host: "host.com", - Src: "nick!ident@host.com", - Cmd: PRIVMSG, - Raw: ":nick!ident@host.com PRIVMSG me :Hello", - Args: []string{"me", "Hello"}, - }, - }, - { // Tags example from the spec - "@aaa=bbb;ccc;example.com/ddd=eee :nick!ident@host.com PRIVMSG me :Hello", - &Line{ - Tags: map[string]string{"aaa": "bbb", "ccc": "", "example.com/ddd": "eee"}, - Nick: "nick", - Ident: "ident", - Host: "host.com", - Src: "nick!ident@host.com", - Cmd: PRIVMSG, - Raw: "@aaa=bbb;ccc;example.com/ddd=eee :nick!ident@host.com PRIVMSG me :Hello", - Args: []string{"me", "Hello"}, - }, - }, - { // Test escaped characters - "@\\:=\\:;\\s=\\s;\\r=\\r;\\n=\\n :nick!ident@host.com PRIVMSG me :Hello", - &Line{ - Tags: map[string]string{";": ";", " ": " ", "\r": "\r", "\n": "\n"}, - Nick: "nick", - Ident: "ident", - Host: "host.com", - Src: "nick!ident@host.com", - Cmd: PRIVMSG, - Raw: "@\\:=\\:;\\s=\\s;\\r=\\r;\\n=\\n :nick!ident@host.com PRIVMSG me :Hello", - Args: []string{"me", "Hello"}, - }, - }, - { // Skip empty tag - "@a=a; :nick!ident@host.com PRIVMSG me :Hello", - &Line{ - Tags: map[string]string{"a": "a"}, - Nick: "nick", - Ident: "ident", - Host: "host.com", - Src: "nick!ident@host.com", - Cmd: PRIVMSG, - Raw: "@a=a; :nick!ident@host.com PRIVMSG me :Hello", - Args: []string{"me", "Hello"}, - }, - }, - { // = in tag - "@a=a=a; :nick!ident@host.com PRIVMSG me :Hello", - &Line{ - Tags: map[string]string{"a": "a=a"}, - Nick: "nick", - Ident: "ident", - Host: "host.com", - Src: "nick!ident@host.com", - Cmd: PRIVMSG, - Raw: "@a=a=a; :nick!ident@host.com PRIVMSG me :Hello", - Args: []string{"me", "Hello"}, - }, - }, - } - - for i, test := range tests { - got := ParseLine(test.in) - if !reflect.DeepEqual(got, test.out) { - t.Errorf("test %d:\nexpected %#v\ngot %#v", i, test.out, got) - } - } -} diff --git a/vendor/github.com/fluffle/goirc/client/mocknetconn_test.go b/vendor/github.com/fluffle/goirc/client/mocknetconn_test.go deleted file mode 100644 index e736c88..0000000 --- a/vendor/github.com/fluffle/goirc/client/mocknetconn_test.go +++ /dev/null @@ -1,154 +0,0 @@ -package client - -import ( - "io" - "net" - "os" - "strings" - "testing" - "time" -) - -type mockNetConn struct { - *testing.T - - In, Out chan string - in, out chan []byte - die chan struct{} - - closed bool - rt, wt time.Time -} - -func MockNetConn(t *testing.T) *mockNetConn { - // Our mock connection is a testing object - m := &mockNetConn{T: t, die: make(chan struct{})} - - // buffer input - m.In = make(chan string, 20) - m.in = make(chan []byte) - go func() { - for { - select { - case <-m.die: - return - case s := <-m.In: - m.in <- []byte(s) - } - } - }() - - // buffer output - m.Out = make(chan string) - m.out = make(chan []byte, 20) - go func() { - for { - select { - case <-m.die: - return - case b := <-m.out: - m.Out <- string(b) - } - } - }() - - return m -} - -// Test helpers -func (m *mockNetConn) Send(s string) { - m.In <- s + "\r\n" -} - -func (m *mockNetConn) Expect(e string) { - select { - case <-time.After(time.Millisecond): - m.Errorf("Mock connection did not receive expected output.\n\t"+ - "Expected: '%s', got nothing.", e) - case s := <-m.Out: - s = strings.Trim(s, "\r\n") - if e != s { - m.Errorf("Mock connection received unexpected value.\n\t"+ - "Expected: '%s'\n\tGot: '%s'", e, s) - } - } -} - -func (m *mockNetConn) ExpectNothing() { - select { - case <-time.After(time.Millisecond): - case s := <-m.Out: - s = strings.Trim(s, "\r\n") - m.Errorf("Mock connection received unexpected output.\n\t"+ - "Expected nothing, got: '%s'", s) - } -} - -// Implement net.Conn interface -func (m *mockNetConn) Read(b []byte) (int, error) { - if m.Closed() { - return 0, os.ErrInvalid - } - l := 0 - select { - case s := <-m.in: - l = len(s) - copy(b, s) - case <-m.die: - return 0, io.EOF - } - return l, nil -} - -func (m *mockNetConn) Write(s []byte) (int, error) { - if m.Closed() { - return 0, os.ErrInvalid - } - b := make([]byte, len(s)) - copy(b, s) - m.out <- b - return len(s), nil -} - -func (m *mockNetConn) Close() error { - if m.Closed() { - return os.ErrInvalid - } - // Shut down *ALL* the goroutines! - // This will trigger an EOF event in Read() too - close(m.die) - return nil -} - -func (m *mockNetConn) Closed() bool { - select { - case <-m.die: - return true - default: - return false - } -} - -func (m *mockNetConn) LocalAddr() net.Addr { - return &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)} -} - -func (m *mockNetConn) RemoteAddr() net.Addr { - return &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)} -} - -func (m *mockNetConn) SetDeadline(t time.Time) error { - m.rt = t - m.wt = t - return nil -} - -func (m *mockNetConn) SetReadDeadline(t time.Time) error { - m.rt = t - return nil -} - -func (m *mockNetConn) SetWriteDeadline(t time.Time) error { - m.wt = t - return nil -} diff --git a/vendor/github.com/fluffle/goirc/doc/rfc2811.txt b/vendor/github.com/fluffle/goirc/doc/rfc2811.txt deleted file mode 100644 index 7c2c4ea..0000000 --- a/vendor/github.com/fluffle/goirc/doc/rfc2811.txt +++ /dev/null @@ -1,1067 +0,0 @@ - - - - - - -Network Working Group C. Kalt -Request for Comments: 2811 April 2000 -Updates: 1459 -Category: Informational - - - Internet Relay Chat: Channel Management - -Status of this Memo - - This memo provides information for the Internet community. It does - not specify an Internet standard of any kind. Distribution of this - memo is unlimited. - -Copyright Notice - - Copyright (C) The Internet Society (2000). All Rights Reserved. - -Abstract - - One of the most notable characteristics of the IRC (Internet Relay - Chat) protocol is to allow for users to be grouped in forums, called - channels, providing a mean for multiple users to communicate - together. - - There was originally a unique type of channels, but with the years, - new types appeared either as a response to a need, or for - experimental purposes. - - This document specifies how channels, their characteristics and - properties are managed by IRC servers. - -Table of Contents - - 1. Introduction ............................................... 2 - 2. Channel Characteristics .................................... 3 - 2.1 Namespace .............................................. 3 - 2.2 Channel Scope .......................................... 3 - 2.3 Channel Properties ..................................... 4 - 2.4 Privileged Channel Members ............................. 4 - 2.4.1 Channel Operators ................................. 5 - 2.4.2 Channel Creator ................................... 5 - 3. Channel lifetime ........................................... 5 - 3.1 Standard channels ...................................... 5 - 3.2 Safe Channels .......................................... 6 - 4. Channel Modes .............................................. 7 - 4.1 Member Status .......................................... 7 - 4.1.1 "Channel Creator" Status .......................... 7 - - - -Kalt Informational [Page 1] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - 4.1.2 Channel Operator Status ........................... 8 - 4.1.3 Voice Privilege ................................... 8 - 4.2 Channel Flags .......................................... 8 - 4.2.1 Anonymous Flag .................................... 8 - 4.2.2 Invite Only Flag .................................. 8 - 4.2.3 Moderated Channel Flag ............................ 9 - 4.2.4 No Messages To Channel From Clients On The Outside 9 - 4.2.5 Quiet Channel ..................................... 9 - 4.2.6 Private and Secret Channels ....................... 9 - 4.2.7 Server Reop Flag .................................. 10 - 4.2.8 Topic ............................................. 10 - 4.2.9 User Limit ........................................ 10 - 4.2.10 Channel Key ...................................... 10 - 4.3 Channel Access Control ................................. 10 - 4.3.1 Channel Ban and Exception ......................... 11 - 4.3.2 Channel Invitation ................................ 11 - 5. Current Implementations .................................... 11 - 5.1 Tracking Recently Used Channels ........................ 11 - 5.2 Safe Channels .......................................... 12 - 5.2.1 Channel Identifier ................................ 12 - 5.2.2 Channel Delay ..................................... 12 - 5.2.3 Abuse Window ...................................... 13 - 5.2.4 Preserving Sanity In The Name Space ............... 13 - 5.2.5 Server Reop Mechanism ............................. 13 - 6. Current problems ........................................... 14 - 6.1 Labels ................................................. 14 - 6.1.1 Channel Delay ..................................... 14 - 6.1.2 Safe Channels ..................................... 15 - 6.2 Mode Propagation Delays ................................ 15 - 6.3 Collisions And Channel Modes ........................... 15 - 6.4 Resource Exhaustion .................................... 16 - 7. Security Considerations .................................... 16 - 7.1 Access Control ......................................... 16 - 7.2 Channel Privacy ........................................ 16 - 7.3 Anonymity ............................................... 17 - 8. Current support and availability ........................... 17 - 9. Acknowledgements ........................................... 17 - 10. References ................................................ 18 - 11. Author's Address .......................................... 18 - 12. Full Copyright Statement ................................... 19 - -1. Introduction - - This document defines in detail on how channels are managed by the - IRC servers and will be mostly useful to people working on - implementing an IRC server. - - - - - -Kalt Informational [Page 2] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - While the concepts defined here are an important part of IRC, they - remain non essential for implementing clients. While the trend seems - to be towards more and more complex and "intelligent" clients which - are able to take advantage of knowing the internal workings of - channels to provide the users with a more friendly interface, simple - clients can be implemented without reading this document. - - Many of the concepts defined here were designed with the IRC - architecture [IRC-ARCH] in mind and mostly make sense in this - context. However, many others could be applied to other - architectures in order to provide forums for a conferencing system. - - Finally, it is to be noted that IRC users may find some of the - following sections of interest, in particular sections 2 (Channel - Characteristics) and 4 (Channel Modes). - -2. Channel Characteristics - - A channel is a named group of one or more users which will all - receive messages addressed to that channel. A channel is - characterized by its name, properties and current members. - -2.1 Namespace - - Channels names are strings (beginning with a '&', '#', '+' or '!' - character) of length up to fifty (50) characters. Channel names are - case insensitive. - - Apart from the the requirement that the first character being either - '&', '#', '+' or '!' (hereafter called "channel prefix"). The only - restriction on a channel name is that it SHALL NOT contain any spaces - (' '), a control G (^G or ASCII 7), a comma (',' which is used as a - list item separator by the protocol). Also, a colon (':') is used as - a delimiter for the channel mask. The exact syntax of a channel name - is defined in "IRC Server Protocol" [IRC-SERVER]. - - The use of different prefixes effectively creates four (4) distinct - namespaces for channel names. This is important because of the - protocol limitations regarding namespaces (in general). See section - 6.1 (Labels) for more details on these limitations. - -2.2 Channel Scope - - A channel entity is known by one or more servers on the IRC network. - A user can only become member of a channel known by the server to - which the user is directly connected. The list of servers which know - - - - - -Kalt Informational [Page 3] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - of the existence of a particular channel MUST be a contiguous part of - the IRC network, in order for the messages addressed to the channel - to be sent to all the channel members. - - Channels with '&' as prefix are local to the server where they are - created. - - Other channels are known to one (1) or more servers that are - connected to the network, depending on the channel mask: - - If there is no channel mask, then the channel is known to all - the servers. - - If there is a channel mask, then the channel MUST only be known - to servers which has a local user on the channel, and to its - neighbours if the mask matches both the local and neighbouring - server names. Since other servers have absolutely no knowledge of - the existence of such a channel, the area formed by the servers - having a name matching the mask has to be contiguous for the - channel to be known by all these servers. Channel masks are best - used in conjunction with server hostmasking [IRC-SERVER]. - -2.3 Channel Properties - - Each channel has its own properties, which are defined by channel - modes. Channel modes can be manipulated by the channel members. The - modes affect the way servers manage the channels. - - Channels with '+' as prefix do not support channel modes. This means - that all the modes are unset, with the exception of the 't' channel - flag which is set. - -2.4 Privileged Channel Members - - In order for the channel members to keep some control over a channel, - and some kind of sanity, some channel members are privileged. Only - these members are allowed to perform the following actions on the - channel: - - INVITE - Invite a client to an invite-only channel (mode +i) - KICK - Eject a client from the channel - MODE - Change the channel's mode, as well as - members' privileges - PRIVMSG - Sending messages to the channel (mode +n, +m, +v) - TOPIC - Change the channel topic in a mode +t channel - - - - - - -Kalt Informational [Page 4] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - -2.4.1 Channel Operators - - The channel operators (also referred to as a "chop" or "chanop") on a - given channel are considered to 'own' that channel. Ownership of a - channel is shared among channel operators. - - Channel operators are identified by the '@' symbol next to their - nickname whenever it is associated with a channel (i.e., replies to - the NAMES, WHO and WHOIS commands). - - Since channels starting with the character '+' as prefix do not - support channel modes, no member can therefore have the status of - channel operator. - -2.4.2 Channel Creator - - A user who creates a channel with the character '!' as prefix is - identified as the "channel creator". Upon creation of the channel, - this user is also given channel operator status. - - In recognition of this status, the channel creators are endowed with - the ability to toggle certain modes of the channel which channel - operators may not manipulate. - - A "channel creator" can be distinguished from a channel operator by - issuing the proper MODE command. See the "IRC Client Protocol" - [IRC-CLIENT] for more information on this topic. - -3. Channel lifetime - - In regard to the lifetime of a channel, there are typically two - groups of channels: standard channels which prefix is either '&', '#' - or '+', and "safe channels" which prefix is '!'. - -3.1 Standard channels - - These channels are created implicitly when the first user joins it, - and cease to exist when the last user leaves it. While the channel - exists, any client can reference the channel using the name of the - channel. - - The user creating a channel automatically becomes channel operator - with the notable exception of channels which name is prefixed by the - character '+', see section 4 (Channel modes). See section 2.4.1 - (Channel Operators) for more details on this title. - - - - - - -Kalt Informational [Page 5] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - In order to avoid the creation of duplicate channels (typically when - the IRC network becomes disjoint because of a split between two - servers), channel names SHOULD NOT be allowed to be reused by a user - if a channel operator (See Section 2.4.1 (Channel Operators)) has - recently left the channel because of a network split. If this - happens, the channel name is temporarily unavailable. The duration - while a channel remains unavailable should be tuned on a per IRC - network basis. It is important to note that this prevents local - users from creating a channel using the same name, but does not - prevent the channel to be recreated by a remote user. The latter - typically happens when the IRC network rejoins. Obviously, this - mechanism only makes sense for channels which name begins with the - character '#', but MAY be used for channels which name begins with - the character '+'. This mechanism is commonly known as "Channel - Delay". - -3.2 Safe Channels - - Unlike other channels, "safe channels" are not implicitly created. A - user wishing to create such a channel MUST request the creation by - sending a special JOIN command to the server in which the channel - identifier (then unknown) is replaced by the character '!'. The - creation process for this type of channel is strictly controlled. - The user only chooses part of the channel name (known as the channel - "short name"), the server automatically prepends the user provided - name with a channel identifier consisting of five (5) characters. - The channel name resulting from the combination of these two elements - is unique, making the channel safe from abuses based on network - splits. - - The user who creates such a channel automatically becomes "channel - creator". See section 2.4.2 (Channel Creator) for more details on - this title. - - A server MUST NOT allow the creation of a new channel if another - channel with the same short name exists; or if another channel with - the same short name existed recently AND any of its member(s) left - because of a network split. Such channel ceases to exist after last - user leaves AND no other member recently left the channel because of - a network split. - - Unlike the mechanism described in section 5.2.2 (Channel Delay), in - this case, channel names do not become unavailable: these channels - may continue to exist after the last user left. Only the user - creating the channel becomes "channel creator", users joining an - existing empty channel do not automatically become "channel creator" - nor "channel operator". - - - - -Kalt Informational [Page 6] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - To ensure the uniqueness of the channel names, the channel identifier - created by the server MUST follow specific rules. For more details - on this, see section 5.2.1 (Channel Identifier). - -4. Channel Modes - - The various modes available for channels are as follows: - - O - give "channel creator" status; - o - give/take channel operator privilege; - v - give/take the voice privilege; - - a - toggle the anonymous channel flag; - i - toggle the invite-only channel flag; - m - toggle the moderated channel; - n - toggle the no messages to channel from clients on the - outside; - q - toggle the quiet channel flag; - p - toggle the private channel flag; - s - toggle the secret channel flag; - r - toggle the server reop channel flag; - t - toggle the topic settable by channel operator only flag; - - k - set/remove the channel key (password); - l - set/remove the user limit to channel; - - b - set/remove ban mask to keep users out; - e - set/remove an exception mask to override a ban mask; - I - set/remove an invitation mask to automatically override - the invite-only flag; - - Unless mentioned otherwise below, all these modes can be manipulated - by "channel operators" by using the MODE command defined in "IRC - Client Protocol" [IRC-CLIENT]. - -4.1 Member Status - - The modes in this category take a channel member nickname as argument - and affect the privileges given to this user. - -4.1.1 "Channel Creator" Status - - The mode 'O' is only used in conjunction with "safe channels" and - SHALL NOT be manipulated by users. Servers use it to give the user - creating the channel the status of "channel creator". - - - - - - -Kalt Informational [Page 7] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - -4.1.2 Channel Operator Status - - The mode 'o' is used to toggle the operator status of a channel - member. - -4.1.3 Voice Privilege - - The mode 'v' is used to give and take voice privilege to/from a - channel member. Users with this privilege can talk on moderated - channels. (See section 4.2.3 (Moderated Channel Flag). - -4.2 Channel Flags - - The modes in this category are used to define properties which - affects how channels operate. - -4.2.1 Anonymous Flag - - The channel flag 'a' defines an anonymous channel. This means that - when a message sent to the channel is sent by the server to users, - and the origin is a user, then it MUST be masked. To mask the - message, the origin is changed to "anonymous!anonymous@anonymous." - (e.g., a user with the nickname "anonymous", the username "anonymous" - and from a host called "anonymous."). Because of this, servers MUST - forbid users from using the nickname "anonymous". Servers MUST also - NOT send QUIT messages for users leaving such channels to the other - channel members but generate a PART message instead. - - On channels with the character '&' as prefix, this flag MAY be - toggled by channel operators, but on channels with the character '!' - as prefix, this flag can be set (but SHALL NOT be unset) by the - "channel creator" only. This flag MUST NOT be made available on - other types of channels. - - Replies to the WHOIS, WHO and NAMES commands MUST NOT reveal the - presence of other users on channels for which the anonymous flag is - set. - -4.2.2 Invite Only Flag - - When the channel flag 'i' is set, new members are only accepted if - their mask matches Invite-list (See section 4.3.2) or they have been - invited by a channel operator. This flag also restricts the usage of - the INVITE command (See "IRC Client Protocol" [IRC-CLIENT]) to - channel operators. - - - - - - -Kalt Informational [Page 8] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - -4.2.3 Moderated Channel Flag - - The channel flag 'm' is used to control who may speak on a channel. - When it is set, only channel operators, and members who have been - given the voice privilege may send messages to the channel. - - This flag only affects users. - -4.2.4 No Messages To Channel From Clients On The Outside - - When the channel flag 'n' is set, only channel members MAY send - messages to the channel. - - This flag only affects users. - -4.2.5 Quiet Channel - - The channel flag 'q' is for use by servers only. When set, it - restricts the type of data sent to users about the channel - operations: other user joins, parts and nick changes are not sent. - From a user's point of view, the channel contains only one user. - - This is typically used to create special local channels on which the - server sends notices related to its operations. This was used as a - more efficient and flexible way to replace the user mode 's' defined - in RFC 1459 [IRC]. - -4.2.6 Private and Secret Channels - - The channel flag 'p' is used to mark a channel "private" and the - channel flag 's' to mark a channel "secret". Both properties are - similar and conceal the existence of the channel from other users. - - This means that there is no way of getting this channel's name from - the server without being a member. In other words, these channels - MUST be omitted from replies to queries like the WHOIS command. - - When a channel is "secret", in addition to the restriction above, the - server will act as if the channel does not exist for queries like the - TOPIC, LIST, NAMES commands. Note that there is one exception to - this rule: servers will correctly reply to the MODE command. - Finally, secret channels are not accounted for in the reply to the - LUSERS command (See "Internet Relay Chat: Client Protocol" [IRC- - CLIENT]) when the parameter is specified. - - - - - - - -Kalt Informational [Page 9] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - The channel flags 'p' and 's' MUST NOT both be set at the same time. - If a MODE message originating from a server sets the flag 'p' and the - flag 's' is already set for the channel, the change is silently - ignored. This should only happen during a split healing phase - (mentioned in the "IRC Server Protocol" document [IRC-SERVER]). - -4.2.7 Server Reop Flag - - The channel flag 'r' is only available on channels which name begins - with the character '!' and MAY only be toggled by the "channel - creator". - - This flag is used to prevent a channel from having no channel - operator for an extended period of time. When this flag is set, any - channel that has lost all its channel operators for longer than the - "reop delay" period triggers a mechanism in servers to reop some or - all of the channel inhabitants. This mechanism is described more in - detail in section 5.2.4 (Channel Reop Mechanism). - -4.2.8 Topic - - The channel flag 't' is used to restrict the usage of the TOPIC - command to channel operators. - -4.2.9 User Limit - - A user limit may be set on channels by using the channel flag 'l'. - When the limit is reached, servers MUST forbid their local users to - join the channel. - - The value of the limit MUST only be made available to the channel - members in the reply sent by the server to a MODE query. - -4.2.10 Channel Key - - When a channel key is set (by using the mode 'k'), servers MUST - reject their local users request to join the channel unless this key - is given. - - The channel key MUST only be made visible to the channel members in - the reply sent by the server to a MODE query. - -4.3 Channel Access Control - - The last category of modes is used to control access to the channel, - they take a mask as argument. - - - - - -Kalt Informational [Page 10] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - In order to reduce the size of the global database for control access - modes set for channels, servers MAY put a maximum limit on the number - of such modes set for a particular channel. If such restriction is - imposed, it MUST only affect user requests. The limit SHOULD be - homogeneous on a per IRC network basis. - -4.3.1 Channel Ban and Exception - - When a user requests to join a channel, his local server checks if - the user's address matches any of the ban masks set for the channel. - If a match is found, the user request is denied unless the address - also matches an exception mask set for the channel. - - Servers MUST NOT allow a channel member who is banned from the - channel to speak on the channel, unless this member is a channel - operator or has voice privilege. (See Section 4.1.3 (Voice - Privilege)). - - A user who is banned from a channel and who carries an invitation - sent by a channel operator is allowed to join the channel. - -4.3.2 Channel Invitation - - For channels which have the invite-only flag set (See Section 4.2.2 - (Invite Only Flag)), users whose address matches an invitation mask - set for the channel are allowed to join the channel without any - invitation. - -5. Current Implementations - - The only current implementation of these rules as part of the IRC - protocol is the IRC server, version 2.10. - - The rest of this section deals with issues that are mostly of - importance to those who wish to implement a server but some parts may - also be of interest for client writers. - -5.1 Tracking Recently Used Channels - - This mechanism is commonly known as "Channel Delay" and generally - only applies to channels which names is prefixed with the character - '#' (See Section 3.1 "Standard channels"). - - When a network split occurs, servers SHOULD keep track of which - channels lost a "channel operator" as the result of the break. These - channels are then in a special state which lasts for a certain period - of time. In this particular state, the channels cannot cease to - - - - -Kalt Informational [Page 11] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - exist. If all the channel members leave the channel, the channel - becomes unavailable: the server local clients cannot join the channel - as long as it is empty. - - Once a channel is unavailable, it will become available again either - because a remote user has joined the channel (most likely because the - network is healing), or because the delay period has expired (in - which case the channel ceases to exist and may be re-created). - - The duration for which a channel death is delayed SHOULD be set - considering many factors among which are the size (user wise) of the - IRC network, and the usual duration of network splits. It SHOULD be - uniform on all servers for a given IRC network. - -5.2 Safe Channels - - This document introduces the notion of "safe channels". These - channels have a name prefixed with the character '!' and great effort - is made to avoid collisions in this name space. Collisions are not - impossible, however they are very unlikely. - -5.2.1 Channel Identifier - - The channel identifier is a function of the time. The current time - (as defined under UNIX by the number of seconds elapsed since - 00:00:00 GMT, January 1, 1970) is converted in a string of five (5) - characters using the following base: - "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" (each character has a decimal - value starting from 0 for 'A' to 35 for '0'). - - The channel identifier therefore has a periodicity of 36^5 seconds - (about 700 days). - -5.2.2 Channel Delay - - These channels MUST be subject to the "channel delay" mechanism - described in section 5.1 (Channel Delay). However, the mechanism is - slightly adapted to fit better. - - Servers MUST keep track of all such channels which lose members as - the result of a network split, no matter whether the user is a - "channel operator" or not. - - However, these channels do NOT ever become unavailable, it is always - possible to join them even when they are empty. - - - - - - -Kalt Informational [Page 12] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - -5.2.3 Abuse Window - - Because the periodicity is so long, attacks on a particular channel - (name) may only occur once in a very long while. However, with luck - and patience, it is still possible for a user to cause a channel - collision. In order to avoid this, servers MUST "look in the future" - and keep a list of channel names which identifier is about to be used - (in the coming few days for example). Such list should remain small, - not be a burden for servers to maintain and be used to avoid channel - collisions by preventing the re-creation of such channel for a longer - period of time than channel delay does. - - Eventually a server MAY choose to extend this procedure to forbid - creation of channels with the same shortname only (then ignoring the - channel identifier). - -5.2.4 Preserving Sanity In The Name Space - - The combination of the mechanisms described in sections 5.2.2 and - 5.2.3 makes it quite difficult for a user to create a channel - collision. However, another type of abuse consists of creating many - channels having the same shortname, but different identifiers. To - prevent this from happening, servers MUST forbid the creation of a - new channel which has the same shortname of a channel currently - existing. - -5.2.5 Server Reop Mechanism - - When a channel has been opless for longer than the "reop delay" - period and has the channel flag 'r' set (See Section 4.2.7 (Server - Reop Flag)), IRC servers are responsible for giving the channel - operator status randomly to some of the members. - - The exact logic used for this mechanism by the current implementation - is described below. Servers MAY use a different logic, but that it - is strongly RECOMMENDED that all servers use the same logic on a - particular IRC network to maintain coherence as well as fairness. - For the same reason, the "reop delay" SHOULD be uniform on all - servers for a given IRC network. As for the "channel delay", the - value of the "reop delay" SHOULD be set considering many factors - among which are the size (user wise) of the IRC network, and the - usual duration of network splits. - - a) the reop mechanism is triggered after a random time following the - expiration of the "reop delay". This should limit the eventuality - of the mechanism being triggered at the same time (for the same - channel) on two separate servers. - - - - -Kalt Informational [Page 13] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - b) If the channel is small (five (5) users or less), and the "channel - delay" for this channel has expired, - Then reop all channel members if at least one member is local to - the server. - - c) If the channel is small (five (5) users or less), and the "channel - delay" for this channel has expired, and the "reop delay" has - expired for longer than its value, - Then reop all channel members. - - d) For other cases, reop at most one member on the channel, based on - some method build into the server. If you don't reop a member, the - method should be such that another server will probably op - someone. The method SHOULD be the same over the whole network. A - good heuristic could be just random reop. - (The current implementation actually tries to choose a member - local to the server who has not been idle for too long, eventually - postponing action, therefore letting other servers have a chance - to find a "not too idle" member. This is over complicated due to - the fact that servers only know the "idle" time of their local - users) - -6. Current problems - - There are a number of recognized problems with the way IRC channels - are managed. Some of these can be directly attributed to the rules - defined in this document, while others are the result of the - underlying "IRC Server Protocol" [IRC-SERVER]. Although derived from - RFC 1459 [IRC], this document introduces several novelties in an - attempt to solve some of the known problems. - -6.1 Labels - - This document defines one of the many labels used by the IRC - protocol. Although there are several distinct namespaces (based on - the channel name prefix), duplicates inside each of these are not - allowed. Currently, it is possible for users on different servers to - pick the label which may result in collisions (with the exception of - channels known to only one server where they can be averted). - -6.1.1 Channel Delay - - The channel delay mechanism described in section 5.1 (Tracking - Recently Used Channels) and used for channels prefixed with the - character '#' is a simple attempt at preventing collisions from - happening. Experience has shown that, under normal circumstances, it - - - - - -Kalt Informational [Page 14] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - is very efficient; however, it obviously has severe limitations - keeping it from being an adequate solution to the problem discussed - here. - -6.1.2 Safe Channels - - "Safe channels" described in section 3.2 (Safe Channels) are a better - way to prevent collisions from happening as it prevents users from - having total control over the label they choose. The obvious - drawback for such labels is that they are not user friendly. - However, it is fairly trivial for a client program to improve on - this. - -6.2 Mode Propagation Delays - - Because of network delays induced by the network, and because each - server on the path is REQUIRED to check the validity of mode changes - (e.g., user exists and has the right privileges), it is not unusual - for a MODE message to only affect part of the network, often creating - a discrepancy between servers on the current state of a channel. - - While this may seem easy to fix (by having only the original server - check the validity of mode changes), it was decided not to do so for - various reasons. One concern is that servers cannot trust each - other, and that a misbehaving servers can easily be detected. This - way of doing so also stops wave effects on channels which are out of - synch when mode changes are issued from different directions. - -6.3 Collisions And Channel Modes - - The "Internet Relay Chat: Server Protocol" document [IRC-SERVER] - describes how channel data is exchanged when two servers connect to - each other. Channel collisions (either legitimate or not) are - treated as inclusive events, meaning that the resulting channel has - for members all the users who are members of the channel on either - server prior to the connection. - - Similarly, each server sends the channel modes to the other one. - Therefore, each server also receives these channel modes. There are - three types of modes for a given channel: flags, masks, and data. - The first two types are easy to deal with as they are either set or - unset. If such a mode is set on one server, it MUST be set on the - other server as a result of the connection. - - - - - - - - -Kalt Informational [Page 15] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - - As topics are not sent as part of this exchange, they are not a - problem. However, channel modes 'l' and 'k' are exchanged, and if - they are set on both servers prior to the connection, there is no - mechanism to decide which of the two values takes precedence. It is - left up to the users to fix the resulting discrepancy. - -6.4 Resource Exhaustion - - The mode based on masks defined in section 4.3 make the IRC servers - (and network) vulnerable to a simple abuse of the system: a single - channel operator can set as many different masks as possible on a - particular channel. This can easily cause the server to waste - memory, as well as network bandwidth (since the info is propagated to - other servers). For this reason it is RECOMMENDED that a limit be - put on the number of such masks per channels as mentioned in section - 4.3. - - Moreover, more complex mechanisms MAY be used to avoid having - redundant masks set for the same channel. - -7. Security Considerations - -7.1 Access Control - - One of the main ways to control access to a channel is to use masks - which are based on the username and hostname of the user connections. - This mechanism can only be efficient and safe if the IRC servers have - an accurate way of authenticating user connections, and if users - cannot easily get around it. While it is in theory possible to - implement such a strict authentication mechanism, most IRC networks - (especially public networks) do not have anything like this in place - and provide little guaranty about the accuracy of the username and - hostname for a particular client connection. - - Another way to control access is to use a channel key, but since this - key is sent in plaintext, it is vulnerable to traditional man in the - middle attacks. - -7.2 Channel Privacy - - Because channel collisions are treated as inclusive events (See - Section 6.3), it is possible for users to join a channel overriding - its access control settings. This method has long been used by - individuals to "take over" channels by "illegitimately" gaining - channel operator status on the channel. The same method can be used - to find out the exact list of members of a channel, as well as to - eventually receive some of the messages sent to the channel. - - - - -Kalt Informational [Page 16] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - -7.3 Anonymity - - The anonymous channel flag (See Section 4.2.1) can be used to render - all users on such channel "anonymous" by presenting all messages to - the channel as originating from a pseudo user which nickname is - "anonymous". This is done at the client-server level, and no - anonymity is provided at the server-server level. - - It should be obvious to readers, that the level of anonymity offered - is quite poor and insecure, and that clients SHOULD display strong - warnings for users joining such channels. - -8. Current support and availability - - Mailing lists for IRC related discussion: - General discussion: ircd-users@irc.org - Protocol development: ircd-dev@irc.org - - Software implementations: - ftp://ftp.irc.org/irc/server - ftp://ftp.funet.fi/pub/unix/irc - ftp://coombs.anu.edu.au/pub/irc - - Newsgroup: alt.irc - -9. Acknowledgements - - Parts of this document were copied from the RFC 1459 [IRC] which - first formally documented the IRC Protocol. It has also benefited - from many rounds of review and comments. In particular, the - following people have made significant contributions to this - document: - - Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa - Ruokonen, Magnus Tjernstrom, Stefan Zehl. - - - - - - - - - - - - - - - - -Kalt Informational [Page 17] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - -10. References - - [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate - Requirement Levels", BCP 14, RFC 2119, March 1997. - - [IRC] Oikarinen, J. and D. Reed, "Internet Relay Chat - Protocol", RFC 1459, May 1993. - - [IRC-ARCH] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810, - April 2000. - - [IRC-CLIENT] Kalt, C., "Internet Relay Chat: Client Protocol", RFC - 2812, April 2000. - - [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC - 2813, April 2000. - -11. Author's Address - - Christophe Kalt - 99 Teaneck Rd, Apt #117 - Ridgefield Park, NJ 07660 - USA - - EMail: kalt@stealth.net - - - - - - - - - - - - - - - - - - - - - - - - - - -Kalt Informational [Page 18] - -RFC 2811 Internet Relay Chat: Channel Management April 2000 - - -12. Full Copyright Statement - - Copyright (C) The Internet Society (2000). All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that the above copyright notice and this paragraph are - included on all such copies and derivative works. However, this - document itself may not be modified in any way, such as by removing - the copyright notice or references to the Internet Society or other - Internet organizations, except as needed for the purpose of - developing Internet standards in which case the procedures for - copyrights defined in the Internet Standards process must be - followed, or as required to translate it into languages other than - English. - - The limited permissions granted above are perpetual and will not be - revoked by the Internet Society or its successors or assigns. - - This document and the information contained herein is provided on an - "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING - TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION - HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -Acknowledgement - - Funding for the RFC Editor function is currently provided by the - Internet Society. - - - - - - - - - - - - - - - - - - - -Kalt Informational [Page 19] - diff --git a/vendor/github.com/fluffle/goirc/doc/rfc2812.txt b/vendor/github.com/fluffle/goirc/doc/rfc2812.txt deleted file mode 100644 index 7f1b162..0000000 --- a/vendor/github.com/fluffle/goirc/doc/rfc2812.txt +++ /dev/null @@ -1,3531 +0,0 @@ - - - - - - -Network Working Group C. Kalt -Request for Comments: 2812 April 2000 -Updates: 1459 -Category: Informational - - - Internet Relay Chat: Client Protocol - -Status of this Memo - - This memo provides information for the Internet community. It does - not specify an Internet standard of any kind. Distribution of this - memo is unlimited. - -Copyright Notice - - Copyright (C) The Internet Society (2000). All Rights Reserved. - -IESG NOTE: - - The IRC protocol itself enables several possibilities of transferring - data between clients, and just like with other transfer mechanisms - like email, the receiver of the data has to be careful about how the - data is handled. For more information on security issues with the IRC - protocol, see for example http://www.irchelp.org/irchelp/security/. - -Abstract - - The IRC (Internet Relay Chat) protocol is for use with text based - conferencing; the simplest client being any socket program capable of - connecting to the server. - - This document defines the Client Protocol, and assumes that the - reader is familiar with the IRC Architecture [IRC-ARCH]. - -Table of Contents - - 1. Labels ..................................................... 3 - 1.1 Servers ................................................ 3 - 1.2 Clients ................................................ 3 - 1.2.1 Users ............................................. 4 - 1.2.1.1 Operators .................................... 4 - 1.2.2 Services .......................................... 4 - 1.3 Channels ............................................... 4 - 2. The IRC Client Specification ............................... 5 - 2.1 Overview ............................................... 5 - 2.2 Character codes ........................................ 5 - 2.3 Messages ............................................... 5 - - - -Kalt Informational [Page 1] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - 2.3.1 Message format in Augmented BNF ................... 6 - 2.4 Numeric replies ........................................ 8 - 2.5 Wildcard expressions ................................... 9 - 3. Message Details ............................................ 9 - 3.1 Connection Registration ................................ 10 - 3.1.1 Password message .................................. 10 - 3.1.2 Nick message ...................................... 10 - 3.1.3 User message ...................................... 11 - 3.1.4 Oper message ...................................... 12 - 3.1.5 User mode message ................................. 12 - 3.1.6 Service message ................................... 13 - 3.1.7 Quit .............................................. 14 - 3.1.8 Squit ............................................. 15 - 3.2 Channel operations ..................................... 15 - 3.2.1 Join message ...................................... 16 - 3.2.2 Part message ...................................... 17 - 3.2.3 Channel mode message .............................. 18 - 3.2.4 Topic message ..................................... 19 - 3.2.5 Names message ..................................... 20 - 3.2.6 List message ...................................... 21 - 3.2.7 Invite message .................................... 21 - 3.2.8 Kick command ...................................... 22 - 3.3 Sending messages ....................................... 23 - 3.3.1 Private messages .................................. 23 - 3.3.2 Notice ............................................ 24 - 3.4 Server queries and commands ............................ 25 - 3.4.1 Motd message ...................................... 25 - 3.4.2 Lusers message .................................... 25 - 3.4.3 Version message ................................... 26 - 3.4.4 Stats message ..................................... 26 - 3.4.5 Links message ..................................... 27 - 3.4.6 Time message ...................................... 28 - 3.4.7 Connect message ................................... 28 - 3.4.8 Trace message ..................................... 29 - 3.4.9 Admin command ..................................... 30 - 3.4.10 Info command ...................................... 31 - 3.5 Service Query and Commands ............................. 31 - 3.5.1 Servlist message .................................. 31 - 3.5.2 Squery ............................................ 32 - 3.6 User based queries ..................................... 32 - 3.6.1 Who query ......................................... 32 - 3.6.2 Whois query ....................................... 33 - 3.6.3 Whowas ............................................ 34 - 3.7 Miscellaneous messages ................................. 34 - 3.7.1 Kill message ...................................... 35 - 3.7.2 Ping message ...................................... 36 - 3.7.3 Pong message ...................................... 37 - 3.7.4 Error ............................................. 37 - - - -Kalt Informational [Page 2] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - 4. Optional features .......................................... 38 - 4.1 Away ................................................... 38 - 4.2 Rehash message ......................................... 39 - 4.3 Die message ............................................ 39 - 4.4 Restart message ........................................ 40 - 4.5 Summon message ......................................... 40 - 4.6 Users .................................................. 41 - 4.7 Operwall message ....................................... 41 - 4.8 Userhost message ....................................... 42 - 4.9 Ison message ........................................... 42 - 5. Replies .................................................... 43 - 5.1 Command responses ...................................... 43 - 5.2 Error Replies .......................................... 53 - 5.3 Reserved numerics ...................................... 59 - 6. Current implementations .................................... 60 - 7. Current problems ........................................... 60 - 7.1 Nicknames .............................................. 60 - 7.2 Limitation of wildcards ................................ 61 - 7.3 Security considerations ................................ 61 - 8. Current support and availability ........................... 61 - 9. Acknowledgements ........................................... 61 - 10. References ................................................ 62 - 11. Author's Address .......................................... 62 - 12. Full Copyright Statement .................................. 63 - -1. Labels - - This section defines the identifiers used for the various components - of the IRC protocol. - -1.1 Servers - - Servers are uniquely identified by their name, which has a maximum - length of sixty three (63) characters. See the protocol grammar - rules (section 2.3.1) for what may and may not be used in a server - name. - -1.2 Clients - - For each client all servers MUST have the following information: a - netwide unique identifier (whose format depends on the type of - client) and the server which introduced the client. - - - - - - - - - -Kalt Informational [Page 3] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -1.2.1 Users - - Each user is distinguished from other users by a unique nickname - having a maximum length of nine (9) characters. See the protocol - grammar rules (section 2.3.1) for what may and may not be used in a - nickname. - - While the maximum length is limited to nine characters, clients - SHOULD accept longer strings as they may become used in future - evolutions of the protocol. - -1.2.1.1 Operators - - To allow a reasonable amount of order to be kept within the IRC - network, a special class of users (operators) is allowed to perform - general maintenance functions on the network. Although the powers - granted to an operator can be considered as 'dangerous', they are - nonetheless often necessary. Operators SHOULD be able to perform - basic network tasks such as disconnecting and reconnecting servers as - needed. In recognition of this need, the protocol discussed herein - provides for operators only to be able to perform such functions. - See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT). - - A more controversial power of operators is the ability to remove a - user from the connected network by 'force', i.e., operators are able - to close the connection between any client and server. The - justification for this is very delicate since its abuse is both - destructive and annoying, and its benefits close to inexistent. For - further details on this type of action, see section 3.7.1 (KILL). - -1.2.2 Services - - Each service is distinguished from other services by a service name - composed of a nickname and a server name. As for users, the nickname - has a maximum length of nine (9) characters. See the protocol - grammar rules (section 2.3.1) for what may and may not be used in a - nickname. - -1.3 Channels - - Channels names are strings (beginning with a '&', '#', '+' or '!' - character) of length up to fifty (50) characters. Apart from the - requirement that the first character is either '&', '#', '+' or '!', - the only restriction on a channel name is that it SHALL NOT contain - any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space - is used as parameter separator and command is used as a list item - separator by the protocol). A colon (':') can also be used as a - delimiter for the channel mask. Channel names are case insensitive. - - - -Kalt Informational [Page 4] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - See the protocol grammar rules (section 2.3.1) for the exact syntax - of a channel name. - - Each prefix characterizes a different channel type. The definition - of the channel types is not relevant to the client-server protocol - and thus it is beyond the scope of this document. More details can - be found in "Internet Relay Chat: Channel Management" [IRC-CHAN]. - -2. The IRC Client Specification - -2.1 Overview - - The protocol as described herein is for use only with client to - server connections when the client registers as a user. - -2.2 Character codes - - No specific character set is specified. The protocol is based on a - set of codes which are composed of eight (8) bits, making up an - octet. Each message may be composed of any number of these octets; - however, some octet values are used for control codes, which act as - message delimiters. - - Regardless of being an 8-bit protocol, the delimiters and keywords - are such that protocol is mostly usable from US-ASCII terminal and a - telnet connection. - - Because of IRC's Scandinavian origin, the characters {}|^ are - considered to be the lower case equivalents of the characters []\~, - respectively. This is a critical issue when determining the - equivalence of two nicknames or channel names. - -2.3 Messages - - Servers and clients send each other messages, which may or may not - generate a reply. If the message contains a valid command, as - described in later sections, the client should expect a reply as - specified but it is not advised to wait forever for the reply; client - to server and server to server communication is essentially - asynchronous by nature. - - Each IRC message may consist of up to three main parts: the prefix - (OPTIONAL), the command, and the command parameters (maximum of - fifteen (15)). The prefix, command, and all parameters are separated - by one ASCII space character (0x20) each. - - - - - - -Kalt Informational [Page 5] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - The presence of a prefix is indicated with a single leading ASCII - colon character (':', 0x3b), which MUST be the first character of the - message itself. There MUST be NO gap (whitespace) between the colon - and the prefix. The prefix is used by servers to indicate the true - origin of the message. If the prefix is missing from the message, it - is assumed to have originated from the connection from which it was - received from. Clients SHOULD NOT use a prefix when sending a - message; if they use one, the only valid prefix is the registered - nickname associated with the client. - - The command MUST either be a valid IRC command or a three (3) digit - number represented in ASCII text. - - IRC messages are always lines of characters terminated with a CR-LF - (Carriage Return - Line Feed) pair, and these messages SHALL NOT - exceed 512 characters in length, counting all characters including - the trailing CR-LF. Thus, there are 510 characters maximum allowed - for the command and its parameters. There is no provision for - continuation of message lines. See section 6 for more details about - current implementations. - -2.3.1 Message format in Augmented BNF - - The protocol messages must be extracted from the contiguous stream of - octets. The current solution is to designate two characters, CR and - LF, as message separators. Empty messages are silently ignored, - which permits use of the sequence CR-LF between messages without - extra problems. - - The extracted message is parsed into the components , - and list of parameters (). - - The Augmented BNF representation for this is: - - message = [ ":" prefix SPACE ] command [ params ] crlf - prefix = servername / ( nickname [ [ "!" user ] "@" host ] ) - command = 1*letter / 3digit - params = *14( SPACE middle ) [ SPACE ":" trailing ] - =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ] - - nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF - ; any octet except NUL, CR, LF, " " and ":" - middle = nospcrlfcl *( ":" / nospcrlfcl ) - trailing = *( ":" / " " / nospcrlfcl ) - - SPACE = %x20 ; space character - crlf = %x0D %x0A ; "carriage return" "linefeed" - - - - -Kalt Informational [Page 6] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - NOTES: - 1) After extracting the parameter list, all parameters are equal - whether matched by or . is just a - syntactic trick to allow SPACE within the parameter. - - 2) The NUL (%x00) character is not special in message framing, and - basically could end up inside a parameter, but it would cause - extra complexities in normal C string handling. Therefore, NUL - is not allowed within messages. - - Most protocol messages specify additional semantics and syntax for - the extracted parameter strings dictated by their position in the - list. For example, many server commands will assume that the first - parameter after the command is the list of targets, which can be - described with: - - target = nickname / server - msgtarget = msgto *( "," msgto ) - msgto = channel / ( user [ "%" host ] "@" servername ) - msgto =/ ( user "%" host ) / targetmask - msgto =/ nickname / ( nickname "!" user "@" host ) - channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring - [ ":" chanstring ] - servername = hostname - host = hostname / hostaddr - hostname = shortname *( "." shortname ) - shortname = ( letter / digit ) *( letter / digit / "-" ) - *( letter / digit ) - ; as specified in RFC 1123 [HNAME] - hostaddr = ip4addr / ip6addr - ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit - ip6addr = 1*hexdigit 7( ":" 1*hexdigit ) - ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr - nickname = ( letter / special ) *8( letter / digit / special / "-" ) - targetmask = ( "$" / "#" ) mask - ; see details on allowed masks in section 3.3.1 - chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B - chanstring =/ %x2D-39 / %x3B-FF - ; any octet except NUL, BELL, CR, LF, " ", "," and ":" - channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 ) - - - - - - - - - - - -Kalt Informational [Page 7] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Other parameter syntaxes are: - - user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF ) - ; any octet except NUL, CR, LF, " " and "@" - key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F ) - ; any 7-bit US_ASCII character, - ; except NUL, CR, LF, FF, h/v TABs, and " " - letter = %x41-5A / %x61-7A ; A-Z / a-z - digit = %x30-39 ; 0-9 - hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F" - special = %x5B-60 / %x7B-7D - ; "[", "]", "\", "`", "_", "^", "{", "|", "}" - - NOTES: - 1) The syntax is given here for the sole purpose of - indicating the format to follow for IP addresses. This - reflects the fact that the only available implementations of - this protocol uses TCP/IP as underlying network protocol but is - not meant to prevent other protocols to be used. - - 2) has a maximum length of 63 characters. This is a - limitation of the protocol as internet hostnames (in - particular) can be longer. Such restriction is necessary - because IRC messages are limited to 512 characters in length. - Clients connecting from a host which name is longer than 63 - characters are registered using the host (numeric) address - instead of the host name. - - 3) Some parameters used in the following sections of this - documents are not defined here as there is nothing specific - about them besides the name that is used for convenience. - These parameters follow the general syntax defined for - . - -2.4 Numeric replies - - Most of the messages sent to the server generate a reply of some - sort. The most common reply is the numeric reply, used for both - errors and normal replies. The numeric reply MUST be sent as one - message consisting of the sender prefix, the three-digit numeric, and - the target of the reply. A numeric reply is not allowed to originate - from a client. In all other respects, a numeric reply is just like a - normal message, except that the keyword is made up of 3 numeric - digits rather than a string of letters. A list of different replies - is supplied in section 5 (Replies). - - - - - - -Kalt Informational [Page 8] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -2.5 Wildcard expressions - - When wildcards are allowed in a string, it is referred as a "mask". - - For string matching purposes, the protocol allows the use of two - special characters: '?' (%x3F) to match one and only one character, - and '*' (%x2A) to match any number of any characters. These two - characters can be escaped using the character '\' (%x5C). - - The Augmented BNF syntax for this is: - - mask = *( nowild / noesc wildone / noesc wildmany ) - wildone = %x3F - wildmany = %x2A - nowild = %x01-29 / %x2B-3E / %x40-FF - ; any octet except NUL, "*", "?" - noesc = %x01-5B / %x5D-FF - ; any octet except NUL and "\" - matchone = %x01-FF - ; matches wildone - matchmany = *matchone - ; matches wildmany - - Examples: - - a?c ; Matches any string of 3 characters in length starting - with "a" and ending with "c" - - a*c ; Matches any string of at least 2 characters in length - starting with "a" and ending with "c" - -3. Message Details - - On the following pages there are descriptions of each message - recognized by the IRC server and client. All commands described in - this section MUST be implemented by any server for this protocol. - - Where the reply ERR_NOSUCHSERVER is returned, it means that the - target of the message could not be found. The server MUST NOT send - any other replies after this error for that command. - - The server to which a client is connected is required to parse the - complete message, and return any appropriate errors. - - If multiple parameters is presented, then each MUST be checked for - validity and appropriate responses MUST be sent back to the client. - In the case of incorrect messages which use parameter lists with - comma as an item separator, a reply MUST be sent for each item. - - - -Kalt Informational [Page 9] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.1 Connection Registration - - The commands described here are used to register a connection with an - IRC server as a user as well as to correctly disconnect. - - A "PASS" command is not required for a client connection to be - registered, but it MUST precede the latter of the NICK/USER - combination (for a user connection) or the SERVICE command (for a - service connection). The RECOMMENDED order for a client to register - is as follows: - - 1. Pass message - 2. Nick message 2. Service message - 3. User message - - Upon success, the client will receive an RPL_WELCOME (for users) or - RPL_YOURESERVICE (for services) message indicating that the - connection is now registered and known the to the entire IRC network. - The reply message MUST contain the full client identifier upon which - it was registered. - -3.1.1 Password message - - Command: PASS - Parameters: - - The PASS command is used to set a 'connection password'. The - optional password can and MUST be set before any attempt to register - the connection is made. Currently this requires that user send a - PASS command before sending the NICK/USER combination. - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED - - Example: - - PASS secretpasswordhere - -3.1.2 Nick message - - - Command: NICK - Parameters: - - NICK command is used to give user a nickname or change the existing - one. - - - - -Kalt Informational [Page 10] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Numeric Replies: - - ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME - ERR_NICKNAMEINUSE ERR_NICKCOLLISION - ERR_UNAVAILRESOURCE ERR_RESTRICTED - - Examples: - - NICK Wiz ; Introducing new nick "Wiz" if session is - still unregistered, or user changing his - nickname to "Wiz" - - :WiZ!jto@tolsun.oulu.fi NICK Kilroy - ; Server telling that WiZ changed his - nickname to Kilroy. - -3.1.3 User message - - Command: USER - Parameters: - - The USER command is used at the beginning of connection to specify - the username, hostname and realname of a new user. - - The parameter should be a numeric, and can be used to - automatically set user modes when registering with the server. This - parameter is a bitmask, with only 2 bits having any signification: if - the bit 2 is set, the user mode 'w' will be set and if the bit 3 is - set, the user mode 'i' will be set. (See Section 3.1.5 "User - Modes"). - - The may contain space characters. - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED - - Example: - - USER guest 0 * :Ronnie Reagan ; User registering themselves with a - username of "guest" and real name - "Ronnie Reagan". - - USER guest 8 * :Ronnie Reagan ; User registering themselves with a - username of "guest" and real name - "Ronnie Reagan", and asking to be set - invisible. - - - - -Kalt Informational [Page 11] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.1.4 Oper message - - Command: OPER - Parameters: - - A normal user uses the OPER command to obtain operator privileges. - The combination of and are REQUIRED to gain - Operator privileges. Upon success, the user will receive a MODE - message (see section 3.1.5) indicating the new user modes. - - Numeric Replies: - - ERR_NEEDMOREPARAMS RPL_YOUREOPER - ERR_NOOPERHOST ERR_PASSWDMISMATCH - - Example: - - OPER foo bar ; Attempt to register as an operator - using a username of "foo" and "bar" - as the password. - -3.1.5 User mode message - - Command: MODE - Parameters: - *( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) ) - - The user MODE's are typically changes which affect either how the - client is seen by others or what 'extra' messages the client is sent. - - A user MODE command MUST only be accepted if both the sender of the - message and the nickname given as a parameter are both the same. If - no other parameter is given, then the server will return the current - settings for the nick. - - The available modes are as follows: - - a - user is flagged as away; - i - marks a users as invisible; - w - user receives wallops; - r - restricted user connection; - o - operator flag; - O - local operator flag; - s - marks a user for receipt of server notices. - - Additional modes may be available later on. - - - - - -Kalt Informational [Page 12] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - The flag 'a' SHALL NOT be toggled by the user using the MODE command, - instead use of the AWAY command is REQUIRED. - - If a user attempts to make themselves an operator using the "+o" or - "+O" flag, the attempt SHOULD be ignored as users could bypass the - authentication mechanisms of the OPER command. There is no - restriction, however, on anyone `deopping' themselves (using "-o" or - "-O"). - - On the other hand, if a user attempts to make themselves unrestricted - using the "-r" flag, the attempt SHOULD be ignored. There is no - restriction, however, on anyone `deopping' themselves (using "+r"). - This flag is typically set by the server upon connection for - administrative reasons. While the restrictions imposed are left up - to the implementation, it is typical that a restricted user not be - allowed to change nicknames, nor make use of the channel operator - status on channels. - - The flag 's' is obsolete but MAY still be used. - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH - ERR_UMODEUNKNOWNFLAG RPL_UMODEIS - - Examples: - - MODE WiZ -w ; Command by WiZ to turn off - reception of WALLOPS messages. - - MODE Angel +i ; Command from Angel to make herself - invisible. - - MODE WiZ -o ; WiZ 'deopping' (removing operator - status). - -3.1.6 Service message - - Command: SERVICE - Parameters: - - - The SERVICE command to register a new service. Command parameters - specify the service nickname, distribution, type and info of a new - service. - - - - - - -Kalt Informational [Page 13] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - The parameter is used to specify the visibility of a - service. The service may only be known to servers which have a name - matching the distribution. For a matching server to have knowledge - of the service, the network path between that server and the server - on which the service is connected MUST be composed of servers which - names all match the mask. - - The parameter is currently reserved for future usage. - - Numeric Replies: - - ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS - ERR_ERRONEUSNICKNAME - RPL_YOURESERVICE RPL_YOURHOST - RPL_MYINFO - - Example: - - SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering - itself with a name of "dict". This - service will only be available on - servers which name matches "*.fr". - -3.1.7 Quit - - Command: QUIT - Parameters: [ ] - - A client session is terminated with a quit message. The server - acknowledges this by sending an ERROR message to the client. - - Numeric Replies: - - None. - - Example: - - QUIT :Gone to have lunch ; Preferred message format. - - :syrk!kalt@millennium.stealth.net QUIT :Gone to have lunch ; User - syrk has quit IRC to have lunch. - - - - - - - - - - -Kalt Informational [Page 14] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.1.8 Squit - - Command: SQUIT - Parameters: - - The SQUIT command is available only to operators. It is used to - disconnect server links. Also servers can generate SQUIT messages on - error conditions. A SQUIT message may also target a remote server - connection. In this case, the SQUIT message will simply be sent to - the remote server without affecting the servers in between the - operator and the remote server. - - The SHOULD be supplied by all operators who execute a SQUIT - for a remote server. The server ordered to disconnect its peer - generates a WALLOPS message with included, so that other - users may be aware of the reason of this action. - - Numeric replies: - - ERR_NOPRIVILEGES ERR_NOSUCHSERVER - ERR_NEEDMOREPARAMS - - Examples: - - SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server - tolson.oulu.fi to terminate its - connection with comment "Bad Link". - - :Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command - from Trillian from to disconnect - "cm22.eng.umd.edu" from the net with - comment "Server out of control". - -3.2 Channel operations - - This group of messages is concerned with manipulating channels, their - properties (channel modes), and their contents (typically users). - For this reason, these messages SHALL NOT be made available to - services. - - All of these messages are requests which will or will not be granted - by the server. The server MUST send a reply informing the user - whether the request was granted, denied or generated an error. When - the server grants the request, the message is typically sent back - (eventually reformatted) to the user with the prefix set to the user - itself. - - - - - -Kalt Informational [Page 15] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - The rules governing how channels are managed are enforced by the - servers. These rules are beyond the scope of this document. More - details are found in "Internet Relay Chat: Channel Management" [IRC- - CHAN]. - -3.2.1 Join message - - Command: JOIN - Parameters: ( *( "," ) [ *( "," ) ] ) - / "0" - - The JOIN command is used by a user to request to start listening to - the specific channel. Servers MUST be able to parse arguments in the - form of a list of target, but SHOULD NOT use lists when sending JOIN - messages to clients. - - Once a user has joined a channel, he receives information about - all commands his server receives affecting the channel. This - includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE. - This allows channel members to keep track of the other channel - members, as well as channel modes. - - If a JOIN is successful, the user receives a JOIN message as - confirmation and is then sent the channel's topic (using RPL_TOPIC) and - the list of users who are on the channel (using RPL_NAMREPLY), which - MUST include the user joining. - - Note that this message accepts a special argument ("0"), which is - a special request to leave all channels the user is currently a member - of. The server will process this message as if the user had sent - a PART command (See Section 3.2.2) for each channel he is a member - of. - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN - ERR_INVITEONLYCHAN ERR_BADCHANNELKEY - ERR_CHANNELISFULL ERR_BADCHANMASK - ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS - ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE - RPL_TOPIC - - Examples: - - JOIN #foobar ; Command to join channel #foobar. - - JOIN &foo fubar ; Command to join channel &foo using - key "fubar". - - - -Kalt Informational [Page 16] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - JOIN #foo,&bar fubar ; Command to join channel #foo using - key "fubar" and &bar using no key. - - JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using - key "fubar", and channel #bar using - key "foobar". - - JOIN #foo,#bar ; Command to join channels #foo and - #bar. - - JOIN 0 ; Leave all currently joined - channels. - - :WiZ!jto@tolsun.oulu.fi JOIN #Twilight_zone ; JOIN message from WiZ - on channel #Twilight_zone - -3.2.2 Part message - - Command: PART - Parameters: *( "," ) [ ] - - The PART command causes the user sending the message to be removed - from the list of active members for all given channels listed in the - parameter string. If a "Part Message" is given, this will be sent - instead of the default message, the nickname. This request is always - granted by the server. - - Servers MUST be able to parse arguments in the form of a list of - target, but SHOULD NOT use lists when sending PART messages to - clients. - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL - ERR_NOTONCHANNEL - - Examples: - - PART #twilight_zone ; Command to leave channel - "#twilight_zone" - - PART #oz-ops,&group5 ; Command to leave both channels - "&group5" and "#oz-ops". - - :WiZ!jto@tolsun.oulu.fi PART #playzone :I lost - ; User WiZ leaving channel - "#playzone" with the message "I - lost". - - - -Kalt Informational [Page 17] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.2.3 Channel mode message - - Command: MODE - Parameters: *( ( "-" / "+" ) * * ) - - The MODE command is provided so that users may query and change the - characteristics of a channel. For more details on available modes - and their uses, see "Internet Relay Chat: Channel Management" [IRC- - CHAN]. Note that there is a maximum limit of three (3) changes per - command for modes that take a parameter. - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_KEYSET - ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED - ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE - RPL_CHANNELMODEIS - RPL_BANLIST RPL_ENDOFBANLIST - RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST - RPL_INVITELIST RPL_ENDOFINVITELIST - RPL_UNIQOPIS - - The following examples are given to help understanding the syntax of - the MODE command, but refer to modes defined in "Internet Relay Chat: - Channel Management" [IRC-CHAN]. - - Examples: - - MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel - moderated and 'invite-only' with user - with a hostname matching *.fi - automatically invited. - - MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges - to Kilroy on channel #Finnish. - - MODE #Finnish +v Wiz ; Command to allow WiZ to speak on - #Finnish. - - MODE #Fins -s ; Command to remove 'secret' flag - from channel #Fins. - - MODE #42 +k oulu ; Command to set the channel key to - "oulu". - - MODE #42 -k oulu ; Command to remove the "oulu" - channel key on channel "#42". - - - - -Kalt Informational [Page 18] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - MODE #eu-opers +l 10 ; Command to set the limit for the - number of users on channel - "#eu-opers" to 10. - - :WiZ!jto@tolsun.oulu.fi MODE #eu-opers -l - ; User "WiZ" removing the limit for - the number of users on channel "#eu- - opers". - - MODE &oulu +b ; Command to list ban masks set for - the channel "&oulu". - - MODE &oulu +b *!*@* ; Command to prevent all users from - joining. - - MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu - ; Command to prevent any user from a - hostname matching *.edu from joining, - except if matching *.bu.edu - - MODE #bu +be *!*@*.edu *!*@*.bu.edu - ; Comment to prevent any user from a - hostname matching *.edu from joining, - except if matching *.bu.edu - - MODE #meditation e ; Command to list exception masks set - for the channel "#meditation". - - MODE #meditation I ; Command to list invitations masks - set for the channel "#meditation". - - MODE !12345ircd O ; Command to ask who the channel - creator for "!12345ircd" is - -3.2.4 Topic message - - Command: TOPIC - Parameters: [ ] - - The TOPIC command is used to change or view the topic of a channel. - The topic for channel is returned if there is no - given. If the parameter is present, the topic for that - channel will be changed, if this action is allowed for the user - requesting it. If the parameter is an empty string, the - topic for that channel will be removed. - - - - - - -Kalt Informational [Page 19] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL - RPL_NOTOPIC RPL_TOPIC - ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES - - Examples: - - :WiZ!jto@tolsun.oulu.fi TOPIC #test :New topic ; User Wiz setting the - topic. - - TOPIC #test :another topic ; Command to set the topic on #test - to "another topic". - - TOPIC #test : ; Command to clear the topic on - #test. - - TOPIC #test ; Command to check the topic for - #test. - -3.2.5 Names message - - Command: NAMES - Parameters: [ *( "," ) [ ] ] - - By using the NAMES command, a user can list all nicknames that are - visible to him. For more details on what is visible and what is not, - see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The - parameter specifies which channel(s) to return information - about. There is no error reply for bad channel names. - - If no parameter is given, a list of all channels and their - occupants is returned. At the end of this list, a list of users who - are visible but either not on any channel or not on a visible channel - are listed as being on `channel' "*". - - If the parameter is specified, the request is forwarded to - that server which will generate the reply. - - Wildcards are allowed in the parameter. - - Numerics: - - ERR_TOOMANYMATCHES ERR_NOSUCHSERVER - RPL_NAMREPLY RPL_ENDOFNAMES - - - - - - -Kalt Informational [Page 20] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - NAMES #twilight_zone,#42 ; Command to list visible users on - #twilight_zone and #42 - - NAMES ; Command to list all visible - channels and users - -3.2.6 List message - - Command: LIST - Parameters: [ *( "," ) [ ] ] - - The list command is used to list channels and their topics. If the - parameter is used, only the status of that channel is - displayed. - - If the parameter is specified, the request is forwarded to - that server which will generate the reply. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_TOOMANYMATCHES ERR_NOSUCHSERVER - RPL_LIST RPL_LISTEND - - Examples: - - LIST ; Command to list all channels. - - LIST #twilight_zone,#42 ; Command to list channels - #twilight_zone and #42 - -3.2.7 Invite message - - Command: INVITE - Parameters: - - The INVITE command is used to invite a user to a channel. The - parameter is the nickname of the person to be invited to - the target channel . There is no requirement that the - channel the target user is being invited to must exist or be a valid - channel. However, if the channel exists, only members of the channel - are allowed to invite other users. When the channel has invite-only - flag set, only channel operators may issue INVITE command. - - - - - -Kalt Informational [Page 21] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Only the user inviting and the user being invited will receive - notification of the invitation. Other channel members are not - notified. (This is unlike the MODE changes, and is occasionally the - source of trouble for users.) - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_NOSUCHNICK - ERR_NOTONCHANNEL ERR_USERONCHANNEL - ERR_CHANOPRIVSNEEDED - RPL_INVITING RPL_AWAY - - Examples: - - :Angel!wings@irc.org INVITE Wiz #Dust - - ; Message to WiZ when he has been - invited by user Angel to channel - #Dust - - INVITE Wiz #Twilight_Zone ; Command to invite WiZ to - #Twilight_zone - -3.2.8 Kick command - - Command: KICK - Parameters: *( "," ) *( "," ) - [] - - The KICK command can be used to request the forced removal of a user - from a channel. It causes the to PART from the by - force. For the message to be syntactically correct, there MUST be - either one channel parameter and multiple user parameter, or as many - channel parameters as there are user parameters. If a "comment" is - given, this will be sent instead of the default message, the nickname - of the user issuing the KICK. - - The server MUST NOT send KICK messages with multiple channels or - users to clients. This is necessarily to maintain backward - compatibility with old client software. - - Numeric Replies: - - ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL - ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED - ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL - - - - - -Kalt Informational [Page 22] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - KICK &Melbourne Matthew ; Command to kick Matthew from - &Melbourne - - KICK #Finnish John :Speaking English - ; Command to kick John from #Finnish - using "Speaking English" as the - reason (comment). - - :WiZ!jto@tolsun.oulu.fi KICK #Finnish John - ; KICK message on channel #Finnish - from WiZ to remove John from channel - -3.3 Sending messages - - The main purpose of the IRC protocol is to provide a base for clients - to communicate with each other. PRIVMSG, NOTICE and SQUERY - (described in Section 3.5 on Service Query and Commands) are the only - messages available which actually perform delivery of a text message - from one client to another - the rest just make it possible and try - to ensure it happens in a reliable and structured manner. - -3.3.1 Private messages - - Command: PRIVMSG - Parameters: - - PRIVMSG is used to send private messages between users, as well as to - send messages to channels. is usually the nickname of - the recipient of the message, or a channel name. - - The parameter may also be a host mask (#) or server - mask ($). In both cases the server will only send the PRIVMSG - to those who have a server or host matching the mask. The mask MUST - have at least 1 (one) "." in it and no wildcards following the last - ".". This requirement exists to prevent people sending messages to - "#*" or "$*", which would broadcast to all users. Wildcards are the - '*' and '?' characters. This extension to the PRIVMSG command is - only available to operators. - - Numeric Replies: - - ERR_NORECIPIENT ERR_NOTEXTTOSEND - ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL - ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS - ERR_NOSUCHNICK - RPL_AWAY - - - -Kalt Informational [Page 23] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - :Angel!wings@irc.org PRIVMSG Wiz :Are you receiving this message ? - ; Message from Angel to Wiz. - - PRIVMSG Angel :yes I'm receiving it ! - ; Command to send a message to Angel. - - PRIVMSG jto@tolsun.oulu.fi :Hello ! - ; Command to send a message to a user - on server tolsun.oulu.fi with - username of "jto". - - PRIVMSG kalt%millennium.stealth.net@irc.stealth.net :Are you a frog? - ; Message to a user on server - irc.stealth.net with username of - "kalt", and connected from the host - millennium.stealth.net. - - PRIVMSG kalt%millennium.stealth.net :Do you like cheese? - ; Message to a user on the local - server with username of "kalt", and - connected from the host - millennium.stealth.net. - - PRIVMSG Wiz!jto@tolsun.oulu.fi :Hello ! - ; Message to the user with nickname - Wiz who is connected from the host - tolsun.oulu.fi and has the username - "jto". - - PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting. - ; Message to everyone on a server - which has a name matching *.fi. - - PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions - ; Message to all users who come from - a host which has a name matching - *.edu. - -3.3.2 Notice - - Command: NOTICE - Parameters: - - The NOTICE command is used similarly to PRIVMSG. The difference - between NOTICE and PRIVMSG is that automatic replies MUST NEVER be - sent in response to a NOTICE message. This rule applies to servers - - - -Kalt Informational [Page 24] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - too - they MUST NOT send any error reply back to the client on - receipt of a notice. The object of this rule is to avoid loops - between clients automatically sending something in response to - something it received. - - This command is available to services as well as users. - - This is typically used by services, and automatons (clients with - either an AI or other interactive program controlling their actions). - - See PRIVMSG for more details on replies and examples. - -3.4 Server queries and commands - - The server query group of commands has been designed to return - information about any server which is connected to the network. - - In these queries, where a parameter appears as , wildcard - masks are usually valid. For each parameter, however, only one query - and set of replies is to be generated. In most cases, if a nickname - is given, it will mean the server to which the user is connected. - - These messages typically have little value for services, it is - therefore RECOMMENDED to forbid services from using them. - -3.4.1 Motd message - - Command: MOTD - Parameters: [ ] - - The MOTD command is used to get the "Message Of The Day" of the given - server, or current server if is omitted. - - Wildcards are allowed in the parameter. - - Numeric Replies: - RPL_MOTDSTART RPL_MOTD - RPL_ENDOFMOTD ERR_NOMOTD - -3.4.2 Lusers message - - Command: LUSERS - Parameters: [ [ ] ] - - The LUSERS command is used to get statistics about the size of the - IRC network. If no parameter is given, the reply will be about the - whole net. If a is specified, then the reply will only - - - - -Kalt Informational [Page 25] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - concern the part of the network formed by the servers matching the - mask. Finally, if the parameter is specified, the request - is forwarded to that server which will generate the reply. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - RPL_LUSERCLIENT RPL_LUSEROP - RPL_LUSERUNKOWN RPL_LUSERCHANNELS - RPL_LUSERME ERR_NOSUCHSERVER - -3.4.3 Version message - - Command: VERSION - Parameters: [ ] - - The VERSION command is used to query the version of the server - program. An optional parameter is used to query the version - of the server program which a client is not directly connected to. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_NOSUCHSERVER RPL_VERSION - - Examples: - - VERSION tolsun.oulu.fi ; Command to check the version of - server "tolsun.oulu.fi". - -3.4.4 Stats message - - Command: STATS - Parameters: [ [ ] ] - - The stats command is used to query statistics of certain server. If - parameter is omitted, only the end of stats reply is sent - back. - - A query may be given for any single letter which is only checked by - the destination server and is otherwise passed on by intermediate - servers, ignored and unaltered. - - Wildcards are allowed in the parameter. - - - - - -Kalt Informational [Page 26] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Except for the ones below, the list of valid queries is - implementation dependent. The standard queries below SHOULD be - supported by the server: - - l - returns a list of the server's connections, showing how - long each connection has been established and the - traffic over that connection in Kbytes and messages for - each direction; - m - returns the usage count for each of commands supported - by the server; commands for which the usage count is - zero MAY be omitted; - o - returns a list of configured privileged users, - operators; - u - returns a string showing how long the server has been - up. - - It is also RECOMMENDED that client and server access configuration be - published this way. - - Numeric Replies: - - ERR_NOSUCHSERVER - RPL_STATSLINKINFO RPL_STATSUPTIME - RPL_STATSCOMMANDS RPL_STATSOLINE - RPL_ENDOFSTATS - - Examples: - - STATS m ; Command to check the command usage - for the server you are connected to - -3.4.5 Links message - - Command: LINKS - Parameters: [ [ ] ] - - With LINKS, a user can list all servernames, which are known by the - server answering the query. The returned list of servers MUST match - the mask, or if no mask is given, the full list is returned. - - If is given in addition to , the LINKS - command is forwarded to the first server found that matches that name - (if any), and that server is then required to answer the query. - - Numeric Replies: - - ERR_NOSUCHSERVER - RPL_LINKS RPL_ENDOFLINKS - - - -Kalt Informational [Page 27] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - LINKS *.au ; Command to list all servers which - have a name that matches *.au; - - LINKS *.edu *.bu.edu ; Command to list servers matching - *.bu.edu as seen by the first server - matching *.edu. - -3.4.6 Time message - - Command: TIME - Parameters: [ ] - - The time command is used to query local time from the specified - server. If the parameter is not given, the server receiving - the command must reply to the query. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_NOSUCHSERVER RPL_TIME - - Examples: - TIME tolsun.oulu.fi ; check the time on the server - "tolson.oulu.fi" - -3.4.7 Connect message - - Command: CONNECT - Parameters: [ ] - - The CONNECT command can be used to request a server to try to - establish a new connection to another server immediately. CONNECT is - a privileged command and SHOULD be available only to IRC Operators. - If a is given and its mask doesn't match name of the - parsing server, the CONNECT attempt is sent to the first match of - remote server. Otherwise the CONNECT attempt is made by the server - processing the request. - - The server receiving a remote CONNECT command SHOULD generate a - WALLOPS message describing the source and target of the request. - - Numeric Replies: - - ERR_NOSUCHSERVER ERR_NOPRIVILEGES - ERR_NEEDMOREPARAMS - - - -Kalt Informational [Page 28] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local - server to tolsun.oulu.fi on port 6667 - -3.4.8 Trace message - - Command: TRACE - Parameters: [ ] - - TRACE command is used to find the route to specific server and - information about its peers. Each server that processes this command - MUST report to the sender about it. The replies from pass-through - links form a chain, which shows route to destination. After sending - this reply back, the query MUST be sent to the next server until - given server is reached. - - TRACE command is used to find the route to specific server. Each - server that processes this message MUST tell the sender about it by - sending a reply indicating it is a pass-through link, forming a chain - of replies. After sending this reply back, it MUST then send the - TRACE message to the next server until given server is reached. If - the parameter is omitted, it is RECOMMENDED that TRACE - command sends a message to the sender telling which servers the local - server has direct connection to. - - If the destination given by is an actual server, the - destination server is REQUIRED to report all servers, services and - operators which are connected to it; if the command was issued by an - operator, the server MAY also report all users which are connected to - it. If the destination given by is a nickname, then only a - reply for that nickname is given. If the parameter is - omitted, it is RECOMMENDED that the TRACE command is parsed as - targeted to the processing server. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_NOSUCHSERVER - - If the TRACE message is destined for another server, all - intermediate servers must return a RPL_TRACELINK reply to indicate - that the TRACE passed through it and where it is going next. - - RPL_TRACELINK - - - - - -Kalt Informational [Page 29] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - A TRACE reply may be composed of any number of the following - numeric replies. - - RPL_TRACECONNECTING RPL_TRACEHANDSHAKE - RPL_TRACEUNKNOWN RPL_TRACEOPERATOR - RPL_TRACEUSER RPL_TRACESERVER - RPL_TRACESERVICE RPL_TRACENEWTYPE - RPL_TRACECLASS RPL_TRACELOG - RPL_TRACEEND - - Examples: - - TRACE *.oulu.fi ; TRACE to a server matching - *.oulu.fi - -3.4.9 Admin command - - Command: ADMIN - Parameters: [ ] - - The admin command is used to find information about the administrator - of the given server, or current server if parameter is - omitted. Each server MUST have the ability to forward ADMIN messages - to other servers. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_NOSUCHSERVER - RPL_ADMINME RPL_ADMINLOC1 - RPL_ADMINLOC2 RPL_ADMINEMAIL - - Examples: - - ADMIN tolsun.oulu.fi ; request an ADMIN reply from - tolsun.oulu.fi - - ADMIN syrk ; ADMIN request for the server to - which the user syrk is connected - - - - - - - - - - - -Kalt Informational [Page 30] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.4.10 Info command - - Command: INFO - Parameters: [ ] - - The INFO command is REQUIRED to return information describing the - server: its version, when it was compiled, the patchlevel, when it - was started, and any other miscellaneous information which may be - considered to be relevant. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_NOSUCHSERVER - RPL_INFO RPL_ENDOFINFO - - Examples: - - INFO csd.bu.edu ; request an INFO reply from - csd.bu.edu - - INFO Angel ; request info from the server that - Angel is connected to. - -3.5 Service Query and Commands - - The service query group of commands has been designed to return - information about any service which is connected to the network. - -3.5.1 Servlist message - - Command: SERVLIST - Parameters: [ [ ] ] - - The SERVLIST command is used to list services currently connected to - the network and visible to the user issuing the command. The - optional parameters may be used to restrict the result of the query - (to matching services names, and services type). - - Numeric Replies: - - RPL_SERVLIST RPL_SERVLISTEND - - - - - - - - -Kalt Informational [Page 31] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.5.2 Squery - - Command: SQUERY - Parameters: - - The SQUERY command is used similarly to PRIVMSG. The only difference - is that the recipient MUST be a service. This is the only way for a - text message to be delivered to a service. - - See PRIVMSG for more details on replies and example. - - Examples: - - SQUERY irchelp :HELP privmsg - ; Message to the service with - nickname irchelp. - - SQUERY dict@irc.fr :fr2en blaireau - ; Message to the service with name - dict@irc.fr. - -3.6 User based queries - - User queries are a group of commands which are primarily concerned - with finding details on a particular user or group users. When using - wildcards with any of these commands, if they match, they will only - return information on users who are 'visible' to you. The visibility - of a user is determined as a combination of the user's mode and the - common set of channels you are both on. - - Although services SHOULD NOT be using this class of message, they are - allowed to. - -3.6.1 Who query - - Command: WHO - Parameters: [ [ "o" ] ] - - The WHO command is used by a client to generate a query which returns - a list of information which 'matches' the parameter given by - the client. In the absence of the parameter, all visible - (users who aren't invisible (user mode +i) and who don't have a - common channel with the requesting client) are listed. The same - result can be achieved by using a of "0" or any wildcard which - will end up matching every visible user. - - The passed to WHO is matched against users' host, server, real - name and nickname if the channel cannot be found. - - - -Kalt Informational [Page 32] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - If the "o" parameter is passed only operators are returned according - to the supplied. - - Numeric Replies: - - ERR_NOSUCHSERVER - RPL_WHOREPLY RPL_ENDOFWHO - - Examples: - - WHO *.fi ; Command to list all users who match - against "*.fi". - - WHO jto* o ; Command to list all users with a - match against "jto*" if they are an - operator. - -3.6.2 Whois query - - Command: WHOIS - Parameters: [ ] *( "," ) - - This command is used to query information about particular user. - The server will answer this command with several numeric messages - indicating different statuses of each user which matches the mask (if - you are entitled to see them). If no wildcard is present in the - , any information about that nick which you are allowed to see - is presented. - - If the parameter is specified, it sends the query to a - specific server. It is useful if you want to know how long the user - in question has been idle as only local server (i.e., the server the - user is directly connected to) knows that information, while - everything else is globally known. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN - RPL_WHOISUSER RPL_WHOISCHANNELS - RPL_WHOISCHANNELS RPL_WHOISSERVER - RPL_AWAY RPL_WHOISOPERATOR - RPL_WHOISIDLE ERR_NOSUCHNICK - RPL_ENDOFWHOIS - - - - - - -Kalt Informational [Page 33] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - WHOIS wiz ; return available user information - about nick WiZ - - WHOIS eff.org trillian ; ask server eff.org for user - information about trillian - -3.6.3 Whowas - - Command: WHOWAS - Parameters: *( "," ) [ [ ] ] - - Whowas asks for information about a nickname which no longer exists. - This may either be due to a nickname change or the user leaving IRC. - In response to this query, the server searches through its nickname - history, looking for any nicks which are lexically the same (no wild - card matching here). The history is searched backward, returning the - most recent entry first. If there are multiple entries, up to - replies will be returned (or all of them if no - parameter is given). If a non-positive number is passed as being - , then a full search is done. - - Wildcards are allowed in the parameter. - - Numeric Replies: - - ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK - RPL_WHOWASUSER RPL_WHOISSERVER - RPL_ENDOFWHOWAS - - Examples: - - WHOWAS Wiz ; return all information in the nick - history about nick "WiZ"; - - WHOWAS Mermaid 9 ; return at most, the 9 most recent - entries in the nick history for - "Mermaid"; - - WHOWAS Trillian 1 *.edu ; return the most recent history for - "Trillian" from the first server - found to match "*.edu". - -3.7 Miscellaneous messages - - Messages in this category do not fit into any of the above categories - but are nonetheless still a part of and REQUIRED by the protocol. - - - -Kalt Informational [Page 34] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.7.1 Kill message - - Command: KILL - Parameters: - - The KILL command is used to cause a client-server connection to be - closed by the server which has the actual connection. Servers - generate KILL messages on nickname collisions. It MAY also be - available available to users who have the operator status. - - Clients which have automatic reconnect algorithms effectively make - this command useless since the disconnection is only brief. It does - however break the flow of data and can be used to stop large amounts - of 'flooding' from abusive users or accidents. Abusive users usually - don't care as they will reconnect promptly and resume their abusive - behaviour. To prevent this command from being abused, any user may - elect to receive KILL messages generated for others to keep an 'eye' - on would be trouble spots. - - In an arena where nicknames are REQUIRED to be globally unique at all - times, KILL messages are sent whenever 'duplicates' are detected - (that is an attempt to register two users with the same nickname) in - the hope that both of them will disappear and only 1 reappear. - - When a client is removed as the result of a KILL message, the server - SHOULD add the nickname to the list of unavailable nicknames in an - attempt to avoid clients to reuse this name immediately which is - usually the pattern of abusive behaviour often leading to useless - "KILL loops". See the "IRC Server Protocol" document [IRC-SERVER] - for more information on this procedure. - - The comment given MUST reflect the actual reason for the KILL. For - server-generated KILLs it usually is made up of details concerning - the origins of the two conflicting nicknames. For users it is left - up to them to provide an adequate reason to satisfy others who see - it. To prevent/discourage fake KILLs from being generated to hide - the identify of the KILLer, the comment also shows a 'kill-path' - which is updated by each server it passes through, each prepending - its name to the path. - - Numeric Replies: - - ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS - ERR_NOSUCHNICK ERR_CANTKILLSERVER - - - - - - - -Kalt Informational [Page 35] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - NOTE: - It is RECOMMENDED that only Operators be allowed to kill other users - with KILL command. This command has been the subject of many - controversies over the years, and along with the above - recommendation, it is also widely recognized that not even operators - should be allowed to kill users on remote servers. - -3.7.2 Ping message - - Command: PING - Parameters: [ ] - - The PING command is used to test the presence of an active client or - server at the other end of the connection. Servers send a PING - message at regular intervals if no other activity detected coming - from a connection. If a connection fails to respond to a PING - message within a set amount of time, that connection is closed. A - PING message MAY be sent even if the connection is active. - - When a PING message is received, the appropriate PONG message MUST be - sent as reply to (server which sent the PING message out) - as soon as possible. If the parameter is specified, it - represents the target of the ping, and the message gets forwarded - there. - - Numeric Replies: - - ERR_NOORIGIN ERR_NOSUCHSERVER - - Examples: - - PING tolsun.oulu.fi ; Command to send a PING message to - server - - PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING - message to server "tolsun.oulu.fi" - - PING :irc.funet.fi ; Ping message sent by server - "irc.funet.fi" - - - - - - - - - - - - -Kalt Informational [Page 36] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -3.7.3 Pong message - - Command: PONG - Parameters: [ ] - - PONG message is a reply to ping message. If parameter is - given, this message MUST be forwarded to given target. The - parameter is the name of the entity who has responded to PING message - and generated this message. - - Numeric Replies: - - ERR_NOORIGIN ERR_NOSUCHSERVER - - Example: - - PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to - tolsun.oulu.fi - -3.7.4 Error - - Command: ERROR - Parameters: - - The ERROR command is for use by servers when reporting a serious or - fatal error to its peers. It may also be sent from one server to - another but MUST NOT be accepted from any normal unknown clients. - - Only an ERROR message SHOULD be used for reporting errors which occur - with a server-to-server link. An ERROR message is sent to the server - at the other end (which reports it to appropriate local users and - logs) and to appropriate local users and logs. It is not to be - passed onto any other servers by a server if it is received from a - server. - - The ERROR message is also used before terminating a client - connection. - - When a server sends a received ERROR message to its operators, the - message SHOULD be encapsulated inside a NOTICE message, indicating - that the client was not responsible for the error. - - Numerics: - - None. - - - - - - -Kalt Informational [Page 37] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - ERROR :Server *.fi already exists ; ERROR message to the other server - which caused this error. - - NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists - ; Same ERROR message as above but - sent to user WiZ on the other server. - -4. Optional features - - This section describes OPTIONAL messages. They are not required in a - working server implementation of the protocol described herein. In - the absence of the feature, an error reply message MUST be generated - or an unknown command error. If the message is destined for another - server to answer then it MUST be passed on (elementary parsing - REQUIRED) The allocated numerics for this are listed with the - messages below. - - From this section, only the USERHOST and ISON messages are available - to services. - -4.1 Away - - Command: AWAY - Parameters: [ ] - - With the AWAY command, clients can set an automatic reply string for - any PRIVMSG commands directed at them (not to a channel they are on). - The server sends an automatic reply to the client sending the PRIVMSG - command. The only replying server is the one to which the sending - client is connected to. - - The AWAY command is used either with one parameter, to set an AWAY - message, or with no parameters, to remove the AWAY message. - - Because of its high cost (memory and bandwidth wise), the AWAY - message SHOULD only be used for client-server communication. A - server MAY choose to silently ignore AWAY messages received from - other servers. To update the away status of a client across servers, - the user mode 'a' SHOULD be used instead. (See Section 3.1.5) - - Numeric Replies: - - RPL_UNAWAY RPL_NOWAWAY - - - - - - -Kalt Informational [Page 38] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Example: - - AWAY :Gone to lunch. Back in 5 ; Command to set away message to - "Gone to lunch. Back in 5". - -4.2 Rehash message - - Command: REHASH - Parameters: None - - The rehash command is an administrative command which can be used by - an operator to force the server to re-read and process its - configuration file. - - Numeric Replies: - - RPL_REHASHING ERR_NOPRIVILEGES - - - Example: - - REHASH ; message from user with operator - status to server asking it to reread - its configuration file. - -4.3 Die message - - Command: DIE - Parameters: None - - An operator can use the DIE command to shutdown the server. This - message is optional since it may be viewed as a risk to allow - arbitrary people to connect to a server as an operator and execute - this command. - - The DIE command MUST always be fully processed by the server to which - the sending client is connected and MUST NOT be passed onto other - connected servers. - - Numeric Replies: - - ERR_NOPRIVILEGES - - Example: - - DIE ; no parameters required. - - - - - -Kalt Informational [Page 39] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - -4.4 Restart message - - Command: RESTART - Parameters: None - - An operator can use the restart command to force the server to - restart itself. This message is optional since it may be viewed as a - risk to allow arbitrary people to connect to a server as an operator - and execute this command, causing (at least) a disruption to service. - - The RESTART command MUST always be fully processed by the server to - which the sending client is connected and MUST NOT be passed onto - other connected servers. - - Numeric Replies: - - ERR_NOPRIVILEGES - - Example: - - RESTART ; no parameters required. - -4.5 Summon message - - Command: SUMMON - Parameters: [ [ ] ] - - The SUMMON command can be used to give users who are on a host - running an IRC server a message asking them to please join IRC. This - message is only sent if the target server (a) has SUMMON enabled, (b) - the user is logged in and (c) the server process can write to the - user's tty (or similar). - - If no parameter is given it tries to summon from the - server the client is connected to is assumed as the target. - - If summon is not enabled in a server, it MUST return the - ERR_SUMMONDISABLED numeric. - - Numeric Replies: - - ERR_NORECIPIENT ERR_FILEERROR - ERR_NOLOGIN ERR_NOSUCHSERVER - ERR_SUMMONDISABLED RPL_SUMMONING - - - - - - - -Kalt Informational [Page 40] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - Examples: - - SUMMON jto ; summon user jto on the server's - host - - SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a - server named "tolsun.oulu.fi" is - running. - -4.6 Users - - Command: USERS - Parameters: [ ] - - The USERS command returns a list of users logged into the server in a - format similar to the UNIX commands who(1), rusers(1) and finger(1). - If disabled, the correct numeric MUST be returned to indicate this. - - Because of the security implications of such a command, it SHOULD be - disabled by default in server implementations. Enabling it SHOULD - require recompiling the server or some equivalent change rather than - simply toggling an option and restarting the server. The procedure - to enable this command SHOULD also include suitable large comments. - - Numeric Replies: - - ERR_NOSUCHSERVER ERR_FILEERROR - RPL_USERSSTART RPL_USERS - RPL_NOUSERS RPL_ENDOFUSERS - ERR_USERSDISABLED - - Disabled Reply: - - ERR_USERSDISABLED - - Example: - - USERS eff.org ; request a list of users logged in - on server eff.org - -4.7 Operwall message - - Command: WALLOPS - Parameters: - - The WALLOPS command is used to send a message to all currently - connected users who have set the 'w' user mode for themselves. (See - Section 3.1.5 "User modes"). - - - -Kalt Informational [Page 41] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - After implementing WALLOPS as a user command it was found that it was - often and commonly abused as a means of sending a message to a lot of - people. Due to this, it is RECOMMENDED that the implementation of - WALLOPS allows and recognizes only servers as the originators of - WALLOPS. - - Numeric Replies: - - ERR_NEEDMOREPARAMS - - Example: - - :csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS - message from csd.bu.edu announcing a - CONNECT message it received from - Joshua and acted upon. - -4.8 Userhost message - - Command: USERHOST - Parameters: *( SPACE ) - - The USERHOST command takes a list of up to 5 nicknames, each - separated by a space character and returns a list of information - about each nickname that it found. The returned list has each reply - separated by a space. - - Numeric Replies: - - RPL_USERHOST ERR_NEEDMOREPARAMS - - Example: - - USERHOST Wiz Michael syrk ; USERHOST request for information on - nicks "Wiz", "Michael", and "syrk" - - :ircd.stealth.net 302 yournick :syrk=+syrk@millennium.stealth.net - ; Reply for user syrk - -4.9 Ison message - - Command: ISON - Parameters: *( SPACE ) - - The ISON command was implemented to provide a quick and efficient - means to get a response about whether a given nickname was currently - on IRC. ISON only takes one (1) type of parameter: a space-separated - list of nicks. For each nickname in the list that is present, the - - - -Kalt Informational [Page 42] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - server adds that to its reply string. Thus the reply string may - return empty (none of the given nicks are present), an exact copy of - the parameter string (all of them present) or any other subset of the - set of nicks given in the parameter. The only limit on the number of - nicks that may be checked is that the combined length MUST NOT be too - large as to cause the server to chop it off so it fits in 512 - characters. - - ISON is only processed by the server local to the client sending the - command and thus not passed onto other servers for further - processing. - - Numeric Replies: - - RPL_ISON ERR_NEEDMOREPARAMS - - Example: - - ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk - ; Sample ISON request for 7 nicks. - -5. Replies - - The following is a list of numeric replies which are generated in - response to the commands given above. Each numeric is given with its - number, name and reply string. - -5.1 Command responses - - Numerics in the range from 001 to 099 are used for client-server - connections only and should never travel between servers. Replies - generated in the response to commands are found in the range from 200 - to 399. - - 001 RPL_WELCOME - "Welcome to the Internet Relay Network - !@" - 002 RPL_YOURHOST - "Your host is , running version " - 003 RPL_CREATED - "This server was created " - 004 RPL_MYINFO - " - " - - - The server sends Replies 001 to 004 to a user upon - successful registration. - - - - -Kalt Informational [Page 43] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - 005 RPL_BOUNCE - "Try server , port " - - - Sent by the server to a user to suggest an alternative - server. This is often used when the connection is - refused because the server is already full. - - 302 RPL_USERHOST - ":*1 *( " " )" - - - Reply format used by USERHOST to list replies to - the query list. The reply string is composed as - follows: - - reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname - - The '*' indicates whether the client has registered - as an Operator. The '-' or '+' characters represent - whether the client has set an AWAY message or not - respectively. - - 303 RPL_ISON - ":*1 *( " " )" - - - Reply format used by ISON to list replies to the - query list. - - 301 RPL_AWAY - " :" - 305 RPL_UNAWAY - ":You are no longer marked as being away" - 306 RPL_NOWAWAY - ":You have been marked as being away" - - - These replies are used with the AWAY command (if - allowed). RPL_AWAY is sent to any client sending a - PRIVMSG to a client which is away. RPL_AWAY is only - sent by the server to which the client is connected. - Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the - client removes and sets an AWAY message. - - 311 RPL_WHOISUSER - " * :" - 312 RPL_WHOISSERVER - " :" - 313 RPL_WHOISOPERATOR - " :is an IRC operator" - - - - -Kalt Informational [Page 44] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - 317 RPL_WHOISIDLE - " :seconds idle" - 318 RPL_ENDOFWHOIS - " :End of WHOIS list" - 319 RPL_WHOISCHANNELS - " :*( ( "@" / "+" ) " " )" - - - Replies 311 - 313, 317 - 319 are all replies - generated in response to a WHOIS message. Given that - there are enough parameters present, the answering - server MUST either formulate a reply out of the above - numerics (if the query nick is found) or return an - error reply. The '*' in RPL_WHOISUSER is there as - the literal character and not as a wild card. For - each reply set, only RPL_WHOISCHANNELS may appear - more than once (for long lists of channel names). - The '@' and '+' characters next to the channel name - indicate whether a client is a channel operator or - has been granted permission to speak on a moderated - channel. The RPL_ENDOFWHOIS reply is used to mark - the end of processing a WHOIS message. - - 314 RPL_WHOWASUSER - " * :" - 369 RPL_ENDOFWHOWAS - " :End of WHOWAS" - - - When replying to a WHOWAS message, a server MUST use - the replies RPL_WHOWASUSER, RPL_WHOISSERVER or - ERR_WASNOSUCHNICK for each nickname in the presented - list. At the end of all reply batches, there MUST - be RPL_ENDOFWHOWAS (even if there was only one reply - and it was an error). - - 321 RPL_LISTSTART - Obsolete. Not used. - - 322 RPL_LIST - " <# visible> :" - 323 RPL_LISTEND - ":End of LIST" - - - Replies RPL_LIST, RPL_LISTEND mark the actual replies - with data and end of the server's response to a LIST - command. If there are no channels available to return, - only the end reply MUST be sent. - - - - - -Kalt Informational [Page 45] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - 325 RPL_UNIQOPIS - " " - - 324 RPL_CHANNELMODEIS - " " - - 331 RPL_NOTOPIC - " :No topic is set" - 332 RPL_TOPIC - " :" - - - When sending a TOPIC message to determine the - channel topic, one of two replies is sent. If - the topic is set, RPL_TOPIC is sent back else - RPL_NOTOPIC. - - 341 RPL_INVITING - " " - - - Returned by the server to indicate that the - attempted INVITE message was successful and is - being passed onto the end client. - - 342 RPL_SUMMONING - " :Summoning user to IRC" - - - Returned by a server answering a SUMMON message to - indicate that it is summoning that user. - - 346 RPL_INVITELIST - " " - 347 RPL_ENDOFINVITELIST - " :End of channel invite list" - - - When listing the 'invitations masks' for a given channel, - a server is required to send the list back using the - RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A - separate RPL_INVITELIST is sent for each active mask. - After the masks have been listed (or if none present) a - RPL_ENDOFINVITELIST MUST be sent. - - 348 RPL_EXCEPTLIST - " " - 349 RPL_ENDOFEXCEPTLIST - " :End of channel exception list" - - - - - - -Kalt Informational [Page 46] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - - When listing the 'exception masks' for a given channel, - a server is required to send the list back using the - RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A - separate RPL_EXCEPTLIST is sent for each active mask. - After the masks have been listed (or if none present) - a RPL_ENDOFEXCEPTLIST MUST be sent. - - 351 RPL_VERSION - ". :" - - - Reply by the server showing its version details. - The is the version of the software being - used (including any patchlevel revisions) and the - is used to indicate if the server is - running in "debug mode". - - The "comments" field may contain any comments about - the version or further version details. - - 352 RPL_WHOREPLY - " - ( "H" / "G" > ["*"] [ ( "@" / "+" ) ] - : " - - 315 RPL_ENDOFWHO - " :End of WHO list" - - - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used - to answer a WHO message. The RPL_WHOREPLY is only - sent if there is an appropriate match to the WHO - query. If there is a list of parameters supplied - with a WHO message, a RPL_ENDOFWHO MUST be sent - after processing each list item with being - the item. - - 353 RPL_NAMREPLY - "( "=" / "*" / "@" ) - :[ "@" / "+" ] *( " " [ "@" / "+" ] ) - - "@" is used for secret channels, "*" for private - channels, and "=" for others (public channels). - - 366 RPL_ENDOFNAMES - " :End of NAMES list" - - - To reply to a NAMES message, a reply pair consisting - of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the - server back to the client. If there is no channel - found as in the query, then only RPL_ENDOFNAMES is - - - -Kalt Informational [Page 47] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - returned. The exception to this is when a NAMES - message is sent with no parameters and all visible - channels and contents are sent back in a series of - RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark - the end. - - 364 RPL_LINKS - " : " - 365 RPL_ENDOFLINKS - " :End of LINKS list" - - - In replying to the LINKS message, a server MUST send - replies back using the RPL_LINKS numeric and mark the - end of the list using an RPL_ENDOFLINKS reply. - - 367 RPL_BANLIST - " " - 368 RPL_ENDOFBANLIST - " :End of channel ban list" - - - When listing the active 'bans' for a given channel, - a server is required to send the list back using the - RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate - RPL_BANLIST is sent for each active banmask. After the - banmasks have been listed (or if none present) a - RPL_ENDOFBANLIST MUST be sent. - - 371 RPL_INFO - ":" - 374 RPL_ENDOFINFO - ":End of INFO list" - - - A server responding to an INFO message is required to - send all its 'info' in a series of RPL_INFO messages - with a RPL_ENDOFINFO reply to indicate the end of the - replies. - - 375 RPL_MOTDSTART - ":- Message of the day - " - 372 RPL_MOTD - ":- " - 376 RPL_ENDOFMOTD - ":End of MOTD command" - - - When responding to the MOTD message and the MOTD file - is found, the file is displayed line by line, with - each line no longer than 80 characters, using - - - - -Kalt Informational [Page 48] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - RPL_MOTD format replies. These MUST be surrounded - by a RPL_MOTDSTART (before the RPL_MOTDs) and an - RPL_ENDOFMOTD (after). - - 381 RPL_YOUREOPER - ":You are now an IRC operator" - - - RPL_YOUREOPER is sent back to a client which has - just successfully issued an OPER message and gained - operator status. - - 382 RPL_REHASHING - " :Rehashing" - - - If the REHASH option is used and an operator sends - a REHASH message, an RPL_REHASHING is sent back to - the operator. - - 383 RPL_YOURESERVICE - "You are service " - - - Sent by the server to a service upon successful - registration. - - 391 RPL_TIME - " :" - - - When replying to the TIME message, a server MUST send - the reply using the RPL_TIME format above. The string - showing the time need only contain the correct day and - time there. There is no further requirement for the - time string. - - 392 RPL_USERSSTART - ":UserID Terminal Host" - 393 RPL_USERS - ": " - 394 RPL_ENDOFUSERS - ":End of users" - 395 RPL_NOUSERS - ":Nobody logged in" - - - If the USERS message is handled by a server, the - replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and - RPL_NOUSERS are used. RPL_USERSSTART MUST be sent - first, following by either a sequence of RPL_USERS - or a single RPL_NOUSER. Following this is - RPL_ENDOFUSERS. - - - -Kalt Informational [Page 49] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - 200 RPL_TRACELINK - "Link - V - - " - 201 RPL_TRACECONNECTING - "Try. " - 202 RPL_TRACEHANDSHAKE - "H.S. " - 203 RPL_TRACEUNKNOWN - "???? []" - 204 RPL_TRACEOPERATOR - "Oper " - 205 RPL_TRACEUSER - "User " - 206 RPL_TRACESERVER - "Serv S C - @ V" - 207 RPL_TRACESERVICE - "Service " - 208 RPL_TRACENEWTYPE - " 0 " - 209 RPL_TRACECLASS - "Class " - 210 RPL_TRACERECONNECT - Unused. - 261 RPL_TRACELOG - "File " - 262 RPL_TRACEEND - " :End of TRACE" - - - The RPL_TRACE* are all returned by the server in - response to the TRACE message. How many are - returned is dependent on the TRACE message and - whether it was sent by an operator or not. There - is no predefined order for which occurs first. - Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and - RPL_TRACEHANDSHAKE are all used for connections - which have not been fully established and are either - unknown, still attempting to connect or in the - process of completing the 'server handshake'. - RPL_TRACELINK is sent by any server which handles - a TRACE message and has to pass it on to another - server. The list of RPL_TRACELINKs sent in - response to a TRACE command traversing the IRC - network should reflect the actual connectivity of - the servers themselves along that path. - - - - -Kalt Informational [Page 50] - -RFC 2812 Internet Relay Chat: Client Protocol April 2000 - - - RPL_TRACENEWTYPE is to be used for any connection - which does not fit in the other categories but is - being displayed anyway. - RPL_TRACEEND is sent to indicate the end of the list. - - 211 RPL_STATSLINKINFO - " - -