###############################
# templates
###############################

@!@
if configRegistry.get('iku/avmail/l10n') and configRegistry.get('iku/avmail/l10n') == 'de':
	templatedir = '/etc/amavis/iku_DE'  
else:
	templatedir = '/etc/amavis/iku_EN'  
print '$notify_virus_sender_templ = read_text(\'%s/template-virus-sender.txt\');' % templatedir
print '$notify_virus_admin_templ = read_text(\'%s/template-virus-admin.txt\');' % templatedir
print '$notify_virus_recips_templ = read_text(\'%s/template-virus-recipient.txt\');' % templatedir
@!@

###############################
# virus destination
###############################

$hdr_encoding = 'iso-8859-1';  # header field bodies charset
$bdy_encoding = 'iso-8859-1';  # notification body text charset
$hdr_encoding_qb = 'Q';        # quoted-printable (Q or B)

#$defang_all = 1;
#$defang_maps_by_ccat{+CC_VIRUS} = [ 'altermime' ];
#@altermime_args_disclaimer = qw( --verbose
#                                 --disclaimer-html=/etc/amavis/disclaimer.txt );
#$defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ];
#$altermime = '/usr/bin/altermime';
#@altermime_args_defang = qw(--verbose --removeall);

########## mail/postfix/mynetworks


###############################
# notification
###############################

# $X_HEADER_TAG  = 'X-Virus-Scanned';               # after-default
# $X_HEADER_LINE = "$myproduct_name at $mydomain";  # after-default
# $undecipherable_subject_tag = '***UNCHECKED*** ';

#notify_recipient bool
@!@
if baseConfig.has_key('mail/antivir/virus_admin') and baseConfig['mail/antivir/virus_admin']:
	print "$virus_admin = '%s';" % baseConfig['mail/antivir/virus_admin']
else:
	print '$virus_admin = undef;'

trueSet=('yes', 'true', '1', 'enable', 'enabled', 'on')

key = 'mail/antivir/quarantine_to'
if baseConfig.has_key(key) and baseConfig[key]:
	if baseConfig[key] != 'virus-quarantine':
		to = baseConfig['mail/antivir/quarantine_to']
		if to.find('@') == -1:
			to += '@'
		print "$virus_quarantine_to  = '%s';\t# forward to MTA for delivery" % to
	else:
		print "#$virus_quarantine_to = 'virus-quarantine';    # traditional local quarantine"
else:
	print "$virus_quarantine_to  = undef; # no quarantine"

key='iku/avmail/notify_recipient'
if baseConfig.has_key(key) and baseConfig[key]:
	configresult=configRegistry.get(key)
	if configresult.lower() in trueSet:
		print '$warnvirusrecip = 1;'
	else:
		print '$warnvirusrecip = 0;'
else:
	print '$warnvirusrecip = 0;'

notify_offsite='0'
notify_recipient='0'
key='iku/avmail/notify_offsitesender'
if baseConfig.has_key(key) and baseConfig[key]:
	notify_offsite=configRegistry.get(key).lower()
key='iku/avmail/notify_sender'
if baseConfig.has_key(key) and baseConfig[key]:
	notify_sender=configRegistry.get(key).lower()
if (notify_offsite in trueSet) and (notify_sender in trueSet):
	print '$final_virus_destiny  = D_BOUNCE;'
else:
	print '$final_virus_destiny  = D_DISCARD;'

if configRegistry.get('iku/avmail/namefrom_notify_sender'):
	print '$hdrfrom_notify_sender = \'%s\';' % configRegistry.get('iku/avmail/namefrom_notify_sender')

if configRegistry.get('iku/avmail/mailfrom_notify_admin'):
	print '$mailfrom_notify_admin = \'%s\';' % configRegistry.get('iku/avmail/mailfrom_notify_admin')
	if configRegistry.get('iku/avmail/namefrom_notify_admin'):
		print '$hdrfrom_notify_admin = \'%s <%s>\';' % (configRegistry.get('iku/avmail/namefrom_notify_admin'), configRegistry.get('iku/avmail/mailfrom_notify_admin'))
	else:
		print '$hdrfrom_notify_admin = \'%s\';' % configRegistry.get('iku/avmail/mailfrom_notify_admin')

