ce241fa40a
Fix certificate renewal ( #209 )
...
A database bug in xorm.go prevents the pages-server from saving a
renewed certificate for a domain that already has one in the database.
Co-authored-by: crystal <crystal@noreply.codeberg.org >
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/209
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Crystal <crystal@noreply.codeberg.org >
Co-committed-by: Crystal <crystal@noreply.codeberg.org >
2023-03-20 23:59:34 +01:00
272c7ca76f
Fix xorm regressions by handle wildcard certs correctly ( #177 )
...
close #176
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/177
2023-02-11 01:26:21 +00:00
d8d119b0b3
Fix Cache Bug ( #178 )
...
error io.EOF is gracefully end of file read.
so we don't need to cancel cache saving
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/178
2023-02-11 00:31:56 +00:00
7b35a192bf
Add cert store option based on sqlite3, mysql & postgres ( #173 )
...
Deprecate **pogreb**!
close #169
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/173
2023-02-10 03:00:14 +00:00
7fce7cf68b
Added Whitespace Trimming TXT DNS Records ( #152 )
...
Solves https://codeberg.org/Codeberg/Community/issues/823 and https://codeberg.org/Codeberg/pages-server/issues/143
Co-authored-by: foehammer127 <foehammer127@gmail.com >
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/152
Reviewed-by: Otto <otto@codeberg.org >
Reviewed-by: Gusted <gusted@noreply.codeberg.org >
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: foehammer <foehammer@noreply.codeberg.org >
Co-committed-by: foehammer <foehammer@noreply.codeberg.org >
2023-02-10 01:44:44 +00:00
8b1f497bc4
Allow to use certificate even if domain validation fails ( #160 )
...
- Currently if the canonical domain validations fails(either for
legitimate reasons or for bug reasons like the request to Gitea/Forgejo
failing) it will use main domain certificate, which in the case for
custom domains will warrant a security error as the certificate isn't
issued to the custom domain.
- This patch handles this situation more gracefully and instead only
disallow obtaining a certificate if the domain validation fails, so in
the case that a certificate still exists it can still be used even if
the canonical domain validation fails. There's a small side effect,
legitimate users that remove domains from `.domain` will still be able
to use the removed domain(as long as the DNS records exists) as long as
the certificate currently hold by pages-server isn't expired.
- Given the increased usage in custom domains that are resulting in
errors, I think it ways more than the side effect.
- In order to future-proof against future slowdowns of instances, add a retry mechanism to the domain validation function, such that it's more likely to succeed even if the instance is not responding.
- Refactor the code a bit and add some comments.
Co-authored-by: Gusted <postmaster@gusted.xyz >
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/160
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2023-02-10 01:38:15 +00:00
513e79832a
Use correct log level for CheckCanonicalDomain
( #162 )
...
- Currently any error generated by requesting the `.domains` file of a repository would be logged under the info log level, which isn't the correct log level when we exclude the not found error.
- Use warn log level if the error isn't the not found error.
Co-authored-by: Gusted <postmaster@gusted.xyz >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/162
Reviewed-by: Otto <otto@codeberg.org >
2023-01-22 18:52:21 +00:00
bd538abd37
Fix wrong redirect on custom domain with path ( #154 )
...
closes #153
Co-authored-by: crapStone <crapstone01@gmail.com >
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/154
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: crapStone <crapstone@noreply.codeberg.org >
Co-committed-by: crapStone <crapstone@noreply.codeberg.org >
2023-01-11 00:00:37 +00:00
c286b3b1d0
Added TokenBucket to limit the rate of validation failures ( #151 )
...
Added new TockenBucket named `acmeClientFailLimit` to avoid being banned because of the [Failed validation limit](https://letsencrypt.org/docs/failed-validation-limit/ ) of Let's Encrypt.
The behaviour is similar to the other limiters blocking the `obtainCert` func ensuring rate under limit.
Co-authored-by: fsologureng <sologuren@estudiohum.cl >
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/151
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Felipe Leopoldo Sologuren Gutiérrez <fsologureng@noreply.codeberg.org >
Co-committed-by: Felipe Leopoldo Sologuren Gutiérrez <fsologureng@noreply.codeberg.org >
2023-01-04 05:26:14 +00:00
98d198d419
Safely get certificate's leaf ( #150 )
...
- It's not guaranteed that `tls.X509KeyPair` will set `c.Leaf`.
- This patch fixes this by using a wrapper that parses the leaf
certificate(in bytes) if `c.Leaf` wasn't set.
- Resolves #149
Co-authored-by: Gusted <postmaster@gusted.xyz >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/150
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2023-01-04 04:51:27 +00:00
caeb1a4acb
Return a 404 if there is no repository ( #141 )
...
If no repository is found the user expects a 404 status code
instead of a dependency failed status code (as it was before).
Signed-off-by: Jan Klippel <c0d3b3rg@kl1pp3l.de >
Fixes: https://codeberg.org/Codeberg/Community/issues/809
Co-authored-by: Jan Klippel <c0d3b3rg@kl1pp3l.de >
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/141
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: jklippel <jklippel@noreply.codeberg.org >
Co-committed-by: jklippel <jklippel@noreply.codeberg.org >
2022-11-22 21:26:10 +00:00
f2f943c0d8
Remove unnecessary conversion ( #139 )
...
- Remove unnecessary type conversion.
- Enforce via CI
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/139
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-11-15 16:15:11 +01:00
3c61a39864
Enable http/2 support ( #137 )
...
As per [the documentation](https://pkg.go.dev/net/http#Serve ), it doesn't enable HTTP2 by-default, unless we enable it via the `NextProtos` option.
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/137
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-11-12 22:25:20 +01:00
4565481643
refactor: finish use default const for defaultPagesBranch and defaultPagesRepo
2022-11-12 21:16:11 +01:00
c827a28dd8
defaultPagesBranch
2022-11-12 21:13:13 +01:00
aa90356f0a
use a const for defaultPagesRepo
2022-11-12 21:10:16 +01:00
b6d0a04b21
refactor: rm not needed type conversion
2022-11-12 21:04:34 +01:00
6c63b66ce4
Refactor split long functions ( #135 )
...
we have big functions that handle all stuff ... we should split this into smaler chuncks so we could test them seperate and make clear cuts in what happens where
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/135
2022-11-12 20:43:44 +01:00
b9966487f6
switch to std http implementation instead of fasthttp ( #106 )
...
close #100
close #109
close #113
close #28
close #63
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/106
2022-11-12 20:37:20 +01:00
91b54bef29
add newline
2022-11-07 23:09:41 +01:00
bf9a08e1fd
Fatal on ACME Client creation failure ( #133 )
...
- For production(*cough* Codeberg *cough*), it's important to not use
mock certs. So fail right from the start if this is the case and not try
to "handle it gracefully", as it would break production.
- Resolves #131
CC @6543
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/133
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-11-07 16:27:37 +01:00
091e6c8ed9
Add explicit logging in GetBranchTimestamp
( #130 )
...
- Logs are currently indicating that it's returning `nil` in valid
scenarios, therefor this patch adds extra logging in this code to
better understand what it is doing in this function.
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/130
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-09-18 16:13:27 +02:00
8f2699407d
Make verbose checks in tryBranch ( #127 )
...
- It's likely that the tryBranch is returning false when it should be returning true, make these logs more verbose so they show up on production logs.
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/127
Reviewed-by: 6543 <6543@obermui.de >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-09-13 23:06:31 +02:00
1ae50735a1
Add host to handler logging ( #123 )
...
- Add the host to the Handler's logging fields, so you don't just see the path, but also which domain was being requested.
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/123
Reviewed-by: 6543 <6543@noreply.codeberg.org >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-08-13 18:03:31 +02:00
dc41a4caf4
Add Support to Follow Symlinks and LFS ( #114 )
...
close #79
close #80
close #91
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/114
2022-08-12 06:40:12 +02:00
876a53d9a2
Improve logging ( #116 )
...
- Actually log useful information at their respective log level.
- Add logs in hot-paths to be able to deep-dive and debug specific requests (see server/handler.go)
- Add more information to existing fields(e.g. the host that the user is visiting, this was noted by @fnetX).
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/116
Reviewed-by: 6543 <6543@noreply.codeberg.org >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-08-12 05:06:26 +02:00
e06900d5e5
fix lint issue
2022-08-08 15:25:31 +02:00
8207586a48
just fix bcaceda711
2022-07-15 21:39:42 +02:00
bcaceda711
dont cache if ContentLength greater fileCacheSizeLimit ( #108 )
...
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/108
Reviewed-by: Otto <otto@codeberg.org >
2022-07-15 21:21:26 +02:00
5411c96ef3
Tell fasthttp to not set "Content-Length: 0" on non cached content ( #107 )
...
fix #97
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/107
2022-07-15 21:06:05 +02:00
fd24b4a2bc
Pass logger to fasthttp ( #98 )
...
- Use a logger with `FASTHTTP` prefix as fasthttp's logger so it's easy to see what fasthttp is logging in console/journal.
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/98
Reviewed-by: 6543 <6543@noreply.codeberg.org >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-07-12 15:32:48 +02:00
9076bc3f75
Support access branch that contains slash character ( #102 )
...
So we can access branch that contain slash like `branch/name` with `username.codeberg.page/repo/@branch~name/`.
Branch name cannot contain `~` character but it can be in a HTTP URL, so replace the `~` from URL to `/` could be a valid solution to me.
Resolve #101
Co-authored-by: Gary Wang <wzc782970009@gmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/102
Reviewed-by: 6543 <6543@noreply.codeberg.org >
Co-authored-by: Gary Wang <blumia@noreply.codeberg.org >
Co-committed-by: Gary Wang <blumia@noreply.codeberg.org >
2022-07-08 13:39:24 +02:00
48a49f69a7
Increase concurrent connections to default value ( #99 )
...
Use the default value of `256 * 1024` for the concurrency limit, this will mean that the server will be able to handle more connections.
Co-authored-by: Gusted <williamzijl7@hotmail.com >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/99
Reviewed-by: 6543 <6543@noreply.codeberg.org >
Co-authored-by: Gusted <gusted@noreply.codeberg.org >
Co-committed-by: Gusted <gusted@noreply.codeberg.org >
2022-07-03 13:20:02 +02:00
6dedd55eb3
Release via CI ( #94 )
...
* release via CI
* general CI improvements
close #76 , close #92
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/94
2022-06-14 20:35:11 +02:00
4c6164ef05
Propagate ETag from gitea ( #93 )
...
close #15
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/93
2022-06-14 18:23:34 +02:00
cc32bab31f
Enhance joinURL and return error on gitea client on start instead while running ( #88 )
...
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/88
2022-06-13 20:07:32 +02:00
38fb28f84f
implement custom 404 pages ( #81 )
...
solves #56 .
- The expected filename is `404.html`, like GitHub Pages
- Each repo/branch can have one `404.html` file at it's root
- If a repo does not have a `pages` branch, the 404.html file from the `pages` repository is used
- You get status code 404 (unless you request /404.html which returns 200)
- The error page is cached
---
close #56
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/81
Reviewed-by: 6543 <6543@noreply.codeberg.org >
Co-authored-by: crystal <crystal@noreply.codeberg.org >
Co-committed-by: crystal <crystal@noreply.codeberg.org >
2022-06-12 03:50:00 +02:00
02bd942b04
Move gitea api calls in own "client" package ( #78 )
...
continue #75
close #16
- fix regression (from #34 ) _thanks to @crystal_
- create own gitea client package
- more logging
- add mock impl of CertDB
Co-authored-by: 6543 <6543@obermui.de >
Co-authored-by: crystal <crystal@noreply.codeberg.org >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/78
Reviewed-by: crapStone <crapstone@noreply.codeberg.org >
2022-06-11 23:02:06 +02:00
bb8eb32ee2
make debug messages unique
2022-06-10 15:29:47 +02:00
6f12f2a8e4
fix bug
2022-05-15 22:36:12 +02:00
b2ca888050
Change MaxConnsPerIP to 0 to fix too many connections from HAProxy ( #77 )
...
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/77
Reviewed-by: 6543 <6543@noreply.codeberg.org >
Co-authored-by: Moritz Marquardt <momar@noreply.codeberg.org >
Co-committed-by: Moritz Marquardt <momar@noreply.codeberg.org >
2022-05-14 22:29:54 +02:00
4267d54a63
refactor (2) ( #34 )
...
move forward with refactoring:
- initial implementation of a smal "gitea client for fasthttp"
- move constant into const.go
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/34
Reviewed-by: Otto Richter <otto@codeberg.org >
2022-04-20 23:42:01 +02:00
a2c5376d9a
Fix CORS / add Access-Control-Allow-Origin * to all methods ( #69 )
...
The header is not only necessary on the OPTIONS request, but on any method, so I removed the condition.
Serving any workadventure map was broken BTW. We should have tested this :-(
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/69
Reviewed-by: Andreas Shimokawa <ashimokawa@noreply.codeberg.org >
Co-authored-by: Otto Richter <otto@codeberg.org >
Co-committed-by: Otto Richter <otto@codeberg.org >
2022-04-10 18:11:00 +02:00
1e4dfe2ae8
Fix tests to let CI pass ( #66 )
...
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/66
Reviewed-by: Otto Richter <otto@codeberg.org >
2022-03-30 21:31:09 +02:00
f5d0dc7447
Add pipeline ( #65 )
...
close #54
Co-authored-by: 6543 <6543@obermui.de >
Reviewed-on: https://codeberg.org/Codeberg/pages-server/pulls/65
Reviewed-by: Andreas Shimokawa <ashimokawa@noreply.codeberg.org >
2022-03-27 21:54:06 +02:00
cf9e6d9dc6
Fix certs only being renewed 7 or 30 days *after* they expire instead of before
...
Seems like plus, minus, greater than and less than are the most complex to understand mathematical concepts...
2022-02-28 21:50:13 +01:00
6af6523a0f
code format
2021-12-09 20:16:43 +01:00
70c7065f76
fix #31
2021-12-09 19:32:30 +01:00
196482da07
less panic
2021-12-05 23:21:55 +01:00
5aae7c882f
Merge branch 'master' into refactoring
2021-12-05 22:50:46 +01:00