Skip to content
Snippets Groups Projects
Commit ec9e54ea authored by gitlabhq's avatar gitlabhq
Browse files

gitosis error handle

parent d7ea9052
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -4,6 +4,10 @@ class ApplicationController < ActionController::Base
 
helper_method :abilities, :can?
 
rescue_from Gitosis::AccessDenied do |exception|
render :file => File.join(Rails.root, "public", "gitosis_error"), :layout => false
end
protected
 
def abilities
Loading
Loading
class ErrorsController < ApplicationController
def gitosis
render :file => File.join(Rails.root, "public", "gitosis_error"), :layout => false
end
end
Loading
Loading
@@ -105,6 +105,8 @@ class ProjectsController < ApplicationController
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
rescue Gitosis::AccessDenied
render :js => "location.href = '#{errors_gitosis_path}'" and return
rescue StandardError => ex
@project.errors.add(:base, "Cant save project. Please try again later")
respond_to do |format|
Loading
Loading
Loading
Loading
@@ -16,7 +16,7 @@ module Gitlab
# -- all .rb files in that directory are automatically loaded.
 
# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)
config.autoload_paths += %W(#{config.root}/lib)
 
# Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named.
Loading
Loading
Loading
Loading
@@ -10,6 +10,7 @@ Gitlab::Application.routes.draw do
root :to => "users#index"
end
 
get "errors/gitosis"
get "profile/password", :to => "profile#password"
put "profile/password", :to => "profile#password_update"
get "profile", :to => "profile#show"
Loading
Loading
require 'inifile'
require 'timeout'
class Gitosis
class AccessDenied < StandardError; end
 
def pull
# create tmp dir
Loading
Loading
@@ -20,15 +21,19 @@ class Gitosis
end
 
def configure
File.open(File.join(Dir.tmpdir,"gitme-gitosis.lock"), "w+") do |f|
status = Timeout::timeout(5) {
File.open(File.join(Dir.tmpdir,"gitme-gitosis.lock"), "w+") do |f|
f.flock(File::LOCK_EX)
pull
yield(self)
push
f.flock(File::LOCK_UN)
end
end
}
rescue Exception => ex
raise Gitosis::AccessDenied.new("gitosis timeout")
end
 
def destroy_project(project)
Loading
Loading
@@ -51,7 +56,7 @@ class Gitosis
`cd #{File.join(@local_dir,'gitosis')} ; git rm keydir/#{user}.pub`
end
 
#update or create
#update or create
def update_project(repo_name, name_writers)
# write config file
conf = IniFile.new(File.join(@local_dir,'gitosis','gitosis.conf'))
Loading
Loading
@@ -61,5 +66,4 @@ class Gitosis
 
conf.write
end
end
<!DOCTYPE html>
<html>
<head>
<title>We're sorry, but we cant get access to your gitosis</title>
<style type="text/css">
body { background-color: #EAEAEA; color: #666; text-align: center; font-family: arial, sans-serif; }
div.dialog {
width: 600px;
padding: 0 4em;
margin: 4em auto 0 auto;
}
h1 { font-size: 48px; color: #444; line-height: 1.5em; }
h2 { font-size: 24px; color: #666; line-height: 1.5em; }
</style>
</head>
<body>
<!-- This file lives in public/500.html -->
<div class="dialog">
<h1>Gitosis Error</h1>
<h2>We're sorry, but we cant get access to your gitosis.</h2>
<h3> 1. Check 'config/gitosis.yml' for correct settings.</h3>
<h3> 2. Be sure web server user has access to gitosis.</h3>
</div>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment