为了保证应用的运行效率,所有API调用都是异步的,对于异步调用的API均提供了Promise的方式,以下示例均采用Promise方式,更多方式可以查阅@ohos.net.netFirewall (网络防火墙)。
网络防火墙提供如下功能:
为了保证应用的运行效率,所有API调用都是异步的,对于异步调用的API均提供了Promise的方式,以下示例均采用Promise方式,更多方式可以查阅@ohos.net.netFirewall (网络防火墙)。
防火墙的典型场景有:
以下分别介绍具体开发方式。
设备通过硬件接口,插入网线。
从@kit.NetworkKit中导入netFirewall命名空间。
- // 从@kit.NetworkKit中导入netFirewall命名空间。
- import { netFirewall } from '@kit.NetworkKit';
- import { BusinessError } from '@kit.BasicServicesKit';
- import { hilog } from '@kit.PerformanceAnalysisKit';
用户调用setNetFirewallPolicy方法,打开防火墙。
- // IP类型
- interface IpType{
- family:number;
- type:number;
- address?:string;
- mask?:number;
- startIp?:string;
- endIp?:string;
- }
- // IP端口
- interface IpPort{
- startPort:number;
- endPort:number;
- }
- // ...
- // 定义防火墙策略:打开,入站阻止,出站允许。
- let policy: netFirewall.NetFirewallPolicy = {
- isOpen: true,
- inAction: netFirewall.FirewallRuleAction.RULE_DENY,
- outAction: netFirewall.FirewallRuleAction.RULE_ALLOW
- };
-
- // 给用户100设置防火墙策略。
- netFirewall.setNetFirewallPolicy(100, policy).then(() => {
- hilog.info(0x0000, 'testTag', `set firewall policy success.`);
- }).catch((error : BusinessError) => {
- hilog.error(0x0000, 'testTag', `error: set firewall policy failed: ${JSON.stringify(error)}`);
- });
用户通过addNetFirewallRule方法,添加防火墙规则。
- // 初始化具体的防火墙ip类型规则。
- let ipRule: netFirewall.NetFirewallRule = {
- name: 'rule1',
- description: 'rule1 description',
- direction: netFirewall.NetFirewallRuleDirection.RULE_IN,
- action: netFirewall.FirewallRuleAction.RULE_DENY,
- type: netFirewall.NetFirewallRuleType.RULE_IP,
- isEnabled: true,
- appUid: 20001,
- localIps: [
- {
- family: 1,
- type: 1,
- address: '10.10.1.1',
- mask: 32
- },{
- family: 1,
- type: 2,
- startIp: '10.20.1.1',
- endIp: '10.20.1.10'
- }] as IpType[],
- remoteIps:[
- {
- family: 1,
- type: 1,
- address: '20.10.1.1',
- mask: 32
- },{
- family: 1,
- type: 2,
- startIp: '20.20.1.1',
- endIp: '20.20.1.10'
- }] as IpType[],
- protocol: 6,
- localPorts: [
- {
- startPort: 1000,
- endPort: 1000
- },{
- startPort: 2000,
- endPort: 2001
- }] as IpPort[],
- remotePorts: [
- {
- startPort: 443,
- endPort: 443
- }] as IpPort[],
- userId: 100,
- interface:'wlan0' // 从API版本26.0.0开始支持
- };
- // 添加防火墙规则。
- netFirewall.addNetFirewallRule(ipRule).then((result: number) => {
- // ...
- hilog.info(0x0000, 'testTag', `rule Id: ${result}`);
- }, (reason: BusinessError) => {
- // ...
- hilog.error(0x0000, 'testTag', `error: add firewall rule failed: ${JSON.stringify(reason)}`);
- });
设备通过硬件接口,插入网线。
从@kit.NetworkKit中导入netFirewall命名空间。
- // 从@kit.NetworkKit中导入netFirewall命名空间。
- import { netFirewall } from '@kit.NetworkKit';
- import { BusinessError } from '@kit.BasicServicesKit';
- import { hilog } from '@kit.PerformanceAnalysisKit';
调用setNetFirewallPolicy方法,打开防火墙。
- interface domain{
- isWildcard: boolean;
- domain: string;
- }
- // ...
- // 定义防火墙策略:打开,入站阻止,出站允许。
- let policy: netFirewall.NetFirewallPolicy = {
- isOpen: true,
- inAction: netFirewall.FirewallRuleAction.RULE_DENY,
- outAction: netFirewall.FirewallRuleAction.RULE_ALLOW
- };
-
- // 给用户100设置防火墙策略
- netFirewall.setNetFirewallPolicy(100, policy).then(() => {
- hilog.info(0x0000, 'testTag', `set firewall policy success.`);
- }).catch((error : BusinessError) => {
- hilog.error(0x0000, 'testTag', `error: set firewall policy failed: ${JSON.stringify(error)}`);
- });
通过addNetFirewallRule方法,添加防火墙规则。
- // 初始化具体的防火墙域名类型规则。
- let domainRule: netFirewall.NetFirewallRule = {
- name: 'rule2',
- description: 'rule2 description',
- direction: netFirewall.NetFirewallRuleDirection.RULE_IN,
- action: netFirewall.FirewallRuleAction.RULE_DENY,
- type: netFirewall.NetFirewallRuleType.RULE_DOMAIN,
- isEnabled: true,
- appUid: 20002,
- domains: [
- {
- isWildcard: false,
- domain: 'www.HarmonyOS.cn'
- },{
- isWildcard: true,
- domain: '*.HarmonyOS.cn'
- }] as domain[],
- userId: 100,
- interface:'wlan0' // 从API版本26.0.0开始支持
- };
-
- // 添加防火墙规则。
- netFirewall.addNetFirewallRule(domainRule).then((result: number) => {
- // ...
- hilog.info(0x0000, 'testTag', `rule Id: ${result}`);
- }, (reason: BusinessError) => {
- // ...
- hilog.error(0x0000, 'testTag', `error: add firewall rule failed: ${JSON.stringify(reason)}`);
- });