sr / beadmin

Python scripts hacked together to manage bearnaise.net

This URL has Read+Write access

Jordan Bracco (author)
Tue Dec 23 12:37:28 -0800 2008
sr (committer)
Tue Dec 23 12:52:28 -0800 2008
beadmin / sites-edit.py
100755 67 lines (54 sloc) 1.922 kb
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
#!/usr/bin/env python
#-*- coding: utf8 -*-
 
from dialog import *
import database as db
import dbconf
import re
import sys
import os
 
if os.environ.has_key('SUDO_USER'):
        user = os.environ['SUDO_USER']
else:
        user = 'root'
 
userfromdb = db.select('users', where="login = '%s'" % user)
if len(userfromdb) == 0:
        print 'Votre utilisateur n\'a pas été autorisé à avoir un site.'
        print 'Merci de contacter l\'administrateur.'
        sys.exit()
 
id_user = list(userfromdb)[0].id
 
if len(sys.argv) > 1:
default = sys.argv[1]
else:
default = ""
 
while True:
        domain = text('Nom de domaine du site à éditer :', default)
        if re.match(r'^([-a-zA-Z0-9_]+\.)+(fr|eu|cc|com|org|net|info|name|be)$', domain):
                break
default = ""
 
sites = db.query("""SELECT websites.*, domains.name
FROM websites, domains
WHERE websites.id_domains = domains.id
AND domains.name = '%s'
AND websites.id_users = '%s'""" % (domain, id_user))
 
if len(sites) == 0:
print 'Aucun site portant ce domaine n\'existe sous votre nom'
sys.exit()
 
site = list(sites)[0]
 
site_id = site.id
try:
if site.enabled == "yes":
enabled = choices('Voulez-vous Éditer ou Désactiver le site ?', dict(e='edit', d='no'), default='e')
else:
enabled = choices('Voulez-vous Éditer ou Activer le site ?', dict(e='edit', a='yes'), default='e')
except KeyboardInterrupt:
        print
        sys.exit()
 
if enabled == "edit":
config = editor(filling=site.config.encode('utf8')).decode('utf8')
db.update('websites', where='id = $site_id', config=config, vars=locals())
print 'La configuration de %s a été mise à jour.' % domain
else:
db.update('websites', where='id = $site_id', enabled=enabled, vars=locals())
print 'Le site %s a été %s' % (domain, {'yes':'activé', 'no':'désactivé'}[enabled])
 
print 'N\'oubliez pas de relancer Lighttpd pour l\'appliquer'
print 'avec restart-lighttpd.'