From 700a153bda9138adf418ae978fc1dd449d8e11f4 Mon Sep 17 00:00:00 2001 From: Theo Chatzimichos Date: Sun, 12 Sep 2010 23:18:29 +0300 Subject: svnignore->gitignore Add media dir with static data taken from the server Add scripts dir with the cron job and the python scripts Correct the templates dir --- scripts/adduser.py | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 scripts/adduser.py (limited to 'scripts/adduser.py') diff --git a/scripts/adduser.py b/scripts/adduser.py new file mode 100644 index 0000000..0a4f8c2 --- /dev/null +++ b/scripts/adduser.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python + +# A simple help script to create a new planet/universe config for a new user +# Run it inside the planet/ topdir +# WARNING: Always check the changes that are made by this script before commiting +# Many thanks to Arfrever Frehtes Taifersar Arahesis (arfrever@gentoo.org) for his suggestions + +# Author: Theo Chatzimichos +# Feel free to contact me via IRC or email + +import sys +import hashlib + +# the following makes it python3 compatible +if sys.version_info[0] == 2: + input = raw_input + +def check_mail(email): + # http://commandline.org.uk/python/email-syntax-check/ + + # Ditch nonsense email addresses. + + GENERIC_DOMAINS = "aero", "asia", "biz", "cat", "com", "coop", \ + "edu", "gov", "info", "int", "jobs", "mil", "mobi", "museum", \ + "name", "net", "org", "pro", "tel", "travel" + + # Checks for a syntactically invalid email address. + # Email address must be 7 characters in total. + if len(email) < 7: + return False # Address too short + + # Split up email address into parts. + try: + localpart, domainname = email.rsplit('@', 1) + host, toplevel = domainname.rsplit('.', 1) + except ValueError: + return False # Address does not have enough parts + + # Check for Country code or Generic Domain. + if len(toplevel) != 2 and toplevel not in domains: + return False # Not a domain name. + + for i in '-_.%+.': + localpart = localpart.replace(i, "") + for i in '-_.': + host = host.replace(i, "") + + if localpart.isalnum() and host.isalnum(): + return True # Email address is fine. + else: + return False # Email has funny characters + +def create_gravatar(email): + h = hashlib.md5() + h.update(email) + return h.hexdigest() + +def create_config(feed,path,nickname,realname,gravatar): + if feed: + f = open('configs/%s/%s' % (path,nickname), 'w') + f.write('[%s]\nusername = %s\nname = %s\ngravatar = %s' % (feed,nickname,realname,gravatar)) + f.close() + print('%s config created successfully' % path) + else: + print('No %s config will be created' % path) + +def main(): + realname = input('Real Name: ') + nickname = input('Nickname: ') + email = input('Email: ') + if check_mail(email): + gravatar = create_gravatar(email) + print('Gravatar hash: %s' % gravatar) + else: + print('Not a valid email address\n') + sys.exit(0) + planet = input('Planet Feed: ') + create_config(planet,'planet',nickname,realname,gravatar) + universe = input('Universe Feed: ') + create_config(universe,'universe',nickname,realname,gravatar) + +if __name__ == '__main__': + main() -- cgit v1.2.3-65-gdbad