1/*
2 * Copyright (C) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @file
18 * @kit NetworkKit
19 */
20
21/**
22 * Provides interfaces to manage net firewall.
23 * 
24 * @namespace netFirewall
25 * @syscap SystemCapability.Communication.NetManager.NetFirewall
26 * @since 12
27 */
28declare namespace netFirewall {
29  /**
30   * Set firewall policy by userId.
31   * <p>Enables or disables the firewall function, and specifies the default actions for inbound connections and
32   * outbound connections.</p>
33   *
34   * @permission ohos.permission.MANAGE_NET_FIREWALL
35   * @param { number } userId - Indicates the user ID. It cannot be the ID of a user that does not exist.
36   * @param { NetFirewallPolicy } policy - The firewall policy to be set.
37   * @returns { Promise<void> } Returns void.
38   * @throws { BusinessError } 201 - Permission denied.
39   * @throws { BusinessError } 202 - Non-system applications use system APIs.
40   * @throws { BusinessError } 401 - Parameter error.
41   * @throws { BusinessError } 2100001 - Invalid parameter value.
42   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
43   * @throws { BusinessError } 2100003 - System internal error.
44   * @throws { BusinessError } 29400000 - The specified user does not exist.
45   * @syscap SystemCapability.Communication.NetManager.NetFirewall
46   * @systemapi Hide this for inner system use.
47   * @since 12
48   */
49  function setNetFirewallPolicy(userId: number, policy: NetFirewallPolicy): Promise<void>;
50
51  /**
52   * Get firewall policy by userId.
53   * 
54   * @permission ohos.permission.GET_NET_FIREWALL
55   * @param { number } userId - Indicates the user ID. It cannot be the ID of a user that does not exist.
56   * @returns { Promise<NetFirewallPolicy> } Current user firewall policy.
57   * @throws { BusinessError } 201 - Permission denied.
58   * @throws { BusinessError } 202 - Non-system applications use system APIs.
59   * @throws { BusinessError } 401 - Parameter error.
60   * @throws { BusinessError } 2100001 - Invalid parameter value.
61   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
62   * @throws { BusinessError } 2100003 - System internal error.
63   * @throws { BusinessError } 29400000 - The specified user does not exist.
64   * @syscap SystemCapability.Communication.NetManager.NetFirewall
65   * @systemapi Hide this for inner system use.
66   * @since 12
67   */
68  function getNetFirewallPolicy(userId: number): Promise<NetFirewallPolicy>;
69
70  /**
71   * Add a firewall rule.
72   *
73   * @permission ohos.permission.MANAGE_NET_FIREWALL
74   * @param { NetFirewallRule } rule - Firewall rule.
75   * @returns { Promise<number> } ruleId - Indicates the rule ID, generated by the system.
76   * @throws { BusinessError } 201 - Permission denied.
77   * @throws { BusinessError } 202 - Non-system applications use system APIs.
78   * @throws { BusinessError } 401 - Parameter error.
79   * @throws { BusinessError } 2100001 - Invalid parameter value.
80   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
81   * @throws { BusinessError } 2100003 - System internal error.
82   * @throws { BusinessError } 29400000 - The specified user does not exist.
83   * @throws { BusinessError } 29400001 - The number of firewall rules exceeds the maximum.
84   * @throws { BusinessError } 29400002 - The number of IP address rules in the firewall rule exceeds the maximum.
85   * @throws { BusinessError } 29400003 - The number of port rules in the firewall rule exceeds the maximum.
86   * @throws { BusinessError } 29400004 - The number of domain rules in the firewall rule exceeds the maximum.
87   * @throws { BusinessError } 29400005 - The number of domain rules exceeds the maximum.
88   * @throws { BusinessError } 29400007 - The dns rule is duplication.
89   * @syscap SystemCapability.Communication.NetManager.NetFirewall
90   * @systemapi Hide this for inner system use.
91   * @since 12
92   */
93  function addNetFirewallRule(rule: NetFirewallRule): Promise<number>;
94
95  /**
96   * Update a firewall rule.
97   *
98   * @permission ohos.permission.MANAGE_NET_FIREWALL
99   * @param { NetFirewallRule } rule - Firewall rule.
100   * @returns { Promise<void> } Returns void.
101   * @throws { BusinessError } 201 - Permission denied.
102   * @throws { BusinessError } 202 - Non-system applications use system APIs.
103   * @throws { BusinessError } 401 - Parameter error.
104   * @throws { BusinessError } 2100001 - Invalid parameter value.
105   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
106   * @throws { BusinessError } 2100003 - System internal error.
107   * @throws { BusinessError } 29400000 - The specified user does not exist.
108   * @throws { BusinessError } 29400002 - The number of IP address rules in the firewall rule exceeds the maximum.
109   * @throws { BusinessError } 29400003 - The number of port rules in the firewall rule exceeds the maximum.
110   * @throws { BusinessError } 29400004 - The number of domain rules in the firewall rule exceeds the maximum.
111   * @throws { BusinessError } 29400005 - The number of domain rules exceeds the maximum.
112   * @throws { BusinessError } 29400006 - The specified rule does not exist.
113   * @throws { BusinessError } 29400007 - The dns rule is duplication.
114   * @syscap SystemCapability.Communication.NetManager.NetFirewall
115   * @systemapi Hide this for inner system use.
116   * @since 12
117   */
118  function updateNetFirewallRule(rule: NetFirewallRule): Promise<void>;
119
120  /**
121   * Delete a firewall rule by userId and ruleId.
122   *
123   * @permission ohos.permission.MANAGE_NET_FIREWALL
124   * @param { number } userId - Indicates the user ID. It cannot be the ID of a user that does not exist.
125   * @param { number } ruleId - Rule ID.
126   * @returns { Promise<void> } Returns void.
127   * @throws { BusinessError } 201 - Permission denied.
128   * @throws { BusinessError } 202 - Non-system applications use system APIs.
129   * @throws { BusinessError } 401 - Parameter error.
130   * @throws { BusinessError } 2100001 - Invalid parameter value.
131   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
132   * @throws { BusinessError } 2100003 - System internal error.
133   * @throws { BusinessError } 29400000 - The specified user does not exist.
134   * @throws { BusinessError } 29400006 - The specified rule does not exist.
135   * @syscap SystemCapability.Communication.NetManager.NetFirewall
136   * @systemapi Hide this for inner system use.
137   * @since 12
138   */
139  function removeNetFirewallRule(userId: number, ruleId: number): Promise<void>;
140
141  /**
142   * Get firewall rules by userId, and it is necessary to specify the pagination query parameters.
143   *
144   * @permission ohos.permission.GET_NET_FIREWALL
145   * @param { number } userId - Indicates the user ID. It cannot be the ID of a user that does not exist.
146   * @param { RequestParam } requestParam - Paging query input parameters.
147   * @returns { Promise<FirewallRulePage> } Paginated firewall rule list.
148   * @throws { BusinessError } 201 - Permission denied.
149   * @throws { BusinessError } 202 - Non-system applications use system APIs.
150   * @throws { BusinessError } 401 - Parameter error.
151   * @throws { BusinessError } 2100001 - Invalid parameter value.
152   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
153   * @throws { BusinessError } 2100003 - System internal error.
154   * @throws { BusinessError } 29400000 - The specified user does not exist.
155   * @syscap SystemCapability.Communication.NetManager.NetFirewall
156   * @systemapi Hide this for inner system use.
157   * @since 12
158   */
159  function getNetFirewallRules(userId: number, requestParam: RequestParam): Promise<FirewallRulePage>;
160
161  /**
162   * Get a specified firewall rule by userId and ruleId.
163   *
164   * @permission ohos.permission.GET_NET_FIREWALL
165   * @param { number } userId - Indicates the user ID. It cannot be the ID of a user that does not exist.
166   * @param { number } ruleId - Rule ID.
167   * @returns { Promise<NetFirewallRule> } Firewall Rule.
168   * @throws { BusinessError } 201 - Permission denied.
169   * @throws { BusinessError } 202 - Non-system applications use system APIs.
170   * @throws { BusinessError } 401 - Parameter error.
171   * @throws { BusinessError } 2100001 - Invalid parameter value.
172   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
173   * @throws { BusinessError } 2100003 - System internal error.
174   * @throws { BusinessError } 29400000 - The specified user does not exist.
175   * @throws { BusinessError } 29400006 - The specified rule does not exist.
176   * @syscap SystemCapability.Communication.NetManager.NetFirewall
177   * @systemapi Hide this for inner system use.
178   * @since 12
179   */
180  function getNetFirewallRule(userId: number, ruleId: number): Promise<NetFirewallRule>;
181
182  /**
183   * Get intercepted records by userId, and it is necessary to specify the pagination query parameters.
184   *
185   * @permission ohos.permission.GET_NET_FIREWALL
186   * @param { number } userId - Indicates the user ID. It cannot be the ID of a user that does not exist.
187   * @param { RequestParam } requestParam - Paging query input parameters.
188   * @returns { Promise<InterceptedRecordPage> } Block Record List.
189   * @throws { BusinessError } 201 - Permission denied.
190   * @throws { BusinessError } 202 - Non-system applications use system APIs.
191   * @throws { BusinessError } 401 - Parameter error.
192   * @throws { BusinessError } 2100001 - Invalid parameter value.
193   * @throws { BusinessError } 2100002 - Operation failed. Cannot connect to service.
194   * @throws { BusinessError } 2100003 - System internal error.
195   * @throws { BusinessError } 29400000 - The specified user does not exist.
196   * @syscap SystemCapability.Communication.NetManager.NetFirewall
197   * @systemapi Hide this for inner system use.
198   * @since 12
199   */
200  function getInterceptedRecords(userId: number, requestParam: RequestParam): Promise<InterceptedRecordPage>;
201
202  /**
203   * Firewall rule direction enumeration.
204   *
205   * @enum {number}
206   * @syscap SystemCapability.Communication.NetManager.NetFirewall
207   * @systemapi Hide this for inner system use.
208   * @since 12
209   */
210  enum NetFirewallRuleDirection {
211    /**
212     * Inbound.
213     *
214     * @syscap SystemCapability.Communication.NetManager.NetFirewall
215     * @systemapi Hide this for inner system use.
216     * @since 12
217     */
218    RULE_IN = 1,
219    /**
220     * Outbound.
221     *
222     * @syscap SystemCapability.Communication.NetManager.NetFirewall
223     * @systemapi Hide this for inner system use.
224     * @since 12
225     */
226    RULE_OUT = 2
227  }
228
229  /**
230   * Firewall rule behavior enumeration.
231   *
232   * @enum {number}
233   * @syscap SystemCapability.Communication.NetManager.NetFirewall
234   * @systemapi Hide this for inner system use.
235   * @since 12
236   */
237  enum FirewallRuleAction {
238    /**
239     * Allow access.
240     *
241     * @syscap SystemCapability.Communication.NetManager.NetFirewall
242     * @systemapi Hide this for inner system use.
243     * @since 12
244     */
245    RULE_ALLOW = 0,
246    /**
247     * Deny access.
248     *
249     * @syscap SystemCapability.Communication.NetManager.NetFirewall
250     * @systemapi Hide this for inner system use.
251     * @since 12
252     */
253    RULE_DENY = 1
254  }
255
256  /**
257   * Indicates the firewall rule type.
258   *
259   * @enum {number}
260   * @syscap SystemCapability.Communication.NetManager.NetFirewall
261   * @systemapi Hide this for inner system use.
262   * @since 12
263   */
264  enum NetFirewallRuleType {
265    /**
266     * IP type rules.
267     *
268     * @syscap SystemCapability.Communication.NetManager.NetFirewall
269     * @systemapi Hide this for inner system use.
270     * @since 12
271     */
272    RULE_IP = 1,
273    /**
274     * Domain type rules.
275     *
276     * @syscap SystemCapability.Communication.NetManager.NetFirewall
277     * @systemapi Hide this for inner system use.
278     * @since 12
279     */
280    RULE_DOMAIN = 2,
281    /**
282     * DNS type rules.
283     *
284     * @syscap SystemCapability.Communication.NetManager.NetFirewall
285     * @systemapi Hide this for inner system use.
286     * @since 12
287     */
288    RULE_DNS = 3
289  }
290
291  /**
292   * Pagination query sorting field.
293   *
294   * @enum {number}
295   * @syscap SystemCapability.Communication.NetManager.NetFirewall
296   * @systemapi Hide this for inner system use.
297   * @since 12
298   */
299  enum NetFirewallOrderField {
300    /**
301     * Sort rule names, it can be referenced only by the getNetFirewallRules interface.
302     *
303     * @syscap SystemCapability.Communication.NetManager.NetFirewall
304     * @systemapi Hide this for inner system use.
305     * @since 12
306     */
307    ORDER_BY_RULE_NAME = 1,
308    /**
309     * Sort the recorded time, it can be referenced only by the getNetFirewallRules interface.
310     *
311     * @syscap SystemCapability.Communication.NetManager.NetFirewall
312     * @systemapi Hide this for inner system use.
313     * @since 12
314     */
315    ORDER_BY_RECORD_TIME = 100,
316  }
317
318  /**
319   * Pagination query sorting type.
320   *
321   * @enum {number}
322   * @syscap SystemCapability.Communication.NetManager.NetFirewall
323   * @systemapi Hide this for inner system use.
324   * @since 12
325   */
326  enum NetFirewallOrderType {
327    /**
328     * Ascending order.
329     *
330     * @syscap SystemCapability.Communication.NetManager.NetFirewall
331     * @systemapi Hide this for inner system use.
332     * @since 12
333     */
334    ORDER_ASC = 1,
335    /**
336     * Descending order.
337     *
338     * @syscap SystemCapability.Communication.NetManager.NetFirewall
339     * @systemapi Hide this for inner system use.
340     * @since 12
341     */
342    ORDER_DESC = 100,
343  }
344
345  /**
346   * Firewall policy.
347   *
348   * @interface NetFirewallPolicy
349   * @syscap SystemCapability.Communication.NetManager.NetFirewall
350   * @systemapi Hide this for inner system use.
351   * @since 12
352   */
353  interface NetFirewallPolicy {
354    /**
355     * Whether the firewall is open.
356     *
357     * @type {boolean}
358     * @syscap SystemCapability.Communication.NetManager.NetFirewall
359     * @systemapi Hide this for inner system use.
360     * @since 12
361     */
362    isOpen: boolean;
363
364    /**
365     * Inbound connections are allowed or denied by default.
366     *
367     * @type {FirewallRuleAction}
368     * @syscap SystemCapability.Communication.NetManager.NetFirewall
369     * @systemapi Hide this for inner system use.
370     * @since 12
371     */
372    inAction: FirewallRuleAction;
373
374    /**
375     * Outbound connections are allowed or denied by default.
376     *
377     * @type {FirewallRuleAction}
378     * @syscap SystemCapability.Communication.NetManager.NetFirewall
379     * @systemapi Hide this for inner system use.
380     * @since 12
381     */
382    outAction: FirewallRuleAction;
383  }
384
385  /**
386   * Firewall IP parameters.
387   *
388   * @interface NetFirewallIpParams
389   * @syscap SystemCapability.Communication.NetManager.NetFirewall
390   * @systemapi Hide this for inner system use.
391   * @since 12
392   */
393  interface NetFirewallIpParams {
394    /**
395     * 1: IP address or subnet, when using a single IP, the mask is 32; 2: IP segment.
396     *
397     * @type {number}
398     * @syscap SystemCapability.Communication.NetManager.NetFirewall
399     * @systemapi Hide this for inner system use.
400     * @since 12
401     */
402    type: number;
403    /**
404     * 1: IPv4, 2: IPv6, default is IPv4.
405     *
406     * @type {?number}
407     * @syscap SystemCapability.Communication.NetManager.NetFirewall
408     * @systemapi Hide this for inner system use.
409     * @since 12
410     */
411    family?: number;
412    /**
413     * IP address: Valid when type equals 1, otherwise it will be ignored.
414     *
415     * @type {?string}
416     * @syscap SystemCapability.Communication.NetManager.NetFirewall
417     * @systemapi Hide this for inner system use.
418     * @since 12
419     */
420    address?: string;
421    /**
422     * IPv4: subnet mask, IPv6: prefix, valid when type equals 1, otherwise it will be ignored.
423     *
424     * @type {?number}
425     * @syscap SystemCapability.Communication.NetManager.NetFirewall
426     * @systemapi Hide this for inner system use.
427     * @since 12
428     */
429    mask?: number;
430    /**
431     * Start IP: valid when type equals 2, otherwise it will be ignored.
432     *
433     * @type {?string}
434     * @syscap SystemCapability.Communication.NetManager.NetFirewall
435     * @systemapi Hide this for inner system use.
436     * @since 12
437     */
438    startIp?: string;
439    /**
440     * End IP: valid when type equals 2, otherwise it will be ignored.
441     *
442     * @type {?string}
443     * @syscap SystemCapability.Communication.NetManager.NetFirewall
444     * @systemapi Hide this for inner system use.
445     * @since 12
446     */
447    endIp?: string;
448  }
449
450  /**
451   * Firewall port parameters.
452   *
453   * @interface NetFirewallPortParams
454   * @syscap SystemCapability.Communication.NetManager.NetFirewall
455   * @systemapi Hide this for inner system use.
456   * @since 12
457   */
458  interface NetFirewallPortParams {
459    /**
460     * Start port, when there is only one port, the start port is the same as the end port.
461     *
462     * @type {number}
463     * @syscap SystemCapability.Communication.NetManager.NetFirewall
464     * @systemapi Hide this for inner system use.
465     * @since 12
466     */
467    startPort: number;
468    /**
469     * End port, when there is only one port, the start port is the same as the end port.
470     *
471     * @type {number}
472     * @syscap SystemCapability.Communication.NetManager.NetFirewall
473     * @systemapi Hide this for inner system use.
474     * @since 12
475     */
476    endPort: number;
477  }
478
479  /**
480   * Firewall domain name parameters.
481   *
482   * @interface NetFirewallDomainParams
483   * @syscap SystemCapability.Communication.NetManager.NetFirewall
484   * @systemapi Hide this for inner system use.
485   * @since 12
486   */
487  interface NetFirewallDomainParams {
488    /**
489     * Is there a universal configuration rule.
490     *
491     * @type {boolean}
492     * @syscap SystemCapability.Communication.NetManager.NetFirewall
493     * @systemapi Hide this for inner system use.
494     * @since 12
495     */
496    isWildcard: boolean;
497    /**
498     * Domain: when isWildcard is false, the complete domain that needs to be determined;
499     * When isWildcard is true, fuzzy domain only support domains like *.openharmony.cn; *.com.
500     *
501     * @type {string}
502     * @syscap SystemCapability.Communication.NetManager.NetFirewall
503     * @systemapi Hide this for inner system use.
504     * @since 12
505     */
506    domain: string;
507  }
508
509  /**
510   * Firewall DNS parameters.
511   *
512   * @interface NetFirewallDnsParams
513   * @syscap SystemCapability.Communication.NetManager.NetFirewall
514   * @systemapi Hide this for inner system use.
515   * @since 12
516   */
517  interface NetFirewallDnsParams {
518    /**
519     * Primary DNS.
520     *
521     * @type {string}
522     * @syscap SystemCapability.Communication.NetManager.NetFirewall
523     * @systemapi Hide this for inner system use.
524     * @since 12
525     */
526    primaryDns: string;
527    /**
528     * Backup DNS.
529     *
530     * @type {?string}
531     * @syscap SystemCapability.Communication.NetManager.NetFirewall
532     * @systemapi Hide this for inner system use.
533     * @since 12
534     */
535    standbyDns?: string;
536  }
537
538  /**
539   * Firewall rules.
540   *
541   * @interface NetFirewallRule
542   * @syscap SystemCapability.Communication.NetManager.NetFirewall
543   * @systemapi Hide this for inner system use.
544   * @since 12
545   */
546  interface NetFirewallRule {
547    /**
548     * User id.
549     *
550     * @type {number}
551     * @syscap SystemCapability.Communication.NetManager.NetFirewall
552     * @systemapi Hide this for inner system use.
553     * @since 12
554     */
555    userId: number;
556    /**
557     * Rule name.
558     *
559     * @type {string}
560     * @syscap SystemCapability.Communication.NetManager.NetFirewall
561     * @systemapi Hide this for inner system use.
562     * @since 12
563     */
564    name: string;
565    /**
566     * Rule direction, inbound or outbound.
567     *
568     * @type {NetFirewallRuleDirection}
569     * @syscap SystemCapability.Communication.NetManager.NetFirewall
570     * @systemapi Hide this for inner system use.
571     * @since 12
572     */
573    direction: NetFirewallRuleDirection;
574    /**
575     * Rule action.
576     *
577     * @type {FirewallRuleAction}
578     * @syscap SystemCapability.Communication.NetManager.NetFirewall
579     * @systemapi Hide this for inner system use.
580     * @since 12
581     */
582    action: FirewallRuleAction;
583    /**
584     * Rule type.
585     *
586     * @type {NetFirewallRuleType}
587     * @syscap SystemCapability.Communication.NetManager.NetFirewall
588     * @systemapi Hide this for inner system use.
589     * @since 12
590     */
591    type: NetFirewallRuleType;
592    /**
593     * Whether the rule is enabled.
594     *
595     * @type {boolean}
596     * @syscap SystemCapability.Communication.NetManager.NetFirewall
597     * @systemapi Hide this for inner system use.
598     * @since 12
599     */
600    isEnabled: boolean;
601    /**
602     * Rule id: When a rule is added to the system, the system generates a rule ID.
603     *
604     * @type {?number}
605     * @syscap SystemCapability.Communication.NetManager.NetFirewall
606     * @systemapi Hide this for inner system use.
607     * @since 12
608     */
609    id?: number;
610    /**
611     * Rule description.
612     *
613     * @type {?string}
614     * @syscap SystemCapability.Communication.NetManager.NetFirewall
615     * @systemapi Hide this for inner system use.
616     * @since 12
617     */
618    description?: string;
619    /**
620     * Application or service UID.
621     *
622     * @type {?number}
623     * @syscap SystemCapability.Communication.NetManager.NetFirewall
624     * @systemapi Hide this for inner system use.
625     * @since 12
626     */
627    appUid?: number;
628    /**
629     * Local IP address: valid when ruleType = RULE_IP, otherwise it will be ignored.
630     *
631     * @type {?Array<NetFirewallIpParams>}
632     * @syscap SystemCapability.Communication.NetManager.NetFirewall
633     * @systemapi Hide this for inner system use.
634     * @since 12
635     */
636    localIps?: Array<NetFirewallIpParams>;
637    /**
638     * Remote IP address: valid when ruleType = RULE_IP, otherwise it will be ignored.
639     *
640     * @type {?Array<NetFirewallIpParams>}
641     * @syscap SystemCapability.Communication.NetManager.NetFirewall
642     * @systemapi Hide this for inner system use.
643     * @since 12
644     */
645    remoteIps?: Array<NetFirewallIpParams>;
646    /**
647     * Protocol, 1: ICMPv4, 6: TCP, 17: UDP, 58: ICMPv6. Valid when ruleType = RULE_IP, otherwise it will be ignored.
648     *
649     * @type {?number}
650     * @syscap SystemCapability.Communication.NetManager.NetFirewall
651     * @systemapi Hide this for inner system use.
652     * @since 12
653     */
654    protocol?: number;
655    /**
656     * Local ports: valid when ruleType = RULE_IP, otherwise it will be ignored.
657     *
658     * @type {?Array<NetFirewallPortParams>}
659     * @syscap SystemCapability.Communication.NetManager.NetFirewall
660     * @systemapi Hide this for inner system use.
661     * @since 12
662     */
663    localPorts?: Array<NetFirewallPortParams>;
664    /**
665     * Remote ports: valid when ruleType = RULE_IP, otherwise it will be ignored.
666     *
667     * @type {?Array<NetFirewallPortParams>}
668     * @syscap SystemCapability.Communication.NetManager.NetFirewall
669     * @systemapi Hide this for inner system use.
670     * @since 12
671     */
672    remotePorts?: Array<NetFirewallPortParams>;
673    /**
674     * Domain name list: valid when ruleType = RULE_DOMAIN, otherwise it will be ignored.
675     *
676     * @type {?Array<NetFirewallDomainParams>}
677     * @syscap SystemCapability.Communication.NetManager.NetFirewall
678     * @systemapi Hide this for inner system use.
679     * @since 12
680     */
681    domains?: Array<NetFirewallDomainParams>;
682    /**
683     * DNS: valid when ruleType = RULE_DNS, otherwise it will be ignored.
684     *
685     * @type {?NetFirewallDnsParams}
686     * @syscap SystemCapability.Communication.NetManager.NetFirewall
687     * @systemapi Hide this for inner system use.
688     * @since 12
689     */
690    dns?: NetFirewallDnsParams;
691  }
692
693  /**
694   * Intercepted record.
695   *
696   * @interface InterceptedRecord
697   * @syscap SystemCapability.Communication.NetManager.NetFirewall
698   * @systemapi Hide this for inner system use.
699   * @since 12
700   */
701  interface InterceptedRecord {
702    /**
703     * Time stamp.
704     *
705     * @type {number}
706     * @syscap SystemCapability.Communication.NetManager.NetFirewall
707     * @systemapi Hide this for inner system use.
708     * @since 12
709     */
710    time: number;
711    /**
712     * Local IP.
713     *
714     * @type {?string}
715     * @syscap SystemCapability.Communication.NetManager.NetFirewall
716     * @systemapi Hide this for inner system use.
717     * @since 12
718     */
719    localIp?: string;
720    /**
721     * Remote IP.
722     *
723     * @type {?string}
724     * @syscap SystemCapability.Communication.NetManager.NetFirewall
725     * @systemapi Hide this for inner system use.
726     * @since 12
727     */
728    remoteIp?: string;
729    /**
730     * Local port.
731     *
732     * @type {?number}
733     * @syscap SystemCapability.Communication.NetManager.NetFirewall
734     * @systemapi Hide this for inner system use.
735     * @since 12
736     */
737    localPort?: number;
738    /**
739     * Remote port.
740     *
741     * @type {?number}
742     * @syscap SystemCapability.Communication.NetManager.NetFirewall
743     * @systemapi Hide this for inner system use.
744     * @since 12
745     */
746    remotePort?: number;
747    /**
748     * Transport layer protocol.
749     *
750     * @type {?number}
751     * @syscap SystemCapability.Communication.NetManager.NetFirewall
752     * @systemapi Hide this for inner system use.
753     * @since 12
754     */
755    protocol?: number;
756    /**
757     * Application or service ID.
758     *
759     * @type {?number}
760     * @syscap SystemCapability.Communication.NetManager.NetFirewall
761     * @systemapi Hide this for inner system use.
762     * @since 12
763     */
764    appUid?: number;
765    /**
766     * Blocked domain name information.
767     *
768     * @type {?string}
769     * @syscap SystemCapability.Communication.NetManager.NetFirewall
770     * @systemapi Hide this for inner system use.
771     * @since 12
772     */
773    domain?: string;
774  }
775
776  /**
777   * Pagination query input parameters.
778   *
779   * @interface RequestParam
780   * @syscap SystemCapability.Communication.NetManager.NetFirewall
781   * @systemapi Hide this for inner system use.
782   * @since 12
783   */
784  interface RequestParam {
785    /**
786     * Page number: indicates the page number to be queried. The start value is 1.
787     *
788     * @type {number}
789     * @syscap SystemCapability.Communication.NetManager.NetFirewall
790     * @systemapi Hide this for inner system use.
791     * @since 12
792     */
793    page: number;
794    /**
795     * Page size: indicates the number of data records to be queried at a time. The maximum value is 50.
796     *
797     * @type {number}
798     * @syscap SystemCapability.Communication.NetManager.NetFirewall
799     * @systemapi Hide this for inner system use.
800     * @since 12
801     */
802    pageSize: number;
803    /**
804     * Sort field.
805     *
806     * @type {NetFirewallOrderField}
807     * @syscap SystemCapability.Communication.NetManager.NetFirewall
808     * @systemapi Hide this for inner system use.
809     * @since 12
810     */
811    orderField: NetFirewallOrderField;
812    /**
813     * Sort Type: ascending or descending.
814     *
815     * @type {NetFirewallOrderType}
816     * @syscap SystemCapability.Communication.NetManager.NetFirewall
817     * @systemapi Hide this for inner system use.
818     * @since 12
819     */
820    orderType: NetFirewallOrderType;
821  }
822
823  /**
824   * Rule page information.
825   *
826   * @interface FirewallRulePage
827   * @syscap SystemCapability.Communication.NetManager.NetFirewall
828   * @systemapi Hide this for inner system use.
829   * @since 12
830   */
831  interface FirewallRulePage {
832    /**
833     * Current page number: indicates the page number of this query.
834     *
835     * @type {number}
836     * @syscap SystemCapability.Communication.NetManager.NetFirewall
837     * @systemapi Hide this for inner system use.
838     * @since 12
839     */
840    page: number;
841    /**
842     * Page size: maximum number of records on a page for this query.
843     *
844     * @type {number}
845     * @syscap SystemCapability.Communication.NetManager.NetFirewall
846     * @systemapi Hide this for inner system use.
847     * @since 12
848     */
849    pageSize: number;
850    /**
851     * Total pages: total number of pages.
852     *
853     * @type {number}
854     * @syscap SystemCapability.Communication.NetManager.NetFirewall
855     * @systemapi Hide this for inner system use.
856     * @since 12
857     */
858    totalPage: number;
859    /**
860     * Page data: all records displayed on this page.
861     *
862     * @type {Array<NetFirewallRule> }
863     * @syscap SystemCapability.Communication.NetManager.NetFirewall
864     * @systemapi Hide this for inner system use.
865     * @since 12
866     */
867    data: Array<NetFirewallRule>;
868  }
869
870  /**
871   * Intercepted record page information.
872   *
873   * @interface InterceptedRecordPage
874   * @syscap SystemCapability.Communication.NetManager.NetFirewall
875   * @systemapi Hide this for inner system use.
876   * @since 12
877   */
878  interface InterceptedRecordPage {
879    /**
880     * Current page number: indicates the page number of this query.
881     *
882     * @type {number}
883     * @syscap SystemCapability.Communication.NetManager.NetFirewall
884     * @systemapi Hide this for inner system use.
885     * @since 12
886     */
887    page: number;
888    /**
889     * Page size: maximum number of records on a page for this query.
890     *
891     * @type {number}
892     * @syscap SystemCapability.Communication.NetManager.NetFirewall
893     * @systemapi Hide this for inner system use.
894     * @since 12
895     */
896    pageSize: number;
897    /**
898     * Total pages: total number of pages.
899     *
900     * @type {number}
901     * @syscap SystemCapability.Communication.NetManager.NetFirewall
902     * @systemapi Hide this for inner system use.
903     * @since 12
904     */
905    totalPage: number;
906    /**
907     * Page data: all records displayed on this page.
908     *
909     * @type {Array<InterceptedRecord>}
910     * @syscap SystemCapability.Communication.NetManager.NetFirewall
911     * @systemapi Hide this for inner system use.
912     * @since 12
913     */
914    data: Array<InterceptedRecord>;
915  }
916}
917
918export default netFirewall;