Esempio n. 1
0
def cli(env, target, firewall_type, high_availability):
    """Create new firewall."""

    mgr = SoftLayer.FirewallManager(env.client)

    if not env.skip_confirmations:
        if firewall_type == 'vlan':
            pkg = mgr.get_dedicated_package(ha_enabled=high_availability)
        elif firewall_type == 'vs':
            pkg = mgr.get_standard_package(target, is_virt=True)
        elif firewall_type == 'server':
            pkg = mgr.get_standard_package(target, is_virt=False)

        if not pkg:
            return "Unable to add firewall - Is network public enabled?"

        env.out("******************")
        env.out("Product: %s" % pkg[0]['description'])
        env.out("Price: $%s monthly" % pkg[0]['prices'][0]['recurringFee'])
        env.out("******************")

        if not formatting.confirm("This action will incur charges on your "
                                  "account. Continue?"):
            raise exceptions.CLIAbort('Aborted.')

    if firewall_type == 'vlan':
        mgr.add_vlan_firewall(target, ha_enabled=high_availability)
    elif firewall_type == 'vs':
        mgr.add_standard_firewall(target, is_virt=True)
    elif firewall_type == 'server':
        mgr.add_standard_firewall(target, is_virt=False)

    return "Firewall is being created!"
Esempio n. 2
0
def cli(env):
    """List firewalls."""

    mgr = SoftLayer.FirewallManager(env.client)
    table = formatting.Table(['firewall id',
                              'type',
                              'features',
                              'server/vlan id'])
    fwvlans = mgr.get_firewalls()
    dedicated_firewalls = [firewall for firewall in fwvlans
                           if firewall['dedicatedFirewallFlag']]

    for vlan in dedicated_firewalls:
        features = []
        if vlan['highAvailabilityFirewallFlag']:
            features.append('HA')

        if features:
            feature_list = formatting.listing(features, separator=',')
        else:
            feature_list = formatting.blank()

        table.add_row([
            'vlan:%s' % vlan['networkVlanFirewall']['id'],
            'VLAN - dedicated',
            feature_list,
            vlan['id']
        ])

    shared_vlan = [firewall for firewall in fwvlans
                   if not firewall['dedicatedFirewallFlag']]
    for vlan in shared_vlan:
        vs_firewalls = [guest
                        for guest in vlan['firewallGuestNetworkComponents']
                        if has_firewall_component(guest)]

        for firewall in vs_firewalls:
            table.add_row([
                'vs:%s' % firewall['id'],
                'Virtual Server - standard',
                '-',
                firewall['guestNetworkComponent']['guest']['id']
            ])

        server_firewalls = [server
                            for server in vlan['firewallNetworkComponents']
                            if has_firewall_component(server)]

        for firewall in server_firewalls:
            table.add_row([
                'server:%s' % firewall['id'],
                'Server - standard',
                '-',
                utils.lookup(firewall,
                             'networkComponent',
                             'downlinkComponent',
                             'hardwareId')
            ])

    env.fout(table)
