brownbeagle-gitauth 0.0.3.3 → 0.0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/gitauth.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  #--
2
2
  # Copyright (C) 2009 Brown Beagle Software
3
- # Copyright (C) 2008 Darcy Laycock <sutto@sutto.net>
3
+ # Copyright (C) 2009 Darcy Laycock <sutto@sutto.net>
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
6
6
  # it under the terms of the GNU Affero General Public License as published by
@@ -16,64 +16,84 @@
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  #++
18
18
 
19
-
20
- require 'logger'
21
- require 'yaml'
19
+ require 'pathname'
22
20
  require 'ostruct'
23
21
 
24
22
  module GitAuth
25
23
 
26
- BASE_DIR = File.expand_path(File.join(File.dirname(__FILE__), ".."))
27
- GITAUTH_DIR = File.expand_path("~/.gitauth/")
24
+ VERSION = [0, 0, 4, 0]
25
+ BASE_DIR = Pathname.new(__FILE__).dirname.join("..").expand_path
26
+ LIB_DIR = BASE_DIR.join("lib", "gitauth")
27
+ GITAUTH_DIR = Pathname.new("~/.gitauth/").expand_path
28
28
 
29
- def self.logger
30
- @logger ||= ::Logger.new(File.join(GITAUTH_DIR, "gitauth.log"))
29
+ # This is the first declaration because we need it so that we can
30
+ # load a vendored version of perennial if present.
31
+ def self.require_vendored(lib)
32
+ vendored_path = BASE_DIR.join("vendor", lib, "lib", "#{lib}.rb")
33
+ if File.exist?(vendored_path)
34
+ $:.unshift File.dirname(vendored_path)
35
+ require lib
36
+ else
37
+ require 'rubygems' unless defined?(Gem)
38
+ require lib
39
+ end
31
40
  end
32
41
 
33
- def self.settings
34
- @settings ||= OpenStruct.new(YAML.load_file(File.join(GITAUTH_DIR, "settings.yml")))
35
- end
42
+ require_vendored 'perennial'
43
+ include Perennial
44
+ include Loggable
36
45
 
37
- def self.reload_settings!
38
- @settings = nil
39
- end
46
+ require LIB_DIR.join("settings")
40
47
 
41
- def self.get_user_or_group(name)
42
- return nil if name.to_s.strip.empty?
43
- return (name =~ /^@/ ? Group : User).get(name)
48
+ %w(message saveable_class repo user command client group).each do |file|
49
+ require LIB_DIR.join(file)
44
50
  end
45
51
 
46
- def self.has_git?
47
- !`which git`.strip.empty?
52
+ autoload :AuthSetupMiddleware, LIB_DIR.join('auth_setup_middleware').to_s
53
+ autoload :WebApp, LIB_DIR.join('web_app').to_s
54
+
55
+ manifest do |m, l|
56
+ Settings.root = File.dirname(__FILE__)
57
+ Settings.default_settings_path = GITAUTH_DIR.join("settings.yml")
58
+ Logger.default_logger_path = GITAUTH_DIR.join("gitauth.log")
59
+ l.before_run { GitAuth.each_model(:load!) }
60
+ l.register_controller :web_app, 'GitAuth::WebApp'
48
61
  end
49
62
 
50
- def self.setup!
51
- unless File.exist?(GITAUTH_DIR) && File.directory?(GITAUTH_DIR)
52
- $stderr.puts "GitAuth not been setup, please run: gitauth install"
53
- exit! 1
63
+ class << self
64
+
65
+ def prepare
66
+ Settings.setup
67
+ reload_models!
54
68
  end
55
- dir = File.expand_path(File.join(File.dirname(__FILE__), "gitauth"))
56
- %w(saveable_class repo user command client group).each do |file|
57
- require File.join(dir, file)
69
+
70
+ def version
71
+ VERSION.join(".")
58
72
  end
