~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to contrib/bzr_access

  • Committer: John Arbash Meinel
  • Date: 2007-12-10 16:42:21 UTC
  • mto: (3112.1.1 bzr_access)
  • mto: This revision was merged to the branch mainline in revision 3165.
  • Revision ID: john@arbash-meinel.com-20071210164221-3hulymrjzcd9hso5
Some simple spelling fixes, and switch to using subprocess since that is space-in-filename safe

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
#
9
9
###############################################################################
10
10
#
11
 
# Invokation: bzr_access <bzr_executable> <repo_collection> <user>
 
11
# Invocation: bzr_access <bzr_executable> <repo_collection> <user>
12
12
#
13
13
# The script extracts from the SSH_ORIGINAL_COMMAND environment variable the
14
14
# repository, which bazaar tries to access through the bzr+ssh protocol. The
19
19
# started for it in read-only or in read-write mode, rsp., using the specified
20
20
# bzr executable.
21
21
#
22
 
# Config file: INI format, pretty much similar to the autzhfile of subversion.
 
22
# Config file: INI format, pretty much similar to the authfile of subversion.
23
23
#
24
24
# Groups can be defined in the [groups] section. The options in this block are
25
25
# the names of the groups to be defined, the corresponding values the lists of
49
49
# @admins = rw
50
50
# @devels = rw
51
51
#
 
52
#
 
53
# To use this with a single SSH user and login, set up .ssh/authorized_keys with
 
54
#  command="/path/to/bzr_access /path/to/bzr /path/to/repository username",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-<type> <key>
 
55
#
52
56
###############################################################################
53
57
import ConfigParser
 
58
import os
54
59
import re
 
60
import subprocess
55
61
import sys
56
 
import os
57
62
 
58
63
CONFIG_FILE = "bzr_access.conf"
59
64
SCRIPT_NAME = os.path.basename(sys.argv[0])
81
86
                             --allow-writes\s*$""", re.VERBOSE)
82
87
 
83
88
# Command line for staring bzr (executable and repository are substituted)
84
 
BZR_READWRITE = "%s serve --inet --directory='%s' --allow-writes"
85
 
BZR_READ = "%s serve --inet --directory='%s'"
 
89
BZR_OPTIONS = ['serve', '--inet', '--directory']
 
90
BZR_READWRITE_FLAGS = ['--allow-writes']
86
91
 
87
92
 
88
93
 
197
202
  # Determine permission and execute bzr with appropriate options
198
203
  perm = accessMan.permission(user, directory)
199
204
  absDir = os.path.join(repoRoot, directory)
 
205
  command = [bzrExec] + BZR_OPTIONS + [absDir]
200
206
  if perm == PERM_READ:
201
 
    os.system(BZR_READ % (bzrExec, absDir))
 
207
    # Nothing extra needed for readonly operations
 
208
    pass
202
209
  elif perm == PERM_READWRITE:
203
 
    os.system(BZR_READWRITE % (bzrExec, absDir))
 
210
    # Add the write flags
 
211
    command.extend(BZR_READWRITE_FLAGS)
204
212
  else:
205
213
    error("Access denied.", EXIT_NOACCESS)
 
214
  return subprocess.call(command)
206
215
 
207
216
 
208
217
if __name__ == "__main__":