Projet

Général

Profil

Télécharger (2,83 ko) Statistiques
| Branche: | Révision:

root / admin / apache_form.ptl @ b77557ca

1
import os
2

    
3
from quixote.publish import get_response
4
from quixote.form import Form, StringWidget, PasswordWidget, \
5
     RadiobuttonsWidget, SingleSelectWidget, MultipleSelectWidget, \
6
     CheckboxWidget, FileWidget
7

    
8
class ApacheForm(Form):
9
	def __init__(self, server_name = None):
10
		Form.__init__(self)
11
		#get_response().set_charset('utf-8')
12
		self.server_name = server_name
13

    
14
	def handle(self):
15
		if (self.server_name is None):
16
			self.add_string(name = 'proxy_name', title = 'Nom du serveur proxy', required = True)
17
		else:
18
			self.add_string(name = 'proxy_name', title = 'Nom du serveur proxy', value = self.server_name, required = True)
19
		self.add_string(name = 'proxy_ip', title = 'Adresse IP du serveur proxy', required = True)
20
		self.add_string(name = 'proxy_port', title = 'Port du serveur proxy', value = '80', required = True)
21
		#self.add_string(name = 'proxy_admin', title = 'Administrateur du serveur proxy', required = False)
22
		self.add_string(name = 'site_address', title = 'Adresse du site', value = 'http://', required = True)
23
		self.add_string(name = 'proxy_directory', title = 'R?pertoire du proxy', value = '/', required = True)
24
		self.add_submit('submit')
25
		if not self.is_submitted() or self.has_errors():
26
			return self.render()
27
		return self.success()
28
		
29
	def success [html] (self):
30
		values = {}
31
		#get_response().set_charset('utf-8')
32
		for widget in self.get_all_widgets():
33
			values[widget.get_name()] = widget.parse()
34
			
35
			#"""<p>name : """
36
			#name
37
			#"""</p><p>value : """
38
			#repr(value)
39
			#"""</p>"""
40

    
41
		try:
42
			self.write_apache_conf(values)
43
			#self.write_apache_conf(values['proxy_name'],
44
			#						values['proxy_ip'],
45
			#						values['proxy_port'],
46
			#						values['site_address'],
47
			#						values['proxy_directory'])
48
		except IOError:
49
			"""Failed writing apache configuration"""
50
		else:
51
			"""Apache configuration written"""
52

    
53
	#def write_apache_conf(self, proxy_name, proxy_ip, proxy_port, site_address, proxy_directory):
54
	def write_apache_conf(self, values):
55
		"""Caller must catch IOError exceptions"""
56
		#print ip + " - " + name + " - " + directory
57
		vhost_dir = '/var/lib/larpe'
58
		conf_dir = '%s/%s' % (vhost_dir, values['proxy_name'])
59
		if not os.path.exists(conf_dir):
60
			os.makedirs(conf_dir, mode = 0755)
61
		if not os.path.isdir(conf_dir):
62
			raise IOError()
63
		conf_file = open('%s/%s' % (conf_dir, 'apache2-vhost.conf'), 'w')
64
		
65
		try:
66
			conf_file.write("""NameVirtualHost %(proxy_ip)s:%(proxy_port)s
67
<VirtualHost %(proxy_ip)s:%(proxy_port)s>
68

    
69
	ServerName %(proxy_name)s
70
	# ServerAdmin admin@test.org
71

    
72
	# LoadFile		/usr/lib/libxml2.so.2
73
	SetOutputFilter	proxy-html
74

    
75
	<Location %(proxy_directory)s>
76
		ProxyPass			%(site_address)s
77
		ProxyPassReverse	%(site_address)s
78
		ProxyHTMLURLMap		/		%(proxy_directory)s
79
		ProxyHTMLURLMap		%(site_address)s		%(proxy_directory)s
80
	</Location>
81
  
82
</VirtualHost>
83
""" % values)
84

    
85
		finally:
86
			conf_file.close()
87
			
88
			
(4-4/10)