def get_config(self) -> str:
        config = 'template Host "servertemplate_' + self.__id + '" {\n'

        for template in self.__templates:
            config += '  import "servertemplate_' + template.get_id() + '"\n'

        if None is not self.__ssh_template:
            config += '  import "sshtemplate_' + self.__ssh_template.get_id(
            ) + '"\n'

        if None is not self.__os:
            config += '  import "os_' + self.__os.get_id() + '"\n'

        for manager in self.__package_manager:
            config += '  import "packagemanager_' + manager.get_id() + '"\n'

        config += Checkable.get_config(self)
        config += ValueMapper.parse_var('address', self.__ipv4)
        config += ValueMapper.parse_var('address6', self.__ipv6)
        config += ValueMapper.parse_var('vars.checks', self.__checks)
        config += ValueMapper.parse_var('vars.groups',
                                        self.__groups,
                                        value_prefix='hostgroup_')
        config += PluginDirs.get_config(self)
        config += ScriptDirs.get_config(self)
        config += CustomVars.get_config(self)

        config += '  check_command = "hostalive"\n'
        config += '  zone = "' + self.__execution_zone.get_id() + '"\n'
        config += ValueMapper.parse_var('vars.endpoint_name',
                                        self.__execution_endpoint)
        config += '}\n'

        return config
Beispiel #2
0
    def group_config_function(self, group):
        if 0 == len(group.get_telegram_id()):
            return []

        if None is self.__api_token:
            raise Exception('Telegram API token not set in ' + self.get_id())
        config = [
            ValueMapper.parse_var('vars.notification_telegram_groups', group.get_telegram_id()) + '\n' +
            ValueMapper.parse_var('vars.notification_telegram_token', self.__api_token) + '\n'
        ]
        return config
Beispiel #3
0
    def get_custom_config(self) -> str:
        config = NmapScanUDP.get_config(self)
        config += NmapScanTCP.get_config(self)
        config += NmapN.get_config(self)
        config += Nmapr.get_config(self)
        config += NmapSystemDns.get_config(self)
        config += NmapTraceroute.get_config(self)
        config += NmapF.get_config(self)
        config += NmapR.get_config(self)
        config += NmapSV.get_config(self)
        config += NmapVersionLight.get_config(self)
        config += NmapVersionAll.get_config(self)
        config += NmapVersionTrace.get_config(self)
        config += NmapSC.get_config(self)
        config += NmapScriptTrace.get_config(self)
        config += NmapO.get_config(self)
        config += NmapOsscanGuess.get_config(self)
        config += NmapBadsum.get_config(self)
        config += Nmap6.get_config(self)
        config += NmapA.get_config(self)
        config += NmapSendEth.get_config(self)
        config += NmapSendIp.get_config(self)
        config += NmapPrivileged.get_config(self)
        config += NmapPn.get_config(self)
        config += NmapUnprivileged.get_config(self)
        config += ValueMapper.parse_var('vars.allowed_ports',
                                        self.__allowed_ports)
        config += NmapBase.get_custom_config(self)

        return config
Beispiel #4
0
    def get_config(self) -> str:
        self.validate()

        config = 'object User "user_' + self.__id + '" {\n'
        config += ValueMapper.parse_var('display_name', self.__display_name)
        config += Nameable.get_config(self)
        config += NotificationFunctions.get_config(self)
        config += ValueMapper.parse_var('groups', self.__groups, value_prefix='usergroup_')
        config += ValueMapper.parse_var('states', self.__states)
        config += ValueMapper.parse_var('types', self.__types)

        for var in self.__vars:
            config += '  var.' + var[0] + ' = ' + ValueMapper.parse_value_for_var(var[1]) + '\n'
        config += '}\n'

        return config
Beispiel #5
0
    def get_config(self) -> str:
        NmapR.validate(self)

        return ValueMapper.get_property_default_config(self,
                                                       NmapR(self)._class_name,
                                                       self._command_name,
                                                       'command')