Esempio n. 3
0
def cli(env, identifier):
    """Detail firewall."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    _firewall = mgr.get_instance(firewall_id)

    table = formatting.KeyValueTable(['name', 'value'])
    table.align['name'] = 'r'
    table.align['value'] = 'l'

    table.add_row(['id', _firewall.get('id')])
    table.add_row(['primaryIpAddress', _firewall.get('primaryIpAddress')])
    table.add_row(
        ['datacenter',
         utils.lookup(_firewall, 'datacenter', 'longName')])
    table.add_row(
        ['networkVlan',
         utils.lookup(_firewall, 'networkVlan', 'name')])
    table.add_row(
        ['networkVlaniD',
         utils.lookup(_firewall, 'networkVlan', 'id')])

    if firewall_type == 'vlan':
        rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        rules = mgr.get_standard_fwl_rules(firewall_id)
    table.add_row(['rules', get_rules_table(rules)])
    env.fout(table)
Esempio n. 4
0
    def execute(self, args):
        mgr = SoftLayer.FirewallManager(self.client)
        input_id = helpers.resolve_id(
            mgr.resolve_ids, args.get('<identifier>'), 'firewall')
        ha_support = args.get('--ha', False)
        if not args['--really']:
            if args['--vlan']:
                pkg = mgr.get_dedicated_package(ha_enabled=ha_support)
            elif args['--cci']:
                pkg = mgr.get_standard_package(input_id)
            elif args['--server']:
                pkg = mgr.get_standard_package(input_id, is_cci=False)

            if not pkg:
                return "Unable to add firewall - Is network public enabled?"
            print_package_info(pkg)

            if not formatting.confirm("This action will incur charges on your "
                                      "account. Continue?"):
                raise exceptions.CLIAbort('Aborted.')

        if args['--vlan']:
            mgr.add_vlan_firewall(input_id, ha_enabled=ha_support)
        elif args['--cci']:
            mgr.add_standard_firewall(input_id, is_cci=True)
        elif args['--server']:
            mgr.add_standard_firewall(input_id, is_cci=False)

        return "Firewall is being created!"
Esempio n. 5
0
    def execute(self, args):
        mgr = SoftLayer.FirewallManager(self.client)
        input_id = args.get('<identifier>')

        key_value = get_ids(input_id)
        if key_value[0] == 'vlan':
            rules = mgr.get_dedicated_fwl_rules(key_value[1])
        else:
            rules = mgr.get_standard_fwl_rules(key_value[1])

        return get_rules_table(rules)
Esempio n. 6
0
def cli(env, identifier):
    """Detail firewall."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    if firewall_type == 'vlan':
        rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        rules = mgr.get_standard_fwl_rules(firewall_id)

    env.fout(get_rules_table(rules))
Esempio n. 7
0
    def execute(self, args):
        mgr = SoftLayer.FirewallManager(self.client)
        input_id = args.get('<identifier>')
        key_value = get_ids(input_id)
        firewall_id = int(key_value[1])

        if args['--really'] or formatting.confirm("This action will cancel a "
                                                  "firewall from your account."
                                                  " Continue?"):
            if key_value[0] in ['cci', 'server']:
                mgr.cancel_firewall(firewall_id, dedicated=False)
            elif key_value[0] == 'vlan':
                mgr.cancel_firewall(firewall_id, dedicated=True)
            return 'Firewall with id %s is being cancelled!' % input_id
        else:
            raise exceptions.CLIAbort('Aborted.')
Esempio n. 8
0
def cli(env, identifier):
    """List firewalls."""

    mgr = SoftLayer.FirewallManager(env.client)
    firewall_type, firewall_id = firewall.parse_id(identifier)

    if any([
            env.skip_confirmations,
            formatting.confirm("This action will cancel a firewall from your"
                               "account. Continue?")
    ]):
        if firewall_type in ['cci', 'server']:
            mgr.cancel_firewall(firewall_id, dedicated=False)
        elif firewall_type == 'vlan':
            mgr.cancel_firewall(firewall_id, dedicated=True)
        return 'Firewall with id %s is being cancelled!' % identifier
    else:
        raise exceptions.CLIAbort('Aborted.')
Esempio n. 9
0
def cli(env, identifier):
    """Cancels a firewall."""

    mgr = SoftLayer.FirewallManager(env.client)
    firewall_type, firewall_id = firewall.parse_id(identifier)

    if not (env.skip_confirmations or formatting.confirm(
            "This action will cancel a firewall from your "
            "account. Continue?")):
        raise exceptions.CLIAbort('Aborted.')

    if firewall_type in ['vs', 'server']:
        mgr.cancel_firewall(firewall_id, dedicated=False)
    elif firewall_type == 'vlan':
        mgr.cancel_firewall(firewall_id, dedicated=True)
    else:
        raise exceptions.CLIAbort('Unknown firewall type: %s' % firewall_type)

    env.fout('Firewall with id %s is being cancelled!' % identifier)
