From ef61d1f20004f20ec4a421f9bfd698ac070783dd Mon Sep 17 00:00:00 2001 From: tsl0922 Date: Fri, 19 Apr 2013 16:43:54 +0800 Subject: fix http push 401 --- lib/gitlab/backend/grack_auth.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb index f46455f4735..8b43b606890 100644 --- a/lib/gitlab/backend/grack_auth.rb +++ b/lib/gitlab/backend/grack_auth.rb @@ -76,13 +76,17 @@ module Grack end def validate_get_request - project.public || can?(user, :download_code, project) + validate_request(@request.params['service']) end def validate_post_request - if @request.path_info.end_with?('git-upload-pack') + validate_request(File.basename(@request.path)) + end + + def validate_request(service) + if service == 'git-upload-pack' project.public || can?(user, :download_code, project) - elsif @request.path_info.end_with?('git-receive-pack') + elsif service == 'git-receive-pack' action = if project.protected_branch?(current_ref) :push_code_to_protected_branches else -- cgit v1.2.1 From 4e055e8a631ead1e8556287866e7a55f4a97062d Mon Sep 17 00:00:00 2001 From: tsl0922 Date: Sat, 20 Apr 2013 09:18:37 +0800 Subject: fix: UTF-8 encoding error --- lib/gitlab/backend/grack_auth.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb index 8b43b606890..6d87df17e75 100644 --- a/lib/gitlab/backend/grack_auth.rb +++ b/lib/gitlab/backend/grack_auth.rb @@ -109,6 +109,8 @@ module Grack else input = @request.body.read end + # force utf-8 encoding + input.encode!('UTF-8', 'UTF-8', invalid: :replace, undef: :replace, replace: '') # Need to reset seek point @request.body.rewind /refs\/heads\/([\w\.-]+)/.match(input).to_a.last -- cgit v1.2.1 From f1c9b05868cb6ecc72c1dc6f7de0583ca7f95faa Mon Sep 17 00:00:00 2001 From: tsl0922 Date: Fri, 3 May 2013 11:31:23 +0800 Subject: better fix for encoding error --- lib/gitlab/backend/grack_auth.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb index 6d87df17e75..6a411aabcc6 100644 --- a/lib/gitlab/backend/grack_auth.rb +++ b/lib/gitlab/backend/grack_auth.rb @@ -109,11 +109,9 @@ module Grack else input = @request.body.read end - # force utf-8 encoding - input.encode!('UTF-8', 'UTF-8', invalid: :replace, undef: :replace, replace: '') # Need to reset seek point @request.body.rewind - /refs\/heads\/([\w\.-]+)/.match(input).to_a.last + /refs\/heads\/([\w\.-]+)/n.match(input.force_encoding('ascii-8bit')).to_a.last end def project -- cgit v1.2.1