# -*- coding: utf-8 -*- import re from functions.utility import ( subprocess_run ) from functions.constants import ( VM_HTTPD_CONF_PATH, VM_HOME, VM_VAR ) def get_vhostconfig(ctrid): """ httpd.confの設定状況を返す Returns ------- dict { "servername": "aaa", { "serveralias": ["bbb", ...], "user": "ccc", "serveradmin": "ddd", "documentroot": "eee", "usage": "fff", "customlog": "ggg", "www_alias": "hhh", "disabled": False }, ... } """ vhostinfo = {} # 設定ファイルの読み込み # vm_httpd_conf = VM_HTTPD_CONF_PATH % ctrid vm_httpd_conf = '/etc/httpd/conf/httpd.conf' try: httpd_conf = open(vm_httpd_conf, 'r', encoding='utf-8') httpd_conf_data = httpd_conf.readlines() httpd_conf.close() except Exception as e: print(e) return vhostinfo data = list(filter(lambda i: re.search('^((?!#).)*$', i), httpd_conf_data)) ID = 0 enable = False result = {} vhost = [] while len(data) > 0: try: out = data.pop(0) # start of VirtualHost if "', '') vhost.append(ip) vhost.append(port) enable = True continue if "" in out: result[ID] = vhost ID += 1 enable = False vhost = [] continue if enable: vhost.append(out) continue except Exception: pass for i in result: try: servername = "" serveradmin = "" documentroot = "" customlog = "" errorlog = "" serveralias = [] user = "" www_alias = False disabled = False for line in result[i]: if "ServerName" in line: servername = line.split()[1] continue if "ServerAdmin" in line: serveradmin = line.split()[1] continue if "DocumentRoot" in line: documentroot = line.split()[1] documentroot = documentroot.replace('"', '') continue if "CustomLog" in line: customlog = line.split()[1] customlog = customlog.replace('"', '') if "ErrorLog" in line: errorlog = line.split()[1] errorlog = errorlog.replace('"', '') if "ServerAlias" in line: for n in line.split()[1:]: if n.startswith("www."): www_alias = True continue serveralias.append(n) continue if "SuexecUserGroup" in line: user = line.split()[1] continue if "RewriteRule ^/ - [F,L]" in line: disabled = True continue if servername != "": vhostinfo.update({ servername: dict( serveralias=serveralias, user=user, serveradmin=serveradmin, documentroot=documentroot, customlog=customlog, errorlog=errorlog, www_alias=www_alias, disabled=disabled ) }) except Exception: pass return vhostinfo