Changes
5 changed files (+27/-15)
-
-
@@ -17,7 +17,7 @@ // ErrNameEmpty name is empty errorErrNameEmpty = errors.New("Name is empty") // AlphaDashDotPattern characters prohibited in a user name (anything except A-Za-z0-9_.-) AlphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`) AlphaDashDotPattern = regexp.MustCompile(`[^\w-\.@]`) ) // ErrNameReserved represents a "reserved name" error.
-
-
-
@@ -9,6 +9,7 @@ "context""strings" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/log" ap "github.com/go-ap/activitypub" )
-
@@ -18,18 +19,29 @@ actorIRI := activity.Actor.GetID()objectIRI := activity.Object.GetID() actorIRISplit := strings.Split(actorIRI.String(), "/") objectIRISplit := strings.Split(objectIRI.String(), "/") actorName := actorIRISplit[len(actorIRISplit)-1] objectName := objectIRISplit[len(actorIRISplit)-1] actorName := actorIRISplit[len(actorIRISplit)-1] + "@" + actorIRISplit[2] objectName := objectIRISplit[len(objectIRISplit)-1] FederatedUserNew(actorName, actorIRI) actorUser, _ := user_model.GetUserByName(ctx, actorName) objectUser, _ := user_model.GetUserByName(ctx, objectName) log.Warn("Follow object", activity.Object) err := FederatedUserNew(actorName, actorIRI) if err != nil { log.Warn("Couldn't create new user", err) } actorUser, err := user_model.GetUserByName(ctx, actorName) if err != nil { log.Warn("Couldn't find actor", err) } objectUser, err := user_model.GetUserByName(ctx, objectName) if err != nil { log.Warn("Couldn't find object", err) } user_model.FollowUser(actorUser.ID, objectUser.ID) accept := ap.AcceptNew(objectIRI, activity) accept.Actor = activity.Object accept.To = ap.ItemCollection{actorIRI} accept.Actor = ap.Person{ID: objectIRI} accept.To = ap.ItemCollection{ap.IRI(actorIRI.String()+"/inbox")} Send(objectUser, accept) }
-
-
-
@@ -5,8 +5,6 @@package activitypub import ( "strings" "code.gitea.io/gitea/models/auth" user_model "code.gitea.io/gitea/models/user"
-
@@ -14,9 +12,9 @@ ap "github.com/go-ap/activitypub") func FederatedUserNew(name string, IRI ap.IRI) error { instance := strings.Split(IRI.String(), "/")[2] user := &user_model.User{ Name: name + "@" + instance, Name: name, Email: name, LoginType: auth.Federated, Website: IRI.String(), }
-
-
-
@@ -120,8 +120,9 @@ var activity ap.Activityactivity.UnmarshalJSON(body) if activity.Type == ap.FollowType { activitypub.Follow(ctx, activity) } else { log.Warn("ActivityStreams type not supported", activity) } log.Warn("ActivityStreams type not supported", activity) ctx.Status(http.StatusNoContent) }
-
-
-
@@ -7,6 +7,7 @@import ( "net/http" "code.gitea.io/gitea/modules/activitypub" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/json" )
-
@@ -20,7 +21,7 @@ }jsonmap["@context"] = []string{"https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"} ctx.Resp.Header().Add("Content-Type", "application/activity+json") ctx.Resp.Header().Add("Content-Type", activitypub.ActivityStreamsContentType) ctx.Resp.WriteHeader(http.StatusOK) binary, _ = json.Marshal(jsonmap) ctx.Resp.Write(binary)
-