diff options
author | GitLab Release Tools Bot <delivery-team+release-tools@gitlab.com> | 2022-01-11 23:34:56 +0300 |
---|---|---|
committer | GitLab Release Tools Bot <delivery-team+release-tools@gitlab.com> | 2022-01-11 23:34:56 +0300 |
commit | ab5b519cca2356dd2b84a7fffc6ddbd6dc43a0ab (patch) | |
tree | a4e2d538a2f9d82590614d5661dbbe9996c8eab8 /lib | |
parent | 661d663ab2b7c69977ba8a0db02ef4afc2427e39 (diff) | |
parent | 0a901d60f8ae4a60c04ae82e6e9c3a03e9321417 (diff) |
Merge remote-tracking branch 'dev/14-6-stable' into 14-6-stable
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 67f0b7af7a9..887c76941cf 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -613,6 +613,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) |