Beispiel #6
0
    def get_config(self) -> str:
        config = ''

        for custom_var in self.__custom_vars:
            if not custom_var['internal_use']:
                config += ValueMapper.parse_var('vars.' + custom_var['key'], custom_var['value'])

        return config
    def get_config(self: T) -> str:
        self.validate()

        config = Dependency.get_config(self)
        config += 'apply Dependency "servicedependency_' + self.get_id() + '" to Service {\n'
        config += '  import "dependency_' + self.get_id() + '"\n'
        config += ValueMapper.parse_var('parent_service_name', self.__parent_service_name)
        config += '  assign where "dependency_' + self.get_id() + '" in service.vars.dependencies\n'
        config += '}\n'

        return config
    def validate_id(id):
        prefixes = ValueChecker.get_prefixes()

        for prefix in prefixes:
            if id.startswith(prefix + '_'):
                raise Exception(prefix +
                                '_ is a reserved Prefix. You can\'t use it!')

        if ValueMapper.canonicalize_for_id(id) != id:
            raise Exception(
                'Id\'s can only contains letters (a-z,A-Z), numbers (0-9) and underscore (_)'
            )
 def get_assign_config(self,
                       custom_config,
                       notification_id,
                       users=None,
                       groups=None):
     config = ''
     for type in ['Host', 'Service']:
         config += 'apply Notification "' + type.lower(
         ) + '_' + notification_id + '" to ' + type + ' {\n'
         config += '  import "notification_template_' + type.lower() + '_' \
                   + Notification.get_id(self) + '"\n'
         config += ValueMapper.parse_var('user_groups',
                                         groups,
                                         value_prefix='usergroup_')
         config += ValueMapper.parse_var('users',
                                         users,
                                         value_prefix='user_')
         config += custom_config
         config += '  assign where "notification_' + self.get_id() + '" in ' \
                   + type.lower() + '.vars.notification\n'
         config += '}\n'
     return config
    def get_config(self: T) -> str:
        self.validate()
        config = ''
        for type in ['Host', 'Service']:

            config += 'apply ScheduledDowntime "downtime_' + self.__id + '" to ' + type + '{\n'
            config += ValueMapper.parse_var('comment', self.__comment)
            config += ValueMapper.parse_var('author', self.__author)
            config += ValueMapper.parse_var('child_options', self.__child_options)
            config += ValueMapper.parse_var('fixed', self.__fixed)
            if None is not self.__duration:
                config += '  duration = ' + self.__duration + '\n'

            if 0 < len(self.__ranges):
                config += '  ranges = {\n'
                for range in self.__ranges:
                    config += '    "' + range[0] + '" = "' + range[1] + '"\n'
                config += '  }\n'

            config += '  assign where "downtime_' + self.__id + '" in ' + type.lower() + '.vars.downtime\n'
            config += '}\n'

        return config
    def get_config(self) -> str:
        self.validate()

        config = 'template Notification "notification_template_host_' + self.__id + '" {\n'
        config += '  interval = ' + self.__interval + '\n'

        if None is not self.__escalation:
            config += '  times = {\n'
            config += '    begin = ' + self.__escalation[0] + '\n'
            config += '    end = ' + self.__escalation[1] + '\n'
            config += '  }\n'

        config += ValueMapper.parse_var('command',
                                        self.__command,
                                        value_prefix='command_host_')
        config += ValueMapper.parse_var('period',
                                        self.__time_period,
                                        value_prefix='time_period_')
        config += ValueMapper.parse_var('types', self.__host_types)
        config += ValueMapper.parse_var('states', self.__host_states)
        config += '}\n'
        config += 'template Notification "notification_template_service_' + self.__id + '" {\n'
        config += '  interval = ' + self.__interval + '\n'

        if None is not self.__escalation:
            config += '  times = {\n'
            config += '    begin = ' + self.__escalation[0] + '\n'
            config += '    end = ' + self.__escalation[1] + '\n'
            config += '  }\n'

        config += ValueMapper.parse_var('command',
                                        self.__command,
                                        value_prefix='command_service_')
        config += ValueMapper.parse_var('period',
                                        self.__time_period,
                                        value_prefix='time_period_')
        config += ValueMapper.parse_var('types', self.__service_types)
        config += ValueMapper.parse_var('states', self.__service_states)
        config += '}\n'
        config += self.apply_for_all()

        return config
