diff --git a/domains.go b/domains.go index d0b25b1..c244e40 100644 --- a/domains.go +++ b/domains.go @@ -4,8 +4,12 @@ import "github.com/valyala/fasthttp" // getTargetFromDNS searches for CNAME entries on the request domain, optionally with a "www." prefix, and checks if // the domain is included in the repository's "domains.txt" file. If everything is fine, it returns the target data. +// TODO: use TXT records with A/AAAA/ALIAS func getTargetFromDNS(ctx *fasthttp.RequestCtx) (targetOwner, targetRepo, targetBranch, targetPath string) { // TODO: read CNAME record for host and "www.{host}" to get those values // TODO: check domains.txt return } + +// TODO: cache domains.txt for 15 minutes +// TODO: canonical domains - redirect to first domain if domains.txt exists, also make sure owner.codeberg.page/pages/... redirects to /... diff --git a/handler.go b/handler.go index 97c38ad..be78499 100644 --- a/handler.go +++ b/handler.go @@ -66,6 +66,8 @@ func handler(ctx *fasthttp.RequestCtx) { if RawDomain != nil && bytes.Equal(ctx.Request.Host(), RawDomain) { // Serve raw content from RawDomain + // TODO: add canonical link and "X-Robots-Tag: noarchive, noindex" + targetOptions.TryIndexPages = false targetOptions.ForbiddenMimeTypes["text/html"] = struct{}{} targetOptions.DefaultMimeType = "text/plain; charset=utf-8" @@ -102,6 +104,8 @@ func handler(ctx *fasthttp.RequestCtx) { } else if bytes.HasSuffix(ctx.Request.Host(), MainDomainSuffix) { // Serve pages from subdomains of MainDomainSuffix + // TODO: add @branch syntax with "X-Robots-Tag: noarchive, noindex" + pathElements := strings.SplitN(string(bytes.Trim(ctx.Request.URI().Path(), "/")), "/", 2) targetOwner = string(bytes.TrimSuffix(ctx.Request.Host(), MainDomainSuffix)) targetRepo = pathElements[0] @@ -154,6 +158,7 @@ func returnErrorPage(ctx *fasthttp.RequestCtx, code int) { // getBranchTimestamp finds the default branch (if branch is "") and returns the last modification time of the branch // (or an empty time.Time if the branch doesn't exist) +// TODO: cache responses for ~15 minutes if a branch exists func getBranchTimestamp(owner, repo, branch string) (branchWithFallback string, t time.Time) { branchWithFallback = branch if branch == "" {