aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFChannel <>2022-06-16 11:52:17 -0700
committerFChannel <>2022-06-19 12:53:29 -0700
commit44a5de2ecef3cba0d4d596f86183e7fd383615c0 (patch)
tree06ada6a6c47f6c2352631e5ded95667fabe2d9b5
parentddc61bb3a8eb7219ba7e232b1606da556f262fa3 (diff)
changes for better failed delivery attempts
-rw-r--r--activitypub/activity.go86
-rw-r--r--route/routes/admin.go5
2 files changed, 43 insertions, 48 deletions
diff --git a/activitypub/activity.go b/activitypub/activity.go
index ef25b5d..1956475 100644
--- a/activitypub/activity.go
+++ b/activitypub/activity.go
@@ -341,61 +341,55 @@ func (activity Activity) MakeRequestInbox() error {
for _, e := range activity.To {
if e != activity.Actor.Id {
- actor, err := FingerActor(e)
+ actor := Actor{Id: e, Inbox: e + "/inbox"}
- if err != nil {
- return util.MakeError(err, "MakeRequest")
- }
-
- if actor.Id != "" {
- _, instance := GetActorAndInstance(actor.Id)
+ name, instance := GetActorAndInstance(actor.Id)
- if actor.Inbox != "" {
- go func(actor Actor, activity Activity) error {
- var status int
- var try int
+ if name != "main" {
+ go func(actor Actor, activity Activity) error {
+ var status int
+ var try int
- for try != 5 && status != 200 {
- time.Sleep(time.Duration(try) * time.Minute)
+ for try != 5 && status != 200 {
+ time.Sleep(time.Duration(try) * time.Minute)
- req, err := http.NewRequest("POST", actor.Inbox, bytes.NewBuffer(j))
-
- if err != nil {
- return util.MakeError(err, "MakeRequest")
- }
-
- date := time.Now().UTC().Format(time.RFC1123)
- path := strings.Replace(actor.Inbox, instance, "", 1)
- re := regexp.MustCompile("https?://(www.)?")
- path = re.ReplaceAllString(path, "")
- sig := fmt.Sprintf("(request-target): %s %s\nhost: %s\ndate: %s", "post", path, instance, date)
- encSig, err := activity.Actor.ActivitySign(sig)
+ req, err := http.NewRequest("POST", actor.Inbox, bytes.NewBuffer(j))
+ if err != nil {
+ return util.MakeError(err, "MakeRequest")
+ }
- if err != nil {
- return util.MakeError(err, "MakeRequest")
- }
+ date := time.Now().UTC().Format(time.RFC1123)
+ path := strings.Replace(actor.Inbox, instance, "", 1)
+ re := regexp.MustCompile("https?://(www.)?")
+ path = re.ReplaceAllString(path, "")
+ sig := fmt.Sprintf("(request-target): %s %s\nhost: %s\ndate: %s", "post", path, instance, date)
+ encSig, err := activity.Actor.ActivitySign(sig)
- signature := fmt.Sprintf("keyId=\"%s\",headers=\"(request-target) host date\",signature=\"%s\"", activity.Actor.PublicKey.Id, encSig)
+ if err != nil {
+ return util.MakeError(err, "MakeRequest")
+ }
- req.Header.Set("Content-Type", config.ActivityStreams)
- req.Header.Set("Date", date)
- req.Header.Set("Signature", signature)
- req.Host = instance
+ signature := fmt.Sprintf("keyId=\"%s\",headers=\"(request-target) host date\",signature=\"%s\"", activity.Actor.PublicKey.Id, encSig)
- resp, err := util.RouteProxy(req)
+ req.Header.Set("Content-Type", config.ActivityStreams)
+ req.Header.Set("Date", date)
+ req.Header.Set("Signature", signature)
+ req.Host = instance
- if err != nil {
- return util.MakeError(err, "MakeRequest")
- }
+ resp, err := util.RouteProxy(req)
- status = resp.StatusCode
+ if err != nil {
try += 1
+ continue
}
- return nil
+ status = resp.StatusCode
+ try += 1
+ }
+
+ return nil
- }(actor, activity)
- }
+ }(actor, activity)
}
}
}
@@ -425,12 +419,7 @@ func (activity Activity) MakeRequestOutbox() error {
re := regexp.MustCompile("https?://(www.)?")
- var instance string
- if activity.Actor.Id == config.Domain {
- instance = re.ReplaceAllString(config.Domain, "")
- } else {
- _, instance = GetActorAndInstance(activity.Actor.Id)
- }
+ _, instance := GetActorAndInstance(activity.Actor.Id)
date := time.Now().UTC().Format(time.RFC1123)
path := strings.Replace(activity.Actor.Outbox, instance, "", 1)
@@ -452,7 +441,8 @@ func (activity Activity) MakeRequestOutbox() error {
resp, err := util.RouteProxy(req)
if err != nil {
- return util.MakeError(err, "MakeRequest")
+ try += 1
+ continue
}
status = resp.StatusCode
diff --git a/route/routes/admin.go b/route/routes/admin.go
index c198e21..81b9946 100644
--- a/route/routes/admin.go
+++ b/route/routes/admin.go
@@ -192,6 +192,8 @@ func AdminFollow(ctx *fiber.Ctx) error {
redirect = actor.Name
}
+ time.Sleep(time.Duration(500) * time.Millisecond)
+
return ctx.Redirect("/"+config.Key+"/"+redirect, http.StatusSeeOther)
}
@@ -230,6 +232,9 @@ func AdminAddBoard(ctx *fiber.Ctx) error {
newActorActivity.Object.Sensitive = board.Restricted
newActorActivity.MakeRequestOutbox()
+
+ time.Sleep(time.Duration(500) * time.Millisecond)
+
return ctx.Redirect("/"+config.Key, http.StatusSeeOther)
}