# -*- coding: utf-8 -*-
import re
import os
def GetVhostList(file):
with open(file, 'r') as f:
page = f.read()
reg = r'\n<VirtualHost \*:80>(.*?)</VirtualHost>'
content = re.compile(reg,re.DOTALL)
vhostlist = content.findall(page)
return vhostlist
def GetDocumentRoot(vhost):
reg_doc = r'\n\s+DocumentRoot (.*?)\n'
content = re.compile(reg_doc,re.DOTALL)
doc = content.findall(vhost)[0].strip()
return doc
def GetServerName(vhost):
reg_servername = r'\n\s+ServerName (.*?)\n'
content = re.compile(reg_servername,re.DOTALL)
servername = content.findall(vhost)[0].strip()
return servername
def GetServerAlias(vhost):
serveralias_list = []
# reg_serveralias = r'\n\s+ServerAlias\s(.*?)\.com'
reg_serveralias = r'\n\s+ServerAlias (.*?)\n'
content = re.compile(reg_serveralias,re.DOTALL)
serveralias = re.findall(content,vhost)
serveralias_list.append(serveralias)
return serveralias_list
def GetVhostKey(vhostlist):
vhostkey_list = []
for str_vhost in vhostlist:
dit = {'DocumentRoot': GetDocumentRoot(str_vhost), 'ServerName': GetServerName(str_vhost),'ServerAlias': GetServerAlias(str_vhost)}
vhostkey_list.append(dit)
return vhostkey_list
def GetServernameDoc(vhostkey_list):
server_document_list = []
for servername in vhostkey_list:
dit_server = {'DocumentRoot': servername['DocumentRoot'],'Server': servername['ServerName']}
server_document_list.append(dit_server)
if servername['ServerAlias']:
for serveralias in servername['ServerAlias']:
dit_serveralias = {'DocumentRoot': servername['DocumentRoot'],'Server': serveralias}
server_document_list.append(dit_serveralias)
return server_document_list
#def split_list_dit(mylist):
# list_first = []
# for l in mylist:
# if l['Server'].count('.') == 2:
# dit = {'DomainName': l['Server'].split('.',1)[0], 'Domain': l['Server'].split('.',1)[1], 'DocumentRoot': l['DocumentRoot']}
# list_first.append(dit)
# if l['Server'].count('.') == 1:
# dit = {'DomainName': '','Domain': l['Server'],'DocumentRoot': l['DocumentRoot']}
# list_first.append(dit)
# return list_first
def main():
file = "/root/httpd.conf"
mylist = GetVhostList(file)
myvhostkey = GetVhostKey(mylist)
print myvhostkey
# server_list = GetServernameDoc(myvhostkey)
# split_server_list = split_list_dit(server_list)
# sort_domain = sorted(split_server_list, key=lambda l: l['Domain'])
# for l in sort_domain:
# print l['DomainName'] + '.' + l['Domain'],l['DocumentRoot']
# print l['DocumentRoot']
if __name__ == "__main__":
main()