X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?p=ossec-hids.git;a=blobdiff_plain;f=debian%2Fossec-hids%2Fusr%2Fshare%2Fdoc%2Fossec-hids%2Fcontrib%2Fossec-pcre2-config.pl;fp=debian%2Fossec-hids%2Fusr%2Fshare%2Fdoc%2Fossec-hids%2Fcontrib%2Fossec-pcre2-config.pl;h=39bf193835091d03369b0fc13655a2b25c5677b5;hp=0000000000000000000000000000000000000000;hb=3f728675941dc69d4e544d3a880a56240a6e394a;hpb=927951d1c1ad45ba9e7325f07d996154a91c911b diff --git a/debian/ossec-hids/usr/share/doc/ossec-hids/contrib/ossec-pcre2-config.pl b/debian/ossec-hids/usr/share/doc/ossec-hids/contrib/ossec-pcre2-config.pl new file mode 100644 index 0000000..39bf193 --- /dev/null +++ b/debian/ossec-hids/usr/share/doc/ossec-hids/contrib/ossec-pcre2-config.pl @@ -0,0 +1,78 @@ +#! /usr/bin/perl -w + +use strict; +use warnings; + +use Cwd qw/getcwd realpath/; +use File::Basename; +use File::Find; +use File::Temp qw/tempfile/; + +my $ossec_regex_convert = realpath(dirname($0) . '/../src/ossec-regex-convert'); + +sub get_install_dir () { + open(FILE, '<', 'src/LOCATION') || die("Cannot find INSTALL DIR"); + my $dir = '/var/ossec'; + + while () { + if (m{^DIR\s*=\s*(["']?)(.*)\g1$}p) { + $dir = $2; + last; + } + } + + return $dir; +} + +my $old_tags = join('|', split(/\n/m, `$ossec_regex_convert -t`)); + +sub convert_file ($) { + my $filename = shift(); + print("Converting ${filename}...\n"); + + unless (open(SRC, '<', $filename)) { + print(STDERR "Cannot read '${filename}'\n"); + return; + } + my ($tmp_fh, $tmp_filename) = tempfile('tmp-ossec-config-convert.XXXXX', DIR => '/tmp', SUFFIX => '.xml'); + + while () { + if (m{^(\s*)<\s*($old_tags)([^>]*)>(.*?)<\s*/\s*\g2\s*>}pg) { + my ($indent, $old_type, $options, $old_regex) = ($1, $2, $3, $4); + $old_regex =~ s/'/'\\''/g; + my $out = qx/$ossec_regex_convert -b -- $old_type '$old_regex'/; + chomp($out); + my ($type, $regex) = split(/ /, $out, 2); + if ($old_regex) { + print($tmp_fh "$indent<$type$options>$regex\n"); + } else { + print($tmp_fh "$indent<$type$options>\n"); + } + } else { + print($tmp_fh $_); + } + } + + close(SRC); + close($tmp_fh); + + rename($tmp_filename, $filename); +} + +sub wanted() { + my $filename = $File::Find::name; + + if ($filename =~ m/[.]xml$/) { + convert_file($filename); + } +} + +my $INSTALL_DIR = get_install_dir(); +if (! -d ${INSTALL_DIR}) { + print(STDERR "Please install OSSEC first\n"); + exit(1); +} + +find({wanted => \&wanted, no_chdir => 1}, $INSTALL_DIR); + +exit(0);