ansible/roles/test-hg-web/files/set-mirror-key.py (29 lines of code) (raw):
#!/usr/bin/python3
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import grp
import os
import pwd
import stat
import sys
priv, pub, master_ip, master_key = sys.argv[1:]
with open("/etc/mercurial/mirror", "w") as fh:
fh.write(priv)
with open("/etc/mercurial/mirror.pub", "w") as fh:
fh.write(pub)
os.chmod("/etc/mercurial/mirror", stat.S_IRUSR | stat.S_IWUSR)
os.chmod("/etc/mercurial/mirror.pub", stat.S_IRUSR | stat.S_IWUSR)
uhg = pwd.getpwnam("hg")
ghg = grp.getgrnam("hg")
os.chown("/etc/mercurial/mirror", uhg.pw_uid, ghg.gr_gid)
os.chown("/etc/mercurial/mirror.pub", uhg.pw_uid, ghg.gr_gid)
# Allow SSH connections from the master server.
with open("/home/hg/.ssh/authorized_keys", "w") as fh:
fh.write(
'command="/usr/local/bin/mirror-pull -t /repo_local/mozilla/mozilla $SSH_ORIGINAL_COMMAND"'
)
fh.write(",no-pty,no-x11-forwarding,no-agent-forwarding ")
fh.write(pub.strip())
fh.write("\n")
with open("/home/hg/.ssh/known_hosts", "w") as fh:
fh.write("%s %s\n" % (master_ip, master_key))
os.chown("/home/hg/.ssh/authorized_keys", uhg.pw_uid, ghg.gr_gid)
os.chmod("/home/hg/.ssh/authorized_keys", stat.S_IRUSR | stat.S_IWUSR)
os.chown("/home/hg/.ssh/known_hosts", uhg.pw_uid, ghg.gr_gid)
os.chmod("/home/hg/.ssh/known_hosts", stat.S_IRUSR | stat.S_IWUSR)