Esempio n. 10
0
    def execute(self, args):
        mgr = SoftLayer.FirewallManager(self.client)
        input_id = args.get('<identifier>')

        key_value = get_ids(input_id)
        firewall_id = int(key_value[1])
        if key_value[0] == 'vlan':
            orig_rules = mgr.get_dedicated_fwl_rules(firewall_id)
        else:
            orig_rules = mgr.get_standard_fwl_rules(firewall_id)
        # open an editor for the user to enter their rules
        edited_rules = open_editor(rules=orig_rules)
        print(edited_rules)
        if formatting.confirm("Would you like to submit the rules. "
                              "Continue?"):
            while True:
                try:
                    rules = parse_rules(edited_rules)
                    if key_value[0] == 'vlan':
                        rules = mgr.edit_dedicated_fwl_rules(firewall_id,
                                                             rules)
                    else:
                        rules = mgr.edit_standard_fwl_rules(firewall_id,
                                                            rules)
                    break
                except (SoftLayer.SoftLayerError, ValueError) as error:
                    print("Unexpected error({%s})" % (error))
                    if formatting.confirm("Would you like to continue editing "
                                          "the rules. Continue?"):
                        edited_rules = open_editor(content=edited_rules)
                        print(edited_rules)
                        if formatting.confirm("Would you like to submit the "
                                              "rules. Continue?"):
                            continue
                        else:
                            raise exceptions.CLIAbort('Aborted.')
                    else:
                        raise exceptions.CLIAbort('Aborted.')
                    return 'Firewall updated!'
        else:
            raise exceptions.CLIAbort('Aborted.')
