Add some information about instance

This commit is contained in:
localhost_frssoft 2022-10-13 01:41:34 +03:00
parent 7dd90ac015
commit 7d54da6380
4 changed files with 88 additions and 1 deletions

View File

@ -10,6 +10,7 @@ type Instance struct {
URI string `json:"uri"`
Title string `json:"title"`
Description string `json:"description"`
ShortDescription *string `json:"short_description"`
EMail string `json:"email"`
Version string `json:"version,omitempty"`
Thumbnail string `json:"thumbnail,omitempty"`
@ -17,7 +18,14 @@ type Instance struct {
Stats *InstanceStats `json:"stats,omitempty"`
Languages []string `json:"languages"`
ContactAccount *Account `json:"account"`
PollLimits *PollLimit `json:"poll_limits"`
MaxTootChars *int64 `json:"max_toot_chars"`
MaxMediaAttachments *int64 `json:"max_media_attachments"`
UploadLimit *int64 `json:"upload_limit"`
BackgroundUploadLimit *int64 `json:"background_upload_limit"`
AvatarUploadLimit *int64 `json:"avatar_upload_limit"`
Configuration *InstanceConf `json:"configuration"`
Rules *[]map[string]string `json:"rules"`
Pleroma *PleromaInstance `json:"pleroma"`
}
@ -28,13 +36,36 @@ type InstanceStats struct {
DomainCount int64 `json:"domain_count"`
}
// InstanceConf hold information for mastodon instances
type InstanceConf struct {
Statuses StatusesConf `json:"statuses"`
}
type StatusesConf struct {
MaxCharacters int64 `json:"max_characters"`
MaxMediaAttachments int64 `json:"max_media_attachments"`
}
type PollLimit struct {
MaxExpiration int64 `json:"max_expiration"`
MaxOptionChars int64 `json:"max_option_chars"`
MaxOptions int64 `json:"max_options"`
MinExpiration int64 `json:"min_expiration"`
}
// For about instance if this Pleroma
type PleromaInstance struct {
MetaData MetaData `json:"metadata"`
}
type MetaData struct {
Features *[]string `json:"features"`
Features *[]string `json:"features"`
Federation FederationInfo `json:"federation"`
}
type FederationInfo struct {
Enabled bool `json:enabled"`
MrfPolicies []string `json:mrf_policies"`
}

View File

@ -122,6 +122,7 @@ type AboutData struct {
type AboutInstanceData struct {
*CommonData
Instance *mastodon.Instance
Peers []string
}
type EmojiData struct {

View File

@ -743,9 +743,15 @@ func (s *service) AboutInstance(c *client) (err error) {
if err != nil {
return
}
peers, err := c.GetInstancePeers(c.ctx)
if err != nil {
return
}
data := &renderer.AboutInstanceData{
CommonData: cdata,
Instance: instance,
Peers: peers,
}
return s.renderer.Render(c.rctx, c.w, renderer.AboutInstance, data)
}

View File

@ -6,6 +6,19 @@
<p>
{{.Instance.Description}}
</p>
<p>
{{Raw .Instance.ShortDescription}}
</p>
{{if .Instance.Rules}}
<p>
<details>
<summary>Rules</summary>
{{range .Instance.Rules}}
{{.id}}. {{.text}}<br><br>
{{end}}
</details>
</p>
{{end}}
<p>
<details>
<summary>Logo instance</summary>
@ -15,6 +28,9 @@
</div>
<div class="page-title"> Contact E-mail: {{.Instance.EMail}} </div>
{{if .Instance.ContactAccount}}
<div class="page-title"> Contact account: {{.Instance.ContactAccount.Acct}} </div>
{{end}}
{{if .Instance.Stats}}
<div class="page-title"> Statistics: </div>
@ -36,6 +52,39 @@
{{end}}
</div>
<div class="page-title"> Limits: </div>
{{if .Instance.Configuration}}
Max status characters: {{.Instance.Configuration.Statuses.MaxCharacters}}<br>
Max media attachments: {{.Instance.Configuration.Statuses.MaxMediaAttachments}}<br>
{{else}}
Max status characters: {{.Instance.MaxTootChars}}<br>
Max media attachments: {{.Instance.MaxMediaAttachments}}<br>
Max size attachment: {{.Instance.UploadLimit}} bytes<br>
{{end}}
{{if .Instance.PollLimits}}
Max poll options: {{.Instance.PollLimits.MaxOptions}}<br>
{{end}}
</div>
<div class="page-title"> Federation info: </div>
<div>
{{if .Instance.Pleroma}}
<div class="federation-enabled"> Federation enabled: {{.Instance.Pleroma.MetaData.Federation.Enabled}} </div>
<div class="mrf-policies"> MRF Policies </div>
{{range .Instance.Pleroma.MetaData.Federation.MrfPolicies}}
{{.}}<br>
{{end}}
{{end}}
<details>
<summary>Current peers ({{.Instance.Stats.DomainCount}})</summary>
{{range .Peers}}
{{.}}<br>
{{end}}
</details>
</div>
<div class="page-title"> Version: {{.Instance.Version}} </div>