diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-01-12 00:16:35 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-01-12 00:16:35 +0000 |
commit | d237ada361f68864b2f46af58a097dcbde844675 (patch) | |
tree | dcd6cb863d7ca8dd929f4d1acd13f369797b43d9 /lib | |
parent | 830c9943a95cbd755700d6624c64a158b2602cd0 (diff) | |
download | gitlab-ce-d237ada361f68864b2f46af58a097dcbde844675.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/projects.rb | 1 | ||||
-rw-r--r-- | lib/bulk_imports/common/pipelines/uploads_pipeline.rb | 39 | ||||
-rw-r--r-- | lib/gitlab/import_export/command_line_util.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/legacy_github_import/client.rb | 5 | ||||
-rw-r--r-- | lib/gitlab/url_blocker.rb | 4 |
5 files changed, 40 insertions, 13 deletions
diff --git a/lib/api/projects.rb b/lib/api/projects.rb index c866f8dfaac..d772079372c 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -614,6 +614,7 @@ module API source_project = Project.find_by_id(params[:project_id]) not_found!('Project') unless source_project && can?(current_user, :read_project, source_project) + forbidden!('Project') unless source_project && can?(current_user, :admin_project_member, source_project) result = ::Members::ImportProjectTeamService.new(current_user, params).execute diff --git a/lib/bulk_imports/common/pipelines/uploads_pipeline.rb b/lib/bulk_imports/common/pipelines/uploads_pipeline.rb index 49c16209661..2ac4e533c1d 100644 --- a/lib/bulk_imports/common/pipelines/uploads_pipeline.rb +++ b/lib/bulk_imports/common/pipelines/uploads_pipeline.rb @@ -5,16 +5,16 @@ module BulkImports module Pipelines class UploadsPipeline include Pipeline - include Gitlab::ImportExport::CommandLineUtil - FILENAME = 'uploads.tar.gz' AVATAR_PATTERN = %r{.*\/#{BulkImports::UploadsExportService::AVATAR_PATH}\/(?<identifier>.*)}.freeze AvatarLoadingError = Class.new(StandardError) - def extract(context) - download_service(tmp_dir, context).execute - untar_zxf(archive: File.join(tmp_dir, FILENAME), dir: tmp_dir) + def extract(_context) + download_service.execute + decompression_service.execute + extraction_service.execute + upload_file_paths = Dir.glob(File.join(tmp_dir, '**', '*')) BulkImports::Pipeline::ExtractedData.new(data: upload_file_paths) @@ -29,6 +29,7 @@ module BulkImports return unless dynamic_path return if File.directory?(file_path) + return if File.lstat(file_path).symlink? named_captures = dynamic_path.named_captures.symbolize_keys @@ -36,20 +37,40 @@ module BulkImports end def after_run(_) - FileUtils.remove_entry(tmp_dir) + FileUtils.remove_entry(tmp_dir) if Dir.exist?(tmp_dir) end private - def download_service(tmp_dir, context) + def download_service BulkImports::FileDownloadService.new( configuration: context.configuration, - relative_url: context.entity.relation_download_url_path('uploads'), + relative_url: context.entity.relation_download_url_path(relation), dir: tmp_dir, - filename: FILENAME + filename: targz_filename ) end + def decompression_service + BulkImports::FileDecompressionService.new(dir: tmp_dir, filename: targz_filename) + end + + def extraction_service + BulkImports::ArchiveExtractionService.new(tmpdir: tmp_dir, filename: tar_filename) + end + + def relation + BulkImports::FileTransfer::BaseConfig::UPLOADS_RELATION + end + + def tar_filename + "#{relation}.tar" + end + + def targz_filename + "#{tar_filename}.gz" + end + def tmp_dir @tmp_dir ||= Dir.mktmpdir('bulk_imports') end diff --git a/lib/gitlab/import_export/command_line_util.rb b/lib/gitlab/import_export/command_line_util.rb index fdc4c22001f..3da9083e743 100644 --- a/lib/gitlab/import_export/command_line_util.rb +++ b/lib/gitlab/import_export/command_line_util.rb @@ -18,6 +18,10 @@ module Gitlab tar_with_options(archive: archive, dir: dir, options: 'cf') end + def untar_xf(archive:, dir:) + untar_with_options(archive: archive, dir: dir, options: 'xf') + end + def gzip(dir:, filename:) gzip_with_options(dir: dir, filename: filename) end diff --git a/lib/gitlab/legacy_github_import/client.rb b/lib/gitlab/legacy_github_import/client.rb index 48a8e0ce6d7..7a9dae3a3de 100644 --- a/lib/gitlab/legacy_github_import/client.rb +++ b/lib/gitlab/legacy_github_import/client.rb @@ -48,10 +48,11 @@ module Gitlab ) end - def authorize_url(redirect_uri) + def authorize_url(redirect_uri, state = nil) client.auth_code.authorize_url({ redirect_uri: redirect_uri, - scope: "repo, user, user:email" + scope: "repo, user, user:email", + state: state }) end diff --git a/lib/gitlab/url_blocker.rb b/lib/gitlab/url_blocker.rb index 2c5d76ba41d..f092e03046a 100644 --- a/lib/gitlab/url_blocker.rb +++ b/lib/gitlab/url_blocker.rb @@ -252,13 +252,13 @@ module Gitlab def internal_web?(uri) uri.scheme == config.gitlab.protocol && uri.hostname == config.gitlab.host && - (uri.port.blank? || uri.port == config.gitlab.port) + get_port(uri) == config.gitlab.port end def internal_shell?(uri) uri.scheme == 'ssh' && uri.hostname == config.gitlab_shell.ssh_host && - (uri.port.blank? || uri.port == config.gitlab_shell.ssh_port) + get_port(uri) == config.gitlab_shell.ssh_port end def domain_allowed?(uri) |