Beispiel #12
0
    def get_config(self: T) -> str:
        self.validate()

        config = 'template Dependency "dependency_' + self.__id + '" {\n'
        config += ValueMapper.parse_var('parent_host_name',
                                        self.__parent_host_name)
        config += ValueMapper.parse_var('disable_checks',
                                        self.__disable_checks)
        config += ValueMapper.parse_var('disable_notifications',
                                        self.__disable_notifications)
        config += ValueMapper.parse_var('ignore_soft_states',
                                        self.__ignore_soft_states)
        config += ValueMapper.parse_var('period',
                                        self.__period,
                                        value_prefix='time_period_')
        config += ValueMapper.parse_var('states', self.__states)
        config += '}\n'

        return config
Beispiel #13
0
 def get_config(self) -> str:
     config = ValueMapper.parse_var('vars.icinga_script_dir',
                                    self.__icinga_script_dir)
     config += ValueMapper.parse_var('vars.monitoring_script_dir',
                                     self.__monitoring_script_dir)
     return config
 def user_config_function(self, user):
     email_config = []
     for email in user.get_email():
         email_config.append(
             ValueMapper.parse_var('vars.notification_email', email))
     return email_config
    def apply(self):
        if self.__inherit:
            DefaultWebserverChecks.apply(self)

        for config in DefaultWordpressChecks.get_vhostconfigs(self):
            service_baseid = config[0]
            domain = config[1]

            for server in DefaultWebserverChecks.get_servers(self):
                for checkserver in DefaultWebserverChecks.get_checkservers(
                        self):
                    server.add_hostgroup(HostGroup.create('wordpress'))
                    base_id = service_baseid + '_' + server.get_id(
                    ) + '_' + ValueMapper.canonicalize_for_id(
                        domain) + '_' + checkserver.get_id()

                    if True is self.__validate_deny_license:
                        self.create_wp_check('license', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/license.txt')
                    if True is self.__validate_deny_readme:
                        self.create_wp_check('readme', service_baseid, base_id,
                                             server, checkserver, domain,
                                             '/readme.html')
                    if True is self.__validate_deny_wp_admin:
                        self.create_wp_check('wp_admin', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-admin/')
                    if True is self.__validate_deny_wp_content:
                        self.create_wp_check('wp_includes', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-includes/')
                    if True is self.__validate_deny_wp_content:
                        self.create_wp_check('wp_content', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-content/')
                    if True is self.__validate_deny_wp_login:
                        self.create_wp_check('wp_login', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-login.php')
                    if True is self.__validate_deny_wp_cron:
                        self.create_wp_check('wp_cron', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-cron.php')
                    if True is self.__validate_deny_wp_load:
                        self.create_wp_check('wp_load', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-load.php')
                    if True is self.__validate_deny_wp_mail:
                        self.create_wp_check('wp_mail', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-mail.php')
                    if True is self.__validate_deny_wp_signup:
                        self.create_wp_check('wp_signup', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-signup.php')
                    if True is self.__validate_deny_wp_trackback:
                        self.create_wp_check('wp_trackback', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-trackback.php')
                    if True is self.__validate_deny_wp_xmlrpc:
                        self.create_wp_check('wp_xmlrpc', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/xmlrpc.php')
                    if True is self.__validate_deny_wp_config:
                        self.create_wp_check('wp_config', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-config.php')
                    if True is self.__validate_deny_wp_config_sample:
                        self.create_wp_check('wp_config_sample',
                                             service_baseid, base_id, server,
                                             checkserver, domain,
                                             '/wp-config-sample.php')
                    if True is self.__validate_deny_wp_blog_header:
                        self.create_wp_check('wp_blog_header', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-blog-header.php')
                    if True is self.__validate_deny_wp_activate:
                        self.create_wp_check('wp_activate', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-activate.php')
                    if True is self.__validate_deny_wp_links_opml:
                        self.create_wp_check('wp_links_opml', service_baseid,
                                             base_id, server, checkserver,
                                             domain, '/wp-links-opml.php')
    def get_property_default_config(self: T) -> str:

        return ValueMapper.get_property_default_config(
            self, self.__class_name,
            ValueMapper.replace_command_prefixes(self.__command_name),
            'command')
    def get_group_config(self: T) -> str:

        return ValueMapper.parse_var('vars.groups',
                                     self.__service_groups,
                                     value_prefix='servicegroup_')
Beispiel #18
0
 def get_default_access_check(self, service_baseid, server, domain):
     base_id = service_baseid + '_' + server.get_id() + '_' + ValueMapper.canonicalize_for_id(domain)
     return {
         'ipv4': ConfigBuilder.get_check('web_access_default_ipv4_' + base_id),
         'ipv6': ConfigBuilder.get_check('web_access_default_ipv6_' + base_id)
     }
 def get_config(self) -> str:
     return ValueMapper.parse_var('display_name', self.__display_name)
Beispiel #20
0
def get_default_check_name(id: str, command_name: str) -> str:
    default_names = {
        'apt': 'APT',
        'breeze': 'Breeze',
        'ciphers': 'Ciphers',
        'clamd': 'Clamd',
        'deny_tls_version': 'Deny TLS version',
        'dhcp': 'DHCP',
        'dig': 'DIG',
        'disk': 'Disk',
        'disk_smb': 'Disk SMB',
        'dnssec_expiry': 'DNSSEC expire',
        'docker_login': '******',
        'domain_address_ipv4': 'DNS A',
        'domain_address_ipv6': 'DNS AAAA',
        'dummy': 'Dummy',
        'existing_users': 'Existing users',
        'file_age': 'File age',
        'flexlm': 'Flexlm',
        'ftp': 'FTP',
        'group_members': 'Group members',
        'hpjd': 'HP JD',
        'http': 'Http',
        'icmp': 'ICMP',
        'ide_smart': 'SMART',
        'ifstatus': 'Interface status',
        'imap': 'IMAP',
        'ircd': 'IRCD',
        'jabber': 'Jabber',
        'ldap': 'LDAP',
        'ldaps': 'LDAPS',
        'load': 'Load',
        'log': 'Log',
        'mailq': 'Mail queue',
        'mrt_gtraf': 'MRT gtraf',
        'mysql': 'MySQL',
        'mysql_query': 'MySQL query',
        'nntp': 'NNTP',
        'nntps': 'NNTPS',
        'nt': 'NT',
        'ntp_peer': 'NTP peer',
        'ntp_time': 'NTP time',
        'open_ports': 'Open ports',
        'path_exist': 'Path exist',
        'pgsql': 'PostgreSQL',
        'ping': 'Ping',
        'ping4': 'Ping (ipv4)',
        'ping6': 'Ping (ipv6)',
        'pop': 'POP',
        'procs': 'Processes',
        'proxy_requests': 'Open proxy (ProxyRequests)',
        'radius': 'RADIUS',
        'reboot_required': 'Reboot required',
        'rpc': 'RPC',
        'running_proc_amavisd': 'Amavisd running',
        'running_proc_apache': 'Apache running',
        'running_proc_bind': 'Bind running',
        'running_proc_clamd': 'Clamd running',
        'running_proc_containerd': 'Containerd running',
        'running_proc_cron': 'Cron running',
        'running_proc_docker': 'Docker running',
        'running_proc_dovecot': 'Dovecot running',
        'running_proc_freshclam': 'Freshclam running',
        'running_proc_httpd': 'Httpd running',
        'running_proc_mysql': 'MySQL running',
        'running_proc_nginx': 'NGINX running',
        'running_proc_opendkim': 'Open DKIM running',
        'running_proc_php_fpm': 'PHP FPM running',
        'running_proc_postfix': 'Postfix running',
        'running_proc_postgres': 'PostgreSQL running',
        'running_proc_postgrey': 'Postgrey running',
        'running_proc_rsyslogd': 'Rsyslogd running',
        'running_proc_sshd': 'SSHD running',
        'running_proc_tomcat': 'Apache Tomcat running',
        'sensors': 'Sensors',
        'simap': 'IMAPS',
        'smtp': 'SMTP',
        'snmp': 'SNMP',
        'spop': 'POPS',
        'ssh': 'SSH',
        'sshd_security': 'SSHD security',
        'ssmtp': 'SMTPS',
        'synology_status': 'Synology Status',
        'sudoers_group_members': 'Sudoers group members',
        'swap': 'SWAP',
        'tcp': 'TCP',
        'udp': 'UDP',
        'ufw_status': 'UFW Status',
        'ups': 'UPS',
        'uptime': 'Uptime',
        'users': 'Users',
        'wave': 'Wave',
        'web_access_allow_tls1_0': 'Allow insecure TLS 1.0',
        'web_access_allow_tls1_1': 'Allow insecure TLS 1.1',
        'web_access_allow_tls1_2': 'Allow secure TLS 1.2',
        'web_access_allow_tls1_3': 'Allow secure TLS 1.3',
        'web_access_certificate': 'Certificate check',
        'web_access_default': 'Default web access',
        'web_access_deny_gitdir': 'Deny .git',
        'web_access_deny_gitignore': 'Deny .gitignore',
        'web_access_deny_license': 'Deny License',
        'web_access_deny_readme': 'Deny readme',
        'web_access_deny_tls1_0': 'Deny insecure TLS 1.0',
        'web_access_deny_tls1_1': 'Deny insecure TLS 1.1',
        'web_access_deny_tls1_2': 'Deny secure TLS 1.2',
        'web_access_deny_tls1_3': 'Deny secure TLS 1.3',
        'web_access_deny_wp_admin': 'deny /wp-admin',
        'web_access_deny_wp_includes': 'deny /wp-includes',
        'web_access_deny_wp_content': 'deny /wp-content',
        'web_access_deny_wp_login': '******',
        'web_access_deny_wp_cron': 'deny /wp-cron.php',
        'web_access_deny_wp_load': 'deny /wp-load.php',
        'web_access_deny_wp_mail': 'deny /wp-mail.php',
        'web_access_deny_wp_signup': 'deny /wp-signup.php',
        'web_access_deny_wp_trackback': 'deny /wp-trackback.php',
        'web_access_deny_wp_xmlrpc': 'deny /xmlrpc.php',
        'web_access_deny_wp_config': 'deny /wp-config.php',
        'web_access_deny_wp_config_sample': 'deny /wp-config-sample.php',
        'web_access_deny_wp_blog_header': 'deny /wp-blog-header.php',
        'web_access_deny_wp_activate': 'deny /wp-activate.php',
        'web_access_deny_wp_links_opml': 'deny /wp-links-opml.php',
        'web_access_http_redirect': 'Http to https redirect',
        'web_access_missing_http_redirect': 'No http redirect check for',
        'wheel_group_members': 'Sudoers (wheel) group members',
        'yum': 'YUM',
    }

    id = ValueMapper.replace_command_prefixes(id)
    command_name = ValueMapper.replace_command_prefixes(command_name)

    for name in default_names:
        if id.startswith(name + '_'):
            return default_names[name]

    return default_names.get(
        id, default_names.get(command_name, command_name.replace('_', ' ')))
Beispiel #21
0
 def get_custom_config(self: T) -> str:
     return ValueMapper.get_property_default_config(self, 'CheckSNMP',
                                                    'snmp', 'command')
Beispiel #22
0
 def get_custom_config(self) -> str:
     return ValueMapper.get_property_default_config(self, 'NmapBase',
                                                    self._command_name,
                                                    'command')
Beispiel #23
0
    def get_config(self) -> str:
        config = ValueMapper.parse_var('vars.email_addresses', self.__email)
        config += ValueMapper.parse_var('pager', self.__pager)
        config += ValueMapper.parse_var('vars.phone', self.__phone)

        return config
Beispiel #24
0
    def apply(self):
        for config in self.__vhostconfigs:
            service_baseid = config[0]
            domain = config[1]
            uri = config[2]

            for server in self.get_servers():
                for checkserver in self.get_checkservers():
                    base_id = service_baseid + '_' + server.get_id() + '_' + ValueMapper.canonicalize_for_id(domain)
                    server_ipv4 = server.get_ipv4()
                    server_ipv6 = server.get_ipv6()

                    if None is server_ipv4 and None is server_ipv6:
                        raise Exception('It is required to set the ipv4 or ipv6 on the server with id "' +
                                        server.get_id() + '", before you can apply this checks!')

                    server.add_hostgroup(HostGroup.create('Webserver'))

                    default_ipv4_http_check = None
                    default_ipv6_http_check = None
                    if None is not server_ipv4:
                        default_ipv4_http_check = CheckHttp.create('web_access_default_ipv4_' + base_id)
                        default_ipv4_http_check.set_ip(server_ipv4) \
                            .set_vhost(domain) \
                            .set_uri(uri) \
                            .set_ssl(True) \
                            .set_sni(self.__sni) \
                            .set_display_name(default_ipv4_http_check.get_display_name() + ' ' + domain)
                        self.apply_check(default_ipv4_http_check, server, checkserver)

                    if None is not server_ipv6:
                        default_ipv6_http_check = CheckHttp.create('web_access_default_ipv6_' + base_id)
                        default_ipv6_http_check.set_ip(server_ipv6) \
                            .set_ipv6(True) \
                            .set_vhost(domain) \
                            .set_uri(uri) \
                            .set_ssl(True) \
                            .set_sni(self.__sni) \
                            .set_display_name(default_ipv6_http_check.get_display_name() + ' ' + domain)
                        self.apply_check(default_ipv6_http_check, server, checkserver)

                    if None == default_ipv4_http_check and None == default_ipv6_http_check:
                        raise Exception('Server "' + server.get_id()
                                        + '" has no IPv4 and no IPv6 address set. Can\'t go further right now.')

                    if True is self.__validate_certificate:
                        if None is not server_ipv4:
                            certificate_check = CheckHttp.create('web_access_certificate_ipv4_' + base_id)
                            certificate_check.set_ip(server_ipv4) \
                                .set_vhost(domain) \
                                .set_uri(uri) \
                                .set_ssl(True) \
                                .set_sni(self.__sni) \
                                .set_certificate_check(True) \
                                .set_check_interval('15m') \
                                .add_service_group(ServiceGroup.create('certificate_check')) \
                                .set_display_name(certificate_check.get_display_name() + ' ' + domain)

                            self.apply_check(certificate_check, server, checkserver, default_ipv4_http_check)

                        if None is not server_ipv6:
                            certificate_check = CheckHttp.create('web_access_certificate_ipv6_' + base_id)
                            certificate_check.set_ip(server_ipv6) \
                                .set_ipv6(True) \
                                .set_vhost(domain) \
                                .set_uri(uri) \
                                .set_ssl(True) \
                                .set_sni(self.__sni) \
                                .set_certificate_check(True) \
                                .set_check_interval('15m') \
                                .add_service_group(ServiceGroup.create('certificate_check')) \
                                .set_display_name(certificate_check.get_display_name() + ' ' + domain)

                            self.apply_check(certificate_check, server, checkserver, default_ipv6_http_check)

                    else:
                        server.add_hostgroup(HostGroup.create('no_certificate_check'))

                    if True is self.__validate_http_redirect:
                        if None is not server_ipv4:
                            redirect_check = CheckHttp.create('web_access_http_redirect_ipv4_' + base_id)
                            redirect_check.set_ip(server_ipv4) \
                                .set_vhost(domain) \
                                .set_uri(uri) \
                                .set_ssl(False) \
                                .set_sni(self.__sni) \
                                .set_port(80) \
                                .set_expect('HTTP/1.1 30') \
                                .set_check_interval('15m') \
                                .add_service_group(ServiceGroup.create('http_redirect')) \
                                .set_display_name(redirect_check.get_display_name() + ' ' + domain)

                            self.apply_check(redirect_check, server, checkserver, default_ipv4_http_check)

                        if None is not server_ipv6:
                            redirect_check = CheckHttp.create('web_access_http_redirect_ipv6_' + base_id)
                            redirect_check.set_ip(server_ipv6) \
                                .set_ipv6(True) \
                                .set_vhost(domain) \
                                .set_uri(uri) \
                                .set_ssl(False) \
                                .set_sni(self.__sni) \
                                .set_port(80) \
                                .set_expect('HTTP/1.1 30') \
                                .set_check_interval('15m') \
                                .add_service_group(ServiceGroup.create('http_redirect')) \
                                .set_display_name(redirect_check.get_display_name() + ' ' + domain)

                            self.apply_check(redirect_check, server, checkserver, default_ipv6_http_check)

                        server.add_hostgroup(HostGroup.create('http_redirect'))

                    elif True is self.__warn_no_http_redirect:
                        redirect_check = CheckDummy.create('web_access_missing_http_redirect_' + base_id)
                        redirect_check.set_state(1) \
                            .set_text(redirect_check.get_display_name() + ' ' + domain) \
                            .set_check_interval('15m') \
                            .add_service_group(ServiceGroup.create('missing_http_redirect_check')) \
                            .add_service_group(ServiceGroup.create('Webserver')) \
                            .set_display_name(redirect_check.get_display_name() + ' ' + domain)

                        self.apply_check(redirect_check, server, checkserver)
                        server.add_hostgroup(HostGroup.create('no_http_redirect'))

                    else:
                        server.add_hostgroup(HostGroup.create('http_redirect_unchecked'))

                    self.add_tls_check(base_id, default_ipv4_http_check, default_ipv6_http_check, domain,
                                       server, checkserver, server_ipv4, server_ipv6, uri, '1.0',
                                       self.__validate_allow_tls1, self.__validate_deny_tls1, True)

                    self.add_tls_check(base_id, default_ipv4_http_check, default_ipv6_http_check, domain,
                                       server, checkserver, server_ipv4, server_ipv6, uri, '1.1',
                                       self.__validate_allow_tls1_1, self.__validate_deny_tls1_1, True)

                    self.add_tls_check(base_id, default_ipv4_http_check, default_ipv6_http_check, domain,
                                       server, checkserver, server_ipv4, server_ipv6, uri, '1.2',
                                       self.__validate_allow_tls1_2, self.__validate_deny_tls1_2, False)

                    self.add_tls_check(base_id, default_ipv4_http_check, default_ipv6_http_check, domain,
                                       server, checkserver, server_ipv4, server_ipv6, uri, '1.3',
                                       self.__validate_allow_tls1_3, self.__validate_deny_tls1_3, False)
Beispiel #25
0
def get_default_group_name(id: str) -> str:
    default_names = {
        'amavisd': 'Amavisd',
        'antivirus': 'Antivirus',
        'apache': 'Apache',
        'apt': 'APT',
        'bind': 'Bind',
        'breeze': 'Breeze',
        'certificate_check': 'X.509 certificate',
        'ciphers': 'Ciphers',
        'clamd': 'Clamd',
        'containerd': 'Containerd',
        'cron': 'Cron',
        'database': 'Database',
        'deny_insecure_TLSv1_0_webserver': 'Deny insecure TLS 1.0 webserver',
        'deny_insecure_TLSv1_0_unchecked': 'Deny insecure TLS 1.0 unchecked',
        'deny_insecure_TLSv1_1_webserver': 'Deny insecure TLS 1.1 webserver',
        'deny_insecure_TLSv1_1_unchecked': 'Deny insecure TLS 1.1 unchecked',
        'deny_secure_TLSv1_2_webserver': 'Deny secure TLS 1.2 wevserver',
        'deny_secure_TLSv1_3_webserver': 'Deny secure TLS 1.3 wevserver',
        'dhcp': 'DHCP',
        'dig': 'dig',
        'disk': 'Disk',
        'dns': 'DNS',
        'dnssec': 'DNSSEC',
        'docker': 'Docker',
        'dovecot': 'Dovecot',
        'dummy': 'Dummy',
        'existing_user': '******',
        'file_age': 'File age',
        'firewall': 'Firewall',
        'flexlm': 'Flexlm',
        'freshclam': 'Freshclam',
        'ftp': 'FTP',
        'group_members': 'Group members',
        'hpjd': 'HP JD',
        'http_redirect': 'Http to https redirect',
        'http_redirect_unchecked': 'Http to https redirect unchecked',
        'icmp': 'ICMP',
        'ifstatus': 'Interface status',
        'imap': 'IMAP',
        'insecure_webserver': 'Insecure webserver',
        'insecure_TLSv1_0_Webserver': 'Insecure TLS v1.0 webserver',
        'insecure_TLSv1_1_Webserver': 'Insecure TLS v1.1 webserver',
        'ircd': 'IRCD',
        'jabber': 'Jabber',
        'ldap': 'LDAP',
        'load': 'Load',
        'log': 'Log',
        'mail': 'Mail',
        'mailq': 'Mail queue',
        'missing_http_redirect_check': 'Missing http to https redirect check',
        'mrt_gtraf': 'MRT graf',
        'mysql': 'MySQL',
        'network': 'Network',
        'nginx': 'NGINX',
        'nmap': 'Nmap',
        'nntp': 'NNTP',
        'no_certificate_check': 'No X.509 Certificate check',
        'ntp': 'NTP',
        'ns_client': 'NS Client',
        'opendkim': 'Open DKIM',
        'open_ports': 'Open ports',
        'path_exists': 'Path exists',
        'php_fpm': 'PHP FPM',
        'postfix': 'Postfix',
        'postgres': 'PostgreSQL',
        'postgrey': 'Postgrey',
        'ping': 'Ping',
        'pop': 'POP',
        'procs': 'Procs',
        'radius': 'RADIUS',
        'reboot': 'Reboot',
        'rpc': 'RPC',
        'rsyslogd': 'Rsyslogd',
        'secure_webserver': 'Secure Webserver',
        'secure_TLSv1_2_unchecked': 'Secure TLS 1.2 unchecked',
        'secure_TLSv1_3_unchecked': 'Secure TLS 1.3 unchecked',
        'secure_TLSv1_2_webserver': 'Secure TLS 1.2 Webserver',
        'secure_TLSv1_3_webserver': 'Secure TLS 1.3 Webserver',
        'security': 'Security',
        'sensors': 'Sensors',
        'smart': 'SMART',
        'smtp': 'SMTP',
        'snmp': 'SNMP',
        'sshd': 'SSHD',
        'sshd_security': 'SSHD security',
        'sudoers': 'Sudoers',
        'swap': 'SWAP',
        'synology_status': 'Synology Status',
        'system_health': 'System health',
        'tcp': 'TCP',
        'tls_1_0_check': 'TLS v1.0 Check',
        'tls_1_1_check': 'TLS v1.1 Check',
        'tls_1_2_check': 'TLS v1.2 Check',
        'tls_1_3_check': 'TLS v1.3 Check',
        'tls': 'TLS',
        'tomcat': 'Apache Tomcat',
        'udp': 'UDP',
        'ufw': 'UFW',
        'ups': 'UPS',
        'updates': 'Updates',
        'uptime': 'Uptime',
        'user': '******',
        'yum': 'YUM',
        'wave': 'Wave',
        'webserver': 'Webserver',
        'wordpress': 'Wordpress',
    }

    id = ValueMapper.replace_command_prefixes(id)

    return default_names.get(id, id.replace('_', ' '))
Beispiel #26
0
    def get_config(self: T) -> str:

        config = Nameable.get_config(self)
        config += CustomVars.get_config(self)
        if not self.__is_check:
            config += ValueMapper.parse_var('vars.zone_name', self.__dns_zone)
        elif self.__override_zone:
            config += ValueMapper.parse_var('zone', self.__dns_zone)
        else:
            config += '  zone = host.vars.zone_name\n'

        if not self.__is_check:
            config += ValueMapper.parse_var('vars.endpoint_name', self.__command_endpoint)
        elif self.__override_endpoint:
            config += ValueMapper.parse_var('command_endpoint', self.__command_endpoint)
        else:
            config += '  command_endpoint = host.vars.endpoint_name\n'

        config += '  check_interval = ' + self.__check_interval + '\n'
        config += '  retry_interval = ' + self.__retry_interval + '\n'
        config += ValueMapper.parse_var('max_check_attempts', self.__max_check_attempts)
        config += ValueMapper.parse_var('enable_perfdata', self.__enable_perfdata)
        config += ValueMapper.parse_var('check_timeout', self.__check_timeout)
        config += ValueMapper.parse_var('vars.notification', self.__notifications, value_prefix='notification_')
        config += ValueMapper.parse_var('vars.downtime', self.__downtimes, value_prefix='downtime_')
        config += ValueMapper.parse_var('vars.dependencies', self.__dependencies, value_prefix='dependency_')
        if self.__use_negation:
            config += ValueMapper.parse_var('vars.negation_ok_status', self.__negation_ok_status)
            config += ValueMapper.parse_var('vars.negation_warning_status', self.__negation_warning_status)
            config += ValueMapper.parse_var('vars.negation_critical_status', self.__negation_critical_status)
            config += ValueMapper.parse_var('vars.negation_unknown_status', self.__negation_unknown_status)
            config += ValueMapper.parse_var('vars.negation_substitute', self.__negation_substitute)
            config += ValueMapper.parse_var('vars.negation_timeout', self.__negation_timeout)

        return config