コード例 #1
0
ファイル: run_hook.py プロジェクト: superbobry/gitosis
def post_update(cfg, git_dir): #pragma: no cover
    """
    post-update hook for the Gitosis admin directory.

    1. Make an export of the admin repo to a clean directory.
    2. Move the gitosis.conf file to it's destination.
    3. Update the repository descriptions.
    4. Update the projects.list file.
    5. Update the repository export markers.
    6. Update the Gitosis SSH keys.
    """
    export = os.path.join(git_dir, 'gitosis-export')
    util.rmtree(export)
    repository.export(git_dir=git_dir, path=export)
    os.rename(
        os.path.join(export, 'gitosis.conf'),
        os.path.join(export, '..', 'gitosis.conf'),
        )
    # re-read config to get up-to-date settings
    cfg.read(os.path.join(export, '..', 'gitosis.conf'))
    build_reposistory_data(cfg)
    authorized_keys = cfg.ssh_authorized_keys_path
    ssh.writeAuthorizedKeys(
        path=authorized_keys,
        keydir=os.path.join(export, 'keydir'),
        )
コード例 #2
0
ファイル: test_ssh.py プロジェクト: emillan/gitosis
    def test_simple(self):
        tmp = maketemp()
        path = os.path.join(tmp, 'authorized_keys')
        f = file(path, 'w')
        try:
            f.write('''\
# foo
bar
### autogenerated by gitosis, DO NOT EDIT
command="/foo/bar/baz/gitosis-serve wsmith",no-port-forwarding,\
no-X11-forwarding,no-agent-forwarding,no-pty %(key_2)s
baz
''' % dict(key_2=KEY_2))
        finally:
            f.close()
        keydir = os.path.join(tmp, 'one')
        mkdir(keydir)
        writeFile(os.path.join(keydir, 'jdoe.pub'), KEY_1 + '\n')

        ssh.writeAuthorizedKeys(path=path, keydir=keydir)

        got = readFile(path)
        eq(
            got, '''\
# foo
bar
baz
### autogenerated by gitosis, DO NOT EDIT
command="gitosis-serve jdoe",no-port-forwarding,\
no-X11-forwarding,no-agent-forwarding,no-pty %(key_1)s
''' % dict(key_1=KEY_1))
コード例 #3
0
ファイル: test_ssh.py プロジェクト: elmer/smart-gitosis
    def test_simple(self):
        tmp = maketemp()

        authorized_keys = path.join(tmp, 'authorized_keys')

        with open(authorized_keys, 'w') as f:
            f.write('''\
# foo
bar
### autogenerated by gitosis, DO NOT EDIT
command="PATH=/opt/local/bin /foo/bar/baz/gitosis-serve wsmith",no-port-forwarding,\
no-X11-forwarding,no-agent-forwarding,no-pty %s
baz''' % KEY_2)

        keydir = path.join(tmp, 'one')

        mkdir(keydir)

        # okay so we write the key into a file in keyir
        with open(path.join(keydir, 'jdoe.pub'), 'w') as f:
            f.write(KEY_1 + '\n')

        ssh.writeAuthorizedKeys(authorized_keys, keydir)

        got = readFile(authorized_keys)

        eq(got, '''\
# foo
bar
baz
### autogenerated by gitosis, DO NOT EDIT
command="PATH=/opt/local/bin gitosis-serve jdoe",no-port-forwarding,\
no-X11-forwarding,no-agent-forwarding,no-pty %s''' % KEY_1)
コード例 #4
0
ファイル: run_hook.py プロジェクト: voretaq7/gitosis
def post_update(cfg, git_dir):
    export = os.path.join(git_dir, 'gitosis-export')
    try:
        shutil.rmtree(export)
    except OSError as e:
        if e.errno == errno.ENOENT:
            pass
        else:
            raise
    repository.export(git_dir=git_dir, path=export)
    os.rename(
        os.path.join(export, 'gitosis.conf'),
        os.path.join(export, '..', 'gitosis.conf'),
    )
    # re-read config to get up-to-date settings
    cfg.read(os.path.join(export, '..', 'gitosis.conf'))
    gitweb.set_descriptions(config=cfg, )
    generated = util.getGeneratedFilesDir(config=cfg)
    gitweb.generate_project_list(
        config=cfg,
        path=os.path.join(generated, 'projects.list'),
    )
    gitdaemon.set_export_ok(config=cfg, )
    authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
    ssh.writeAuthorizedKeys(
        path=authorized_keys,
        keydir=os.path.join(export, 'keydir'),
    )