59
- # Load the users and repositories from a YAML File.
60
- GitAuth::Repo.load!
61
- GitAuth::User.load!
62
- GitAuth::Group.load!
63
- end
64
-
65
- def self.serve_web!
66
- self.setup!
67
- require File.join(File.expand_path(File.join(File.dirname(__FILE__), "gitauth")), "web_app")
68
- GitAuth::WebApp.run!
69
- end
70
-
71
- def self.force_setup!
72
- @settings = nil
73
- GitAuth::Repo.all = nil
74
- GitAuth::User.all = nil
75
- GitAuth::Group.all = nil
76
- self.setup!
73
+
74
+ def msg(type, message)
75
+ Message.new(type, message)
76
+ end
77
+
78
+ def get_user_or_group(name)
79
+ name = name.to_s.strip
80
+ return if name.empty?
81
+ (name =~ /^@/ ? Group : User).get(name)
82
+ end
83
+
84
+ def has_git?
85
+ !`which git`.blank?
86
+ end
87
+
88
+ def each_model(method = nil, &blk)
89
+ [Repo, User, Group].each { |m| m.send(method) } if method.present?
90
+ [Repo, User, Group].each(&blk) unless blk.nil?
91
+ end
92
+
93
+ def reload_models!
94
+ each_model(:load!)
95
+ end
96
+
77
97
  end
78
98
 
79
99
  end
data/public/gitauth.css CHANGED
@@ -277,7 +277,6 @@ br.clear { clear: both; }
277
277
  color: #C55E25;
278
278
  }
279
279
 
280
-
281
280
  #repository-details code {
282
281
  display: block;
283
282
  white-space: pre;
@@ -285,5 +284,29 @@ br.clear { clear: both; }
285
284
  font-family: Consolas, Lucida Console, Monaco, monospace;
286
285
  background: #F4F4F4;
287
286
  margin: 0.25em 0;
288
-
287
+ }
288
+
289
+ #error-container {
290
+ padding: 1em 3em 1.5em;
291
+ }
292
+
293
+ #error-container h2 {
294
+ font-size: 1.5em;
295
+ text-align: center;
296
+ font-weight: bold;
297
+ padding: 0 0 0.5em;
298
+ color: red;
299
+ }
300
+
301
+ #error-container p {
302
+ font-size: 1.2em;
303
+ line-height: 1.5em;
304
+ color: #222;
305
+ text-align: center;
306
+ }
307
+
308
+ #error-container p code {
309
+ font-style: italic;
310
+ color: black;
311
+ font-weight: bold;
289
312
  }
@@ -0,0 +1,9 @@
1
+ error:
2
+ hook_failed: "Your GitAuth post-create hook, located at ~/.gitauth/post-create, failed to run successfully."
3
+ unknown: "An unknown error has occured"
4
+ warning:
5
+ unknown: "Ruh-roh, something went wrong"
6
+ notice:
7
+ unknown: ""
8
+ skipped_post_create: "Post create hook didn't exist"
9
+ post_create_hook_run: "Post create hook successfully was run"
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html lang='en-US' xml:lang='en-US' xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>GitAuth</title>
5
+ <link rel="stylesheet" type="text/css" href="/gitauth.css" media="screen" />
6
+ </head>
7
+ <body>
8
+ <div id="container">
9
+ <div id="header">
10
+ <h1><a href="/">GitAuth Admin Area</a></h1>
11
+ </div>
12
+ <div id="contents">
13
+ <div id='error-container'>
14
+ <h2>Ruh-roh Scooby!</h2>
15
+ <p>
16
+ It looks like you need to setup a username and password for GitAuth to function
17
+ correctly. Please log in the computer running this GitAuth install and run
18
+ <code>gitauth web-app</code> manually once. Thanks!
19
+ </p>
20
+ </div>
21
+ </div>
22
+ <div id="footer">
23
+ Powered by GitAuth v<%= GitAuth.version %>
24
+ </div>
25
+ </div>
26
+ </body>
27
+ </html>
@@ -0,0 +1,22 @@
1
+ <% repo_url = "git@#{request.host}:#{h params[:repo_name]}.git" %>
2
+ <div id="repository-details">
3
+ <h3>Congratulations! Your repository was added!</h3>
4
+ <p>
5
+ If you have an existing local git repository you wish to push, try...
6
+ </p>
7
+ <code> cd your-repo
8
+ git remote add origin <%= repo_url %>
9
+ git push origin master</code>
10
+ <p>
11
+ Otherwise, to initialize an empty repository:
12
+ </p>
13
+ <code> mkdir your-repo
14
+ cd your-repo
15
+ git init
16
+ touch .gitignore
17
+ git add .gitignore
18
+ git commit -m "Added blank .gitignore to initialize repository"
19
+ git remote add origin <%= repo_url %>
20
+ git push origin master</code>
21
+ <p>And you should be good to go! <a href="#" onclick="$('#repository-details').slideUp(); return false;">(close instructions)</a></p>
22
+ </div>
data/views/layout.erb CHANGED
@@ -20,7 +20,7 @@
20
20
  <%= yield %>
