@@ -128,7 +128,7 @@ func MigrateRepository(ctx context.Context, doer *user_model.User, ownerName str
128128 uploader := NewGiteaLocalUploader (ctx , doer , ownerName , opts .RepoName )
129129 uploader .gitServiceType = opts .GitServiceType
130130
131- if err := migrateRepository (downloader , uploader , opts , messenger ); err != nil {
131+ if err := migrateRepository (doer , downloader , uploader , opts , messenger ); err != nil {
132132 if err1 := uploader .Rollback (); err1 != nil {
133133 log .Error ("rollback failed: %v" , err1 )
134134 }
@@ -177,7 +177,7 @@ func newDownloader(ctx context.Context, ownerName string, opts base.MigrateOptio
177177// migrateRepository will download information and then upload it to Uploader, this is a simple
178178// process for small repository. For a big repository, save all the data to disk
179179// before upload is better
180- func migrateRepository (downloader base.Downloader , uploader base.Uploader , opts base.MigrateOptions , messenger base.Messenger ) error {
180+ func migrateRepository (doer * user_model. User , downloader base.Downloader , uploader base.Uploader , opts base.MigrateOptions , messenger base.Messenger ) error {
181181 if messenger == nil {
182182 messenger = base .NilMessenger
183183 }
@@ -198,6 +198,21 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
198198 return err
199199 }
200200
201+ // If the downloader is not a RepositoryRestorer then we need to recheck the CloneURL
202+ if _ , ok := downloader .(* RepositoryRestorer ); ! ok {
203+ // Now the clone URL can be rewritten by the downloader so we must recheck
204+ if err := IsMigrateURLAllowed (repo .CloneURL , doer ); err != nil {
205+ return err
206+ }
207+
208+ // And so can the original URL too so again we must recheck
209+ if repo .OriginalURL != "" {
210+ if err := IsMigrateURLAllowed (repo .OriginalURL , doer ); err != nil {
211+ return err
212+ }
213+ }
214+ }
215+
201216 log .Trace ("migrating git data from %s" , repo .CloneURL )
202217 messenger ("repo.migrate.migrating_git" )
203218 if err = uploader .CreateRepo (repo , opts ); err != nil {
0 commit comments