This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | code.gitea.io/sdk/gitea | `v0.22.0` → `v0.24.1` |  |  | | [github.com/go-acme/lego/v4](https://github.com/go-acme/lego) | `v4.26.0` → `v4.33.0` |  |  | | [github.com/lib/pq](https://github.com/lib/pq) | `v1.10.9` → `v1.12.3` |  |  | | [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) | `v1.14.32` → `v1.14.42` |  |  | | [github.com/pelletier/go-toml/v2](https://github.com/pelletier/go-toml) | `v2.2.4` → `v2.3.0` |  |  | | [github.com/pires/go-proxyproto](https://github.com/pires/go-proxyproto) | `v0.8.1` → `v0.11.0` |  |  | | [github.com/reugn/equalizer](https://github.com/reugn/equalizer) | `v0.0.0-20210216135016-a959c509d7ad` → `v0.2.0` |  |  | | [github.com/rs/zerolog](https://github.com/rs/zerolog) | `v1.34.0` → `v1.35.0` |  |  | | xorm.io/xorm | `v1.3.10` → `v1.3.11` |  |  | --- ### Release Notes <details> <summary>go-acme/lego (github.com/go-acme/lego/v4)</summary> ### [`v4.33.0`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4330) [Compare Source](https://github.com/go-acme/lego/compare/v4.32.0...v4.33.0) - Release date: 2026-03-19 - Tag: [v4.33.0](https://github.com/go-acme/lego/releases/tag/v4.33.0) ##### Added - **\[dnsprovider]** Add DNS provider for Excedo - **\[dnsprovider]** Add DNS provider for EuroDNS - **\[dnsprovider]** Add DNS provider for Czechia ##### Changed - **\[lib]** feat: allow to Unwrap obtainError ##### Fixed - **\[dnsprovider]** liara: add support for team ID - **\[dnsprovider]** gigahostno: remove unused Zone fields ### [`v4.32.0`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4320) [Compare Source](https://github.com/go-acme/lego/compare/v4.31.0...v4.32.0) - Release date: 2026-02-19 - Tag: [v4.32.0](https://github.com/go-acme/lego/releases/tag/v4.32.0) ##### Added - **\[dnsprovider]** Add DNS provider for ArtFiles - **\[dnsprovider]** Add DNS provider for Leaseweb - **\[dnsprovider]** Add DNS provider for FusionLayer NameSurfer - **\[dnsprovider]** Add DNS provider for DDNSS - **\[dnsprovider]** Add DNS provider for Bluecat v2 - **\[dnsprovider]** Add DNS provider for TodayNIC/时代互联 - **\[dnsprovider]** Add DNS provider for DNSExit - **\[dnsprovider]** alidns: add line record option ##### Changed - **\[dnsprovider]** azure: reinforces deprecation - **\[dnsprovider]** allinkl: detect zone through API ##### Fixed - **\[ari]** fix: implement parsing for Retry-After header according to RFC 7231 - **\[dnsprovider]** namesurfer: fix updateDNSHost - **\[dnsprovider]** timewebcloud: fix subdomain support - **\[dnsprovider]** fix: deduplicate authz for DNS01 challenge - **\[lib,cli]** fix: use IPs to define the main domain - **\[lib]** fix: preserve domain order ### [`v4.31.0`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4310) [Compare Source](https://github.com/go-acme/lego/compare/v4.30.1...v4.31.0) - Release date: 2026-01-08 - Tag: [v4.31.0](https://github.com/go-acme/lego/releases/tag/v4.31.0) ##### Added - **\[dnsprovider]** Add DNS provider for ISPConfig - **\[dnsprovider]** Add DNS Provider for ISPConfig (DDNS Module) - **\[dnsprovider]** Add DNS provider for Alwaysdata - **\[dnsprovider]** Add DNS provider for JDCloud - **\[dnsprovider]** Add DNS provider for 35.com/三五互联 - **\[dnsprovider]** f5xc: add an option to configure the domain of the server ##### Changed - **\[lib]** feat: improve ACME error types - **\[dnsprovider,cname]** namedotcom: follow CNAME ##### Fixed - **\[dnsprovider]** hetzner: fix compatibility with \_FILE suffix - **\[dnsprovider]** gandiv5: fix API Key header ### [`v4.30.1`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4301) - Release date: 2025-12-16 - Tag: [v4.30.1](https://github.com/go-acme/lego/releases/tag/v4.30.1) Due to an error related to `aliyun/credentials-go`, some artifacts of the v4.30.0 release have not been published. This release contains the same things as v4.30.0. ### [`v4.30.0`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4300) - Release date: 2025-12-16 - Tag: [v4.30.0](https://github.com/go-acme/lego/releases/tag/v4.30.0) ##### Added - **\[dnsprovider]** Add DNS provider for Ionos Cloud - **\[dnsprovider]** Add DNS provider for Virtualname - **\[dnsprovider]** Add DNS Provider for Neodigit - **\[dnsprovider]** Add DNS provider for Syse.no - **\[dnsprovider]** Add DNS provider for Gravity - **\[dnsprovider]** Add DNS provider for hosting.nl ##### Changed - **\[cli]** feat: remove email requirement ##### Fixed - **\[dnsprovider]** autodns: use the right response structure ### [`v4.29.0`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4290) [Compare Source](https://github.com/go-acme/lego/compare/v4.28.1...v4.29.0) - Release date: 2025-11-29 - Tag: [v4.29.0](https://github.com/go-acme/lego/releases/tag/v4.29.0) ##### Added - **\[dnsprovider]** Add DNS provider for United-Domains - **\[dnsprovider]** Add DNS provider for Gigahost.no - **\[dnsprovider]** Add DNS provider for EdgeCenter - **\[dnsprovider]** Add DNS provider for AlibabaCloud ESA - **\[dnsprovider]** edgeone: add zones mapping - **\[dnsprovider]** namecheap: add experimental proxy support ##### Changed - **\[dnsprovider]** gandiv5: update base API URL ##### Fixed - **\[dnsprovider]** hetzner: use int64 for IDs - **\[dnsprovider]** baiducloud: pagination and TTL - **\[dnsprovider]** inwx: fix API breaking changes with record IDs ### [`v4.28.1`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4281) [Compare Source](https://github.com/go-acme/lego/compare/v4.28.0...v4.28.1) - Release date: 2025-11-06 - Tag: [v4.28.1](https://github.com/go-acme/lego/releases/tag/v4.28.1) ##### Fixed - **\[cli]** fix: skip nil response ### [`v4.28.0`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4280) [Compare Source](https://github.com/go-acme/lego/compare/v4.27.0...v4.28.0) - Release date: 2025-10-31 - Tag: [v4.28.0](https://github.com/go-acme/lego/releases/tag/v4.28.0) ##### Added - **\[dnsprovider]** Add DNS provider for Anexia - **\[dnsprovider]** Add DNS provider for webnames.ca - **\[dnsprovider]** webnames: rename to webnamesru to avoid ambiguity with webnamesca ##### Changed - **\[dnsprovider,log]** hetzner: add deprecation logs - **\[dnsprovider]** iwantmyname: provider deprecation - **\[cli]** improve retryable HTTP client error handling ##### Fixed - **\[dnsprovider]** hostinger: fix record update ### [`v4.27.0`](https://github.com/go-acme/lego/blob/HEAD/CHANGELOG.md#v4270) [Compare Source](https://github.com/go-acme/lego/compare/v4.26.0...v4.27.0) - Release date: 2025-10-17 - Tag: [v4.27.0](https://github.com/go-acme/lego/releases/tag/v4.27.0) ##### Added - **\[dnsprovider]** Add DNS provider for Octenium - **\[dnsprovider]** Add DNS provider for Hostinger - **\[dnsprovider]** Add DNS provider for Beget.com ##### Changed - **\[cli]** support `--private-key` with a [PKCS#8](https://github.com/PKCS/lego/issues/8) keypair - **\[dnsprovider]** hetzner: update to new API - **\[dnsprovider]** otc: adds option to use private zone ##### Fixed - **\[lib]** fix: deduplicate order identifiers </details> <details> <summary>lib/pq (github.com/lib/pq)</summary> ### [`v1.12.3`](https://github.com/lib/pq/blob/HEAD/CHANGELOG.md#v1123-2026-04-03) [Compare Source](https://github.com/lib/pq/compare/v1.12.2...v1.12.3) - Send datestyle startup parameter, improving compatbility with database engines that use a different default datestyle such as EnterpriseDB ([#​1312]). [#​1312]: https://github.com/lib/pq/pull/1312 ### [`v1.12.2`](https://github.com/lib/pq/blob/HEAD/CHANGELOG.md#v1122-2026-04-02) [Compare Source](https://github.com/lib/pq/compare/v1.12.1...v1.12.2) - Treat io.ErrUnexpectedEOF as driver.ErrBadConn so database/sql discards the connection. Since v1.12.0 this could result in permanently broken connections, especially with CockroachDB which frequently sends partial messages ([#​1299]). [#​1299]: https://github.com/lib/pq/pull/1299 ### [`v1.12.1`](https://github.com/lib/pq/blob/HEAD/CHANGELOG.md#v1121-2026-03-30) [Compare Source](https://github.com/lib/pq/compare/v1.12.0...v1.12.1) - Look for pgpass file in \~/.pgpass instead of \~/.postgresql/pgpass ([#​1300]). - Don't clear password if directly set on pq.Config ([#​1302]). [#​1300]: https://github.com/lib/pq/pull/1300 [#​1302]: https://github.com/lib/pq/pull/1302 ### [`v1.12.0`](https://github.com/lib/pq/blob/HEAD/CHANGELOG.md#v1120-2026-03-18) [Compare Source](https://github.com/lib/pq/compare/v1.11.2...v1.12.0) - The next release may change the default sslmode from `require` to `prefer`. See [#​1271] for details. - `CopyIn()` and `CopyInToSchema()` have been marked as deprecated. These are simple query builders and not needed for `COPY [..] FROM STDIN` support (which is *not* deprecated). ([#​1279]) ``` // Old tx.Prepare(CopyIn("temp", "num", "text", "blob", "nothing")) // Replacement tx.Prepare(`copy temp (num, text, blob, nothing) from stdin`) ``` ##### Features - Support protocol 3.2, and the `min_protocol_version` and `max_protocol_version` DSN parameters ([#​1258]). - Support `sslmode=prefer` and `sslmode=allow` ([#​1270]). - Support `ssl_min_protocol_version` and `ssl_max_protocol_version` ([#​1277]). - Support connection service file to load connection details ([#​1285]). - Support `sslrootcert=system` and use `~/.postgresql/root.crt` as the default value of sslrootcert ([#​1280], [#​1281]). - Add a new `pqerror` package with PostgreSQL error codes ([#​1275]). For example, to test if an error is a UNIQUE constraint violation: ``` if pqErr, ok := errors.AsType[*pq.Error](err); ok && pqErr.Code == pqerror.UniqueViolation { log.Fatalf("email %q already exsts", email) } ``` To make this a bit more convenient, it also adds a `pq.As()` function: ``` pqErr := pq.As(err, pqerror.UniqueViolation) if pqErr != nil { log.Fatalf("email %q already exsts", email) } ``` ##### Fixes - Fix SSL key permission check to allow modes stricter than [0600/0640#1265](https://github.com/0600/0640/issues/1265) ([#​1265]). - Fix Hstore to work with binary parameters ([#​1278]). - Clearer error when starting a new query while pq is still processing another query ([#​1272]). - Send intermediate CAs with client certificates, so they can be signed by an intermediate CA ([#​1267]). - Use `time.UTC` for UTC aliases such as `Etc/UTC` ([#​1282]). [#​1258]: https://github.com/lib/pq/pull/1258 [#​1265]: https://github.com/lib/pq/pull/1265 [#​1267]: https://github.com/lib/pq/pull/1267 [#​1270]: https://github.com/lib/pq/pull/1270 [#​1271]: https://github.com/lib/pq/pull/1271 [#​1272]: https://github.com/lib/pq/pull/1272 [#​1275]: https://github.com/lib/pq/pull/1275 [#​1277]: https://github.com/lib/pq/pull/1277 [#​1278]: https://github.com/lib/pq/pull/1278 [#​1279]: https://github.com/lib/pq/pull/1279 [#​1280]: https://github.com/lib/pq/pull/1280 [#​1281]: https://github.com/lib/pq/pull/1281 [#​1282]: https://github.com/lib/pq/pull/1282 [#​1283]: https://github.com/lib/pq/pull/1283 [#​1285]: https://github.com/lib/pq/pull/1285 ### [`v1.11.2`](https://github.com/lib/pq/blob/HEAD/CHANGELOG.md#v1112-2026-02-10) [Compare Source](https://github.com/lib/pq/compare/v1.11.1...v1.11.2) This fixes two regressions: - Don't send startup parameters if there is no value, improving compatibility with Supavisor ([#​1260]). - Don't send `dbname` as a startup parameter if `database=[..]` is used in the connection string. It's recommended to use dbname=, as database= is not a libpq option, and only worked by accident previously. ([#​1261]) [#​1260]: https://github.com/lib/pq/pull/1260 [#​1261]: https://github.com/lib/pq/pull/1261 ### [`v1.11.1`](https://github.com/lib/pq/blob/HEAD/CHANGELOG.md#v1111-2026-01-29) [Compare Source](https://github.com/lib/pq/compare/v1.11.0...v1.11.1) This fixes two regressions present in the v1.11.0 release: - Fix build on 32bit systems, Windows, and Plan 9 ([#​1253]). - Named \[]byte types and pointers to \[]byte (e.g. `*[]byte`, `json.RawMessage`) would be treated as an array instead of bytea ([#​1252]). [#​1252]: https://github.com/lib/pq/pull/1252 [#​1253]: https://github.com/lib/pq/pull/1253 ### [`v1.11.0`](https://github.com/lib/pq/blob/HEAD/CHANGELOG.md#v1110-2026-01-28) [Compare Source](https://github.com/lib/pq/compare/v1.10.9...v1.11.0) This version of pq requires Go 1.21 or newer. pq now supports only maintained PostgreSQL releases, which is PostgreSQL 14 and newer. Previously PostgreSQL 8.4 and newer were supported. ##### Features - The `pq.Error.Error()` text includes the position of the error (if reported by PostgreSQL) and SQLSTATE code ([#​1219], [#​1224]): ``` pq: column "columndoesntexist" does not exist at column 8 (42703) pq: syntax error at or near ")" at position 2:71 (42601) ``` - The `pq.Error.ErrorWithDetail()` method prints a more detailed multiline message, with the Detail, Hint, and error position (if any) ([#​1219]): ``` ERROR: syntax error at or near ")" (42601) CONTEXT: line 12, column 1: 10 | name varchar, 11 | version varchar, 12 | ); ^ ``` - Add `Config`, `NewConfig()`, and `NewConnectorConfig()` to supply connection details in a more structured way ([#​1240]). - Support `hostaddr` and `$PGHOSTADDR` ([#​1243]). - Support multiple values in `host`, `port`, and `hostaddr`, which are each tried in order, or randomly if `load_balance_hosts=random` is set ([#​1246]). - Support `target_session_attrs` connection parameter ([#​1246]). - Support [`sslnegotiation`] to use SSL without negotiation ([#​1180]). - Allow using a custom `tls.Config`, for example for encrypted keys ([#​1228]). - Add `PQGO_DEBUG=1` print the communication with PostgreSQL to stderr, to aid in debugging, testing, and bug reports ([#​1223]). - Add support for NamedValueChecker interface ([#​1125], [#​1238]). ##### Fixes - Match HOME directory lookup logic with libpq: prefer $HOME over /etc/passwd, ignore ENOTDIR errors, and use APPDATA on Windows ([#​1214]). - Fix `sslmode=verify-ca` verifying the hostname anyway when connecting to a DNS name (rather than IP) ([#​1226]). - Correctly detect pre-protocol errors such as the server not being able to fork or running out of memory ([#​1248]). - Fix build with wasm ([#​1184]), appengine ([#​745]), and Plan 9 ([#​1133]). - Deprecate and type alias `pq.NullTime` to `sql.NullTime` ([#​1211]). - Enforce integer limits of the Postgres wire protocol ([#​1161]). - Accept the `passfile` connection parameter to override `PGPASSFILE` ([#​1129]). - Fix connecting to socket on Windows systems ([#​1179]). - Don't perform a permission check on the .pgpass file on Windows ([#​595]). - Warn about incorrect .pgpass permissions ([#​595]). - Don't set extra\_float\_digits ([#​1212]). - Decode bpchar into a string ([#​949]). - Fix panic in Ping() by not requiring CommandComplete or EmptyQueryResponse in simpleQuery() ([#​1234]) - Recognize bit/varbit ([#​743]) and float types ([#​1166]) in ColumnTypeScanType(). - Accept `PGGSSLIB` and `PGKRBSRVNAME` environment variables ([#​1143]). - Handle ErrorResponse in readReadyForQuery and return proper error ([#​1136]). - Detect COPY even if the query starts with whitespace or comments ([#​1198]). - CopyIn() and CopyInSchema() now work if the list of columns is empty, in which case it will copy all columns ([#​1239]). - Treat nil \[]byte in query parameters as nil/NULL rather than `""` ([#​838]). - Accept multiple authentication methods before checking AuthOk, which improves compatibility with PgPool-II ([#​1188]). [`sslnegotiation`]: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLNEGOTIATION [#​595]: https://github.com/lib/pq/pull/595 [#​745]: https://github.com/lib/pq/pull/745 [#​743]: https://github.com/lib/pq/pull/743 [#​838]: https://github.com/lib/pq/pull/838 [#​949]: https://github.com/lib/pq/pull/949 [#​1125]: https://github.com/lib/pq/pull/1125 [#​1129]: https://github.com/lib/pq/pull/1129 [#​1133]: https://github.com/lib/pq/pull/1133 [#​1136]: https://github.com/lib/pq/pull/1136 [#​1143]: https://github.com/lib/pq/pull/1143 [#​1161]: https://github.com/lib/pq/pull/1161 [#​1166]: https://github.com/lib/pq/pull/1166 [#​1179]: https://github.com/lib/pq/pull/1179 [#​1180]: https://github.com/lib/pq/pull/1180 [#​1184]: https://github.com/lib/pq/pull/1184 [#​1188]: https://github.com/lib/pq/pull/1188 [#​1198]: https://github.com/lib/pq/pull/1198 [#​1211]: https://github.com/lib/pq/pull/1211 [#​1212]: https://github.com/lib/pq/pull/1212 [#​1214]: https://github.com/lib/pq/pull/1214 [#​1219]: https://github.com/lib/pq/pull/1219 [#​1223]: https://github.com/lib/pq/pull/1223 [#​1224]: https://github.com/lib/pq/pull/1224 [#​1226]: https://github.com/lib/pq/pull/1226 [#​1228]: https://github.com/lib/pq/pull/1228 [#​1234]: https://github.com/lib/pq/pull/1234 [#​1238]: https://github.com/lib/pq/pull/1238 [#​1239]: https://github.com/lib/pq/pull/1239 [#​1240]: https://github.com/lib/pq/pull/1240 [#​1243]: https://github.com/lib/pq/pull/1243 [#​1246]: https://github.com/lib/pq/pull/1246 [#​1248]: https://github.com/lib/pq/pull/1248 </details> <details> <summary>mattn/go-sqlite3 (github.com/mattn/go-sqlite3)</summary> ### [`v1.14.42`](https://github.com/mattn/go-sqlite3/compare/v1.14.41...v1.14.42) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.41...v1.14.42) ### [`v1.14.41`](https://github.com/mattn/go-sqlite3/compare/v1.14.40...v1.14.41) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.40...v1.14.41) ### [`v1.14.40`](https://github.com/mattn/go-sqlite3/compare/v1.14.39...v1.14.40) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.39...v1.14.40) ### [`v1.14.39`](https://github.com/mattn/go-sqlite3/compare/v1.14.38...v1.14.39) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.38...v1.14.39) ### [`v1.14.38`](https://github.com/mattn/go-sqlite3/compare/v1.14.37...v1.14.38) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.37...v1.14.38) ### [`v1.14.37`](https://github.com/mattn/go-sqlite3/compare/v1.14.36...v1.14.37) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.36...v1.14.37) ### [`v1.14.36`](https://github.com/mattn/go-sqlite3/compare/v1.14.35...v1.14.36) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.35...v1.14.36) ### [`v1.14.35`](https://github.com/mattn/go-sqlite3/compare/v1.14.34...v1.14.35) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.34...v1.14.35) ### [`v1.14.34`](https://github.com/mattn/go-sqlite3/compare/v1.14.33...v1.14.34) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.33...v1.14.34) ### [`v1.14.33`](https://github.com/mattn/go-sqlite3/compare/v1.14.32...v1.14.33) [Compare Source](https://github.com/mattn/go-sqlite3/compare/v1.14.32...v1.14.33) </details> <details> <summary>pelletier/go-toml (github.com/pelletier/go-toml/v2)</summary> ### [`v2.3.0`](https://github.com/pelletier/go-toml/releases/tag/v2.3.0) [Compare Source](https://github.com/pelletier/go-toml/compare/v2.2.4...v2.3.0) This is the first release built largely with the help of AI coding agents. Highlights include the complete removal of the unsafe package. go-toml is now fully safe Go code, with a geomean overhead of only \~1.4% vs v2.2.4 and zero additional allocations on benchmarks. This release also adds omitzero struct tag support, improves UnmarshalText/Unmarshaler handling for tables and array tables, and fixes several bugs including nil pointer marshaling, leap second handling, and datetime unmarshaling panics. <!-- Release notes generated using configuration in .github/release.yml at v2.3.0 --> #### What's Changed ##### What's new - marshal: don't escape quotes unnecessarily by [@​virtuald](https://github.com/virtuald) in [#​991](https://github.com/pelletier/go-toml/pull/991) - Add `omitzero` tag support by [@​NathanBaulch](https://github.com/NathanBaulch) in [#​998](https://github.com/pelletier/go-toml/pull/998) - Support custom IsZero() methods with omitzero tag by [@​pelletier](https://github.com/pelletier) in [#​1020](https://github.com/pelletier/go-toml/pull/1020) - UnmarshalText fallbacks to struct unmarshaling for tables and arrays by [@​pelletier](https://github.com/pelletier) in [#​1026](https://github.com/pelletier/go-toml/pull/1026) - \[unstable] Support Unmarshaler interface for tables and array tables by [@​pelletier](https://github.com/pelletier) in [#​1027](https://github.com/pelletier/go-toml/pull/1027) ##### Fixed bugs - Add missing UnmarshalTOML call by [@​pelletier](https://github.com/pelletier) in [#​996](https://github.com/pelletier/go-toml/pull/996) - Handle array table into an empty slice by [@​pelletier](https://github.com/pelletier) in [#​997](https://github.com/pelletier/go-toml/pull/997) - Unwrap strict errors by [@​bersace](https://github.com/bersace) in [#​1012](https://github.com/pelletier/go-toml/pull/1012) - Fix leap second handling found by fuzz by [@​pelletier](https://github.com/pelletier) in [#​1019](https://github.com/pelletier/go-toml/pull/1019) - Fix nil pointer map values not being marshaled by [@​pelletier](https://github.com/pelletier) in [#​1025](https://github.com/pelletier/go-toml/pull/1025) - Fix panic when unmarshaling datetime values to incompatible types ([#​1028](https://github.com/pelletier/go-toml/issues/1028)) by [@​pelletier](https://github.com/pelletier) in [#​1029](https://github.com/pelletier/go-toml/pull/1029) - Fix parser error pointing to wrong line at EOF without trailing newline by [@​pelletier](https://github.com/pelletier) in [#​1041](https://github.com/pelletier/go-toml/pull/1041) ##### Documentation - Improve Unmarshaling README by [@​heckelson](https://github.com/heckelson) in [#​1016](https://github.com/pelletier/go-toml/pull/1016) - Create AGENTS.md guidelines file by [@​pelletier](https://github.com/pelletier) in [#​1017](https://github.com/pelletier/go-toml/pull/1017) ##### Other changes - Unsafe package removal by [@​pelletier](https://github.com/pelletier) in [#​1021](https://github.com/pelletier/go-toml/pull/1021) - Bump CI and test scripts to Go 1.26 by [@​pelletier](https://github.com/pelletier) in [#​1030](https://github.com/pelletier/go-toml/pull/1030) #### New Contributors - [@​virtuald](https://github.com/virtuald) made their first contribution in [#​991](https://github.com/pelletier/go-toml/pull/991) - [@​NathanBaulch](https://github.com/NathanBaulch) made their first contribution in [#​999](https://github.com/pelletier/go-toml/pull/999) - [@​bersace](https://github.com/bersace) made their first contribution in [#​1012](https://github.com/pelletier/go-toml/pull/1012) - [@​flyn-org](https://github.com/flyn-org) made their first contribution in [#​1013](https://github.com/pelletier/go-toml/pull/1013) - [@​heckelson](https://github.com/heckelson) made their first contribution in [#​1016](https://github.com/pelletier/go-toml/pull/1016) **Full Changelog**: <https://github.com/pelletier/go-toml/compare/v2.2.4...v2.3.0> </details> <details> <summary>pires/go-proxyproto (github.com/pires/go-proxyproto)</summary> ### [`v0.11.0`](https://github.com/pires/go-proxyproto/releases/tag/v0.11.0) [Compare Source](https://github.com/pires/go-proxyproto/compare/v0.10.0...v0.11.0) 🚨 ATTENTION 🚨 [#​165](https://github.com/pires/go-proxyproto/issues/165) changes how header parsing errors surface to the consumer code. We highly recommend relying on [`errors.Is` and `errors.As`](https://medium.com/@​caring_smitten_gerbil_914/gos-errors-is-and-errors-as-unwrapping-the-right-way-cff69b374a1f) when handling errors produced by this library. #### What's Changed - http2: mimic stdlib http2 when connContext returns nil by [@​pires](https://github.com/pires) in [#​164](https://github.com/pires/go-proxyproto/pull/164) - header: wrap read buffer errors instead of dropping by [@​pires](https://github.com/pires) in [#​165](https://github.com/pires/go-proxyproto/pull/165) **Full Changelog**: <https://github.com/pires/go-proxyproto/compare/v0.10.0...v0.11.0> ### [`v0.10.0`](https://github.com/pires/go-proxyproto/releases/tag/v0.10.0) [Compare Source](https://github.com/pires/go-proxyproto/compare/v0.9.2...v0.10.0) #### What's Changed - ci,lint: explicit linter configuration and subsequent fixes by [@​pires](https://github.com/pires) in [#​141](https://github.com/pires/go-proxyproto/pull/141) - Fix nil panic when TestParseV2Invalid fails by [@​emersion](https://github.com/emersion) in [#​143](https://github.com/pires/go-proxyproto/pull/143) - Run gofmt by [@​emersion](https://github.com/emersion) in [#​146](https://github.com/pires/go-proxyproto/pull/146) - ci: fix duplicated checks by [@​pires](https://github.com/pires) in [#​151](https://github.com/pires/go-proxyproto/pull/151) - protocol: readHeader() respects previously called conn.SetReadDeadline(t) by [@​pires](https://github.com/pires) in [#​152](https://github.com/pires/go-proxyproto/pull/152) - protocol: test LOCAL uses underlying addresses by [@​pires](https://github.com/pires) in [#​153](https://github.com/pires/go-proxyproto/pull/153) - Use same bufio.Reader size for NewConn and for tests by [@​emersion](https://github.com/emersion) in [#​154](https://github.com/pires/go-proxyproto/pull/154) - Bump maximum header size to 4KiB, alternative version by [@​emersion](https://github.com/emersion) in [#​155](https://github.com/pires/go-proxyproto/pull/155) - protocol: don't buffer underlying conn reads after parsing header by [@​pires](https://github.com/pires) in [#​148](https://github.com/pires/go-proxyproto/pull/148) - readme: fix coveralls badge by [@​pires](https://github.com/pires) in [#​159](https://github.com/pires/go-proxyproto/pull/159) - v2: drop unnecessary io.LimitReader in parseVersion2 by [@​emersion](https://github.com/emersion) in [#​158](https://github.com/pires/go-proxyproto/pull/158) - http2: return http.ErrServerClosed in Server.Serve by [@​emersion](https://github.com/emersion) in [#​160](https://github.com/pires/go-proxyproto/pull/160) - protocol: allow per-listener and per-conn custom read buffer size by [@​pires](https://github.com/pires) in [#​163](https://github.com/pires/go-proxyproto/pull/163) Big shout-out to [@​clementnuss](https://github.com/clementnuss) [@​bollenberger](https://github.com/bollenberger) and [@​AlexanderYastrebov](https://github.com/AlexanderYastrebov) for contributions that didn't get entirely merged but their critique was key to get buffer reading bug fixes and improvements out. **Full Changelog**: <https://github.com/pires/go-proxyproto/compare/v0.9.2...v0.10.0> ### [`v0.9.2`](https://github.com/pires/go-proxyproto/releases/tag/v0.9.2) [Compare Source](https://github.com/pires/go-proxyproto/compare/v0.9.1...v0.9.2) #### What's Changed - http2: support http.Server.BaseContext & avoid empty ALPN on TLS by [@​emersion](https://github.com/emersion) and [@​pires](https://github.com/pires) in [#​140](https://github.com/pires/go-proxyproto/pull/140) **Full Changelog**: <https://github.com/pires/go-proxyproto/compare/v0.9.1...v0.9.2> ### [`v0.9.1`](https://github.com/pires/go-proxyproto/releases/tag/v0.9.1) [Compare Source](https://github.com/pires/go-proxyproto/compare/v0.9.0...v0.9.1) #### What's Changed - Add SSL client certificate TLV by [@​emersion](https://github.com/emersion) in [#​136](https://github.com/pires/go-proxyproto/pull/136) - tlvparse: small cosmetic fixes by [@​emersion](https://github.com/emersion) in [#​137](https://github.com/pires/go-proxyproto/pull/137) **Full Changelog**: <https://github.com/pires/go-proxyproto/compare/v0.9.0...v0.9.1> ### [`v0.9.0`](https://github.com/pires/go-proxyproto/releases/tag/v0.9.0) [Compare Source](https://github.com/pires/go-proxyproto/compare/v0.8.1...v0.9.0) #### What's Changed - ci: use local Go toolchain and downgrade Go version by [@​gustavosbarreto](https://github.com/gustavosbarreto) in [#​127](https://github.com/pires/go-proxyproto/pull/127) - Add TLS group and sig scheme TLVs by [@​emersion](https://github.com/emersion) in [#​133](https://github.com/pires/go-proxyproto/pull/133) - Add TrustProxyHeaderFrom policy function by [@​gearnode](https://github.com/gearnode) in [#​132](https://github.com/pires/go-proxyproto/pull/132) - ci: bump to Go 1.24 by [@​pires](https://github.com/pires) in [#​134](https://github.com/pires/go-proxyproto/pull/134) - policy: PolicyFunc is deprecated in favor of ConnPolicyFunc by [@​pires](https://github.com/pires) in [#​135](https://github.com/pires/go-proxyproto/pull/135) #### New Contributors - [@​gustavosbarreto](https://github.com/gustavosbarreto) made their first contribution in [#​127](https://github.com/pires/go-proxyproto/pull/127) - [@​gearnode](https://github.com/gearnode) made their first contribution in [#​132](https://github.com/pires/go-proxyproto/pull/132) **Full Changelog**: <https://github.com/pires/go-proxyproto/compare/v0.8.1...v0.9.0> </details> <details> <summary>rs/zerolog (github.com/rs/zerolog)</summary> ### [`v1.35.0`](https://github.com/rs/zerolog/compare/v1.34.0...v1.35.0) [Compare Source](https://github.com/rs/zerolog/compare/v1.34.0...v1.35.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTkuNCIsInVwZGF0ZWRJblZlciI6IjQyLjk5LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: woodpecker-bot <woodpecker-bot@obermui.de> Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/528 Co-authored-by: Dependency bot <renovate-bot@noreply.codeberg.org> Co-committed-by: Dependency bot <renovate-bot@noreply.codeberg.org>
Codeberg Pages
This code is in maintenance mode: https://codeberg.org/Codeberg/pages-server/issues/399
Codeberg Pages itself is in the process of migrating to the new git-pages server and is still a fully supported feature of Codeberg.
Gitea lacks the ability to host static pages from Git. The Codeberg Pages Server addresses this lack by implementing a standalone service that connects to Gitea via API. It is suitable to be deployed by other Gitea instances, too, to offer static pages hosting to their users.
End user documentation can mainly be found at the Wiki and the Codeberg Documentation.
Quickstart
This is the new Codeberg Pages server, a solution for serving static pages from Gitea repositories. Mapping custom domains is not static anymore, but can be done with DNS:
-
add a
.domainstext file to your repository, containing the allowed domains, separated by new lines. The first line will be the canonical domain/URL; all other occurrences will be redirected to it. -
add a CNAME entry to your domain, pointing to
[[{branch}.]{repo}.]{owner}.codeberg.page(repo defaults to "pages", "branch" defaults to the default branch if "repo" is "pages", or to "pages" if "repo" is something else. If the branch name contains slash characters, you need to replace "/" in the branch name to "~"):www.example.org. IN CNAME main.pages.example.codeberg.page. -
if a CNAME is set for "www.example.org", you can redirect there from the naked domain by adding an ALIAS record for "example.org" (if your provider allows ALIAS or similar records, otherwise use A/AAAA), together with a TXT record that points to your repo (just like the CNAME record):
example.org IN ALIAS codeberg.page.example.org IN TXT main.pages.example.codeberg.page.
Certificates are generated, updated and cleaned up automatically via Let's Encrypt through a TLS challenge.
Chat for admins & devs
matrix: #gitea-pages-server:matrix.org
Deployment
Warning: Some Caveats Apply
Currently, the deployment requires you to have some knowledge of system administration as well as understanding and building code, so you can eventually edit non-configurable and codeberg-specific settings. In the future, we'll try to reduce these and make hosting Codeberg Pages as easy as setting up Gitea. If you consider using Pages in practice, please consider contacting us first, we'll then try to share some basic steps and document the current usage for admins (might be changing in the current state).
Deploying the software itself is very easy. You can grab a current release binary or build yourself, configure the environment as described below, and you are done.
The hard part is about adding custom domain support if you intend to use it. SSL certificates (request + renewal) is automatically handled by the Pages Server, but if you want to run it on a shared IP address (and not a standalone), you'll need to configure your reverse proxy not to terminate the TLS connections, but forward the requests on the IP level to the Pages Server.
You can check out a proof of concept in the examples/haproxy-sni folder,
and especially have a look at this section of the haproxy.cfg.
If you want to test a change, you can open a PR and ask for the label build_pr_image to be added.
This will trigger a build of the PR which will build a docker image to be used for testing.
Environment Variables
ACME_ACCEPT_TERMS(default: use self-signed certificate): Set this to "true" to accept the Terms of Service of your ACME provider.ACME_API(default: https://acme-v02.api.letsencrypt.org/directory): set this to https://acme.mock.directory to use invalid certificates without any verification (great for debugging). ZeroSSL might be better in the future as it doesn't have rate limits and doesn't clash with the official Codeberg certificates (which are using Let's Encrypt), but I couldn't get it to work yet.ACME_EAB_KID&ACME_EAB_HMAC(default: don't use EAB): EAB credentials, for example for ZeroSSL.ACME_EMAIL(default:noreply@example.email): Set the email sent to the ACME API server to receive, for example, renewal reminders.ACME_USE_RATE_LIMITS(default: true): Set this to false to disable rate limits, e.g. with ZeroSSL.DNS_PROVIDER(default: use self-signed certificate): Code of the ACME DNS provider for the main domain wildcard. See https://go-acme.github.io/lego/dns/ for available values & additional environment variables.ENABLE_HTTP_SERVER(default: false): Set this to true to enable the HTTP-01 challenge and redirect all other HTTP requests to HTTPS. Currently only works with port 80.GITEA_API_TOKEN(default: empty): API token for the Gitea instance to access non-public (e.g. limited) repos.GITEA_ROOT(default:https://codeberg.org): root of the upstream Gitea instance.HOST&PORT(default:[::]&443): listen address.LOG_LEVEL(default: warn): Set this to specify the level of logging.NO_DNS_01(default:false): Disable the use of ACME DNS. This means that the wildcard certificate is self-signed and all domains and subdomains will have a distinct certificate. Because this may lead to a rate limit from the ACME provider, this option is not recommended for Gitea/Forgejo instances with open registrations or a great number of users/orgs.PAGES_DOMAIN(default:codeberg.page): main domain for pages.RAW_DOMAIN(default:raw.codeberg.page): domain for raw resources (must be subdomain ofPAGES_DOMAIN).
Custom Error Page
A custom error page template can be served by creating custom/error.html.
Data available to the template includes:
{{ .StatusCode }}: The HTTP status code (e.g. 404){{ .StatusText }}: The textual name associated with the status code (e.g. Not Found){{ .Message }}: The reason for the error
Contributing to the development
The Codeberg team is very open to your contribution. Since we are working nicely in a team, it might be hard at times to get started (still check out the issues, we always aim to have some things to get you started).
If you have any questions, want to work on a feature or could imagine collaborating with us for some time, feel free to ping us in an issue or in a general Matrix chat room.
You can also contact the maintainer(s) of this project:
Previous maintainers:
First steps
The code of this repository is split in several modules. The Architecture is explained in the wiki.
The cmd folder holds the data necessary for interacting with the service via the cli.
The heart of the software lives in the server folder and is split in several modules.
Again: Feel free to get in touch with us for any questions that might arise. Thank you very much.
Test Server
Make sure you have golang v1.21 or newer and just installed.
run just dev
now these pages should work:
- https://cb_pages_tests.localhost.mock.directory:4430/images/827679288a.jpg
- https://momar.localhost.mock.directory:4430/ci-testing/
- https://momar.localhost.mock.directory:4430/pag/@master/
- https://mock-pages.codeberg-test.org:4430/README.md
Profiling
This section is just a collection of commands for quick reference. If you want to learn more about profiling read this article or google
golang profiling.
First enable profiling by supplying the cli arg --enable-profiling or using the environment variable EENABLE_PROFILING.
Get cpu and mem stats:
go tool pprof -raw -output=cpu.txt 'http://localhost:9999/debug/pprof/profile?seconds=60' &
curl -so mem.txt 'http://localhost:9999/debug/pprof/heap?seconds=60'
More endpoints are documented here: https://pkg.go.dev/net/http/pprof