4 Architecture
6543 edytuje tę stronę 2023-02-13 19:46:38 +00:00

Hierarchy

package description depends on
main.go init app in cmd/* cmd, server/version
cmd start app, read config from args and env vars, validate args server/{cache,certificates,gitea,handler}, github.com/urfave/cli
server/cache create key/value cache based con settings github.com/OrlovEvgeny/go-mcache
server/database create cert database witch persist certs for main and custom domain github.com/go-acme/lego/v4/{certcrypto,certificate}, xorm.io/xorm
server/certificates request, mock, manage certificates via acme server/{cache,context,database,dns,gitea,utils}, github.com/go-acme/lego/v4/{registration,providers/dns,upstream}
server/context smal wrapper for net/http response and requests server/utils
server/dns handle dns lookups for custom domains server/cache
server/gitea handle all gitea-backend calls and it's caching server/cache, code.gitea.io/sdk/gitea
server/handler take all http(s) requests and determine how they need to be threated (default pages, custom domain, ...). it does however not serve stuff html,server/{cache,context,dns,gitea,upstream,version}
server/upstream try to serve stuff based on args from handler html,server/{cache,context,gitea}
server/utils general purpose functions
server/version just store the program version

Concepts

Each package creates a client that others can use ... e.g.:

  • server/gitea -> GiteaClient
  • server/certificates -> AcmeClient
  • ...