if configRegistry.get('iku/avmail/mailfrom_notify_recip'):
	print '$mailfrom_notify_recip = \'%s\';' % configRegistry.get('iku/avmail/mailfrom_notify_recip')
	if configRegistry.get('iku/avmail/namefrom_notify_recip'):
		print '$hdrfrom_notify_recip = \'%s <%s>\';' % (configRegistry.get('iku/avmail/namefrom_notify_recip'), configRegistry.get('iku/avmail/mailfrom_notify_recip'))
	else:
		print '$hdrfrom_notify_recip = \'%s\';' % configRegistry.get('iku/avmail/mailfrom_notify_recip')

if baseConfig.has_key('mail/antivir/scanner') and baseConfig['mail/antivir/scanner'] not in ['', 'none']:
        scanner=baseConfig['mail/antivir/scanner'].split(' ')
        if 'iku-av' in scanner:
		print "$pid = `/usr/lib/iku-av/bin/license-tool -s`;"
		print "@av_scanners = ( @av_scanners,"
		print "['Avira SAVAPI',"
		print "  \&ask_daemon, [\"*\", 'savapi:/var/tmp/.savapi3', $pid],"
		print "  qr/^(200|210)/m,  qr/^(310|420|319)/m,"
		print "  qr/^(?:310|420)[,\s]*(?:.* <<< )?(.+?)(?: ; |$)/m ],"
		print ");"
#!/usr/bin/python
import socket, sys, string
from univention.config_registry import ConfigRegistry

ucr = ConfigRegistry()
ucr.load()


def is_valid_ipv4_address(address):
    try:
        socket.inet_pton(socket.AF_INET, address)
    except AttributeError:  # no inet_pton here, sorry
        try:
            socket.inet_aton(address)
        except socket.error:
            return False
        return address.count('.') == 3
    except socket.error:  # not a valid address
        return False

    return True

def is_valid_ipv6_address(address):
    try:
        socket.inet_pton(socket.AF_INET6, address)
    except socket.error:  # not a valid address
        return False
    return True


def testip(IPMASK):
	IP=IPMASK.split('/')[0]
	IP=IP.replace('[','')
	IP=IP.replace(']','')
	if not (is_valid_ipv4_address(IP) or is_valid_ipv6_address(IP)):
		return False
		
	if len(IPMASK.split('/')) > 1:
		if len(IPMASK.split('/')) == 2:
			MASK=IPMASK.split('/')[1]
			try:
				INTMASK=int(MASK)
				if 0 <= int(MASK) <=128:
					return True
			except:
				return False
		else:
			return False
	else:
		return True

print '@mynetworks = qw( 127.0.0.0/8 [::1] '

if ucr.has_key('iku/avmail/mynetworks'):
	MYNETWORKS=ucr.get('iku/avmail/mynetworks')
	if MYNETWORKS == 'use_postfix_setting':
		if ucr.has_key('mail/postfix/mynetworks'):
			MYNETWORKS=ucr.get('mail/postfix/mynetworks')
	MYNETWORKS=MYNETWORKS.replace(',',' ')
	for IPMASK in MYNETWORKS.split(' '):
		if len(IPMASK) > 0:
			if testip(IPMASK):
				print '%s' % IPMASK
print ');'
@!@
$policy_bank{'MYNETS'} = {  # mail originating from @mynetworks
  originating => 1,  # is true in MYNETS by default, but let's make it explicit
  allow_disclaimers => 1,
@!@
key='iku/avmail/notify_sender'
if baseConfig.has_key(key) and baseConfig[key]:
	configresult=configRegistry.get(key)
	if configresult.lower() in ('yes', 'true', '1', 'enable', 'enabled', 'on'):
		print '  final_virus_destiny      => D_BOUNCE,' 
@!@
};
@disclaimer_options_bysender_maps = ({
    '.' => 'default',
},);


1;  # ensure a defined return
