aboutsummaryrefslogtreecommitdiff
path: root/routes/admin.go
diff options
context:
space:
mode:
Diffstat (limited to 'routes/admin.go')
-rw-r--r--routes/admin.go290
1 files changed, 0 insertions, 290 deletions
diff --git a/routes/admin.go b/routes/admin.go
deleted file mode 100644
index d837a2f..0000000
--- a/routes/admin.go
+++ /dev/null
@@ -1,290 +0,0 @@
-package routes
-
-import (
- "bytes"
- "encoding/json"
- "io/ioutil"
- "net/http"
- "time"
-
- "github.com/FChannel0/FChannel-Server/activitypub"
- "github.com/FChannel0/FChannel-Server/config"
- "github.com/FChannel0/FChannel-Server/db"
- "github.com/FChannel0/FChannel-Server/util"
- "github.com/FChannel0/FChannel-Server/webfinger"
- "github.com/gofiber/fiber/v2"
-)
-
-func AdminVerify(ctx *fiber.Ctx) error {
- identifier := ctx.FormValue("id")
- code := ctx.FormValue("code")
-
- var verify util.Verify
- verify.Identifier = identifier
- verify.Code = code
-
- j, _ := json.Marshal(&verify)
-
- req, err := http.NewRequest("POST", config.Domain+"/auth", bytes.NewBuffer(j))
-
- if err != nil {
- return util.MakeError(err, "AdminVerify")
- }
-
- req.Header.Set("Content-Type", config.ActivityStreams)
-
- resp, err := http.DefaultClient.Do(req)
-
- if err != nil {
- return util.MakeError(err, "AdminVerify")
- }
-
- defer resp.Body.Close()
-
- rBody, _ := ioutil.ReadAll(resp.Body)
-
- body := string(rBody)
-
- if resp.StatusCode != 200 {
- return ctx.Redirect("/"+config.Key, http.StatusPermanentRedirect)
- }
-
- ctx.Cookie(&fiber.Cookie{
- Name: "session_token",
- Value: body + "|" + verify.Code,
- Expires: time.Now().UTC().Add(60 * 60 * 48 * time.Second),
- })
-
- return ctx.Redirect("/", http.StatusSeeOther)
-}
-
-// TODO remove this route it is mostly unneeded
-func AdminAuth(ctx *fiber.Ctx) error {
- var verify util.Verify
-
- err := json.Unmarshal(ctx.Body(), &verify)
-
- if err != nil {
- return util.MakeError(err, "AdminAuth")
- }
-
- v, _ := util.GetVerificationByCode(verify.Code)
-
- if v.Identifier == verify.Identifier {
- _, err := ctx.Write([]byte(v.Board))
- return util.MakeError(err, "AdminAuth")
- }
-
- ctx.Response().Header.SetStatusCode(http.StatusBadRequest)
- _, err = ctx.Write([]byte(""))
-
- return util.MakeError(err, "AdminAuth")
-}
-
-func AdminIndex(ctx *fiber.Ctx) error {
- id, _ := util.GetPasswordFromSession(ctx)
- actor, _ := webfinger.GetActorFromPath(ctx.Path(), "/"+config.Key+"/")
-
- if actor.Id == "" {
- actor, _ = activitypub.GetActorByNameFromDB(config.Domain)
- }
-
- if id == "" || (id != actor.Id && id != config.Domain) {
- return ctx.Render("verify", fiber.Map{})
- }
-
- actor, err := activitypub.GetActor(config.Domain)
-
- if err != nil {
- return util.MakeError(err, "AdminIndex")
- }
-
- reqActivity := activitypub.Activity{Id: actor.Following}
- follow, _ := reqActivity.GetCollection()
- follower, _ := reqActivity.GetCollection()
-
- var following []string
- var followers []string
-
- for _, e := range follow.Items {
- following = append(following, e.Id)
- }
-
- for _, e := range follower.Items {
- followers = append(followers, e.Id)
- }
-
- var adminData AdminPage
- adminData.Following = following
- adminData.Followers = followers
- adminData.Actor = actor.Id
- adminData.Key = config.Key
- adminData.Domain = config.Domain
- adminData.Board.ModCred, _ = util.GetPasswordFromSession(ctx)
- adminData.Title = actor.Name + " Admin page"
-
- adminData.Boards = webfinger.Boards
-
- adminData.Board.Post.Actor = actor.Id
-
- adminData.PostBlacklist, _ = util.GetRegexBlacklist()
-
- adminData.Themes = &config.Themes
-
- return ctx.Render("admin", fiber.Map{
- "page": adminData,
- })
-}
-
-func AdminFollow(ctx *fiber.Ctx) error {
- follow := ctx.FormValue("follow")
- actorId := ctx.FormValue("actor")
-
- actor := activitypub.Actor{Id: actorId}
- followActivity, _ := actor.MakeFollowActivity(follow)
-
- objActor := activitypub.Actor{Id: followActivity.Object.Actor}
-
- if isLocal, _ := objActor.IsLocal(); !isLocal && followActivity.Actor.Id == config.Domain {
- _, err := ctx.Write([]byte("main board can only follow local boards. Create a new board and then follow outside boards from it."))
- return util.MakeError(err, "AdminIndex")
- }
-
- if actor, _ := activitypub.FingerActor(follow); actor.Id != "" {
- if err := followActivity.MakeRequestOutbox(); err != nil {
- return util.MakeError(err, "AdminFollow")
- }
- }
-
- var redirect string
- actor, _ = webfinger.GetActorFromPath(ctx.Path(), "/"+config.Key+"/")
-
- if actor.Name != "main" {
- redirect = actor.Name
- }
-
- return ctx.Redirect("/"+config.Key+"/"+redirect, http.StatusSeeOther)
-}
-
-func AdminAddBoard(ctx *fiber.Ctx) error {
- actor, _ := activitypub.GetActorFromDB(config.Domain)
-
- if hasValidation := actor.HasValidation(ctx); !hasValidation {
- return nil
- }
-
- var newActorActivity activitypub.Activity
- var board activitypub.Actor
-
- var restrict bool
- if ctx.FormValue("restricted") == "True" {
- restrict = true
- } else {
- restrict = false
- }
-
- board.Name = ctx.FormValue("name")
- board.PreferredUsername = ctx.FormValue("prefname")
- board.Summary = ctx.FormValue("summary")
- board.Restricted = restrict
-
- newActorActivity.AtContext.Context = "https://www.w3.org/ns/activitystreams"
- newActorActivity.Type = "New"
-
- var nobj activitypub.ObjectBase
- newActorActivity.Actor = &actor
- newActorActivity.Object = &nobj
-
- newActorActivity.Object.Alias = board.Name
- newActorActivity.Object.Name = board.PreferredUsername
- newActorActivity.Object.Summary = board.Summary
- newActorActivity.Object.Sensitive = board.Restricted
-
- newActorActivity.MakeRequestOutbox()
- return ctx.Redirect("/"+config.Key, http.StatusSeeOther)
-}
-
-func AdminPostNews(c *fiber.Ctx) error {
- // STUB
-
- return c.SendString("admin post news")
-}
-
-func AdminNewsDelete(c *fiber.Ctx) error {
- // STUB
-
- return c.SendString("admin news delete")
-}
-
-func AdminActorIndex(ctx *fiber.Ctx) error {
- actor, _ := webfinger.GetActorFromPath(ctx.Path(), "/"+config.Key+"/")
-
- reqActivity := activitypub.Activity{Id: actor.Following}
- follow, _ := reqActivity.GetCollection()
-
- reqActivity.Id = actor.Followers
- follower, _ := reqActivity.GetCollection()
-
- reqActivity.Id = actor.Id + "/reported"
- reported, _ := activitypub.GetActorCollectionReq(reqActivity.Id)
-
- var following []string
- var followers []string
- var reports []db.Report
-
- for _, e := range follow.Items {
- following = append(following, e.Id)
- }
-
- for _, e := range follower.Items {
- followers = append(followers, e.Id)
- }
-
- for _, e := range reported.Items {
- var r db.Report
- r.Count = int(e.Size)
- r.ID = e.Id
- r.Reason = e.Content
- reports = append(reports, r)
- }
-
- localReports, _ := db.GetLocalReport(actor.Name)
-
- for _, e := range localReports {
- var r db.Report
- r.Count = e.Count
- r.ID = e.ID
- r.Reason = e.Reason
- reports = append(reports, r)
- }
-
- var data AdminPage
- data.Following = following
- data.Followers = followers
- data.Reported = reports
- data.Domain = config.Domain
- data.IsLocal, _ = actor.IsLocal()
-
- data.Title = "Manage /" + actor.Name + "/"
- data.Boards = webfinger.Boards
- data.Board.Name = actor.Name
- data.Board.Actor = actor
- data.Key = config.Key
- data.Board.TP = config.TP
-
- data.Board.Post.Actor = actor.Id
-
- data.AutoSubscribe, _ = actor.GetAutoSubscribe()
-
- data.Themes = &config.Themes
-
- data.RecentPosts, _ = actor.GetRecentPosts()
-
- if cookie := ctx.Cookies("theme"); cookie != "" {
- data.ThemeCookie = cookie
- }
-
- return ctx.Render("manage", fiber.Map{
- "page": data,
- })
-}