Add Jabber User script

Download, Add a comment, Back to main page
#!/usr/bin/env python
#Developed for ETSZONE (etszone.com) by Diego Ongaro, 2005
#This file is in the public domain but please keep the above credits.

JABBER_USER_DIR = '/var/lib/jabber/mydomain.net/' #needs a trailing slash
JABBER_USER_UID = 105   #numeric user-id
JABBER_USER_GID = 4     #numeric group-id
JABBER_USER_MOD = 0600  #numeric mode

import base64, sha, time, os

def sha_hash(pw): 
	"""Returns a SHA hash of the given text."""
	
	return '{SHA}' + base64.encodestring(sha.new(pw).digest()).rstrip()

def get(label): #
	"""Returns user input (stdin), prompting user with given text."""
	return raw_input('%s: ' % label).strip()
	

user = get('username')

filename = '%s%s.xml' % (JABBER_USER_DIR, user)
if os.path.exists(filename):
	print 'ERROR: username exists'
	os.sys.exit(1)
else:
	pw = get('password')
	name = get('name')
	email = get('email')

	add_to_file = \
	"<xdb>" + \
		"<query xmlns='jabber:iq:last' last='%i' xdbns='jabber:iq:last'>Registered</query>" % time.time() + \
		"<crypt xmlns='jabber:iq:auth:crypt' xdbns='jabber:iq:auth:crypt'>%s</crypt>" % sha_hash(pw) + \
		"<query xmlns='jabber:iq:register' xdbns='jabber:iq:register'>" + \
			"<username>%s</username>" %user + \
			"<name>%s</name>" % name + \
			"<email>%s</email>" % email + \
		"</query>" + \
	"</xdb>"
	
	f = open(filename, 'w')
	f.write(add_to_file)
	f.close()
	os.chown(filename, JABBER_USER_UID, JABBER_USER_GID)
	os.chmod(filename, JABBER_USER_MOD)