hostgitrb 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/README.textile +42 -21
  2. data/lib/only_git.rb +2 -2
  3. metadata +30 -12
data/README.textile CHANGED
@@ -1,32 +1,53 @@
1
1
  h1. HostGitRb
2
2
 
3
- Some simple scripts to help give people access to git repositories without giving them full access via SSH
4
- The directory that contains these scripts should be added to the PATH variable so they can be easily accessed.
3
+ By Raoul Felix
5
4
 
6
- h2. only_git.rb
5
+ HostGitRb allows you to share your Git repositories with other users
6
+ using SSH Public keys as authentication. You only need one shell account,
7
+ which makes this great to use in a shared hosting environment, and users
8
+ won't be able to do anything else other than push/pull to the repositories
9
+ you define.
7
10
 
8
- This script is not directly used. It's used by SSH because of the command="" line that is inserted in the ~/.ssh/authorized_keys file.
9
- Rather than manually adding these entries to the file, the @hostgitrb@ script can be used.
11
+ h2. Features
10
12
 
11
- h2. hostgitrb
13
+ * Easy to install
14
+ * Git Repository sharing via SSH under one user (ideal for shared hosting)
15
+ * User permission is based on their public keys
16
+ * You can set read/write or read-only permissions
17
+ * Users can *only* pull/push Git repos, they can't login via SSH.
12
18
 
13
- Adds the proper SSH command="" lines to the authorized_keys file to give access to other people.
14
- Use the -h argument to see the options.
19
+ h2. Installation
15
20
 
16
- h2. Example
21
+ It's easy as pie, just login to your server and install the gem: <code>gem install hostgitrb</code>
17
22
 
18
- Imagine I have a directory called /home/user/myrepos that has 2 git repos called one.git and two.git
19
- Now I want to allow a friend of mine to have access to those 2 repos but I don't want him to be able to login via SSH to my server.
23
+ Alternatively, clone the "HostGitRb repository":http://github.com/rfelix/hostgitrb from GitHub and add the @bin/@ directory to your @PATH@.
20
24
 
21
- So I ask him for his public ssh key, and I execute the command
22
- <pre>./allow_git.rb -d /home/user/myrepos -f /home/user/keys/friend_rsa.pub</pre>
25
+ h2. Usage
23
26
 
24
- Or the actual key can be passed as an argument, just don't forget the "" because of the spaces:
25
- <pre>./allow_git.rb -d /home/user/myrepos -k "ssh-rsa A.....w== user@host"</pre>
27
+ On my blog post introducing HostGitRb, "Git Repo Hosting via SSH":http://rfelix.com/2010/04/04/git-repo-hosting-via-ssh/, I go through two use cases:
28
+ * "Use Case 1":http://rfelix.com/2010/04/04/git-repo-hosting-via-ssh/#usecase1 - A simple scenario where I want to give a few users access to all the repositories under one project
29
+ * "Use Case 2":http://rfelix.com/2010/04/04/git-repo-hosting-via-ssh/#usecase2 - Another scenario where a user needs to have access to a repository that's shared with another user
26
30
 