Esempio n. 11
0
def cli(env, identifier):
    """Edit firewall rules."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    if firewall_type == 'vlan':
        orig_rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        orig_rules = mgr.get_standard_fwl_rules(firewall_id)
    # open an editor for the user to enter their rules
    edited_rules = open_editor(rules=orig_rules)
    env.out(edited_rules)
    if formatting.confirm("Would you like to submit the rules. " "Continue?"):
        while True:
            try:
                rules = parse_rules(edited_rules)
                if firewall_type == 'vlan':
                    rules = mgr.edit_dedicated_fwl_rules(firewall_id, rules)
                else:
                    rules = mgr.edit_standard_fwl_rules(firewall_id, rules)
                break
            except (SoftLayer.SoftLayerError, ValueError) as error:
                env.out("Unexpected error({%s})" % (error))
                if formatting.confirm("Would you like to continue editing "
                                      "the rules. Continue?"):
                    edited_rules = open_editor(content=edited_rules)
                    env.out(edited_rules)
                    if formatting.confirm("Would you like to submit the "
                                          "rules. Continue?"):
                        continue
                    else:
                        raise exceptions.CLIAbort('Aborted.')
                else:
                    raise exceptions.CLIAbort('Aborted.')
                env.fout('Firewall updated!')
    else:
        raise exceptions.CLIAbort('Aborted.')
Esempio n. 12
0
 def __init__(self, path, fw):
     self.client = SoftLayer.Client()
     self.fw = SoftLayer.FirewallManager(self.client)
     self.path = path
     self.fw_type, self.fw_id = firewall.parse_id(fw)
Esempio n. 13
0
 def set_up(self):
     self.firewall = SoftLayer.FirewallManager(self.client)
Esempio n. 14
0
def cli(env):
    """List firewalls."""

    mgr = SoftLayer.FirewallManager(env.client)
    table = formatting.Table(
        ['firewall id', 'type', 'features', 'server/vlan id'],
        title='Single Server Firewalls')
    fwvlans = mgr.get_firewalls()
    dedicated_firewalls = [
        firewall for firewall in fwvlans if firewall['dedicatedFirewallFlag']
    ]

    for vlan in dedicated_firewalls:
        features = []
        if vlan['highAvailabilityFirewallFlag']:
            features.append('HA')

        if features:
            feature_list = formatting.listing(features, separator=',')
        else:
            feature_list = formatting.blank()

        table.add_row([
            'vlan:%s' % vlan['networkVlanFirewall']['id'], 'VLAN - dedicated',
            feature_list, vlan['id']
        ])

    shared_vlan = [
        firewall for firewall in fwvlans
        if not firewall['dedicatedFirewallFlag']
    ]
    for vlan in shared_vlan:
        vs_firewalls = [
            guest for guest in vlan['firewallGuestNetworkComponents']
            if has_firewall_component(guest)
        ]

        for firewall in vs_firewalls:
            table.add_row([
                'vs:%s' % firewall['id'], 'Virtual Server - standard', '-',
                firewall['guestNetworkComponent']['guest']['id']
            ])

        server_firewalls = [
            server for server in vlan['firewallNetworkComponents']
            if has_firewall_component(server)
        ]

        for firewall in server_firewalls:
            table.add_row([
                'server:%s' % firewall['id'], 'Server - standard', '-',
                utils.lookup(firewall, 'networkComponent', 'downlinkComponent',
                             'hardwareId')
            ])

    table_gatewalls = formatting.Table([
        'Id', 'firewall', 'type', 'Hostname', 'Location', 'Public Ip',
        'Private Ip', 'Associated vlan', 'status'
    ],
                                       title='Multi Vlan Firewall')
    fw_gatewwalls = mgr.get_firewalls_gatewalls()

    for gatewalls in fw_gatewwalls:
        table_gatewalls.add_row([
            gatewalls['networkFirewall']['id'],
            gatewalls.get('name'),
            gatewalls['networkFirewall']['firewallType'],
            gatewalls['members'][0]['hardware']['hostname'],
            gatewalls['networkFirewall']['datacenter']['name'],
            gatewalls['publicIpAddress']['ipAddress'],
            gatewalls['privateIpAddress']['ipAddress'],
            len(gatewalls['insideVlans']), gatewalls['status']['keyName']
        ])
    env.fout(table)
    env.fout(table_gatewalls)
 def set_up(self):
     self.client = testing.FixtureClient()
     self.firewall = SoftLayer.FirewallManager(self.client)
Esempio n. 16
0
def cli(env, identifier, credentials):
    """Detail firewall.

    EXAMPLES:

        slcli firewall detail vs:12345

        slcli firewall detail --credentials true multiVlan:456789
    """

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)

    if firewall_type in ('vs', 'server', 'vlan', 'multiVlan'):

        if firewall_type == 'vlan':
            _firewall = mgr.get_instance(firewall_id)

            table = formatting.KeyValueTable(['name', 'value'])
            table.align['name'] = 'r'
            table.align['value'] = 'l'

            table.add_row(['id', _firewall.get('id')])
            table.add_row(
                ['primaryIpAddress',
                 _firewall.get('primaryIpAddress')])
            table.add_row([
                'datacenter',
                utils.lookup(_firewall, 'datacenter', 'longName')
            ])
            table.add_row([
                'networkVlan',
                utils.lookup(_firewall, 'networkVlan', 'name')
            ])
            table.add_row([
                'networkVlaniD',
                utils.lookup(_firewall, 'networkVlan', 'id')
            ])

            rules = mgr.get_dedicated_fwl_rules(firewall_id)
            table.add_row(['rules', get_rules_table(rules)])

        if firewall_type == 'multiVlan':
            _firewall = mgr.get_instance(firewall_id)

            table = formatting.KeyValueTable(['name', 'value'])
            table.align['name'] = 'r'
            table.align['value'] = 'l'

            table.add_row(
                ['name',
                 utils.lookup(_firewall, 'networkGateway', 'name')])
            table.add_row([
                'datacenter',
                utils.lookup(_firewall, 'datacenter', 'longName')
            ])
            table.add_row([
                'public ip',
                utils.lookup(_firewall, 'networkGateway', 'publicIpAddress',
                             'ipAddress')
            ])
            table.add_row([
                'private ip',
                utils.lookup(_firewall, 'networkGateway', 'privateIpAddress',
                             'ipAddress')
            ])
            table.add_row([
                'public  ipv6',
                utils.lookup(_firewall, 'networkGateway', 'publicIpv6Address',
                             'ipAddress')
            ])
            table.add_row([
                'public vlan',
                utils.lookup(_firewall, 'networkGateway', 'publicVlan',
                             'vlanNumber')
            ])
            table.add_row([
                'private vlan',
                utils.lookup(_firewall, 'networkGateway', 'privateVlan',
                             'vlanNumber')
            ])
            table.add_row(['type', _firewall.get('firewallType')])

            if credentials:
                table.add_row([
                    'fortiGate username',
                    utils.lookup(_firewall, 'managementCredentials',
                                 'username')
                ])
                table.add_row([
                    'fortiGate password',
                    utils.lookup(_firewall, 'managementCredentials',
                                 'password')
                ])

            rules = mgr.get_dedicated_fwl_rules(firewall_id)
            if len(rules) != 0:
                table.add_row(['rules', get_rules_table(rules)])
            else:
                table.add_row(['rules', '-'])

        if firewall_type == 'vs' or firewall_type == 'server':
            rules = mgr.get_standard_fwl_rules(firewall_id)
            table = get_rules_table(rules)

        env.fout(table)

    else:
        click.secho(
            'Invalid firewall type %s: firewall type should be either vlan, multiVlan, vs or server.'
            % firewall_type,
            fg='red')
        return