├── .check-gofmt.sh ├── .gitattributes ├── .github └── workflows │ ├── build.yml │ └── docker-image.yml ├── .gitignore ├── .gitmodules ├── .goreleaser.yml ├── CHANGELOG.md ├── DEVELOPING.md ├── Dockerfile ├── LICENSE ├── Makefile ├── README ├── README.md ├── crowdin.yml ├── default.yaml ├── distrib ├── SMF │ ├── README │ ├── ergo │ └── ergo.xml ├── anope │ └── anope2json.py ├── apparmor │ └── ergo ├── atheme │ └── atheme2json.py ├── bsd-rc │ ├── README.md │ └── ergo ├── docker │ ├── README.md │ ├── docker-compose.yml │ └── run.sh ├── init │ └── rc.ergo ├── openrc │ ├── ergo.confd │ └── ergo.initd ├── s6 │ ├── README │ ├── ergo-log │ │ ├── consumer-for │ │ ├── notification-fd │ │ ├── pipeline-name │ │ ├── run │ │ └── type │ ├── ergo-srv │ │ ├── producer-for │ │ ├── run │ │ └── type │ └── ergo.conf └── systemd │ └── ergo.service ├── docs ├── API.md ├── MANUAL.md ├── MOTDFORMATTING.md ├── USERGUIDE.md ├── logo.png └── logo.svg ├── ergo.go ├── ergo.motd ├── gencapdefs.py ├── go.mod ├── go.sum ├── irc ├── accept.go ├── accept_test.go ├── accounts.go ├── api.go ├── authscript.go ├── bunt │ └── bunt_datastore.go ├── caps │ ├── constants.go │ ├── defs.go │ ├── set.go │ └── set_test.go ├── channel.go ├── channelmanager.go ├── channelreg.go ├── chanserv.go ├── client.go ├── client_lookup_set.go ├── client_test.go ├── cloaks │ ├── cloak_test.go │ └── cloaks.go ├── commands.go ├── config.go ├── config_test.go ├── connection_limits │ ├── limiter.go │ ├── limiter_test.go │ ├── throttler.go │ ├── throttler_test.go │ └── tor.go ├── constants.go ├── custime │ └── parseduration.go ├── database.go ├── datastore │ └── datastore.go ├── dline.go ├── email │ ├── dkim.go │ └── email.go ├── errors.go ├── fakelag.go ├── fakelag_test.go ├── flatip │ ├── adhoc.go │ ├── flatip.go │ └── flatip_test.go ├── flock │ ├── flock.go │ ├── flock_iface.go │ └── flock_unsupported.go ├── gateways.go ├── getters.go ├── handlers.go ├── help.go ├── history │ ├── history.go │ ├── history_test.go │ ├── queries.go │ └── targets.go ├── histserv.go ├── hostserv.go ├── import.go ├── ircconn.go ├── isupport │ ├── list.go │ └── list_test.go ├── jwt │ ├── bearer.go │ ├── bearer_test.go │ └── extjwt.go ├── kline.go ├── languages │ └── languages.go ├── legacy.go ├── listeners.go ├── logger │ └── logger.go ├── message_cache.go ├── migrations │ ├── legacy.go │ ├── passwords.go │ ├── passwords_test.go │ ├── sha256.go │ └── sha256block.go ├── misc_test.go ├── mkcerts │ └── certs.go ├── modes.go ├── modes │ ├── modes.go │ └── modes_test.go ├── modes_test.go ├── monitor.go ├── mysql │ ├── config.go │ ├── history.go │ └── serialization.go ├── nickname.go ├── nickserv.go ├── numerics.go ├── oauth2 │ ├── oauth2.go │ └── sasl.go ├── panic.go ├── passwd │ ├── bcrypt.go │ └── bcrypt_test.go ├── responsebuffer.go ├── roleplay.go ├── script.go ├── semaphores.go ├── serde.go ├── server.go ├── services.go ├── smtp │ ├── LICENSE │ ├── auth.go │ └── smtp.go ├── sno │ ├── constants.go │ ├── utils.go │ └── utils_test.go ├── snomanager.go ├── socket.go ├── stats.go ├── strings.go ├── strings_test.go ├── types.go ├── uban.go ├── usermaskset.go ├── usermaskset_test.go ├── utils │ ├── args.go │ ├── args_test.go │ ├── bitset.go │ ├── bitset_test.go │ ├── confirmation.go │ ├── confirmation_test.go │ ├── crypto.go │ ├── crypto_test.go │ ├── fieldsn.go │ ├── glob.go │ ├── glob_test.go │ ├── math.go │ ├── math_test.go │ ├── net.go │ ├── net_linux.go │ ├── net_nonlinux.go │ ├── net_test.go │ ├── os.go │ ├── proxy.go │ ├── semaphores.go │ ├── semaphores_test.go │ ├── signals.go │ ├── signals_plan9.go │ ├── signals_windows.go │ ├── text.go │ ├── text_test.go │ ├── time.go │ ├── types.go │ └── uuid.go ├── version.go ├── webpush │ ├── highlight.go │ ├── security.go │ ├── security_test.go │ ├── webpush.go │ └── webpush_test.go ├── whowas.go ├── whowas_test.go └── znc.go ├── languages ├── README.md ├── af-ZA-chanserv.lang.json ├── af-ZA-help.lang.json ├── af-ZA-hostserv.lang.json ├── af-ZA-irc.lang.json ├── af-ZA-nickserv.lang.json ├── af-ZA.lang.yaml ├── ar-SA-chanserv.lang.json ├── ar-SA-help.lang.json ├── ar-SA-hostserv.lang.json ├── ar-SA-irc.lang.json ├── ar-SA-nickserv.lang.json ├── ar-SA.lang.yaml ├── bs-BA-chanserv.lang.json ├── bs-BA-help.lang.json ├── bs-BA-hostserv.lang.json ├── bs-BA-irc.lang.json ├── bs-BA-nickserv.lang.json ├── bs-BA.lang.yaml ├── ca-ES-chanserv.lang.json ├── ca-ES-help.lang.json ├── ca-ES-hostserv.lang.json ├── ca-ES-irc.lang.json ├── ca-ES-nickserv.lang.json ├── ca-ES.lang.yaml ├── cs-CZ-chanserv.lang.json ├── cs-CZ-help.lang.json ├── cs-CZ-hostserv.lang.json ├── cs-CZ-irc.lang.json ├── cs-CZ-nickserv.lang.json ├── cs-CZ.lang.yaml ├── da-DK-chanserv.lang.json ├── da-DK-help.lang.json ├── da-DK-hostserv.lang.json ├── da-DK-irc.lang.json ├── da-DK-nickserv.lang.json ├── da-DK.lang.yaml ├── de-DE-chanserv.lang.json ├── de-DE-help.lang.json ├── de-DE-hostserv.lang.json ├── de-DE-irc.lang.json ├── de-DE-nickserv.lang.json ├── de-DE.lang.yaml ├── el-GR-chanserv.lang.json ├── el-GR-help.lang.json ├── el-GR-hostserv.lang.json ├── el-GR-irc.lang.json ├── el-GR-nickserv.lang.json ├── el-GR.lang.yaml ├── en-AU-chanserv.lang.json ├── en-AU-help.lang.json ├── en-AU-hostserv.lang.json ├── en-AU-irc.lang.json ├── en-AU-nickserv.lang.json ├── en-AU.lang.yaml ├── es-ES-chanserv.lang.json ├── es-ES-help.lang.json ├── es-ES-hostserv.lang.json ├── es-ES-irc.lang.json ├── es-ES-nickserv.lang.json ├── es-ES.lang.yaml ├── example │ ├── chanserv.lang.json │ ├── help.lang.json │ ├── hostserv.lang.json │ ├── irc.lang.json │ ├── nickserv.lang.json │ └── translation.lang.yaml ├── fi-FI-chanserv.lang.json ├── fi-FI-help.lang.json ├── fi-FI-hostserv.lang.json ├── fi-FI-irc.lang.json ├── fi-FI-nickserv.lang.json ├── fi-FI.lang.yaml ├── fr-FR-chanserv.lang.json ├── fr-FR-help.lang.json ├── fr-FR-hostserv.lang.json ├── fr-FR-irc.lang.json ├── fr-FR-nickserv.lang.json ├── fr-FR.lang.yaml ├── he-IL-chanserv.lang.json ├── he-IL-help.lang.json ├── he-IL-hostserv.lang.json ├── he-IL-irc.lang.json ├── he-IL-nickserv.lang.json ├── he-IL.lang.yaml ├── hu-HU-chanserv.lang.json ├── hu-HU-help.lang.json ├── hu-HU-hostserv.lang.json ├── hu-HU-irc.lang.json ├── hu-HU-nickserv.lang.json ├── hu-HU.lang.yaml ├── it-IT-chanserv.lang.json ├── it-IT-help.lang.json ├── it-IT-hostserv.lang.json ├── it-IT-irc.lang.json ├── it-IT-nickserv.lang.json ├── it-IT.lang.yaml ├── ja-JP-chanserv.lang.json ├── ja-JP-help.lang.json ├── ja-JP-hostserv.lang.json ├── ja-JP-irc.lang.json ├── ja-JP-nickserv.lang.json ├── ja-JP.lang.yaml ├── ko-KR-chanserv.lang.json ├── ko-KR-help.lang.json ├── ko-KR-hostserv.lang.json ├── ko-KR-irc.lang.json ├── ko-KR-nickserv.lang.json ├── ko-KR.lang.yaml ├── nl-NL-chanserv.lang.json ├── nl-NL-help.lang.json ├── nl-NL-hostserv.lang.json ├── nl-NL-irc.lang.json ├── nl-NL-nickserv.lang.json ├── nl-NL.lang.yaml ├── no-NO-chanserv.lang.json ├── no-NO-help.lang.json ├── no-NO-hostserv.lang.json ├── no-NO-irc.lang.json ├── no-NO-nickserv.lang.json ├── no-NO.lang.yaml ├── pl-PL-chanserv.lang.json ├── pl-PL-help.lang.json ├── pl-PL-hostserv.lang.json ├── pl-PL-irc.lang.json ├── pl-PL-nickserv.lang.json ├── pl-PL.lang.yaml ├── pt-BR-chanserv.lang.json ├── pt-BR-help.lang.json ├── pt-BR-hostserv.lang.json ├── pt-BR-irc.lang.json ├── pt-BR-nickserv.lang.json ├── pt-BR.lang.yaml ├── pt-PT-chanserv.lang.json ├── pt-PT-help.lang.json ├── pt-PT-hostserv.lang.json ├── pt-PT-irc.lang.json ├── pt-PT-nickserv.lang.json ├── pt-PT.lang.yaml ├── ro-RO-chanserv.lang.json ├── ro-RO-help.lang.json ├── ro-RO-hostserv.lang.json ├── ro-RO-irc.lang.json ├── ro-RO-nickserv.lang.json ├── ro-RO.lang.yaml ├── ru-RU-chanserv.lang.json ├── ru-RU-help.lang.json ├── ru-RU-hostserv.lang.json ├── ru-RU-irc.lang.json ├── ru-RU-nickserv.lang.json ├── ru-RU.lang.yaml ├── sq-AL-chanserv.lang.json ├── sq-AL-help.lang.json ├── sq-AL-hostserv.lang.json ├── sq-AL-irc.lang.json ├── sq-AL-nickserv.lang.json ├── sq-AL.lang.yaml ├── sr-SP-chanserv.lang.json ├── sr-SP-help.lang.json ├── sr-SP-hostserv.lang.json ├── sr-SP-irc.lang.json ├── sr-SP-nickserv.lang.json ├── sr-SP.lang.yaml ├── sv-SE-chanserv.lang.json ├── sv-SE-help.lang.json ├── sv-SE-hostserv.lang.json ├── sv-SE-irc.lang.json ├── sv-SE-nickserv.lang.json ├── sv-SE.lang.yaml ├── tr-TR-chanserv.lang.json ├── tr-TR-help.lang.json ├── tr-TR-hostserv.lang.json ├── tr-TR-irc.lang.json ├── tr-TR-nickserv.lang.json ├── tr-TR.lang.yaml ├── uk-UA-chanserv.lang.json ├── uk-UA-help.lang.json ├── uk-UA-hostserv.lang.json ├── uk-UA-irc.lang.json ├── uk-UA-nickserv.lang.json ├── uk-UA.lang.yaml ├── vi-VN-chanserv.lang.json ├── vi-VN-help.lang.json ├── vi-VN-hostserv.lang.json ├── vi-VN-irc.lang.json ├── vi-VN-nickserv.lang.json ├── vi-VN.lang.yaml ├── zh-CN-chanserv.lang.json ├── zh-CN-help.lang.json ├── zh-CN-hostserv.lang.json ├── zh-CN-irc.lang.json ├── zh-CN-nickserv.lang.json ├── zh-CN.lang.yaml ├── zh-TW-chanserv.lang.json ├── zh-TW-help.lang.json ├── zh-TW-hostserv.lang.json ├── zh-TW-irc.lang.json ├── zh-TW-nickserv.lang.json └── zh-TW.lang.yaml ├── traditional.yaml ├── updatetranslations.py └── vendor ├── code.cloudfoundry.org └── bytefmt │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── bytes.go │ └── package.go ├── github.com ├── GehirnInc │ └── crypt │ │ ├── .travis.yml │ │ ├── AUTHORS.md │ │ ├── LICENSE │ │ ├── README.rst │ │ ├── common │ │ ├── base64.go │ │ ├── doc.go │ │ └── salt.go │ │ ├── crypt.go │ │ ├── internal │ │ └── utils.go │ │ └── md5_crypt │ │ └── md5_crypt.go ├── docopt │ └── docopt-go │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── doc.go │ │ ├── docopt.go │ │ ├── error.go │ │ ├── opts.go │ │ ├── pattern.go │ │ ├── test_golang.docopt │ │ ├── testcases.docopt │ │ └── token.go ├── emersion │ └── go-msgauth │ │ ├── LICENSE │ │ └── dkim │ │ ├── canonical.go │ │ ├── dkim.go │ │ ├── header.go │ │ ├── query.go │ │ ├── sign.go │ │ └── verify.go ├── ergochat │ ├── confusables │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── confusables.go │ │ ├── tables.go │ │ └── tweaks.go │ ├── go-ident │ │ ├── LICENSE │ │ ├── README.md │ │ └── client.go │ ├── irc-go │ │ ├── LICENSE │ │ ├── ircfmt │ │ │ ├── doc.go │ │ │ └── ircfmt.go │ │ ├── ircmsg │ │ │ ├── doc.go │ │ │ ├── message.go │ │ │ ├── tags.go │ │ │ ├── unicode.go │ │ │ └── userhost.go │ │ ├── ircreader │ │ │ └── ircreader.go │ │ └── ircutils │ │ │ ├── doc.go │ │ │ ├── hostnames.go │ │ │ ├── sasl.go │ │ │ └── unicode.go │ └── webpush-go │ │ └── v2 │ │ ├── .check-gofmt.sh │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── legacy.go │ │ ├── urgency.go │ │ ├── vapid.go │ │ └── webpush.go ├── go-sql-driver │ └── mysql │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── atomic_bool.go │ │ ├── atomic_bool_go118.go │ │ ├── auth.go │ │ ├── buffer.go │ │ ├── collations.go │ │ ├── conncheck.go │ │ ├── conncheck_dummy.go │ │ ├── connection.go │ │ ├── connector.go │ │ ├── const.go │ │ ├── driver.go │ │ ├── dsn.go │ │ ├── errors.go │ │ ├── fields.go │ │ ├── fuzz.go │ │ ├── infile.go │ │ ├── nulltime.go │ │ ├── packets.go │ │ ├── result.go │ │ ├── rows.go │ │ ├── statement.go │ │ ├── transaction.go │ │ └── utils.go ├── gofrs │ └── flock │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── appveyor.yml │ │ ├── flock.go │ │ ├── flock_aix.go │ │ ├── flock_unix.go │ │ ├── flock_winapi.go │ │ └── flock_windows.go ├── golang-jwt │ └── jwt │ │ └── v5 │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── MIGRATION_GUIDE.md │ │ ├── README.md │ │ ├── SECURITY.md │ │ ├── VERSION_HISTORY.md │ │ ├── claims.go │ │ ├── doc.go │ │ ├── ecdsa.go │ │ ├── ecdsa_utils.go │ │ ├── ed25519.go │ │ ├── ed25519_utils.go │ │ ├── errors.go │ │ ├── errors_go1_20.go │ │ ├── errors_go_other.go │ │ ├── hmac.go │ │ ├── map_claims.go │ │ ├── none.go │ │ ├── parser.go │ │ ├── parser_option.go │ │ ├── registered_claims.go │ │ ├── rsa.go │ │ ├── rsa_pss.go │ │ ├── rsa_utils.go │ │ ├── signing_method.go │ │ ├── staticcheck.conf │ │ ├── token.go │ │ ├── token_option.go │ │ ├── types.go │ │ └── validator.go ├── gorilla │ └── websocket │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── LICENSE │ │ ├── README.md │ │ ├── client.go │ │ ├── client_clone.go │ │ ├── client_clone_legacy.go │ │ ├── compression.go │ │ ├── conn.go │ │ ├── conn_write.go │ │ ├── conn_write_legacy.go │ │ ├── doc.go │ │ ├── join.go │ │ ├── json.go │ │ ├── mask.go │ │ ├── mask_safe.go │ │ ├── prepared.go │ │ ├── proxy.go │ │ ├── server.go │ │ ├── trace.go │ │ ├── trace_17.go │ │ ├── util.go │ │ └── x_net_proxy.go ├── okzk │ └── sdnotify │ │ ├── LICENSE │ │ ├── README.md │ │ ├── notify.go │ │ ├── notify_linux.go │ │ └── util.go ├── tidwall │ ├── btree │ │ ├── LICENSE │ │ ├── PATH_HINT.md │ │ ├── README.md │ │ ├── btree.go │ │ ├── generic.go │ │ ├── map.go │ │ └── set.go │ ├── buntdb │ │ ├── LICENSE │ │ ├── README.md │ │ ├── buntdb.go │ │ └── logo.png │ ├── gjson │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SYNTAX.md │ │ ├── gjson.go │ │ └── logo.png │ ├── grect │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── grect.go │ ├── match │ │ ├── LICENSE │ │ ├── README.md │ │ └── match.go │ ├── pretty │ │ ├── LICENSE │ │ ├── README.md │ │ └── pretty.go │ ├── rtred │ │ ├── LICENSE │ │ ├── README.md │ │ ├── base │ │ │ ├── knn.go │ │ │ ├── load.go │ │ │ └── rtree.go │ │ └── rtree.go │ └── tinyqueue │ │ ├── LICENSE │ │ ├── README.md │ │ └── tinyqueue.go └── xdg-go │ ├── pbkdf2 │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ └── pbkdf2.go │ └── scram │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── client.go │ ├── client_conv.go │ ├── common.go │ ├── doc.go │ ├── parse.go │ ├── scram.go │ ├── server.go │ └── server_conv.go ├── golang.org └── x │ ├── crypto │ ├── LICENSE │ ├── PATENTS │ ├── bcrypt │ │ ├── base64.go │ │ └── bcrypt.go │ ├── blowfish │ │ ├── block.go │ │ ├── cipher.go │ │ └── const.go │ ├── ed25519 │ │ └── ed25519.go │ ├── hkdf │ │ └── hkdf.go │ └── pbkdf2 │ │ └── pbkdf2.go │ ├── sys │ ├── LICENSE │ ├── PATENTS │ ├── plan9 │ │ ├── asm.s │ │ ├── asm_plan9_386.s │ │ ├── asm_plan9_amd64.s │ │ ├── asm_plan9_arm.s │ │ ├── const_plan9.go │ │ ├── dir_plan9.go │ │ ├── env_plan9.go │ │ ├── errors_plan9.go │ │ ├── mkall.sh │ │ ├── mkerrors.sh │ │ ├── mksysnum_plan9.sh │ │ ├── pwd_go15_plan9.go │ │ ├── pwd_plan9.go │ │ ├── race.go │ │ ├── race0.go │ │ ├── str.go │ │ ├── syscall.go │ │ ├── syscall_plan9.go │ │ ├── zsyscall_plan9_386.go │ │ ├── zsyscall_plan9_amd64.go │ │ ├── zsyscall_plan9_arm.go │ │ └── zsysnum_plan9.go │ ├── unix │ │ ├── .gitignore │ │ ├── README.md │ │ ├── affinity_linux.go │ │ ├── aliases.go │ │ ├── asm_aix_ppc64.s │ │ ├── asm_bsd_386.s │ │ ├── asm_bsd_amd64.s │ │ ├── asm_bsd_arm.s │ │ ├── asm_bsd_arm64.s │ │ ├── asm_bsd_ppc64.s │ │ ├── asm_bsd_riscv64.s │ │ ├── asm_linux_386.s │ │ ├── asm_linux_amd64.s │ │ ├── asm_linux_arm.s │ │ ├── asm_linux_arm64.s │ │ ├── asm_linux_loong64.s │ │ ├── asm_linux_mips64x.s │ │ ├── asm_linux_mipsx.s │ │ ├── asm_linux_ppc64x.s │ │ ├── asm_linux_riscv64.s │ │ ├── asm_linux_s390x.s │ │ ├── asm_openbsd_mips64.s │ │ ├── asm_solaris_amd64.s │ │ ├── asm_zos_s390x.s │ │ ├── auxv.go │ │ ├── auxv_unsupported.go │ │ ├── bluetooth_linux.go │ │ ├── bpxsvc_zos.go │ │ ├── bpxsvc_zos.s │ │ ├── cap_freebsd.go │ │ ├── constants.go │ │ ├── dev_aix_ppc.go │ │ ├── dev_aix_ppc64.go │ │ ├── dev_darwin.go │ │ ├── dev_dragonfly.go │ │ ├── dev_freebsd.go │ │ ├── dev_linux.go │ │ ├── dev_netbsd.go │ │ ├── dev_openbsd.go │ │ ├── dev_zos.go │ │ ├── dirent.go │ │ ├── endian_big.go │ │ ├── endian_little.go │ │ ├── env_unix.go │ │ ├── fcntl.go │ │ ├── fcntl_darwin.go │ │ ├── fcntl_linux_32bit.go │ │ ├── fdset.go │ │ ├── gccgo.go │ │ ├── gccgo_c.c │ │ ├── gccgo_linux_amd64.go │ │ ├── ifreq_linux.go │ │ ├── ioctl_linux.go │ │ ├── ioctl_signed.go │ │ ├── ioctl_unsigned.go │ │ ├── ioctl_zos.go │ │ ├── mkall.sh │ │ ├── mkerrors.sh │ │ ├── mmap_nomremap.go │ │ ├── mremap.go │ │ ├── pagesize_unix.go │ │ ├── pledge_openbsd.go │ │ ├── ptrace_darwin.go │ │ ├── ptrace_ios.go │ │ ├── race.go │ │ ├── race0.go │ │ ├── readdirent_getdents.go │ │ ├── readdirent_getdirentries.go │ │ ├── sockcmsg_dragonfly.go │ │ ├── sockcmsg_linux.go │ │ ├── sockcmsg_unix.go │ │ ├── sockcmsg_unix_other.go │ │ ├── sockcmsg_zos.go │ │ ├── symaddr_zos_s390x.s │ │ ├── syscall.go │ │ ├── syscall_aix.go │ │ ├── syscall_aix_ppc.go │ │ ├── syscall_aix_ppc64.go │ │ ├── syscall_bsd.go │ │ ├── syscall_darwin.go │ │ ├── syscall_darwin_amd64.go │ │ ├── syscall_darwin_arm64.go │ │ ├── syscall_darwin_libSystem.go │ │ ├── syscall_dragonfly.go │ │ ├── syscall_dragonfly_amd64.go │ │ ├── syscall_freebsd.go │ │ ├── syscall_freebsd_386.go │ │ ├── syscall_freebsd_amd64.go │ │ ├── syscall_freebsd_arm.go │ │ ├── syscall_freebsd_arm64.go │ │ ├── syscall_freebsd_riscv64.go │ │ ├── syscall_hurd.go │ │ ├── syscall_hurd_386.go │ │ ├── syscall_illumos.go │ │ ├── syscall_linux.go │ │ ├── syscall_linux_386.go │ │ ├── syscall_linux_alarm.go │ │ ├── syscall_linux_amd64.go │ │ ├── syscall_linux_amd64_gc.go │ │ ├── syscall_linux_arm.go │ │ ├── syscall_linux_arm64.go │ │ ├── syscall_linux_gc.go │ │ ├── syscall_linux_gc_386.go │ │ ├── syscall_linux_gc_arm.go │ │ ├── syscall_linux_gccgo_386.go │ │ ├── syscall_linux_gccgo_arm.go │ │ ├── syscall_linux_loong64.go │ │ ├── syscall_linux_mips64x.go │ │ ├── syscall_linux_mipsx.go │ │ ├── syscall_linux_ppc.go │ │ ├── syscall_linux_ppc64x.go │ │ ├── syscall_linux_riscv64.go │ │ ├── syscall_linux_s390x.go │ │ ├── syscall_linux_sparc64.go │ │ ├── syscall_netbsd.go │ │ ├── syscall_netbsd_386.go │ │ ├── syscall_netbsd_amd64.go │ │ ├── syscall_netbsd_arm.go │ │ ├── syscall_netbsd_arm64.go │ │ ├── syscall_openbsd.go │ │ ├── syscall_openbsd_386.go │ │ ├── syscall_openbsd_amd64.go │ │ ├── syscall_openbsd_arm.go │ │ ├── syscall_openbsd_arm64.go │ │ ├── syscall_openbsd_libc.go │ │ ├── syscall_openbsd_mips64.go │ │ ├── syscall_openbsd_ppc64.go │ │ ├── syscall_openbsd_riscv64.go │ │ ├── syscall_solaris.go │ │ ├── syscall_solaris_amd64.go │ │ ├── syscall_unix.go │ │ ├── syscall_unix_gc.go │ │ ├── syscall_unix_gc_ppc64x.go │ │ ├── syscall_zos_s390x.go │ │ ├── sysvshm_linux.go │ │ ├── sysvshm_unix.go │ │ ├── sysvshm_unix_other.go │ │ ├── timestruct.go │ │ ├── unveil_openbsd.go │ │ ├── vgetrandom_linux.go │ │ ├── vgetrandom_unsupported.go │ │ ├── xattr_bsd.go │ │ ├── zerrors_aix_ppc.go │ │ ├── zerrors_aix_ppc64.go │ │ ├── zerrors_darwin_amd64.go │ │ ├── zerrors_darwin_arm64.go │ │ ├── zerrors_dragonfly_amd64.go │ │ ├── zerrors_freebsd_386.go │ │ ├── zerrors_freebsd_amd64.go │ │ ├── zerrors_freebsd_arm.go │ │ ├── zerrors_freebsd_arm64.go │ │ ├── zerrors_freebsd_riscv64.go │ │ ├── zerrors_linux.go │ │ ├── zerrors_linux_386.go │ │ ├── zerrors_linux_amd64.go │ │ ├── zerrors_linux_arm.go │ │ ├── zerrors_linux_arm64.go │ │ ├── zerrors_linux_loong64.go │ │ ├── zerrors_linux_mips.go │ │ ├── zerrors_linux_mips64.go │ │ ├── zerrors_linux_mips64le.go │ │ ├── zerrors_linux_mipsle.go │ │ ├── zerrors_linux_ppc.go │ │ ├── zerrors_linux_ppc64.go │ │ ├── zerrors_linux_ppc64le.go │ │ ├── zerrors_linux_riscv64.go │ │ ├── zerrors_linux_s390x.go │ │ ├── zerrors_linux_sparc64.go │ │ ├── zerrors_netbsd_386.go │ │ ├── zerrors_netbsd_amd64.go │ │ ├── zerrors_netbsd_arm.go │ │ ├── zerrors_netbsd_arm64.go │ │ ├── zerrors_openbsd_386.go │ │ ├── zerrors_openbsd_amd64.go │ │ ├── zerrors_openbsd_arm.go │ │ ├── zerrors_openbsd_arm64.go │ │ ├── zerrors_openbsd_mips64.go │ │ ├── zerrors_openbsd_ppc64.go │ │ ├── zerrors_openbsd_riscv64.go │ │ ├── zerrors_solaris_amd64.go │ │ ├── zerrors_zos_s390x.go │ │ ├── zptrace_armnn_linux.go │ │ ├── zptrace_linux_arm64.go │ │ ├── zptrace_mipsnn_linux.go │ │ ├── zptrace_mipsnnle_linux.go │ │ ├── zptrace_x86_linux.go │ │ ├── zsymaddr_zos_s390x.s │ │ ├── zsyscall_aix_ppc.go │ │ ├── zsyscall_aix_ppc64.go │ │ ├── zsyscall_aix_ppc64_gc.go │ │ ├── zsyscall_aix_ppc64_gccgo.go │ │ ├── zsyscall_darwin_amd64.go │ │ ├── zsyscall_darwin_amd64.s │ │ ├── zsyscall_darwin_arm64.go │ │ ├── zsyscall_darwin_arm64.s │ │ ├── zsyscall_dragonfly_amd64.go │ │ ├── zsyscall_freebsd_386.go │ │ ├── zsyscall_freebsd_amd64.go │ │ ├── zsyscall_freebsd_arm.go │ │ ├── zsyscall_freebsd_arm64.go │ │ ├── zsyscall_freebsd_riscv64.go │ │ ├── zsyscall_illumos_amd64.go │ │ ├── zsyscall_linux.go │ │ ├── zsyscall_linux_386.go │ │ ├── zsyscall_linux_amd64.go │ │ ├── zsyscall_linux_arm.go │ │ ├── zsyscall_linux_arm64.go │ │ ├── zsyscall_linux_loong64.go │ │ ├── zsyscall_linux_mips.go │ │ ├── zsyscall_linux_mips64.go │ │ ├── zsyscall_linux_mips64le.go │ │ ├── zsyscall_linux_mipsle.go │ │ ├── zsyscall_linux_ppc.go │ │ ├── zsyscall_linux_ppc64.go │ │ ├── zsyscall_linux_ppc64le.go │ │ ├── zsyscall_linux_riscv64.go │ │ ├── zsyscall_linux_s390x.go │ │ ├── zsyscall_linux_sparc64.go │ │ ├── zsyscall_netbsd_386.go │ │ ├── zsyscall_netbsd_amd64.go │ │ ├── zsyscall_netbsd_arm.go │ │ ├── zsyscall_netbsd_arm64.go │ │ ├── zsyscall_openbsd_386.go │ │ ├── zsyscall_openbsd_386.s │ │ ├── zsyscall_openbsd_amd64.go │ │ ├── zsyscall_openbsd_amd64.s │ │ ├── zsyscall_openbsd_arm.go │ │ ├── zsyscall_openbsd_arm.s │ │ ├── zsyscall_openbsd_arm64.go │ │ ├── zsyscall_openbsd_arm64.s │ │ ├── zsyscall_openbsd_mips64.go │ │ ├── zsyscall_openbsd_mips64.s │ │ ├── zsyscall_openbsd_ppc64.go │ │ ├── zsyscall_openbsd_ppc64.s │ │ ├── zsyscall_openbsd_riscv64.go │ │ ├── zsyscall_openbsd_riscv64.s │ │ ├── zsyscall_solaris_amd64.go │ │ ├── zsyscall_zos_s390x.go │ │ ├── zsysctl_openbsd_386.go │ │ ├── zsysctl_openbsd_amd64.go │ │ ├── zsysctl_openbsd_arm.go │ │ ├── zsysctl_openbsd_arm64.go │ │ ├── zsysctl_openbsd_mips64.go │ │ ├── zsysctl_openbsd_ppc64.go │ │ ├── zsysctl_openbsd_riscv64.go │ │ ├── zsysnum_darwin_amd64.go │ │ ├── zsysnum_darwin_arm64.go │ │ ├── zsysnum_dragonfly_amd64.go │ │ ├── zsysnum_freebsd_386.go │ │ ├── zsysnum_freebsd_amd64.go │ │ ├── zsysnum_freebsd_arm.go │ │ ├── zsysnum_freebsd_arm64.go │ │ ├── zsysnum_freebsd_riscv64.go │ │ ├── zsysnum_linux_386.go │ │ ├── zsysnum_linux_amd64.go │ │ ├── zsysnum_linux_arm.go │ │ ├── zsysnum_linux_arm64.go │ │ ├── zsysnum_linux_loong64.go │ │ ├── zsysnum_linux_mips.go │ │ ├── zsysnum_linux_mips64.go │ │ ├── zsysnum_linux_mips64le.go │ │ ├── zsysnum_linux_mipsle.go │ │ ├── zsysnum_linux_ppc.go │ │ ├── zsysnum_linux_ppc64.go │ │ ├── zsysnum_linux_ppc64le.go │ │ ├── zsysnum_linux_riscv64.go │ │ ├── zsysnum_linux_s390x.go │ │ ├── zsysnum_linux_sparc64.go │ │ ├── zsysnum_netbsd_386.go │ │ ├── zsysnum_netbsd_amd64.go │ │ ├── zsysnum_netbsd_arm.go │ │ ├── zsysnum_netbsd_arm64.go │ │ ├── zsysnum_openbsd_386.go │ │ ├── zsysnum_openbsd_amd64.go │ │ ├── zsysnum_openbsd_arm.go │ │ ├── zsysnum_openbsd_arm64.go │ │ ├── zsysnum_openbsd_mips64.go │ │ ├── zsysnum_openbsd_ppc64.go │ │ ├── zsysnum_openbsd_riscv64.go │ │ ├── zsysnum_zos_s390x.go │ │ ├── ztypes_aix_ppc.go │ │ ├── ztypes_aix_ppc64.go │ │ ├── ztypes_darwin_amd64.go │ │ ├── ztypes_darwin_arm64.go │ │ ├── ztypes_dragonfly_amd64.go │ │ ├── ztypes_freebsd_386.go │ │ ├── ztypes_freebsd_amd64.go │ │ ├── ztypes_freebsd_arm.go │ │ ├── ztypes_freebsd_arm64.go │ │ ├── ztypes_freebsd_riscv64.go │ │ ├── ztypes_linux.go │ │ ├── ztypes_linux_386.go │ │ ├── ztypes_linux_amd64.go │ │ ├── ztypes_linux_arm.go │ │ ├── ztypes_linux_arm64.go │ │ ├── ztypes_linux_loong64.go │ │ ├── ztypes_linux_mips.go │ │ ├── ztypes_linux_mips64.go │ │ ├── ztypes_linux_mips64le.go │ │ ├── ztypes_linux_mipsle.go │ │ ├── ztypes_linux_ppc.go │ │ ├── ztypes_linux_ppc64.go │ │ ├── ztypes_linux_ppc64le.go │ │ ├── ztypes_linux_riscv64.go │ │ ├── ztypes_linux_s390x.go │ │ ├── ztypes_linux_sparc64.go │ │ ├── ztypes_netbsd_386.go │ │ ├── ztypes_netbsd_amd64.go │ │ ├── ztypes_netbsd_arm.go │ │ ├── ztypes_netbsd_arm64.go │ │ ├── ztypes_openbsd_386.go │ │ ├── ztypes_openbsd_amd64.go │ │ ├── ztypes_openbsd_arm.go │ │ ├── ztypes_openbsd_arm64.go │ │ ├── ztypes_openbsd_mips64.go │ │ ├── ztypes_openbsd_ppc64.go │ │ ├── ztypes_openbsd_riscv64.go │ │ ├── ztypes_solaris_amd64.go │ │ └── ztypes_zos_s390x.go │ └── windows │ │ ├── aliases.go │ │ ├── dll_windows.go │ │ ├── env_windows.go │ │ ├── eventlog.go │ │ ├── exec_windows.go │ │ ├── memory_windows.go │ │ ├── mkerrors.bash │ │ ├── mkknownfolderids.bash │ │ ├── mksyscall.go │ │ ├── race.go │ │ ├── race0.go │ │ ├── security_windows.go │ │ ├── service.go │ │ ├── setupapi_windows.go │ │ ├── str.go │ │ ├── syscall.go │ │ ├── syscall_windows.go │ │ ├── types_windows.go │ │ ├── types_windows_386.go │ │ ├── types_windows_amd64.go │ │ ├── types_windows_arm.go │ │ ├── types_windows_arm64.go │ │ ├── zerrors_windows.go │ │ ├── zknownfolderids_windows.go │ │ └── zsyscall_windows.go │ ├── term │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── PATENTS │ ├── README.md │ ├── codereview.cfg │ ├── term.go │ ├── term_plan9.go │ ├── term_unix.go │ ├── term_unix_bsd.go │ ├── term_unix_other.go │ ├── term_unsupported.go │ ├── term_windows.go │ └── terminal.go │ └── text │ ├── LICENSE │ ├── PATENTS │ ├── cases │ ├── cases.go │ ├── context.go │ ├── fold.go │ ├── icu.go │ ├── info.go │ ├── map.go │ ├── tables10.0.0.go │ ├── tables11.0.0.go │ ├── tables12.0.0.go │ ├── tables13.0.0.go │ ├── tables15.0.0.go │ ├── tables9.0.0.go │ └── trieval.go │ ├── internal │ ├── internal.go │ ├── language │ │ ├── common.go │ │ ├── compact.go │ │ ├── compact │ │ │ ├── compact.go │ │ │ ├── language.go │ │ │ ├── parents.go │ │ │ ├── tables.go │ │ │ └── tags.go │ │ ├── compose.go │ │ ├── coverage.go │ │ ├── language.go │ │ ├── lookup.go │ │ ├── match.go │ │ ├── parse.go │ │ ├── tables.go │ │ └── tags.go │ ├── match.go │ └── tag │ │ └── tag.go │ ├── language │ ├── coverage.go │ ├── doc.go │ ├── language.go │ ├── match.go │ ├── parse.go │ ├── tables.go │ └── tags.go │ ├── runes │ ├── cond.go │ └── runes.go │ ├── secure │ ├── bidirule │ │ ├── bidirule.go │ │ ├── bidirule10.0.0.go │ │ └── bidirule9.0.0.go │ └── precis │ │ ├── class.go │ │ ├── context.go │ │ ├── doc.go │ │ ├── nickname.go │ │ ├── options.go │ │ ├── profile.go │ │ ├── profiles.go │ │ ├── tables10.0.0.go │ │ ├── tables11.0.0.go │ │ ├── tables12.0.0.go │ │ ├── tables13.0.0.go │ │ ├── tables15.0.0.go │ │ ├── tables9.0.0.go │ │ ├── transformer.go │ │ └── trieval.go │ ├── transform │ └── transform.go │ ├── unicode │ ├── bidi │ │ ├── bidi.go │ │ ├── bracket.go │ │ ├── core.go │ │ ├── prop.go │ │ ├── tables10.0.0.go │ │ ├── tables11.0.0.go │ │ ├── tables12.0.0.go │ │ ├── tables13.0.0.go │ │ ├── tables15.0.0.go │ │ ├── tables9.0.0.go │ │ └── trieval.go │ └── norm │ │ ├── composition.go │ │ ├── forminfo.go │ │ ├── input.go │ │ ├── iter.go │ │ ├── normalize.go │ │ ├── readwriter.go │ │ ├── tables10.0.0.go │ │ ├── tables11.0.0.go │ │ ├── tables12.0.0.go │ │ ├── tables13.0.0.go │ │ ├── tables15.0.0.go │ │ ├── tables9.0.0.go │ │ ├── transform.go │ │ └── trie.go │ └── width │ ├── kind_string.go │ ├── tables10.0.0.go │ ├── tables11.0.0.go │ ├── tables12.0.0.go │ ├── tables13.0.0.go │ ├── tables15.0.0.go │ ├── tables9.0.0.go │ ├── transform.go │ ├── trieval.go │ └── width.go ├── gopkg.in └── yaml.v2 │ ├── .travis.yml │ ├── LICENSE │ ├── LICENSE.libyaml │ ├── NOTICE │ ├── README.md │ ├── apic.go │ ├── decode.go │ ├── emitterc.go │ ├── encode.go │ ├── parserc.go │ ├── readerc.go │ ├── resolve.go │ ├── scannerc.go │ ├── sorter.go │ ├── writerc.go │ ├── yaml.go │ ├── yamlh.go │ └── yamlprivateh.go └── modules.txt /.check-gofmt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # exclude vendor/ 4 | SOURCES="./ergo.go ./irc" 5 | 6 | if [ "$1" = "--fix" ]; then 7 | exec gofmt -s -w $SOURCES 8 | fi 9 | 10 | if [ -n "$(gofmt -s -l $SOURCES)" ]; then 11 | echo "Go code is not formatted correctly with \`gofmt -s\`:" 12 | gofmt -s -d $SOURCES 13 | exit 1 14 | fi 15 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | vendor/* linguist-vendored 2 | languages/* linguist-vendored 3 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: "build" 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - "master" 7 | - "stable" 8 | push: 9 | branches: 10 | - "master" 11 | - "stable" 12 | 13 | jobs: 14 | build: 15 | runs-on: "ubuntu-24.04" 16 | steps: 17 | - name: "checkout repository" 18 | uses: "actions/checkout@v3" 19 | - name: "setup go" 20 | uses: "actions/setup-go@v3" 21 | with: 22 | go-version: "1.24" 23 | - name: "install python3-pytest" 24 | run: "sudo apt install -y python3-pytest" 25 | - name: "make install" 26 | run: "make install" 27 | - name: "make test" 28 | run: "make test" 29 | - name: "make smoke" 30 | run: "make smoke" 31 | - name: "make irctest" 32 | run: "make irctest" 33 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "irctest"] 2 | path = irctest 3 | url = https://github.com/ergochat/irctest 4 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all install build release capdefs test smoke gofmt irctest 2 | 3 | GIT_COMMIT := $(shell git rev-parse HEAD 2> /dev/null) 4 | GIT_TAG := $(shell git tag --points-at HEAD 2> /dev/null | head -n 1) 5 | 6 | # disable linking against native libc / libpthread by default; 7 | # this can be overridden by passing CGO_ENABLED=1 to make 8 | export CGO_ENABLED ?= 0 9 | 10 | capdef_file = ./irc/caps/defs.go 11 | 12 | all: build 13 | 14 | install: 15 | go install -v -ldflags "-X main.commit=$(GIT_COMMIT) -X main.version=$(GIT_TAG)" 16 | 17 | build: 18 | go build -v -ldflags "-X main.commit=$(GIT_COMMIT) -X main.version=$(GIT_TAG)" 19 | 20 | release: 21 | goreleaser --skip=publish --clean 22 | 23 | capdefs: 24 | python3 ./gencapdefs.py > ${capdef_file} 25 | 26 | test: 27 | python3 ./gencapdefs.py | diff - ${capdef_file} 28 | go test ./... 29 | go vet ./... 30 | ./.check-gofmt.sh 31 | 32 | smoke: install 33 | ergo mkcerts --conf ./default.yaml || true 34 | ergo run --conf ./default.yaml --smoke 35 | 36 | gofmt: 37 | ./.check-gofmt.sh --fix 38 | 39 | irctest: install 40 | git submodule update --init 41 | cd irctest && make ergo 42 | -------------------------------------------------------------------------------- /distrib/SMF/ergo: -------------------------------------------------------------------------------- 1 | #!/sbin/sh 2 | # 3 | # SMF method script for ergo - used by manifest file ergo.xml 4 | # Created 22/11/2021 by georg@lysergic.dev 5 | 6 | . /lib/svc/share/smf_include.sh 7 | 8 | case $1 in 9 | 'start') 10 | exec /opt/ergo/ergo run --conf /opt/ergo/ircd.yaml 11 | ;; 12 | 13 | 'refresh' ) 14 | exec pkill -1 -U ergo -x ergo 15 | ;; 16 | 'stop' ) 17 | exec pkill -U ergo -x ergo 18 | ;; 19 | 20 | *) 21 | echo "Usage: $0 { start | refresh | stop }" 22 | exit 1 23 | ;; 24 | esac 25 | 26 | exit $? 27 | -------------------------------------------------------------------------------- /distrib/apparmor/ergo: -------------------------------------------------------------------------------- 1 | include 2 | 3 | # Georg Pfuetzenreuter 4 | # AppArmor confinement for ergo and ergo-ldap 5 | 6 | profile ergo /usr/bin/ergo { 7 | include 8 | include 9 | include 10 | 11 | /etc/ergo/ircd.{motd,yaml} r, 12 | /etc/ssl/irc/{crt,key} r, 13 | /etc/ssl/ergo/{crt,key} r, 14 | /usr/bin/ergo mr, 15 | /proc/sys/net/core/somaxconn r, 16 | /sys/kernel/mm/transparent_hugepage/hpage_pmd_size r, 17 | /usr/share/ergo/languages/{,*.lang.json,*.yaml} r, 18 | owner /run/ergo/ircd.lock rwk, 19 | owner /var/lib/ergo/ircd.db rw, 20 | 21 | include if exists 22 | 23 | } 24 | 25 | profile ergo-ldap /usr/bin/ergo-ldap { 26 | include 27 | include 28 | 29 | /usr/bin/ergo-ldap rm, 30 | /etc/ergo/ldap.yaml r, 31 | 32 | include if exists 33 | 34 | } 35 | -------------------------------------------------------------------------------- /distrib/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | services: 4 | ergo: 5 | init: true 6 | image: ghcr.io/ergochat/ergo:stable 7 | ports: 8 | - "6667:6667/tcp" 9 | - "6697:6697/tcp" 10 | volumes: 11 | - data:/ircd 12 | deploy: 13 | placement: 14 | constraints: 15 | - "node.role == manager" 16 | restart_policy: 17 | condition: on-failure 18 | replicas: 1 19 | 20 | volumes: 21 | data: 22 | -------------------------------------------------------------------------------- /distrib/docker/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # make config file 4 | if [ ! -f "/ircd/ircd.yaml" ]; then 5 | awk '{gsub(/path: languages/,"path: /ircd-bin/languages")}1' /ircd-bin/default.yaml > /tmp/ircd.yaml 6 | 7 | # change default oper passwd 8 | OPERPASS=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c20) 9 | echo "Oper username:password is admin:$OPERPASS" 10 | ENCRYPTEDPASS=$(echo "$OPERPASS" | /ircd-bin/ergo genpasswd) 11 | ORIGINALPASS='\$2a\$04\$0123456789abcdef0123456789abcdef0123456789abcdef01234' 12 | 13 | awk "{gsub(/password: \\\"$ORIGINALPASS\\\"/,\"password: \\\"$ENCRYPTEDPASS\\\"\")}1" /tmp/ircd.yaml > /tmp/ircd2.yaml 14 | 15 | unset OPERPASS 16 | unset ENCRYPTEDPASS 17 | unset ORIGINALPASS 18 | 19 | mv /tmp/ircd2.yaml /ircd/ircd.yaml 20 | fi 21 | 22 | # make self-signed certs if they don't already exist 23 | /ircd-bin/ergo mkcerts 24 | 25 | # run! 26 | exec /ircd-bin/ergo run 27 | -------------------------------------------------------------------------------- /distrib/openrc/ergo.confd: -------------------------------------------------------------------------------- 1 | # /etc/conf.d/ergo: config file for /etc/init.d/ergo 2 | ERGO_CONFIGFILE="/etc/ergo/ircd.yaml" 3 | ERGO_USERNAME="ergo" 4 | -------------------------------------------------------------------------------- /distrib/openrc/ergo.initd: -------------------------------------------------------------------------------- 1 | #!/sbin/openrc-run 2 | name=${RC_SVCNAME} 3 | description="ergo IRC daemon" 4 | 5 | command=/usr/bin/ergo 6 | command_args="run --conf ${ERGO_CONFIGFILE:-'/etc/ergo/ircd.yaml'}" 7 | command_user=${ERGO_USERNAME:-ergo} 8 | command_background=true 9 | 10 | pidfile=/var/run/${RC_SVCNAME}.pid 11 | 12 | output_log="/var/log/${RC_SVCNAME}.out" 13 | error_log="/var/log/${RC_SVCNAME}.err" 14 | # --wait: to wait 1 second after launching to see if it survived startup 15 | start_stop_daemon_args="--wait 1000" 16 | 17 | extra_started_commands="reload" 18 | 19 | depend() { 20 | use dns 21 | provide ircd 22 | } 23 | 24 | start_pre() { 25 | checkpath --owner ${command_user}:${command_user} --mode 0640 --file /var/log/${RC_SVCNAME}.out /var/log/${RC_SVCNAME}.err 26 | } 27 | 28 | reload() { 29 | ebegin "Reloading ${RC_SVCNAME}" 30 | start-stop-daemon --signal HUP --pidfile "${pidfile}" 31 | eend $? 32 | } 33 | -------------------------------------------------------------------------------- /distrib/s6/README: -------------------------------------------------------------------------------- 1 | This directory contains s6 srv and log services for ergo. 2 | 3 | These services expect that ergo is installed to /opt/ergo, 4 | and an ergo system user that owns /opt/ergo. 5 | 6 | To install: 7 | cp -r ergo-srv ergo-log /etc/s6/sv/ 8 | cp ergo.conf /etc/s6/config/ 9 | -------------------------------------------------------------------------------- /distrib/s6/ergo-log/consumer-for: -------------------------------------------------------------------------------- 1 | ergo-srv 2 | -------------------------------------------------------------------------------- /distrib/s6/ergo-log/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /distrib/s6/ergo-log/pipeline-name: -------------------------------------------------------------------------------- 1 | ergo 2 | -------------------------------------------------------------------------------- /distrib/s6/ergo-log/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/execlineb -P 2 | envfile /etc/s6/config/ergo.conf 3 | importas -sCiu DIRECTIVES DIRECTIVES 4 | ifelse { test -w /var/log } { 5 | foreground { install -d -o s6log -g s6log /var/log/ergo } 6 | s6-setuidgid s6log exec -c s6-log -d3 -b -- ${DIRECTIVES} /var/log/ergo 7 | } 8 | foreground { install -d -o s6log -g s6log /run/log/ergo } 9 | s6-setuidgid s6log exec -c s6-log -d3 -b -- ${DIRECTIVES} /run/log/ergo 10 | -------------------------------------------------------------------------------- /distrib/s6/ergo-log/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /distrib/s6/ergo-srv/producer-for: -------------------------------------------------------------------------------- 1 | ergo-log 2 | -------------------------------------------------------------------------------- /distrib/s6/ergo-srv/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/execlineb -P 2 | fdmove -c 2 1 3 | execline-cd /opt/ergo 4 | s6-setuidgid ergo ./ergo run 5 | -------------------------------------------------------------------------------- /distrib/s6/ergo-srv/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /distrib/s6/ergo.conf: -------------------------------------------------------------------------------- 1 | # This configures the directives used for s6-log in the log service. 2 | DIRECTIVES="n3 s2000000" 3 | -------------------------------------------------------------------------------- /distrib/systemd/ergo.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=ergo 3 | After=network.target 4 | # If you are using MySQL for history storage, comment out the above line 5 | # and uncomment these two instead (you must independently install and configure 6 | # MySQL for your system): 7 | # Wants=mysql.service 8 | # After=network.target mysql.service 9 | 10 | [Service] 11 | Type=notify 12 | User=ergo 13 | WorkingDirectory=/home/ergo 14 | ExecStart=/home/ergo/ergo run --conf /home/ergo/ircd.yaml 15 | ExecReload=/bin/kill -HUP $MAINPID 16 | Restart=on-failure 17 | LimitNOFILE=1048576 18 | NotifyAccess=main 19 | # Uncomment this for a hidden service: 20 | # PrivateNetwork=true 21 | 22 | [Install] 23 | WantedBy=multi-user.target 24 | -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ergochat/ergo/7828218bc7b6a7092eeb275910e28793541290cb/docs/logo.png -------------------------------------------------------------------------------- /irc/constants.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2012-2014 Jeremy Latt 2 | // Copyright (c) 2014-2015 Edmund Huber 3 | // Copyright (c) 2016-2017 Daniel Oaks 4 | // released under the MIT license 5 | 6 | package irc 7 | 8 | const ( 9 | // maxLastArgLength is used to simply cap off the final argument when creating general messages where we need to select a limit. 10 | // for instance, in MONITOR lists, RPL_ISUPPORT lists, etc. 11 | maxLastArgLength = 400 12 | // maxTargets is the maximum number of targets for PRIVMSG and NOTICE. 13 | maxTargets = 4 14 | ) 15 | -------------------------------------------------------------------------------- /irc/flatip/adhoc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 Shivaram Lingamneni 2 | // Released under the MIT license 3 | 4 | package flatip 5 | 6 | // begin ad-hoc utilities 7 | 8 | // ParseToNormalizedNet attempts to interpret a string either as an IP 9 | // network in CIDR notation, returning an IPNet, or as an IP address, 10 | // returning an IPNet that contains only that address. 11 | func ParseToNormalizedNet(netstr string) (ipnet IPNet, err error) { 12 | _, ipnet, err = ParseCIDR(netstr) 13 | if err == nil { 14 | return 15 | } 16 | ip, err := ParseIP(netstr) 17 | if err == nil { 18 | ipnet.IP = ip 19 | ipnet.PrefixLen = 128 20 | } 21 | return 22 | } 23 | 24 | // IPInNets is a convenience function for testing whether an IP is contained 25 | // in any member of a slice of IPNet's. 26 | func IPInNets(addr IP, nets []IPNet) bool { 27 | for _, net := range nets { 28 | if net.Contains(addr) { 29 | return true 30 | } 31 | } 32 | return false 33 | } 34 | -------------------------------------------------------------------------------- /irc/flock/flock.go: -------------------------------------------------------------------------------- 1 | //go:build !(plan9 || solaris) 2 | 3 | package flock 4 | 5 | import ( 6 | "errors" 7 | 8 | "github.com/gofrs/flock" 9 | ) 10 | 11 | var ( 12 | CouldntAcquire = errors.New("Couldn't acquire flock (is another Ergo running?)") 13 | ) 14 | 15 | func TryAcquireFlock(path string) (fl Flocker, err error) { 16 | f := flock.New(path) 17 | success, err := f.TryLock() 18 | if err != nil { 19 | return nil, err 20 | } else if !success { 21 | return nil, CouldntAcquire 22 | } 23 | return f, nil 24 | } 25 | -------------------------------------------------------------------------------- /irc/flock/flock_iface.go: -------------------------------------------------------------------------------- 1 | package flock 2 | 3 | // documentation for github.com/gofrs/flock incorrectly claims that 4 | // Flock implements sync.Locker; it does not because the Unlock method 5 | // has a return type (err). 6 | type Flocker interface { 7 | Unlock() error 8 | } 9 | 10 | type noopFlocker struct{} 11 | 12 | func (n *noopFlocker) Unlock() error { 13 | return nil 14 | } 15 | -------------------------------------------------------------------------------- /irc/flock/flock_unsupported.go: -------------------------------------------------------------------------------- 1 | //go:build plan9 || solaris 2 | 3 | package flock 4 | 5 | func TryAcquireFlock(path string) (fl Flocker, err error) { 6 | return &noopFlocker{}, nil 7 | } 8 | -------------------------------------------------------------------------------- /irc/migrations/legacy.go: -------------------------------------------------------------------------------- 1 | package migrations 2 | 3 | import ( 4 | "golang.org/x/crypto/bcrypt" 5 | ) 6 | 7 | // See the v12-to-v13 schema change. The format of this hash is: 8 | // 30 bytes of global salt, 30 bytes of per-passphrase salt, then the bcrypt hash 9 | func CheckOragonoPassphraseV0(hash, passphrase []byte) error { 10 | globalSalt := hash[:30] 11 | passphraseSalt := hash[30:60] 12 | bcryptHash := hash[60:] 13 | assembledPasswordBytes := make([]byte, 0, 60+len(passphrase)+2) 14 | assembledPasswordBytes = append(assembledPasswordBytes, globalSalt...) 15 | assembledPasswordBytes = append(assembledPasswordBytes, '-') 16 | assembledPasswordBytes = append(assembledPasswordBytes, passphraseSalt...) 17 | assembledPasswordBytes = append(assembledPasswordBytes, '-') 18 | assembledPasswordBytes = append(assembledPasswordBytes, passphrase...) 19 | return bcrypt.CompareHashAndPassword(bcryptHash, assembledPasswordBytes) 20 | } 21 | -------------------------------------------------------------------------------- /irc/misc_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package irc 5 | 6 | import ( 7 | "testing" 8 | "time" 9 | ) 10 | 11 | func TestZncTimestampParser(t *testing.T) { 12 | assertEqual(zncWireTimeToTime("1558338348.988"), time.Unix(1558338348, 988000000).UTC()) 13 | assertEqual(zncWireTimeToTime("1558338348.9"), time.Unix(1558338348, 900000000).UTC()) 14 | assertEqual(zncWireTimeToTime("1558338348"), time.Unix(1558338348, 0).UTC()) 15 | assertEqual(zncWireTimeToTime("1558338348.99999999999999999999999999999"), time.Unix(1558338348, 999999999).UTC()) 16 | assertEqual(zncWireTimeToTime("1558338348.999999999111111111"), time.Unix(1558338348, 999999999).UTC()) 17 | assertEqual(zncWireTimeToTime("1558338348.999999991111111111"), time.Unix(1558338348, 999999991).UTC()) 18 | assertEqual(zncWireTimeToTime(".988"), time.Unix(0, 988000000).UTC()) 19 | assertEqual(zncWireTimeToTime("0"), time.Unix(0, 0).UTC()) 20 | assertEqual(zncWireTimeToTime("garbage"), time.Unix(0, 0).UTC()) 21 | assertEqual(zncWireTimeToTime(""), time.Unix(0, 0).UTC()) 22 | } 23 | -------------------------------------------------------------------------------- /irc/mysql/config.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package mysql 5 | 6 | import ( 7 | "time" 8 | ) 9 | 10 | type Config struct { 11 | // these are intended to be written directly into the config file: 12 | Enabled bool 13 | Host string 14 | Port int 15 | SocketPath string `yaml:"socket-path"` 16 | User string 17 | Password string 18 | HistoryDatabase string `yaml:"history-database"` 19 | Timeout time.Duration 20 | MaxConns int `yaml:"max-conns"` 21 | ConnMaxLifetime time.Duration `yaml:"conn-max-lifetime"` 22 | 23 | // XXX these are copied from elsewhere in the config: 24 | ExpireTime time.Duration 25 | TrackAccountMessages bool 26 | } 27 | -------------------------------------------------------------------------------- /irc/mysql/serialization.go: -------------------------------------------------------------------------------- 1 | package mysql 2 | 3 | import ( 4 | "encoding/json" 5 | 6 | "github.com/ergochat/ergo/irc/history" 7 | "github.com/ergochat/ergo/irc/utils" 8 | ) 9 | 10 | // 123 / '{' is the magic number that means JSON; 11 | // if we want to do a binary encoding later, we just have to add different magic version numbers 12 | 13 | func marshalItem(item *history.Item) (result []byte, err error) { 14 | return json.Marshal(item) 15 | } 16 | 17 | func unmarshalItem(data []byte, result *history.Item) (err error) { 18 | return json.Unmarshal(data, result) 19 | } 20 | 21 | func decodeMsgid(msgid string) ([]byte, error) { 22 | return utils.B32Encoder.DecodeString(msgid) 23 | } 24 | -------------------------------------------------------------------------------- /irc/panic.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package irc 5 | 6 | import ( 7 | "fmt" 8 | "runtime/debug" 9 | "time" 10 | ) 11 | 12 | // HandlePanic is a general-purpose panic handler for ad-hoc goroutines. 13 | // Because of the semantics of `recover`, it must be called directly 14 | // from the routine on whose call stack the panic would occur, with `defer`, 15 | // e.g. `defer server.HandlePanic()` 16 | func (server *Server) HandlePanic(restartable func()) { 17 | if r := recover(); r != nil { 18 | server.logger.Error("internal", fmt.Sprintf("Panic encountered: %v\n%s", r, debug.Stack())) 19 | if restartable != nil { 20 | time.Sleep(time.Second) 21 | go restartable() 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /irc/serde.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package irc 5 | 6 | import ( 7 | "strconv" 8 | 9 | "github.com/ergochat/ergo/irc/datastore" 10 | "github.com/ergochat/ergo/irc/logger" 11 | ) 12 | 13 | type Serializable interface { 14 | Serialize() ([]byte, error) 15 | Deserialize([]byte) error 16 | } 17 | 18 | func FetchAndDeserializeAll[T any, C interface { 19 | *T 20 | Serializable 21 | }](table datastore.Table, dstore datastore.Datastore, log *logger.Manager) (result []T, err error) { 22 | rawRecords, err := dstore.GetAll(table) 23 | if err != nil { 24 | return 25 | } 26 | result = make([]T, len(rawRecords)) 27 | pos := 0 28 | for _, record := range rawRecords { 29 | err := C(&result[pos]).Deserialize(record.Value) 30 | if err != nil { 31 | log.Error("internal", "deserialization error", strconv.Itoa(int(table)), record.UUID.String(), err.Error()) 32 | continue 33 | } 34 | pos++ 35 | } 36 | return result[:pos], nil 37 | } 38 | -------------------------------------------------------------------------------- /irc/usermaskset_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package irc 5 | 6 | import ( 7 | "testing" 8 | ) 9 | 10 | func TestUserMaskSet(t *testing.T) { 11 | s := NewUserMaskSet() 12 | 13 | if s.Match("horse!~evan@tor-network.onion") { 14 | t.Errorf("empty set should not match anything") 15 | } 16 | 17 | s.Add("m:horse!*@*", "", "") 18 | if s.Match("horse!~evan@tor-network.onion") { 19 | t.Errorf("mute extbans should not Match(), only MatchMute()") 20 | } 21 | 22 | s.Add("*!~evan@*", "", "") 23 | if !s.Match("horse!~evan@tor-network.onion") { 24 | t.Errorf("expected Match() failed") 25 | } 26 | if s.Match("horse!~horse@tor-network.onion") { 27 | t.Errorf("unexpected Match() succeeded") 28 | } 29 | 30 | if !s.MatchMute("horse!~evan@tor-network.onion") { 31 | t.Errorf("expected MatchMute() failed") 32 | } 33 | if s.MatchMute("evan!~evan@tor-network.onion") { 34 | t.Errorf("unexpected MatchMute() succeeded") 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /irc/utils/args_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package utils 5 | 6 | import "testing" 7 | 8 | func TestStringToBool(t *testing.T) { 9 | val, err := StringToBool("on") 10 | assertEqual(val, true, t) 11 | assertEqual(err, nil, t) 12 | 13 | val, err = StringToBool("n") 14 | assertEqual(val, false, t) 15 | assertEqual(err, nil, t) 16 | 17 | val, err = StringToBool("OFF") 18 | assertEqual(val, false, t) 19 | assertEqual(err, nil, t) 20 | 21 | val, err = StringToBool("default") 22 | assertEqual(err, ErrInvalidParams, t) 23 | } 24 | 25 | func TestSafeErrorParam(t *testing.T) { 26 | assertEqual(SafeErrorParam("hi"), "hi", t) 27 | assertEqual(SafeErrorParam("#hi"), "#hi", t) 28 | assertEqual(SafeErrorParam("#hi there"), "*", t) 29 | assertEqual(SafeErrorParam(":"), "*", t) 30 | assertEqual(SafeErrorParam("#hi:there"), "#hi:there", t) 31 | assertEqual(SafeErrorParam(""), "*", t) 32 | } 33 | -------------------------------------------------------------------------------- /irc/utils/confirmation.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package utils 5 | 6 | import ( 7 | "crypto/sha256" 8 | "encoding/binary" 9 | "time" 10 | ) 11 | 12 | // Deterministically generates a confirmation code for some destructive activity; 13 | // `name` is typically the name of the identity being destroyed (a channel being 14 | // unregistered, or the server being crashed) and `createdAt` means a different 15 | // value is required each time. 16 | func ConfirmationCode(name string, createdAt time.Time) (code string) { 17 | buf := make([]byte, len(name)+8) 18 | binary.BigEndian.PutUint64(buf, uint64(createdAt.UnixNano())) 19 | copy(buf[8:], name[:]) 20 | out := sha256.Sum256(buf) 21 | return B32Encoder.EncodeToString(out[:3]) 22 | } 23 | -------------------------------------------------------------------------------- /irc/utils/confirmation_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package utils 5 | 6 | import ( 7 | "testing" 8 | "time" 9 | ) 10 | 11 | func easyParse(timestamp string) time.Time { 12 | result, err := time.Parse("2006-01-02 15:04:05Z", timestamp) 13 | if err != nil { 14 | panic(err) 15 | } 16 | return result 17 | } 18 | 19 | func TestConfirmation(t *testing.T) { 20 | set := make(map[string]struct{}) 21 | 22 | set[ConfirmationCode("#darwin", easyParse("2006-01-01 00:00:00Z"))] = struct{}{} 23 | set[ConfirmationCode("#darwin", easyParse("2006-01-02 00:00:00Z"))] = struct{}{} 24 | set[ConfirmationCode("#xelpers", easyParse("2006-01-01 00:00:00Z"))] = struct{}{} 25 | set[ConfirmationCode("#xelpers", easyParse("2006-01-02 00:00:00Z"))] = struct{}{} 26 | 27 | if len(set) != 4 { 28 | t.Error("confirmation codes are not unique") 29 | } 30 | 31 | for code := range set { 32 | if len(code) <= 2 || len(code) >= 8 { 33 | t.Errorf("bad code: %s", code) 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /irc/utils/math.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package utils 5 | 6 | // return n such that v <= n and n == 2**i for some i 7 | func RoundUpToPowerOfTwo(v int) int { 8 | // http://graphics.stanford.edu/~seander/bithacks.html 9 | v -= 1 10 | v |= v >> 1 11 | v |= v >> 2 12 | v |= v >> 4 13 | v |= v >> 8 14 | v |= v >> 16 15 | return v + 1 16 | } 17 | -------------------------------------------------------------------------------- /irc/utils/math_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package utils 5 | 6 | import ( 7 | "testing" 8 | ) 9 | 10 | func TestRoundUp(t *testing.T) { 11 | assertEqual(RoundUpToPowerOfTwo(2), 2, t) 12 | assertEqual(RoundUpToPowerOfTwo(3), 4, t) 13 | assertEqual(RoundUpToPowerOfTwo(64), 64, t) 14 | assertEqual(RoundUpToPowerOfTwo(65), 128, t) 15 | assertEqual(RoundUpToPowerOfTwo(100), 128, t) 16 | assertEqual(RoundUpToPowerOfTwo(1000), 1024, t) 17 | assertEqual(RoundUpToPowerOfTwo(1025), 2048, t) 18 | assertEqual(RoundUpToPowerOfTwo(269435457), 536870912, t) 19 | } 20 | -------------------------------------------------------------------------------- /irc/utils/net_linux.go: -------------------------------------------------------------------------------- 1 | //go:build linux 2 | // +build linux 3 | 4 | package utils 5 | 6 | import ( 7 | "fmt" 8 | "net" 9 | "syscall" 10 | ) 11 | 12 | // Output a description of a connection that can identify it to other systems 13 | // administration tools. 14 | func DescribeConn(c net.Conn) (description string) { 15 | description = "" 16 | switch conn := c.(type) { 17 | case *net.UnixConn: 18 | f, err := conn.File() 19 | if err != nil { 20 | return 21 | } 22 | defer f.Close() 23 | ucred, err := syscall.GetsockoptUcred(int(f.Fd()), syscall.SOL_SOCKET, syscall.SO_PEERCRED) 24 | if err != nil { 25 | return 26 | } 27 | return fmt.Sprintf("%s <-> %s [pid=%d, uid=%d]", conn.LocalAddr().String(), conn.RemoteAddr().String(), ucred.Pid, ucred.Uid) 28 | default: 29 | // *net.TCPConn or *tls.Conn 30 | return fmt.Sprintf("%s <-> %s", conn.LocalAddr().String(), conn.RemoteAddr().String()) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /irc/utils/net_nonlinux.go: -------------------------------------------------------------------------------- 1 | //go:build !linux 2 | // +build !linux 3 | 4 | package utils 5 | 6 | import ( 7 | "fmt" 8 | "net" 9 | ) 10 | 11 | // Output a description of a connection that can identify it to other systems 12 | // administration tools. 13 | func DescribeConn(conn net.Conn) (description string) { 14 | return fmt.Sprintf("%s <-> %s", conn.LocalAddr().String(), conn.RemoteAddr().String()) 15 | } 16 | -------------------------------------------------------------------------------- /irc/utils/os.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Shivaram Lingamneni 2 | 3 | package utils 4 | 5 | import ( 6 | "io" 7 | "os" 8 | ) 9 | 10 | // implementation of `cp` (go should really provide this...) 11 | func CopyFile(src string, dst string) (err error) { 12 | in, err := os.Open(src) 13 | if err != nil { 14 | return 15 | } 16 | defer in.Close() 17 | out, err := os.Create(dst) 18 | if err != nil { 19 | return 20 | } 21 | defer func() { 22 | closeError := out.Close() 23 | if err == nil { 24 | err = closeError 25 | } 26 | }() 27 | if _, err = io.Copy(out, in); err != nil { 28 | return 29 | } 30 | return 31 | } 32 | -------------------------------------------------------------------------------- /irc/utils/signals.go: -------------------------------------------------------------------------------- 1 | //go:build !plan9 && !windows 2 | 3 | // Copyright (c) 2020 Shivaram Lingamneni 4 | // released under the MIT license 5 | 6 | package utils 7 | 8 | import ( 9 | "os" 10 | "syscall" 11 | ) 12 | 13 | var ( 14 | // ServerExitSignals are the signals the server will exit on. 15 | ServerExitSignals = []os.Signal{ 16 | syscall.SIGINT, 17 | syscall.SIGTERM, 18 | syscall.SIGQUIT, 19 | } 20 | 21 | ServerTracebackSignals = []os.Signal{ 22 | syscall.SIGUSR1, 23 | } 24 | ) 25 | -------------------------------------------------------------------------------- /irc/utils/signals_plan9.go: -------------------------------------------------------------------------------- 1 | //go:build plan9 2 | 3 | // Copyright (c) 2020 Shivaram Lingamneni 4 | // released under the MIT license 5 | 6 | package utils 7 | 8 | import ( 9 | "os" 10 | "syscall" 11 | ) 12 | 13 | var ( 14 | // ServerExitSignals are the signals the server will exit on. 15 | // (no SIGQUIT on plan9) 16 | ServerExitSignals = []os.Signal{ 17 | syscall.SIGINT, 18 | syscall.SIGTERM, 19 | } 20 | 21 | // no SIGUSR1 on plan9 22 | ServerTracebackSignals []os.Signal 23 | ) 24 | -------------------------------------------------------------------------------- /irc/utils/signals_windows.go: -------------------------------------------------------------------------------- 1 | //go:build windows 2 | 3 | // Copyright (c) 2020 Shivaram Lingamneni 4 | // released under the MIT license 5 | 6 | package utils 7 | 8 | import ( 9 | "os" 10 | "syscall" 11 | ) 12 | 13 | var ( 14 | // ServerExitSignals are the signals the server will exit on. 15 | ServerExitSignals = []os.Signal{ 16 | syscall.SIGINT, 17 | syscall.SIGTERM, 18 | syscall.SIGQUIT, 19 | } 20 | 21 | // no SIGUSR1 on windows 22 | ServerTracebackSignals []os.Signal 23 | ) 24 | -------------------------------------------------------------------------------- /irc/utils/time.go: -------------------------------------------------------------------------------- 1 | package utils 2 | 3 | import ( 4 | "time" 5 | ) 6 | 7 | // ReadMarkerLessThanOrEqual compares times from the standpoint of 8 | // draft/read-marker (the presentation format of which truncates the time 9 | // to the millisecond). In future we might want to consider proactively rounding, 10 | // instead of truncating, the time, but this has complex implications. 11 | func ReadMarkerLessThanOrEqual(t1, t2 time.Time) bool { 12 | t1 = t1.Truncate(time.Millisecond) 13 | t2 = t2.Truncate(time.Millisecond) 14 | return t1.Before(t2) || t1.Equal(t2) 15 | } 16 | -------------------------------------------------------------------------------- /irc/utils/types.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // released under the MIT license 3 | 4 | package utils 5 | 6 | type empty struct{} 7 | 8 | type HashSet[T comparable] map[T]empty 9 | 10 | func (s HashSet[T]) Has(elem T) bool { 11 | _, ok := s[elem] 12 | return ok 13 | } 14 | 15 | func (s HashSet[T]) Add(elem T) { 16 | s[elem] = empty{} 17 | } 18 | 19 | func (s HashSet[T]) Remove(elem T) { 20 | delete(s, elem) 21 | } 22 | 23 | func SetLiteral[T comparable](elems ...T) HashSet[T] { 24 | result := make(HashSet[T], len(elems)) 25 | for _, elem := range elems { 26 | result.Add(elem) 27 | } 28 | return result 29 | } 30 | -------------------------------------------------------------------------------- /irc/version.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shivaram Lingamneni 2 | // Released under the MIT license 3 | 4 | package irc 5 | 6 | import "fmt" 7 | 8 | const ( 9 | // SemVer is the semantic version of Ergo. 10 | SemVer = "2.17.0-unreleased" 11 | ) 12 | 13 | var ( 14 | // Ver is the full version of Ergo, used in responses to clients. 15 | Ver = fmt.Sprintf("ergo-%s", SemVer) 16 | // Commit is the full git hash, if available 17 | Commit string 18 | ) 19 | 20 | // initialize version strings (these are set in package main via linker flags) 21 | func SetVersionString(version, commit string) { 22 | Commit = commit 23 | if version != "" { 24 | Ver = fmt.Sprintf("ergo-%s", version) 25 | } else if len(Commit) == 40 { 26 | Ver = fmt.Sprintf("ergo-%s-%s", SemVer, Commit[:16]) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /irc/webpush/security_test.go: -------------------------------------------------------------------------------- 1 | package webpush 2 | 3 | import ( 4 | "errors" 5 | "testing" 6 | ) 7 | 8 | func TestExternalOnlyHTTPClient(t *testing.T) { 9 | client := makeExternalOnlyClient() 10 | 11 | for _, url := range []string{ 12 | "https://127.0.0.2/test", 13 | "https://127.0.0.2:8201", 14 | "https://127.0.0.2:8201/asdf", 15 | } { 16 | _, err := client.Get(url) 17 | if err == nil || !errors.Is(err, errInternalIP) { 18 | t.Errorf("%s was not forbidden as expected (got %v)", url, err) 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /languages/README.md: -------------------------------------------------------------------------------- 1 | # Ergo's Translations 2 | 3 | These translations have been contributed by amazing people using [Crowdin](https://crowdin.com/project/ergochat). If you'd like to fix up a mistake or help add a language, feel free to pop over there! Always interested in new contributors and language support. 4 | 5 | Contributors to translations are noted in the translation's info file (the `yaml` file). You shouldn't be touching these files manually – they should be getting updated through CrowdIn. However, the `example` files exist if you want a reference for the format. To regenerate the `example` files (that get fed into CrowdIn), look at the `updatetranslations.py` file in the source directory. 6 | 7 | My eventual intent is to use these translations to help create a standard set that other IRC software authors can see, download, and use in their own software (with proper attribution to the contributors, of course). 8 | -------------------------------------------------------------------------------- /languages/af-ZA-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/af-ZA-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/af-ZA-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/af-ZA-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/af-ZA-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/af-ZA.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Afrikaans" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "af" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/ar-SA-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ar-SA-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ar-SA-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ar-SA-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ar-SA-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ar-SA.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "العربية" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "ar" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/bs-BA-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "Syntax: $bDEL $b\n\nDEL deletes a user's vhost.": "Sintaksa: $bDEL$b\n\nDEL briše korisnikov vhost.", 3 | "Syntax: $bOFF$b\n\nOFF disables your vhost, if you have one approved.": "Sintaksa: $bOFF$b\n\nOFF onemogućuje vaš već odobreni vhost.", 4 | "Syntax: $bON$b\n\nON enables your vhost, if you have one approved.": "Sintaksa: $bON$b\n\nON omogućuje vaš vhost, pod uslovom da vam je vhost odobren.", 5 | "Syntax: $bSET $b\n\nSET sets a user's vhost, bypassing the request system.": "Sintaksa: $bSET$b\n\nSET postavlja korisnikov vhost, zaobilazeći uobičajenu rutinu sistema zahtjeva.", 6 | "Syntax: $bSTATUS [user]$b\n\nSTATUS displays your current vhost, if any, and the status of your most recent\nrequest for a new one. A server operator can view someone else's status.": "Sintaksa: $bSTATUS[user]$b \n\nSTATUS prikazuje vaš trenutni vhost, ako postoji; i status vašeg posljednjeg poslanog zahtjeva za novi vhost. Server operater može vidjeti status drugih korisnika." 7 | } 8 | -------------------------------------------------------------------------------- /languages/bs-BA.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Bosanski" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "bs" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Elvedin Husic " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/ca-ES-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ca-ES-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ca-ES-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ca-ES-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ca-ES-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ca-ES.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Català" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "ca" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/cs-CZ-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/cs-CZ-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/cs-CZ-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/cs-CZ-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/cs-CZ-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/cs-CZ.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Čeština" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "cs" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/da-DK-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/da-DK-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/da-DK-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/da-DK-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/da-DK-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/da-DK.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Dansk" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "da" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/de-DE-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "Syntax: $bDEL $b\n\nDEL deletes a user's vhost.": "Syntax: $bDEL $b\n\nDEL löscht den vHost eines Kontos.", 3 | "Syntax: $bOFF$b\n\nOFF disables your vhost, if you have one approved.": "Syntax: $bOFF$b\n\nOFF deaktiviert Deinen vHost, wenn Du einen bestätigten hast.", 4 | "Syntax: $bON$b\n\nON enables your vhost, if you have one approved.": "Syntax: $bON$b\n\nON aktiviert Deinen vHost, wenn Du einen bestätigten hast.", 5 | "Syntax: $bSET $b\n\nSET sets a user's vhost, bypassing the request system.": "Syntax: $bSET $b\n\nSET erstellt direkt einen vHost für ein Konto ohne das eine Anfrage und Bestätigung\nnotwendig ist.", 6 | "Syntax: $bSTATUS [user]$b\n\nSTATUS displays your current vhost, if any, and the status of your most recent\nrequest for a new one. A server operator can view someone else's status.": "Syntax: $bSTATUS [kontoname]$b\n\nSTATUS zeigt Deinen aktuellen vHost an, sofern eingerichtet, und den Status\nDeiner letzten Anfrage nach einem neuen vHost. Ein Server Operator kann sich den\nStatus eines anderen anzeigen lassen." 7 | } 8 | -------------------------------------------------------------------------------- /languages/de-DE.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Deutsch" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "de" 12 | #contributors - people who have contributed to this translation 13 | contributors: "streaps" 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/el-GR-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/el-GR-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/el-GR-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/el-GR-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "Password incorrect": "Λανθασμένος κωδικός πρόσβασης", 3 | "You're not logged into an account": "Δεν είστε συνδεδεμένοι σε λογαριασμό" 4 | } 5 | -------------------------------------------------------------------------------- /languages/el-GR.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Ελληνικά" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "el" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Nicholas Kyriakides (Shillos) " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/en-AU-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/en-AU-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/en-AU-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/en-AU-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/en-AU.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Aussie" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "en-AU" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Daniel Oaks " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/es-ES-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/es-ES-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/es-ES.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Español" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "es" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Mauropek\nUnLokitoFeliz \nRené Montes " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/example/translation.lang.yaml: -------------------------------------------------------------------------------- 1 | # translation info file for our example language 2 | # 3 | # languages are made up of a few different files: 4 | # .lang.yaml - general info about the translation 5 | # -irc.lang.json - IRC strings to be translated 6 | # -help.lang.json - help entries to be translated 7 | # 8 | # we split up translations in this way so that they can be displayed more nicely on CrowdIn 9 | 10 | # name - this is the 'nice' or 'full' name of the language 11 | name: "English" 12 | 13 | # code - this is what the language will be referred to in our list of languages 14 | code: "en" 15 | 16 | # contributors - people who have contributed to this translation 17 | contributors: "Example Person " 18 | 19 | # incomplete - whether to mark this language as incomplete 20 | incomplete: true 21 | -------------------------------------------------------------------------------- /languages/fi-FI-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/fi-FI-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/fi-FI-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/fi-FI-irc.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "Account does not exist": "Tili en ole", 3 | "Account: %s": "Tili: %s" 4 | } 5 | -------------------------------------------------------------------------------- /languages/fi-FI-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/fi-FI.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Suomalainen" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "fi" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Cookie Dough" 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/fr-FR.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Français" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "fr-FR" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Nuve " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/he-IL-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/he-IL-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/he-IL-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/he-IL-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/he-IL-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/he-IL.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "עִברִית" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "he" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/hu-HU-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/hu-HU-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/hu-HU-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/hu-HU-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/hu-HU-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/hu-HU.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Magyar" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "hu" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/it-IT.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Italiano" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "it" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Vegax87 " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/ja-JP-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ja-JP-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ja-JP-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ja-JP-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ja-JP-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ja-JP.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "日本語" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "ja-JP" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/ko-KR-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ko-KR-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ko-KR-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ko-KR-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ko-KR-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ko-KR.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "한국어" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "ko" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/nl-NL-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "$bAMODE$b modifies persistent mode settings for channel members.": "$bAMODE$b wijzigt instellingen voor permanente modus voor kanaalleden.", 3 | "$bCLEAR$b removes users or settings from a channel.": "$bCLEAR$b verwijdert gebruikers of instellingen van een kanaal.", 4 | "$bDEOP$b removes the given user (or yourself) from a channel admin.": "$bDEOP$b verwijdert de opgegeven gebruiker (of jezelf) als een kanaalbeheerder.", 5 | "$bGET$b queries the current values of a channel's settings": "$bGET$b vraagt de huidige waarden van de instellingen van een kanaal" 6 | } 7 | -------------------------------------------------------------------------------- /languages/nl-NL-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/nl-NL-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/nl-NL-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/nl-NL.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Nederlands" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "nl" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Jan de Vries " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/no-NO-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/no-NO-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/no-NO-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/no-NO-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "Password incorrect": "Passordet er feil", 3 | "You're not logged into an account": "Du er ikke logget inn på en konto" 4 | } 5 | -------------------------------------------------------------------------------- /languages/no-NO.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Norsk" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "no" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Morten " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/pl-PL-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pl-PL-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pl-PL-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pl-PL-irc.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "*** Could not find your username": "*** Nie można odnaleźć nazwy użytkownika", 3 | "*** Found your username": "*** Znaleziono Twoją nazwę użytkownika", 4 | "*** Looking up your username": "*** Wyszukiwanie twojej nazwy użytkownika", 5 | "- %s Message of the day - ": "- %s wiadomość dnia - ", 6 | "Account already exists": "Konto już istnieje", 7 | "Account created": "Utworzono konto", 8 | "Account does not exist": "Konto nie istnieje", 9 | "Account: %s": "Konto: %s", 10 | "Actual user@host, Actual IP": "Rzeczywisty user@host, rzeczywisty IP", 11 | "Added D-Line for %s": "Dodano D-Line do %s", 12 | "Added K-Line for %s": "Dodano K-Line na %s", 13 | "Added temporary (%[1]s) D-Line for %[2]s": "Dodano tymczasowe (%[1]s) D-Line dla %[2]s", 14 | "Added temporary (%[1]s) K-Line for %[2]s": "Dodano tymczasowe (%[1]s) K-Line dla %[2]s", 15 | "Additional grouped nick: %s": "Dodatkowe zgrupowany nick: %s", 16 | "Authentication successful": "Uwierzytelnienie zakończone pomyślnie", 17 | "Cannot join channel (+%s)": "Nie można dołączyć do kanału (+%s)", 18 | "is logged in as": "jest zalogowany jako" 19 | } 20 | -------------------------------------------------------------------------------- /languages/pl-PL-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pl-PL.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Polski" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "pl" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Sebastian Korotkiewicz (modinfi)" 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/pt-BR-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pt-BR.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Português (Brasil)" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "pt-BR" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Alexandre Oliveira " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/pt-PT-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pt-PT-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pt-PT-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pt-PT-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pt-PT-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/pt-PT.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Português" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "pt" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/ro-RO.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Română" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "ro" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Bogdan Mințoi \nEne Alin Gabriel " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/ru-RU-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ru-RU-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ru-RU-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ru-RU-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ru-RU-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/ru-RU.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Русский" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "ru" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/sq-AL-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "$bAMODE$b modifies persistent mode settings for channel members.": "$bAMODE$b Ndryshimet e cilësimeve do të aplikohen në vazhdim për të gjithë anëtarët e kanalit.", 3 | "$bCLEAR$b removes users or settings from a channel.": "$bCLEAR$b fshien cilësimet nga përdoruesi apo kanali.", 4 | "$bDEOP$b removes the given user (or yourself) from a channel admin.": "$bDEOP$b largon (vetëveten) apo përdoruesin nga administrimi i kanalit.", 5 | "$bGET$b queries the current values of a channel's settings": "$bGET$b vlerat aktuale për cilësimet e kanalit" 6 | } 7 | -------------------------------------------------------------------------------- /languages/sq-AL-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sq-AL-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sq-AL-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sq-AL-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sq-AL.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Albanian" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "sq-AL" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Arianit Kukaj " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/sr-SP-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sr-SP-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sr-SP-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sr-SP-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sr-SP-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sr-SP.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Српски" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "sr" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/sv-SE-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sv-SE-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sv-SE-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sv-SE-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sv-SE-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/sv-SE.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Svenska" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "sv" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/tr-TR-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/tr-TR-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/tr-TR-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "Password incorrect": "Şifre yanlış" 3 | } 4 | -------------------------------------------------------------------------------- /languages/tr-TR.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Türkçe" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "tr-TR" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Apsimati " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/uk-UA-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/uk-UA-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/uk-UA-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/uk-UA-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/uk-UA-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/uk-UA.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Українська" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "uk" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Example Person " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/vi-VN-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/vi-VN-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/vi-VN-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/vi-VN-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/vi-VN-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/vi-VN.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "Tiếng Việt" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "vi" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /languages/zh-CN-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/zh-CN-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/zh-CN-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "Password incorrect": "密码错误", 3 | "You're not logged into an account": "您尚未登录" 4 | } 5 | -------------------------------------------------------------------------------- /languages/zh-CN.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "简体中文" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "zh-CN" 12 | #contributors - people who have contributed to this translation 13 | contributors: "Tony Chen \nRemini " 14 | #incomplete - whether to mark this language as incomplete 15 | incomplete: true 16 | -------------------------------------------------------------------------------- /languages/zh-TW-chanserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/zh-TW-help.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/zh-TW-hostserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/zh-TW-irc.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/zh-TW-nickserv.lang.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /languages/zh-TW.lang.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #translation info file for our example language 3 | #languages are made up of a few different files: 4 | #.lang.yaml - general info about the translation 5 | #-irc.lang.json - IRC strings to be translated 6 | #-help.lang.json - help entries to be translated 7 | #we split up translations in this way so that they can be displayed more nicely on CrowdIn 8 | #name - this is the 'nice' or 'full' name of the language 9 | name: "語言" 10 | #code - this is what the language will be referred to in our list of languages 11 | code: "zh-TW" 12 | #incomplete - whether to mark this language as incomplete 13 | incomplete: true 14 | -------------------------------------------------------------------------------- /vendor/code.cloudfoundry.org/bytefmt/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-Present CloudFoundry.org Foundation, Inc. All Rights Reserved. 2 | 3 | This project contains software that is Copyright (c) 2013-2015 Pivotal Software, Inc. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | 17 | This project may include a number of subcomponents with separate 18 | copyright notices and license terms. Your use of these subcomponents 19 | is subject to the terms and conditions of each subcomponent's license, 20 | as noted in the LICENSE file. 21 | -------------------------------------------------------------------------------- /vendor/code.cloudfoundry.org/bytefmt/README.md: -------------------------------------------------------------------------------- 1 | bytefmt 2 | ======= 3 | 4 | **Note**: This repository should be imported as `code.cloudfoundry.org/bytefmt`. 5 | 6 | Human-readable byte formatter. 7 | 8 | Example: 9 | 10 | ```go 11 | bytefmt.ByteSize(100.5*bytefmt.MEGABYTE) // returns "100.5M" 12 | bytefmt.ByteSize(uint64(1024)) // returns "1K" 13 | ``` 14 | 15 | For documentation, please see http://godoc.org/code.cloudfoundry.org/bytefmt 16 | 17 | ## Reporting issues and requesting features 18 | 19 | Please report all issues and feature requests in [cloudfoundry/diego-release](https://github.com/cloudfoundry/diego-release/issues). 20 | -------------------------------------------------------------------------------- /vendor/code.cloudfoundry.org/bytefmt/package.go: -------------------------------------------------------------------------------- 1 | package bytefmt // import "code.cloudfoundry.org/bytefmt" 2 | -------------------------------------------------------------------------------- /vendor/github.com/GehirnInc/crypt/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - 1.6.x 4 | - 1.7.x 5 | - master 6 | script: 7 | - go test -v -race ./... 8 | -------------------------------------------------------------------------------- /vendor/github.com/GehirnInc/crypt/AUTHORS.md: -------------------------------------------------------------------------------- 1 | ### Initial author 2 | 3 | [Jeramey Crawford](https://github.com/jeramey) 4 | 5 | ### Other authors 6 | 7 | - [Jonas mg](https://github.com/kless) 8 | - [Kohei YOSHIDA](https://github.com/yosida95) 9 | -------------------------------------------------------------------------------- /vendor/github.com/GehirnInc/crypt/common/doc.go: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2012, Jeramey Crawford . All 2 | // rights reserved. Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package common contains routines used by multiple password hashing 6 | // algorithms. 7 | // 8 | // Generally, you will never import this package directly. Many of the 9 | // *_crypt packages will import this package if they require it. 10 | package common 11 | -------------------------------------------------------------------------------- /vendor/github.com/GehirnInc/crypt/internal/utils.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015 Kohei YOSHIDA. All rights reserved. 2 | // This software is licensed under the 3-Clause BSD License 3 | // that can be found in LICENSE file. 4 | package internal 5 | 6 | const ( 7 | cleanBytesLen = 64 8 | ) 9 | 10 | var ( 11 | cleanBytes = make([]byte, cleanBytesLen) 12 | ) 13 | 14 | func CleanSensitiveData(b []byte) { 15 | l := len(b) 16 | 17 | for ; l > cleanBytesLen; l -= cleanBytesLen { 18 | copy(b[l-cleanBytesLen:l], cleanBytes) 19 | } 20 | 21 | if l > 0 { 22 | copy(b[0:l], cleanBytes[0:l]) 23 | } 24 | } 25 | 26 | func RepeatByteSequence(input []byte, length int) []byte { 27 | var ( 28 | sequence = make([]byte, length) 29 | unit = len(input) 30 | ) 31 | 32 | j := length / unit * unit 33 | for i := 0; i < j; i += unit { 34 | copy(sequence[i:length], input) 35 | } 36 | if j < length { 37 | copy(sequence[j:length], input[0:length-j]) 38 | } 39 | 40 | return sequence 41 | } 42 | -------------------------------------------------------------------------------- /vendor/github.com/docopt/docopt-go/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | 24 | # coverage droppings 25 | profile.cov 26 | -------------------------------------------------------------------------------- /vendor/github.com/docopt/docopt-go/.travis.yml: -------------------------------------------------------------------------------- 1 | # Travis CI (http://travis-ci.org/) is a continuous integration 2 | # service for open source projects. This file configures it 3 | # to run unit tests for docopt-go. 4 | 5 | language: go 6 | 7 | go: 8 | - 1.4 9 | - 1.5 10 | - 1.6 11 | - 1.7 12 | - 1.8 13 | - 1.9 14 | - tip 15 | 16 | matrix: 17 | fast_finish: true 18 | 19 | before_install: 20 | - go get golang.org/x/tools/cmd/cover 21 | - go get github.com/mattn/goveralls 22 | 23 | install: 24 | - go get -d -v ./... && go build -v ./... 25 | 26 | script: 27 | - go vet -x ./... 28 | - go test -v ./... 29 | - go test -covermode=count -coverprofile=profile.cov . 30 | 31 | after_script: 32 | - $HOME/gopath/bin/goveralls -coverprofile=profile.cov -service=travis-ci 33 | -------------------------------------------------------------------------------- /vendor/github.com/docopt/docopt-go/error.go: -------------------------------------------------------------------------------- 1 | package docopt 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | type errorType int 8 | 9 | const ( 10 | errorUser errorType = iota 11 | errorLanguage 12 | ) 13 | 14 | func (e errorType) String() string { 15 | switch e { 16 | case errorUser: 17 | return "errorUser" 18 | case errorLanguage: 19 | return "errorLanguage" 20 | } 21 | return "" 22 | } 23 | 24 | // UserError records an error with program arguments. 25 | type UserError struct { 26 | msg string 27 | Usage string 28 | } 29 | 30 | func (e UserError) Error() string { 31 | return e.msg 32 | } 33 | func newUserError(msg string, f ...interface{}) error { 34 | return &UserError{fmt.Sprintf(msg, f...), ""} 35 | } 36 | 37 | // LanguageError records an error with the doc string. 38 | type LanguageError struct { 39 | msg string 40 | } 41 | 42 | func (e LanguageError) Error() string { 43 | return e.msg 44 | } 45 | func newLanguageError(msg string, f ...interface{}) error { 46 | return &LanguageError{fmt.Sprintf(msg, f...)} 47 | } 48 | 49 | var newError = fmt.Errorf 50 | -------------------------------------------------------------------------------- /vendor/github.com/docopt/docopt-go/test_golang.docopt: -------------------------------------------------------------------------------- 1 | r"""usage: prog [NAME_-2]...""" 2 | $ prog 10 20 3 | {"NAME_-2": ["10", "20"]} 4 | 5 | $ prog 10 6 | {"NAME_-2": ["10"]} 7 | 8 | $ prog 9 | {"NAME_-2": []} 10 | -------------------------------------------------------------------------------- /vendor/github.com/emersion/go-msgauth/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 emersion 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/github.com/emersion/go-msgauth/dkim/dkim.go: -------------------------------------------------------------------------------- 1 | // Package dkim creates and verifies DKIM signatures, as specified in RFC 6376. 2 | // 3 | // # FAQ 4 | // 5 | // Why can't I verify a [net/mail.Message] directly? A [net/mail.Message] 6 | // header is already parsed, and whitespace characters (especially continuation 7 | // lines) are removed. Thus, the signature computed from the parsed header is 8 | // not the same as the one computed from the raw header. 9 | // 10 | // How can I publish my public key? You have to add a TXT record to your DNS 11 | // zone. See [RFC 6376 appendix C]. You can use the dkim-keygen tool included 12 | // in go-msgauth to generate the key and the TXT record. 13 | // 14 | // [RFC 6376 appendix C]: https://tools.ietf.org/html/rfc6376#appendix-C 15 | package dkim 16 | 17 | import ( 18 | "time" 19 | ) 20 | 21 | var now = time.Now 22 | 23 | const headerFieldName = "DKIM-Signature" 24 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/confusables/.gitignore: -------------------------------------------------------------------------------- 1 | /maketables 2 | confusables.txt 3 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/confusables/README.md: -------------------------------------------------------------------------------- 1 | # Unicode confusables 2 | 3 | This Go library implements the `Skeleton` algorithm from Unicode TR39 4 | 5 | See http://www.unicode.org/reports/tr39/ 6 | 7 | ### Examples 8 | ``` 9 | import "github.com/mtibben/confusables" 10 | 11 | confusables.Skeleton("𝔭𝒶ỿ𝕡𝕒ℓ") # "paypal" 12 | confusables.Confusable("𝔭𝒶ỿ𝕡𝕒ℓ", "paypal") # true 13 | ``` 14 | 15 | *Note on the use of `Skeleton`, from TR39:* 16 | 17 | > A skeleton is intended only for internal use for testing confusability of strings; the resulting text is not suitable for display to users, because it will appear to be a hodgepodge of different scripts. In particular, the result of mapping an identifier will not necessary be an identifier. Thus the confusability mappings can be used to test whether two identifiers are confusable (if their skeletons are the same), but should definitely not be used as a "normalization" of identifiers. 18 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/go-ident/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 Dominik Honnef 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/go-ident/README.md: -------------------------------------------------------------------------------- 1 | # RFC 1413 (Identification Protocol) client 2 | 3 | This package provides a client for the [Identification Protocol](https://tools.ietf.org/html/rfc1413). 4 | 5 | --- 6 | 7 | [![GoDoc](https://godoc.org/github.com/DanielOaks/go-ident?status.svg)](https://godoc.org/github.com/DanielOaks/go-ident) [![Go Report Card](https://goreportcard.com/badge/github.com/DanielOaks/go-ident)](https://goreportcard.com/report/github.com/DanielOaks/go-ident) 8 | 9 | --- 10 | 11 | ## Installation 12 | 13 | ```sh 14 | go get github.com/DanielOaks/go-ident 15 | ``` 16 | 17 | ## Documentation 18 | 19 | Documentation can be found at [godoc.org](http://godoc.org/github.com/DanielOaks/go-ident). 20 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/irc-go/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016-2021 Daniel Oaks 2 | Copyright (c) 2018-2021 Shivaram Lingamneni 3 | 4 | Permission to use, copy, modify, and/or distribute this software for any 5 | purpose with or without fee is hereby granted, provided that the above 6 | copyright notice and this permission notice appear in all copies. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 9 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 10 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 11 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 12 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 13 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 14 | PERFORMANCE OF THIS SOFTWARE. 15 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/irc-go/ircmsg/doc.go: -------------------------------------------------------------------------------- 1 | // written by Daniel Oaks 2 | // released under the ISC license 3 | 4 | /* 5 | Package ircmsg helps parse and create lines for IRC connections. 6 | */ 7 | package ircmsg 8 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/irc-go/ircmsg/unicode.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 Shivaram Lingamneni 2 | // Released under the MIT License 3 | 4 | package ircmsg 5 | 6 | import ( 7 | "unicode/utf8" 8 | ) 9 | 10 | // TruncateUTF8Safe truncates a message, respecting UTF8 boundaries. If a message 11 | // was originally valid UTF8, TruncateUTF8Safe will not make it invalid; instead 12 | // it will truncate additional bytes as needed, back to the last valid 13 | // UTF8-encoded codepoint. If a message is not UTF8, TruncateUTF8Safe will truncate 14 | // at most 3 additional bytes before giving up. 15 | func TruncateUTF8Safe(message string, byteLimit int) (result string) { 16 | if len(message) <= byteLimit { 17 | return message 18 | } 19 | message = message[:byteLimit] 20 | for i := 0; i < (utf8.UTFMax - 1); i++ { 21 | r, n := utf8.DecodeLastRuneInString(message) 22 | if r == utf8.RuneError && n <= 1 { 23 | message = message[:len(message)-1] 24 | } else { 25 | break 26 | } 27 | } 28 | return message 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/irc-go/ircutils/doc.go: -------------------------------------------------------------------------------- 1 | // written by Daniel Oaks 2 | // released under the ISC license 3 | 4 | /* 5 | Package ircutils provides small, useful utility functions and classes. 6 | 7 | This package is in an alpha stage. 8 | */ 9 | package ircutils 10 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/webpush-go/v2/.check-gofmt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SOURCES="." 4 | 5 | if [ "$1" = "--fix" ]; then 6 | exec gofmt -s -w $SOURCES 7 | fi 8 | 9 | if [ -n "$(gofmt -s -l $SOURCES)" ]; then 10 | echo "Go code is not formatted correctly with \`gofmt -s\`:" 11 | gofmt -s -d $SOURCES 12 | exit 1 13 | fi 14 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/webpush-go/v2/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/** 2 | 3 | .DS_Store 4 | *.out 5 | 6 | *.swp 7 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/webpush-go/v2/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to webpush-go will be documented in this file. 3 | 4 | ## [2.0.0] - 2025-01-16 5 | 6 | * Update the `Keys` struct definition to store `Auth` as `[16]byte` and `P256dh` as `*ecdh.PublicKey` 7 | * `Keys` can no longer be compared with `==`; use `(*Keys.Equal)` instead 8 | * The JSON representation has not changed and is backwards and forwards compatible with v1 9 | * `DecodeSubscriptionKeys` is a helper to decode base64-encoded auth and p256dh parameters into a `Keys`, with validation 10 | * Update the `VAPIDKeys` struct to contain a `(*ecdsa.PrivateKey)` 11 | * `VAPIDKeys` can no longer be compared with `==`; use `(*VAPIDKeys).Equal` instead 12 | * The JSON representation is now a JSON string containing the PEM of the PKCS8-encoded private key 13 | * To parse the legacy representation (raw bytes of the private key encoded in base64), use `DecodeLegacyVAPIDPrivateKey` 14 | * Renamed `SendNotificationWithContext` to `SendNotification`, removing the earlier `SendNotification` API. (Pass `context.Background()` as the context to restore the former behavior.) 15 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/webpush-go/v2/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: test 2 | 3 | test: 4 | go test . 5 | go vet . 6 | ./.check-gofmt.sh 7 | -------------------------------------------------------------------------------- /vendor/github.com/ergochat/webpush-go/v2/urgency.go: -------------------------------------------------------------------------------- 1 | package webpush 2 | 3 | // Urgency indicates to the push service how important a message is to the user. 4 | // This can be used by the push service to help conserve the battery life of a user's device 5 | // by only waking up for important messages when battery is low. 6 | type Urgency string 7 | 8 | const ( 9 | // UrgencyVeryLow requires device state: on power and Wi-Fi 10 | UrgencyVeryLow Urgency = "very-low" 11 | // UrgencyLow requires device state: on either power or Wi-Fi 12 | UrgencyLow Urgency = "low" 13 | // UrgencyNormal excludes device state: low battery 14 | UrgencyNormal Urgency = "normal" 15 | // UrgencyHigh admits device state: low battery 16 | UrgencyHigh Urgency = "high" 17 | ) 18 | 19 | // Checking allowable values for the urgency header 20 | func isValidUrgency(urgency Urgency) bool { 21 | switch urgency { 22 | case UrgencyVeryLow, UrgencyLow, UrgencyNormal, UrgencyHigh: 23 | return true 24 | } 25 | return false 26 | } 27 | -------------------------------------------------------------------------------- /vendor/github.com/go-sql-driver/mysql/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .DS_Store? 3 | ._* 4 | .Spotlight-V100 5 | .Trashes 6 | Icon? 7 | ehthumbs.db 8 | Thumbs.db 9 | .idea 10 | -------------------------------------------------------------------------------- /vendor/github.com/go-sql-driver/mysql/atomic_bool.go: -------------------------------------------------------------------------------- 1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package. 2 | // 3 | // Copyright 2022 The Go-MySQL-Driver Authors. All rights reserved. 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla Public 6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file, 7 | // You can obtain one at http://mozilla.org/MPL/2.0/. 8 | //go:build go1.19 9 | // +build go1.19 10 | 11 | package mysql 12 | 13 | import "sync/atomic" 14 | 15 | /****************************************************************************** 16 | * Sync utils * 17 | ******************************************************************************/ 18 | 19 | type atomicBool = atomic.Bool 20 | -------------------------------------------------------------------------------- /vendor/github.com/go-sql-driver/mysql/conncheck_dummy.go: -------------------------------------------------------------------------------- 1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package 2 | // 3 | // Copyright 2019 The Go-MySQL-Driver Authors. All rights reserved. 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla Public 6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file, 7 | // You can obtain one at http://mozilla.org/MPL/2.0/. 8 | 9 | //go:build !linux && !darwin && !dragonfly && !freebsd && !netbsd && !openbsd && !solaris && !illumos 10 | // +build !linux,!darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!illumos 11 | 12 | package mysql 13 | 14 | import "net" 15 | 16 | func connCheck(conn net.Conn) error { 17 | return nil 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/go-sql-driver/mysql/fuzz.go: -------------------------------------------------------------------------------- 1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package. 2 | // 3 | // Copyright 2020 The Go-MySQL-Driver Authors. All rights reserved. 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla Public 6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file, 7 | // You can obtain one at http://mozilla.org/MPL/2.0/. 8 | 9 | //go:build gofuzz 10 | // +build gofuzz 11 | 12 | package mysql 13 | 14 | import ( 15 | "database/sql" 16 | ) 17 | 18 | func Fuzz(data []byte) int { 19 | db, err := sql.Open("mysql", string(data)) 20 | if err != nil { 21 | return 0 22 | } 23 | db.Close() 24 | return 1 25 | } 26 | -------------------------------------------------------------------------------- /vendor/github.com/go-sql-driver/mysql/result.go: -------------------------------------------------------------------------------- 1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package 2 | // 3 | // Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla Public 6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file, 7 | // You can obtain one at http://mozilla.org/MPL/2.0/. 8 | 9 | package mysql 10 | 11 | type mysqlResult struct { 12 | affectedRows int64 13 | insertId int64 14 | } 15 | 16 | func (res *mysqlResult) LastInsertId() (int64, error) { 17 | return res.insertId, nil 18 | } 19 | 20 | func (res *mysqlResult) RowsAffected() (int64, error) { 21 | return res.affectedRows, nil 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/go-sql-driver/mysql/transaction.go: -------------------------------------------------------------------------------- 1 | // Go MySQL Driver - A MySQL-Driver for Go's database/sql package 2 | // 3 | // Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved. 4 | // 5 | // This Source Code Form is subject to the terms of the Mozilla Public 6 | // License, v. 2.0. If a copy of the MPL was not distributed with this file, 7 | // You can obtain one at http://mozilla.org/MPL/2.0/. 8 | 9 | package mysql 10 | 11 | type mysqlTx struct { 12 | mc *mysqlConn 13 | } 14 | 15 | func (tx *mysqlTx) Commit() (err error) { 16 | if tx.mc == nil || tx.mc.closed.Load() { 17 | return ErrInvalidConn 18 | } 19 | err = tx.mc.exec("COMMIT") 20 | tx.mc = nil 21 | return 22 | } 23 | 24 | func (tx *mysqlTx) Rollback() (err error) { 25 | if tx.mc == nil || tx.mc.closed.Load() { 26 | return ErrInvalidConn 27 | } 28 | err = tx.mc.exec("ROLLBACK") 29 | tx.mc = nil 30 | return 31 | } 32 | -------------------------------------------------------------------------------- /vendor/github.com/gofrs/flock/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | *.test 24 | *.prof 25 | -------------------------------------------------------------------------------- /vendor/github.com/gofrs/flock/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - 1.14.x 4 | - 1.15.x 5 | script: go test -v -check.vv -race ./... 6 | sudo: false 7 | notifications: 8 | email: 9 | on_success: never 10 | on_failure: always 11 | -------------------------------------------------------------------------------- /vendor/github.com/gofrs/flock/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: '{build}' 2 | 3 | build: false 4 | deploy: false 5 | 6 | clone_folder: 'c:\gopath\src\github.com\gofrs\flock' 7 | 8 | environment: 9 | GOPATH: 'c:\gopath' 10 | GOVERSION: '1.15' 11 | 12 | init: 13 | - git config --global core.autocrlf input 14 | 15 | install: 16 | - rmdir c:\go /s /q 17 | - appveyor DownloadFile https://storage.googleapis.com/golang/go%GOVERSION%.windows-amd64.msi 18 | - msiexec /i go%GOVERSION%.windows-amd64.msi /q 19 | - set Path=c:\go\bin;c:\gopath\bin;%Path% 20 | - go version 21 | - go env 22 | 23 | test_script: 24 | - go get -t ./... 25 | - go test -race -v ./... 26 | -------------------------------------------------------------------------------- /vendor/github.com/golang-jwt/jwt/v5/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | bin 3 | .idea/ 4 | 5 | -------------------------------------------------------------------------------- /vendor/github.com/golang-jwt/jwt/v5/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Dave Grijalva 2 | Copyright (c) 2021 golang-jwt maintainers 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 9 | 10 | -------------------------------------------------------------------------------- /vendor/github.com/golang-jwt/jwt/v5/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | As of November 2024 (and until this document is updated), the latest version `v5` is supported. In critical cases, we might supply back-ported patches for `v4`. 6 | 7 | ## Reporting a Vulnerability 8 | 9 | If you think you found a vulnerability, and even if you are not sure, please report it a [GitHub Security Advisory](https://github.com/golang-jwt/jwt/security/advisories/new). Please try be explicit, describe steps to reproduce the security issue with code example(s). 10 | 11 | You will receive a response within a timely manner. If the issue is confirmed, we will do our best to release a patch as soon as possible given the complexity of the problem. 12 | 13 | ## Public Discussions 14 | 15 | Please avoid publicly discussing a potential security vulnerability. 16 | 17 | Let's take this offline and find a solution first, this limits the potential impact as much as possible. 18 | 19 | We appreciate your help! 20 | -------------------------------------------------------------------------------- /vendor/github.com/golang-jwt/jwt/v5/claims.go: -------------------------------------------------------------------------------- 1 | package jwt 2 | 3 | // Claims represent any form of a JWT Claims Set according to 4 | // https://datatracker.ietf.org/doc/html/rfc7519#section-4. In order to have a 5 | // common basis for validation, it is required that an implementation is able to 6 | // supply at least the claim names provided in 7 | // https://datatracker.ietf.org/doc/html/rfc7519#section-4.1 namely `exp`, 8 | // `iat`, `nbf`, `iss`, `sub` and `aud`. 9 | type Claims interface { 10 | GetExpirationTime() (*NumericDate, error) 11 | GetIssuedAt() (*NumericDate, error) 12 | GetNotBefore() (*NumericDate, error) 13 | GetIssuer() (string, error) 14 | GetSubject() (string, error) 15 | GetAudience() (ClaimStrings, error) 16 | } 17 | -------------------------------------------------------------------------------- /vendor/github.com/golang-jwt/jwt/v5/doc.go: -------------------------------------------------------------------------------- 1 | // Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html 2 | // 3 | // See README.md for more info. 4 | package jwt 5 | -------------------------------------------------------------------------------- /vendor/github.com/golang-jwt/jwt/v5/staticcheck.conf: -------------------------------------------------------------------------------- 1 | checks = ["all", "-ST1000", "-ST1003", "-ST1016", "-ST1023"] 2 | -------------------------------------------------------------------------------- /vendor/github.com/golang-jwt/jwt/v5/token_option.go: -------------------------------------------------------------------------------- 1 | package jwt 2 | 3 | // TokenOption is a reserved type, which provides some forward compatibility, 4 | // if we ever want to introduce token creation-related options. 5 | type TokenOption func(*Token) 6 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | 24 | .idea/ 25 | *.iml 26 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/AUTHORS: -------------------------------------------------------------------------------- 1 | # This is the official list of Gorilla WebSocket authors for copyright 2 | # purposes. 3 | # 4 | # Please keep the list sorted. 5 | 6 | Gary Burd 7 | Google LLC (https://opensource.google.com/) 8 | Joachim Bauch 9 | 10 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/client_clone.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Gorilla WebSocket Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.8 6 | 7 | package websocket 8 | 9 | import "crypto/tls" 10 | 11 | func cloneTLSConfig(cfg *tls.Config) *tls.Config { 12 | if cfg == nil { 13 | return &tls.Config{} 14 | } 15 | return cfg.Clone() 16 | } 17 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/conn_write.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Gorilla WebSocket Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.8 6 | 7 | package websocket 8 | 9 | import "net" 10 | 11 | func (c *Conn) writeBufs(bufs ...[]byte) error { 12 | b := net.Buffers(bufs) 13 | _, err := b.WriteTo(c.conn) 14 | return err 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/conn_write_legacy.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Gorilla WebSocket Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !go1.8 6 | 7 | package websocket 8 | 9 | func (c *Conn) writeBufs(bufs ...[]byte) error { 10 | for _, buf := range bufs { 11 | if len(buf) > 0 { 12 | if _, err := c.conn.Write(buf); err != nil { 13 | return err 14 | } 15 | } 16 | } 17 | return nil 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/join.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Gorilla WebSocket Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package websocket 6 | 7 | import ( 8 | "io" 9 | "strings" 10 | ) 11 | 12 | // JoinMessages concatenates received messages to create a single io.Reader. 13 | // The string term is appended to each message. The returned reader does not 14 | // support concurrent calls to the Read method. 15 | func JoinMessages(c *Conn, term string) io.Reader { 16 | return &joinReader{c: c, term: term} 17 | } 18 | 19 | type joinReader struct { 20 | c *Conn 21 | term string 22 | r io.Reader 23 | } 24 | 25 | func (r *joinReader) Read(p []byte) (int, error) { 26 | if r.r == nil { 27 | var err error 28 | _, r.r, err = r.c.NextReader() 29 | if err != nil { 30 | return 0, err 31 | } 32 | if r.term != "" { 33 | r.r = io.MultiReader(r.r, strings.NewReader(r.term)) 34 | } 35 | } 36 | n, err := r.r.Read(p) 37 | if err == io.EOF { 38 | err = nil 39 | r.r = nil 40 | } 41 | return n, err 42 | } 43 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/mask_safe.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Gorilla WebSocket Authors. All rights reserved. Use of 2 | // this source code is governed by a BSD-style license that can be found in the 3 | // LICENSE file. 4 | 5 | // +build appengine 6 | 7 | package websocket 8 | 9 | func maskBytes(key [4]byte, pos int, b []byte) int { 10 | for i := range b { 11 | b[i] ^= key[pos&3] 12 | pos++ 13 | } 14 | return pos & 3 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/trace.go: -------------------------------------------------------------------------------- 1 | // +build go1.8 2 | 3 | package websocket 4 | 5 | import ( 6 | "crypto/tls" 7 | "net/http/httptrace" 8 | ) 9 | 10 | func doHandshakeWithTrace(trace *httptrace.ClientTrace, tlsConn *tls.Conn, cfg *tls.Config) error { 11 | if trace.TLSHandshakeStart != nil { 12 | trace.TLSHandshakeStart() 13 | } 14 | err := doHandshake(tlsConn, cfg) 15 | if trace.TLSHandshakeDone != nil { 16 | trace.TLSHandshakeDone(tlsConn.ConnectionState(), err) 17 | } 18 | return err 19 | } 20 | -------------------------------------------------------------------------------- /vendor/github.com/gorilla/websocket/trace_17.go: -------------------------------------------------------------------------------- 1 | // +build !go1.8 2 | 3 | package websocket 4 | 5 | import ( 6 | "crypto/tls" 7 | "net/http/httptrace" 8 | ) 9 | 10 | func doHandshakeWithTrace(trace *httptrace.ClientTrace, tlsConn *tls.Conn, cfg *tls.Config) error { 11 | return doHandshake(tlsConn, cfg) 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/okzk/sdnotify/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 okzk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/github.com/okzk/sdnotify/README.md: -------------------------------------------------------------------------------- 1 | # sdnotify 2 | 3 | sd_notify utility for golang. 4 | 5 | ## Installation 6 | 7 | go get github.com/okzk/sdnotify 8 | 9 | ## Example 10 | 11 | see [sample/main.go](sample/main.go) 12 | 13 | ## License 14 | 15 | MIT -------------------------------------------------------------------------------- /vendor/github.com/okzk/sdnotify/notify.go: -------------------------------------------------------------------------------- 1 | // +build !linux 2 | 3 | package sdnotify 4 | 5 | // SdNotify sends a specified string to the systemd notification socket. 6 | func SdNotify(state string) error { 7 | // do nothing 8 | return nil 9 | } 10 | -------------------------------------------------------------------------------- /vendor/github.com/okzk/sdnotify/notify_linux.go: -------------------------------------------------------------------------------- 1 | package sdnotify 2 | 3 | import ( 4 | "net" 5 | "os" 6 | ) 7 | 8 | // SdNotify sends a specified string to the systemd notification socket. 9 | func SdNotify(state string) error { 10 | name := os.Getenv("NOTIFY_SOCKET") 11 | if name == "" { 12 | return ErrSdNotifyNoSocket 13 | } 14 | 15 | conn, err := net.DialUnix("unixgram", nil, &net.UnixAddr{Name: name, Net: "unixgram"}) 16 | if err != nil { 17 | return err 18 | } 19 | defer conn.Close() 20 | 21 | _, err = conn.Write([]byte(state)) 22 | return err 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/okzk/sdnotify/util.go: -------------------------------------------------------------------------------- 1 | package sdnotify 2 | 3 | import ( 4 | "errors" 5 | "fmt" 6 | ) 7 | 8 | // ErrSdNotifyNoSocket is the error returned when the NOTIFY_SOCKET does not exist. 9 | var ErrSdNotifyNoSocket = errors.New("No socket") 10 | 11 | // Ready sends READY=1 to the systemd notify socket. 12 | func Ready() error { 13 | return SdNotify("READY=1") 14 | } 15 | 16 | // Stopping sends STOPPING=1 to the systemd notify socket. 17 | func Stopping() error { 18 | return SdNotify("STOPPING=1") 19 | } 20 | 21 | // Reloading sends RELOADING=1 to the systemd notify socket. 22 | func Reloading() error { 23 | return SdNotify("RELOADING=1") 24 | } 25 | 26 | // Errno sends ERRNO=? to the systemd notify socket. 27 | func Errno(errno int) error { 28 | return SdNotify(fmt.Sprintf("ERRNO=%d", errno)) 29 | } 30 | 31 | // Status sends STATUS=? to the systemd notify socket. 32 | func Status(status string) error { 33 | return SdNotify("STATUS=" + status) 34 | } 35 | 36 | // Watchdog sends WATCHDOG=1 to the systemd notify socket. 37 | func Watchdog() error { 38 | return SdNotify("WATCHDOG=1") 39 | } 40 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/btree/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Josh Baker 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so, 8 | subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/buntdb/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Josh Baker 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/buntdb/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ergochat/ergo/7828218bc7b6a7092eeb275910e28793541290cb/vendor/github.com/tidwall/buntdb/logo.png -------------------------------------------------------------------------------- /vendor/github.com/tidwall/gjson/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ergochat/ergo/7828218bc7b6a7092eeb275910e28793541290cb/vendor/github.com/tidwall/gjson/logo.png -------------------------------------------------------------------------------- /vendor/github.com/tidwall/grect/README.md: -------------------------------------------------------------------------------- 1 | GRECT 2 | ==== 3 | 4 | Quickly get the outer rectangle for GeoJSON, WKT, WKB. 5 | 6 | ```go 7 | r := grect.Get(`{ 8 | "type": "Polygon", 9 | "coordinates": [ 10 | [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], 11 | [100.0, 1.0], [100.0, 0.0] ] 12 | ] 13 | }`) 14 | fmt.Printf("%v %v\n", r.Min, r.Max) 15 | // Output: 16 | // [100 0] [101 1] 17 | ``` 18 | 19 | ## Contact 20 | Josh Baker [@tidwall](http://twitter.com/tidwall) 21 | 22 | ## License 23 | 24 | GRECT source code is available under the MIT [License](/LICENSE). 25 | 26 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/match/README.md: -------------------------------------------------------------------------------- 1 | # Match 2 | 3 | [![GoDoc](https://godoc.org/github.com/tidwall/match?status.svg)](https://godoc.org/github.com/tidwall/match) 4 | 5 | Match is a very simple pattern matcher where '*' matches on any 6 | number characters and '?' matches on any one character. 7 | 8 | ## Installing 9 | 10 | ``` 11 | go get -u github.com/tidwall/match 12 | ``` 13 | 14 | ## Example 15 | 16 | ```go 17 | match.Match("hello", "*llo") 18 | match.Match("jello", "?ello") 19 | match.Match("hello", "h*o") 20 | ``` 21 | 22 | 23 | ## Contact 24 | 25 | Josh Baker [@tidwall](http://twitter.com/tidwall) 26 | 27 | ## License 28 | 29 | Redcon source code is available under the MIT [License](/LICENSE). 30 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/rtred/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 Josh Baker 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/rtred/README.md: -------------------------------------------------------------------------------- 1 | RTree implementation for Go 2 | =========================== 3 | 4 | [![GoDoc](https://godoc.org/github.com/tidwall/rtree?status.svg)](https://godoc.org/github.com/tidwall/rtree) 5 | 6 | This package provides an in-memory R-Tree implementation for Go, useful as a spatial data structure. 7 | It has support for 1-20 dimensions, and can store and search multidimensions interchangably in the same tree. 8 | 9 | Authors 10 | ------- 11 | * 1983 Original algorithm and test code by Antonin Guttman and Michael Stonebraker, UC Berkely 12 | * 1994 ANCI C ported from original test code by Melinda Green 13 | * 1995 Sphere volume fix for degeneracy problem submitted by Paul Brook 14 | * 2004 Templated C++ port by Greg Douglas 15 | * 2016 Go port by Josh Baker 16 | * 2018 Added kNN and merged in some of the RBush logic by Vladimir Agafonkin 17 | 18 | License 19 | ------- 20 | RTree source code is available under the MIT License. 21 | 22 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/tinyqueue/LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2017, Vladimir Agafonkin 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any purpose 6 | with or without fee is hereby granted, provided that the above copyright notice 7 | and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 13 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 14 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 15 | THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /vendor/github.com/tidwall/tinyqueue/README.md: -------------------------------------------------------------------------------- 1 | # tinyqueue 2 | GoDoc 3 | 4 | tinyqueue is a Go package for binary heap priority queues. 5 | Ported from the [tinyqueue](https://github.com/mourner/tinyqueue) Javascript library. 6 | 7 | 8 | -------------------------------------------------------------------------------- /vendor/github.com/xdg-go/pbkdf2/.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | 8 | # Test binary, build with `go test -c` 9 | *.test 10 | 11 | # Output of the go coverage tool, specifically when used with LiteIDE 12 | *.out 13 | -------------------------------------------------------------------------------- /vendor/github.com/xdg-go/pbkdf2/README.md: -------------------------------------------------------------------------------- 1 | [![Go Reference](https://pkg.go.dev/badge/github.com/xdg-go/pbkdf2.svg)](https://pkg.go.dev/github.com/xdg-go/pbkdf2) 2 | [![Go Report Card](https://goreportcard.com/badge/github.com/xdg-go/pbkdf2)](https://goreportcard.com/report/github.com/xdg-go/pbkdf2) 3 | [![Github Actions](https://github.com/xdg-go/pbkdf2/actions/workflows/test.yml/badge.svg)](https://github.com/xdg-go/pbkdf2/actions/workflows/test.yml) 4 | 5 | # pbkdf2 – Go implementation of PBKDF2 6 | 7 | ## Description 8 | 9 | Package pbkdf2 provides password-based key derivation based on 10 | [RFC 8018](https://tools.ietf.org/html/rfc8018). 11 | 12 | ## Copyright and License 13 | 14 | Copyright 2021 by David A. Golden. All rights reserved. 15 | 16 | Licensed under the Apache License, Version 2.0 (the "License"). You may 17 | obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 18 | -------------------------------------------------------------------------------- /vendor/github.com/xdg-go/scram/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ergochat/ergo/7828218bc7b6a7092eeb275910e28793541290cb/vendor/github.com/xdg-go/scram/.gitignore -------------------------------------------------------------------------------- /vendor/github.com/xdg-go/scram/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## v1.0.2 - 2021-03-28 4 | 5 | - Switch PBKDF2 dependency to github.com/xdg-go/pbkdf2 to 6 | minimize transitive dependencies and support Go 1.9+. 7 | 8 | ## v1.0.1 - 2021-03-27 9 | 10 | - Bump stringprep dependency to v1.0.2 for Go 1.11 support. 11 | 12 | ## v1.0.0 - 2021-03-27 13 | 14 | - First release as a Go module 15 | -------------------------------------------------------------------------------- /vendor/github.com/xdg-go/scram/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 by David A. Golden. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | // not use this file except in compliance with the License. You may obtain 5 | // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 6 | 7 | // Package scram provides client and server implementations of the Salted 8 | // Challenge Response Authentication Mechanism (SCRAM) described in RFC-5802 9 | // and RFC-7677. 10 | // 11 | // Usage 12 | // 13 | // The scram package provides two variables, `SHA1` and `SHA256`, that are 14 | // used to construct Client or Server objects. 15 | // 16 | // clientSHA1, err := scram.SHA1.NewClient(username, password, authID) 17 | // clientSHA256, err := scram.SHA256.NewClient(username, password, authID) 18 | // 19 | // serverSHA1, err := scram.SHA1.NewServer(credentialLookupFcn) 20 | // serverSHA256, err := scram.SHA256.NewServer(credentialLookupFcn) 21 | // 22 | // These objects are used to construct ClientConversation or 23 | // ServerConversation objects that are used to carry out authentication. 24 | package scram 25 | -------------------------------------------------------------------------------- /vendor/golang.org/x/crypto/bcrypt/base64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package bcrypt 6 | 7 | import "encoding/base64" 8 | 9 | const alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" 10 | 11 | var bcEncoding = base64.NewEncoding(alphabet) 12 | 13 | func base64Encode(src []byte) []byte { 14 | n := bcEncoding.EncodedLen(len(src)) 15 | dst := make([]byte, n) 16 | bcEncoding.Encode(dst, src) 17 | for dst[n-1] == '=' { 18 | n-- 19 | } 20 | return dst[:n] 21 | } 22 | 23 | func base64Decode(src []byte) ([]byte, error) { 24 | numOfEquals := 4 - (len(src) % 4) 25 | for i := 0; i < numOfEquals; i++ { 26 | src = append(src, '=') 27 | } 28 | 29 | dst := make([]byte, bcEncoding.DecodedLen(len(src))) 30 | n, err := bcEncoding.Decode(dst, src) 31 | if err != nil { 32 | return nil, err 33 | } 34 | return dst[:n], nil 35 | } 36 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/asm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | TEXT ·use(SB),NOSPLIT,$0 8 | RET 9 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/asm_plan9_386.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | // 8 | // System call support for 386, Plan 9 9 | // 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-32 15 | JMP syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-44 18 | JMP syscall·Syscall6(SB) 19 | 20 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 21 | JMP syscall·RawSyscall(SB) 22 | 23 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 24 | JMP syscall·RawSyscall6(SB) 25 | 26 | TEXT ·seek(SB),NOSPLIT,$0-36 27 | JMP syscall·seek(SB) 28 | 29 | TEXT ·exit(SB),NOSPLIT,$4-4 30 | JMP syscall·exit(SB) 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | // 8 | // System call support for amd64, Plan 9 9 | // 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-64 15 | JMP syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-88 18 | JMP syscall·Syscall6(SB) 19 | 20 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 21 | JMP syscall·RawSyscall(SB) 22 | 23 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 24 | JMP syscall·RawSyscall6(SB) 25 | 26 | TEXT ·seek(SB),NOSPLIT,$0-56 27 | JMP syscall·seek(SB) 28 | 29 | TEXT ·exit(SB),NOSPLIT,$8-8 30 | JMP syscall·exit(SB) 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/asm_plan9_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | #include "textflag.h" 6 | 7 | // System call support for plan9 on arm 8 | 9 | // Just jump to package syscall's implementation for all these functions. 10 | // The runtime may know about them. 11 | 12 | TEXT ·Syscall(SB),NOSPLIT,$0-32 13 | JMP syscall·Syscall(SB) 14 | 15 | TEXT ·Syscall6(SB),NOSPLIT,$0-44 16 | JMP syscall·Syscall6(SB) 17 | 18 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 19 | JMP syscall·RawSyscall(SB) 20 | 21 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 22 | JMP syscall·RawSyscall6(SB) 23 | 24 | TEXT ·seek(SB),NOSPLIT,$0-36 25 | JMP syscall·exit(SB) 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/env_plan9.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Plan 9 environment variables. 6 | 7 | package plan9 8 | 9 | import ( 10 | "syscall" 11 | ) 12 | 13 | func Getenv(key string) (value string, found bool) { 14 | return syscall.Getenv(key) 15 | } 16 | 17 | func Setenv(key, value string) error { 18 | return syscall.Setenv(key, value) 19 | } 20 | 21 | func Clearenv() { 22 | syscall.Clearenv() 23 | } 24 | 25 | func Environ() []string { 26 | return syscall.Environ() 27 | } 28 | 29 | func Unsetenv(key string) error { 30 | return syscall.Unsetenv(key) 31 | } 32 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright 2009 The Go Authors. All rights reserved. 3 | # Use of this source code is governed by a BSD-style 4 | # license that can be found in the LICENSE file. 5 | 6 | COMMAND="mksysnum_plan9.sh $@" 7 | 8 | cat <= 10 { 16 | buf[i] = byte(val%10 + '0') 17 | i-- 18 | val /= 10 19 | } 20 | buf[i] = byte(val + '0') 21 | return string(buf[i:]) 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/.gitignore: -------------------------------------------------------------------------------- 1 | _obj/ 2 | unix.test 3 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | type Signal = syscall.Signal 12 | type Errno = syscall.Errno 13 | type SysProcAttr = syscall.SysProcAttr 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_aix_ppc64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go 11 | // 12 | 13 | TEXT ·syscall6(SB),NOSPLIT,$0-88 14 | JMP syscall·syscall6(SB) 15 | 16 | TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSyscall6(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_bsd_386.s: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (freebsd || netbsd || openbsd) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // System call support for 386 BSD 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-28 15 | JMP syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 18 | JMP syscall·Syscall6(SB) 19 | 20 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 21 | JMP syscall·Syscall9(SB) 22 | 23 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 24 | JMP syscall·RawSyscall(SB) 25 | 26 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 27 | JMP syscall·RawSyscall6(SB) 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_bsd_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // System call support for AMD64 BSD 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-56 15 | JMP syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 18 | JMP syscall·Syscall6(SB) 19 | 20 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 21 | JMP syscall·Syscall9(SB) 22 | 23 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 24 | JMP syscall·RawSyscall(SB) 25 | 26 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 27 | JMP syscall·RawSyscall6(SB) 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_bsd_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (freebsd || netbsd || openbsd) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // System call support for ARM BSD 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-28 15 | B syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 18 | B syscall·Syscall6(SB) 19 | 20 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 21 | B syscall·Syscall9(SB) 22 | 23 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 24 | B syscall·RawSyscall(SB) 25 | 26 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 27 | B syscall·RawSyscall6(SB) 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_bsd_arm64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin || freebsd || netbsd || openbsd) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // System call support for ARM64 BSD 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-56 15 | JMP syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 18 | JMP syscall·Syscall6(SB) 19 | 20 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 21 | JMP syscall·Syscall9(SB) 22 | 23 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 24 | JMP syscall·RawSyscall(SB) 25 | 26 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 27 | JMP syscall·RawSyscall6(SB) 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin || freebsd || netbsd || openbsd) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for ppc64, BSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin || freebsd || netbsd || openbsd) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // System call support for RISCV64 BSD 10 | 11 | // Just jump to package syscall's implementation for all these functions. 12 | // The runtime may know about them. 13 | 14 | TEXT ·Syscall(SB),NOSPLIT,$0-56 15 | JMP syscall·Syscall(SB) 16 | 17 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 18 | JMP syscall·Syscall6(SB) 19 | 20 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 21 | JMP syscall·Syscall9(SB) 22 | 23 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 24 | JMP syscall·RawSyscall(SB) 25 | 26 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 27 | JMP syscall·RawSyscall6(SB) 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && (ppc64 || ppc64le) && gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for ppc64, Linux 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 17 | BL runtime·entersyscall(SB) 18 | MOVD a1+8(FP), R3 19 | MOVD a2+16(FP), R4 20 | MOVD a3+24(FP), R5 21 | MOVD R0, R6 22 | MOVD R0, R7 23 | MOVD R0, R8 24 | MOVD trap+0(FP), R9 // syscall entry 25 | SYSCALL R9 26 | MOVD R3, r1+32(FP) 27 | MOVD R4, r2+40(FP) 28 | BL runtime·exitsyscall(SB) 29 | RET 30 | 31 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 32 | MOVD a1+8(FP), R3 33 | MOVD a2+16(FP), R4 34 | MOVD a3+24(FP), R5 35 | MOVD R0, R6 36 | MOVD R0, R7 37 | MOVD R0, R8 38 | MOVD trap+0(FP), R9 // syscall entry 39 | SYSCALL R9 40 | MOVD R3, r1+32(FP) 41 | MOVD R4, r2+40(FP) 42 | RET 43 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for mips64, OpenBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_solaris_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go 11 | // 12 | 13 | TEXT ·sysvicall6(SB),NOSPLIT,$0-88 14 | JMP syscall·sysvicall6(SB) 15 | 16 | TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSysvicall6(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/auxv_unsupported.go: -------------------------------------------------------------------------------- 1 | // Copyright 2025 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | func Auxv() ([][2]uintptr, error) { 12 | return nil, syscall.ENOTSUP 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/bluetooth_linux.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Bluetooth sockets and messages 6 | 7 | package unix 8 | 9 | // Bluetooth Protocols 10 | const ( 11 | BTPROTO_L2CAP = 0 12 | BTPROTO_HCI = 1 13 | BTPROTO_SCO = 2 14 | BTPROTO_RFCOMM = 3 15 | BTPROTO_BNEP = 4 16 | BTPROTO_CMTP = 5 17 | BTPROTO_HIDP = 6 18 | BTPROTO_AVDTP = 7 19 | ) 20 | 21 | const ( 22 | HCI_CHANNEL_RAW = 0 23 | HCI_CHANNEL_USER = 1 24 | HCI_CHANNEL_MONITOR = 2 25 | HCI_CHANNEL_CONTROL = 3 26 | HCI_CHANNEL_LOGGING = 4 27 | ) 28 | 29 | // Socketoption Level 30 | const ( 31 | SOL_BLUETOOTH = 0x112 32 | SOL_HCI = 0x0 33 | SOL_L2CAP = 0x6 34 | SOL_RFCOMM = 0x12 35 | SOL_SCO = 0x11 36 | ) 37 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/constants.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | package unix 8 | 9 | const ( 10 | R_OK = 0x4 11 | W_OK = 0x2 12 | X_OK = 0x1 13 | ) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/dev_aix_ppc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix && ppc 6 | 7 | // Functions to access/create device major and minor numbers matching the 8 | // encoding used by AIX. 9 | 10 | package unix 11 | 12 | // Major returns the major component of a Linux device number. 13 | func Major(dev uint64) uint32 { 14 | return uint32((dev >> 16) & 0xffff) 15 | } 16 | 17 | // Minor returns the minor component of a Linux device number. 18 | func Minor(dev uint64) uint32 { 19 | return uint32(dev & 0xffff) 20 | } 21 | 22 | // Mkdev returns a Linux device number generated from the given major and minor 23 | // components. 24 | func Mkdev(major, minor uint32) uint64 { 25 | return uint64(((major) << 16) | (minor)) 26 | } 27 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/dev_aix_ppc64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix && ppc64 6 | 7 | // Functions to access/create device major and minor numbers matching the 8 | // encoding used AIX. 9 | 10 | package unix 11 | 12 | // Major returns the major component of a Linux device number. 13 | func Major(dev uint64) uint32 { 14 | return uint32((dev & 0x3fffffff00000000) >> 32) 15 | } 16 | 17 | // Minor returns the minor component of a Linux device number. 18 | func Minor(dev uint64) uint32 { 19 | return uint32((dev & 0x00000000ffffffff) >> 0) 20 | } 21 | 22 | // Mkdev returns a Linux device number generated from the given major and minor 23 | // components. 24 | func Mkdev(major, minor uint32) uint64 { 25 | var DEVNO64 uint64 26 | DEVNO64 = 0x8000000000000000 27 | return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64) 28 | } 29 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/dev_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Functions to access/create device major and minor numbers matching the 6 | // encoding used in Darwin's sys/types.h header. 7 | 8 | package unix 9 | 10 | // Major returns the major component of a Darwin device number. 11 | func Major(dev uint64) uint32 { 12 | return uint32((dev >> 24) & 0xff) 13 | } 14 | 15 | // Minor returns the minor component of a Darwin device number. 16 | func Minor(dev uint64) uint32 { 17 | return uint32(dev & 0xffffff) 18 | } 19 | 20 | // Mkdev returns a Darwin device number generated from the given major and minor 21 | // components. 22 | func Mkdev(major, minor uint32) uint64 { 23 | return (uint64(major) << 24) | uint64(minor) 24 | } 25 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/dev_freebsd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Functions to access/create device major and minor numbers matching the 6 | // encoding used in FreeBSD's sys/types.h header. 7 | // 8 | // The information below is extracted and adapted from sys/types.h: 9 | // 10 | // Minor gives a cookie instead of an index since in order to avoid changing the 11 | // meanings of bits 0-15 or wasting time and space shifting bits 16-31 for 12 | // devices that don't use them. 13 | 14 | package unix 15 | 16 | // Major returns the major component of a FreeBSD device number. 17 | func Major(dev uint64) uint32 { 18 | return uint32((dev >> 8) & 0xff) 19 | } 20 | 21 | // Minor returns the minor component of a FreeBSD device number. 22 | func Minor(dev uint64) uint32 { 23 | return uint32(dev & 0xffff00ff) 24 | } 25 | 26 | // Mkdev returns a FreeBSD device number generated from the given major and 27 | // minor components. 28 | func Mkdev(major, minor uint32) uint64 { 29 | return (uint64(major) << 8) | uint64(minor) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/dev_netbsd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Functions to access/create device major and minor numbers matching the 6 | // encoding used in NetBSD's sys/types.h header. 7 | 8 | package unix 9 | 10 | // Major returns the major component of a NetBSD device number. 11 | func Major(dev uint64) uint32 { 12 | return uint32((dev & 0x000fff00) >> 8) 13 | } 14 | 15 | // Minor returns the minor component of a NetBSD device number. 16 | func Minor(dev uint64) uint32 { 17 | minor := uint32((dev & 0x000000ff) >> 0) 18 | minor |= uint32((dev & 0xfff00000) >> 12) 19 | return minor 20 | } 21 | 22 | // Mkdev returns a NetBSD device number generated from the given major and minor 23 | // components. 24 | func Mkdev(major, minor uint32) uint64 { 25 | dev := (uint64(major) << 8) & 0x000fff00 26 | dev |= (uint64(minor) << 12) & 0xfff00000 27 | dev |= (uint64(minor) << 0) & 0x000000ff 28 | return dev 29 | } 30 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/dev_openbsd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Functions to access/create device major and minor numbers matching the 6 | // encoding used in OpenBSD's sys/types.h header. 7 | 8 | package unix 9 | 10 | // Major returns the major component of an OpenBSD device number. 11 | func Major(dev uint64) uint32 { 12 | return uint32((dev & 0x0000ff00) >> 8) 13 | } 14 | 15 | // Minor returns the minor component of an OpenBSD device number. 16 | func Minor(dev uint64) uint32 { 17 | minor := uint32((dev & 0x000000ff) >> 0) 18 | minor |= uint32((dev & 0xffff0000) >> 8) 19 | return minor 20 | } 21 | 22 | // Mkdev returns an OpenBSD device number generated from the given major and minor 23 | // components. 24 | func Mkdev(major, minor uint32) uint64 { 25 | dev := (uint64(major) << 8) & 0x0000ff00 26 | dev |= (uint64(minor) << 8) & 0xffff0000 27 | dev |= (uint64(minor) << 0) & 0x000000ff 28 | return dev 29 | } 30 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/dev_zos.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build zos && s390x 6 | 7 | // Functions to access/create device major and minor numbers matching the 8 | // encoding used by z/OS. 9 | // 10 | // The information below is extracted and adapted from macros. 11 | 12 | package unix 13 | 14 | // Major returns the major component of a z/OS device number. 15 | func Major(dev uint64) uint32 { 16 | return uint32((dev >> 16) & 0x0000FFFF) 17 | } 18 | 19 | // Minor returns the minor component of a z/OS device number. 20 | func Minor(dev uint64) uint32 { 21 | return uint32(dev & 0x0000FFFF) 22 | } 23 | 24 | // Mkdev returns a z/OS device number generated from the given major and minor 25 | // components. 26 | func Mkdev(major, minor uint32) uint64 { 27 | return (uint64(major) << 16) | uint64(minor) 28 | } 29 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/endian_big.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | //go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 6 | 7 | package unix 8 | 9 | const isBigEndian = true 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/endian_little.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | //go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh 6 | 7 | package unix 8 | 9 | const isBigEndian = false 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/env_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2010 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | // Unix environment variables. 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Getenv(key string) (value string, found bool) { 14 | return syscall.Getenv(key) 15 | } 16 | 17 | func Setenv(key, value string) error { 18 | return syscall.Setenv(key, value) 19 | } 20 | 21 | func Clearenv() { 22 | syscall.Clearenv() 23 | } 24 | 25 | func Environ() []string { 26 | return syscall.Environ() 27 | } 28 | 29 | func Unsetenv(key string) error { 30 | return syscall.Unsetenv(key) 31 | } 32 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/fcntl_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | import "unsafe" 8 | 9 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument. 10 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) { 11 | return fcntl(int(fd), cmd, arg) 12 | } 13 | 14 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. 15 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { 16 | _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk)))) 17 | return err 18 | } 19 | 20 | // FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command. 21 | func FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error { 22 | _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore)))) 23 | return err 24 | } 25 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc) 6 | 7 | package unix 8 | 9 | func init() { 10 | // On 32-bit Linux systems, the fcntl syscall that matches Go's 11 | // Flock_t type is SYS_FCNTL64, not SYS_FCNTL. 12 | fcntl64Syscall = SYS_FCNTL64 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/fdset.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | package unix 8 | 9 | // Set adds fd to the set fds. 10 | func (fds *FdSet) Set(fd int) { 11 | fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS)) 12 | } 13 | 14 | // Clear removes fd from the set fds. 15 | func (fds *FdSet) Clear(fd int) { 16 | fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS)) 17 | } 18 | 19 | // IsSet returns whether fd is in the set fds. 20 | func (fds *FdSet) IsSet(fd int) bool { 21 | return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0 22 | } 23 | 24 | // Zero clears the set fds. 25 | func (fds *FdSet) Zero() { 26 | for i := range fds.Bits { 27 | fds.Bits[i] = 0 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build gccgo && linux && amd64 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | //extern gettimeofday 12 | func realGettimeofday(*Timeval, *byte) int32 13 | 14 | func gettimeofday(tv *Timeval) (err syscall.Errno) { 15 | r := realGettimeofday(tv, nil) 16 | if r < 0 { 17 | return syscall.GetErrno() 18 | } 19 | return 0 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/mmap_nomremap.go: -------------------------------------------------------------------------------- 1 | // Copyright 2023 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos 6 | 7 | package unix 8 | 9 | var mapper = &mmapper{ 10 | active: make(map[*byte][]byte), 11 | mmap: mmap, 12 | munmap: munmap, 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/pagesize_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos 6 | 7 | // For Unix, get the pagesize from the runtime. 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Getpagesize() int { 14 | return syscall.Getpagesize() 15 | } 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/ptrace_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build darwin && !ios 6 | 7 | package unix 8 | 9 | func ptrace(request int, pid int, addr uintptr, data uintptr) error { 10 | return ptrace1(request, pid, addr, data) 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/ptrace_ios.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build ios 6 | 7 | package unix 8 | 9 | func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { 10 | return ENOTSUP 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/race.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin && race) || (linux && race) || (freebsd && race) 6 | 7 | package unix 8 | 9 | import ( 10 | "runtime" 11 | "unsafe" 12 | ) 13 | 14 | const raceenabled = true 15 | 16 | func raceAcquire(addr unsafe.Pointer) { 17 | runtime.RaceAcquire(addr) 18 | } 19 | 20 | func raceReleaseMerge(addr unsafe.Pointer) { 21 | runtime.RaceReleaseMerge(addr) 22 | } 23 | 24 | func raceReadRange(addr unsafe.Pointer, len int) { 25 | runtime.RaceReadRange(addr, len) 26 | } 27 | 28 | func raceWriteRange(addr unsafe.Pointer, len int) { 29 | runtime.RaceWriteRange(addr, len) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos 6 | 7 | package unix 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/readdirent_getdents.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || dragonfly || freebsd || linux || netbsd || openbsd 6 | 7 | package unix 8 | 9 | // ReadDirent reads directory entries from fd and writes them into buf. 10 | func ReadDirent(fd int, buf []byte) (n int, err error) { 11 | return Getdents(fd, buf) 12 | } 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/readdirent_getdirentries.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build darwin || zos 6 | 7 | package unix 8 | 9 | import "unsafe" 10 | 11 | // ReadDirent reads directory entries from fd and writes them into buf. 12 | func ReadDirent(fd int, buf []byte) (n int, err error) { 13 | // Final argument is (basep *uintptr) and the syscall doesn't take nil. 14 | // 64 bits should be enough. (32 bits isn't even on 386). Since the 15 | // actual system call is getdirentries64, 64 is a good guess. 16 | // TODO(rsc): Can we use a single global basep for all calls? 17 | var base = (*uintptr)(unsafe.Pointer(new(uint64))) 18 | return Getdirentries(fd, buf, base) 19 | } 20 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | // Round the length of a raw sockaddr up to align it properly. 8 | func cmsgAlignOf(salen int) int { 9 | salign := SizeofPtr 10 | if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) { 11 | // 64-bit Dragonfly before the September 2019 ABI changes still requires 12 | // 32-bit aligned access to network subsystem. 13 | salign = 4 14 | } 15 | return (salen + salign - 1) & ^(salign - 1) 16 | } 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_hurd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build hurd 6 | 7 | package unix 8 | 9 | /* 10 | #include 11 | int ioctl(int, unsigned long int, uintptr_t); 12 | */ 13 | import "C" 14 | import "unsafe" 15 | 16 | func ioctl(fd int, req uint, arg uintptr) (err error) { 17 | r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) 18 | if r0 == -1 && er != nil { 19 | err = er 20 | } 21 | return 22 | } 23 | 24 | func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { 25 | r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg))) 26 | if r0 == -1 && er != nil { 27 | err = er 28 | } 29 | return 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_hurd_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build 386 && hurd 6 | 7 | package unix 8 | 9 | const ( 10 | TIOCGETA = 0x62251713 11 | ) 12 | 13 | type Winsize struct { 14 | Row uint16 15 | Col uint16 16 | Xpixel uint16 17 | Ypixel uint16 18 | } 19 | 20 | type Termios struct { 21 | Iflag uint32 22 | Oflag uint32 23 | Cflag uint32 24 | Lflag uint32 25 | Cc [20]uint8 26 | Ispeed int32 27 | Ospeed int32 28 | } 29 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_alarm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2022 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64) 6 | 7 | package unix 8 | 9 | // SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH 10 | // values. 11 | 12 | //sys Alarm(seconds uint) (remaining uint, err error) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build amd64 && linux && gc 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | //go:noescape 12 | func gettimeofday(tv *Timeval) (err syscall.Errno) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && gc 6 | 7 | package unix 8 | 9 | // SyscallNoError may be used instead of Syscall for syscalls that don't fail. 10 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 11 | 12 | // RawSyscallNoError may be used instead of RawSyscall for syscalls that don't 13 | // fail. 14 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && gc && 386 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | // Underlying system call writes to newoffset via pointer. 12 | // Implemented in assembly to avoid allocation. 13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) 14 | 15 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 16 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build arm && gc && linux 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | // Underlying system call writes to newoffset via pointer. 12 | // Implemented in assembly to avoid allocation. 13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && gccgo && 386 6 | 7 | package unix 8 | 9 | import ( 10 | "syscall" 11 | "unsafe" 12 | ) 13 | 14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { 15 | var newoffset int64 16 | offsetLow := uint32(offset & 0xffffffff) 17 | offsetHigh := uint32((offset >> 32) & 0xffffffff) 18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) 19 | return newoffset, err 20 | } 21 | 22 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { 23 | fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) 24 | return int(fd), err 25 | } 26 | 27 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { 28 | fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) 29 | return int(fd), err 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && gccgo && arm 6 | 7 | package unix 8 | 9 | import ( 10 | "syscall" 11 | "unsafe" 12 | ) 13 | 14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { 15 | var newoffset int64 16 | offsetLow := uint32(offset & 0xffffffff) 17 | offsetHigh := uint32((offset >> 32) & 0xffffffff) 18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) 19 | return newoffset, err 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_netbsd_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build 386 && netbsd 6 | 7 | package unix 8 | 9 | func setTimespec(sec, nsec int64) Timespec { 10 | return Timespec{Sec: sec, Nsec: int32(nsec)} 11 | } 12 | 13 | func setTimeval(sec, usec int64) Timeval { 14 | return Timeval{Sec: sec, Usec: int32(usec)} 15 | } 16 | 17 | func SetKevent(k *Kevent_t, fd, mode, flags int) { 18 | k.Ident = uint32(fd) 19 | k.Filter = uint32(mode) 20 | k.Flags = uint32(flags) 21 | } 22 | 23 | func (iov *Iovec) SetLen(length int) { 24 | iov.Len = uint32(length) 25 | } 26 | 27 | func (msghdr *Msghdr) SetControllen(length int) { 28 | msghdr.Controllen = uint32(length) 29 | } 30 | 31 | func (msghdr *Msghdr) SetIovlen(length int) { 32 | msghdr.Iovlen = int32(length) 33 | } 34 | 35 | func (cmsg *Cmsghdr) SetLen(length int) { 36 | cmsg.Len = uint32(length) 37 | } 38 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build amd64 && netbsd 6 | 7 | package unix 8 | 9 | func setTimespec(sec, nsec int64) Timespec { 10 | return Timespec{Sec: sec, Nsec: nsec} 11 | } 12 | 13 | func setTimeval(sec, usec int64) Timeval { 14 | return Timeval{Sec: sec, Usec: int32(usec)} 15 | } 16 | 17 | func SetKevent(k *Kevent_t, fd, mode, flags int) { 18 | k.Ident = uint64(fd) 19 | k.Filter = uint32(mode) 20 | k.Flags = uint32(flags) 21 | } 22 | 23 | func (iov *Iovec) SetLen(length int) { 24 | iov.Len = uint64(length) 25 | } 26 | 27 | func (msghdr *Msghdr) SetControllen(length int) { 28 | msghdr.Controllen = uint32(length) 29 | } 30 | 31 | func (msghdr *Msghdr) SetIovlen(length int) { 32 | msghdr.Iovlen = int32(length) 33 | } 34 | 35 | func (cmsg *Cmsghdr) SetLen(length int) { 36 | cmsg.Len = uint32(length) 37 | } 38 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build arm && netbsd 6 | 7 | package unix 8 | 9 | func setTimespec(sec, nsec int64) Timespec { 10 | return Timespec{Sec: sec, Nsec: int32(nsec)} 11 | } 12 | 13 | func setTimeval(sec, usec int64) Timeval { 14 | return Timeval{Sec: sec, Usec: int32(usec)} 15 | } 16 | 17 | func SetKevent(k *Kevent_t, fd, mode, flags int) { 18 | k.Ident = uint32(fd) 19 | k.Filter = uint32(mode) 20 | k.Flags = uint32(flags) 21 | } 22 | 23 | func (iov *Iovec) SetLen(length int) { 24 | iov.Len = uint32(length) 25 | } 26 | 27 | func (msghdr *Msghdr) SetControllen(length int) { 28 | msghdr.Controllen = uint32(length) 29 | } 30 | 31 | func (msghdr *Msghdr) SetIovlen(length int) { 32 | msghdr.Iovlen = int32(length) 33 | } 34 | 35 | func (cmsg *Cmsghdr) SetLen(length int) { 36 | cmsg.Len = uint32(length) 37 | } 38 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build arm64 && netbsd 6 | 7 | package unix 8 | 9 | func setTimespec(sec, nsec int64) Timespec { 10 | return Timespec{Sec: sec, Nsec: nsec} 11 | } 12 | 13 | func setTimeval(sec, usec int64) Timeval { 14 | return Timeval{Sec: sec, Usec: int32(usec)} 15 | } 16 | 17 | func SetKevent(k *Kevent_t, fd, mode, flags int) { 18 | k.Ident = uint64(fd) 19 | k.Filter = uint32(mode) 20 | k.Flags = uint32(flags) 21 | } 22 | 23 | func (iov *Iovec) SetLen(length int) { 24 | iov.Len = uint64(length) 25 | } 26 | 27 | func (msghdr *Msghdr) SetControllen(length int) { 28 | msghdr.Controllen = uint32(length) 29 | } 30 | 31 | func (msghdr *Msghdr) SetIovlen(length int) { 32 | msghdr.Iovlen = int32(length) 33 | } 34 | 35 | func (cmsg *Cmsghdr) SetLen(length int) { 36 | cmsg.Len = uint32(length) 37 | } 38 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | func setTimespec(sec, nsec int64) Timespec { 8 | return Timespec{Sec: sec, Nsec: nsec} 9 | } 10 | 11 | func setTimeval(sec, usec int64) Timeval { 12 | return Timeval{Sec: sec, Usec: usec} 13 | } 14 | 15 | func SetKevent(k *Kevent_t, fd, mode, flags int) { 16 | k.Ident = uint64(fd) 17 | k.Filter = int16(mode) 18 | k.Flags = uint16(flags) 19 | } 20 | 21 | func (iov *Iovec) SetLen(length int) { 22 | iov.Len = uint64(length) 23 | } 24 | 25 | func (msghdr *Msghdr) SetControllen(length int) { 26 | msghdr.Controllen = uint32(length) 27 | } 28 | 29 | func (msghdr *Msghdr) SetIovlen(length int) { 30 | msghdr.Iovlen = uint32(length) 31 | } 32 | 33 | func (cmsg *Cmsghdr) SetLen(length int) { 34 | cmsg.Len = uint32(length) 35 | } 36 | 37 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions 38 | // of OpenBSD the syscall is called sysctl instead of __sysctl. 39 | const SYS___SYSCTL = SYS_SYSCTL 40 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build amd64 && solaris 6 | 7 | package unix 8 | 9 | func setTimespec(sec, nsec int64) Timespec { 10 | return Timespec{Sec: sec, Nsec: nsec} 11 | } 12 | 13 | func setTimeval(sec, usec int64) Timeval { 14 | return Timeval{Sec: sec, Usec: usec} 15 | } 16 | 17 | func (iov *Iovec) SetLen(length int) { 18 | iov.Len = uint64(length) 19 | } 20 | 21 | func (msghdr *Msghdr) SetIovlen(length int) { 22 | msghdr.Iovlen = int32(length) 23 | } 24 | 25 | func (cmsg *Cmsghdr) SetLen(length int) { 26 | cmsg.Len = uint32(length) 27 | } 28 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_unix_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 12 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 13 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 14 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && (ppc64le || ppc64) && gc 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { 12 | return syscall.Syscall(trap, a1, a2, a3) 13 | } 14 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { 15 | return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6) 16 | } 17 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { 18 | return syscall.RawSyscall(trap, a1, a2, a3) 19 | } 20 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { 21 | return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6) 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/sysvshm_linux.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux 6 | 7 | package unix 8 | 9 | import "runtime" 10 | 11 | // SysvShmCtl performs control operations on the shared memory segment 12 | // specified by id. 13 | func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { 14 | if runtime.GOARCH == "arm" || 15 | runtime.GOARCH == "mips64" || runtime.GOARCH == "mips64le" { 16 | cmd |= ipc_64 17 | } 18 | 19 | return shmctl(id, cmd, desc) 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/sysvshm_unix_other.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build (darwin && !ios) || zos 6 | 7 | package unix 8 | 9 | // SysvShmCtl performs control operations on the shared memory segment 10 | // specified by id. 11 | func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { 12 | return shmctl(id, cmd, desc) 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/vgetrandom_linux.go: -------------------------------------------------------------------------------- 1 | // Copyright 2024 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build linux && go1.24 6 | 7 | package unix 8 | 9 | import _ "unsafe" 10 | 11 | //go:linkname vgetrandom runtime.vgetrandom 12 | //go:noescape 13 | func vgetrandom(p []byte, flags uint32) (ret int, supported bool) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go: -------------------------------------------------------------------------------- 1 | // Copyright 2024 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !linux || !go1.24 6 | 7 | package unix 8 | 9 | func vgetrandom(p []byte, flags uint32) (ret int, supported bool) { 10 | return -1, false 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go: -------------------------------------------------------------------------------- 1 | // Code generated by linux/mkall.go generatePtraceRegSet("arm64"). DO NOT EDIT. 2 | 3 | package unix 4 | 5 | import "unsafe" 6 | 7 | // PtraceGetRegSetArm64 fetches the registers used by arm64 binaries. 8 | func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error { 9 | iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))} 10 | return ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) 11 | } 12 | 13 | // PtraceSetRegSetArm64 sets the registers used by arm64 binaries. 14 | func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error { 15 | iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))} 16 | return ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) 17 | } 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows 6 | 7 | package windows 8 | 9 | import "syscall" 10 | 11 | type Errno = syscall.Errno 12 | type SysProcAttr = syscall.SysProcAttr 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/eventlog.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows 6 | 7 | package windows 8 | 9 | const ( 10 | EVENTLOG_SUCCESS = 0 11 | EVENTLOG_ERROR_TYPE = 1 12 | EVENTLOG_WARNING_TYPE = 2 13 | EVENTLOG_INFORMATION_TYPE = 4 14 | EVENTLOG_AUDIT_SUCCESS = 8 15 | EVENTLOG_AUDIT_FAILURE = 16 16 | ) 17 | 18 | //sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW 19 | //sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource 20 | //sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/mksyscall.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build generate 6 | 7 | package windows 8 | 9 | //go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/race.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows && race 6 | 7 | package windows 8 | 9 | import ( 10 | "runtime" 11 | "unsafe" 12 | ) 13 | 14 | const raceenabled = true 15 | 16 | func raceAcquire(addr unsafe.Pointer) { 17 | runtime.RaceAcquire(addr) 18 | } 19 | 20 | func raceReleaseMerge(addr unsafe.Pointer) { 21 | runtime.RaceReleaseMerge(addr) 22 | } 23 | 24 | func raceReadRange(addr unsafe.Pointer, len int) { 25 | runtime.RaceReadRange(addr, len) 26 | } 27 | 28 | func raceWriteRange(addr unsafe.Pointer, len int) { 29 | runtime.RaceWriteRange(addr, len) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows && !race 6 | 7 | package windows 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/str.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build windows 6 | 7 | package windows 8 | 9 | func itoa(val int) string { // do it here rather than with fmt to avoid dependency 10 | if val < 0 { 11 | return "-" + itoa(-val) 12 | } 13 | var buf [32]byte // big enough for int64 14 | i := len(buf) - 1 15 | for val >= 10 { 16 | buf[i] = byte(val%10 + '0') 17 | i-- 18 | val /= 10 19 | } 20 | buf[i] = byte(val + '0') 21 | return string(buf[i:]) 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/types_windows_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package windows 6 | 7 | type WSAData struct { 8 | Version uint16 9 | HighVersion uint16 10 | Description [WSADESCRIPTION_LEN + 1]byte 11 | SystemStatus [WSASYS_STATUS_LEN + 1]byte 12 | MaxSockets uint16 13 | MaxUdpDg uint16 14 | VendorInfo *byte 15 | } 16 | 17 | type Servent struct { 18 | Name *byte 19 | Aliases **byte 20 | Port uint16 21 | Proto *byte 22 | } 23 | 24 | type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { 25 | PerProcessUserTimeLimit int64 26 | PerJobUserTimeLimit int64 27 | LimitFlags uint32 28 | MinimumWorkingSetSize uintptr 29 | MaximumWorkingSetSize uintptr 30 | ActiveProcessLimit uint32 31 | Affinity uintptr 32 | PriorityClass uint32 33 | SchedulingClass uint32 34 | _ uint32 // pad to 8 byte boundary 35 | } 36 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/types_windows_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package windows 6 | 7 | type WSAData struct { 8 | Version uint16 9 | HighVersion uint16 10 | MaxSockets uint16 11 | MaxUdpDg uint16 12 | VendorInfo *byte 13 | Description [WSADESCRIPTION_LEN + 1]byte 14 | SystemStatus [WSASYS_STATUS_LEN + 1]byte 15 | } 16 | 17 | type Servent struct { 18 | Name *byte 19 | Aliases **byte 20 | Proto *byte 21 | Port uint16 22 | } 23 | 24 | type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { 25 | PerProcessUserTimeLimit int64 26 | PerJobUserTimeLimit int64 27 | LimitFlags uint32 28 | MinimumWorkingSetSize uintptr 29 | MaximumWorkingSetSize uintptr 30 | ActiveProcessLimit uint32 31 | Affinity uintptr 32 | PriorityClass uint32 33 | SchedulingClass uint32 34 | } 35 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/types_windows_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package windows 6 | 7 | type WSAData struct { 8 | Version uint16 9 | HighVersion uint16 10 | Description [WSADESCRIPTION_LEN + 1]byte 11 | SystemStatus [WSASYS_STATUS_LEN + 1]byte 12 | MaxSockets uint16 13 | MaxUdpDg uint16 14 | VendorInfo *byte 15 | } 16 | 17 | type Servent struct { 18 | Name *byte 19 | Aliases **byte 20 | Port uint16 21 | Proto *byte 22 | } 23 | 24 | type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { 25 | PerProcessUserTimeLimit int64 26 | PerJobUserTimeLimit int64 27 | LimitFlags uint32 28 | MinimumWorkingSetSize uintptr 29 | MaximumWorkingSetSize uintptr 30 | ActiveProcessLimit uint32 31 | Affinity uintptr 32 | PriorityClass uint32 33 | SchedulingClass uint32 34 | _ uint32 // pad to 8 byte boundary 35 | } 36 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/types_windows_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package windows 6 | 7 | type WSAData struct { 8 | Version uint16 9 | HighVersion uint16 10 | MaxSockets uint16 11 | MaxUdpDg uint16 12 | VendorInfo *byte 13 | Description [WSADESCRIPTION_LEN + 1]byte 14 | SystemStatus [WSASYS_STATUS_LEN + 1]byte 15 | } 16 | 17 | type Servent struct { 18 | Name *byte 19 | Aliases **byte 20 | Proto *byte 21 | Port uint16 22 | } 23 | 24 | type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { 25 | PerProcessUserTimeLimit int64 26 | PerJobUserTimeLimit int64 27 | LimitFlags uint32 28 | MinimumWorkingSetSize uintptr 29 | MaximumWorkingSetSize uintptr 30 | ActiveProcessLimit uint32 31 | Affinity uintptr 32 | PriorityClass uint32 33 | SchedulingClass uint32 34 | } 35 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Go 2 | 3 | Go is an open source project. 4 | 5 | It is the work of hundreds of contributors. We appreciate your help! 6 | 7 | ## Filing issues 8 | 9 | When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: 10 | 11 | 1. What version of Go are you using (`go version`)? 12 | 2. What operating system and processor architecture are you using? 13 | 3. What did you do? 14 | 4. What did you expect to see? 15 | 5. What did you see instead? 16 | 17 | General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. 18 | The gophers there will answer or ask you to file an issue if you've tripped over a bug. 19 | 20 | ## Contributing code 21 | 22 | Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) 23 | before sending patches. 24 | 25 | Unless otherwise noted, the Go source files are distributed under 26 | the BSD-style license found in the LICENSE file. 27 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/README.md: -------------------------------------------------------------------------------- 1 | # Go terminal/console support 2 | 3 | [![Go Reference](https://pkg.go.dev/badge/golang.org/x/term.svg)](https://pkg.go.dev/golang.org/x/term) 4 | 5 | This repository provides Go terminal and console support packages. 6 | 7 | ## Report Issues / Send Patches 8 | 9 | This repository uses Gerrit for code changes. To learn how to submit changes to 10 | this repository, see https://go.dev/doc/contribute. 11 | 12 | The git repository is https://go.googlesource.com/term. 13 | 14 | The main issue tracker for the term repository is located at 15 | https://go.dev/issues. Prefix your issue with "x/term:" in the 16 | subject line, so it is easy to find. 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/codereview.cfg: -------------------------------------------------------------------------------- 1 | issuerepo: golang/go 2 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/term_unix_bsd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build darwin || dragonfly || freebsd || netbsd || openbsd 6 | 7 | package term 8 | 9 | import "golang.org/x/sys/unix" 10 | 11 | const ioctlReadTermios = unix.TIOCGETA 12 | const ioctlWriteTermios = unix.TIOCSETA 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/term/term_unix_other.go: -------------------------------------------------------------------------------- 1 | // Copyright 2021 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build aix || linux || solaris || zos 6 | 7 | package term 8 | 9 | import "golang.org/x/sys/unix" 10 | 11 | const ioctlReadTermios = unix.TCGETS 12 | const ioctlWriteTermios = unix.TCSETS 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/cases/fold.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package cases 6 | 7 | import "golang.org/x/text/transform" 8 | 9 | type caseFolder struct{ transform.NopResetter } 10 | 11 | // caseFolder implements the Transformer interface for doing case folding. 12 | func (t *caseFolder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { 13 | c := context{dst: dst, src: src, atEOF: atEOF} 14 | for c.next() { 15 | foldFull(&c) 16 | c.checkpoint() 17 | } 18 | return c.ret() 19 | } 20 | 21 | func (t *caseFolder) Span(src []byte, atEOF bool) (n int, err error) { 22 | c := context{src: src, atEOF: atEOF} 23 | for c.next() && isFoldFull(&c) { 24 | c.checkpoint() 25 | } 26 | return c.retSpan() 27 | } 28 | 29 | func makeFold(o options) transform.SpanningTransformer { 30 | // TODO: Special case folding, through option Language, Special/Turkic, or 31 | // both. 32 | // TODO: Implement Compact options. 33 | return &caseFolder{} 34 | } 35 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/internal/language/common.go: -------------------------------------------------------------------------------- 1 | // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. 2 | 3 | package language 4 | 5 | // This file contains code common to the maketables.go and the package code. 6 | 7 | // AliasType is the type of an alias in AliasMap. 8 | type AliasType int8 9 | 10 | const ( 11 | Deprecated AliasType = iota 12 | Macro 13 | Legacy 14 | 15 | AliasTypeUnknown AliasType = -1 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/internal/language/compact.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package language 6 | 7 | // CompactCoreInfo is a compact integer with the three core tags encoded. 8 | type CompactCoreInfo uint32 9 | 10 | // GetCompactCore generates a uint32 value that is guaranteed to be unique for 11 | // different language, region, and script values. 12 | func GetCompactCore(t Tag) (cci CompactCoreInfo, ok bool) { 13 | if t.LangID > langNoIndexOffset { 14 | return 0, false 15 | } 16 | cci |= CompactCoreInfo(t.LangID) << (8 + 12) 17 | cci |= CompactCoreInfo(t.ScriptID) << 12 18 | cci |= CompactCoreInfo(t.RegionID) 19 | return cci, true 20 | } 21 | 22 | // Tag generates a tag from c. 23 | func (c CompactCoreInfo) Tag() Tag { 24 | return Tag{ 25 | LangID: Language(c >> 20), 26 | RegionID: Region(c & 0x3ff), 27 | ScriptID: Script(c>>12) & 0xff, 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/internal/language/coverage.go: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package language 6 | 7 | // BaseLanguages returns the list of all supported base languages. It generates 8 | // the list by traversing the internal structures. 9 | func BaseLanguages() []Language { 10 | base := make([]Language, 0, NumLanguages) 11 | for i := 0; i < langNoIndexOffset; i++ { 12 | // We included "und" already for the value 0. 13 | if i != nonCanonicalUnd { 14 | base = append(base, Language(i)) 15 | } 16 | } 17 | i := langNoIndexOffset 18 | for _, v := range langNoIndex { 19 | for k := 0; k < 8; k++ { 20 | if v&1 == 1 { 21 | base = append(base, Language(i)) 22 | } 23 | v >>= 1 24 | i++ 25 | } 26 | } 27 | return base 28 | } 29 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build go1.10 6 | 7 | package bidirule 8 | 9 | func (t *Transformer) isFinal() bool { 10 | return t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //go:build !go1.10 6 | 7 | package bidirule 8 | 9 | func (t *Transformer) isFinal() bool { 10 | if !t.isRTL() { 11 | return true 12 | } 13 | return t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial 14 | } 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/secure/precis/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package precis contains types and functions for the preparation, 6 | // enforcement, and comparison of internationalized strings ("PRECIS") as 7 | // defined in RFC 8264. It also contains several pre-defined profiles for 8 | // passwords, nicknames, and usernames as defined in RFC 8265 and RFC 8266. 9 | // 10 | // BE ADVISED: This package is under construction and the API may change in 11 | // backwards incompatible ways and without notice. 12 | package precis // import "golang.org/x/text/secure/precis" 13 | 14 | //go:generate go run gen.go gen_trieval.go 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/secure/precis/transformer.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package precis 6 | 7 | import "golang.org/x/text/transform" 8 | 9 | // Transformer implements the transform.Transformer interface. 10 | type Transformer struct { 11 | t transform.Transformer 12 | } 13 | 14 | // Reset implements the transform.Transformer interface. 15 | func (t Transformer) Reset() { t.t.Reset() } 16 | 17 | // Transform implements the transform.Transformer interface. 18 | func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { 19 | return t.t.Transform(dst, src, atEOF) 20 | } 21 | 22 | // Bytes returns a new byte slice with the result of applying t to b. 23 | func (t Transformer) Bytes(b []byte) []byte { 24 | b, _, _ = transform.Bytes(t, b) 25 | return b 26 | } 27 | 28 | // String returns a string with the result of applying t to s. 29 | func (t Transformer) String(s string) string { 30 | s, _, _ = transform.String(t, s) 31 | return s 32 | } 33 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/width/kind_string.go: -------------------------------------------------------------------------------- 1 | // Code generated by "stringer -type=Kind"; DO NOT EDIT. 2 | 3 | package width 4 | 5 | import "strconv" 6 | 7 | func _() { 8 | // An "invalid array index" compiler error signifies that the constant values have changed. 9 | // Re-run the stringer command to generate them again. 10 | var x [1]struct{} 11 | _ = x[Neutral-0] 12 | _ = x[EastAsianAmbiguous-1] 13 | _ = x[EastAsianWide-2] 14 | _ = x[EastAsianNarrow-3] 15 | _ = x[EastAsianFullwidth-4] 16 | _ = x[EastAsianHalfwidth-5] 17 | } 18 | 19 | const _Kind_name = "NeutralEastAsianAmbiguousEastAsianWideEastAsianNarrowEastAsianFullwidthEastAsianHalfwidth" 20 | 21 | var _Kind_index = [...]uint8{0, 7, 25, 38, 53, 71, 89} 22 | 23 | func (i Kind) String() string { 24 | if i < 0 || i >= Kind(len(_Kind_index)-1) { 25 | return "Kind(" + strconv.FormatInt(int64(i), 10) + ")" 26 | } 27 | return _Kind_name[_Kind_index[i]:_Kind_index[i+1]] 28 | } 29 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/width/trieval.go: -------------------------------------------------------------------------------- 1 | // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. 2 | 3 | package width 4 | 5 | // elem is an entry of the width trie. The high byte is used to encode the type 6 | // of the rune. The low byte is used to store the index to a mapping entry in 7 | // the inverseData array. 8 | type elem uint16 9 | 10 | const ( 11 | tagNeutral elem = iota << typeShift 12 | tagAmbiguous 13 | tagWide 14 | tagNarrow 15 | tagFullwidth 16 | tagHalfwidth 17 | ) 18 | 19 | const ( 20 | numTypeBits = 3 21 | typeShift = 16 - numTypeBits 22 | 23 | // tagNeedsFold is true for all fullwidth and halfwidth runes except for 24 | // the Won sign U+20A9. 25 | tagNeedsFold = 0x1000 26 | 27 | // The Korean Won sign is halfwidth, but SHOULD NOT be mapped to a wide 28 | // variant. 29 | wonSign rune = 0x20A9 30 | ) 31 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v2/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.4.x" 5 | - "1.5.x" 6 | - "1.6.x" 7 | - "1.7.x" 8 | - "1.8.x" 9 | - "1.9.x" 10 | - "1.10.x" 11 | - "1.11.x" 12 | - "1.12.x" 13 | - "1.13.x" 14 | - "1.14.x" 15 | - "tip" 16 | 17 | go_import_path: gopkg.in/yaml.v2 18 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v2/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2011-2016 Canonical Ltd. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v2/writerc.go: -------------------------------------------------------------------------------- 1 | package yaml 2 | 3 | // Set the writer error and return false. 4 | func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { 5 | emitter.error = yaml_WRITER_ERROR 6 | emitter.problem = problem 7 | return false 8 | } 9 | 10 | // Flush the output buffer. 11 | func yaml_emitter_flush(emitter *yaml_emitter_t) bool { 12 | if emitter.write_handler == nil { 13 | panic("write handler not set") 14 | } 15 | 16 | // Check if the buffer is empty. 17 | if emitter.buffer_pos == 0 { 18 | return true 19 | } 20 | 21 | if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { 22 | return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) 23 | } 24 | emitter.buffer_pos = 0 25 | return true 26 | } 27 | --------------------------------------------------------------------------------