From dadfb29ae944e18c02678a2eff433d235578c914 Mon Sep 17 00:00:00 2001 From: Michael Jerger Date: Wed, 29 May 2024 08:44:00 +0200 Subject: [PATCH] relax validation --- modules/forgefed/actor.go | 21 +++------------------ modules/forgefed/actor_test.go | 2 +- services/federation/federation_service.go | 4 ++-- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/modules/forgefed/actor.go b/modules/forgefed/actor.go index 8c6621ee36..92114690dd 100644 --- a/modules/forgefed/actor.go +++ b/modules/forgefed/actor.go @@ -8,7 +8,6 @@ import ( "net/url" "strings" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/validation" ap "github.com/go-ap/activitypub" @@ -71,10 +70,7 @@ type PersonID struct { // Factory function for PersonID. Created struct is asserted to be valid func NewPersonID(uri, source string) (PersonID, error) { - // TODO: remove after test - //if !validation.IsValidExternalURL(uri) { - // return PersonId{}, fmt.Errorf("uri %s is not a valid external url", uri) - //} + result, err := newActorID(uri) if err != nil { return PersonID{}, err @@ -125,18 +121,7 @@ type RepositoryID struct { } // Factory function for RepositoryID. Created struct is asserted to be valid. -// ToDo: Add a NewForeignRepositoryID -func NewRepositoryID(uri, source string, isFollowing bool) (RepositoryID, error) { - - if isFollowing { - if !validation.IsValidURL(uri) { - return RepositoryID{}, fmt.Errorf("uri %s is not a valid url on their host: %s", uri, setting.AppURL+"api") - } - } else { - if !validation.IsAPIURL(uri) { - return RepositoryID{}, fmt.Errorf("uri %s is not a valid repo url on our host: %s", uri, setting.AppURL+"api") - } - } +func NewRepositoryID(uri, source string) (RepositoryID, error) { result, err := newActorID(uri) if err != nil { @@ -144,7 +129,7 @@ func NewRepositoryID(uri, source string, isFollowing bool) (RepositoryID, error) } result.Source = source - // validate Person specific path + // validate Person specific repoID := RepositoryID{result} if valid, err := validation.IsValid(repoID); !valid { return RepositoryID{}, err diff --git a/modules/forgefed/actor_test.go b/modules/forgefed/actor_test.go index 9f41a359ad..a3c01eceb0 100644 --- a/modules/forgefed/actor_test.go +++ b/modules/forgefed/actor_test.go @@ -52,7 +52,7 @@ func TestNewRepositoryId(t *testing.T) { expected.Host = "localhost" expected.Port = "3000" expected.UnvalidatedInput = "http://localhost:3000/api/activitypub/repository-id/1" - sut, _ := NewRepositoryID("http://localhost:3000/api/activitypub/repository-id/1", "forgejo", false) + sut, _ := NewRepositoryID("http://localhost:3000/api/activitypub/repository-id/1", "forgejo") if sut != expected { t.Errorf("expected: %v\n but was: %v\n", expected, sut) } diff --git a/services/federation/federation_service.go b/services/federation/federation_service.go index 9a54b569ed..a7d9b6ef80 100644 --- a/services/federation/federation_service.go +++ b/services/federation/federation_service.go @@ -55,7 +55,7 @@ func ProcessLikeActivity(ctx context.Context, form any, repositoryID int64) (int log.Info("Actor accepted:%v", actorID) // parse objectID (repository) - objectID, err := fm.NewRepositoryID(activity.Object.GetID().String(), string(forgefed.ForgejoSourceType), false) + objectID, err := fm.NewRepositoryID(activity.Object.GetID().String(), string(forgefed.ForgejoSourceType)) if err != nil { return http.StatusNotAcceptable, "Invalid objectId", err } @@ -222,7 +222,7 @@ func StoreFollowingRepoList(ctx context.Context, localRepoID int64, followingRep if err != nil { return http.StatusInternalServerError, "Wrong FederationHost", err } - followingRepoID, err := fm.NewRepositoryID(uri, string(federationHost.NodeInfo.SoftwareName), true) + followingRepoID, err := fm.NewRepositoryID(uri, string(federationHost.NodeInfo.SoftwareName)) if err != nil { return http.StatusNotAcceptable, "Invalid federated repo", err }