27
- This adds a line to ~/.ssh/authorized_keys and gives him push and pull access to repos one.git and two.git like so:
28
- <pre>git clone user@server.com:one.git
29
- git push origin master
30
- git fetch
31
- git pull
32
- etc.</pre>
31
+ h2. Reference
32
+
33
+ Running @hostgitrb --help@ will give you a list of possible options you can use (thanks to "Trollop":http://trollop.rubyforge.org/):
34
+
35
+ <pre>
36
+ > hostgitrb --help
37
+ Options:
38
+ --file, -f <s>: Set path to public ssh key file (default: )
39
+ --key, -k <s>: Provide public ssh key as a string (default: )
40
+ --dir, -d <s>: Set full path to directory with git repositories to
41
+ allow access to (default: )
42
+ --readonly, -r: Set access to repositories in --dir to read only
43
+ --nobackup, -n: Don't make backup of authorized_keys file
44
+ --authorizedkeys, -a <s>: Set authorized_keys file (default: ~/.ssh/authorized_keys)
45
+ --help, -h: Show this message
46
+ </pre>
47
+
48
+ They're pretty much self-explanatory, but here are a few notes:
49
+ * Use @--key@ when you have the SSH public key is in the clipboard (don't forget the "" due to spaces)
50
+ * Use @--file@ when you have the actual public key file on your server.
51
+ * @--readonly@ makes sure the user can only execute @git pull@
52
+ * HostGitRb makes backups of the _authorized_keys_ file it modifies; stop this with @--nobackup@
53
+ * @--authorizedkeys@ allows you to change the file that the new permission is added to.
data/lib/only_git.rb CHANGED
@@ -9,8 +9,8 @@ DEBUG_LEVEL = Logger::ERROR
9
9
  # git-upload-pack '/home/user/repo/Notes.git'
10
10
  # git-receive-pack '/home/user/repo/Notes.git'
11
11
  # git-upload-pack 'Notes.git'
12
- GIT_R_REGEX = /^git[\-](upload)[\-]pack '([a-zA-Z\-_\/]+)([.]git)?'$/
13
- GIT_RW_REGEX = /^git[\-](upload|receive)[\-]pack '([a-zA-Z\-_\/]+)([.]git)?'$/
12
+ GIT_R_REGEX = /^git[\-](upload)[\-]pack '([0-9a-zA-Z\-_\/]+)([.]git)?'$/
13
+ GIT_RW_REGEX = /^git[\-](upload|receive)[\-]pack '([0-9a-zA-Z\-_\/]+)([.]git)?'$/
14
14
 
15
15
  opts = Trollop::options do
16
16
  opt :log, "Set log file", :default => File.join(File.dirname(__FILE__), 'debug.log')
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hostgitrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
5
11
  platform: ruby
6
12
  authors:
7
13
  - Raoul Felix
@@ -9,20 +15,24 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-04-03 00:00:00 +01:00
18
+ date: 2010-09-27 00:00:00 +01:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: mg
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
23
32
  version: "0"
24
- version:
25
- description: HostGitRb allows you to share your Git repositories with other users using SSH Public keys as authentication. You only need one shell account, which makes this great to use in a shared hosting environment, and users won't be able to do anything else other than push/pull to the repositories you define.
33
+ type: :development
34
+ version_requirements: *id001
35
+ description: " HostGitRb allows you to share your Git repositories with other users\n using SSH Public keys as authentication. You only need one shell account,\n which makes this great to use in a shared hosting environment, and users\n won't be able to do anything else other than push/pull to the repositories\n you define.\n"
26
36
  email: rf@rfelix.com
27
37
  executables:
28
38
  - hostgitrb
@@ -36,31 +46,39 @@ files:
36
46
  - bin/hostgitrb
37
47
  - Rakefile
38
48
  - README.textile
39
- has_rdoc: false
49
+ has_rdoc: true
40
50
  homepage: http://rfelix.com/
51
+ licenses: []
52
+
41
53
  post_install_message:
42
54
  rdoc_options: []
43
55
 
44
56
  require_paths:
45
57
  - lib
46
58
  required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
47
60
  requirements:
48
61
  - - ">="
49
62
  - !ruby/object:Gem::Version
63
+ hash: 3
64
+ segments:
65
+ - 0
50
66
  version: "0"
51
- version:
52
67
  required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
53
69
  requirements:
54
70
  - - ">="
55
71
  - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
56
75
  version: "0"
57
- version:
58
76
  requirements: []
59
77
 
60
78
  rubyforge_project:
61
- rubygems_version: 1.3.1
79
+ rubygems_version: 1.3.7
62
80
  signing_key:
63
- specification_version: 2
81
+ specification_version: 3
64
82
  summary: Simple Git repository hosting using SSH Public Keys
65
83
  test_files: []
66
84