Add routines to open and interrogate e-smith db
This commit is contained in:
parent
5f737912e4
commit
6de00553c2
@ -36,6 +36,9 @@ formatted_yesterday = yesterday.strftime("%Y-%m-%d")
|
|||||||
html_page_dir = data_file_path+"/opt/mailstats/html/"
|
html_page_dir = data_file_path+"/opt/mailstats/html/"
|
||||||
template_dir = data_file_path+"/opt/mailstats/templates/"
|
template_dir = data_file_path+"/opt/mailstats/templates/"
|
||||||
logs_dir = data_file_path+"/opt/mailstats/logs/"
|
logs_dir = data_file_path+"/opt/mailstats/logs/"
|
||||||
|
#E-Smith Config DBs
|
||||||
|
#db_dir = "/home/e-smith/db"
|
||||||
|
db_dir = "/home/brianr/SME11Build/GITFiles/smecontribs/smeserver-mailstats/"
|
||||||
|
|
||||||
# Column numbering
|
# Column numbering
|
||||||
Hour = 0
|
Hour = 0
|
||||||
@ -57,6 +60,72 @@ TOTALS = 15
|
|||||||
PERCENT = 16
|
PERCENT = 16
|
||||||
ColTotals = 24
|
ColTotals = 24
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Routines to access the E-Smith dbs
|
||||||
|
def parse_entity_line(line):
|
||||||
|
"""
|
||||||
|
Parses a single line of key-value pairs.
|
||||||
|
|
||||||
|
:param line: Single line string to be parsed
|
||||||
|
:return: Dictionary with keys and values
|
||||||
|
"""
|
||||||
|
parts = line.split('|')
|
||||||
|
# First part contains the entity name and type in the format 'entity_name=type'
|
||||||
|
entity_part = parts.pop(0)
|
||||||
|
entity_name, entity_type = entity_part.split('=')
|
||||||
|
|
||||||
|
entity_dict = {'type': entity_type}
|
||||||
|
|
||||||
|
for i in range(0, len(parts)-1, 2):
|
||||||
|
key = parts[i]
|
||||||
|
value = parts[i+1]
|
||||||
|
entity_dict[key] = value
|
||||||
|
|
||||||
|
return entity_name, entity_dict
|
||||||
|
|
||||||
|
def parse_config(config_string):
|
||||||
|
"""
|
||||||
|
Parses a multi-line configuration string where each line is an entity with key-value pairs.
|
||||||
|
|
||||||
|
:param config_string: Multi-line string to be parsed
|
||||||
|
:return: Dictionary of dictionaries with entity names as keys
|
||||||
|
"""
|
||||||
|
config_dict = {}
|
||||||
|
|
||||||
|
lines = config_string.strip().split('\n')
|
||||||
|
for line in lines:
|
||||||
|
line = line.strip()
|
||||||
|
if line.startswith('#'): # Skip lines that start with '#'
|
||||||
|
continue
|
||||||
|
entity_name, entity_dict = parse_entity_line(line)
|
||||||
|
config_dict[entity_name] = entity_dict
|
||||||
|
|
||||||
|
return config_dict
|
||||||
|
|
||||||
|
def read_config_file(file_path):
|
||||||
|
"""
|
||||||
|
Reads a configuration file and parses its contents.
|
||||||
|
|
||||||
|
:param file_path: Path to the configuration file
|
||||||
|
:return: Parsed configuration dictionary
|
||||||
|
"""
|
||||||
|
with open(file_path, 'r') as file:
|
||||||
|
config_string = file.read()
|
||||||
|
return parse_config(config_string)
|
||||||
|
|
||||||
|
def get_value(config_dict, entity, key):
|
||||||
|
"""
|
||||||
|
Retrieves the value corresponding to the given key from a specific entity.
|
||||||
|
|
||||||
|
:param config_dict: Dictionary of dictionaries with parsed config
|
||||||
|
:param entity: Entity from which to retrieve the key's value
|
||||||
|
:param key: Key whose value needs to be retrieved
|
||||||
|
:return: Value corresponding to the key, or None if the entity or key does not exist
|
||||||
|
"""
|
||||||
|
return config_dict.get(entity, {}).get(key)
|
||||||
|
|
||||||
|
|
||||||
def is_private_ip(ip):
|
def is_private_ip(ip):
|
||||||
try:
|
try:
|
||||||
# Convert string to an IPv4Address object
|
# Convert string to an IPv4Address object
|
||||||
@ -393,11 +462,12 @@ if __name__ == "__main__":
|
|||||||
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M")
|
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M")
|
||||||
|
|
||||||
#From SMEServer DB
|
#From SMEServer DB
|
||||||
DomainName = 'bjsystems.co.uk' # $cdb->get('DomainName')->value;
|
ConfigDB = read_config_file(db_dir+"configuration")
|
||||||
RHSenabled = True #( $cdb->get('qpsmtpd')->prop('RHSBL') eq 'enabled' );
|
DomainName = get_value(ConfigDB, "DomainName", "type") #'bjsystems.co.uk' # $cdb->get('DomainName')->value;
|
||||||
DNSenabled = True #( $cdb->get('qpsmtpd')->prop('DNSBL') eq 'enabled' );
|
RHSenabled = get_value(ConfigDB, "qpsmtpd", "RHSBL") == "enabled" #True #( $cdb->get('qpsmtpd')->prop('RHSBL') eq 'enabled' );
|
||||||
SARejectLevel = 12 #$cdb->get('spamassassin')->prop('RejectLevel');
|
DNSenabled = get_value(ConfigDB, "qpsmtpd", "DNSBL") == "enabled" #True #( $cdb->get('qpsmtpd')->prop('DNSBL') eq 'enabled' );
|
||||||
SATagLevel = 4 #$cdb->get('spamassassin')->prop('TagLevel');
|
SARejectLevel = int(get_value(ConfigDB, "spamassassin", "RejectLevel")) #12 #$cdb->get('spamassassin')->prop('RejectLevel');
|
||||||
|
SATagLevel = int(get_value(ConfigDB, "spamassassin", "TagLevel")) #4 #$cdb->get('spamassassin')->prop('TagLevel');
|
||||||
|
|
||||||
FetchmailIP = '127.0.0.200'; #Apparent Ip address of fetchmail deliveries
|
FetchmailIP = '127.0.0.200'; #Apparent Ip address of fetchmail deliveries
|
||||||
WebmailIP = '127.0.0.1'; #Apparent Ip of Webmail sender
|
WebmailIP = '127.0.0.1'; #Apparent Ip of Webmail sender
|
||||||
|
Loading…
Reference in New Issue
Block a user