X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-generate;h=e9c4753440fc1ffa7413e206f7df7af39c7eff37;hb=89ff993193164fbc1c8722e948e9759a2db7c6a2;hp=d8c394b0e8a95e5384bc6d68eb62d2723b231041;hpb=3819c3833469b12455fb1aa40c410f9bc2774b93;p=mirror%2Fuserdir-ldap.git diff --git a/ud-generate b/ud-generate index d8c394b..e9c4753 100755 --- a/ud-generate +++ b/ud-generate @@ -28,6 +28,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +from dsa_mq.connection import Connection +from dsa_mq.config import Config + import string, re, time, ldap, optparse, sys, os, pwd, posix, socket, base64, hashlib, shutil, errno, tarfile, grp, fcntl, dbm from userdir_ldap import * from userdir_exceptions import * @@ -410,39 +413,21 @@ def GenWebPassword(accounts, File): Die(File, None, F) raise -# Generate the voipPassword list -def GenVoipPassword(accounts, File): +# Generate the rtcPassword list +def GenRtcPassword(accounts, File): F = None try: OldMask = os.umask(0077) F = open(File, "w", 0600) os.umask(OldMask) - root = Element('include') - for a in accounts: - if not 'voipPassword' in a: continue + if not 'rtcPassword' in a: continue if not a.pw_active(): continue - Pass = str(a['voipPassword']) - user = Element('user') - user.attrib['id'] = "%s" % (a['uid']) - root.append(user) - params = Element('params') - user.append(params) - param = Element('param') - params.append(param) - param.attrib['name'] = "a1-hash" - param.attrib['value'] = "%s" % (Pass) - variables = Element('variables') - user.append(variables) - variable = Element('variable') - variable.attrib['name'] = "toll_allow" - variable.attrib['value'] = "domestic,international,local" - variables.append(variable) - - F.write("%s" % (prettify(root))) - + Line = "%s@debian.org:%s:rtc.debian.org:AUTHORIZED" % (a['uid'], str(a['rtcPassword'])) + Line = Sanitize(Line) + "\n" + F.write("%s" % (Line)) except: Die(File, None, F) @@ -1120,7 +1105,7 @@ def get_accounts(ldap_conn): "keyFingerPrint", "privateSub", "mailDisableMessage",\ "mailGreylisting", "mailCallout", "mailRBL", "mailRHSBL",\ "mailWhitelist", "sudoPassword", "objectClass", "accountStatus",\ - "mailContentInspectionAction", "webPassword", "voipPassword"]) + "mailContentInspectionAction", "webPassword", "rtcPassword"]) if passwd_attrs is None: raise UDEmptyList, "No Users" @@ -1208,7 +1193,7 @@ def generate_all(global_dir, ldap_conn): GenMailList(accounts, global_dir + "mail-rhsbl", "mailRHSBL") GenMailList(accounts, global_dir + "mail-whitelist", "mailWhitelist") GenWebPassword(accounts, global_dir + "web-passwords") - GenVoipPassword(accounts, global_dir + "voip-passwords") + GenRtcPassword(accounts, global_dir + "rtc-passwords") GenKeyrings(global_dir) # Compatibility. @@ -1328,8 +1313,8 @@ def generate_host(host, global_dir, all_accounts, all_hosts, ssh_userkeys): if 'WEB-PASSWORDS' in ExtraList: DoLink(global_dir, OutDir, "web-passwords") - if 'VOIP-PASSWORDS' in ExtraList: - DoLink(global_dir, OutDir, "voip-passwords") + if 'RTC-PASSWORDS' in ExtraList: + DoLink(global_dir, OutDir, "rtc-passwords") if 'KEYRING' in ExtraList: for k in Keyrings: @@ -1400,12 +1385,37 @@ def getLastBuildTime(gdir): return (cache_last_ldap_mod, cache_last_unix_mod, cache_last_run) +def mq_notify(options): + options.section = 'dsa-udgenerate' + options.config = '/etc/dsa/pubsub.conf' + + config = Config(options) + conf = { + 'rabbit_userid': config.username, + 'rabbit_password': config.password, + 'rabbit_virtual_host': config.vhost, + 'rabbit_hosts': ['pubsub02.debian.org', 'pubsub01.debian.org'], + 'use_ssl': False + } + conn = None + try: + conn = Connection(conf=conf) + conn.topic_send(config.topic, + 'update', + exchange_name=config.exchange, + timeout=5) + finally: + if conn: + conn.close() + def ud_generate(): parser = optparse.OptionParser() parser.add_option("-g", "--generatedir", dest="generatedir", metavar="DIR", help="Output directory.") parser.add_option("-f", "--force", dest="force", action="store_true", help="Force generation, even if no update to LDAP has happened.") + parser.add_option("-m", "--mq", action="store_true", default=False, + help="Send update trigger over MQ") (options, args) = parser.parse_args() if len(args) > 0: @@ -1445,6 +1455,8 @@ def ud_generate(): generate_all(generate_dir, l) tracefd.write("%s\n%s\n%s\n" % (ldap_last_mod, unix_last_mod, time_started)) tracefd.close() + if options.mq: + mq_notify(options) if __name__ == "__main__":