def handle_args(self, parser, cfg, options, args): super(Main, self).handle_args(parser, cfg, options, args) os.umask(0o022) log.info('Reading SSH public key...') pubkey = read_ssh_pubkey() user = ssh_extract_user(pubkey) if user is None: log.error('Cannot parse user from SSH public key.') sys.exit(1) log.info('Admin user is %r', user) log.info('Creating generated files directory...') generated = util.getGeneratedFilesDir(config=cfg) util.mkdir(generated) log.info('Creating repository structure...') repositories = util.getRepositoryDir(cfg) util.mkdir(repositories) admin_repository = os.path.join(repositories, 'gitosis-admin.git') init_admin_repository( git_dir=admin_repository, pubkey=pubkey, user=user, ) log.info('Running post-update hook...') util.mkdir(os.path.expanduser('~/.ssh'), 0o700) run_hook.post_update(cfg=cfg, git_dir=admin_repository) log.info('Symlinking ~/.gitosis.conf to repository...') symlink_config(git_dir=admin_repository) log.info('Done.')
def handle_args(self, parser, cfg, options, args): super(Main, self).handle_args(parser, cfg, options, args) os.umask(0022) log.info("Reading SSH public key...") pubkey = read_ssh_pubkey() user = ssh_extract_user(pubkey) if user is None: log.error("Cannot parse user from SSH public key.") sys.exit(1) log.info("Admin user is %r", user) log.info("Creating generated files directory...") generated = util.getGeneratedFilesDir(config=cfg) util.mkdir(generated) log.info("Creating repository structure...") repositories = util.getRepositoryDir(cfg) util.mkdir(repositories) admin_repository = os.path.join(repositories, "gitosis-admin.git") init_admin_repository(git_dir=admin_repository, pubkey=pubkey, user=user) log.info("Running post-update hook...") util.mkdir(os.path.expanduser("~/.ssh"), 0700) run_hook.post_update(cfg=cfg, git_dir=admin_repository) log.info("Symlinking ~/.gitosis.conf to repository...") symlink_config(git_dir=admin_repository) log.info("Done.")
def handle_args(self, parser, cfg, options, args): super(Main, self).handle_args(parser, cfg, options, args) os.umask(0022) log.info('Reading SSH public key...') pubkey = read_ssh_pubkey() user = ssh_extract_user(pubkey) if user is None: log.error('Cannot parse user from SSH public key.') sys.exit(1) log.info('Admin user is %r', user) log.info('Creating generated files directory...') generated = util.getGeneratedFilesDir(config=cfg) util.mkdir(generated) log.info('Creating repository structure...') repositories = util.getRepositoryDir(cfg) util.mkdir(repositories) admin_repository = os.path.join(repositories, 'gitosis-admin') # CQDE change: removed .git extension. init_admin_repository( git_dir=admin_repository, pubkey=pubkey, user=user, ) log.info('Running post-update hook...') util.mkdir(os.path.expanduser('~/.ssh'), 0700) run_hook.post_update(cfg=cfg, git_dir=admin_repository) log.info('Symlinking ~/.gitosis.conf to repository...') symlink_config(git_dir=admin_repository) log.info('Done.')
def handle_args(self, parser, cfg, options, args): #pragma: no cover """Parse the input for this program.""" super(Main, self).handle_args(parser, cfg, options, args) os.umask(0022) log.info('Reading SSH public key...') pubkey = read_ssh_pubkey(options.adminkey) if options.adminname is None: _ = sshkey.get_ssh_pubkey(pubkey) user = _.username else: user = options.adminname user = user.strip() if user is None: log.error('Cannot parse user from SSH public key.') sys.exit(1) log.info('Admin user is %r', user) log.info('Creating generated files directory...') generated = cfg.generated_files_dir util.mkdir(generated) log.info('Creating repository structure...') repositories = cfg.repository_dir util.mkdir(repositories) admin_repository = os.path.join(repositories, 'gitosis-admin.git') init_admin_repository( git_dir=admin_repository, pubkey=pubkey, user=user, config=cfg, ) log.info('Running post-update hook...') util.mkdir(os.path.expanduser('~/.ssh'), 0700) run_hook.post_update(cfg=cfg, git_dir=admin_repository) log.info('Symlinking ~/.gitosis.conf to repository...') symlink_config(git_dir=admin_repository) log.info('Done.')
def test_post_update_simple(): tmp = maketemp() repos = os.path.join(tmp, 'repositories') os.mkdir(repos) admin_repository = os.path.join(repos, 'gitosis-admin.git') pubkey = ( 'ssh-somealgo ' +'0123456789ABCDEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= fakeuser@fakehost') user = '******' init.init_admin_repository( git_dir=admin_repository, pubkey=pubkey, user=user, ) repository.init(path=os.path.join(repos, 'forweb.git')) repository.init(path=os.path.join(repos, 'fordaemon.git')) repository.fast_import( git_dir=admin_repository, committer='John Doe <*****@*****.**>', commit_msg="""\ stuff """, parent='refs/heads/master^0', files=[ ('gitosis.conf', """\ [gitosis] [group gitosis-admin] members = theadmin writable = gitosis-admin [repo fordaemon] daemon = yes [repo forweb] gitweb = yes owner = John Doe description = blah blah """), ('keydir/jdoe.pub', 'ssh-somealgo ' +'0123456789ABCDEFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB' +'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB' +'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB' +'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB= [email protected]'), ], ) cfg = RawConfigParser() cfg.add_section('gitosis') cfg.set('gitosis', 'repositories', repos) generated = os.path.join(tmp, 'generated') os.mkdir(generated) cfg.set('gitosis', 'generate-files-in', generated) ssh = os.path.join(tmp, 'ssh') os.mkdir(ssh) cfg.set( 'gitosis', 'ssh-authorized-keys-path', os.path.join(ssh, 'authorized_keys'), ) run_hook.post_update( cfg=cfg, git_dir=admin_repository, ) got = readFile(os.path.join(repos, 'forweb.git', 'description')) eq(got, 'blah blah\n') got = os.listdir(generated) eq(got, ['projects.list']) got = readFile(os.path.join(generated, 'projects.list')) eq( got, """\ forweb.git John+Doe """, ) got = os.listdir(os.path.join(repos, 'fordaemon.git')) assert 'git-daemon-export-ok' in got, \ "git-daemon-export-ok not created: %r" % got got = os.listdir(ssh) eq(got, ['authorized_keys']) got = readFile(os.path.join(ssh, 'authorized_keys')).splitlines(True) assert 'command="gitosis-serve jdoe",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-somealgo 0123456789ABCDEFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB= [email protected]\n' in got, \ "SSH authorized_keys line for jdoe not found: %r" % got