-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathutils.py
48 lines (41 loc) · 1.96 KB
/
utils.py
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
"""
Copyright (C) 2013 - Aybuke Ozdemir <[email protected]>
This file is part of python-haproxy-tools.
python-haproxy-tools is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
python-haproxy-tools is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
"""
SECTIONS = ['global','defaults', 'listen', 'frontend', 'backend']
GLOBAL_PARAMS = ['ca-base', 'chroot','crt-base', 'daemon', 'gid',
'group', 'log', 'log-send-hostname', 'nbproc', 'pidfile', 'uid',
'ulimit-n', 'user', 'stats', 'node', 'description', 'unix-bind',
'maxconn', 'maxconnrate', 'maxcomprate', 'maxcompcpuusage', 'maxpipes',
'maxsslconn', 'noepoll', 'nokqueue', 'nopol', 'nosplice', 'spread-checks',
'tune.bufsize', 'tune.chksize', 'tune.comp.maxlevel', 'tune.http.cookielen',
'tune.http.maxhdr', 'tune.maxaccept', 'tune.maxpollevents', 'tune.maxrewrite',
'tune.pipesize', 'tune.rcvbuf.client', 'tune.rcvbuf.server', 'tune.sndbuf.client',
'tune.sndbuf.server', 'tune.ssl.cachesize', 'tune.ssl.lifetime', 'tune.ssl.maxrecord',
'tune.zlib.memlevel', 'tune.zlib.windowsize', 'debug', 'quiet']
import subprocess
def isValid(config):
tmp_file = '/tmp/haproxy.cfg.tmp'
f = open(tmp_file, 'w')
f.write(config)
f.close()
p = subprocess.Popen(["/usr/sbin/haproxy", "-c", "-f", tmp_file], stdout=subprocess.PIPE)
out, err = p.communicate()
output = out.strip()
return_code = p.returncode
if return_code == 0:
print "valid"
elif return_code == 1:
print "invalid"
else:
print "unknow return code"