コード例 #5
0
ファイル: do_user.py プロジェクト: cee1/cee1.archive
def gitosis_sync(gitosis_conf, gitosis_keydir):
	from gitosis import ssh
	from gitosis import gitweb
	from gitosis import gitdaemon
	from gitosis import util
	import ConfigParser

	cfg = ConfigParser.RawConfigParser ()
	cfg.read(gitosis_conf)

	util.RepositoryDir(cfg,
			   (
			   gitdaemon.DaemonProp(),
			   gitweb.GitwebProp(),
			   gitweb.DescriptionProp(),
			   gitweb.OwnerProp()
			   )).travel()

	generated = util.getGeneratedFilesDir(config=cfg)
	gitweb.ProjectList(
			  os.path.join(generated, 'projects.list')
			  ).refresh()

	authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
	ssh.writeAuthorizedKeys(
		path=authorized_keys,
		keydir=gitosis_keydir,
	)
コード例 #6
0
def gitosis_sync(gitosis_conf, gitosis_keydir):
    from gitosis import ssh
    from gitosis import gitweb
    from gitosis import gitdaemon
    from gitosis import util
    import ConfigParser

    cfg = ConfigParser.RawConfigParser()
    cfg.read(gitosis_conf)

    util.RepositoryDir(
        cfg, (gitdaemon.DaemonProp(), gitweb.GitwebProp(),
              gitweb.DescriptionProp(), gitweb.OwnerProp())).travel()

    generated = util.getGeneratedFilesDir(config=cfg)
    gitweb.ProjectList(os.path.join(generated, 'projects.list')).refresh()

    authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
    ssh.writeAuthorizedKeys(
        path=authorized_keys,
        keydir=gitosis_keydir,
    )
コード例 #7
0
ファイル: test_ssh.py プロジェクト: handmoney/gitosis
    def test_simple(self):
        tmp = maketemp()
        path = os.path.join(tmp, "authorized_keys")
        f = file(path, "w")
        try:
            f.write(
                """\
# foo
bar
### autogenerated by gitosis, DO NOT EDIT
command="/foo/bar/baz/gitosis-serve wsmith",no-port-forwarding,\
no-X11-forwarding,no-agent-forwarding,no-pty %(key_2)s
baz
"""
                % dict(key_2=KEY_2)
            )
        finally:
            f.close()
        keydir = os.path.join(tmp, "one")
        mkdir(keydir)
        writeFile(os.path.join(keydir, "jdoe.pub"), KEY_1 + "\n")

        ssh.writeAuthorizedKeys(path=path, keydir=keydir)

        got = readFile(path)
        eq(
            got,
            """\
# foo
bar
baz
### autogenerated by gitosis, DO NOT EDIT
command="gitosis-serve jdoe",no-port-forwarding,\
no-X11-forwarding,no-agent-forwarding,no-pty %(key_1)s
"""
            % dict(key_1=KEY_1),
        )
コード例 #8
0
ファイル: test_ssh.py プロジェクト: superbobry/gitosis
    def test_simple(self):
        tmp = maketemp()
        path = os.path.join(tmp, 'authorized_keys')
        f = file(path, 'w')
        try:
            f.write('''\
# foo
bar
### autogenerated by gitosis, DO NOT EDIT
command="/foo/bar/baz/gitosis-serve wsmith",no-port-forwarding,\
no-X11-forwarding,no-agent-forwarding,no-pty %(key_2)s
baz
''' % dict(key_2=KEY_2))
        finally:
            f.close()
        keydir = os.path.join(tmp, 'one')
        mkdir(keydir)
        writeFile(os.path.join(keydir, 'jdoe.pub'), KEY_1+'\n')

        ssh.writeAuthorizedKeys(
            path=path, keydir=keydir)

        got = readFile(path)
        eq(got, '''# foo\nbar\nbaz\n### autogenerated by gitosis, DO NOT EDIT\ncommand="gitosis-serve jdoe",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty %(key_1)s\n''' % dict(key_1=KEY_1))
