Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:58:23

0001 #!/usr/bin/env python
0002 
0003 import argparse
0004 import logging
0005 
0006 import os
0007 import glob
0008 import string
0009 
0010 
0011 def get_files(source):
0012     sources = []
0013     for name in glob.glob(source):
0014         sources.append(name)
0015     return sources
0016 
0017 # multi-line-mode(indented)
0018 # multi-line-mode(regexp) multi-line-prefix("[0-9]{4}\.[0-9]{2}\.[0-9]{2}\.") flags(no-parse)
0019 def get_file_template(format_mult_lines):
0020     if format_mult_lines == 'regexp':
0021         format_mult_lines = 'multi-line-mode(regexp) multi-line-prefix("[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}") flags(no-parse)'
0022     else:
0023         format_mult_lines = "multi-line-mode(indented)"
0024     
0025     template = """source s_${filename} {
0026     file("$source" %s);
0027 };
0028 destination d_${filename} {
0029     file(
0030         "${destination}"
0031         template("$${ISODATE} ${flag} ${filename} $${HOST} $$(indent-multi-line $${MESSAGE}\\n"));
0032 };
0033 log { source(s_${filename}); destination(d_${filename}); };
0034 
0035 """ % format_mult_lines
0036     return string.Template(template)
0037 
0038 
0039 def get_pipe_template(format_mult_lines):
0040     if format_mult_lines == 'regexp':
0041         format_mult_lines = 'multi-line-mode(regexp) multi-line-prefix("[0-9]{4}\\-[0-9]{2}\\-[0-9]{2}") flags(no-parse)'
0042     else:
0043         format_mult_lines = "multi-line-mode(indented)"
0044 
0045     template = """source s_${filename} {
0046     file("$source" %s);
0047 };
0048 destination d_${filename} {
0049     pipe(
0050         "${destination}"
0051         template("$${ISODATE} ${flag} ${filename} $${HOST} $$(indent-multi-line $${MESSAGE}\\n"));
0052 };
0053 log { source(s_${filename}); destination(d_${filename}); };
0054 
0055 """ % format_mult_lines
0056     return string.Template(template)
0057 
0058 
0059 def generate_source_dest_pair(source, destination, flag, pipe=False, format_mult_lines='indent'):
0060     filename = os.path.basename(source).replace(".log", "").replace("_log", "")
0061     if pipe:
0062         template = get_pipe_template(format_mult_lines)
0063     else:
0064         template = get_file_template(format_mult_lines)
0065     ret = template.substitute(filename=filename, source=source, destination=destination, flag=flag)
0066     return ret
0067 
0068 
0069 def generate_config(config_file, source, destination, flag, pipe=False, format_mult_lines='indent'):
0070     with open(config_file, 'w') as fd:
0071         sources = get_files(source)
0072         for src in sources:
0073             src_dest = generate_source_dest_pair(src, destination, flag, pipe, format_mult_lines=format_mult_lines)
0074             fd.write(src_dest)
0075 
0076 
0077 logging.getLogger().setLevel(logging.INFO)
0078 parser = argparse.ArgumentParser(description="Configure syslog-ng")
0079 parser.add_argument('-s', '--source', default=None, help='Source files')
0080 parser.add_argument('-d', '--destination', default=None, help='Destination file name')
0081 parser.add_argument('-f', '--flag', default=None, help='Flag name')
0082 parser.add_argument('-c', '--config', default=None, help='Configuration file to be generated')
0083 parser.add_argument('-p', "--pipe", action="store_true", default=False, help='Use pipe')
0084 parser.add_argument('-m', "--mulLineFormat", default='indent', help='indent or regext')
0085 args = parser.parse_args()
0086 
0087 
0088 if __name__ == '__main__':
0089     generate_config(args.config, args.source, args.destination, args.flag, args.pipe)