summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ci/migrate/builds.rb2
-rw-r--r--lib/ci/migrate/manager.rb4
-rw-r--r--lib/gitlab/email/receiver.rb2
-rw-r--r--lib/gitlab/incoming_email.rb (renamed from lib/gitlab/reply_by_email.rb)20
-rw-r--r--lib/gitlab/markdown/relative_link_filter.rb40
-rw-r--r--lib/support/nginx/gitlab_ci12
-rw-r--r--lib/tasks/gitlab/check.rake18
7 files changed, 50 insertions, 48 deletions
diff --git a/lib/ci/migrate/builds.rb b/lib/ci/migrate/builds.rb
index fdc143cfad5..c4f62e55295 100644
--- a/lib/ci/migrate/builds.rb
+++ b/lib/ci/migrate/builds.rb
@@ -13,7 +13,7 @@ module Ci
backup_existing_builds_dir
FileUtils.mkdir_p(app_builds_dir, mode: 0700)
- unless system('tar', '-C', app_builds_dir, '-zxvf', backup_builds_tarball)
+ unless system('tar', '-C', app_builds_dir, '-zxf', backup_builds_tarball)
abort 'Restore failed'.red
end
end
diff --git a/lib/ci/migrate/manager.rb b/lib/ci/migrate/manager.rb
index 4205809368d..e5e4fb784eb 100644
--- a/lib/ci/migrate/manager.rb
+++ b/lib/ci/migrate/manager.rb
@@ -1,6 +1,8 @@
module Ci
module Migrate
class Manager
+ CI_IMPORT_PREFIX = '8.0' # Only allow imports from CI 8.0.x
+
def cleanup
$progress.print "Deleting tmp directories ... "
@@ -48,7 +50,7 @@ module Ci
ENV["VERSION"] = "#{settings[:db_version]}" if settings[:db_version].to_i > 0
# restoring mismatching backups can lead to unexpected problems
- if settings[:gitlab_version] != GitlabCi::VERSION
+ if !settings[:gitlab_version].start_with?(CI_IMPORT_PREFIX)
puts "GitLab CI version mismatch:".red
puts " Your current GitLab CI version (#{GitlabCi::VERSION}) differs from the GitLab CI (#{settings[:gitlab_version]}) version in the backup!".red
exit 1
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb
index 341b557858f..2b252b32887 100644
--- a/lib/gitlab/email/receiver.rb
+++ b/lib/gitlab/email/receiver.rb
@@ -65,7 +65,7 @@ module Gitlab
def reply_key
reply_key = nil
message.to.each do |address|
- reply_key = Gitlab::ReplyByEmail.reply_key_from_address(address)
+ reply_key = Gitlab::IncomingEmail.key_from_address(address)
break if reply_key
end
diff --git a/lib/gitlab/reply_by_email.rb b/lib/gitlab/incoming_email.rb
index c3fe6778f06..856ccc71084 100644
--- a/lib/gitlab/reply_by_email.rb
+++ b/lib/gitlab/incoming_email.rb
@@ -1,5 +1,5 @@
module Gitlab
- module ReplyByEmail
+ module IncomingEmail
class << self
def enabled?
config.enabled && address_formatted_correctly?
@@ -7,20 +7,14 @@ module Gitlab
def address_formatted_correctly?
config.address &&
- config.address.include?("%{reply_key}")
+ config.address.include?("%{key}")
end
- def reply_key
- return nil unless enabled?
-
- SecureRandom.hex(16)
- end
-
- def reply_address(reply_key)
- config.address.gsub('%{reply_key}', reply_key)
+ def reply_address(key)
+ config.address.gsub('%{key}', key)
end
- def reply_key_from_address(address)
+ def key_from_address(address)
regex = address_regex
return unless regex
@@ -33,7 +27,7 @@ module Gitlab
private
def config
- Gitlab.config.reply_by_email
+ Gitlab.config.incoming_email
end
def address_regex
@@ -41,7 +35,7 @@ module Gitlab
return nil unless wildcard_address
regex = Regexp.escape(wildcard_address)
- regex = regex.gsub(Regexp.escape('%{reply_key}'), "(.+)")
+ regex = regex.gsub(Regexp.escape('%{key}'), "(.+)")
Regexp.new(regex).freeze
end
end
diff --git a/lib/gitlab/markdown/relative_link_filter.rb b/lib/gitlab/markdown/relative_link_filter.rb
index 8c5cf51bfe1..6ee3d1ce039 100644
--- a/lib/gitlab/markdown/relative_link_filter.rb
+++ b/lib/gitlab/markdown/relative_link_filter.rb
@@ -59,25 +59,43 @@ module Gitlab
end
def relative_file_path(path)
- nested_path = build_nested_path(path, context[:requested_path])
+ nested_path = build_relative_path(path, context[:requested_path])
file_exists?(nested_path) ? nested_path : path
end
- # Covering a special case, when the link is referencing file in the same
- # directory.
- # If we are at doc/api/README.md and the README.md contains relative
- # links like [Users](users.md), this takes the request
- # path(doc/api/README.md) and replaces the README.md with users.md so the
- # path looks like doc/api/users.md.
- # If we are at doc/api and the README.md shown in below the tree view
- # this takes the request path(doc/api) and adds users.md so the path
- # looks like doc/api/users.md
- def build_nested_path(path, request_path)
+ # Convert a relative path into its correct location based on the currently
+ # requested path
+ #
+ # path - Relative path String
+ # request_path - Currently-requested path String
+ #
+ # Examples:
+ #
+ # # File in the same directory as the current path
+ # build_relative_path("users.md", "doc/api/README.md")
+ # # => "doc/api/users.md"
+ #
+ # # File in the same directory, which is also the current path
+ # build_relative_path("users.md", "doc/api")
+ # # => "doc/api/users.md"
+ #
+ # # Going up one level to a different directory
+ # build_relative_path("../update/7.14-to-8.0.md", "doc/api/README.md")
+ # # => "doc/update/7.14-to-8.0.md"
+ #
+ # Returns a String
+ def build_relative_path(path, request_path)
return request_path if path.empty?
return path unless request_path
parts = request_path.split('/')
parts.pop if path_type(request_path) != 'tree'
+
+ while parts.length > 1 && path.start_with?('../')
+ parts.pop
+ path.sub!('../', '')
+ end
+
parts.push(path).join('/')
end
diff --git a/lib/support/nginx/gitlab_ci b/lib/support/nginx/gitlab_ci
index ce179d6f599..bf05edfd780 100644
--- a/lib/support/nginx/gitlab_ci
+++ b/lib/support/nginx/gitlab_ci
@@ -18,18 +18,6 @@ server {
proxy_pass $scheme://YOUR_GITLAB_SERVER_FQDN/ci$request_uri;
}
- # expose build endpoint to allow trigger builds
- location ~ ^/projects/\d+/build$ {
- proxy_read_timeout 300;
- proxy_connect_timeout 300;
- proxy_redirect off;
- proxy_set_header X-Real-IP $remote_addr;
-
- # You need to specify your DNS servers that are able to resolve YOUR_GITLAB_SERVER_FQDN
- resolver 8.8.8.8 8.8.4.4;
- proxy_pass $scheme://YOUR_GITLAB_SERVER_FQDN/ci$request_uri;
- }
-
# redirect all other CI requests
location / {
return 301 $scheme://YOUR_GITLAB_SERVER_FQDN/ci$request_uri;
diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake
index b8eb13a4fea..c8222f8ce11 100644
--- a/lib/tasks/gitlab/check.rake
+++ b/lib/tasks/gitlab/check.rake
@@ -2,7 +2,7 @@ namespace :gitlab do
desc "GitLab | Check the configuration of GitLab and its environment"
task check: %w{gitlab:gitlab_shell:check
gitlab:sidekiq:check
- gitlab:reply_by_email:check
+ gitlab:incoming_email:check
gitlab:ldap:check
gitlab:app:check}
@@ -634,13 +634,13 @@ namespace :gitlab do
end
- namespace :reply_by_email do
+ namespace :incoming_email do
desc "GitLab | Check the configuration of Reply by email"
task check: :environment do
warn_user_is_not_gitlab
start_checking "Reply by email"
- if Gitlab.config.reply_by_email.enabled
+ if Gitlab.config.incoming_email.enabled
check_address_formatted_correctly
check_mail_room_config_exists
check_imap_authentication
@@ -665,12 +665,12 @@ namespace :gitlab do
def check_address_formatted_correctly
print "Address formatted correctly? ... "
- if Gitlab::ReplyByEmail.address_formatted_correctly?
+ if Gitlab::IncomingEmail.address_formatted_correctly?
puts "yes".green
else
puts "no".red
try_fixing_it(
- "Make sure that the address in config/gitlab.yml includes the '%{reply_key}' placeholder."
+ "Make sure that the address in config/gitlab.yml includes the '%{key}' placeholder."
)
fix_and_rerun
end
@@ -689,7 +689,7 @@ namespace :gitlab do
"Enable mail_room in the init.d configuration."
)
for_more_information(
- "doc/reply_by_email/README.md"
+ "doc/incoming_email/README.md"
)
fix_and_rerun
end
@@ -708,7 +708,7 @@ namespace :gitlab do
"Enable mail_room in your Procfile."
)
for_more_information(
- "doc/reply_by_email/README.md"
+ "doc/incoming_email/README.md"
)
fix_and_rerun
end
@@ -753,7 +753,7 @@ namespace :gitlab do
"Check that the information in config/mail_room.yml is correct"
)
for_more_information(
- "doc/reply_by_email/README.md"
+ "doc/incoming_email/README.md"
)
fix_and_rerun
end
@@ -789,7 +789,7 @@ namespace :gitlab do
"Check that the information in config/mail_room.yml is correct"
)
for_more_information(
- "doc/reply_by_email/README.md"
+ "doc/incoming_email/README.md"
)
fix_and_rerun
end