コード例 #9
0
ファイル: run_hook.py プロジェクト: miracle2k/gitosis
    generated = util.getGeneratedFilesDir(config=cfg)
    gitweb.generate_project_list(
        config=cfg,
        path=os.path.join(generated, 'projects.list'),
        )
    gitdaemon.set_export_ok(
        config=cfg,
        )
    if htaccess.gen_htaccess_if_enabled(config=cfg):
        group.generate_group_list(
            config=cfg,
            path=os.path.join(generated, 'groups'),
            )
    authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
    ssh.writeAuthorizedKeys(
        path=authorized_keys,
        keydir=os.path.join(export, 'keydir'),
        )

def update_mirrors(cfg, git_dir):
    mirror.push_mirrors(cfg, git_dir)


class Main(app.App):
    def create_parser(self):
        parser = super(Main, self).create_parser()
        parser.set_usage('%prog [OPTS] HOOK')
        parser.set_description(
            'Perform gitosis actions for a git hook')
        return parser

    def handle_args(self, parser, cfg, options, args):
コード例 #10
0
    # re-read config to get up-to-date settings
    cfg.read(os.path.join(export, '..', 'gitosis.conf'))
    gitweb.set_descriptions(
        config=cfg,
        )
    generated = util.getGeneratedFilesDir(config=cfg)
    gitweb.generate_project_list(
        config=cfg,
        path=os.path.join(generated, 'projects.list'),
        )
    gitdaemon.set_export_ok(
        config=cfg,
        )
    authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
    ssh.writeAuthorizedKeys(
        path=authorized_keys,
        keydir=os.path.join(export, 'keydir'),
        )

class Main(app.App):
    def create_parser(self):
        parser = super(Main, self).create_parser()
        parser.set_usage('%prog [OPTS] HOOK')
        parser.set_description(
            'Perform gitosis actions for a git hook')
        return parser

    def handle_args(self, parser, cfg, options, args):
        try:
            (hook,) = args
        except ValueError:
            parser.error('Missing argument HOOK.')
コード例 #11
0
ファイル: run_hook.py プロジェクト: elmer/smart-gitosis
    os.rename(
        os.path.join(export, 'gitosis.conf'),
        os.path.join(export, '..', 'gitosis.conf'),
        )

    cfg.read(os.path.join(export, '..', 'gitosis.conf'))

    gitweb.set_descriptions(
        config=cfg,
        )
    generated = util.getGeneratedFilesDir(config=cfg)
    gitweb.write_project_list(cfg,
        os.path.join(generated, 'projects.list'))
    gitdaemon.set_export_ok(cfg)
    authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
    ssh.writeAuthorizedKeys(authorized_keys, os.path.join(export, 'keydir'))

class Main(app.App):
    def create_parser(self):
        parser = super(Main, self).create_parser()
        parser.set_usage('%prog [OPTS] HOOK')
        parser.set_description(
            'Perform gitosis actions for a git hook')
        return parser

    def handle_args(self, parser, cfg, options, args):
        try:
            (hook,) = args
        except ValueError:
            parser.error('Missing argument HOOK.')
コード例 #12
0
ファイル: run_hook.py プロジェクト: deployfu/gitosis
    cfg.read(os.path.join(export, '..', 'gitosis.conf'))
    gitweb.set_descriptions(
        config=cfg,
        )
    generated = util.getGeneratedFilesDir(config=cfg)
    gitweb.generate_project_list(
        config=cfg,
        path=os.path.join(generated, 'projects.list'),
        )
    gitdaemon.set_export_ok(
        config=cfg,
        )
    authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
    ssh.writeAuthorizedKeys(
        cfg=cfg,
        path=authorized_keys,
        keydir=os.path.join(export, 'keydir'),
        sshadmin=os.path.join(export, 'sshadmin.pub')
        )

class Main(app.App):
    def create_parser(self):
        parser = super(Main, self).create_parser()
        parser.set_usage('%prog [OPTS] HOOK')
        parser.set_description(
            'Perform gitosis actions for a git hook')
        return parser

    def handle_args(self, parser, cfg, options, args):
        try:
            (hook,) = args
        except ValueError:
コード例 #13
0
ファイル: run_hook.py プロジェクト: bastichelaar/gitosis
def regenerate_keys(cfg):
    authorized_keys = util.getSSHAuthorizedKeysPath(config=cfg)
    ssh.writeAuthorizedKeys(
        path=authorized_keys,
        keydir=cfg.get('gitosis', 'keydir'),
        )