summaryrefslogtreecommitdiff
blob: 0a4f8c276a2577954ce5b23108860b8aa160cee1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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 <tampakrap@gentoo.org>
# 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()