/
opt
/
dedrads
/
/opt/dedrads
mkdir
upload
Name
Size
Mode
Actions
account_review/
-
0555
rm
check_software_mods/
-
0555
rm
cms_tools/
-
0555
rm
etc/
-
0555
rm
extras/
-
0555
rm
mailparse/
-
0555
rm
mysql/
-
0555
rm
nlp_scripts/
-
0555
rm
oldrads/
-
0555
rm
perl/
-
0555
rm
provision/
-
0555
rm
python/
-
0555
rm
suspended/
-
0555
rm
__pycache__/
-
0555
rm
account-review
799
0555
edit
dl
rm
allfw
6259
0555
edit
dl
rm
alp.py
16553
0555
edit
dl
rm
autossl_sync
6267
0555
edit
dl
rm
check_apache
9205
0555
edit
dl
rm
check_bandwidth
4546
0555
edit
dl
rm
check_boxtrapper
1684
0555
edit
dl
rm
check_cpu
12212
0555
edit
dl
rm
check_crons
1827
0555
edit
dl
rm
check_dcpumon
1973
0555
edit
dl
rm
check_dns
1827
0555
edit
dl
rm
check_domlogs
61
0555
edit
dl
rm
check_exim
3731
0555
edit
dl
rm
check_hacks
22604
0555
edit
dl
rm
check_imap
5249
0555
edit
dl
rm
check_io
6635
0555
edit
dl
rm
check_max_children
16341
0555
edit
dl
rm
check_mem
1660
0555
edit
dl
rm
check_misc
1510
0555
edit
dl
rm
check_pacct
5201
0555
edit
dl
rm
check_php
4344
0555
edit
dl
rm
check_pop3
2295
0555
edit
dl
rm
check_prov.py
4714
0555
edit
dl
rm
check_server
696
0555
edit
dl
rm
check_size
490
0555
edit
dl
rm
check_software
9849
0555
edit
dl
rm
check_spamd
2426
0555
edit
dl
rm
check_traffic
1933
0555
edit
dl
rm
check_user
1887
0555
edit
dl
rm
clean_exim.py
6390
0555
edit
dl
rm
clusterfix
5343
0555
edit
dl
rm
cmspass.py
3970
0555
edit
dl
rm
cms_check.py
9825
0555
edit
dl
rm
cms_counter.py
36734
0555
edit
dl
rm
cms_creds
713
0555
edit
dl
rm
cms_dumpdb
4485
0555
edit
dl
rm
cms_pw
1416
0555
edit
dl
rm
cpanel-api
7040
0555
edit
dl
rm
cpanel_postgres_manager.py
29004
0555
edit
dl
rm
cpmerge
4631
0555
edit
dl
rm
cpumon
2195
0555
edit
dl
rm
dcpumon.pl
1239
0555
edit
dl
rm
dedcheck
18127
0555
edit
dl
rm
dns-sync
14386
0555
edit
dl
rm
docroot.py
4425
0555
edit
dl
rm
du-tree
7450
0555
edit
dl
rm
envinfo.py
6633
0555
edit
dl
rm
exclude_rbl.py
5249
0555
edit
dl
rm
extract-vhost
2691
0555
edit
dl
rm
filescan
3566
0555
edit
dl
rm
find_warez
1460
0555
edit
dl
rm
first_setup.py
19120
0555
edit
dl
rm
fixwpcron.py
4822
0555
edit
dl
rm
fix_dns_cluster
353
0555
edit
dl
rm
goaccess
1217720
0555
edit
dl
rm
hostsfilemods
4467
0555
edit
dl
rm
imap_io
2323
0555
edit
dl
rm
innodb_converter.py
9343
0555
edit
dl
rm
killall911
530
0555
edit
dl
rm
killdns
941
0555
edit
dl
rm
lastcommcache.sh
1374
0555
edit
dl
rm
legal_lock_down.sh
7450
0555
edit
dl
rm
lil-cpanel
52002
0555
edit
dl
rm
listacct
4575
0555
edit
dl
rm
mailscan
4544
0555
edit
dl
rm
mail_sources.py
7407
0555
edit
dl
rm
megaclisas-status
38664
0555
edit
dl
rm
migrate2central.sh
14418
0555
edit
dl
rm
modify-account
40631
0555
edit
dl
rm
modsec_disable.py
11461
0555
edit
dl
rm
monarxctl
8912
0555
edit
dl
rm
msp.pl
27714
0555
edit
dl
rm
mysql_dstat
474
0555
edit
dl
rm
mysql_selector.py
73102
0555
edit
dl
rm
nlp
4582
0555
edit
dl
rm
procscrape
1863
0555
edit
dl
rm
quarantine
11083
0555
edit
dl
rm
radsfunctions.sh
863
0555
edit
dl
rm
recent-cp
16148
0555
edit
dl
rm
remote_dump
18347
0555
edit
dl
rm
reset_cpanel
3205
0555
edit
dl
rm
server-load
2192
0555
edit
dl
rm
show-conns
20105
0555
edit
dl
rm
show-conns-adv.py
54667
0555
edit
dl
rm
sparta.py
382498
0555
edit
dl
rm
sqltop
27129
0555
edit
dl
rm
telcheck
2411
0555
edit
dl
rm
temprootreset
186
0555
edit
dl
rm
unsuspend_user
1307
0555
edit
dl
rm
unsusprunner.sh
1840
0555
edit
dl
rm
updatednsadmin
526
0555
edit
dl
rm
update_spf
14972
0555
edit
dl
rm
upgrade-check
9216
0555
edit
dl
rm
vhost_data.py
6221
0555
edit
dl
rm
wp-xray.sh
85816
0555
edit
dl
rm
Edit:
/opt/dedrads/vhost_data.py
(6221B)
#! /usr/lib/rads/venv/bin/python3 '''Gather important VirtualHost information.''' import re import os import json import logging from argparse import ArgumentParser import envinfo LOGGER = logging.getLogger(__name__) __author__ = "Daniel K" __email__ = "danielk@inmotionhosting.com" def get_vhost_list(conf=None): '''Collect necessary information from VirtualHost entries.''' if conf is None: conf = envinfo.get_data()['apache_conf'] vhost_list = [] vhost_rx = re.compile( r'<VirtualHost (?P<ip>[0-9.]+):(?P<port>[0-9]+)( ([0-9.]+):([0-9]+))*>' ) if os.path.exists(conf): with open(conf, encoding='utf-8') as file_handle: vhost_data = {} vhost_data['hostnames'] = [] try: for line in file_handle: vhost_match = vhost_rx.search(line) if "#" not in line: if "/VirtualHost" in line: if 'ip' in vhost_data: if 'port' in vhost_data: vhost_list.append(vhost_data) vhost_data = {} vhost_data['hostnames'] = [] elif vhost_match is not None: vhost_data['ip'] = vhost_match.group('ip') vhost_data['port'] = vhost_match.group('port') elif "ServerName" in line: vhost_data['hostnames'].append(line.split()[1]) elif "ServerAlias" in line: line = line.strip() for host in line.split(" ", 1)[1].split(): vhost_data['hostnames'].append(host) elif "Include" in line: if 'includes' not in vhost_data: vhost_data['includes'] = [] vhost_data['includes'].append(line.split()[1]) elif "SSLCertificateFile" in line: vhost_data['ssl'] = line.split()[1] elif "SSLCertificateKeyFile" in line: vhost_data['key'] = line.split()[1] elif "SSLCertificateChainFile" in line: vhost_data['ca'] = line.split()[1] elif "DocumentRoot" in line: vhost_data['docroot'] = line.split()[1] except OSError: LOGGER.error("Error reading file") return None return vhost_list def search_vhost_list(vhost_list, host=None, ip_address=None, port=None): '''Search vhost_list for first matching entry for given information''' if vhost_list is None: vhost_list = get_vhost_list() working_list = [] for vhost_data in vhost_list: if (ip_address is None) or (ip_address in vhost_data['ip']): if (port is None) or (port in vhost_data['port']): working_list.append(vhost_data) if len(working_list) == 0: for vhost_data in vhost_list: if (ip_address is None) or (ip_address in vhost_data['ip']): if '*' in vhost_data['port']: working_list.append(vhost_data) if len(working_list) == 0: return vhost_list[1] for vhost_data in working_list: if host in vhost_data['hostnames']: return vhost_data return None def parse_args(): '''Parse command line aruments''' parser = ArgumentParser(description=__doc__) output_parser_group = parser.add_argument_group("Output options") output_group = output_parser_group.add_mutually_exclusive_group() output_group.add_argument( "-d", "--documentroot", action='store_true', help="Output only the document root.", ) output_group.add_argument( "-j", "--json", action='store_true', help="Output only the document root.", ) parser.add_argument( '-c', '--config', type=str, default=None, help="Location of a custom Apache configuration.", ) search_group = parser.add_argument_group("Search options") search_group.add_argument( "-i", "--ip", type=str, default=None, help="IP to search." ) port_group = search_group.add_mutually_exclusive_group() port_group.add_argument( "-p", "--port", type=str, default=None, help="Port to search." ) port_group.add_argument( "-s", "--standardports", type=str, default=None, help="Try port 443 first, and if no entry, try port 80.", ) search_group.add_argument("hostname", type=str, help="Hostname to search.") args = parser.parse_args() if args.documentroot: output = "docroot" elif args.json: output = "json" else: output = "standard" return output, args.ip, args.port, args.hostname, args.config def main(): '''Main function for script''' (output, ip_address, port, host, conf) = parse_args() vhost_list = get_vhost_list(conf) vhost_data = search_vhost_list(vhost_list, host, ip_address, port) if vhost_data is None: print("No results found") elif output == "docroot": print(vhost_data['docroot']) elif output == "json": print( json.dumps( vhost_data, sort_keys=True, indent=4, separators=(',', ': ') ) ) else: print("Hostname: %s" % host) print("IP/port: {}:{}".format(vhost_data['ip'], vhost_data['port'])) print("Document Root: %s" % vhost_data['docroot']) if 'ssl' in vhost_data: print("SSL Certificate: %s" % vhost_data['ssl']) print("SSL Private Key: %s" % vhost_data['key']) if 'ca' in vhost_data: print("SSL CA Bundle: %s" % vhost_data['ca']) if 'includes' in vhost_data: for path in vhost_data['includes']: print("Include: %s" % path) if __name__ == "__main__": main()
Save
cmd:
run