docs: def set_firewall_settings(profile,
                            inbound=None,
                            outbound=None,
                            store='local'):
      '''
      Set the firewall inbound/outbound settings for the specified profile and
      store
  
      Args:
  
          profile (str):
              The firewall profile to configure. Valid options are:
  
              - domain
              - public
              - private
  
          inbound (str):
              The inbound setting. If ``None`` is passed, the setting will remain
              unchanged. Valid values are:
  
              - blockinbound
              - blockinboundalways
              - allowinbound
              - notconfigured
  
              Default is ``None``
  
          outbound (str):
              The outbound setting. If ``None`` is passed, the setting will remain
              unchanged. Valid values are:
  
              - allowoutbound
              - blockoutbound
              - notconfigured
  
              Default is ``None``
  
          store (str):
              The store to use. This is either the local firewall policy or the
              policy defined by local group policy. Valid options are:
  
              - lgpo
              - local
  
              Default is ``local``
  
      Returns:
          bool: ``True`` if successful
  
      Raises:
          CommandExecutionError: If an error occurs
          ValueError: If the parameters are incorrect
      '''
      # Input validation
      if profile.lower() not in ('domain', 'public', 'private'):
          raise ValueError('Incorrect profile: {0}'.format(profile))
      if inbound and inbound.lower() not in ('blockinbound',
                                             'blockinboundalways',
                                             'allowinbound',
                                             'notconfigured'):
          raise ValueError('Incorrect inbound value: {0}'.format(inbound))
      if outbound and outbound.lower() not in ('allowoutbound',
                                               'blockoutbound',
                                               'notconfigured'):
          raise ValueError('Incorrect outbound value: {0}'.format(outbound))
      if not inbound and not outbound:
          raise ValueError('Must set inbound or outbound')
  
      # You have to specify inbound and outbound setting at the same time
      # If you're only specifying one, you have to get the current setting for the
      # other
      if not inbound or not outbound:
          ret = get_settings(profile=profile,
                             section='firewallpolicy',
                             store=store)
          if not inbound:
              inbound = ret['Inbound']
          if not outbound:
              outbound = ret['Outbound']
  
      command = 'set {0}profile firewallpolicy {1},{2}' \
                ''.format(profile, inbound, outbound)
  
      results = _netsh_command(command=command, store=store)
  
      if results:
          raise CommandExecutionError('An error occurred: {0}'.format(results))
  
      return True