2024-06-25 20:17:08 +00:00
|
|
|
package main
|
|
|
|
|
2024-06-28 15:09:41 +00:00
|
|
|
import (
|
|
|
|
"slices"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
2024-06-25 20:17:08 +00:00
|
|
|
type AppLink struct {
|
|
|
|
Title string
|
|
|
|
Url string
|
2024-07-01 22:14:06 +00:00
|
|
|
DocumentationUrl string
|
2024-06-25 20:17:08 +00:00
|
|
|
Image string
|
|
|
|
Description string
|
2024-07-01 22:14:06 +00:00
|
|
|
SpecialNote string
|
|
|
|
LDAP bool
|
2024-06-25 20:17:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func getAppLinks(tier, baseUri string) []AppLink {
|
2024-06-28 15:09:41 +00:00
|
|
|
var output []AppLink
|
|
|
|
|
|
|
|
//Get Links Based on Tier
|
2024-06-25 20:17:08 +00:00
|
|
|
if tier == "enterprise" {
|
2024-06-28 15:09:41 +00:00
|
|
|
output = getEnterpriseLinks(baseUri)
|
2024-06-25 20:17:08 +00:00
|
|
|
} else if tier == "creator" {
|
2024-06-28 15:09:41 +00:00
|
|
|
output = getCreatorLinks(baseUri)
|
2024-06-25 20:17:08 +00:00
|
|
|
} else if tier == "teams" {
|
2024-06-28 15:09:41 +00:00
|
|
|
output = getTeamsLinks(baseUri)
|
|
|
|
} else {
|
|
|
|
output = getStarterLinks(baseUri)
|
2024-06-25 20:17:08 +00:00
|
|
|
}
|
|
|
|
|
2024-06-28 15:09:41 +00:00
|
|
|
//Sort in alphabetical order
|
|
|
|
slices.SortFunc(output, func(a, b AppLink) int {
|
|
|
|
return strings.Compare(a.Title, b.Title)
|
|
|
|
})
|
|
|
|
|
|
|
|
return output
|
2024-06-25 20:17:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func getStarterLinks(baseUri string) []AppLink {
|
|
|
|
return []AppLink {
|
|
|
|
{
|
2024-07-01 22:14:06 +00:00
|
|
|
Title: "Panel",
|
|
|
|
Description: "Create & Manage Users",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/users.png",
|
2024-06-28 15:23:38 +00:00
|
|
|
Url: "https://panel." + baseUri + "/log_in/",
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: true,
|
|
|
|
DocumentationUrl: "https://documentation.federated.computer/docs/core_applications/panel/",
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Nextcloud",
|
|
|
|
Description: "Email, Files, Documents",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/nextcloud.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://nextcloud." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: true,
|
|
|
|
DocumentationUrl: "https://docs.nextcloud.com/server/latest/user_manual/en/",
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Vaultwarden",
|
2024-07-01 22:14:06 +00:00
|
|
|
Description: "Passwords",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/vaultwarden.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://vaultwarden." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
|
|
|
SpecialNote: "Must create your own admin user at setup.",
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
2024-06-25 21:28:39 +00:00
|
|
|
{
|
|
|
|
Title: "Power DNS",
|
|
|
|
Description: "DNS Management",
|
|
|
|
Image: "/static/img/powerdns.png",
|
|
|
|
Url: "https://powerdns." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
2024-06-25 21:28:39 +00:00
|
|
|
},
|
2024-06-25 20:17:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func getCreatorLinks(baseUri string) []AppLink {
|
|
|
|
creatorLinks := []AppLink {
|
|
|
|
{
|
2024-06-30 17:28:59 +00:00
|
|
|
Title: "Element",
|
2024-06-25 20:17:08 +00:00
|
|
|
Description: "Team Chat",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/element.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://element." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: true,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Wordpress",
|
2024-07-01 22:14:06 +00:00
|
|
|
Description: "Your Website",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/wordpress.png",
|
2024-06-28 15:23:38 +00:00
|
|
|
Url: "https://" + baseUri + "/wp-admin",
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
return append(creatorLinks, getStarterLinks(baseUri)...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func getTeamsLinks(baseUri string) []AppLink {
|
|
|
|
teamsLinks := []AppLink {
|
|
|
|
{
|
|
|
|
Title: "Espo CRM",
|
2024-07-01 22:14:06 +00:00
|
|
|
Description: "Customer Relationship Manager",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/espo.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://espocrm." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: true,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "FreeScout",
|
|
|
|
Description: "Customer Help Desk",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/freescout.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://freescout." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
return append(teamsLinks, getCreatorLinks(baseUri)...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func getEnterpriseLinks(baseUri string) []AppLink {
|
|
|
|
enterpriseLinks := []AppLink{
|
|
|
|
{
|
|
|
|
Title: "Jitsi",
|
|
|
|
Description: "Video Chat",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/jitsi.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://jitsi." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: true,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Listmonk",
|
|
|
|
Description: "Email Marketing",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/listmonk.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://listmonk." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Baserow",
|
|
|
|
Description: "Visual Databases",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/baserow.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://baserow." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
|
|
|
DocumentationUrl: "https://baserow.io/user-docs",
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Bookstack",
|
|
|
|
Description: "Wiki Knowledgebase",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/bookstack.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://bookstack." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
|
|
|
DocumentationUrl: "https://www.bookstackapp.com/docs/",
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Gitea",
|
|
|
|
Description: "GIT Source Control",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/gitea.png",
|
2024-06-25 20:17:08 +00:00
|
|
|
Url: "https://gitea." + baseUri,
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
Title: "Castopod",
|
|
|
|
Description: "Podcast Distribution",
|
2024-06-25 21:28:39 +00:00
|
|
|
Image: "/static/img/castopod.png",
|
2024-06-28 15:23:38 +00:00
|
|
|
Url: "https://castopod." + baseUri + "/cp-auth/login",
|
2024-07-01 22:14:06 +00:00
|
|
|
LDAP: false,
|
2024-06-25 20:17:08 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
return append(enterpriseLinks, getTeamsLinks(baseUri)...)
|
|
|
|
}
|