diff --git a/server/handler.go b/server/handler.go index 21e7e0c..bda7bd0 100644 --- a/server/handler.go +++ b/server/handler.go @@ -4,6 +4,7 @@ import ( "bytes" "strings" + "github.com/rs/zerolog" "github.com/rs/zerolog/log" "github.com/valyala/fasthttp" @@ -81,15 +82,16 @@ func Handler(mainDomainSuffix, rawDomain []byte, // tryBranch checks if a branch exists and populates the target variables. If canonicalLink is non-empty, it will // also disallow search indexing and add a Link header to the canonical URL. - tryBranch := func(repo, branch string, path []string, canonicalLink string) bool { + tryBranch := func(log zerolog.Logger, repo, branch string, path []string, canonicalLink string) bool { if repo == "" { + log.Debug().Msg("tryBranch: repo == ''") return false } // Check if the branch exists, otherwise treat it as a file path branchTimestampResult := upstream.GetBranchTimestamp(giteaClient, targetOwner, repo, branch, branchTimestampCache) if branchTimestampResult == nil { - // branch doesn't exist + log.Debug().Msg("tryBranch: branch doesn't exist") return false } @@ -109,6 +111,7 @@ func Handler(mainDomainSuffix, rawDomain []byte, ) } + log.Debug().Msg("tryBranch: true") return true } @@ -136,7 +139,8 @@ func Handler(mainDomainSuffix, rawDomain []byte, // raw.codeberg.org/example/myrepo/@main/index.html if len(pathElements) > 2 && strings.HasPrefix(pathElements[2], "@") { log.Debug().Msg("raw domain preparations, now trying with specified branch") - if tryBranch(targetRepo, pathElements[2][1:], pathElements[3:], + if tryBranch(log, + targetRepo, pathElements[2][1:], pathElements[3:], giteaRoot+"/"+targetOwner+"/"+targetRepo+"/src/branch/%b/%p", ) { log.Debug().Msg("tryBranch, now trying upstream 1") @@ -151,7 +155,8 @@ func Handler(mainDomainSuffix, rawDomain []byte, } log.Debug().Msg("raw domain preparations, now trying with default branch") - tryBranch(targetRepo, "", pathElements[2:], + tryBranch(log, + targetRepo, "", pathElements[2:], giteaRoot+"/"+targetOwner+"/"+targetRepo+"/src/branch/%b/%p", ) log.Debug().Msg("tryBranch, now trying upstream 2") @@ -185,7 +190,8 @@ func Handler(mainDomainSuffix, rawDomain []byte, } log.Debug().Msg("main domain preparations, now trying with specified repo & branch") - if tryBranch(pathElements[0], pathElements[1][1:], pathElements[2:], + if tryBranch(log, + pathElements[0], pathElements[1][1:], pathElements[2:], "/"+pathElements[0]+"/%p", ) { log.Debug().Msg("tryBranch, now trying upstream 3") @@ -202,7 +208,8 @@ func Handler(mainDomainSuffix, rawDomain []byte, // example.codeberg.page/@main/index.html if strings.HasPrefix(pathElements[0], "@") { log.Debug().Msg("main domain preparations, now trying with specified branch") - if tryBranch("pages", pathElements[0][1:], pathElements[1:], "/%p") { + if tryBranch(log, + "pages", pathElements[0][1:], pathElements[1:], "/%p") { log.Debug().Msg("tryBranch, now trying upstream 4") tryUpstream(ctx, giteaClient, mainDomainSuffix, trimmedHost, targetOptions, targetOwner, targetRepo, targetBranch, targetPath, @@ -217,7 +224,8 @@ func Handler(mainDomainSuffix, rawDomain []byte, // example.codeberg.page/myrepo/index.html // example.codeberg.page/pages/... is not allowed here. log.Debug().Msg("main domain preparations, now trying with specified repo") - if pathElements[0] != "pages" && tryBranch(pathElements[0], "pages", pathElements[1:], "") { + if pathElements[0] != "pages" && tryBranch(log, + pathElements[0], "pages", pathElements[1:], "") { log.Debug().Msg("tryBranch, now trying upstream 5") tryUpstream(ctx, giteaClient, mainDomainSuffix, trimmedHost, targetOptions, targetOwner, targetRepo, targetBranch, targetPath, @@ -228,7 +236,8 @@ func Handler(mainDomainSuffix, rawDomain []byte, // Try to use the "pages" repo on its default branch // example.codeberg.page/index.html log.Debug().Msg("main domain preparations, now trying with default repo/branch") - if tryBranch("pages", "", pathElements, "") { + if tryBranch(log, + "pages", "", pathElements, "") { log.Debug().Msg("tryBranch, now trying upstream 6") tryUpstream(ctx, giteaClient, mainDomainSuffix, trimmedHost, targetOptions, targetOwner, targetRepo, targetBranch, targetPath, @@ -259,7 +268,8 @@ func Handler(mainDomainSuffix, rawDomain []byte, // Try to use the given repo on the given branch or the default branch log.Debug().Msg("custom domain preparations, now trying with details from DNS") - if tryBranch(targetRepo, targetBranch, pathElements, canonicalLink) { + if tryBranch(log, + targetRepo, targetBranch, pathElements, canonicalLink) { canonicalDomain, valid := upstream.CheckCanonicalDomain(giteaClient, targetOwner, targetRepo, targetBranch, trimmedHostStr, string(mainDomainSuffix), canonicalDomainCache) if !valid { html.ReturnErrorPage(ctx, fasthttp.StatusMisdirectedRequest)