21
21
  </div>
22
22
  <div id="footer">
23
- Powered by GitAuth.
23
+ Powered by GitAuth v<%= GitAuth.version %>
24
24
  </div>
25
25
  </div>
26
26
  </body>
metadata CHANGED
@@ -1,78 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brownbeagle-gitauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.3
4
+ version: 0.0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darcy Laycock
8
- - Alex Pooley
9
- - Matt Didcoe
10
8
  autorequire:
11
9
  bindir: bin
12
10
  cert_chain: []
13
11
 
14
- date: 2009-04-05 00:00:00 -07:00
15
- default_executable: gitauth
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
18
- name: thor
19
- type: :runtime
20
- version_requirement:
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: 0.9.7
26
- version:
27
- - !ruby/object:Gem::Dependency
28
- name: sinatra
29
- type: :runtime
30
- version_requirement:
31
- version_requirements: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: "0.9"
36
- version:
37
- description: Git Authentication Server
12
+ date: 2009-09-06 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: A library to enable per user / group authentication on a read / write basis for git repositories running over ssh
38
17
  email: sutto@sutto.net
39
18
  executables:
40
19
  - gitauth
41
20
  - gitauth-shell
42
21
  extensions: []
43
22
 
44
- extra_rdoc_files:
45
- - README.rdoc
23
+ extra_rdoc_files: []
24
+
25
+ files:
46
26
  - LICENSE
27
+ - README.rdoc
28
+ - Rakefile
47
29
  - USAGE
48
- files:
30
+ - bin
49
31
  - bin/gitauth
50
32
  - bin/gitauth-shell
33
+ - config.ru
34
+ - gitauth.gemspec
35
+ - lib
36
+ - lib/gitauth
37
+ - lib/gitauth.rb
38
+ - lib/gitauth/auth_setup_middleware.rb
51
39
  - lib/gitauth/client.rb
52
40
  - lib/gitauth/command.rb
53
41
  - lib/gitauth/group.rb
42
+ - lib/gitauth/message.rb
54
43
  - lib/gitauth/repo.rb
55
44
  - lib/gitauth/saveable_class.rb
45
+ - lib/gitauth/settings.rb
56
46
  - lib/gitauth/user.rb
57
47
  - lib/gitauth/web_app.rb
58
- - lib/gitauth.rb
59
- - LICENSE
48
+ - public
60
49
  - public/gitauth.css
61
50
  - public/gitauth.js
62
51
  - public/jquery.js
63
- - README.rdoc
64
- - USAGE
52
+ - resources
53
+ - resources/messages.yml
54
+ - vendor
55
+ - views
56
+ - views/auth_setup.erb
57
+ - views/clone_repo.erb
65
58
  - views/group.erb
66
59
  - views/index.erb
67
60
  - views/layout.erb
68
61
  - views/repo.erb
69
62
  - views/user.erb
70
63
  has_rdoc: false
71
- homepage: http://github.com/brownbeagle/gitauth
64
+ homepage: http://brownbeagle.com.au/
65
+ licenses:
72
66
  post_install_message:
73
- rdoc_options:
74
- - --inline-source
75
- - --charset=UTF-8
67
+ rdoc_options: []
68
+
76
69
  require_paths:
77
70
  - lib
78
71
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -90,9 +83,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
83
  requirements: []
91
84
 
92
85
  rubyforge_project:
93
- rubygems_version: 1.2.0
86
+ rubygems_version: 1.3.5
94
87
  signing_key:
95
- specification_version: 2
96
- summary: Git Authentication Server
88
+ specification_version: 3
89
+ summary: An authentication manager for Git repositories served over SSH
97
90
  test_files: []
98
91