add instance privacy information page (closes #56)

このコミットが含まれているのは:
Arya Kiran 2023-03-07 19:55:52 +05:30
コミット 4b6defbf9c
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: 842D12BDA50DF120
5個のファイルの変更81行の追加0行の削除

ファイルの表示

@ -58,6 +58,17 @@ go build -o gothub
If you don't want to use port 3000 for GotHub, set the GOTHUB_PORT environment variable to the port you want to use.
If you want to be in the official instance list, you also need to fill these Instance Privacy environment variables:
```
GOTHUB_IP_LOGGED=true/false
GOTHUB_REQUEST_URL_LOGGED=true/false
GOTHUB_USER_AGENT_LOGGED=true/false
GOTHUB_DIAGNOSTIC_INFO_LOGGED=true/false
GOTHUB_INSTANCE_PRIVACY_POLICY=""
GOTHUB_INSTANCE_COUNTRY=""
GOTHUB_INSTANCE_PROVIDER=""
GOTHUB_INSTANCE_CLOUDFLARE=true/false
```
### Web server configuration (Caddy)
We recommend Caddy for the web server, as it provides automatic HTTPS, HTTP/3 and is easy to setup.
```caddyfile

44
pages/privacy.go ノーマルファイル
ファイルの表示

@ -0,0 +1,44 @@
package pages
import (
"codeberg.org/gothub/gothub/utils"
"github.com/gofiber/fiber/v2"
"os"
"runtime"
)
type PrivacyInfo struct {
IPAddr string
ReqURL string
UserAgent string
Diagnostics string
Country string
Provider string
Cloudflare string
PrivacyPolicy string
Version string
GoVersion string
FiberVersion string
}
func HandlePrivacy(c *fiber.Ctx) error {
var privacyInfoArray []PrivacyInfo
privacyInfoArray = append(privacyInfoArray, PrivacyInfo{
IPAddr: os.Getenv("GOTHUB_IP_LOGGED"),
ReqURL: os.Getenv("GOTHUB_REQUEST_URL_LOGGED"),
UserAgent: os.Getenv("GOTHUB_USER_AGENT_LOGGED"),
Diagnostics: os.Getenv("GOTHUB_DIAGNOSTIC_INFO_LOGGED"),
Country: os.Getenv("GOTHUB_INSTANCE_COUNTRY"),
Provider: os.Getenv("GOTHUB_INSTANCE_PROVIDER"),
Cloudflare: os.Getenv("GOTHUB_INSTANCE_CLOUDFLARE"),
PrivacyPolicy: os.Getenv("GOTHUB_INSTANCE_PRIVACY_POLICY"),
Version: utils.Version(),
FiberVersion: fiber.Version,
GoVersion: runtime.Version(),
})
return c.Render("privacy", fiber.Map{
"title": "Instance Privacy",
"privacyInformation": privacyInfoArray,
})
}

ファイルの表示

@ -98,6 +98,7 @@ func Serve() {
app.Static("/robots.txt", "./public/robots.txt", staticConfig)
app.Static("/favicon.ico", "./public/assets/favicon.ico", staticConfig)
app.Static("/logo.svg", "./public/assets/logo.svg", staticConfig)
app.Get("/privacy", pages.HandlePrivacy)
app.Get("/explore", ratelimiter, pages.HandleExplore)
app.Get("/:user", pages.HandleUser)
app.Get("/avatar/:id", func(c *fiber.Ctx) error {

ファイルの表示

@ -16,6 +16,7 @@
<a href="/" style="text-decoration: none;" class="brand"><img src="/logo.svg" class="navbarImg" height="30" width="30" alt=""><b class="navbarSlogan">GotHub (alpha)</b></a>
<div class="navbarLinks">
<a href="/explore">Explore</a>
<a href="/privacy">Privacy</a>
<a href="https://codeberg.org/gothub/gothub">Source code</a>
</div>
</div>

24
views/privacy.html ノーマルファイル
ファイルの表示

@ -0,0 +1,24 @@
{{template "header" .}}
<main>
<h2>Instance Privacy</h2>
{{ if .privacyInformation}}
{{ range $key, $value := .privacyInformation}}
<p>The goal of this page is to bring transparency to the data collected by the instances and to encourage privacy friendly practices.</p>
<p>If this page isn't filled, please contact your instance's maintainer.</p>
<p><b>IP Address logged:</b> {{.IPAddr}}</p>
<p><b>Request URL logged:</b> {{.ReqURL}}</p>
<p><b>User Agent logged:</b> {{.UserAgent}}</p>
<p><b>Diagnostic Information logged:</b> {{.Diagnostics}}</p>
{{ if .PrivacyPolicy }}
<p>You can see the maintainer's <a href=//{{.PrivacyPolicy}}>Privacy Policy</a> for more information.</p>
{{end}}
<h3>Additional Information</h3>
<p>GotHub version: <a href="https://codeberg.org/gothub/gothub/commit/{{.Version}}"><code>{{.Version}}</code></a></p>
<p>Fiber version: {{ .FiberVersion}}, running on {{ .GoVersion}}</p>
<p>Country: {{.Country}}</p>
<p>Cloudflare: {{.Cloudflare}}</p>
<p>ISP: {{.Provider}}</p>
{{end}}
{{end}}
</main>