
[space] Docs

[title] Accounts
[path] Core Configuration/Core Configuration Overview/Administrators/Administrators Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Administrators](docId\:wSxJclHYrjU6crXuOA47J)**&#x20;> Accounts**.
:::

## Overview

The **Accounts&#x20;**&#x6D;odule allows you to create and **manage&#x20;**&#x61;dministrative profiles for Dashboard **access**. It is designed to give you full **control&#x20;**&#x6F;ver your team **members**, allowing you to invite new users, assign specific operational roles, and monitor their last login activity.

:::hint{type="info"}
**How it works:&#x20;**&#x59;ou create an account by **providing&#x20;**&#x74;he user details and selecting a predefined **role**. The assigned role strictly defines what **menus&#x20;**&#x74;he user can see and what **configurations&#x20;**&#x74;hey can modify, ensuring a secure delegation of **tasks**.
:::

## Interface Overview

The **interface&#x20;**&#x66;eatures top controls for **filtering&#x20;**&#x61;nd account creation, followed by a detailed list of all registered **administrators**.

### Top Controls

Use these tools to **manage&#x20;**&#x79;our list and add new team **members**.

| **Interface Element**                        | **Description & Focus**                                                                                                                                                                                                                                                    |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search**                                   | A search bar to quickly **locate&#x20;**&#x61; specific administrative **account&#x20;**&#x62;y name or role.                                                                                                                                                              |
| **Role Filters**                             | Quick toggle **buttons&#x20;**&#x61;llowing you to **filter&#x20;**&#x74;he user list by specific **permission&#x20;**&#x6C;evels like Full control, Editor, Policy Manager, or Read-only.                                                                                 |
| <font color="#2563eb">`+ Add account`</font> | The blue **button&#x20;**&#x6F;pens the **configuration&#x20;**&#x77;indow to **create&#x20;**&#x61;nd invite a new administrative **user&#x20;**&#x74;o the platform.<br />Click here to learn how to create a new profile: [+ Add Account](docId:91LVTU8SG35m7isLYrvy0)  |

## List View

The main table displays all active **accounts&#x20;**&#x61;nd their current **status**.

| **Interface Element** | **Description & Focus**                                                                                                                                    |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Full name**         | Displays the profile **initials&#x20;**&#x61;nd the registered **name&#x20;**&#x6F;f the **administrator**.                                                |
| **Role**              | Shows the current **permission&#x20;**&#x6C;evel **assigned&#x20;**&#x74;o the user, highlighting their **access&#x20;**&#x72;ights.                       |
| **Last login**        | Indicates the exact **date&#x20;**&#x74;he user last successfully **authenticated&#x20;**&#x61;nd accessed the **dashboard**.                              |
| **Actions**           | Click the **pencil&#x20;**&#x69;con to **edit&#x20;**&#x74;he account details or the trash bin icon to permanently **delete&#x20;**&#x74;he user profile.  |

## Configuration & Logic

### Role-Based Access Control

Assigning the correct **role&#x20;**&#x69;s fundamental for network **security**, by utilizing the principle of **least privilege**, you can ensure that team members only have the **access&#x20;**&#x74;hey strictly need. You can assign a **Policy Manager** role to staff who only need to adjust **filtering&#x20;**&#x72;ules, while reserving **Full Control** for top-level system administrators.

## Initialize Creation

To register a **new administrativ**e user for your dashboard, click the blue <font color="#2563eb">`+ Add account`</font> button located in the top right corner of the table. A **configuration&#x20;**&#x70;anel will open.

:::hint{type="info"}
For a **step-by-step explanation** on how to fill out the required data and properly complete the setup of your new team **member**, please refer to our **dedicated&#x20;**&#x67;uide: [+ Add Account](docId:91LVTU8SG35m7isLYrvy0)&#x20;
:::


[title] Policies
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi) > **Policies**.
:::

## <font color="#0C121D">Overview</font>

The **Policy&#x20;**&#x73;ection serves as the central hub for your network's security logic. Here, you can create and manage customized security profiles that bundle your filtering rules into single, deployable objects. This dashboard provides a clear view of all your active configurations, allowing you to easily apply specific protection standards to any of your networks.

## Policies

Policies are the heart of your filtering system. A **Policy** is a container that bundles all your filtering rules (Malware, Content, GeoBlocking, etc.) into a single object.

Instead of configuring every network individually, you create a Policy (e.g., "Guest Wi-Fi" or "Office Staff") and assign it to as many networks as needed.

### Top Navigation Tools

| <font color="#111827">Interface Element</font> | Focus & Description                                                                                         |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| <font color="#374151">**Search Bar**</font>    | Located at the top left. Use this to filter policies by name.                                               |
| **Search for a domain**                        | A quick redirect to the [Domain Lookup tool](docId\:q-1NL3ukJQN772Xg5lj1d) to verify domain categorization. |
|                                                | The blue button (top-right). Click here to create a new policy.                                             |

### Policy List Details

The main grid displays the specific details for every configured policy:

| <font color="#111827">Interface Element</font>       | Focus & Description                                                                |
| ---------------------------------------------------- | ---------------------------------------------------------------------------------- |
| <font color="#374151">**Name**</font>                | The identifier assigned to the policy.                                             |
| <font color="#374151">**Type**</font>                | Indicates the strictness level (**Standard&#x20;**&#x6F;r **Restricted**).         |
| <font color="#374151">**Shared**</font>              | Indicates if the policy is available to other linked organizations or sub-tenants. |
| <font color="#374151">**Associated Networks**</font> | Shows how many networks are currently using this policy.                           |
| <font color="#374151">**Actions**</font>             | Use the pencil icon to Edit and the trash icon to Delete                           |

## Initialize Creation

Click the <font color="#2563eb">`+ Add policy`</font> button in the top-right corner. A configuration panel will open.

:::hint{type="info"}
For a step-by-step explanation on how to fill out this panel (Name, Type, and Shared settings) and complete the initial setup, please refer to our dedicated guide: [New Policy](docId\:fOZQ6VrVe-CPb81d_ApGf)&#x20;
:::

## Accessing the Configuration Dashboard

Once the policy is created, you must open it to view or modify its rules.

- **Locate** your policy in the main list.
- **Click** directly on the **Policy Name** (e.g., "First configuration...").

The dashboard that opens next depends on the **Type** assigned to the policy:

- **If the Policy is "Standard":** Standard policies allow you to fully customize every aspect of the protection, including Malware, Content Filtering, and GeoBlocking.
- **If the Policy is "Restricted":** Restricted policies are pre-configured profiles where the core security rules are locked to ensure consistent protection. The interface will differ as modification options are limited.

:::hint{type="info"}
To understand the interface structure and the available modules for both policy types, please refer to the main configuration: [Policy configuration](docId:8AWjbTxqop9G95XTyt_FS)
:::


[title] Start the Migration
[path] Migration/Migration Overview/

:::hint{type="info"}
Please note that this migration documentation is continuously being updated and expanded to reflect the latest platform improvements and newly supported configurations.

**Last update: 14 February 2026**
:::

## Overview

Transitioning your account to the **New Platform 2026** begins with a simple click. The process is designed to be safe, and your DNS protection will remain active and uninterrupted throughout the entire procedure.

Here is how to initiate the transition:

## Locate the Migration Banner

Log into your current legacy dashboard. If your account is eligible for the upgrade, you will see a yellow banner at the top of the screen indicating **"Migration Panel - Read Only"**.

:::hint{type="info"}
While you see this initial banner, your account is still fully located within the old system, just locked from edits to prevent configuration conflicts.
:::

## Initiate the Process

To begin, click the blue **"Go to Migration"** button on the right side of the yellow banner.

### The Transition State&#x20;

As soon as you click the button, your account enters a temporary **transition state**.

Please be aware of the following changes during this phase:

- **Account Visibility:** Your account will temporarily "disappear" and will no longer be visible or manageable from the standard Legacy Cloud interface.
- **Updated Banner:** The top banner will update, and the blue button will now say **"Go to migration confirmation"**.
- **Active Protection:** Do not worry, your DNS protection is still 100% active. You are simply in a pending state waiting for your final review.

You are now ready to verify your data and finalize the move.

:::hint{type="info"}
If you want to see how to complete the migration and safely review your settings, go to: [Confirm the Migration](docId\:VaQ09ljc79YXbjO2eQs4f)&#x20;
:::


[title] Router
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Router Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments ](docId\:h62CnWLZ1OyHnHPKL5AS9) > **Router**. This will open the main dashboard for managing your network identifiers.
:::

## Overview

The **Router interface** provides a centralized dashboard to create, manage, and monitor all your hardware integrations. From this screen, you can easily deploy new devices or check the operational status of your existing network routers.

## Interface Overview

The interface is divided into specific areas to help you manage your deployments and read your hardware configurations clearly.

### Top Navigation Tools

At the top of the page, you will find the primary tools for interacting with your router list:

| **Interface Element**                       | **Focus & Description**                                                                                                                                                    |
| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search**                                  | Located at the top left. Use this text field labeled **Search&#x20;**&#x74;o quickly filter the list by name.                                                              |
| <font color="#2563eb">`+ Add Router`</font> | The primary blue button at the top right labeled [+ Add Router](docId\:ctgo6a2iiTJ2xs4SN0t_u). Click here to deploy and configure a completely new device on your network. |

### Router List Details

The main grid displays the specific details for every router configured in the system:

| **Interface Element** | **Focus & Description**                                                                                                                                                                                                                                                                                                    |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Status**            | A visual cue in the **Status&#x20;**&#x63;olumn showing the current operational state and connectivity of the router.                                                                                                                                                                                                      |
| **Name**              | Displays the **name&#x20;**&#x63;hosen for the device and its associated **brand&#x20;**&#x75;nder the Name column.                                                                                                                                                                                                        |
| **Mode**              | Displays the specific connection method configured for the device, such as DDNS or DNS over HTTPS, along with the total number of associated WAN connections.                                                                                                                                                              |
| **Note**              | Displays any custom descriptions or labels assigned to the device under the **Note** column.                                                                                                                                                                                                                               |
| **Details View**      | The magnifying glass icon. Clicking this icon or anywhere on the specific configuration row opens a dedicated page to manage its active network connections. To learn exactly how to manage these configurations, please refer to our dedicated documentation: <br />****[Router Connections](docId:9WZpXo2fzJj5KVpcylk4a) |
| **Actions**           | Located on the far right of each row. Click the three dots icon to open a contextual menu where you can edit configurations or delete the router entry.                                                                                                                                                                    |

## Manage Router Connections

When you click on a specific router or its magnifying glass icon, a new screen opens displaying its active network connections. From this area, you can monitor the assigned IP addresses and update the active security policies.

:::hint{type="info"}
For a detailed explanation of the interface and **step-by-step** instructions on how to modify these specific configurations, please refer to our dedicated documentation: [Router Connections](docId:9WZpXo2fzJj5KVpcylk4a)&#x20;
:::

## Initialize Creation

To register a **new Router** in your network, click the blue <font color="#2563eb">`+ Add Router`</font> button located in the top right corner. A configuration panel will open.

:::hint{type="info"}
For a **step-by-step** explanation on how to fill out the required data and properly complete the initial setup of your new hardware, please refer to our dedicated guide: [+ Add Router](docId\:ctgo6a2iiTJ2xs4SN0t_u)&#x20;
:::


[title] New exception
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/Policy Exceptions/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), click button and click <font color="#2563eb">`+ Create new exception group`</font>.
:::

## Overview

This wizard allows you to define a **custom list of domains**.

- **Purpose:** You are creating a "container" of websites that you want to treat differently from your standard policy (e.g., a list of "Whitelisted Partner Sites" or "Blacklisted Games").
- **Flexibility:** Once created, this single list can be assigned to multiple different policies (e.g., HQ, Branch Office, Guest Wi-Fi) without re-typing the domains.

## Interface Overview

The creation window is divided into two logical sections: the group definition and the domain management.

| **Interface Element** | Focus & Description                                                                                                                                                                                                                    |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Group Name**        | A name to identify this list (e.g., "Marketing Whitelist").                                                                                                                                                                            |
| **Type**              | Select the logic for this entire group:<br /><br />• **Allow (White):** Domains listed here will *always* be accessible, even if the category is blocked.<br /><br />• **Block (Blue):** Domains listed here will *always* be blocked. |
| **Add Domain Input**  | A text box found below the type selection where you type the specific website address (e.g., facebook.com).                                                                                                                            |
| **Arrow Icon (➜)**    | The confirmation button next to the input field. Clicking this moves the domain from the input box into your active list.                                                                                                              |
| **Domain List**       | Displays all the websites currently added to this group.                                                                                                                                                                               |
| **"X" Icon**          | Located next to each domain in the list. Click this to delete a specific entry if you made a mistake.                                                                                                                                  |

## Configuration Steps

### Define Group Identity

- **Name:** Enter a clear, descriptive name.
- **Select Type:** Choose whether this is an **Allow** list or a **Block** list. The selected card will be highlighted (e.g., the "Block" card turns blue when selected).

### Populate the List&#x20;

You must add the domains one by one (or paste them):

- Type the domain name in the input field (e.g., example.com).
- Click the **Arrow Icon** (or press Enter).
- The domain will appear in the list below.
- Repeat this process for all websites you wish to include.

:::hint{type="info"}
You generally do not need to type http\:// or www. Simply entering the root domain (e.g., youtube.com) covers all subdomains automatically.
:::

### Save the Group&#x20;

Once your list is complete, click the blue **Save** (or **Create**) button at the bottom of the modal.

## Next Step

You have successfully created the list, **but it is not yet active**. The system knows the list exists, but it doesn't know which network to apply it to.

:::hint{type="info"}
To make this list effective, you must now link it to a policy: [Assign Exception](docId\:mXcGgRayA1H2EcvNrns0f)&#x20;
:::


[title] Routers Configuration
[path] Router Guides/

## Overview

Configuring your router is the most efficient way to protect your entire network. By updating the primary network gateway, every connected device automatically inherits your filtering policies without requiring individual software installations.

## General Configuration Steps

While interfaces vary by manufacturer, the core process remains identical across all hardware.

- Log in to your router admin panel using your administrative credentials.
- Locate the network settings. Look for sections labeled WAN, DHCP, or Internet Setup.
- Replace the existing primary and secondary DNS IP addresses with the Anycast IP addresses.
- Save the configuration changes.
- Restart the router or clear the local DNS cache to enforce the new routing rules immediately.

## Router Brands

| Brand                                                | Description                                                                                   |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| [Bind](docId\:XcbBjLzpeT1jtnQ62MTi5)                 | Open-source DNS software commonly used on Linux and Unix servers.                             |
| [Bright Box](docId\:W2ei_p7bS0tHn76a2UU_U)           | Standard ISP-provided wireless router typically used in residential or small office networks. |
| [Cisco](docId\:rGg4w44hq6xfzd5RXkpzm)                | Enterprise-grade networking hardware known for advanced routing and security features.        |
| [Draytek](docId\:dIPZ50HbHqwu4jIdHTISq)              | Business-class broadband routers featuring robust VPN and multi-WAN capabilities.             |
| [Engenius SD-WAN](docId\:xiOpUMuh2a8fKqEisddC9)      | Cloud-managed networking gateways designed for secure multi-site connectivity.                |
| [Fritz!Box](docId\:XFbBhr5OMQVHnxuGGdmuV)            | Popular European residential gateways with integrated telephony and smart home features.      |
| [Grandstream](docId\:G4n9qjLWTHmzc_M9b5HdI)          | Unified communications network appliances tailored for VoIP and business routing.             |
| [IPCOP](docId:25vn-7J4n2hFm5xRaTaUi)                 | Open-source Linux firewall distribution built for securing small to medium networks.          |
| [Linksys](docId:9MN8ldzOzTJmR0caa0wn3)               | Consumer and small business routers focusing on accessible web-based configuration.           |
| [MikroTik](docId\:bBKQM51AuFK7z1qN4n30T)             | Versatile networking hardware powered by RouterOS for highly customizable routing.            |
| [Netgear](docId:7DRO1AMS67463ScBLPzmu)               | Widely deployed consumer and business networking switches and wireless routers.               |
| [PFSense](docId\:FdrwNzbzqXt7sFp6hmY91)              | Open-source firewall and routing platform based on FreeBSD.                                   |
| [Pi-Hole's blacklist](docId\:Kw4nahpLL9r1HscCazHPN)  | Network-wide ad and tracker blocking software acting as a DNS sinkhole.                       |
| [Ruijie](docId\:TaAdhUFD4EqrusNVHumqX)               | Enterprise networking equipment focused on cloud-managed switching and wireless solutions.    |
| [Teldat](docId\:ETFAdVhIQ5ZfJu6S9VAiL)               | Corporate communication routers designed for branch office connectivity and SD-WAN.           |
| [TP-Link](docId\:gX5rSljgR1JaCRKoup_gt)              | Affordable consumer and SMB networking devices with straightforward management interfaces.    |
| [Ubiquiti-UniFi](docId:3EiFlNQmFp5318OnBIy92)        | Centrally managed enterprise networking ecosystem popular for seamless Wi-Fi and routing.     |
| [Zyxel/Zywall](docId\:QPjZCpJd8IPDnLJinWo4k)         | Integrated security gateways and VPN firewalls for small and medium businesses.               |


[title] Untitled
[path] Core Configuration/Core Configuration Overview/


[title] Add Account
[path] Core Configuration/Core Configuration Overview/Administrators/Administrators Overview/Accounts/

:::hint{type="info"}
Navigate to the sidebar menu: [Administratros](docId\:wSxJclHYrjU6crXuOA47J) >  [Accounts](docId\:ODtkZTblBl3NyUXAx7VNb) and click the <font color="#2563eb">`+ Add account`</font> button to register a new user.
:::

## Interface Overview

Use this panel to define the **specific&#x20;**&#x64;etails and **permissions&#x20;**&#x6F;f the new administrative user. Once the account is **created**, the system will manage the onboarding by **sending&#x20;**&#x61;n email to the new user.

| **Interface Element** | **Description & Focus**                                                                                                                                                       |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Full name**         | Enter the **designated&#x20;**&#x66;irst and last name of the new **administrator**.                                                                                          |
| **Email**             | Provide the primary **email&#x20;**&#x61;ddress the user will use to **authenticate&#x20;**&#x69;nto the dashboard and receive system **notifications**.                      |
| **Password**          | Set an initial **temporary&#x20;**&#x70;assword for the new **account**.                                                                                                      |
| **Role**              | A selection matrix to **assign&#x20;**&#x74;he exact **permission&#x20;**&#x6C;evel for the user. Choosing the right role is critical for **security**.                       |
| **Full Control**      | Grants the ability to perform all **ordinary&#x20;**&#x61;nd **extraordinary&#x20;**&#x73;ystem administration **operations**.                                                |
| **Editor**            | Allows the user to **view&#x20;**&#x74;he entire **configuration&#x20;**&#x61;nd reports, as well as **manage&#x20;**&#x70;rotection policies and networks.                   |
| **Policy Manager**    | Permits the user to **view&#x20;**&#x74;he entire **configuration&#x20;**&#x61;nd reports, but limits active management strictly to **protection&#x20;**&#x70;olicies.        |
| **Read-only**         | Restricts the user to only **viewing&#x20;**&#x74;he entire **configuration&#x20;**&#x61;nd reports **without&#x20;**&#x74;he ability to make any **changes**.                |
| **Add**               | The blue **button&#x20;**&#x61;t the bottom of the window to **confirm&#x20;**&#x74;he details and officially register the new team **member&#x20;**&#x69;n the **platform**. |


[title] Advanced
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), open a **Standard Policy**, and select th&#x65;**&#x20;Advanced** tab in the top navigation bar.
:::

## Overview

The **Advanced** module allows you to configure specific technical parameters to further harden your network security. Unlike the category-based filters, these settings target specific DNS behaviors and evasion techniques used by advanced threats or users trying to bypass your policies.

## Interface Overview

The interface is streamlined into individual **configuration cards**, each representing a specific security feature. Unlike the list views in other modules, these settings are presented as distinct functional blocks for quick activation.

## Understanding the Settings

Use this guide to understand the specific impact of each advanced setting.

| Feature                               | Function & Security Benefit                                                                                                                                                                                        |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Block DNS Leaks**                   | Blocks third-party **DoH&#x20;**(DNS over HTTPS) and **DoT** (DNS over TLS) services. Browsers and malware often use these encrypted protocols to bypass your local DNS filters and hide their traffic.            |
| **Block resolution on malicious IPs** | Blocks threats by cross-referencing the destination IP address. Even if a domain name is brand new or not yet categorized, this feature will block it if it resolves to a server IP known to host malware.         |
| **Block parked domains**              | Blocks "parked" domains—websites that have no content other than ads or placeholder text. These are often used for <br />**typosquatting** (fake versions of popular sites), spam, or future malware distribution. |

## Configuration & Logic

Configuring these settings follows the standard toggle logic of the platform:

- **Toggle ON (**<font color="#1174db">**Blue**</font>**):** The protection feature is **ACTIVE**.
- **Toggle OFF ():** The protection feature is **DISABLED**.

[title] Getting Started
[path] /


[title] Content
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi) > [Policies](docId\:i3Yd_tV8604vQf9JT7_CC)  open a **Standard Policy**, and select th&#x65;**&#x20;Content** tab in the top navigation bar.
:::

## Overview

The **Content** module allows you to regulate internet access based on the nature of the websites being visited. Unlike the Malware module (which focuses on security threats), this section focuses on **Access Control** and **Policy Enforcement** (e.g., preventing access to gambling sites or reducing distractions).

## Interface Overview

The dashboard is organized into two main navigation areas to help you manage your security policy:

- **Left Sidebar:** Lists the specific filtering groups (e.g., *Parental Control*, *Work*, *Leisure and Others*).
- **Main Panel:** Displays the specific categories contained within the selected group, along with their control toggles.

:::hint{type="info"}
You may notice &#x61;**&#x20;Clock Icon** next to each category toggle. This feature is designed to set time-based restrictions, allowing you to define specific time windows when the protection should be active.
:::

## Understanding the <font color="#111827">Modules</font>

Different groups target different types of web traffic. Use this guide to decide which ones to restrict.

| Category Group                         | Focus & Description                                                                                                  |
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Parental Control**                   | The most critical group for minors and schools. Blocks **Pornography, Gambling**,<br />**Drugs**, and **Violence**.  |
| **IT Services**                        | Manages access to technical tools like <br />**File Storage**, **Web Hosting** and **Translators**.                  |
| **Work**                               | Blocks categories related to specific job functions, such as **Job Search** or **Professional Networking**.          |
| **Leisure and Others**                 | Focuses on removing distractions. Includes **Social Networks, Video Streaming**, and **Online Games**.               |
| **Ads & Trackers**                     | Blocks advertising banners and tracking scripts. Enabling this group significantly <br />**speeds up web browsing**. |
| **National Blocklist and Foundations** | Blocks sites deemed illegal or restricted by specific national authorities (e.g., government-mandated blocklists).   |

:::hint{type="warning"}
If a category block is too aggressive (e.g., blocking "Health" prevents access to a hospital site), add the specific domain to your <font color="#374151">**Exceptions (Allow List)**.</font>
:::

## Configuration & Logic

The filtering logic works with simple toggles:

- **Toggle ON ():** The category is **BLOCKED**. Users will not be able to visit websites belonging to this group.
- **Toggle OFF ():** The category is **ALLOWED**.
- **Enable All / Disable All:** Located at the bottom-right of each group. Checking this box instantly blocks **all categories** in the current group. Unchecking it disables the global block, allowing you to select individual categories.

:::hint{type="info"}
You don't have to block the entire group. For example, in *Leisure,* you can block **Social Networks&#x20;**&#x62;ut allow **Music & Radio**.
:::


[title] Protection
[path] Core Configuration/Core Configuration Overview/


[title] Quick Start: Your First Setup
[path] Getting Started/Welcome to Getting Started/

## Overview

Securing your network with FlashStart takes only a few minutes. This quick start guide outlines the three mandatory steps required to activate cloud filtering and immediately protect your main location.

:::hint{type="warning"}
To complete this setup, you will need administrative access to your local router, firewall, or DNS server to modify its network settings.
:::

## The Setup Process

Getting started with FlashStart depends entirely on your chosen deployment method. Since protecting a physical office requires different steps than securing roaming laptops or internal active directories, you must follow the specific setup guide tailored to your infrastructure.

:::hint{type="info"}
If you are unsure which configuration to use, review the "Choosing Your Deployment Method" guide first to determine the best approach for your organization.
:::

## Configuration Paths

| **Setup Path**                                                                                   | **Focus & Description**                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Networks](docId\:L9XqF2Zamgt1yKoh2nGmN)**&#x20;&&#x20;**[Routers](docId:11Ai0NHE0Kb3ta0RrAZPG)  | For securing an entire physical location. Follow the **Router Guides** section to register your public IP address and configure your firewall's DNS forwarders.                        |
| [ClientShield ](docId\:xkBYB1hMatXzpTpHj00rU)                                                    | For protecting remote workers and roaming devices. Navigate to the **Deployments > Endpoints** documentation to generate your installation packages and deploy the software agent.     |
| [CloudBox](docId\:e_tXauKillzZbEpbgeI_h)                                                         | For granular Active Directory integration and internal LAN filtering. Refer to the **CloudBox** documentation to download the virtual appliance and sync your local domain controller. |


[title] End-Points Overview
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9)**&#x20;&#x20;**> **End-Points**. This will open the main dashboard for managing your roaming devices and agent installations.
:::

## Overview

The **End-Points** module is the bridge between your **roaming devices** and your **security rules**. While Networks handle fixed locations, Endpoints handle individual devices on the move. Use this section to deploy our lightweight **agent application** on laptops, tablets, or smartphones, this ensures the device remains fully **protected** and filtered no matter where it connects to the internet.

## Understanding Endpoint Management

The management interface is divided ointo **four** main tabs to help you **deploy** and monitor your roaming **clients**. Use the top navigation bar to access the different **configuration** areas.

| Tab Name                                              | Description & Use Case                                                                                                                                                                                        |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ****[Installation](docId\:q_cIjZ-3i2IYz7vYhXm2G)      | **Generate** the security key, select the protection profile, and **download** the client software tailored for your specific **operating system** such as Windows, macOS, iOS, Chrome OS, Android, or Linux. |
| ****[Installed Agents](docId\:CBJVCid_csITubBrsinfU)  | View and manage the individual **devices** where the **endpoint protection** is currently **installed&#x20;**&#x61;nd active.                                                                                 |
| ****[Settings](docId:66hrMSVyUV-eTsvNBGniT)           | Set up and modify the specific operational **parameters** and behavioral settings for your **roaming applications**.                                                                                          |
| ****[Sessions](docId\:kVDwEJhNcHXRWgyahsAym)          | Monitor the **active connections**, data synchronization, and **current status** of your deployed **roaming devices** in real time.                                                                           |


[title] Settings
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/End-Points Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [End-Points](docId\:xkBYB1hMatXzpTpHj00rU)  and ensure you are on the **Settings** tab.
:::

## Overview

The **Settings module** allows you to define the operational behavior and **specific policies** applied to each protection profile. This section lets you manage **security PIN** codes, define how the **agent** behaves within your **office network**, set privacy rules for data collection, and configure **DNS forwarding**.

:::hint{type="info"}
**How it works:&#x20;**&#x59;ou first select the **protection profile** you want to edit from the top drop-down menu. Any **changes** made to the security PINs, office network behavior, privacy settings, or local DNS forwarding rules will apply to all **roaming devices** assigned to that specific profile.
:::

## Interface Overview

The interface is **divided** into several **configuration blocks** focusing on different aspects of the endpoint behavior.

### Policy Selection

Use this top control to determine which group of **devices** you are **editing**.

| Interface Element     | Description & Focus                                                                                                                                                        |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Protection Policy** | A drop-down menu used to select the specific **security profile** you want to **configure**. All settings and rules displayed below apply only to the **selected policy**. |

### PIN codes

This section manages the temporary **security codes** required to perform critical actions on the **endpoint agent**, ensuring that end-users cannot bypass or remove the protection without authorization.

| Interface Element                     | Description & Focus                                                                                                                                                                                                                                  |
| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Disable Protection PIN**            | The **temporary code** needed to pause or disable the **active filtering** protection directly from the client **interface** on the endpoint device.                                                                                                 |
| **Uninstall PIN**                     | The specific **security code** required to **uninstall** the client software, applicable exclusively to **Windows** operating systems.                                                                                                               |
| **Regenerate**                        | The **blue button** located next to both PIN fields. Click this to instantly **generate** a new security **code**, immediately invalidating the **previous** one to maintain strict **security control** over your deployed agents.                  |
| **Require PIN during uninstallation** | A toggle switch located below the **uninstallation PIN** that enforces the security **requirement**. When activated, users will be completely **unable** to remove the agent from their **device** without providing the exact **code** shown above. |

### General Settings

These blocks control the core **operational** and privac&#x79;**&#x20;rules** for the endpoint agent.

| Interface Element   | Description & Focus                                                                                                                                                                                                                           |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Office Stand-Up** | Contains the **Office Protection** toggle to disable the **endpoint** protection automatically when the device connects to your internally **protected** office **network**.                                                                  |
| **Privacy**         | Contains the **Show Username** toggle to **enable** the collection and display of the **username** and PC name within the query logs. This feature should only be **activated** if permitted by your local privacy regulations like **GDPR**. |

### DNS Forwarding

This table **manages** the specific **DNS forwarding** directives for internal domains. Use this area to ensure roaming **devices** can correctly reach your internal **company resources**. This feature is available only on **Windows clients**.

| Interface Element                                   | Description & Focus                                                                                                                                                                             |
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search**                                          | A search bar to quickly **find** your existing local **DNS rules**.                                                                                                                             |
| **Filter**                                          | Opens advanced options to **sort** an&#x64;**&#x20;narrow down** your list of local DNS rules based on specific criteria.                                                                       |
| <font color="#2563eb">`+ Add DNS Forwarding`</font> | The blue button opens the configuration wizard to create a new DNS forwarding rule for the selected policy. Click here to add a new ones: [+ Add DNS Forwarding](docId\:JPtqLHKxPrZ8tXiltT2lI)  |
| **Domain**                                          | Displays the **domain** or **subdomain** targeted by the rule.                                                                                                                                  |
| **Primary DNS Server**                              | The **internal IP** address of the local DNS server **instructed** to resolve queries for the specified **domain**.                                                                             |
| **Associated**                                      | Indicates the **association** status of the specific DNS forwarding **rule**.                                                                                                                   |
| **Actions**                                         | Click the icon to open a contextual **menu** to **delete** the entry. Before removing the **forwarding rule**, you must first clear any existing associations.                                  |

## Configuration & Logic

### Granular Profile Control

By dividing settings **per profile** rather than applying them globally across your entire fleet, you can build tailored experiences. You can enforce strict **PIN requirements** and detailed privacy logging for standard **remote workers** while applying more relaxed rules for internal staff. Setting up **DNS Forwarding** is particularly crucial as it guarantees seamless access to internal company servers and intranets while the **roaming protection** remains actively engaged on external traffic.

## Initialize Creation

To register a new **DNS forwarding** rule for your policy, click the blue <font color="#2563eb">`+ Add DNS Forwarding`</font> button located in the top right corner of the table. A **configuration panel** will open.

:::hint{type="info"}
For a **step-by-step explanation** on how to fill out the required data and properly complete the setup of you&#x72;**&#x20;new local zones**, please **refer to** our dedicated guide:

[+ Add DNS Forwarding](docId\:JPtqLHKxPrZ8tXiltT2lI)&#x20;
:::


[title] Installed Agents
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/End-Points Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [End-Points](docId\:xkBYB1hMatXzpTpHj00rU)  and ensure you are on the **Installed Agents** tab.
:::

## Overview

The **Active Clients** module is designed to monitor the **status** of all protected **devices** in real time. This section provides a comprehensive **overview** of your deployed endpoints, allowing you to **track** the associated policy, installed version, remote IP address, and logged-in user.

:::hint{type="info"}
**How it works:&#x20;**&#x4F;nce the endpoint software is **installed** and **authenticated**, the device populates this list. The system continuously **tracks** the operational state of the client, ensuring you have immediate **visibility** into whether the device is actively filtered, inactive, or attempting to connect.
:::

## Interface Overview

The interface is divided into two main areas: the top **control bar** and the main **list view**.

### Top Controls

Use these tools to manage the list and **search** for your deployed devices.

| Interface Element | Description & Focus                                                                                                                       |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Search Bar**    | Allows you to quickly **find** a specific **device** by searching for its client name, IP address, or associated user.                    |
| **Refresh data**  | A button to manually **reload** the list and ensure you are **viewing** the most up-to-date **synchronization** status of your endpoints. |
| **Filter**        | Opens advanced **sorting options** to narrow down your active clients list based on specific criteria.                                    |

### List View

The main workspace displays a table of all **registered devices**. Use this area to monitor the **real-time status** of your endpoints.

| Interface Element     | Description & Focus                                                                                                                                                             |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**              | Displays the **operating system** icon alongside the uniqu&#x65;**&#x20;identifier** **name** of the device.                                                                    |
| **Technology**        | Indicates the underlying technology **type** used by th&#x65;**&#x20;endpoint agent**, such as Legacy.                                                                          |
| **Status**            | A badge indicating if the **endpoint** **protection** is currently active or not active.                                                                                        |
| **User**              | Identifies the specific user **account** currently **logged** into the remote machine.                                                                                          |
| **Version**           | Indicates the version **number** of the software **agent installed** on the endpoint.                                                                                           |
| **IP Address**        | Displays the **remote IP** address the device is connecting from.                                                                                                               |
| **Protection Policy** | Shows the specific **security policy** currently assigned and **actively filtering** this device.                                                                               |
| **Actions**           | Click the designated **icon** to open a contextual menu where you can **edit** the agent details, view specific activity **reports**, or **delete** the device from the system. |

## Configuration & Logic

### Real-Time Monitoring

Because roaming **devices** frequently change **networks** and **operational states**, this dashboard is built for real-time tracking. Monitoring the **protection status** and remote IP ensures that your external workforce remains compliant with your **security policies** regardless of their physical location or network connection.

[title] Router Overview
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments ](docId\:h62CnWLZ1OyHnHPKL5AS9) > **Router**. This will open the main dashboard for managing your network identifiers.
:::

## Overview

From this dashboard, you can monitor your active routing devices, check their current operational status, and add new hardware to synchronize with our cloud filtering infrastructure.

:::hint{type="info"}
To learn how to navigate this dashboard and manage your existing entries, please refer to our dedicated interface documentation: [Router](docId\:C4CVX6HDn56juZPBKBYmE)&#x20;
:::

## Hardware Configuration Guides

Since the physical setup process varies greatly depending on your specific device, we have created a comprehensive configuration manual.

:::hint{type="info"}
Please refer to our hardware repository to find the exact **step-by-step** integration procedures and network parameters for all supported brands and models: [ Routers Configuration Guide ](docId\:r1T1Pe0Aels839syYS8TJ)&#x20;
:::


[title] DNS Forwarding
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Cloud Box Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Cloud Box](docId\:e_tXauKillzZbEpbgeI_h)  and ensure you are on the **DNS Forwarding** tab.
:::

## Overview

The **DNS Forwarding&#x20;**&#x73;ection allows you to use DNS servers different from ours. This function is highly useful in **Microsoft Active Directory** environments or to reduce the **traffic** sent to our datacenters.

Instead of standard filtering, you can **define wildcard** domains and specify which **internal&#x20;**&#x6F;r **external** DNS servers to use. A wildcard domain matches the domain itself and all its subdomains.&#x20;

:::hint{type="warning"}
To avoid configuration **issues**, these queries must be resolved using a **private IP** address and **not** a **public** one.
:::

## Top Navigation Tools

At the top of the forwarding page, you will find the primary tools for **interacting** with your **configuration list**:

| **Interface Element**                               | **Focus & Description**                                                                                                                                                         |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search**                                          | Located at the top left. Use this to **filter** the list by entering a **wildcard domain** name or a specific **DNS** server **IP address**.                                    |
| **Filters**                                         | Button positioned next to the search bar to apply **sorting** and view results grouped by Cloud Box.                                                                            |
| <font color="#2563eb">`+ Add DNS forwarding`</font> | The blue button at the top right. Click here to create a **new forwarding rule**. Click here to add a new forwarding rule:  [New DNS Forwarding](docId\:W0Wdnuxte0B6vYkOotW1o)  |

## DNS Forwarding List Details

The main grid displays the specific **details** for every **forwarding rule** configured in your system:

| **Interface Element**    | **Focus & Description**                                                                                                                                                                                                                                 |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Domain**               | The specific **domain** and all its **subdomains** targeted by the **forwarding rule**.                                                                                                                                                                 |
| **Resolved IP address**  | The internal or external **DNS** server **IP address** where the requests are sent. This must be a **private IP** address and **not** a **public** one.                                                                                                 |
| **Selected Cloud Boxes** | Lists the specific **Cloud Boxes** where this **forwarding rule** is actively enforced.                                                                                                                                                                 |
| **Actions**              | Click the pencil icon to edit the configuration, where you can **associate** or **disassociate** various Cloud Boxes. To **delete** the **forwarding rule**, you must first **disassociate** all linked **Cloud Boxes**, then click the trash bin icon. |

## Initialize Creation

To register a **new forwarding rule** for your domains, click the blue <font color="#2563eb">`+ Add DNS forwarding` </font>button located in the top right corner. A configuration panel will open.

:::hint{type="info"}
For a **step-by-step explanation** on how to fill out the required data and properly complete the **setup** of your new **forwarding rules**, please **refer to** our dedicated guide: [New DNS Forwarding](docId\:W0Wdnuxte0B6vYkOotW1o)&#x20;

:::


[title] Cloud Box
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Cloud Box Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Cloud Box](docId\:e_tXauKillzZbEpbgeI_h)  and ensure you are on the **Cloud Box** tab.
:::

## Overview

The **Cloud Box** section serves as the central **control panel** for your dedicated **infrastructure**. This dashboard provides a clear view of all the **virtual machines** added to the system, allowing you to quickly **monitor** the **operational status**, **IP addresses**, and **base rules** assigned to each individual Cloud Box.

## Minimum VM Requirements

Minimum requirements for networks with a low Query-per-second load:

- **CPU:** 4 vCPU
- **RAM:** 8 GB
- **Storage:** 20 GB

To optimally configure virtual resources on networks with higher DNS traffic and/or additional functions, progressively increase the resources and test the load.

## Interface Overview

### Top Navigation Tools

At the top of the page, you will find the primary tools for interacting with your machine list:

| **Interface Element**                          | **Focus & Description**                                                                                                                            |
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search**                                     | Located at the top left. Use this to quickly **filter** the list **by name**.                                                                      |
| **Refresh Data**                               | Click this button to **reload** the list and retrieve the **latest information** from the system.                                                  |
| **Filters**                                    | Button positioned next to the search bar to **filter** the visible results **by status**.                                                          |
| <font color="#2563eb">`+ Add Cloud Box`</font> | The blue button at the top right. Click here to start the registration process for a new Cloud Box. [New Cloud Box](docId\:Sn6WB_yDt4HNIbY6wdGmw)  |

### Cloud Box List Details

The main grid displays the **specific details** for every **Cloud Box** configured in the system:

| **Interface Element** | **Focus & Description**                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**              | The identifier chosen for the machine. It also **displays** essential diagnostic information like the **firmware version** and the date of the **last synchronization**.                                                                                                                                                                                                                                                        |
| **Public IP**         | The **public IP** address used for communication with our **datacenters.**                                                                                                                                                                                                                                                                                                                                                      |
| **LAN IP**            | Displays the **local IP** address assigned to th&#x65;**&#x20;Cloud Box**. It verifies if the machine is correctly **synchronizing** with the APIs.                                                                                                                                                                                                                                                                             |
| **Default policy**    | This is th&#x65;**&#x20;catch-all policy** applied by default by the users of the **Cloud Box** for all calls if nothing else is **defined**.                                                                                                                                                                                                                                                                                   |
| **Status**            | Shows the current **operational condition** of the machine:<br />- **Active:** The Cloud Box is active and synchronizing with the APIs.<br />- **Stopped:** The Cloud Box has been temporarily disabled but can be easily reactivated.<br />- **Error:** The Cloud Box is experiencing system anomalies or has lost synchronization with the datacenters.<br />- **Pending:** A new Cloud Box waiting for its first connection. |
| **Actions**           | Click the **three dots icon** to open a contextual menu where you can choose:<br />- **Edit**: to modify the configuration, the editable fields are the same as those detailed in the following guide: [New Cloud Box](docId\:Sn6WB_yDt4HNIbY6wdGmw)<br />- **Delete**: to **remove** the cloud box.                                                                                                                            |

## Initialize Creation

To register a **new Cloud Box** in your network, click the blue <font color="#2563eb">`+ Add Cloud Box`</font> button located in the top right corner. A configuration panel will open.

:::hint{type="info"}
For a **step-by-step explanation** on how to fill out the required data and properly complete the initial setup of your new virtual machine, please **refer to** our dedicated guide: [New Cloud Box](docId\:Sn6WB_yDt4HNIbY6wdGmw)&#x20;
:::

## Cloud Box Setup and Default Credentials

**Activate&#x20;**&#x74;h&#x65;**&#x20;Cloud Box** and enter the login credentials, which are as follows:

- **Login:** enter **admin** and press Enter.
- **Password:** enter **dnsproxy** and press Enter to confirm.

**NOTE:** The password is not displayed because Linux hides it.

## Migration and Restart

:::hint{type="warning"}
If you perform a **migration** to the new platform, you must **restart** the **Cloud Box** once the process is complete.
:::


[title] Log Search
[path] Core Configuration/Core Configuration Overview/Reports and Log/Reports and Log Overview/

:::hint{type="info"}
Navigate to the sidebar menu: **Reports and Log&#x20;**&#x61;nd select the **Log Search&#x20;**&#x20;tab in the side navigation menu
:::

## Overview

The Log Search module is designed to provide granular visibility into your network traffic. This tool allows administrators to search and filter DNS logs to quickly identify relevant information, track user activity, and troubleshoot specific security events.

:::hint{type="info"}
**How it works:** The system records raw data for the DNS requests processed by your networks. You can use multiple search parameters simultaneously to pinpoint exact traffic events, understanding not only if a domain was blocked, but exactly why the system made that decision.
:::

## Interface Overview

The interface is divided into two main areas: the top search parameters and the main log results table.

### Top Controls Search Parameters&#x20;

Use these tools to narrow down the vast amount of log data to exactly what you need to see.

| **Interface Element** | **Description & Focus**                                                                                                                                    |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Range Date**        | Select predefined timeframes like Last 15 minutes, Last hour, Last 24 hours, or set a Custom range.                                                        |
| **FQDN**              | A text field where you can search by a specific domain name.                                                                                               |
| **Action**            | Filter by the outcome of the query, selecting from All, Granted, Denied, or Unresolved.                                                                    |
| **Reason**            | Filter by the exact rule that triggered the action, such as Blocked due to Policy configuration, Allowed due to Exceptions, or Blocked due to GeoBlocking. |
| **Networks**          | Select one or more specific networks to filter the origin of the traffic.                                                                                  |
| **Categories**        | Filter logs by specific content categories like Advertising, Adware, or Alcohol.                                                                           |
| **Policies**          | Filter the data to view only the traffic managed by a specific security profile.                                                                           |
| **Results**           | Limit the number of rows displayed in the table, choosing between 30, 50, 100, 250, or 500 entries.                                                        |

### List View Log Table&#x20;

The main workspace displays the raw data matching your search criteria.

| **Interface Element** | **Description & Focus**                                               |
| --------------------- | --------------------------------------------------------------------- |
| **Query Type**        | The specific technical DNS record requested by the client.            |
| **Action**            | Indicates whether the request was granted or denied by the filter.    |
| **FQDN**              | The fully qualified domain name that the user attempted to access.    |
| **Category**          | The content classification assigned to the requested domain.          |
| **Date and Time**     | The exact timestamp of when the query occurred.                       |
| **Source IP Address** | The IP address originating the network request.                       |
| **Policy**            | The specific security profile that managed and evaluated the request. |
| **Network**           | The deployment location the traffic belongs to.                       |
| **Country**           | The geographic origin associated with the request.                    |

## Configuration & Logic

### Using the Search Filters&#x20;

To begin an investigation, start by setting your desired Range Date to establish the timeframe. You can then layer additional filters to find specific events. For instance, if you want to find out why a user was blocked from a specific site, you can set the Action to Denied, and review the Reason column to see if it was Blocked due to Policy configuration or Blocked due to IP Block.

### Managing Applied Filters&#x20;

As you select different criteria from the dropdown menus, they are summarized in the Applied filters box located just above the results table. This gives you a clear visual confirmation of the parameters currently shaping your view. If you want to start a fresh search, simply click the Clear filters button located on the right side of this summary box to reset all fields at once.

[title] Policy Mapping
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Cloud Box Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Cloud Box](docId\:e_tXauKillzZbEpbgeI_h)  and ensure you are on the **Policy Mapping** tab.
:::

## Overview

The **Policy Mapping** section allows you to **link** a specific **policy** with one or more elements on your internal network. You decide which network element to link to a specific policy, and the system automatically links it without accessing the **virtual machine**. This dashboard **provides** a clear view of all your **mapping rules**, allowing you to apply **granular protection** standards across different local segments based on sources, elements, or objects.

Objects represent the network elements, they are not limited strictly to IP addresses but **define** the **specific type** of source making the request.

## Top Navigation Tools

At the top of the mapping page, you will find the **primary tools** for interacting with your **configuration list**:

| **Interface Element**                               | **Focus & Description**                                                                                                                                                                                                                                                 |
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search**                                          | Located at the top left. Use this tool to perform a **search** directly on the **IP addresses** column.                                                                                                                                                                 |
| **Filters**                                         | Button positioned next to the search bar to filter the visible results. You can **apply** **filters** based on three criteria: <br />- **By type** such as: **static IPs**, **static** **CIDRs**, and **static ranges.**<br />- **By Cloud Box**.<br />- **By policy**. |
| <font color="#2563eb">`+ Add policy mapping`</font> | The blue button at the top right. Click here to **create** a new **mapping rule**. Click here to add a new policy mapping: [New Policy Mapping](docId:5UlAYWhwyAEIAG5MweaG1)                                                                                            |

## Policy Mapping List Details

The main grid displays the specific **details** for every **mapping rule** configured in your **system**:

| **Interface Element**    | **Focus & Description**                                                                                                                                                                                                                                  |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type**                 | Indicates the **object type**.                                                                                                                                                                                                                           |
| **IP Address**           | The **specific IP** address or **range targeted** by this mapping rule.                                                                                                                                                                                  |
| **Selected Cloud Boxes** | Displays the list of **Cloud Boxes** **linked** to the **rule**. You can **unlink** a Cloud Box to eliminate the **mapping**.                                                                                                                            |
| **Associated policy**    | Indicates the exact **policy linked** to the specified **network elements**.                                                                                                                                                                             |
| **Actions**              | Click the pencil icon to **edit** the **configuration**, where you can **associate** or **disassociate** multiple **Cloud Boxes.** To delete the mapping, you must first **disassociate** all linked Cloud Boxes, then **click** the **trash bin icon**. |

## Initialize Creation

To register a **new mapping rule** for your local elements, click the blue <font color="#2563eb">`+ Add policy mapping` </font>button located in the top right corner. A configuration panel will open.

:::hint{type="info"}
For a **step-by-step** **explanation** on how to fill out the required data and properly complete the setup of your **new mapping rules**, please **refer to** our dedicated guide:[New Policy Mapping](docId:5UlAYWhwyAEIAG5MweaG1)
:::


[title] Deployments Overview
[path] Core Configuration/Core Configuration Overview/Deployments/

## Overview

The Deployments section is the central command center for connecting your locations and devices to the filtering system. Here, you define how your internet traffic is routed to our security filter.

To access this section, navigate to **Deployments&#x20;**&#x69;n the main sidebar. The menu is divided into two key areas:

## Networks

Networks are the foundation of your fixed-location filtering. A Network deployment protects an entire site like a corporate office or a school.

Instead of installing software on every computer, you update the DNS settings on your main router. This extends protection to every single device connected to that network.

- **Static Networks:** Standard setups for locations with a fixed public IP address, an IP range, or a CIDR block.
- **Dynamic Networks:** Setups for locations where the public IP address changes automatically.
- **DoH & DoT:** Advanced configurations for encrypted DNS traffic, ensuring maximum privacy and security over the network.
- **Routers:** Direct hardware integrations, coming soon to simplify your deployment even further.

:::hint{type="info"}
Learn how to register your public IPs and configure site-wide DNS protection: [Networks Overview](docId\:L9XqF2Zamgt1yKoh2nGmN)&#x20;
:::

## Router

The Router section provides a centralized dashboard to register and manage your physical hardware integrations. By synchronizing your specific brand and device model, you can automate connection updates and easily apply filtering policies to your entire local network directly from the hardware level.

- **Hardware Deployments:** Register new routing devices using a guided setup for Dynamic DNS, DNS over HTTPS, or automated Script configurations.
- **Connection Management:&#x20;**&#x4D;onitor active connections, update credentials, and modify the specific security profiles assigned to each hardware integration.
- **Configuration Scripts:** Generate ready-to-use terminal codes for compatible devices like MikroTik to automate the integration process.

:::hint{type="info"}
Learn how to register your **hardware** and manage **connection&#x20;**&#x73;etups: [Router Overview](docId:11Ai0NHE0Kb3ta0RrAZPG)&#x20;
:::

## CloudBox

**Cloud Box** is a virtual machine deployed directly within your local **infrastructure**. It provides advanced and granular control over your internal network elements by **synchronizing** directly with our **datacenters**.

While a standard network deployment applies a single policy to an entire site, a **Cloud Box** allows you to **manage** complex routing and differentiate protection levels internally without installing software on every device.

- **Cloud Box:&#x20;**&#x44;eploy, manage, and monitor the operational **status** of your virtual machines to ensure consistent **synchronization** with the filtering infrastructure.
- **Policy Mapping:** Link specific security profiles to different internal network elements, such as single **IP addresses**, **static ranges**, or **CIDR** blocks.
- **DNS Forwarding:** Route specific **wildcard** domains to alternative internal or external DNS servers. This is highly useful for **reducing** external **traffic** or integrating seamlessly with Microsoft Active Directory environments.

:::hint{type="info"}
Learn how to deploy your **virtual machine** and configure advanced local protection: [Cloud Box Overview](docId\:e_tXauKillzZbEpbgeI_h)&#x20;
:::

## Endpoints

While Networks handle fixed locations, Endpoints handle individual devices on the move.

Use this section to deploy our lightweight agent application on laptops, tablets, or smartphones. This ensures the device remains fully protected and filtered no matter where it connects to the internet.

- **Mobile Devices:** Protection for smartphones and tablets connected to cellular networks or public Wi-Fi.
- **Remote Laptops:** Continuous filtering for employees working from home or traveling.

:::hint{type="info"}
Learn how to download, install, and manage our roaming client applications:&#x20;**&#x20;Endpoints (coming soon)**
:::

### How the Deployment Flow Works

To secure your users, follow this logical workflow:

1. **Choose the Method:** Decide whether you need to protect a whole building or specific roaming devices.
2. **Configure the Deployment:** Add your network IP address or install the endpoint agent on your devices.
3. **Assign a Policy:** Link your newly created deployment to a specific security profile to define its filtering rules.

[title] GeoBlocking
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), open a **Standard Policy**, and select th&#x65;**&#x20;GeoBlocking** tab in the top navigation bar.
:::

## Overview

The **GeoBlocking** module allows you to block access to websites and services based on the **geographic location** of the server hosting them. By analyzing the IP address of the destination server, the system determines its physical country. If that country is on your block list, the connection is instantly stopped at the DNS level.

### Why use GeoBlocking?

- **Security:** Reduce your "attack surface" by blocking connections to countries known for high rates of cybercrime or where you have no business interests.
- **Compliance:** Enforce embargoes or corporate policies regarding data traffic to specific regions.

## Interface Overview

The dashboard is organized to let you drill down from broad continents to specific countries:

- **Left Sidebar:** Lists the geographic regions (e.g., *Africa*, *Europe*, *Satellite Provider*).
- **Main Panel:** Displays the individual nations within the selected region, each accompanied by its national flag for quick recognition.

## Understanding the Modules

Countries are grouped by continent or macro-region to simplify management. Use this table to understand the available grouping logic.

| Category / Region         | **Focus & Description**                                                                                                                                                                   |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Major Continents**      | Includes the primary global landmasses: <br />**Africa**,**&#x20;South America**,**&#x20;North America**,**&#x20;Antarctica**,**&#x20;Asia**,**&#x20;Europe**, an&#x64;**&#x20;Oceania**. |
| **Strategic Sub-Regions** | Allows for targeting specific geopolitical areas without blocking an entire continent. Includes the **Baltic States**,**&#x20;Middle East, North Africa**, an&#x64;**&#x20;Caucasus**.    |
| **Satellite Provider**    | Blocks traffic routed through satellite internet providers (e.g., Starlink, Inmarsat), which often bypass traditional geolocation checks and mask the true origin of the user.            |
| **IP Unspecified**        |  Catches traffic where the destination IP address does not have a clear geographic assignment in the global registry, often a sign of anonymized or suspicious infrastructure.            |

## Configuration & Logic

- **Toggle ON (**<font color="#1174db">**Blue**</font>**):** Traffic to this country is **BLOCKED**.
- **Toggle OFF ():** Traffic to this country is **ALLOWED.**
- **Enable All / Disable All:&#x20;**&#x4C;ocated at the bottom-right of the panel. Checking this box instantly blocks **all countries** in the currently selected region. Unchecking it disables the global block, allowing you to select individual nations.

:::hint{type="warning"}
Be very careful when blocking major regions like North America or Europe.
Modern websites use CDNs (Content Delivery Networks) like AWS, Cloudflare, or Google Cloud. A website for a local Italian business might actually be hosted on a server in the United States or Ireland.

**Risk:** If you block the US, you might accidentally block legitimate services (like Gmail, Microsoft 365, or parts of legitimate websites) that rely on US-based servers.

**Recommendation:** Only block countries where you are certain you will never need to connect (e.g., high-risk nations) and monitor your Exceptions list if legitimate sites get blocked.
:::


[title] Tools Overview
[path] Core Configuration/Core Configuration Overview/Tools/

## Overview

The **Tools section** is a dedicated workspace for **troubleshooting**, diagnostics, and system verification. It provides the essential **instruments&#x20;**&#x6E;eeded to analyze network behavior and effectively manage your **security&#x20;**&#x69;nfrastructure.

To access this **module**, navigate to **Tools** in the main sidebar.

:::hint{type="warning"}
Please note that the **Tools section** is under active development. New features, diagnostics, and utilities will be introduced regularly as the platform evolves.
:::

Currently **available&#x20;**&#x75;tilities include:

## Domain Lookup

The **Domain Lookup** is a diagnostic tool used to verify how the system **classifies** and **processes&#x20;**&#x73;pecific domain. Use this section to **obtain&#x20;**&#x61; clear **overview&#x20;**&#x6F;f:

- **Categorization:** The content **categories** assigned to the **domain**.
- **Policy Evaluation:** Whether th&#x65;**&#x20;domain** is currently blocked or allowed by your active security rules and the reason behind the action.

:::hint{type="info"}
**Learn how** to use the diagnostic features: [Domain Lookup](docId\:q-1NL3ukJQN772Xg5lj1d)&#x20;
:::


[title] How to block DNS resolution from outside in Mikrotik
[path] Router Guides/Routers Configuration/MikroTik/

## Overview

It is very important to block the DNS service on port 53 for incoming connections on your Router or Firewall. Doing this increases your network security and helps avoid cyber attacks such as DDOS.

## Configuration Steps

To secure your network, connect to your MikroTik using Winbox and open a New Terminal. Copy and paste the following commands into the console:

:::CodeblockTabs
routeros

```bash
/ip firewall filter 
add chain=input in-interface=IN-INT protocol=udp dst-port=53 action=drop
add chain=input in-interface=IN-INT protocol=tcp dst-port=53 action=drop

/ip firewall filter
add chain=forward in-interface=IN-INT protocol=udp dst-port=53 action=drop
add chain=forward in-interface=IN-INT protocol=tcp dst-port=53 action=drop
```
:::

:::hint{type="info"}
Before executing the commands, you must replace IN-INT in the code above with the actual name of your MikroTik WAN interface.
:::

:::hint{type="warning"}
If you use multiple WAN interfaces on your MikroTik, you must re-run the commands above multiple times, replacing IN-INT with the names of all your other WAN interfaces to ensure complete protection.
:::


[title] Draytek
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the control panel by entering the IP address of the Draytek device in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure Dynamic DNS Service

To configure the Dynamic DNS service, open the **Applications** menu and then click on **Dynamic DNS**. Check the **Enable Dynamic DNS Account** option and fill in the various fields exactly as follows:

- **Service Provider:** Choose Customized or User-Defined.
- **Provider Host:** Enter https\://ddns.fsflt.com.
- **Service API:** Type /nic/update?.
- **Auth Type:** Choose basic.
- **Connection Type:** Select Https.
- **Server Response:** Leave this field completely blank.
- **Login Name:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- **Password:** Enter the specific password assigned to your dynamic network.
- **Determine Real WAN IP:** Select WAN IP.

Finally, click **OK** to make the changes active.

## Enable the DHCP Server

At this point, you can enable the DHCP Server so that it automatically assigns network parameters, including our filtered DNS, to the various internal devices.

Open the **LAN** menu and click on **General Setup**. Click on the **Details Page** button for your LAN and enable the **Enable Server** item to activate the DHCP service. Then configure it as follows:

- **Start IP Address:** Enter the first private IP in your local range.
- **IP Pool Counts:** Set the number of IPs to be handled by the DHCP service.
- **Gateway IP Address:** Enter the IP address of your gateway, which is usually the local IP of your router.
- **Lease Time:** Leave the default value of 86400 or enter your desired duration.
- **Primary IP Address:** Enter 185.236.104.104.
- **Secondary IP Address:** Type 185.236.105.105.

Alternatively, the DNS settings of the various devices within the network can be changed manually one by one.

## Optional: Deny DNS Changes by Users

It is possible to increase security by denying users the ability to browse unfiltered by manually changing the DNS on their local devices.

Open the **Firewall** menu and click on **Filter Setup**. At this point, you need to create rules to allow traffic on port 53 for the DNS Service on both TCP and UDP protocols only to our specific cloud IPs.

Click on the first available number under the **Set** column, and then on the **1** button under the **Filter Rule** column to create a new rule. Enable it by selecting **Check to enable the Filter Rule** and configure it as follows:

### Rule A: Allow Primary DNS

- **Direction:** Choose LAN/RT/VPN to WAN.
- **Source IP:** Leave Any.
- **Destination IP:** Click **Edit**, select Single Address and enter 185.236.104.104.
- **Service Type:** Click **Edit**, choose User defined with TCP and UDP protocol, and enter the value 53 in the Source and Destination Port fields. Click **OK** to save.
- **Filter:** Choose Pass Immediately from the drop-down menu.

Click **OK** to save and apply the changes.

### Rule B: Allow Secondary DNS

Now we need to create another rule exactly similar to the previous one, except for the IP address of the **Destination IP** field, which should be 185.236.105.105.

### Rule C: Block All Other DNS

Finally, it is necessary to create a drop rule to block all DNS traffic directed to external IPs other than our own. Proceed as follows:

- **Direction:** Choose LAN/RT/VPN to WAN.
- **Source IP:** Leave Any.
- **Destination IP:** Leave Any.
- **Service Type:** Click **Edit**, choose User defined with TCP and UDP protocol, and enter the value 53 in the Source and Destination Port fields. Click **OK** to save.
- **Filter:** Choose Block Immediately.

Finally, click **OK** to create the rule.

[title] Grandstream
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for our filtering service, you can do so by visiting our registration page.

First, you need to change the DNS settings of your device. To do this, click on the **Network Settings** side menu and look for the **WAN** item. Next, click the pen icon under Operations for your chosen WAN interface.

Set the WAN according to your desired connection mode like DHCP, Static IP, or PPPoE, and manually set the DNS addresses. Enter 185.236.104.104 inside the Primary DNS IP field and 185.236.105.105 in the Secondary DNS IP field.

## Configure Dynamic DNS Service

To configure the Dynamic DNS service, open the **External Access** menu and click on the **DDNS** item. Then, configure the various fields exactly as follows:

- **Service Provider:** Select Dyndns.org.
- **User Name:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main account email address.
- **Password:** Enter the specific password assigned to your dynamic network.
- **Domain:** Enter the exact domain checkip.dyndns.org.
- **Interface:** Select the specific interface on which you want to configure the dynamic DNS service.

Click on the **Save** button to apply your changes.

:::hint{type="info"}
It is absolutely not necessary to be registered with the DynDns.org service. Our setup will still work perfectly since our servers automatically intercept and redirect the update requests to themselves.
:::

## Deny DNS Changes by Users

Finally, you can inhibit clients from using alternative DNS servers to bypass the filter. You need to create firewall rules to block all traffic on port 53 for both TCP and UDP protocols, except for requests directed specifically to our cloud IPs.

Click on the **Firewall** menu and then on the **Traffic Rules** item. Within the Forwarding Rules section, click on **Add** to create your new rules following this exact priority order:

- **Allow Primary DNS:** Create a first rule to explicitly allow traffic directed to our primary filter DNS, which is 185.236.104.104.
- **Allow Secondary DNS:** Create a second rule to explicitly allow traffic directed to our secondary filter DNS, which is 185.236.105.105.
- **Block All Other DNS:** Finally, create a third rule to block all other DNS traffic on port 53. It is crucial to place this block rule after the two allow rules to ensure your network can still resolve approved requests.

[title] Administrators Overview
[path] Core Configuration/Core Configuration Overview/Administrators/

## Overview

The **Administrators&#x20;**&#x73;ection is a dedicated workspace for **managing&#x20;**&#x74;eam **access**, assigning **permissions**, and tracking system **changes**. It provides the essential instruments needed to maintain security and **accountability&#x20;**&#x61;cross your deployed infrastructure.

To access this module, navigate to Administrators in the main sidebar.

Currently **available&#x20;**&#x6D;anagement **modules&#x20;**&#x69;nclude:

## Accounts

The **Accounts&#x20;**&#x6D;odule is an administrative tool used to create and **manage&#x20;**&#x75;ser profiles for dashboard **access**. Use this section to obtain a clear **overview&#x20;**&#x6F;f:

- **Team Management:** How to invite new **users**, edit profile **details**, and monitor last login **activity**.
- **Role Assignment:** Which specific **permission&#x20;**&#x6C;evels and access rights are **granted&#x20;**&#x74;o each team **member**.

:::hint{type="info"}
**Learn how** to manage dashboard access: [Accounts](docId\:ODtkZTblBl3NyUXAx7VNb)&#x20;
:::

## Audit

The **Audit&#x20;**&#x6D;odule is a tracking tool used to review a comprehensive **log&#x20;**&#x6F;f all administrative **activities&#x20;**&#x77;ithin the organization. Use this section to obtain a clear **overview&#x20;**&#x6F;f:

- **Event Tracking:** Exactly who **initiated&#x20;**&#x61;n action, when it happened, and the final outcome of the **operation**.
- **System Changes:** The specific **details&#x20;**&#x6F;f policy updates, logins, and network configurations for complete **accountability**.

:::hint{type="info"}
**Learn how** to track system changes: [Audit](docId\:xWba5yUL5p9oTokUplIjv)&#x20;
:::


[title] Untitled
[path] Core Configuration/Core Configuration Overview/


[title] Deployments
[path] Core Configuration/Core Configuration Overview/


[title] New Policy
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi) > [Policies](docId\:i3Yd_tV8604vQf9JT7_CC) and click <font color="#2563eb">`+ Add policy`</font> button.
:::

## Creating a New Policy

This step is critical as it defines the fundamental behavior and scope of your new security profile. Fill out the fields as follows:

## Policy Name

Enter a recognizable name for the policy.

- *Example:* "Guest Wi-Fi", "Office Staff - Standard", or "Strict Protection".

:::hint{type="info"}
If you plan to have multiple policies, use a naming convention that helps you identify
:::

## Policy Type

Choose the baseline behavior for this profile. This choice determines whether you can customize the rules later.

- **Standard:** Select this option for maximum flexibility. A **Standard&#x20;**&#x70;olicy allows you to fully customize every aspect of the protection.

:::hint{type="warning"}
When you selec&#x74;*&#x20;Standard*, &#x61;**&#x20;Starting Template** section will appear below. You must choose a baseline configuration:
:::

**Malware & Threats:** Pre-configured to block malicious websites, phishing, and proxy bypass attempts.

**Malware and Unwanted Contents:** A broader protection profile that blocks malware and unwanted content categories, and automatically activates SafeSearch.

**Start from scratch:** Creates an empty policy with no preset rules, allowing you to build the configuration entirely from the ground up.

:::hint{type="info"}
*Best for:* Most business networks, guest Wi-Fi, and custom use cases.
:::

- **Restricted:** Select this option for a "locked-down" profile. In a **Restricted** policy, the core security rules (Malware and Content categories) are pre-set and **locked**. However, you retain control over specific settings like **SafeSearch&#x20;**&#x61;nd **Exceptions&#x20;**(Allow/Block lists).

:::hint{type="info"}
*Best for:* Enforcing a strict, non-negotiable security standard where no local administrative overrides should be allowed.
:::

## Shared Policy

This setting is critical for **Managed Service Providers (MSPs)** or organizations with a multi-tenant hierarchy. It determines the scope and visibility of the policy across your organization structure.

- **Disabled (Default):** The policy is only visible and usable within the current organization.
- **Enabled:** The policy becomes a "Master Policy." It will be visible to all related **Sub-Organizations** or tenants you manage. They can assign this policy to their networks, but they cannot modify its settings.

## Finalizing Setup

Once you have made your selections, click the <font color="#2563eb">`Add`</font> button at the bottom right to save the policy.

[title] Policy Migration Logs
[path] Migration/Migration Overview/

:::hint{type="info"}
Please note that this migration documentation is continuously being updated and expanded to reflect the latest platform improvements and newly supported configurations.

**Last update: 14 February 2026**
:::

## Overview

While your account is in the transition phase, you can inspect the exact status and technical details of how your legacy configurations are being transferred to the New Platform.

## How to access the logs

To view the migration details, locate the yellow **"Migration Panel - Read Only"** banner at the top of your dashboard. Instead of clicking the main button, click the **document icon** located right next to the <font color="#2563eb">`Go to Migration` </font>button.

## Understanding the Logs Dashboard

The Policy Migration Logs page provides a comprehensive table detailing the transfer of your settings. You can use the **Search bar** at the top to quickly find a specific policy name or ID.

The table includes the following information:

| **Interface Element**      | Focus & Description                                                                                                       |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Migration ID**           | A unique alphanumeric identifier for that specific transfer process.                                                      |
| **Entity**                 | The name of the policy or configuration being migrated (e.g., *Default*).                                                 |
| **Migration Result**       | The current status of the main policy transfer (e.g., *Completed*).                                                       |
| **Migration Log**          | Click the **"View log"** button to read the detailed technical output of the transfer.                                    |
| **Linked Entities Result** | The migration status of the elements attached to the main policy (such as specific blocklists, schedules, or exceptions). |
| **Linked Entities Log**    | Click the **"Go to linked entities"** button to view the logs for those associated elements.                              |

This tool is especially useful for verifying that complex, multi-layered policies have been mapped and imported seamlessly.

[title] Customer Migration Mapping
[path] Migration/

# What this is about

The customer list returned by the customerarea API now includes a migration object for each customer, showing whether that customer has been migrated to the new cloud platform and, if so, its corresponding organization\_id.

## What you'll find

In the customer/list endpoint, documented in [Customer List API](docId\:zHZnxpx3uxTPqkF7mPwNF), you will find:

:::BlockQuote
...
"organization\_id": "019f88ef-7fb5-725c-88e8-0d7028d1b392",
"migration\_status": "MIGRATED"
...
:::

- **organization\_id** — the customer's identifier on the new platform. It is populated only if the customer has been provisioned or migrated (or exists solely on the new platform). Otherwise it is null.
- **migration\_status** — the current migration state of the customer (values are uppercase, e.g. MIGRATED, NOT\_MIGRATED, MIGRATION\_STARTED).

## How to use it

- If organization\_id is present, that value is the customer's identifier on the **new platform** — use it there.
- If organization\_id is null, keep using the customer's existing customer\_code on the **legacy** API.

## New platform API key

To operate on the new platform, you'll need a separate API key. This key is **not** the same as your legacy x-api-key — you'll find it directly inside the **new panel**, under your account/API settings.


[title] Platform 2026 Guides
[path] /

:::hint{type="info"}
⚠️ **Language Support&#x20;**&#x54;his documentation is currently available in English. **Italian&#x20;**&#x61;n&#x64;**&#x20;Spanish** versions are currently in development and will be released shortly.
:::

## Welcome to the platform Documentation

Welcome to the official documentation hub for the **New Cloud Platform**. Here you will find all the resources needed to configure, manage, and optimize your DNS-based network protection.

## What you can do here

We have organized the guides to help you achieve your security goals:

| **Section**                                             | **Focus & Description**                                                                                                                         |
| ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [Getting Started](docId\:uEnIU3OcrVBx99cRBQ24h)         | Learn the basics of DNS filtering, choose your deployment method, and complete your initial setup.                                              |
| ****[Core Configuration](docId\:n7ZL5UW2ppwcVc72qZctM)  | Explore how to configure protection policies, manage allow and block lists, and navigate the dashboard tools.                                   |
| ****[Migration Overview](docId\:liHCFznLqFSCNZbAzRBZN)  | Information regarding the transition from the legacy panel to the new platform, including requirements like having a Pro license or static IPs. |
| [Router Guides](docId\:r1T1Pe0Aels839syYS8TJ)           | Specific configuration steps and manuals for deploying protection across various router and firewall manufacturers.                             |
| [API Integration](docId\:fJMCHul04cXBqyVIMCO5Q)         | Resources for automating workflows, generating API keys, and connecting with third-party applications.                                          |
| [FAQ](docId\:UZVDdKJsXp8ON06v66q-f)                     | Answers to common commercial, technical, and migration-related questions.                                                                       |
| [Support](docId:52rkGGJC0Q3iPzfo4gd-P)                  | Guidelines on how to contact our technical support team for advanced troubleshooting.                                                           |

## Need help?

- **Search:** Use the search bar (**Ctrl+K**) at the top right to find specific **topics**.
- **Navigation:** Use the sidebar on the left to **browse** available **guides**.
- **Support:** If you cannot find what you are looking for, please contact our **technical support** team.

:::hint{type="warning"}
Note: This documentation is constantly **evolving**. New guides and sections are added regularly as new **features** are released on The Platform.
:::


[title] Navigating the Dashboard
[path] Getting Started/Welcome to Getting Started/

## Overview

The cloud dashboard is designed for efficiency and ease of use. The interface is divided into three primary functional zones to help you quickly access settings, monitor traffic, and manage your account details.

:::hint{type="info"}
**Quick Navigation Tip** The search bar located at the top of the interface is the fastest way to locate specific policies, networks, or administrative settings without clicking through multiple menus.
:::

## Detailed Menu Breakdown

:::hint{type="info"}
To explore the complete explanation of every sidebar item and understand exactly where to configure specific settings, please refer to the full [Core Configuration guide](docId\:n7ZL5UW2ppwcVc72qZctM).
:::


[title] Understanding Security Policies
[path] Getting Started/Welcome to Getting Started/

## Overview

A security policy is the core set of filtering rules that dictates which websites your users can access and which are blocked. FlashStart allows you to customize these rules to align with your organization's specific security and compliance requirements.

:::hint{type="info"}
You can maintain a single default policy for your entire network, or create multiple distinct policies (e.g., "Guest Wi-Fi" vs. "Staff") and assign them to different network segments or endpoint agents.
:::

## Core Policy Components

When editing a policy within the [Protection menu](docId\:AOavaXBxIc2KMEjwXC3Pi) , you can configure several distinct filtering layers to build your desired security posture:

| Filtering Layer                                  | Focus & Description                                                                                                                                                                 |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ****[Malware](docId\:lZ2K1KsAg--lFSJI98pDL)      | The foundation of network security. Blocks access to known malicious domains, phishing pages, ransomware delivery sites, and botnet command centers.                                |
| [Content](docId\:vfLPxujhSJVWrDCKiAYx0)          | Allows you to block websites based on their subject matter. Use this to filter out inappropriate content like adult sites, gambling, or time-wasting platforms like social media.   |
| ****[GeoBlocking](docId\:doJYyuB-hodGffRWAZ9sD)  | Proactively blocks DNS resolutions for domains hosted in specific high-risk countries, reducing your exposure to international cyber threats.                                       |
| ****[Exceptions](docId\:qOIz3D3hjLLYPQcWHto8O)   | Your custom Allow and Block lists. This layer overrides all other category settings, ensuring you can strictly allow a specific trusted domain or forcefully block an unwanted one. |
| ****[SafeSearch](docId\:Tbx-coOecG3tkRyFIh9wg)   | Natively enforces the strict safe-search mode on major search engines (such as Google, Bing, and YouTube) to filter explicit images and videos directly from search results.        |


[title] The Global Anycast Network
[path] Getting Started/Welcome to Getting Started/

## Overview

The FlashStart infrastructure relies on a globally distributed Anycast network to ensure your internet browsing remains fast and secure. This architecture guarantees low latency and high reliability, adding a robust layer of security without slowing down your daily operations.

:::hint{type="info"}
The primary goal of our Anycast routing is to provide enterprise-grade threat protection that your users will never notice. Security checks happen in milliseconds, ensuring zero degradation in browsing speed.
:::

## Core Infrastructure Benefits

| **Infrastructure Feature** | **Focus & Description**                                                                                                                                                                    |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Anycast Routing**        | A network addressing method where multiple servers share the exact same IP address. Your devices automatically connect to the geographically closest and fastest available server.         |
| **Global Datacenters**     | Our filtering nodes are distributed strategically across the world. This ensures that no matter where your remote workers travel, they always receive localized and high-speed resolution. |
| **High Availability**      | If one datacenter experiences an outage or requires maintenance, the system instantly and automatically reroutes your traffic to the next closest node, ensuring continuous uptime.        |
| **Ultra-Low Latency**      | By resolving DNS queries at the edge of the network nearest to the user, the security inspection adds virtually no delay to the standard connection process.                               |


[title] What is DNS Filtering
[path] Getting Started/Welcome to Getting Started/

## Overview

The Domain Name System acts as the foundational directory of the internet. It translates human-readable domain names into the machine-readable IP addresses required to load a webpage, connecting the user to the correct destination.

:::hint{type="info"}
While a standard DNS simply resolves the address, a filtered DNS service acts as a proactive security barrier. It inspects traffic and enforces rules before any connection is ever established.
:::

## How the Resolution Flow Works

When a device requests access to a domain, the filtering infrastructure executes an instant analysis against a globally updated database:

- **Safe Domains:** If the requested destination is classified as clean, the connection proceeds normally.
- **Blocked Domains:** If the destination is linked to malware, phishing, or violates company policies, the resolver blocks the request. The user is redirected to a safe warning page, ensuring the malicious payload never reaches the local network.

**Key Benefits of DNS-Level Protection**

| **Benefit**                    | **Focus & Description**                                                                                                                                            |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Proactive Threat Blocking**  | Stops cyberattacks, ransomware, and phishing attempts directly at the resolution stage, neutralizing threats instantly.                                            |
| **Universal Network Coverage** | Updating the main router automatically extends protection to every connected device, including smartphones and printers, without requiring software installations. |
| **High-Speed Performance**     | Utilizes a globally distributed Anycast network to ensure ultra-fast domain resolution and zero latency degradation.                                               |
| **Granular Content Control**   | Allows administrators to restrict access to specific website categories, block unwanted applications, and enforce safe search protocols.                           |
| **Device Portability**         | Deploying endpoint agents ensures the exact same security rules follow remote workers and mobile devices across any external Wi-Fi network.                        |


[title] Choosing Your Deployment Method
[path] Getting Started/Welcome to Getting Started/

## Overview

FlashStart provides flexible deployment options designed to secure your users regardless of their physical location or network infrastructure.

:::hint{type="success"}
You are not limited to a single approach. A comprehensive security strategy often combines router-level protection for the main headquarters with endpoint agents to secure remote workers.
:::

## Core Deployment Methods

| Deployment Type                        | Best For                                                      | Focus & Description                                                                                                                                                                                  |
| -------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Network (Router / Firewall)**        | Office buildings, guest Wi-Fi, and IoT hardware.              | Modifies the DNS forwarders on your main gateway. This instantly extends baseline protection to every device operating behind your public IP address without requiring local software installations. |
| **CloudBox (Local Virtual Appliance)** | Active Directory integration and granular internal reporting. | It manages local traffic and applies specific filtering policies based on the individual user or group.                                                                                              |
| **Endpoint Agents (ClientShield)**     | Remote workers, traveling laptops, and roaming smartphones.   | A lightweight application installed directly on the user's device. It enforces your exact company security policies regardless of the external Wi-Fi or cellular network they join.                  |

To begin your setup, determine the best approach for your current infrastructure and proceed to the corresponding configuration guide within the [Deployments section](docId\:h62CnWLZ1OyHnHPKL5AS9)  of the platform.

[title] Welcome to Getting Started
[path] Getting Started/

## Overview

Welcome to the Getting Started section. This foundational module introduces the core concepts of cloud-based filtering and guides you through your initial platform setup.

:::hint{type="warning"}
If you are configuring the platform for the first time, we highly recommend reviewing these concepts sequentially before making any changes to your local network hardware.
:::

## Included Guides

| **Topic**                                                        | **Focus & Description**                                                                                                       |
| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| [What is DNS Filtering](docId:-V2IsOJfQ8LrU7NoqSCfA)             | Explains the fundamental mechanics of proactive threat blocking and how the resolution flow secures your network.             |
| [Choosing Your Deployment Method](docId\:Ylm7QAg2tGcU1OVQTqw65)  | Helps you determine the most effective setup approach between main routers, local virtual appliances, and endpoint agents.    |
| [Navigating the Dashboard](docId\:FAUhaquw-sfgFCMJfqPJ0)         | A quick orientation tour of the main interface detailing where to manage networks, security rules, and traffic analytics.     |
| [Understanding Security Policies](docId\:glS8-NL2T13PZhwKR5F4-)  | Breaks down how various filtering layers like malware protection, content blocking, and domain exceptions work together.      |
| [The Global Anycast Network](docId\:WqlMUuhoe8JJCzPWkpB8K)       | Details the underlying global infrastructure that ensures high-speed domain resolution and zero latency degradation.          |
| [Quick Start: Your First Setup](docId\:ZTF3rCBmQyTwMAcjk2gp6)    | Outlines the essential steps required to register your public IP, assign a baseline policy, and secure your primary location. |

## Ready to begin?

:::hint{type="success"}
Start your journey by understanding the core concepts. Proceed to [What is DNS Filtering](docId:-V2IsOJfQ8LrU7NoqSCfA) to learn how our proactive threat blocking secures your network.
:::


[title] Networks Overview
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > **Networks**. This will open the main dashboard for managing your network identifiers.
:::

## Overview

The **Networks** module is the bridge between your physical infrastructure and your security rules. Before you can apply any filtering policy, the system must be able to recognize who is making the DNS requests. This section allows you to define and manage the IP addresses or identifiers that represent your locations (e.g., Office, Home, Branch A) and link them to a specific **Protection Policy**.

## Understanding Network Types

Different environments require different methods of identification. Use the top navigation bar to select the configuration that matches your internet connection type.

| Connection Type                                      | Description & Use Case                                                                                                                                                     |
| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ****[Static Networks](docId\:NjIeqU3pgwnnIqeRS2jQN)  | Used for networks with a permanent Public IP address. This is the most common method for businesses and supports single IPs, IPv4 ranges, or CIDR blocks.                  |
| [Dynamic Networks](docId:4muf-NEWVodunyDGPC0xL)      | Ideal for connections where the Public IP changes periodically. This setup requires an update agent or configurations for third-party DDNS providers like No-IP or DynDNS. |
| ****[DoH & DoT](docId:6X9qvHh_aUtjqtn_dwNyn)         | Identifies users via a unique encrypted token using DNS over HTTPS or TLS instead of their IP address. Perfect for remote workers and roaming devices.                     |


[title] Untitled
[path] Core Configuration/Core Configuration Overview/


[title] New Router
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Router Overview/Router/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Router](docId\:C4CVX6HDn56juZPBKBYmE) and click <font color="#2563eb">`+ Add Router`</font> button.
:::

## Overview

This panel allows you to register a new hardware router into the system using a guided setup wizard. By defining the brand and configuration details here, you authorize the platform to accept and filter DNS traffic originating from your specific device.

## Interface Overview

Follow the wizard steps to identify and set up your connection. The available options will adapt based on the hardware capabilities.

### Brand

| **Interface Element** | **Description & Focus**                                                                                  |
| --------------------- | -------------------------------------------------------------------------------------------------------- |
| **Brand**             | Select the manufacturer of your device from the available grid or use the search bar to find it quickly. |

### Type

| **Interface Element** | **Description & Focus**                                                                                                                                                                                                          |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type**              | Choose the specific connection mode for your selected brand. Depending on the manufacturer, you might be able to select a standard Dynamic DNS Connection, a more secure DNS over HTTPS protocol, or an automated Script Config. |

### Configuration

| **Interface Element**         | **Description & Focus**                                                                                                                                                 |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Configuration**             | Fill in the required details to link the device to your account. The visible fields will dynamically adapt based on the connection type you chose in the previous step. |
| **Name**                      | Enter a name to identify the router.                                                                                                                                    |
| **Policy**                    | Select the security profile you want to apply to the traffic originating from this router.                                                                              |
| **Username and Password**     | Set the specific credentials that the router will use to authenticate its dynamic connection. These fields are only required and visible for Dynamic DNS setups.        |
| **DNS and Total WAN numbers** | Choose the primary and secondary DNS pair and specify the number of WAN connections. These fields are only required and visible for Dynamic DNS setups.                 |
| **Note**                      | Use this field to add internal comments or descriptions.                                                                                                                |

## Finalizing the Setup

Once all the information is entered, click the blue <font color="#2563eb">`Finish the guided configuration`</font> button.

A final success screen labeled Well done! will appear. This screen provides the exact parameters or code you need to enter into your physical router interface to complete the setup. The provided data will change depending on your initial configuration choice:

- **For Dynamic DNS:** You will receive your Primary DNS, Secondary DNS, DDNS Username, and DDNS Password.
- **For DNS over HTTPS:** The system will generate a single, unique DNS-over-HTTPS URL. Use the copy icon next to the link to easily paste it into your router dashboard.
- **For Script Config:** The system will generate a ready-to-use script. Use the copy button to copy the code and paste it directly into your router terminal, like MikroTik, to complete the configuration automatically.

After noting down the necessary credentials, copying the URL, or copying the script, click the **Finish&#x20;**&#x62;utton to close the wizard. Your new router will now appear in the main deployments list.

[title] Untitled
[path] Core Configuration/Core Configuration Overview/


[title] API
[path] Core Configuration/Core Configuration Overview/Integrations/Integrations Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Integrations](docId\:dqCi75YZYByKVZLFcBztL)**&#x20;> API**.
:::

## Overview

Th&#x65;**&#x20;API module** is designed to manage programmatic **access&#x20;**&#x74;o your **dashboard**. It allows developers and system administrators to securely **connect&#x20;**&#x63;ustom applications, **automate&#x20;**&#x72;epetitive tasks, and **extract&#x20;**&#x64;ata using our application programming **interface**.

:::hint{type="info"}
**How it works:&#x20;**&#x54;he system **generates&#x20;**&#x61; uniqu&#x65;**&#x20;authentication key** tied to your specific **administrative&#x20;**&#x75;ser and role. By utilizing this **key**, external scripts and services can **interact&#x20;**&#x77;ith the platform **securely&#x20;**&#x77;ithout requiring manual login via the web interface.
:::

## Interface Overview

Th&#x65;**&#x20;interface features** an informational banner containing helpful **resources**, followed by a detailed **list&#x20;**&#x6F;f your available **API credentials**.

### Documentation Banner

Use this top **section&#x20;**&#x74;o access **detailed&#x20;**&#x74;echnical **resources**.

| **Interface Element**             | **Description & Focus**                                                                                                                                                                                                                                               |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Consult the API documentation** | An informational **banner&#x20;**&#x70;roviding a direct link to the comprehensive developer **documentation**, featuring technical details and usage **examples**. You can **dismiss&#x20;**&#x74;his banner by **checking&#x20;**&#x74;he Don't show again **box**. |

### List View

The main table **displays&#x20;**&#x79;ou&#x72;**&#x20;active API** keys and their usage **statistics**.

| **Interface Element** | **Description & Focus**                                                                                                                                                                                               |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Username & Key**    | Displays the name of the **administrator&#x20;**&#x61;bove their unique **alphanumeric&#x20;**&#x41;PI **credential**. Click the Copy **button&#x20;**&#x74;o securely **copy&#x20;**&#x74;he text to your clipboard. |
| **Status**            | A label **indicating&#x20;**&#x77;hether the API key is currently active and ready to authenticate requests.                                                                                                          |
| **Role**              | Shows the specific **permission&#x20;**&#x6C;evel **associated&#x20;**&#x77;ith the generated **API&#x20;**&#x6B;ey, ensuring programmatic actions are bound b&#x79;**&#x20;role based** access controls.             |
| **Last used**         | **Indicates&#x20;**&#x74;he exact **date&#x20;**&#x74;he API key was most recently **utilized&#x20;**&#x74;o communicate with the **system**.                                                                         |
| **Created on**        | Shows the **original&#x20;**&#x67;eneration **date&#x20;**&#x6F;f the **API&#x20;**&#x63;redential.                                                                                                                   |

## Configuration & LogicSecure Automation

**API keys** carry the exact same **privileges** as the user role they are **assigned&#x20;**&#x74;o. **Safeguard&#x20;**&#x74;hese credentials carefully as they provide direct **access&#x20;**&#x74;o your platform configurations. You can use these keys in conjunction with the official API **documentation** to automate policy **deployments**, synchronize network **updates**, or fetch security **logs&#x20;**&#x64;irectly into your preferred **monitoring systems**.

[title] SafeSearch
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), open a **Standard Policy** or **Restricted Policy**, and select th&#x65;**&#x20;SafeSearch** tab in the top navigation bar.
:::

## Overview

The **SafeSearch** module allows you to enforce "Strict Mode" filtering directly at the network level.

Normally, users can easily disable SafeSearch in their browser settings to view explicit content. By enabling this module, the system overrides those local settings, ensuring that inappropriate content (pornography, extreme violence, and gore) is filtered out of search results, even if the user tries to turn it back on.

## Understanding the Supported Platforms

This module supports the most popular search engines and video platforms. Use this table to understand what each toggle controls.

| Platform                  | Function                                                                                                                                                                 |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Google SafeSearch**     | Forces Google to use its strictest filtering level, hiding explicit text and images from search results.                                                                 |
| **Bing SafeSearch**       | Forces Microsoft Bing to use SafeSearch, filtering out adult content from web, image, and video searches.                                                                |
| **DuckDuckGo SafeSearch** | Forces the privacy-focused DuckDuckGo engine to use SafeSearch mode.                                                                                                     |
| **YouTube SafeSearch**    | Enforces **YouTube Restricted Mode**. This hides videos that may contain mature content, strong language, or violence, making the platform safer for schools and minors. |

## Configuration & Logic

The interface uses individual configuration cards for quick activation.

- **Toggle ON ():** SafeSearch is **FORCED**. The user cannot disable it on their device.
- **Toggle OFF (**<font color="#a5adb6">**Grey**</font>**):** SafeSearch is **OPTIONAL**. The user can decide whether to turn SafeSearch on or off in their own browser settings.

:::hint{type="info"}
This feature does not block the search engine itself (e.g., users can still access Google.com). It only sanitizes the results they see. To block access to a search engine entirely, use the Content or Applications modules.
:::


[title] Add EDNS
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/EDNS/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), select the chosen policy, select the [EDNS](docId:6gqQCCL7f3AfmtlGjvrof) section and click <font color="#2563eb">`+ Add tag`</font>
:::

## Overview

This configuration panel allows you to register a custom EDNS identifier and map it directly to a specific security profile, enabling granular filtering for distinct network segments.

## Interface Overview

Use this modal to define your routing parameters and register a new identifier to your active list.

| **Interface Element** | **Focus & Description**                                                                                                                 |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Tag**               | Enter your unique 4-digit EDNS0 tag in this text field. This exact string must be injected into the DNS payload by your local hardware. |
| **Note**              | An optional text field to add internal descriptions or labels to easily identify the network segment.                                   |
| **Add**               | Click this blue button to save the new tag and add it to your active list.                                                              |

:::hint{type="warning"}
You can assign a specific EDNS tag to one security policy, but a single policy cannot be linked to multiple EDNS tags simultaneously.
:::


[title] Add DNS Forwarding
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/End-Points Overview/Settings/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [End-Points](docId\:xkBYB1hMatXzpTpHj00rU)  and ensure you are on the [Settings](docId:66hrMSVyUV-eTsvNBGniT) tab than click <font color="#2563eb">`+ Add DNS forwarding`</font> button..
:::

## Overview

The **Add DNS forwarding** panel allows you to configure the routing of a specific **domain** or subdomain to a third-party **DNS server**.

:::hint{type="info"}
**How it works:&#x20;**&#x42;y specifying a domain and assigning it to a **primary DNS** server IP, you ensure that all **requests** for that specific internal resource are correctly **resolved** by your designated **local server** rather than being sent out to the **public internet**.
:::

## Interface Overview

Use this configuration window to define the parameters of your new forwarding rule.

| **Interface Element**     | **Description & Focus**                                                                                                               |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Domain**                | The specific **domain** or subdomain you need to route to an **internal server**.                                                     |
| **Primary DNS server IP** | The internal **IPv4** or **IPv6** address of the **local DNS** server instructed to **resolve** queries for the specified **domain**. |
| **Add DNS forwarding**    | The **blue button** at the bottom of the window to save the **settings** and register the **new rule** in your configuration.         |

## Configuration & Logic

Setting up a dedicated **DNS forwarding** rule guarantees seamless access to your internal company servers. Once the domain and the primary IP are defined, the endpoint agent will intelligently split the DNS traffic. It will send internal network requests directly to your local server while continuing to protect and filter all other external internet traffic through the main security policy.

[title] Audit
[path] Core Configuration/Core Configuration Overview/Administrators/Administrators Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Administrator](docId\:wSxJclHYrjU6crXuOA47J)**&#x20;> Audit**.
:::

## Overview

The **Audit module&#x20;**&#x70;rovides a **comprehensive&#x20;**&#x61;nd detailed log of all user activities within the **organization**. It tracks exactly who did what, when it happened, and the outcome of the action.

:::hint{type="info"}
**How it works:&#x20;**&#x45;very time an **administrator&#x20;**&#x6C;ogs in, modifies a policy, updates a setting, or changes an account, the system automatically **records&#x20;**&#x61; highly detailed event **log**. This creates a transparent **trail&#x20;**&#x6F;f all platform **configurations**.
:::

## Interface Overview

The interface is structured as a **chronological&#x20;**&#x65;vent ledger, equipped with **filters&#x20;**&#x74;o help you find specific **actions**.

### Top Controls

Use these toggles to **narrow&#x20;**&#x64;own the **log&#x20;**&#x65;ntries based on their **execution&#x20;**&#x72;esult.

| **Interface Element** | **Description & Focus**                                                                                                                      |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **Status Filters**    | Quick toggle **buttons&#x20;**&#x74;o filter the event **logs&#x20;**&#x62;y their **outcome**, specifically All, Success, Error, or Denied. |

### List View

The main table displays the **chronological&#x20;**&#x68;istory of all administrative **events**. Use the pagination **controls&#x20;**&#x61;t the bottom to navigate through older **entries**.

| **Interface Element** | **Description & Focus**                                                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Actor**             | Displays the **name&#x20;**&#x61;nd the specific **role&#x20;**&#x6F;f the **administrator&#x20;**&#x77;ho initiated the **action**.             |
| **Result**            | A status **label&#x20;**&#x69;ndicating whether the attempted **action&#x20;**&#x77;as successfully **completed**.                               |
| **Event Description** | A brief, readable **explanation&#x20;**&#x6F;f the action **performed**, such as a user login or a system modification.                          |
| **Event Date**        | The precise **date&#x20;**&#x61;nd **time&#x20;**&#x74;he event **occurred**, recorded in coordinated universal time **UTC**.                    |
| **Event Type**        | Categorizes the specific **nature&#x20;**&#x6F;f the **action**, such as Login or Update.                                                        |
| **Actor / Target**    | Identifies the specific **organization&#x20;**&#x6F;r network **target&#x20;**&#x61;ffected by the administrative **event**.                     |
| **Actions**           | Click the designated **icon&#x20;**&#x74;o inspect the complete technical **payload&#x20;**&#x61;nd in-depth details of that specific **event**. |

## Configuration & Logic

### Accountability and Troubleshooting

The **Audit log** is your primary tool for **troubleshooting&#x20;**&#x63;onfiguration issues and maintaining strict **security&#x20;**&#x63;ompliance. If an **unexpected change** occurs on a network policy or a device loses **connection&#x20;**&#x64;ue to a rule update, the audit log allows you to pinpoint exactly which **administrator&#x20;**&#x6D;ade the **modification**, verify the exact time it was applied, and **investigate&#x20;**&#x74;he technical details of the **event**.

[title] Assign Exception
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/Policy Exceptions/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), and click <font color="#2563eb">`+ Assign exception groups`</font>button.
:::

## Overview

Creating an exception list (Allow List or Block List) is not enough to activate it. You must explicitly **assign** that list to a policy. This modular approach allows you to reuse the same "Global Allow List" across multiple different policies (e.g., for different offices) without having to recreate the domains every time.

## Interface Overview

The assignment window is a focused modal designed for quick selection.

| **Interface Element**                                        | Focus & Description                                                                                                                                             |
| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Selection Field**                                          | Click here to see all available exception groups. You can select multiple lists simultaneously (e.g., both a "Global Allow List" and a "Marketing Block List"). |
| **Checkmarks (✓)**                                           | A blue checkmark next to a list name indicates it is currently selected for this policy.                                                                        |
| <font color="#2563eb">`+ Create new exception group` </font> | If you haven't created the list yet, use this button to define a new group on the fly without leaving the screen.                                               |
|                                                              | The blue button confirms the link. The policy will immediately start using the domains in the selected lists.                                                   |

## Configuration & Logic

### Select Your Groups&#x20;

Click inside the input box. A dropdown list of all your available Exception Groups will appear.

- **To Add:** Click on the group name. It will appear as a "chip" (tag) inside the box.
- **To Remove:** Click the **"X"** icon next to the group name tag to unlink it.

### Confirm Assignment&#x20;

Once you have selected all the necessary lists (Allow and Block), click the blue  button at the bottom right.

:::hint{type="warning"}
**Important Priority Logic**

- Allow Lists (Whitelists) always take priority over Block Lists (Blacklists).
- Exception Lists always take priority over Content Filtering Categories.

Example: If you block "Social Networks" in the main policy but add facebook.com to an assigned Allow List, Facebook will be accessible.
:::




[title] New DoH & DoT Network
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/DoH & DoT/

:::hint{type="info"}
Navigate to the sidebar menu: Deployments > [Networks Overview](docId\:L9XqF2Zamgt1yKoh2nGmN) , open [DoH & DoT](docId:6X9qvHh_aUtjqtn_dwNyn) and click  button.
:::

## Overview

This panel allows you to register a new network or device utilizing encrypted DNS protocols into the system. By defining the parameters here, you authorize the platform to accept and filter DNS traffic originating from that specific encrypted source.

## Interface Overview

Fill in the fields to identify your connection.

| **Interface Element**                     | **Description & Focus**                                                                                                                |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Network name**                          | Enter a name to identify this location internally like Remote Laptop or Branch Router. This name will appear in your reports and logs. |
| **Policy to associate with this network** | Click the dropdown menu and select the specific security profile you want to apply to this connection.                                 |
| **Note**                                  | Use this field to add internal comments like the device owner or specific deployment details.                                          |

### Encrypted URL Generation

Unlike standard IP setups, DoH and DoT configurations require unique endpoints. By completing this configuration, the system will automatically generate the specific encrypted URLs you need to set up your browsers, roaming devices, or compatible routers.

### Finalizing the Setup

Once the information is entered, click the blue Add button. The window will close, and your new network will appear in the DoH & DoT list.

:::hint{type="warning"}
After clicking Add, the network is created. Please check the main list to copy the generated URLs assigned to this new setup. If you need to change the protection rules, click the network name or the action menu next to it in the main dashboard.
:::


[title] Untitled
[path] Core Configuration/Core Configuration Overview/


[title] Ask AI Overview
[path] Core Configuration/Core Configuration Overview/Ask AI/

:::hint{type="info"}
Navigate to the bottom of the sidebar menu and click the **Ask AI** button.
:::

## Overview

The **Ask AI tool&#x20;**&#x70;rovides instant access to our documentation and support resources directly from your active session. By clicking the button, a dedicated search widget will appear in the center of your screen, allowing you to quickly find answers or ask questions without leaving your current page.

## Interface Overview

The search widget is designed to be completely straightforward. Use the elements below to interact with the assistant and retrieve the information you need.

| **Interface Element** | **Focus & Description**                                                                                                                                                               |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search Bar**        | The central text field labeled **Search or ask anything**. Type your questions, keywords, or specific configuration issues here to instantly query our entire documentation database. |
| **Switch to Docs**    | A quick text link located just below the search bar. Click here to close the quick search widget and jump directly into the full documentation portal for deep reading.               |
| **Close Icon**        | The small **X** icon on the right side of the search bar. Click this to dismiss the widget and immediately return to your dashboard.                                                  |


[title] Router Connections
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Router Overview/Router/

## Overview

This panel allows you to manage the specific active connections for a single router. From this dedicated screen, you can review the assigned network addresses, check custom notes, and modify the security policies protecting this specific hardware deployment.

## Interface Overview

The interface is structured to give you a clear view of all the connections associated with your selected router.

### Top Navigation Tools

At the top of the page, you will find the primary tools for navigating and interacting with the connection list:

| **Interface Element** | **Focus & Description**                                                                                                       |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Search**            | Located below the header. Use this text field labeled **Search** to quickly filter the connection list by name or parameters. |

### Connection List Details

The main grid displays the specific details for every active route tied to this device:

| **Interface Element** | **Focus & Description**                                                                                                   |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Type**              | Displays an icon indicating the active connection method under the **Type&#x20;**&#x63;olumn.                             |
| **Connection**        | Shows the specific name assigned to this network setup under the **Connection&#x20;**&#x63;olumn.                         |
| **Note**              | Displays any custom internal comments or labels under the **Note&#x20;**&#x63;olumn.                                      |
| **Address**           | Displays the assigned IP address for this specific integration under the Address **column**.                              |
| **Policy**            | Highlights the specific security **profile&#x20;**&#x63;urrently active and enforcing filtering rules on this connection. |
| **Actions**           | The three dots icon located on the far right. Click here to open a contextual menu to manage this specific configuration. |

### Connection Actions

Click the three dots icon on the far right of any connection row to open the actions menu. This menu provides specific options to manage your route configuration. The available options will adapt dynamically based on your hardware and connection type.

| Action Menu Option            | Description & Focus                                                                                                                                                                                                                                                                                                                                                                                             |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Modify Connection**         | Opens a configuration window where you can update the connection Name, Username, Password, and internal Notes. Click the blue Save button to apply your changes.                                                                                                                                                                                                                                                |
| **Modify Policy**             | Opens a dedicated panel to manage the security profiles linked to this connection. From here, you can search through your active assignments, view the assigned DNS addresses, or use the trash bin icon to remove a specific profile. To add a new integration, use the bottom row to select a policy and its corresponding DNS pair from the dropdown menus, type an optional note, and click the enter icon. |
| **Details**                   | Opens a read-only window displaying the current connection parameters, including the Name, Username, masked Password, and Notes. Click the Close button to dismiss the panel.                                                                                                                                                                                                                                   |
| **Show Configuration Script** | Available specifically for hardware setups that support automated integration, such as MikroTik. Opens a modal displaying the automatically generated code. You can copy this script directly from here and paste it into your device terminal to reapply the configuration.                                                                                                                                    |
| **Delete**                    | Click the red trash bin icon to completely remove this connection and its associated routing configurations from your network.                                                                                                                                                                                                                                                                                  |


[title] Cloud Box Overview
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > **Cloud Box**. This will open the main dashboard for managing your virtual machines (cloud box).
:::

## Overview

The **Cloud Box** is an advanced feature designed for Microsoft Active Directory integration and complex **network environments**. The system relies on a virtual machine that acts as a caching system, sitting between your network clients and our infrastructure.

From the **cloud dashboard**, you can define roles and decide which policies to use without accessing the virtual machine. The system handles the **associations automatically**.

:::hint{type="warning"}
To proceed with the installation via the **Download Software** button, we always suggest downloading and using the **ISO format**. Installing via ISO is the most stable and **recommended** method. Only if this option causes problems, we advise using the first download option available in the drop-down menu.
:::

## Understanding Cloud Box Features

Complex network environments require **granular management**. Use the top navigation bar to switch between the different configurations of your **Cloud Box**.

| **Section**                                         | **Description & Use Case**                                                                                                                                                                                              |
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ****[Cloud Box](docId\:e5PhfNy4qIjy04obxl7Vk)       | The main screen to view and manage your Cloud Boxes. Here you can **create** cloud boxes and **monitor** if they are correctly **synchronizing** with the APIs.                                                         |
| ****[Policy Mapping](docId\:T9GEQ134ugPNqh-YmaS6T)  | The area dedicated to linking security rules. It allows you to decide which **network element** to link to a specific policy. You decide how to divide your network elements among the various **protection profiles**. |
| ****[DNS Forwarding](docId:31FUmjbnzLOPjD0T7Lu9u)   | This function allows you to use **DNS servers** different from ours, it is highly useful in Microsoft Active Directory environments or to **reduce** the **traffic** sent to our datacenters.                           |


[title] Installation
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/End-Points Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [End-Points](docId\:xkBYB1hMatXzpTpHj00rU) and ensure you are on the **Installation** tab.
:::

## Overview

The Installation module provides all the necessary tools to generate a security key, select an initial protection profile, and download the specific client agent for the device you need to protect.

By generating the security key and selecting the correct protection policy here, the endpoint will immediately begin filtering traffic according to your predefined rules once the software is installed on the target device, without requiring further manual network configuration.

## Configure the Client

Use this section to set up the deployment parameters for your new endpoints before downloading the software.

| **Interface Element**             | **Description & Focus**                                                                                                                                                           |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Protection Policy**             | Use the drop-down menu in the right-hand panel to select the default security ruleset that will be applied to the newly installed agents.                                         |
| **Security Key**                  | A unique alphanumeric code required during the agent installation process. Click the copy icon to save it to your clipboard.                                                      |
| **Agent guided installation URL** | The web address to access the installation page directly from the target device. Copy the link or scan the generated QR code to rapidly open the setup page from a mobile device. |

## Download the Software

Select the appropriate installer for your target device. Click the download button next to the required operating system to get the client application.

| **Operating System** | **Compatibility**                                                     |
| -------------------- | --------------------------------------------------------------------- |
| **Windows**          | Compatible with 64-bit systems including versions 11, 10, 8.1, and 7. |
| **macOS**            | Compatible with version 11.0 Big Sur and newer.                       |
| **iOS**              | Compatible with version 15.0 and newer.                               |
| **Chrome OS**        | Compatible with version 7.0 and newer.                                |
| **Android**          | Compatible with version 7.0 and newer.                                |
| **Linux**            | Currently available in Beta.                                          |

## Next Steps: Operating System Guides

:::hint{type="info"}
Once you have generated your Security Key and downloaded the installer, follow the specific deployment guide for your operating system: [ClientShield Configuration](docId\:sbo1Y10GdIOw8bxEFYuQk)
:::


[title] Policy Exceptions
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), open a **Standard Policy** and select th&#x65;**&#x20;Exceptions** tab in the top navigation bar.
:::

## Overview

The **Exceptions** module serves as the final authority in your filtering hierarchy. It allows you to assign specific **Allow Lists** (Whitelists) or **Block Lists** (Blacklists) to override the general rules set in the Malware, Content, or Application modules.

- **Example:** You can block the entire "Social Networks" category in the *Content* tab but add a specific Exception to allow access to **LinkedIn** for the HR department.

## Interface Overview

The interface is designed to manage the link between your policy and your custom domain lists.

| <font color="#111827">Interface Element</font>           | Focus & Description                                                                                                      |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Search Bar**                                           | Located at the top left. Allows you to quickly find a specific exception group already assigned to this policy.          |
| <font color="#2563eb">`+ Assign exception groups`</font> | The blue <font color="#2563eb">`+ Assign exception groups`</font> button allows you to attach a new list to this policy. |
| **List View**                                            | Once groups are assigned, they will appear in the main area below the search bar (currently empty in the view).          |

## Understanding Exception Types

Exceptions are managed via "Groups" (lists of domains). Use this table to understand the two main types of overrides you can apply.

| Exception Type             | Function & Priority                                                                                                                                                                                            |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Allow List (Whitelist)** | Domains in this list are **always accessible**, even if they fall under a blocked category (e.g., *Malware* or *Social Networks*). This is primarily used to fix **False Positives** or grant specific access. |
| **Block List (Blacklist)** | Domains in this list are **always blocked**, even if the category they belong to is generally allowed. This is used to block specific unwanted sites without restricting the entire category.                  |

:::hint{type="warning"}
Subdomains and CDNs When adding exceptions, remember that modern websites often load content from multiple sources:

- **Subdomains:** Ensure you consider whether you need to allow just example.com or also drive.example.com.
- **CDNs**: Many sites host images and scripts on external domains (e.g., cdn-provider.net). If a Whitelisted site appears "broken" (missing images or styles), check if you need to allow its CDN domains as well.
:::

### Configuration & Logic

This page is used solely to **link** existing groups to the current policy.

- **To Assign a Group:** Click the <font color="#2563eb">`+ Assign exception groups`</font> button. This will open a dedicated selection window.
- **To Create/Edit Groups:** The actual lists of domains are managed in the global settings.

:::hint{type="info"}
Managing Groups Clicking the Assign button opens a separate interface for selecting and managing your custom lists: [New exception](docId\:XEsj0REJztBh0D1gxRUP7)&#x20;
:::


[title] EDNS
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), open a **Standard Policy**, and select th&#x65;**&#x20;EDNS&#x20;**&#x74;ab in the top navigation bar.
:::

## Overview

The EDNS feature enables distinct security profile assignments for various subnets operating behind a single public internet connection. This eliminates the need for a universal location rule, allowing you to segment filtering policies for specific departments or guest networks.

By extracting a unique four-digit identifier from your outbound DNS queries, our cloud filter bypasses standard IP-based settings to enforce the exact policy mapped to that specific local source.

:::hint{type="warning"}
This advanced routing feature requires an active Secure\_Plus, Core\_Max, Secure\_Top, or Core\_Ultra plan to unlock and configure these capabilities.
:::

## Interface Overview

Navigate to the EDNS tab within your protection settings. From this main dashboard, you can view and manage your active custom tags.

| **Interface Element**                    | **Focus & Description**                                                                                                                    |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| <font color="#2563eb">`+ Add tag`</font> | The primary blue button located on the right side of the screen. Click this to open the configuration panel and register a new identifier. |
| **Tag**                                  | Displays the registered four-digit identifier injected into your network requests.                                                         |
| **Note**                                 | Shows any custom internal description or label assigned to the specific tag.                                                               |
| **Actions**                              | Contains the pencil icon to modify the internal note and the trash bin icon to completely remove the tag from your configuration.          |

## Configuration & Logic

This dashboard is used to generate and register your unique routing identifiers.

- **To Create a Tag:** Click the <font color="#2563eb">`+ Add tag`</font> button. This will open a dedicated configuration window.
- **To Map a Tag:** The actual assignment of these identifiers to specific security profiles is managed directly within your policy settings.

:::hint{type="info"}
Learn the exact steps to generate a new identifier and link it to your security profiles: [Add EDNS](docId\:OSmdGMa03tvtMWilvW6ah)&#x20;
:::



****




[title] Overview
[path] Core Configuration/Core Configuration Overview/Reports and Log/Reports and Log Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Reports and Log](docId\:JspFE-FvGeJRg7_kQIrHa)**&#x20;&#x20;**&#x61;nd select the **Overview** tab in the side navigation menu
:::

## Overview

The **Reports and Log module** is designed to give you complete visibility into your network traffic and filtering activity. This section consolidates high-level visual analytics and granular DNS query logs into two dedicated views.

:::hint{type="info"}
The system records every DNS request processed by your networks and translates this raw data into searchable logs and visual charts. This allows you to easily monitor security events, track user activity, and verify policy effectiveness.
:::

## Interface Overview

The interface is divided into specific areas depending on whether you are viewing high-level analytics or searching raw traffic logs.

### Analytical Reports Controls

Use these tools to manage chart generation and data visualization.

| **Interface Element** | **Description & Focus**                                                                                                         |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Report Selector**   | Allows you to quickly switch between different statistical views like Allowed and Blocked Requests or Top Allowed Applications. |
| **Date Picker**       | Defines the specific timeframe for the generated chart using a calendar interface.                                              |
| **Filters**           | Opens advanced filtering options to narrow down your data based on specific Networks, Categories, or Policies.                  |
| **Export PDF**        | Generates a comprehensive downloadable document for offline review or compliance auditing.                                      |

### Key Performance Indicators

These four widgets display your top-level network statistics for the selected timeframe.

| Interface Element                       | Description & Focus                                                   |
| --------------------------------------- | --------------------------------------------------------------------- |
| **Total DNS Requests**                  | The absolute number of queries processed.                             |
| **Blocked Threats**                     | The amount of traffic successfully stopped by your security policies. |
| **Allowed DNS Requests**                | The volume of legitimate traffic permitted.                           |
| **Requests to non-existent domains NX** | Queries directed toward unresolved or dead domains.                   |

### Trend Visualization

The lower section of the dashboard features interactive charts to help you analyze traffic patterns.

| Interface Element                  | Description & Focus                                                   |
| ---------------------------------- | --------------------------------------------------------------------- |
| **Allowed and Blocked Requests**   | A timeline showing the trend of your DNS actions.                     |
| **DNS Request Percentage**         | A distribution breakdown of allowed, blocked, and unresolved queries. |
| **Most Blocked Requests**          | Identifies the top categories triggering your security filters.       |
| **Most Allowed Requests**          | Highlights the most frequently accessed safe categories.              |
| **Most Blocked Malware**           | Shows the main malware categories most blocked in your network.       |
| **Most Requested Malware Domains** | Shows the specific malware domains most requested in your network.    |

## Configuration & Logic

### Generating Analytical Reports

To analyze your traffic trends, select your desired report from the main tabs. You can visualize critical data such as Most Blocked Malware or DNS Request Percentage. Using the **Filters** button is essential for organizing your view if you manage multiple locations or profiles. It opens a dedicated menu allowing you to isolate traffic originating from a specific network or managed by a specific security policy.

### Investigating Raw Logs

When you need to troubleshoot a specific block, diagnose an access issue, or track precise user activity, switch to the Log Search tool. Fill in the specific search parameters, like typing a specific domain in the **FQDN** field, and review the detailed results table. The table provides a granular view of each individual query, including the exact Date and Time and the Country of origin.


[title] Network Policies
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/Static Networks/Network configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments ](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Networks](docId\:L9XqF2Zamgt1yKoh2nGmN) , click on the **Name** of the network you wish to configure. Ensure the **Policies** tab is selected in the top navigation bar (this is the default view).
:::

## Overview

This page allows you to associate your created **Protection Policies** with this specific network location. The core function of this interface is to generate and assign the specific **DNS Resolver IP Addresses** that must be configured on your router or server to activate the protection.

## Interface Overview

The workspace is organized as a table listing the active associations.

| Interface Element | Description & Focus                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Policy**        | Displays the name of the protection profile (e.g., "First configuration...") applied to this link.                                               |
| **Assigned DNS**  | Shows the specific pair of IP addresses (e.g., 185.236.104.154) associated with this policy. These are the addresses that identify your traffic. |
| **Notes**         | Displays any internal comments regarding this assignment (e.g., "Created via wizard").                                                           |
| **Actions**       | Use the **Trash Can Icon** to remove a policy association, effectively stopping the filtering for that specific DNS pair.                        |

### Configuration & Logic

To add a new rule to this network, use the input row at the bottom of the list:

- **Select Policy:** Click the dropdown menu on the left to choose from your available Standard or Restricted policies.
- **Select DNS:** Choose a DNS pair from the dropdown. In most cases, the system will suggest an available pair automatically.
- **Add Note:** (Optional) Enter a description.
- **Save:** Click the **Enter Icon** (arrow inside a square) on the far right to confirm the assignment.

### Router Configuration

Simply adding the policy in this dashboard is **not enough** to start filtering. You must configure your physical equipment.

:::hint{type="warning"}
Once you see the Assigned DNS IPs in this table (e.g., 185.236.104.154 and 185.236.105.155), you must:&#x20;

- Log into your Router or DHCP
- Locate the DNS Settings.
- Replace your current DNS (often Google or ISP defaults) with the exact IP pair shown in this table.

Until this physical change is made, your traffic will not pass through the filter.
:::


[title] New Policy Mapping
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Cloud Box Overview/Policy Mapping/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Cloud Box](docId\:e5PhfNy4qIjy04obxl7Vk)  and ensure you are on the [Policy Mapping](docId\:T9GEQ134ugPNqh-YmaS6T) tab than click <font color="#2563eb">`+ Add policy mapping`</font> button.
:::

## Overview

To create a ne&#x77;**&#x20;mapping rule** and link a specific policy to your internal network elements, you must fill out the **configuration panel**. The system automatically links it without accessing the virtual machine.

## Configuration Fields

Use the provided form to **define** exactly how your **network objects** should be **mapped**:

| **Interface Element**                      | **Action & Description**                                                                                                                                                                          |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Internal Network Address Type**          | Select the format of the **object type** you want to **link** from the drop-down menu, such as Static CIDR.                                                                                       |
| **CIDR/IP address/Start IP, End IP**       | Enter the specific **network segment**, **single IP address**, or th&#x65;**&#x20;start/end IP addresses for the range**, based on the selection made in the internal network address type field. |
| **Associated Policy**                      | Choose the exact **policy** from the drop-down menu that will be **linked** to these specific network elements.                                                                                   |
| **Selected Cloud Boxes**                   | Check the boxes next to the names of the Cloud Boxes you want to **link** to this specific **rule**.                                                                                              |
| <font color="#2563eb">`Add mapping`</font> | Click the blue button at the bottom right to **save&#x20;**&#x74;he configuration and **apply** the **mapping rule**.                                                                             |


[title] Applications
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC)  open a **Standard Policy**, and select th&#x65;**&#x20;Applications** tab in the top navigation bar.
:::

## Overview

The **Applications** module provides a granular layer of control, allowing you to block specific apps and services rather than broad website categories. Unlike the Content filter (which blocks *all* social networks or *all* news sites), this module allows you to target specific ecosystems.

:::hint{type="info"}
Example: You can block **TikTok** while keeping **LinkedIn** accessible, or block **ChatGPT** while allowing other AI tools. This feature works by identifying and blocking the specific DNS signatures associated with popular applications.
:::

## Interface Overview

The dashboard is organized into two main navigation areas to help you manage your security policy:

- **Left Sidebar:** Lists the functional groups (e.g., *Business Apps*, *Social Networks*, *Messaging Apps*).
- **Main Panel:** Displays the specific applications contained within the selected group, along with their control toggles.

:::hint{type="info"}
You may notice &#x61;**&#x20;Clock Icon** next to the app toggles. This feature is designed to set time-based restrictions, allowing you to block specific apps only during certain hours (e.g., blocking Social Media only during work hours).
:::

## Understanding the Modules

The module categorizes apps by function to simplify management. Use this reference table to understand the scope of each group.

| **Category Group**           | Focus & Description                                                                                                                                                    |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **AI Provider Applications** | Controls access to artificial intelligence tools used for generating text and code, such a&#x73;**&#x20;ChatGPT**,**&#x20;DeepSeek**, an&#x64;**&#x20;Google Gemini**. |
| **Application Ecosystem**    | Manages core services, official App Stores, and platform-specific tools required for mobile or desktop ecosystems.                                                     |
| **Business Apps**            | Controls collaboration and communication tools commonly used in professional environments, such as **Slack**,**&#x20;Zoom**, an&#x64;**&#x20;Microsoft Teams**.        |
| **Crypto Mining**            | Blocks scripts and applications that hijack network resources to generate cryptocurrency, preventing hardware stress and security risks.                               |
| **Dating Apps**              | Blocks platforms and applications dedicated to dating and personal relationships.                                                                                      |
| **Ecommerce**                | Controls access to major online marketplaces and shopping platforms lik&#x65;**&#x20;Amazon** an&#x64;**&#x20;eBay**.                                                  |
| **File Sharing**             | Manages access to online banking portals, stock trading platforms, and financial management tools.                                                                     |
| **Finance**                  | Blocks online games and gaming platforms (lik&#x65;**&#x20;Steam**,**&#x20;Xbox Live**, or **PlayStation Network**) to reduce distractions.                            |
| **Gaming**                   | Controls Instant Messaging (IM) and VoIP tools such a&#x73;**&#x20;WhatsApp**, **Telegram**, and <br />**Facebook Messenger**.                                         |
| **Messaging Apps**           | Controls Instant Messaging (IM) and VoIP tools such a&#x73;**&#x20;WhatsApp, Telegram**, and <br />**Facebook Messenger**.                                             |
| **Music**                    | Blocks audio streaming services and internet radio platforms lik&#x65;**&#x20;Spotify**,**&#x20;Apple Music**, an&#x64;**&#x20;SoundCloud**.                           |
| **Services**                 | Covers various backend internet utilities and general service tools.                                                                                                   |
| **Social Networks**          | Blocks the most popular social platforms (e.g.,**&#x20;Facebook**, **Instagram**,**&#x20;TikTok**,**&#x20;X/Twitter**) to improve focus and privacy.                   |
| **Streaming Apps**           | Blocks video streaming and on-demand entertainment services (e.g., **Netflix**,**&#x20;Disney+**,**&#x20;Twitch**) that consume high bandwidth.                        |
| **VPN and Proxy**            | Blocks services designed to bypass network filters or hide the user's identity (e.g., **NordVPN**,**&#x20;ExpressVPN**), enforcing your security policy.               |

## Configuration & Logic

Configuring applications follows the standard blocking logic of the platform:

- **Toggle ON ():** The application is **BLOCKED**. Users will not be able to open the app or access its services.
- **Toggle OFF ():** The application is **ALLOWED**.
- **Enable All / Disable All:** Located at the bottom-right of the panel. Checking this box instantly blocks **all applications** in the currently selected category. Unchecking it disables the global block, allowing you to select individual apps.

[title] Exceptions
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi) > **Exceptions**.
:::

## Overview

The **Exceptions** module allows you to create manual overrides that bypass your standard security filters.

- **How it works:** You create "Groups" of domains (lists) that are either explicitly **Allowed** (Whitelist) or **Blocked** (Blacklist).
- **Priority:** These rules take precedence over general category blocking. For example, if "Social Networks" is blocked in your policy, but you add facebook.com to an Allowed Exception list, Facebook will be accessible.

## Interface Overview

The interface is designed to manage *lists* of domains rather than single entries.

**Top Controls** Use these tools to filter and manage your exception groups.

| **Interface Element**                                    | **Descritpion & Focus**                                                   |
| -------------------------------------------------------- | ------------------------------------------------------------------------- |
| **Search Bar**                                           | Quickly find a specific list by name (e.g., "Global Allow List").         |
| **Filters (All / Allowed / Blocked)**                    | Toggle buttons to view only Whitelists (Allowed) or Blacklists (Blocked). |
| <font color="#2563eb">`+ Assign exception groups`</font> | The blue button opens the wizard to create a new list of domains.         |

**List View** The main workspace displays all created exception groups.

| **Interface Element** | **Descritpion & Focus**                                                                                                                                               |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Group Name**        | The friendly name of the list (e.g., "Global Block List").                                                                                                            |
| **Type**              | Indicates the behavior of the list: <br /><br />• **Allowed (Green):** Domains are always accessible.<br /><br />• **Blocked (Red):** Domains are always unreachable. |
| **Assigned to**       | Shows which Protection Policies currently use this list (e.g., "Shared Policy", "Default Policy").                                                                    |
| **Number of Domains** | Displays how many individual websites are contained within this group.                                                                                                |
| **Actions**           | Use the **Pencil Icon** to modify the list (add/remove domains) or the **Trash Can Icon** to delete the group.                                                        |

## Configuration & Logic

**Creating a New Group** To start, you must define the list of domains itself.

- Click the blue<font color="#2563eb">`+ Assign exception groups`</font>button on the right.
- Define the **Name** and the **Type** (Allow or Block).
- Add the specific domains you wish to manage (e.g., example.com).

:::hint{type="info"}
For a detailed walkthrough on how to use the wizard, bulk import domains, and manage list settings, please refer to our dedicated guide: [New exception](docId\:XEsj0REJztBh0D1gxRUP7)&#x20;
:::

**Assigning the Group (Crucial Step)** You have successfully created the list, **but it is not yet active**. The system knows the list exists, but it doesn't know which network to apply it to.

:::hint{type="info"}
Creating the list is only the first step. To activate these rules, you must link this group to a specific policy.
For a detailed walkthrough on how to navigate to the Policy settings and activate your new list, please refer to our dedicated guide: [Assign Exception](docId\:mXcGgRayA1H2EcvNrns0f)&#x20;
:::


[title] New Dynamic Network
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/Dynamic Networks/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9)**&#x20;&#x20;**>  [Networks](docId\:L9XqF2Zamgt1yKoh2nGmN) **,** open [Dynamic Networks](docId:4muf-NEWVodunyDGPC0xL)**&#x20;&#x20;**&#x61;nd click  button.
:::

## Overview

This panel allows you to register a new physical location with a changing internet connection into the system. By defining the dynamic update parameters here, you authorize the platform to accept and filter DNS traffic originating from that specific source, even when its public IP address changes.

## Interface Overview

Fill in the fields to identify your connection.

| **Interface Element** | **Description & Focus**                                                                                                                     |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Network name**      | Enter a name to identify this location internally like Headquarters or Milan Office. This name will appear in your reports and logs.        |
| **Address type**      | Click the dropdown menu and select Dynamic IP.                                                                                              |
| **DDNS username**     | Input the dedicated username required to authenticate your dynamic update agent.                                                            |
| **DDNS password**     | Enter the corresponding password for your update agent. You can click the eye icon to reveal the hidden text and ensure no typos were made. |
| **Note**              | Use this field to add internal comments like the router model or the physical address of the location.                                      |

## Dynamic Synchronization

Unlike static setups, dynamic configurations require an active synchronization method. By selecting Dynamic IP as the Address type, you prepare the system to receive regular updates from your router or software agent using the specific DDNS username and password you configure here.

## Finalizing the Setup

Once the information is entered, click the blue Add button. The window will close, and your new network will appear in the Dynamic Networks list.

:::hint{type="warning"}
After clicking Add, the network is created. Please check the main list to ensure the correct Policy is assigned to this new location. If you need to change the protection rules, click the network name or the action menu next to it in the main dashboard.
:::


[title] Dynamic Networks
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/

:::hint{type="info"}
Navigate to the sidebar menu:  [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Networks Overview](docId\:L9XqF2Zamgt1yKoh2nGmN) and select the **Dynamic Networks**  tab in the top navigation bar.
:::

## Overview

The Dynamic Networks module is designed for residential or small business connections where the Public IP address changes periodically. If your Internet Service Provider assigns you a new IP address every time your router restarts, you must use this section to ensure your filtering protection remains active and connected to the correct location.

This section manages networks that are automatically updated in two ways: through our internal Dynamic DNS service using specific credentials, or through a third-party Dynamic DNS service using your own custom domain.

## Interface Overview

The interface is divided into two main areas: the top control bar and the main list view.

### Top Controls&#x20;

Use these tools to manage the list creation and navigation.

| **Interface Element** | **Description & Focus**                                                                                         |
| --------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Search Bar**        | Allows you to quickly filter the list to find a specific network by searching for its Name.                     |
| **Filters**           | Opens advanced filtering options to narrow down your network list based on specific criteria.                   |
|                       | The blue button on the right opens the configuration wizard to register a new dynamic connection in the system. |

### List View&#x20;

The main workspace displays a list of all authorized dynamic networks. Use this table to monitor and manage your connections.

| **Interface Element**  | **Description & Focus**                                                                                                      |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| **Type**               | Displays an icon indicating the structure of the dynamic network setup.                                                      |
| **Name**               | A custom name to identify the location like Home Office or Retail Store. Clicking this name opens the detailed settings.     |
| **Current IP address** | The most recently detected and synchronized Public IPv4 address for this location.                                           |
| **Other info**         | Displays additional configuration details related to the specific dynamic update method.                                     |
| **Policies**           | Shows the specific Policy assigned to this connection. Clicking the policy name usually links directly to its configuration. |
| **Note**               | Optional description or internal notes regarding this setup.                                                                 |
| **Actions**            | Access the menu to edit the network details or delete the configuration entirely.                                            |

## Configuration & Logic

### Using the Filters Tool

Just like in the static section, the **Filters** button is a great way to organize your dynamic configurations. Clicking it opens a dropdown menu divided into two specific tabs:

- **Type Tab:** Allows you to isolate specific setup methods. You can check the boxes to display only standard Dynamic IPs or Third-party Dynamic DNS configurations.
- **Status Tab:** Helps you monitor the synchronization health of your networks. You can filter the list to easily find configurations that are Out of sync, perfectly Synced, or those that have been created but Never used.

If you ever need to view your entire list again, simply click the **Clear all filters** button located at the bottom of the menu.

### Creating a New Network&#x20;

To authorize a new dynamic location, click the blue button on the right side of the page.

Since setting up a dynamic connection requires specific steps like choosing between the internal agent or a third-party service, we have created a dedicated guide to walk you through the setup wizard.

:::hint{type="info"}
For a step-by-step explanation on how to configure your dynamic updater and assign policies, please refer to our dedicated guide: [New Dynamic Network](docId:3yESh51YuXtYKmOSVMk6T)&#x20;
:::

### Managing Existing Networks&#x20;

Once a network is created, you may need to modify its assigned policies or check its update status.

- **Action:** Click directly on the Network Name in the list.
- **Result:** This will open the Network Detail Page, where you can manage the specific rules and see the latest IP synchronization logs.

[title] DoH & DoT
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/

:::hint{type="info"}
Navigate to the sidebar menu:  [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Networks Overview](docId\:L9XqF2Zamgt1yKoh2nGmN) and select the **DoH & DoT&#x20;**&#x74;ab in the top navigation bar.
:::

## Overview

The DoH & DoT module manages static networks configured to use encrypted DNS protocols. By using DNS over HTTPS or DNS over TLS, you ensure that your internet traffic is secure and private, preventing third parties from intercepting or tampering with your requests.

This section allows you to generate and manage the unique URLs required to configure your browsers, roaming devices, or compatible routers.

## Interface Overview

The interface is divided into two main areas: the top control bar and the main list view.

### Top Controls&#x20;

Use these tools to manage the list creation and navigation.

| **Interface Element** | **Description & Focus**                                                                               |
| --------------------- | ----------------------------------------------------------------------------------------------------- |
| **Search Bar**        | Allows you to quickly filter the list to find a specific encrypted network by searching for its Name. |
| **Filters**           | Opens advanced options to sort your encrypted network list.                                           |
|                       | The blue button on the right opens the configuration wizard to generate new secure connection URLs.   |

### List View&#x20;

The main workspace displays a list of all authorized encrypted networks. Use this table to copy your configuration links and monitor your connections.

| **Interface Element** | **Description & Focus**                                                                                                                                     |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Status**            | A green dot indicates the network is active and correctly configured.                                                                                       |
| **Name**              | A custom identifier for the location like test rete cifrata. Clicking this name opens the detailed settings.                                                |
| **DoH URL**           | The unique address provided for DNS over HTTPS setups. You can click the copy icon next to the URL to easily paste it into your browser or device settings. |
| **DoT URL**           | The unique address provided for DNS over TLS setups. A copy icon is also available here for quick configuration.                                            |
| **Policies**          | Shows the specific Policy assigned to this encrypted connection. Clicking the policy name links directly to its configuration page.                         |
| **Note**              | Optional description or internal notes regarding this setup like Rete creata per test.                                                                      |

## Configuration & Logic

### Creating a New Encrypted Network&#x20;

To generate new encrypted URLs, click the blue button on the right side of the page.

:::hint{type="info"}
This process will create a unique token for your devices. For a step-by-step explanation on how to configure these secure connections, please refer to our dedicated guide: [New DoH & DoT Network](docId\:XuEBz6Dub2-60o6wuqrs-)&#x20;
:::

### Managing Existing Networks&#x20;

Once generated, you can copy the specific URLs directly from the main list using the convenient copy icons. If you need to modify the assigned policies or notes, click the Network Name to access the detail page.

[title] Reports and Log Overview
[path] Core Configuration/Core Configuration Overview/Reports and Log/

## Overview

Th&#x65;**&#x20;Reports and Log** section is the central command center for monitoring and analyzing your network traffic and filtering activity. Here, you can review detailed statistics and investigate specific DNS queries to ensure your security policies are working effectively.

To access this section, navigate to **Reports and Log** in the main sidebar. The menu is divided into three key areas:

## Overview Dashboard

The **Overview** area provides an immediate snapshot of your network traffic and filtering health. It is designed to give you a quick summary of your most critical metrics at a glance.

- **Key Performance Indicators:** Instantly view total requests, blocked threats, allowed requests, and unresolved domains.
- **Trend Visualization:** Quickly analyze interactive charts showing your top categories, malware trends, and DNS request percentages.
- **Quick Insights:** Get a fast pulse on your network security before diving into deeper analytics.

:::hint{type="info"}
**Learn how** to navigate the main dashboard widgets and charts: [Overview](docId\:OnLPkefDi16fyNU0JizlY)&#x20;
:::

## Analytical Reports

The **Analytical Reports** area provides a deeper, high-level view of your network activity. It is designed to help you understand broad trends and traffic patterns across your deployments.

- **Trend Analysis:** Monitor top allowed and blocked domains over customized timeframes.
- **Custom Filtering:** Apply specific date ranges and data filters to focus on the exact metrics you need to evaluate.
- **Data Export:** Generate and download comprehensive PDF reports for offline review, auditing, or sharing with your team.

:::hint{type="info"}
**Learn how** to generate and interpret your network statistics: [Analytical Reports](docId\:tfABYHZeUXqThHTJrqBO2)&#x20;
:::

## Log Search

Th&#x65;**&#x20;Log Search** area allows you to dive deep into the raw DNS data. It is the perfect tool to quickly identify relevant information about specific network traffic events.

- **Granular Search:** Filter your logs by date range, specific domain names, network source, assigned category, or active policy.
- **Action and Reason:** Identify exactly why a specific query was allowed or blocked by examining the detailed action and reason logs.
- **Troubleshooting:** Investigate individual queries to diagnose access issues, verify policy effectiveness, or monitor specific activity.

:::hint{type="info"}
**Learn how** to query and investigate your traffic data: [Log Search](docId:1C5tUo6P4baylStVCjuCB)&#x20;
:::

## How the Reporting Flow Works

To effectively monitor your network security, follow this logical workflow:

- **Identify the Goal:** Decide whether you need a broad overview of your network trends or if you need to investigate a single specific traffic event.
- **Check the Overview:** Start with the Overview dashboard for an immediate snapshot of your daily or weekly network health.
- **Review Analytics:** Use Analytical Reports to spot unusual spikes in blocked traffic, identify top visited domains, and get a deeper understanding of the trends.
- **Investigate Logs:** Use Log Search to drill down into the raw data and find the exact query, time, policy, and reason behind any specific event you spotted in the analytics.

[title] Analytical Reports
[path] Core Configuration/Core Configuration Overview/Reports and Log/Reports and Log Overview/

:::hint{type="info"}
Navigate to the sidebar menu: **Reports and Log&#x20;**&#x61;nd select the **Analytical Reports** tab in the side navigation menu
:::

## Overview

The Reports and Log module is designed to give you complete visibility into your network traffic and filtering activity. This section consolidates high-level visual analytics and granular DNS query logs into two dedicated views.

:::hint{type="info"}
The system records every DNS request processed by your networks and translates this raw data into searchable logs and visual charts. This allows you to easily monitor security events, track user activity, and verify policy effectiveness.
:::

## Interface Overview

The interface is divided into specific areas depending on whether you are viewing high-level analytics or searching raw traffic logs.

### Analytical Reports Controls&#x20;

Use these tools to manage chart generation and data visualization.

| **Interface Element** | **Description & Focus**                                                                                                         |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Report Selector**   | Allows you to quickly switch between different statistical views like Allowed and Blocked Requests or Top Allowed Applications. |
| **Date Picker**       | Defines the specific timeframe for the generated chart using a calendar interface.                                              |
| **Filters**           | Opens advanced filtering options to narrow down your data based on specific Networks, Categories, or Policies.                  |
| **Export PDF**        | Generates a comprehensive downloadable document for offline review or compliance auditing.                                      |

### Log Search Controls and List View&#x20;

Use these tools to filter and investigate the raw DNS query database.

| **Interface Element**   | **Description & Focus**                                                                                           |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Search Parameters**   | A set of fields including Range Date, FQDN, Action, and Reason to precisely isolate specific network events.      |
| **Context Filters**     | Dropdown menus to narrow down results by specific Networks, Categories, or Policies.                              |
| **Query Type & Action** | Indicates the technical DNS record type requested and whether the connection was successfully allowed or blocked. |
| **FQDN & Category**     | Displays the specific domain name requested by the user and its associated content category.                      |
| **Source IP Address**   | Identifies the specific IP address that generated the network request.                                            |
| **Clear Filters**       | A convenient button located inside the applied filters summary box to quickly reset your entire search view.      |

## Configuration & Logic

### Generating Analytical Reports&#x20;

To analyze your traffic trends, select your desired report from the main dropdown menu. You can visualize critical data such as Most Blocked Malware or DNS Traffic by Time Slot. Using the Filters button is essential for organizing your view if you manage multiple locations or profiles. It opens a dedicated menu allowing you to isolate traffic originating from a specific network or managed by a specific security policy.

### Investigating Raw Logs&#x20;

When you need to troubleshoot a specific block, diagnose an access issue, or track precise user activity, switch to the Log Search tool. Fill in the specific search parameters, like typing a specific domain in the FQDN field, and review the detailed results table. The table provides a granular view of each individual query, including the exact Date and Time and the Country of origin.

:::hint{type="info"}
To ensure maximum system performance and privacy compliance, log data is retained for a specific period based on your active subscription tier. Always use the Export PDF feature in the Analytical Reports section if you need to maintain historical records or compliance audits beyond your standard retention window.
:::


[title] TLD Blocking
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)**&#x20;&#x20;**> [Policies](docId\:i3Yd_tV8604vQf9JT7_CC), open a **Standard Policy**, and select th&#x65;**&#x20;TLD Blocking** tab in the top navigation bar.
:::

## Overview

**TLD (Top-Level Domain)** refers to the last segment of a domain name (e.g., the .com, .it, or .cn at the end of a web address). The **TLD Blocking** module allows you to block entire lists of websites based solely on their extension, regardless of where the server is physically hosted.

### Difference from GeoBlocking:

- **GeoBlocking** blocks traffic based on the **IP address location** (server location).
- **TLD Blocking** blocks traffic based on the **Domain Name itself**.
  - *Example:* If you block the .ru (Russia) TLD, you will block website.ru even if that website is hosted on a server in London.

## Interface Overview

The interface allows you to filter specific extensions through categorized lists.

- **Left Sidebar:** TLDs are grouped by their technical classification to help you find specific extensions.
- **Main Panel:** Displays the individual extensions available within the currently selected category.

## Understanding the Modules

Use this table to understand the different types of domains available for blocking.

| Category Group     | **Focus & Description**                                                                                                                                                                  |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Country TLDs**   | Extensions assigned to specific countries, such a&#x73;**&#x20;.it** (Italy),**&#x20;.de** (Germany), **.cn** (China), o&#x72;**&#x20;.ru** (Russia).                                    |
| **Generic TLDs**   | The original, most common domain extensions used globally, including **.com**, **.net**, an&#x64;**&#x20;.org**.                                                                         |
| **New gTLDs**      | The newer wave of generic extensions used for specific sectors (e.g., **.top**, **.xyz**,**&#x20;club**).                                                                                |
| **Arpa's TLDs**    | Technical domains used exclusively for internet-infrastructure purposes and reverse DNS lookups (e.g., **.arpa**).                                                                       |
| **Sponsored TLDs** | Extensions restricted to specific communities, agencies, or organizations (e.g., **.gov&#x20;**&#x66;or government, **.edu&#x20;**&#x66;or education, **.aero&#x20;**&#x66;or aviation). |

## Configuration & Logic

Configuring TLDs follows the standard blocking logic of the platform:

- **Toggle ON ():** The extension is **BLOCKED**. Any website ending with this suffix (e.g., example.xyz) will be inaccessible.
- **Toggle OFF ():** The extension is **ALLOWED**.
- **Enable All / Disable All:** Located at the bottom-right of the panel. Checking this box instantly blocks **every TLD** in the current list. Unchecking it disables the global block, allowing you to select individual extensions again.

[title] Malware
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/Policy configuration/

:::hint{type="info"}
Navigate to the sidebar menu: [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)  > [Policies](docId\:i3Yd_tV8604vQf9JT7_CC)  and open a **Standard Policy.**
:::

## Overview

The **Malware** module is the first line of defense for your network. Upon creating a Standard Policy, you are redirected here by default. This section focuses on blocking active security threats rather than managing content permissions.

## Interface Overview

The dashboard is organized into two main navigation areas to help you manage your security policy:

- **Left Sidebar:** Lists the specific security modules (e.g., *Malware & Threats*, *Newly Registered Domains*).
- **Main Panel:** Displays the specific protection rules contained within the selected group, along with their control toggles.

:::hint{type="info"}
You may notice &#x61;**&#x20;Clock Icon** next to each category toggle. This feature is designed to set time-based restrictions, allowing you to define specific time windows when the protection should be active.
:::

## Understanding the Modules

Different modules offer different levels of protection. Use this guide to decide which ones to enable.

| <font color="#111827">Modules</font> | Focus & Description                                                                                                   |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| **Malware & Threats**                | Blocks confirmed threats like Ransomware, Phishing, Botnets, and Trojans.                                             |
| **Malware & Threats Community**      | Crowd-sourced lists. Broader protection but higher risk of **False Positives**.                                       |
| **Newly Registered Domains**         | Blocks domains registered in the last 24-48h to stop "Zero-Day" attacks. Trade-off: Might block legitimate new sites. |
| **Proxy Bypass Filters**             | Blocks Anonymizers and VPNs used to bypass your restrictions.                                                         |
| **Frauds and Dangerous Site**        | Blocks websites associated with online scams, fraudulent activities, and deceptive practices designed to trick users. |

### Configuration & Logic

The filtering logic works with simple toggles:

- **Toggle ON ():** The protection is **ACTIVE**.
- **Toggle OFF (**<font color="#a5adb6">**Grey**</font>**):** The protection is **DISABLED**.
- **Enable All / Disable All:** Located at the bottom-right of the panel. Checking this box instantly activates **all protection categories** in the current group.

:::hint{type="warning"}
**Troubleshooting:&#x20;**&#x49;f a safe site is blocked, do not disable the protection. Add the domain to your **Exceptions (Allow List)&#x20;**&#x69;nstead.
:::


[title] Untitled
[path] /


[title] New Cloud Box
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Cloud Box Overview/Cloud Box/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Cloud Box](docId\:e5PhfNy4qIjy04obxl7Vk)  and ensure you are on the [Cloud Box](docId\:e5PhfNy4qIjy04obxl7Vk) tab than click <font color="#2563eb">`+ Add Cloud Box`</font> button.
:::

## Overview

To **register** a **new Cloud Box** in your network, you must complete a simple **three-step configuration** wizard. This process **links** your **virtual machine** to the **cloud panel**.

## Step 1

In this first phase, you will define the **basic identity** of your new **virtual machine**.

| **Interface Element**               | **Action & Description**                                                                             |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Cloud Box Name**                  | Enter a **recognizable name** for your **Cloud Box** to easily identify it in your list.             |
| **Notes**                           | Add any **optional details** to help you **manage** this specific **setup later**.                   |
| <font color="#2563eb">`Next`</font> | Click the blue button to **save** these **details** and **proceed** to the **authentication setup**. |

## Step 2

Here you need to create the **specific login** details required to **connect** your **Cloud Box** software to the **cloud platform**.

| **Interface Element**               | **Action & Description**                                                                                                            |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Username**                        | Choose a **unique username** dedicated entirely to this machine connection.                                                         |
| **Password**                        | **Set** a secure **password**, you can **click** the **eye icon** to reveal the text and **ensure** you **typed** it **correctly**. |
| <font color="#2563eb">`Next`</font> | Click the **blue button** to continue to the **final step**.                                                                        |

## Step 3

The **final step** requires **assigning** a base **security level**.

| **Interface Element**                        | **Action & Description**                                                                                                                                                                                                 |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Default policy**                           | Use the **drop-down menu** to **select** the **policy** that will be applied by **default**. This is the **catch-all policy** applied by default by the users of the Cloud Box for all calls if nothing else is defined. |
| <font color="#2563eb">`Add Cloud Box`</font> | Once you have **selected** the **policy**, **click** this **final button** to complete the setup and **register** your new **Cloud Box**.                                                                                |

:::hint{type="warning"}
After clicking the **final button**, your new **Cloud Box** will appear in the main list with a **Pending status**. This status indicates that the system is **not synchronizing**, and it will remain so until you **install** the **software** and it successfully connects to the network using the **credentials** you just created.
:::


[title] Network configuration
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/Static Networks/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments ](docId\:h62CnWLZ1OyHnHPKL5AS9) >  [Networks](docId\:L9XqF2Zamgt1yKoh2nGmN) **,** open [Static Networks](docId\:NjIeqU3pgwnnIqeRS2jQN)**&#x20;&#x20;**&#x61;nd click on the static network you want to configure.
:::

## Overview

This section serves as a **logical map** to help you navigate the configuration options for a single network. When you select a network from the main list, you are not presented with a single dashboard. Instead, the system opens a detailed view where you can navigate between specific **tabs in the top navigation bar** to manage Policies, DNS settings, and future logs.

## Understanding the Modules

The configuration is split into three functional areas found in the top navigation bar. Select a tab below to learn more about its specific settings.

| Tab                                      | Description & Status                                                                                                                                                                       |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Policies](docId:0XFrIIt1uQagguF1udnvp)  | The core configuration area. Allows you to link one or more **Protection Policies** to this network and displays the specific **DNS Addresses** you must configure on your router/devices. |
| **Traffic (Soon)**                       | This section will provide real-time analytics and query logs specific to this network location.                                                                                            |
| **Advanced (Soon)**                      | This section will allow for granular technical configuration regarding the network agent and connection parameters.                                                                        |


[title] Protection Overview
[path] Core Configuration/Core Configuration Overview/Protection/

## Overview

The **Protection** section is the central command center for your network security. Here, you define the logic that determines which websites are accessible, which threats are blocked, and how specific exceptions are handled.

To access this section, navigate to **Protection** in the main sidebar. The menu is divided into three key areas:

## Policies

Policies are the heart of your filtering system. A **Policy** is a container that bundles all your filtering rules (Malware, Content, GeoBlocking, etc.) into a single object.

Instead of configuring every network individually, you create a Policy (e.g., "Guest Wi-Fi" or "Office Staff") and assign it to as many networks as needed.

- **Standard Policies:** Fully customizable profiles where you control every security layer.
- **Restricted Policies:** Locked-down profiles with pre-set security rules, ideal for strict compliance.

:::hint{type="info"}
**Learn how** to create, configure, and assign security profiles: [Policies](docId\:i3Yd_tV8604vQf9JT7_CC)
:::

## Exceptions

While Policies handle broad categories (like "Block Social Media" or "Block Malware"), **Exceptions** handle specific domain names.

Use this section to create granular overrides that supersede your Policy rules:

- **Allow List (Whitelist):** Ensure a specific domain (e.g., partner-company.com) is always accessible, even if its category is blocked.
- **Block List (Blacklist):** Block a specific domain (e.g., distracting-game.com) even if its category is allowed.

:::hint{type="info"}
**Learn how** to manage global and policy-spcific allow/block lists: [Exceptions](docId\:qOIz3D3hjLLYPQcWHto8O)&#x20;
:::

## Templates

Located in the sidebar under Exceptions, **Templates** allow you to save sets of settings to be reused across multiple policies or organizations. This is particularly useful for MSPs or large organizations that need to deploy standard configurations quickly.

:::hint{type="info"}
**Learn how** to create and manage reusable configuration settings: **Soon**
:::

## How the Protection Flow Works

To secure a network, follow this logical workflow:

1. **Create a Policy:** Define your rules for Malware, Content, and Applications.
2. **Assign the Policy:** Apply this profile to your desired Networks or Groups.
3. **Manage Exceptions:** If a legitimate site is blocked (or a bad site gets through), add it to the Exceptions list to fine-tune the filter without changing the entire policy.

[title] New Static Network
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/Static Networks/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments ](docId\:h62CnWLZ1OyHnHPKL5AS9) >  [Networks](docId\:L9XqF2Zamgt1yKoh2nGmN) **,** open [Static Networks](docId\:NjIeqU3pgwnnIqeRS2jQN)**&#x20;&#x20;**&#x61;nd click  button.
:::

## Overview

This panel allows you to register a new physical location (e.g., an office or branch) into the system. By defining the IP address here, you authorize the platform to accept and filter DNS traffic originating from that specific source.

## Interface Overview

Fill in the fields to identify your connection.

| Interface Element | Description & Focus                                                                                                                                             |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Network name**  | Enter a name to identify this location internally (e.g., *"Headquarters"*, *"Milan Office"*). This name will appear in your reports and logs.                   |
| **IP address**    | Enter the **Public IPv4 Address** of your internet connection. This must be the external IP provided by your ISP, not your local network IP (like 192.168.x.x). |
| **Note**          | Use this field to add internal comments, such as the ISP name, the contract number, or the physical address of the location.                                    |

## Automatic IP Detection

If you are currently connected to the network you want to protect (e.g., you are physically in the office you are configuring), you can use the helper link:

- **"Use my public IP":** Click this blue link located below the IP address field. The system will automatically detect your current public IP and fill in the field for you, preventing typing errors.

## Finalizing the Setup

Once the information is entered, click the blue **Add** button. The window will close, and your new network will appear in the **Static IPs** list.

:::hint{type="warning"}
After clicking "Add", the network is created. Please check the main list to ensure the correct Policy is assigned to this new location. If you need to change the protection rules, click the Pencil Icon next to the network name in the dashboard.
:::


[title] New DNS Forwarding
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Cloud Box Overview/DNS Forwarding/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9) > [Cloud Box](docId\:e5PhfNy4qIjy04obxl7Vk)  and ensure you are on the [DNS Forwarding](docId:31FUmjbnzLOPjD0T7Lu9u) tab than click <font color="#2563eb">`+ Add DNS forwarding`</font> button.
:::

## Overview

To configure the **forwarding** of a wildcard domain to an **internal** or **external** DNS server instead of ours, you must fill out the configuration panel. This function is highly **useful** in **Microsoft Active Directory** environments or to reduce the traffic sent to our **datacenters**.

## Configuration Fields

Use the provided form to **define** exactly where th&#x65;**&#x20;DNS requests** for your chosen wildcard domains should be routed:

| **Interface Element**                             | **Action & Description**                                                                                                                                                                           |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Domain**                                        | Enter the specific **domain** and all its **subdomains** that you want to route to alternative DNS servers instead of ours.                                                                        |
| **Primary DNS server IP**                         | Input the **exact IP** address of the main DNS server that should resolve the requests for this **wildcard domain**. This must be a **private IP** address an&#x64;**&#x20;not** a **public** one. |
| **Secondary DNS server IP**                       | Enter an alternative private **IP address** for redundancy. This field is optional but recommended to ensure **continuous resolution** if the primary server fails.                                |
| **Selected Cloud Boxes**                          | Check the boxes next to the names of the Cloud Boxes where you want this **specific forwarding rule** to be actively enforced.                                                                     |
| <font color="#2563eb">`Add DNS forwarding`</font> | Click the blue button at the bottom right to **save** your **configuration** and **deploy** the **forwarding rule** to your network.                                                               |


[title] Static Networks
[path] Core Configuration/Core Configuration Overview/Deployments/Deployments Overview/Networks Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Deployments](docId:0V8emwLnT1o6FpVAM9aSg) > [Networks](docId\:L9XqF2Zamgt1yKoh2nGmN)  and select th&#x65;**&#x20;Static Networks&#x20;**&#x74;ab in the top navigation bar.
:::

## Overview

The **Static Networks** module is designed for networks that connect to the internet via a fixed, unchanging Public IP address. This is the standard configuration for most business fiber connections and dedicated server environments. This section now consolidates single IP addresses, IP address ranges, and CIDR blocks into one unified view. Ranges can include only IPv4 addresses.

:::hint{type="info"}
**How it works:&#x20;**&#x59;ou authorize a specific IP address like 87.1.242.225. The system then recognizes any DNS request coming from that IP and applies your security policy.
:::

## Interface Overview

The interface is divided into two main areas: the top control bar and the main list view.

### Top Controls&#x20;

Use these tools to manage the list creation and navigation.

| Interface Element | Description & Focus                                                                                               |
| ----------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Search Bar**    | Allows you to quickly filter the list to find a specific network by searching for its **Name** or **IP Address**. |
| **Filters**       | Opens advanced filtering options to narrow down your network list based on specific criteria.                     |
|                   | The blue button on the right opens the configuration wizard to register a new static IP in the system.            |

### &#x20;List View&#x20;

The main workspace displays a list of all authorized static networks. Use this table to monitor and manage your connections.

| Interface Element | Description & Focus                                                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Status**        | A green dot indicates the network is active and correctly configured.                                                          |
| **Name**          | A name to identify the location (e.g., "HQ Office", "Milan Branch"). Clicking this name opens the detailed settings.           |
| **IP Address**    | The specific Public IPv4 address authorized for this location.                                                                 |
| **Policies**      | Shows the specific Policy assigned to this IP. Clicking the **policy name** usually links directly to its configuration.       |
| **Note**          | Optional description or internal notes regarding this connection.                                                              |
| **Actions**       | Use the **Pencil Icon** to edit the network details (e.g., change the policy) or the **Trash Can Icon** to delete the network. |

## Configuration & Logic

### Using the Filters Tool

Since all static network types are now grouped in a single view, the **Filters** button is essential for organizing your list. Clicking it opens a dropdown menu divided into two specific tabs:

- **Type Tab:** Allows you to isolate specific network structures. You can check the boxes to display only Static IPs, Static CIDRs, or Static Ranges.
- **Status Tab:** Helps you monitor the operational state of your configurations. You can filter the list to show only Active networks or quickly find incomplete setups by selecting No policies associated.

If you ever need to view your entire list again, simply click the **Clear all filters** button located at the bottom of the menu.

### Creating a New Network&#x20;

To authorize a new location, click the blue <font color="#2563eb">`+ Add network`</font> button on the right side of the page. Since this process involves specific configuration steps (entering the IP, validating the agent, and assigning policies), we have created a dedicated guide to walk you through it.

:::hint{type="info"}
For a step-by-step explanation on how to fill out this panel (Name, IP Address, and Policy assignment) and complete the setup, please refer to our dedicated guide:&#x20;

[+ Add Network](docId\:DEZhViBHMyZzac46OkIM5) .
:::

### Managing Existing Networks&#x20;

Once a network is created, you may need to modify its assigned policies or DNS settings.

- **Action:** Click directly on the **Network Name** (e.g., "first network") in the list.
- **Result:** This will open the **Network Detail Page**, where you can manage the specific policies and DNS servers associated with that location.

:::hint{type="info"}
To understand how to manage the policies inside an existing network, please refer to the specific guide for the detail view: [Policies](docId:0XFrIIt1uQagguF1udnvp)&#x20;
:::

:::hint{type="warning"}
This method only works if your Internet Service Provider (ISP) has assigned you a Static Public IP. If your IP address changes when you restart your router (Dynamic IP), you must use the Dynamic IPs or Third-party DDNS tabs instead, otherwise, your protection will stop working unexpectedly.
:::


[title] Core Configuration Overview
[path] Core Configuration/

## Overview

The cloud dashboard is your centralized command center for managing network security. The interface is structured logically to help you deploy connections, enforce filtering rules, and monitor web traffic across your entire organization.

:::hint{type="info"}
The sidebar is divided into dedicated operational zones. Each folder within this section of the documentation corresponds directly to a main menu item in the platform.
:::

## Main Menu Sections

| **Menu Item**                                    | **Focus & Description**                                                                                                                                                     |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ****[Dashboard](docId\:LUzKkT16Eunpys7VMBb21)    | Provides a high-level visual summary of your network health, displaying recent traffic statistics, top blocked threats, and active deployments.                             |
| [Administrators](docId\:wSxJclHYrjU6crXuOA47J)   | Manage team access, invite new technical staff, and define role-based permissions for your tenant.                                                                          |
| [Protection](docId\:AOavaXBxIc2KMEjwXC3Pi)       | The core policy engine. Use this section to define your security rules, block malware, filter content categories, apply GeoBlocking, and manage specific domain exceptions. |
| [Reports and Log](docId\:JspFE-FvGeJRg7_kQIrHa)  | Your analytics center. Access detailed historical data, track real-time DNS queries, and generate compliance or security reports for your network traffic.                  |
| [Deployments](docId\:h62CnWLZ1OyHnHPKL5AS9)      | The area used to connect your infrastructure to the cloud filter. Manage your networks, Endpoint agents, and cloud boxes.                                                   |
| [Integrations](docId\:dqCi75YZYByKVZLFcBztL)     | Generate API keys and manage connections with third-party software to automate workflows and sync external directories.                                                     |
| ****[Tools](docId\:KaKw3Og8vWcMRvuq6SqSR)        | Contains advanced network utilities and diagnostic features to help you test domain categorization and troubleshoot connectivity.                                           |
| [Ask Ai](docId\:Lov6KD5znUc_TCXbuWRH9)           | Access the integrated AI assistant for rapid troubleshooting, configuration guidance, and immediate platform support.                                                       |


[title] Domain Lookup
[path] Core Configuration/Core Configuration Overview/Tools/Tools Overview/

:::hint{type="info"}
Navigate to the sidebar menu: [Tools](docId\:KaKw3Og8vWcMRvuq6SqSR)  and ensure you are on the **Domain Lookup** tab.
:::

## Overview

The **Domain Lookup** module is designed to help you quickly **identify&#x20;**&#x74;he category of any **domain&#x20;**&#x61;nd understand exactly how your active security policies are treating it. This is highly useful for **troubleshooting&#x20;**&#x66;alse positives, verifying restricted content, and auditing your network **security rules**.

:::hint{type="info"}
**How it works:&#x20;**&#x59;ou type a **domain name** into the search bar and **run&#x20;**&#x74;he lookup. The system queries the global threat intelligence database to **determine&#x20;**&#x74;he site categories and then **cross-references** this data against your configured policies to show you a simulated **access&#x20;**&#x72;esult.
:::

## Interface Overview

The interface is **divided&#x20;**&#x69;nto the top **search&#x20;**&#x63;ontrols and the bottom **results&#x20;**&#x61;rea.

### Search Controls

Use these tools to **query&#x20;**&#x74;he database for a specific **domain**.

| **Interface Element**        | **Description & Focus**                                                                                                                                              |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Search Bar**               | Enter the exact **domain name** you want to **investigate**.                                                                                                         |
| **All policies / Only used** | A toggle **selector** allowing you to test the domain against **every policy** configured in your system or only the ones **currently assigned** to active networks. |
| **Lookup**                   | The blue button that **executes&#x20;**&#x74;he search and generates the **diagnostic&#x20;**&#x72;eport.                                                            |

### Results View

Once a lookup is **performed**, this area displays the **categorization&#x20;**&#x61;nd policy **evaluation**.

| **Interface Element** | **Description & Focus**                                                                                                                                                                     |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Categories found**  | A blue informational **box&#x20;**&#x64;isplaying the exact **classification&#x20;**&#x70;aths for the queried domain.                                                                      |
| **Policy**            | **Lists&#x20;**&#x74;he names of the security **profiles evaluated&#x20;**&#x61;gainst the domain.                                                                                          |
| **Domain Status**     | A **label** indicating whether the domain is **Allowed&#x20;**&#x6F;r **Blocked&#x20;**&#x75;nder that specific policy.                                                                     |
| **Reason**            | **Explains&#x20;**&#x65;xactly why the **status&#x20;**&#x77;as applied, such as hitting a specific content **filter&#x20;**&#x63;ategory or being part of an **exception&#x20;**&#x6C;ist. |


[title] Untitled
[path] Core Configuration/Core Configuration Overview/


[title] Dashboard Overview
[path] Core Configuration/Core Configuration Overview/Dashboard/

## Overview

The **Dashboard&#x20;**&#x73;erves as the primary **monitoring&#x20;**&#x68;ub for your network security and DNS traffic. It provides a **comprehensive**, visual summary of your network activity, allowing you to instantly **assess&#x20;**&#x74;he health and security **status&#x20;**&#x6F;f your deployed **infrastructure**.

:::hint{type="info"}
**How it works:&#x20;**&#x41;s your configured **endpoints&#x20;**&#x61;nd **networks&#x20;**&#x72;oute their DNS queries through the **filtering&#x20;**&#x73;ystem, this page automatically **aggregates&#x20;**&#x74;he data. It transforms raw traffic **logs&#x20;**&#x69;nto easy-to-read metrics and highly customizable graphs, highlighting blocked threats, top accessed categories, and overall traffic trends.
:::

## Interface Overview

The interface is **divided&#x20;**&#x69;nto a top **section&#x20;**&#x66;eaturing quick **metric&#x20;**&#x63;ards and a main workspace containing detailed **graphical&#x20;**&#x77;idgets.

### Quick Metrics

These color-coded summary **cards&#x20;**&#x70;rovide an immediate snapshot of your overal&#x6C;**&#x20;network activity** for the default period of the last 24 hours.

| **Interface Element**                     | **Description & Focus**                                                                                                                              |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Total DNS Requests**                    | The grey card displays the total **volume&#x20;**&#x6F;f all DNS queries **processed&#x20;**&#x62;y the system.                                      |
| **Blocked Threats**                       | The red card shows the absolute number of **requests&#x20;**&#x69;ntercepted and actively **blocked&#x20;**&#x62;y your security **policies**.       |
| **Allowed DNS Requests**                  | The green card indicates the number of legitimate DNS **requests&#x20;**&#x73;uccessfully **resolved&#x20;**&#x61;nd allowed through the **filter**. |
| **Requests to non-existent domains (NX)** | The blue card counts the queries made for **domains&#x20;**&#x74;hat do not exist.                                                                   |

### Graphical Widgets and Customization

The main area displays dynamic **charts&#x20;**&#x74;hat break down your traffic patterns and security events. You can fully **customize&#x20;**&#x65;ach individual widget to tailor the **dashboard&#x20;**&#x74;o your specific analytical needs.

Click the three **dots&#x20;**&#x69;con in the top right corner of any widget to access the **configuration&#x20;**&#x6D;enu and adjust the following **parameters**:

| **Interface Element** | **Description & Focus**                                                                                                                                                                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Report**            | A drop-down menu allowing you to **change&#x20;**&#x74;he specific **metric&#x20;**&#x64;isplayed in that widget block. You can choose from a variety of **reports&#x20;**&#x73;uch as Top Blocked Domains, Top Allowed Domains, Most Blocked Malware. |
| **Time Range**        | A **time range** selector used to filter the data presented in the **chart**. You can instantly switch the view to **analyze&#x20;**&#x64;ata from the last 24 hours, last 48 hours, or last 72 hours.                                                 |
| **Layout**            | A **toggle&#x20;**&#x74;o adjust the visual width of the widget. You can choose **Single Column** to keep it compact or **Full Column** to stretch the chart across the entire width of the screen for detailed **timeline&#x20;**&#x61;nalysis.       |


[title] Integrations Overview
[path] Core Configuration/Core Configuration Overview/Integrations/

## Overview

The **Integrations section** is a dedicated workspace for **connecting&#x20;**&#x79;our security platform with external services, **automating&#x20;**&#x77;orkflows, and **extending&#x20;**&#x73;ystem functionality. It provides the essential tools to seamlessly incorporate our filtering intelligence into your existing infrastructure.

To **access&#x20;**&#x74;his module, navigate to **Integrations&#x20;**&#x69;n the main sidebar.

Currently **available&#x20;**&#x69;ntegration modules include:

## API

The **API module** allows you to programmatically **manage&#x20;**&#x79;our account and security **settings**. Use this section to obtain a clear **overview&#x20;**&#x6F;f:

- **Authentication:** How to **view&#x20;**&#x61;nd **manage&#x20;**&#x73;ecure API keys for your **administrative&#x20;**&#x75;sers.
- **Documentation:** Where to **access&#x20;**&#x74;echnical **details**, usage examples, and **updated&#x20;**&#x73;pecifications to build custom **integrations**.

  :::hint{type="info"}
  **Learn how** to manage programmatic access: [API](docId\:vjpyglcT8HBn_l4ecC8h-)&#x20;
  :::


[title] Policy configuration
[path] Core Configuration/Core Configuration Overview/Protection/Protection Overview/Policies/

## Overview

This section serves as a **logical map** to help you navigate the available protection modules. When you edit a policy, you are not presented with a single static dashboard. Instead, the system unlocks a specific set of **tabs in the top navigation bar**. The number and type of these tabs depend entirely on whether the policy is **Standard** (fully customizable) or **Restricted** (locked profile).

## If the Policy is "Standard"

Policies allow you to fully customize every aspect of the protection, including Malware, Content Filtering, and GeoBlocking.

When you open a Standard policy, you will access the **Advanced Configuration Dashboard**. The available protection modules are listed in the **Top Navigation Bar**.

### Understanding the Modules

| Modules                                       | Focus & Description                                                                                                    |
| --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| [Malware](docId\:lZ2K1KsAg--lFSJI98pDL)       | Block ransomware, phishing, botnets, and other cyber threats at the DNS level.                                         |
| [Content](docId\:vfLPxujhSJVWrDCKiAYx0)       | Block websites based on categories such as Adult, Gambling, Social Media, or Games.                                    |
| [Applications](docId\:fKLjEG0UHZeYc26MkXmfH)  |  Block specific applications and services (e.g., TikTok, WhatsApp, Discord) completely.                                |
| [GeoBlocking](docId\:doJYyuB-hodGffRWAZ9sD)   | Block incoming and outgoing traffic to specific countries to reduce your attack surface.                               |
| [Exceptions](docId\:qOIz3D3hjLLYPQcWHto8O)    | Create granular rules to Allow (Whitelist) or Block (Blacklist) specific domains, overriding the general policy rules. |
| [SafeSearch](docId\:Tbx-coOecG3tkRyFIh9wg)    | Enforce "Strict Mode" on search engines (Google, Bing, YouTube) to hide explicit results.                              |
| [TLD Blocking](docId\:jK2FSGe8JNQsDHS3uI5Uq)  | Block entire Top-Level Domains (e.g., .xyz, .top, .ru) that are often associated with spam.                            |
| [Advanced](docId\:jKfplf7m9bg1Bu81bf4pZ)      | Configure system-level overrides and specific behavior settings.                                                       |
| [EDNS](docId:6gqQCCL7f3AfmtlGjvrof)           | Manage extension mechanisms for DNS to support advanced parameters.                                                    |

## If the Policy is "Restricted"

Policies are pre-configured profiles where the core security rules are locked to ensure consistent protection.

When you open a Restricted policy, the interface is significantly simplified. You will not see the full list of protection modules. Instead, the **Top Navigation Bar** only displays the specific settings you are allowed to modify locally.

### Understanding the Modules

| Modules                                     | Focus & Description                                                                                          |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| [Exceptions](docId\:qOIz3D3hjLLYPQcWHto8O)  | Assign previously created exception groups (Allow Lists or Block Lists) to override specific blocking rules. |
| [SafeSearch](docId\:Tbx-coOecG3tkRyFIh9wg)  | Enable or disable strict search filtering for search engines.                                                |


[title] Confirm the Migration
[path] Migration/Migration Overview/

:::hint{type="info"}
Please note that this migration documentation is continuously being updated and expanded to reflect the latest platform improvements and newly supported configurations.

**Last update: 22 April 2026**
:::

## Overview

After verifying that your imported configurations are correct, you will reach the final **Migration Confirmation** page.

On this screen, you must make the final decision to either finalize the move to the New Platform or cancel the process if you need to double-check your settings.

## Option A: Cancel the Migration

If you have any doubts or find incorrect configurations, you can safely abort the process.

- Click the white <font color="#B91C1C">`Cancel Migration`</font> button (outlined in red).
- This action will immediately stop the process and restore your account to the Legacy Panel.

## Option B: Confirm and Finalize

If everything looks correct and you are ready to permanently move to the New Platform 2026, follow these exact steps to complete the procedure:

- **Check the first box** to confirm: *"I confirm that all configurations are correct"*.
- **Check the second box&#x20;**&#x74;o acknowledge that email notifications will be available shortly after the migration.
- **Click the button&#x20;**&#x74;o confirm the migration.

:::hint{type="danger"}
Once the migration is completed, it will no longer be possible to restore previous configurations. You will only be able to access the legacy platform to view historical reports. Ensure you have carefully verified your settings before proceeding.
:::

- **Finalize the move:** Click the solid blue **"Confirm Migration"** button.

Congratulations! The system will now complete the transfer. You will be redirected to the new dashboard, where your panel will no longer be in "Read-Only" mode and you can immediately start managing your networks.

[title] Untitled
[path] /


[title] Migration Overview
[path] Migration/

:::hint{type="info"}
Please note that this migration documentation is continuously being updated and expanded to reflect the latest platform improvements and newly supported configurations.&#x20;

**Last update: 13 July 2026**
:::

## Overview

Welcome to the official guide for transitioning to the New Platform 2026. This process is designed to be quick, secure, and will cause no interruptions to your active DNS protection.

:::hint{type="info"}
Prefer to watch a video? Check out our step-by-step video guide to see exactly how the migration process works from start to finish.

🇬🇧 **English:** [video](https://www.youtube.com/watch?v=oLs0askkJkg\&t=452s)

🇮🇹 **Italian:** [video](https://www.youtube.com/watch?v=zpbC2PG5Mq4\&t=646s)

🇪🇸 **Spanish:** [video](https://www.youtube.com/watch?v=X5WQjcszf3E\&t=570s)
:::

## Migration Prerequisites

Please note that to be eligible for the migration to the new platform, your account must currently meet the following conditions:

- You have an active **License**.
- You do not us&#x65;**&#x20;Active Director**y integrated with a **DNS Proxy**.

The direct migration process is now fully available and supported as long as your current configuration complies with these specific requirements.

## The "Read-Only" Banner

If you log into your panel and see a yellow banner stating **"Migration Panel - Read Only"**, it means your account is ready for the upgrade, but **the migration has not started yet**.

While you are seeing this banner:

- **Protection is fully active:** You are viewing your legacy configurations, which continue to protect your network without interruption.
- **The panel is locked:** The interface is in **Read-Only mode** to prevent conflicting settings. You cannot edit policies or networks until you migrate.
- **Reports are on hold:** Analytics are temporarily unavailable. They will be processed and visible again on the New Platform only after you complete the migration (provided you choose the option to import them).

## Next Steps

:::hint{type="info"}
Proceed to the next guide for step-by-step instructions on how to initiate the process: [Start the Migration](docId\:DtyVLwg5PdxOD2xM2bVjn)&#x20;
:::


[title] Router Guide
[path] /


[title] How to configure multiprofile on Mikrotik
[path] Router Guides/Routers Configuration/MikroTik/

## Overview

Through the creation of firewall rules, multiple browsing profiles can be used on the same network. In this way, two or more machines connected to the same network will be able to use different filtering rules and you can more easily split data traffic. For additional information on multiprofile configurations, please refer to our main platform documentation.

:::hint{type="warning"}
This guide is only usable in standard workgroup environments, meaning setups without Active Directory servers.
:::

## Variables to Replace

The following commands allow you to create rules to manage up to five browsing profiles. However, it is not mandatory to use all of them. Depending on your needs, it will be sufficient to delete the superfluous parts of the code.

Before running the commands on your MikroTik terminal, you must edit the following placeholder fields with your actual data:

- **List\_IP1 to List\_IP4:** The list of IP addresses that will be assigned to each specific profile. You can enter a single IP or a range of IPs using the hyphen symbol between the first and last IP in the range, like 192.168.1.2-192.168.1.100.
- **Profile1 to Profile4:** The custom name assigned to each profile, if applicable.

## Terminal Configuration

Open a New Terminal window in WinBox and execute the following customized commands:

:::CodeblockTabs
routeros

```bash
/ip firewall address-list
add address=<List_IP1> list=<Profile1>
add address=<List_IP2> list=<Profile2>
add address=<List_IP3> list=<Profile3>
add address=<List_IP4> list=<Profile4>

/ip firewall nat

# <Profile1>
add action=dst-nat chain=dstnat comment=<Profile1> dst-port=53 protocol=udp \
    src-address-list=<Profile1> to-addresses=185.236.104.114 to-ports=53
add action=dst-nat chain=dstnat comment=<Profile1> dst-port=53 protocol=tcp \
    src-address-list=<Profile1> to-addresses=185.236.104.114 to-ports=53

# <Profile2>
add action=dst-nat chain=dstnat comment=<Profile2> dst-port=53 protocol=udp \
    src-address-list=<Profile2> to-addresses=185.236.104.124 to-ports=53
add action=dst-nat chain=dstnat comment=<Profile2> dst-port=53 protocol=tcp \
    src-address-list=<Profile2> to-addresses=185.236.104.124 to-ports=53

# <Profile3>
add action=dst-nat chain=dstnat comment=<Profile3> dst-port=53 protocol=udp \
    src-address-list=<Profile3> to-addresses=185.236.104.134 to-ports=53
add action=dst-nat chain=dstnat comment=<Profile3> dst-port=53 protocol=tcp \
    src-address-list=<Profile3> to-addresses=185.236.104.134 to-ports=53

# <Profile4>
add action=dst-nat chain=dstnat comment=<Profile4> dst-port=53 protocol=udp \
    src-address-list=<Profile4> to-addresses=185.236.104.144 to-ports=53
add action=dst-nat chain=dstnat comment=<Profile4> dst-port=53 protocol=tcp \
    src-address-list=<Profile4> to-addresses=185.236.104.144 to-ports=53
    
# Default Profile
add action=dst-nat chain=dstnat comment=Default dst-port=53 protocol=udp \
    to-addresses=185.236.104.104 to-ports=53
add action=dst-nat chain=dstnat comment=Default dst-port=53 protocol=tcp \
    to-addresses=185.236.104.104 to-ports=53
```
:::

:::hint{type="info"}
The Default profile rule routing to 104.104 must always have a lower priority than your other specific profile rules inside your firewall table.
:::


[title] IPCOP
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the control panel by entering the IP address of the IPCOP router in the address bar of any browser. Please note that you must type the address securely using port 8443, for example https\://YourIPAddress:8443. Then, log in by entering your administrative credentials.

## Enable SSH Access

First, you need to change the DNS used by the IPCOP on the RED Network. To do this, click on the **System** menu, then open the **SSH Access** section. Check the **SSH Access** item and click on the **Save** button to apply the changes.

## Change the Device DNS via SSH

To access the console using the SSH protocol, you can use a terminal emulator software like Putty. Open your SSH client and enter the IP address of the IPCOP GREEN Network inside the host field and 8022 in the Port field. Then click on **Open** to connect to the console.

Log in with your root credentials and type the command setup. Press the enter key, and a new page with a setup wizard will open. Select the **Networking** item and click on the **Select** button.

:::hint{type="info"}
To check if the DNS addresses have been set correctly, click on **Status** in the IPCOP web panel, and then open the **Network Status** menu. Look for the **Red DNS configuration** item and verify that our cloud IPs are correctly listed.
:::

Navigate to the **DNS and Gateway settings** item and click on the **Select** button. Enter the address 185.236.104.104 in the Primary DNS field and 185.236.105.105 in the Secondary DNS field. Click on the **Ok** button and wait for the network reconfiguration procedure to complete. You can then close your SSH program.

## Configure Dynamic DNS Service

At this point, we need to configure IPCOP so that it can authenticate with our cloud servers. Open the **Services** menu and click on **Dynamic DNS**. As the service provider, choose dyndns.org.

:::hint{type="warning"}
You absolutely do not need to be registered with the dyndns.org service. Our system will automatically intercept and redirect the update requests directly to themselves.
:::

Click on the **Add** button to proceed with the service configuration and fill in the fields exactly as follows:

- **Enabled:** Check the item to enable the service.
- **Hostname:** Enter any name you like, for example, the word hostname.
- **Domain:** Enter a domain of your choice, for example domain.com.
- **Username:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- **Password:** Enter the specific password assigned to your dynamic network.

Finally, click **Update** to save the changes.

## Configure the DHCP Server

You can now enable the DHCP Server so that it automatically assigns network parameters, including our filtered DNS, to the various internal devices. To configure the DHCP Server, open the **Services** menu and click on **DHCP Server**. Fill in the various fields as follows:

- **Enabled:** Put a checkmark to enable the service.
- **Start address:** Enter the first IP address in your DHCP range.
- **End address:** Enter the last IP address of your DHCP range.
- **Default lease time mins:** Set the DHCP lease time in minutes.
- **Primary DNS:** Enter the address 185.236.104.104.
- **Secondary DNS:** Enter the address 185.236.105.105.

Click on the **Save** button to apply the changes. Alternatively, the DNS of the various devices within the network can be changed manually one by one.

## Optional: Deny DNS Changes by Users

It is possible to increase security by denying users the ability to browse unfiltered by manually changing the DNS on their local devices. To do this, proceed as follows:

Open the **Firewall** menu and click on **Firewall**. At this point, you need to create rules to block all outbound traffic on port 53 for both TCP and UDP protocols, except for requests directed specifically to our cloud IPs.

Click on the **Outgoing Traffic** button to create a new rule. Ensure the rule permits traffic where the **Destination IP or Net** field is set to 185.236.104.104. Then click **Save** to add the rule.

Create another rule exactly similar to the previous one, but the **Destination IP or Net** field must be 185.236.105.105.

Finally, you need to create an additional rule with the purpose of blocking all remaining traffic on port 53 for both TCP and UDP. This drop rule must be logically placed to catch traffic that does not match the two specific allow rules above.

[title] MikroTik
[path] Router Guides/Routers Configuration/

:::hint{type="success"}
Our platform has been certified as a Made for Mikrotik software platform. It guarantees official recognition and full compatibility on any Router model and OS version. Mikrotik RouterOS is one of the most used Routers today by our Customers and Partners all over the world.
:::

## Overview

This guide explains how to configure our DNS filter directly on **MikroTik RouterOS devices**. You can choose to apply the complete configuration instantly using our **automated script** via the terminal, or you can configure every parameter manually step-by-step using the **Winbox graphical interface**.

## Automated Configuration Script

If you want to configure your routerboard automatically, open a **New Terminal** window in your MikroTik and paste the script below. This code will automatically create the update script, schedule it to run every minute, disable peer DNS, apply our cloud servers, and create the necessary NAT redirection rules.

:::hint{type="warning"}
Before pressing enter, carefully replace **USER** and **PASS** in the script with the specific username and password assigned to your dynamic network.
:::

:::CodeblockTabs
routeros

```bash
# Script DNS Filter

# Create the Script
/system script
add name=FilterScript policy=\
    ftp,reboot,read,write,policy,test,password,sniff,sensitive source="\
	\n:tool fetch url=\"https://ddns.fsflt.com/nic/update\?username=USER&password=PASS\""

# Schedule the Script to run every 1 minute
/system scheduler
add interval=60s name=FilterScheduler on-event="/system script run FilterScript" \
    policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive \
    start-time=startup

# Disable the use of Peer DNS
/ip dhcp-client
set use-peer-dns=no 0

# Set Cache Max TTL to 1 minute
/ip dns
set cache-max-ttl=1m

# Set the Content Filter DNS
/ip dns
set servers=185.236.104.104,185.236.105.105

# Create NAT rules
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=53 protocol=udp \
    to-addresses=185.236.104.104 to-ports=53
add action=dst-nat chain=dstnat dst-port=53 protocol=tcp \
    to-addresses=185.236.104.104 to-ports=53
```
:::

:::hint{type="warning"}
If your password contains special characters like $ or ", you must insert the \ symbol before each of those characters in the code. For example, if you have the password **password123$$**, you have to change it to **password123$$**. This is strictly necessary, otherwise the MikroTik system will misinterpret those characters and the script will fail.
:::

## Manual Configuration via Winbox

If you prefer the graphical interface, log into your routerboard using Winbox and follow these manual steps.

### Create the Update Script

First, you need to create a script to automatically update your dynamic IP address.

- Go to the **System** menu and click on **Scripts**.
- Click on the **+** symbol under the Scripts button.
- Configure the fields as follows:

  - **Name:** Insert a recognizable name like PlatformScript.
  - **Policy:** Leave the default policy selected.
  - **Source:** Copy and paste the following instruction into the text area:

  :::CodeblockTabs
  routeros

  ```bash
  :tool fetch url="https://ddns.fsflt.com/nic/update\?username=USER&password=PASS"
  ```
  :::

You must replace the credentials within the source code:

- **USER:** The dedicated username of your dynamic network.
- **PASS:** The specific password of your dynamic network.

Ensure you follow the special character escape rule mentioned in the warning box above if your network password contains symbols. Click **OK** to save the changes.

### Schedule the Script

After creating the script, you must set a scheduler so it runs automatically.

- Go to the **System** menu and click on **Scheduler**.
- Click on the **+** symbol under the Scheduler button.
- Configure the scheduling fields:
  - **Name:** Insert a name like PlatformScheduler.
  - **Interval:** Choose an interval to run the script. The time format must be hh\:mm\:ss, meaning you should enter **00:01:00** for a one-minute interval.
  - **On Event:** Insert the exact name of the script you created in the previous step.

Click **OK** to apply the changes.

### Set the Cloud Filter DNS

You now need to configure the DNS routing on your MikroTik and set the MikroTik IP on your internal devices as the only DNS. To do this:

- Go to the **IP** menu and click on **DNS**.
- In the **Servers** field, add **185.236.104.104** and **185.236.105.105**.
- Click on the **OK** button to save.

:::hint{type="info"}
If you see a private IP in the Dynamic DNS field of your DNS Settings, your MikroTik is taking DNS addresses in DHCP from another device like the main modem. To avoid this, open the **IP** menu and click on **DHCP Client**. Double click on your DHCP configuration to open the properties and uncheck the **Use Peer DNS** entry. Click **OK** to apply the changes.
:::

### Optional: Redirecting DNS to Our Servers

You can create firewall rules to transparently redirect all DNS traffic to our servers. By doing this, you do not need to change DNS settings on internal devices or activate the DHCP Server.

- Open the **IP** menu and click on the **Firewall** button.
- Navigate to the **NAT** tab and click the **Add new** button to create a rule.
- Configure the fields exactly in this way:
  - **Enabled:** Check the box.
  - **Chain:** Select dstnat.
  - **Protocol:** Choose udp.
  - **Dst. Port:** Type 53.
  - **In. Interface:** Choose your internal interface, which is bridge1 by default.
  - **Action:** Select dst-nat.
  - **To Address:** Insert 185.236.104.104.
  - **To Port:** Type the port number chosen before, which defaults to 53.

Click **OK** to apply the new configuration. Finally, create another rule strictly equal to the previous one, but change the **Protocol** field to **tcp** instead of udp.

## Related Guides

Explore these topics for advanced configurations and troubleshooting:

| **Configuration Guide**                                                                    | **Description & Focus**                                                       |
| ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
| [How to Enable DoH on MikroTik](docId:7GfUjLbd73b1yvcMXD6dp)                               | Instructions for securing your DNS queries using the DNS over HTTPS protocol. |
| ****[How to block DNS resolution from outside in Mikrotik](docId\:CG_gsQA5zOWAl7WnctfTy)   | Steps to prevent external abuse and secure your network perimeter.            |
| ****[How to run scripts on multi-WAN scenarios on Mikrotik](docId\:k-18BmJC3weMduWkGTApJ)  | Advanced setup for environments with multiple internet connections.           |
| ****[How to solve synchronization problems in Mikrotik](docId\:eIJ9l5M0XfHJ776weTsl9)      | Troubleshooting steps for dynamic IP update failures.                         |
| ****[How to configure DNS filtering on Mikrotik devices](docId\:NVlhIgmtAJWBdr89MNULA)     | A guide to managing multiple distinct filtering profiles on a single device.  |


[title] How to solve synchronization problems in Mikrotik
[path] Router Guides/Routers Configuration/MikroTik/

## Troubleshooting Steps

If your MikroTik device is not synchronizing correctly with our platform, please proceed as follows to identify and resolve the issue:

- **Review the Main Guide:** Ensure you have correctly followed all the steps in our primary Integration Guide for MikroTik.
- **Check for Extra Spaces:** Remove any accidental empty spaces in your Script, which are often caused by copying and pasting the code from external documents.
- **Verify Credentials:** Double-check your login details. Remember that you must use the specific username and password assigned to your individual dynamic network, not your main account email address.
- **Escape Special Characters:** If the $ or " symbols are present within your password, you must add the \ character right in front of them. For example, if your password is Passwd1$$, you must write it exactly as Passwd1$$.


[title] How to run scripts on multi-WAN scenarios on Mikrotik
[path] Router Guides/Routers Configuration/MikroTik/

## Overview

To synchronize two or more public IPs simultaneously, you need to create a dedicated Script on your MikroTik device. The scripts below create static routes to force the update through the correct gateway and then safely clear the DNS cache.

Before proceeding, you must add a distinct dynamic network for each WAN connection directly inside your Dashboard Networks menu.

## Variables to Replace

Before pasting any script into your terminal, carefully replace the placeholder data with your actual parameters:

- **GATEWAY\_WAN2, GATEWAY\_WAN3...** Replace these tags with the actual gateway IP address of your secondary lines.
- **USER1, PASS1:** Enter the specific username and password assigned to your first dynamic network.
- **USER2, PASS2:** Enter the specific username and password assigned to your second dynamic network. Do this for all subsequent credentials.

:::hint{type="warning"}
If your dynamic network password contains special characters like $ or ", you must insert the \ symbol before each of those characters in the code.
:::

## Scenario: Two WANs

Copy and paste the following code to handle two internet lines:

:::CodeblockTabs
routeros

```bash
/ip route remove [find comment=ddns_wan]
/ip route add dst-address=185.236.104.114 gateway=<GATEWAY_WAN2> comment=ddns_wan
:tool fetch url="https://ddns.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER1&password=PASS1"
:tool fetch url="https://ddns2.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER2&password=PASS2"
/ip route remove [find comment=ddns_wan]
/ip dns cache flush
```
:::

## Scenario: Three WANs

Copy and paste the following code to handle three internet lines:

:::CodeblockTabs
routeros

```bash
/ip route remove [find comment=ddns_wan]
/ip route add dst-address=185.236.104.114 gateway=<GATEWAY_WAN2> comment=ddns_wan
/ip route add dst-address=185.236.104.124 gateway=<GATEWAY_WAN3> comment=ddns_wan
:tool fetch url="https://ddns.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER1&password=PASS1"
:tool fetch url="https://ddns2.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER2&password=PASS2"
:tool fetch url="https://ddns3.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER3&password=PASS3"
/ip route remove [find comment=ddns_wan]
/ip dns cache flush
```
:::

## Scenario: Four WANs

Copy and paste the following code to handle four internet lines:

:::CodeblockTabs
routeros

```bash
/ip route remove [find comment=ddns_wan]
/ip route add dst-address=185.236.104.114 gateway=<GATEWAY_WAN2> comment=ddns_wan
/ip route add dst-address=185.236.104.124 gateway=<GATEWAY_WAN3> comment=ddns_wan
/ip route add dst-address=185.236.104.134 gateway=<GATEWAY_WAN4> comment=ddns_wan
:tool fetch url="https://ddns.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER1&password=PASS1"
:tool fetch url="https://ddns2.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER2&password=PASS2"
:tool fetch url="https://ddns3.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER3&password=PASS3"
:tool fetch url="https://ddns4.fsflt.com/nic/update\?hostname=&myip=&wildcard=NOCHG&username=USER4&password=PASS4"
/ip route remove [find comment=ddns_wan]
/ip dns cache flush
```
:::

## Finalizing and Testing

Finally, you need to create a Scheduler in your MikroTik system to automatically run your chosen Script at regular intervals like every minute.

From your Dashboard, open the Networks menu to check the status of your various connections. If everything is configured correctly, you should see the different Public IPs and their active synchronization status.

[title] Cisco
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the control panel by entering the Cisco IP address in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure the Device DNS

First, you need to configure the DNS of the device. To do this, open the **Setup** menu and then click on **Network**.

Look for the section called **WAN Setting Table** and select the exact name of your WAN interface. Click on the **Edit** button to modify the interface parameters.

In the window that appears, enable the **Use the Following DNS Server Address** item and then type the following cloud IPs inside the DNS Server 1 and DNS Server 2 fields respectively:

- **DNS Server 1:** 185.236.104.104
- **DNS Server 2:** 185.236.105.105

Click on the **Save** button to save the changes.

## Configure Dynamic DNS Service

To configure the Dynamic DNS service, open the **Setup** menu and then click on **Dynamic DNS**. Select the name of your WAN interface again and click on **Edit**.

Configure the service exactly as follows:

- **Service:** Select DynDNS.org.
- **Username:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- **Password:** Enter the specific password assigned to your dynamic network.
- **Host Name:** Enter the address link.

Finally, click **Save** to make the changes active.

## Enable the DHCP Server

At this point, you can enable the DHCP Server so that it automatically assigns network parameters, including our filtered DNS, to the various internal devices.

Open the **DHCP** menu and click on **DHCP Setup**. Configure the service with your local network parameters and select **Use DNS as Below** next to the DNS Server field to configure our cloud addresses.

Then enter the following IPs in the Static DNS fields:

- **Static DNS 1:** 185.236.104.104
- **Static DNS 2:** 185.236.105.105

Finally, click **Save** to activate the service. Alternatively, the DNS settings of the various devices within the network can be changed manually one by one.

## Optional: Deny DNS Changes by Users

It is possible to increase security by denying users the ability to browse unfiltered by manually changing the DNS on their local devices. To do this, open the **Firewall** menu and click on **Access Rules**. Then click on **Add** to create a new rule.

At this point, we need to create rules to block all outbound traffic on port 53 for the DNS Service on both TCP and UDP protocols, except for requests directed specifically to our cloud IPs.

### Rule A: Allow Primary DNS

Proceed as follows to create the first rule:

- **Action:** Choose Allow.
- **Service:** Select the DNS entry UDP port 53 to 53 from the drop-down menu.
- **Log:** Decide whether or not you want to display the log related to this rule.
- **Source Interface:** Select the name of your internal LAN interface.
- **Source IP:** Choose ANY.
- **Destination IP:** Select Single and then enter the IP 185.236.104.104 in the field on the right.

:::hint{type="warning"}
It is also possible to select a specific IP range that will use this rule instead of applying it to the entire network.
:::

Click **Apply** to save.

### Rule B: Allow Secondary DNS

Now it is necessary to create another rule exactly similar to the previous one, except for the **Destination IP** field address, which must be 185.236.105.105.

### Rule C: Block All Other DNS

Finally, it is necessary to create a drop rule to block all DNS traffic directed to external IPs other than our own. Proceed as follows:

- **Action:** Choose Deny.
- **Service:** Select the DNS entry UDP port 53 to 53 from the drop-down menu.
- **Log:** Decide whether or not you want to view the log related to this rule.
- **Source Interface:** Select the name of your internal LAN interface.
- **Source IP:** Choose ANY.
- **Destination IP:** Select ANY from the drop-down menu.

Then click **Save** to apply the final changes.

[title] Bright Box
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the control panel by entering the IP address of the Bright Box router in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure the Device DNS

First, you need to change the DNS of the device. To do this, click on the **Advanced** tab at the top of the page and open the **Broadband Settings** menu.

In the window that appears, choose MANUAL under the DNS IP Address section, and type our cloud IPs into the specific fields respectively:

- **Primary DNS:** 185.236.104.104
- **Secondary DNS:** 185.236.105.105

Click on the **SAVE SETTINGS** button to apply the changes.

## Configure Dynamic DNS Service

To configure the Dynamic DNS service, open the **System** menu and click on **DDNS**. Check the Dynamic DNS box and fill in the various fields exactly as follows:

- **Provider:** Select DYNDNS.org.
- **Domain name:** Type in the [domain](https://fsflt.com).
- **Account and Email:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- **Password and Key:** Enter the specific password assigned to your dynamic network.

Click the **SAVE SETTINGS** button to save the changes and force the synchronization.

## Enable the DHCP Server

At this point, you can enable the DHCP server to automatically distribute network parameters to your internal network devices.

Open the **DHCP** menu and enable the DHCP Server item. Choose a lease time and enter the first and last IP address of your local DHCP range.

:::hint{type="info"}
The DHCP server will distribute the local IP of the router as the only DNS for your clients. This will not cause any problems since our cloud IPs have already been configured as the primary DNS of the router itself, ensuring all outbound network traffic is correctly routed and filtered.
:::


[title] Bind
[path] Router Guides/Routers Configuration/

## Overview

If you are using Bind as your internal DNS server and want to forward all incoming requests to our cloud servers, you can easily enable our malware protection and content filtering features. Please follow the steps below to configure the forwarding rules. For more information on how Bind works, you can visit their official website.

:::hint{type="warning"}
Before proceeding with this guide, you must register your public IP address in your dashboard. Only registered IP addresses can use the malware protection and content filtering features on their network. You can do this by navigating to your control panel and accessing the Networks section.
:::

## Configuration Steps

### Locate the Configuration Folder&#x20;

Move to the directory that contains the Bind configuration files. By default, the folder should be located at the following path:

```bash
cd /etc/bind
```

### Open the Options File

&#x20;The file we need to change is the named.conf.options file. Open it in your preferred text editor with sudo privileges:

```bash
sudo nano named.conf.options
```

### Add the Forwarders Block&#x20;

Within the options block, we need to create another section called forwarders. This new block will contain the IP addresses of the DNS servers to which we want to forward all requests. You must enter our primary and secondary IPs.

### Set the Forward Directive&#x20;

Now we need to set the forward directive to the value "only" right below the forwarders block. This ensures your server will automatically forward all requests and will not attempt to resolve them on its own.

When finished, your configuration file should look exactly like this:

:::CodeblockTabs
routeros

```bash
options {
     directory "/var/cache/bind";

     forwarders {
          185.236.104.104;
          185.236.105.105;
     };

     forward only;

     dnssec-validation auto;
     auth-nxdomain no; # conform to RFC1035
     listen-on-v6 { any; };
};
```
:::

### Verify the Syntax

&#x20;Save and close the file once you are done. To check if you have done everything correctly, you can use the built-in tools provided by Bind to verify the syntax of the configuration files. Simply type the following command in your terminal:

```bash
sudo named-checkconf
```

If there are no syntax errors in your configuration, the shell prompt will terminate immediately without displaying any output.

### Restart the Service&#x20;

Finally, you need to restart the Bind daemon to implement the new changes. You can do this with the following command. Note that the command below uses Bind 9. Please replace the service name with the specific version you are currently using if it is different.

```bash
sudo service bind9 restart
```

We are done! You should now have your Bind server properly configured to start filtering content and protecting your network from malware.

[title] Fritz!Box
[path] Router Guides/Routers Configuration/

## Overview

Connect to the control panel by entering **[fritz.box](https://fritz.box)** in the address bar of any browser. If it is your first access, connect your PC client via a LAN cable. Then, log in by entering your administrative credentials with the correct password.

## Configure DNS over TLS

:::hint{type="warning"}
To confirm the activation of the DoT service, you will need a registered phone number to confirm the option remotely, or have direct physical access to the device.
:::

To proceed with the setup, follow these steps within the Fritz!Box interface:

- Go to **Internet** > **Account Information** > **DNS Server** > navigate to the **DNS over TLS** section.
- Check the box to enable **Encrypted name resolution on the Internet**.
- Check the box to **Force a certificate check for encrypted name resolution on the Internet**.
- In the **Resolution names of the DNS servers** field, enter the DoT address obtained from the Cloud platform. Example: <font color="#247d45">xxxx##.dot.mydomain.com</font>.

:::hint{type="info"}
If you need to force communication solely via DoT, deselect the checkbox: **Allow fallback to unencrypted name resolution on the Internet**.
:::


[title] Engenius SD-WAN
[path] Router Guides/Routers Configuration/

## Overview

This guide is intended to help Engenius SD-WAN Router ESG users integrate a security and content filter solution with our cloud servers. Once you have your router managed through Engenius Cloud, you will be ready for its configuration.

## Enable Engenius DDNS

First, navigate to the configuration section of your **Engenius Cloud**, select **Gateway**, and then click on **Interfaces**.

Enable the **Engenius DDNS** feature and assign a recognizable name to your device, for example, the word Firstdevice. Check that the changes have been applied correctly from the general panel of the Gateway before proceeding to the next step.

## Configure the Cloud Dashboard

Go to your filtering dashboard to link the router. You must add your network using the exact same domain name that you have previously set up in your Engenius Gateway DDNS settings.

:::hint{type="warning"}
In case the system is unable to resolve your public IP address immediately, please wait a few minutes for the DNS records to propagate correctly across the global network.
:::

## Assign the Filter DNS

Go back to your Engenius Gateway panel and assign our primary and secondary DNS addresses to your network:

- **Primary DNS:** 185.236.104.104
- **Secondary DNS:** 185.236.105.105

Apply the changes to distribute the new DNS settings to your connected devices.

## Verification

Go back to your filtering dashboard and check the network status. You should now see your Engenius SD-WAN router successfully synchronized, meaning your network traffic is actively protected by the filter.


[title] Linksys
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the control panel by entering the IP address of the Linksys device in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure the Device DNS

First, you need to configure the DNS of the device. To do this, open the **Connectivity** menu and then click on **Internet Settings**.

Click on the **Edit** item next to **Type of Internet Connection** and choose the connection mode of your network.

:::hint{type="info"}
Please note that in this example, the Static IP mode will be used. Should you wish to use the Automatic Configuration DHCP mode, you would need to configure our DNS directly on your network DHCP Server instead.
:::

Fill in the various fields exactly as follows:

- **Internet IPv4 address:** Enter your Static Public IP.
- **Subnet mask:** Enter the network mask of your connection.
- **Default gateway:** Enter the IP of the default gateway, which is usually the local IP of the router.
- **DNS 1:** Enter the primary cloud IP 185.236.104.104.
- **DNS 2 optional:** Enter the secondary cloud IP 185.236.105.105.
- **DNS 3 optional:** Leave this field completely blank.

Click on the **Ok** button to save the changes.

## Configure Dynamic DNS Service

To configure the Dynamic DNS service, open the **Security** menu and then click on **Apps and Gaming**. Select **Dyn.com** from the drop-down menu next to the **Select a provider** item, and configure the service as follows:

- **Username:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- **Password:** Enter the specific password assigned to your dynamic network.
- **Host Name:** Enter the exact address.

Finally, click **Update** to make the changes active.

## Enable the DHCP Server

At this point, you can enable the DHCP Server so that it automatically assigns network parameters, including our filtered DNS, to the various internal devices.

Open the **Connectivity** menu and click on **Local Network**. Check the **Enabled** box next to **DHCP Server** to enable the service, and then configure it with the specific parameters of your local network.

Next, enter the following cloud addresses in the static DNS fields:

- **Static DNS 1:** Enter the address 185.236.104.104.
- **Static DNS 2:** Enter the address 185.236.105.105.

Finally, click **Ok** to activate the service and distribute the new settings. Alternatively, the DNS settings of the various devices within the network can be changed manually one by one.

[title] How to Enable DoH on MikroTik
[path] Router Guides/Routers Configuration/MikroTik/

## Overview

The DNS over HTTPS protocol, commonly referred to as DoH, allows you to encrypt DNS requests, improving both security and privacy while browsing. Follow the steps below to enable this secure protocol on MikroTik routers using our servers.

## Configuration Steps

### Connect to the Router and Open the Console

Access your MikroTik router using **WinBox** or the web interface. Once connected, open the MikroTik terminal by clicking on **New Terminal** from the main menu.

### Download and Import the Root Certificate

You must download and install the root certificate to ensure proper certificate verification. Type or paste the following commands into the terminal:

:::CodeblockTabs
routeros

```bash
/tool fetch url=https://download.fsflt.com/fs_rootca/fs_rootca.pem
/certificate import file-name=fs_rootca.pem
```
:::

### Enable the Encrypted Protocol

Enable the service by specifying your unique server URL and requesting certificate verification. Paste this command into the terminal:

:::CodeblockTabs
routeros

```bash
/ip dns set use-doh-server=https://doh.fsflt.com/123456 verify-doh-cert=yes
```
:::

:::hint{type="warning"}
You must replace **123456** in the URL with your specific customer code or the unique token generated in your dashboard under the DoH section.
:::

## Verify Operation

Check that the router is correctly using the encrypted servers by running this verification command:

:::CodeblockTabs
routeros

```bash
/ip dns print
```
:::

Make sure the use-doh-server field in the output is correctly set to your specific URL.

:::hint{type="warning"}
If you are using a multi-WAN configuration or a local DNS setup, ensure that your firewall or NAT rules allow HTTPS traffic on port 443 to the domain doh.fsflt.com.
:::


[title] How to configure DNS filtering on Mikrotik devices
[path] Router Guides/Routers Configuration/MikroTik/How to solve synchronization problems in Mikrotik/

## Overview

Access your MikroTik via the **WinBox application** or the Web interface. You can connect to the control panel using SSH, Web, or WinBox. Please note that in this guide we have used WinBox to configure the device, which is recommended.

## Create the Script

First, you need to create a new Script to synchronize your IP. Proceed as follows:

- Go to the **System** menu and then click on **Scripts**.
- In the window that opens, click on the **+** symbol under Scripts.
- Choose a name to give the Script, for example PlatformScript.
- Leave the default policies active.
- In the **Source** field, paste the following instruction:

:::CodeblockTabs
routeros

```bash
:tool fetch url= url
```
:::

You must replace the words **USER** and **PASS** as follows:

- **USER:** The dedicated username of your dynamic network.
- **PASS:** The specific password of your dynamic network.

:::hint{type="warning"}
If your password contains special characters such as $ or ", you must enter the \ symbol before each of these characters. For example, suppose you have the password **password123$$**, this must be written exactly as **password123$$**. This change is strictly necessary otherwise the MikroTik system would see those symbols as commands and not as simple characters.
:::

Click **OK** to save the changes.

## Schedule the Script

At this point, it is necessary to create a Scheduler so that it automatically executes the Script created earlier. Proceed as follows:

- Go to the **System** menu and click on **Scheduler**.
- In the window that opens, click on the **+** symbol under the Scheduler heading.
- Choose a name to give the Scheduler, for example PlatformScheduler.
- Choose the script execution time interval, for example 5 minutes. The format must be hh\:mm\:ss, so in our case it will be **00:05:00**.
- In the **On Event** field, enter the exact name of the previously created Script. In our example, it will be PlatformScript.

Click **OK** to save.

## DNS Cloud Filter Configuration

Set the following DNS addresses, either using a DHCP Server or manually, on the various devices inside your network:

- **Primary DNS:** 185.236.104.104
- **Secondary DNS:** 185.236.105.105

Alternatively, it is possible to change the DNS used by the MikroTik so that the router IP itself is used as the only DNS on the internal network devices. To do this, proceed as follows:

- Go to the **IP** menu and click on **DNS**.
- In the window that opens, enter the following IPs in the **Servers** field respectively:
  - 185.236.104.104
  - 185.236.105.105
- Click on the **OK** button to save.

:::hint{type="info"}
If there is an address within the Dynamic DNS field on your DNS Settings, it means that the MikroTik also takes DNS addresses from the DHCP of another device on the network like your main modem. To avoid this, open the **IP** menu and click on **DHCP Client**. Double-click on the entry for the active DHCP client to open the respective properties, remove the check mark from the **Use Peer DNS** item, and click **OK** to save.
:::

## Optional: Deny DNS Changes by Users

You can create some Firewall rules with the purpose of automatically redirecting all DNS traffic on port 53 to our Servers. This way you will not need to change the DNS settings on the individual devices inside the network.

To do this, open the **IP** menu and click on the **Firewall** button. Then click on the **NAT** tab and click on the **Add new** button to create a new rule.

Fill in the various fields as follows:

- **Enabled:** Check the box to enable the rule.
- **Chain:** Select dstnat from the drop-down menu.
- **Protocol:** Choose udp.
- **Dst. Port:** Enter 53.
- **In. Interface:** Choose the internal network interface to be filtered. By default it is called bridge1.
- **Action:** Select dst-nat.
- **To Address:** Enter the address 185.236.104.104.
- **To Port:** Enter the port number chosen previously, which defaults to 53. If a port other than 53 was registered on your Cloud panel, enter that specific port instead.

Click **OK** to save.

Finally, create another rule exactly the same as the previous one, except the **Protocol** field must be **tcp** instead of udp.

## Related Articles

| Configuration Guide                                                                        | Description & Focus                                                          |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
| ****[How to run scripts on multi-WAN scenarios on Mikrotik](docId\:k-18BmJC3weMduWkGTApJ)  | Advanced setup for environments with multiple internet connections.          |
| ****[How to configure multiprofile on Mikrotik](docId:04jLbuj64LpadyBUJbyRM)               | A guide to managing multiple distinct filtering profiles on a single device. |


[title] API Integration
[path] /


[title] Dates and Roadmap
[path] FAQ/

## What is the migration roadmap?

- **January 26: Release of the new platform&#x20;**&#x61;n&#x64;**&#x20;launch of the Pro version**.

:::hint{type="info"}
For new customers, **Pro licenses will be activated**. For existing customers,**&#x20;Pro licenses will be migrated** an&#x64;**&#x20;testing for Pro-version API integrations** will begin.
:::

- **February 23:** The new platform becomes **fully active** and th&#x65;**&#x20;Pro Plus version is launched**.&#x20;

:::hint{type="info"}
For new customers,**&#x20;Pro and Pro Plus licenses will be activated**. For existing customers,**&#x20;Pro and Pro Plus licenses will be migrated** an&#x64;**&#x20;testing for Pro/Pro Plus API integrations** will begin. In addition,**&#x20;White Label migration** will start for existing customers.
:::

- **April 30:** **Final migration** to the new platform. 

:::hint{type="info"}
All licenses still active on the Legacy platform will be **mandatorily migrated**. The Legacy platform will officially ente&#x72;**&#x20;End of Life**.**&#x20;Legacy platform APIs will be discontinued**. Legacy White Label features will also be discontinued. After this date, all customers wil&#x6C;**&#x20;exclusively use the new platform**.
:::


[title] API Integration
[path] API Integration/

# API Overview

Welcome to th&#x65;**&#x20;API** overview.

Our robust RESTful API is designed for developers, system administrators, and MSPs who want to programmatically interact with the DNS filtering platform. By leveraging our API, you can automate routine tasks, integrate our security features directly into your custom dashboards, and streamline your workflows.

### What you can do with the API

Using the API, you can build custom integrations to manage almost every aspect of your account, including:

- **Network Management:** Programmatically deploy and configure new networks or endpoints.
- **Policy Control:** Automate updates to blocklists, allowlists, and security policies.
- **Tenant Administration:** Seamlessly provision and manage child accounts (for MSPs).
- **Data & Analytics:** Retrieve logs and historical reporting data to feed into your own SIEM or analytics tools.

:::hint{type="info"}
All technical details, including authentication methods, available endpoints, required parameters, and JSON response examples, are available in our dedicated API documentation.

Access the full technical documentation here: [API Documentation](https://docs.api.fsflt.net/)
:::


[title] PFSense
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. To begin the setup, connect to the pfSense web panel and navigate to the Dynamic DNS service configuration.

## Configure Dynamic DNS Service

Configure the Dynamic DNS parameters exactly like this:

- **Service Type:** Choose Custom.
- **Interface to monitor:** Select WAN.
- **Interface to send update from:** Select WAN.
- **Username:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your registration email.
- **Password:** Enter the specific password assigned to your dynamic network.
- **Update URL:** Paste your specific update URL in this field.

## Schedule the Synchronization

You need to set up a cron job to force the public IP synchronization.

- Click on the **Diagnostic** menu and then on **Edit File**.
- Click on **Browse** and open the folder named **etc**.
- Open the file called **crontab** and edit it as follows.
- Look for the line ending with **/etc/rc.dyndns.update**. Edit the first column by entering the string **\*/5**. The number following the asterisk and slash characters stands for how often public IP synchronization will be forced in minutes.
- Also edit the second column by entering the character **\***. In this example, the synchronization will be done every 5 minutes.
- Click on the **Save** button to apply the changes.

## Persist the Changes on Reboot

In order to use the Dynamic DNS service correctly, the previous operation is not sufficient since the change made to the crontab file will be lost once the device is restarted. It is necessary to proceed as follows to make your changes persistent:

- Click **Browse** again and open the file called **rc.bootup**.
- Look for the **configure\_cron** command. Comment it out by adding the **#** symbol at the very beginning of that line.
- Click on **Save** to apply the changes.

## Edit the Update Script

As a final step, you need to edit the **rc.dyndns.update** file located within the **etc** directory. Proceed as follows:

- Search inside the file for the line containing the exact string */ Interface IP address has changed \*/*\*.
- Add the unlink command right under it to clear the cache. For example:

```php
unlink("/conf/dyndns_wancustom'checkip'0.cache");
```

:::hint{type="warning"}
In our example, the name of the WAN interface is wancustom, so you will need to adapt the command above based on the actual name of your specific WAN interface.
:::

- Click **Save** to apply the configuration.

## DNS Configuration

Set the following cloud addresses as the primary and secondary DNS on the devices inside your network. You can do this either manually or by distributing them through a DHCP Server:

- **Primary DNS:** 185.236.104.104
- **Secondary DNS:** 185.236.105.105

[title] Untitled
[path] /


[title] Ubiquiti-UniFi
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the Web panel by entering the IP address of the Ubiquiti device in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure the Device DNS

First, you need to change the DNS of the device. To do this, click on the **Network** menu, then look for the **WAN Network Settings** item. Enter the address **185.236.104.104** inside the **Primary DNS IP** field and **185.236.105.105** in the **Secondary DNS IP** field. Click **Change** to apply the updates.

## Configure Dynamic DNS Service

Next, open the **Services** menu and enable the **Dynamic DNS** item. Configure the various fields as follows:

- **Service:** Select Dyndns.org.
- **Host Name:** Enter any name you like, for example, Filter.
- **User Name:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main account email.
- **Password:** Enter the specific password assigned to your dynamic network.

Click on the **Change** button to save.

:::hint{type="warning"}
It is absolutely not necessary to be registered for the DynDns.org service. Our system will automatically intercept and redirect the DynDns.org update connections directly to our web filter.
:::

## Configure the DHCP Server

To distribute the cloud filter DNS to all devices within the local network, open the **Network** menu and look for the **LAN Network Settings** item. Fill in the fields as follows:

- **Range Start:** Enter the first IP address of your DHCP range.
- **Range End:** Enter the last IP address of your DHCP range.
- **Netmask:** Enter your subnet mask.
- **Lease Time:** Set a DHCP lease time in seconds.
- **Primary DNS IP:** Enter the IP 185.236.104.104.
- **Secondary DNS IP:** Enter the IP 185.236.105.105.

Click **Change** to make the modifications active. Alternatively, the DNS settings of the various devices within the network can be changed manually one by one.

## Optional: Deny DNS Changes by Users

It is possible to increase security by denying users the ability to browse unfiltered by manually changing the DNS on their local devices. To do this, proceed as follows:

Click on the **Network** menu and open the **Firewall** item. At this point, you need to create rules to block all outbound traffic on port 53 for both TCP and UDP protocols, except for requests directed specifically to our cloud IPs.

:::hint{type="info"}
It is crucial to respect the order of the firewall rules to ensure they work correctly. You must place the allow rules for our specific IPs **185.236.104.104** and **185.236.105.105** at the very top of the list, and immediately follow them with the general drop or block rules for all other port 53 traffic.
:::


[title] Teldat
[path] Router Guides/Routers Configuration/

## Overview

To activate the containment filter on Teldat devices, please connect to the control panel by entering the IP address of the Teldat router in your browser. Then, enter your administrative login credentials to access the configuration.

## Change the Device DNS

For web filtering to work on your devices, you need to configure the router and replace the current DNS addresses with our cloud servers. To do this, go to the router panel and enter the following configuration:

:::CodeblockTabs
routeros

```bash
feature dns
; -- DNS resolver user configuration --
;
    server 185.236.104.104
    server 185.236.105.105
exit
```
:::

## Dynamic IP Configuration

Web filtering works perfectly with both dynamic and static IPs. If you have a dynamic IP address, you must configure the Dynamic DNS service directly on the router.

When configuring the DynDNS client on your Teldat device, it is strictly necessary to use the specific username and password assigned to your dynamic network inside our dashboard. Do not use your main account email address. Enter the following configuration, making sure to replace the placeholder tags with your actual data:

:::CodeblockTabs
routeros

```bash
feature dns-updater
; -- DNS UPDATER configuration --
;
    enable
    entry 1 protocol DynDNS system dynamic
    entry 1 interface <INTERFACE_WAN>
    entry 1 hostname <HOSTNAME>
    entry 1 servername members.dyndns.org
    entry 1 user <USERNAME> password <PASSWORD>
exit
```
:::

## Optional: Deny DNS Changes by Users

You can significantly strengthen your network security by preventing unauthorized user DNS changes. To do this, simply create a new access list for use on the WAN interface to block external DNS resolution, and apply it to your external interface as follows:

:::CodeblockTabs
routeros

```bash
network direct-ipl
; -- Generic Direct IP Encapsulation User Configuration --
;
    description WAN
    ip access-group 100 out
exit
```
:::

## Optional: Configure Multiprofile

The advanced Multiprofile feature allows you to create multiple filtering profiles for each client or license and associate them with a single network or IP address. Our Web Filter recognizes the remote network and the specific configuration profile based on the public IP and the destination port used for the DNS request.

For example, if you have the address 1.2.3.4, you can route your traffic using different ports:

- **Standard port 53:** Used for the default profile.
- **Alternative ports:** Used for secondary profiles, choosing among 110, 143, 5402, and 5403.

If you want to create two or more profiles for a network with the same IP address, you need to configure a different destination port for each profile.

### Enable AFS and Configure NAT&#x20;

First, you must enable the AFS feature on your Teldat device. Enter these commands:

:::CodeblockTabs
routeros

```bash
feature afs
    enable
exit
```
:::

Then, you need to change the DNS request originating on port 53 to the new port via NAT. Please note that a port other than 53 must be entered in the PORT\_PROFILE2 tag, choosing exclusively from 110, 143, 5402, or 5403. The default port 53 connects directly, so no special NAT configuration is needed for your primary profile.

:::CodeblockTabs
routeros

```bash
protocol ip
; -- Internet protocol user configuration --
;
    nat
        rule 1 out <LAN_INTERFACE_PROFILE2> static
        rule 1 translation source tcp 185.236.104.104 <PORT_PROFILE2> 185.236.104.104 53
;
        rule 2 out <LAN_INTERFACE_PROFILE2> static
        rule 2 translation source udp 185.236.104.104 <PORT_PROFILE2> 185.236.104.104 53
;
        rule 3 out <LAN_INTERFACE_PROFILE2> static
        rule 3 translation source tcp 185.236.105.105 <PORT_PROFILE2> 185.236.105.105 53
;
        rule 4 out <LAN_INTERFACE_PROFILE2> static
        rule 4 translation source udp 185.236.105.105 <PORT_PROFILE2> 185.236.105.105 53
;
    exit
;
exit
;
feature dns-updater
    no cache enable
exit
```
:::

## Full Configuration Example

Here is a complete example of configuring the web filter with MultiProfile and Dynamic DNS in Teldat, so that only the designated DNS servers can be used on the network:

:::CodeblockTabs
routeros

```bash
;
;
user admin hash-password 3A574FAF7E28F15516BEB5C876D8B5BC
global-profiles dial
; -- Dial Profiles Configuration --
;
    profile INTERNET default
    profile INTERNET dialout
    profile INTERNET 3gpp-apn movistar.es
exit
;
network cellular1/0
; -- Interface AT. Configuration --
;
    pin ciphered 0xBE35DF12FBFA1154
    network mode automatic
    network domain cstps
exit
;
network direct-ipl
; -- Generic Direct IP Encapsulation User Configuration --
;
    description WAN
    ip access-group 100 out
    ip address dhcp-negotiated
exit
;
base-interface
; -- Base Interface Configuration --
;
    base-interface cellular1/1 link
    base-interface cellular1/1 profile INTERNET
exit
;
direct-ip
; -- Direct IP encapsulator user configuration --
;
    address dhcp
    authentication sent-user MOVISTAR ciphered-pwd 0xD2650CEF62FBEF55D3AC337DA700103F
exit
;
network ethernet0/0.16
; -- Ethernet Subinterface Configuration --
;
    description VLAN 16
    ip address 172.16.0.1 255.255.0.0
    encapsulation dot1q 16
exit
;
protocol ip
; -- Internet protocol user configuration --
;
    nat
        rule 4 translation source udp 185.236.105.105 5403 185.236.105.105 53
        rule 10 out direct-ipl dynamic overload
        rule 10 translation source interface direct-ipl
    exit
exit
;
;
feature dns
; -- DNS resolver user configuration --
;
    no cache enable
    server 185.236.104.104
    server 185.236.105.105
exit
;
feature dns-updater
; -- DNS UPDATER configuration --
;
    enable
    entry 1 protocol DynDNS system dynamic
    entry 1 interface direct-ipl
    entry 1 hostname ejemplo
    entry 1 servername members.dyndns.org
    entry 1 user ejemplo username ciphered-pwd 0x5E8102555EDEC919914FD3E6D9AD48CD
exit
;
dump-command-errors
```
:::


[title] Pi-Hole's blacklist
[path] Router Guides/Routers Configuration/

## Overview

Pi-Hole is a very powerful tool that acts as a DNS server with the ability to block advertising and tracking domains. Pi-Hole obtains lists of tracking domains from a configurable blacklist of predefined sources, and then compares DNS queries against them. However, although its main purpose is to work as an ad blocker, the nature of Pi-hole actually allows it to block the domain of any website by manually adding the domain name to a blacklist.

For more information on how Pi-Hole works, visit their official website. This guide explains how to extend the blacklists of Pi-Hole with our cloud filtering in order to benefit from additional malware protection and content filtering features.

:::hint{type="warning"}
**Important Prerequisite** Before proceeding with this guide, you must register your public IP address. Only registered IP addresses can use the malware protection and content filtering features on their network. You can do this by navigating to your dashboard and accessing the **Networks** section.
:::

## Configuration Methods

The setup process described in this guide can be done either through the web interface or by manually editing the configuration files. You can decide which one to use based on your personal preferences and the type of installation you have done. If you decide to configure via the web interface, follow the first section below. Otherwise, skip to the command line instructions.

## Configuration Through Web Interface

### A. Access the Web Interface

Log in to your Pi-Hole admin dashboard. From the main panel, go inside the **Settings** menu and move to the **DNS** tab.

### B. Set Up Upstream DNS Servers

Here you need to enter the IP addresses of the upstream DNS servers you want to set up. These are the servers to which all requests will be automatically forwarded by your Pi-Hole server. Enter our custom IP addresses in the IPv4 Custom fields as follows:



- **Custom 1 IPv4:** 185.236.104.104
- **Custom 2 IPv4:** 185.236.105.105

### C. Save and Verify

Scroll to the bottom of the page and click the **Save** button to apply your changes. You should now have your Pi-Hole server properly configured to forward all client requests to our DNS servers.

To start using our blacklists for content filtering and malware protection, you must now configure your specific filtering policies by going to the **Protection** section of our cloud dashboard.

## Switch Configuration File via CLI

If for some reason you do not want to use the web interface or have simply decided not to install it, you can alternatively edit the Pi-Hole configuration files manually by following these simple steps. Please note that if you have already completed the web interface setup above, you do not need to proceed with this section.

### A. Locate the Configuration File

The file we are interested in is called setupVars.conf and by default is located inside the /etc/pihole/ folder. Move to that directory and open the file with your preferred text editor:

:::CodeblockTabs
routeros

```bash
sudo nano /etc/pihole/setupVars.conf
```
:::

This file is basically a script that takes care of setting numerous variables, which will then be used by Pi-Hole when running its core services.

### B. Edit the DNS Variables

The variables we need to change are the ones defining the upstream DNS. If you have not previously configured an upstream DNS server, you might not find these variables in the file. In that case, you can directly add two new variables called **PIHOLE\_DNS\_1** and **PIHOLE\_DNS\_2** to the file. Set their values to our correct IP addresses as shown below. If they already exist, simply update their values:

:::CodeblockTabs
routeros

```bash
PIHOLE_DNS_1=185.236.104.104
PIHOLE_DNS_2=185.236.105.105
```
:::

Save and close the file once you are done.

### C. Apply Changes and Restart Services

Run the reconfiguration command in your shell to apply the new values:

:::CodeblockTabs
routeros

```bash
pihole -r
```
:::

Finally, we need to restart the DNS service to make sure everything is running smoothly. You can use the following command to do this:

:::CodeblockTabs
routeros

```bash
sudo service dnsmasq restart
```
:::

We are done. You should now have your Pi-Hole server properly configured to forward all client requests to our DNS servers. What remains to be done now is to configure your filtering policies by going to the **Protection** section of our cloud dashboard.

[title] Zyxel/Zywall
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the control panel by entering the IP address of the Zyxel or Zywall router in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure the Device DNS

First, you need to configure the DNS of the device. Click on the gear icon on the left and then open the **Network** menu. Next, go to **WAN**.

Look for the WAN DNS Assignment item and select **User Defined** from the drop-down menu. Then enter the following cloud addresses in the First DNS Server and Second DNS Server fields respectively:

- **First DNS Server:** 185.236.104.104
- **Second DNS Server:** 185.236.105.105

## Configure Dynamic DNS Service

At this point, you need to activate and configure the Dynamic DNS service. Click on the **Network** menu and then on **DDNS**. Put a check mark on Enable Dynamic DNS to enable the service, and configure the various fields exactly as follows:

- **Service Provider:** Choose WWW\.DynDNS.ORG as the service.
- **Host Name:** Enter any name you like for this field, for example, the word Filter.
- **Username:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- **Password:** Enter the specific password assigned to your dynamic network.

Click **Apply** to save the changes.

:::hint{type="info"}
It is absolutely not necessary to register for the DynDNS service. Our system will still work perfectly since the filter automatically redirects the update request to itself.
:::

## Enable the DHCP Server

At this point, you can configure the DHCP Server to automatically assign network parameters, including our filtered DNS, to the various internal devices. To do this, click on the **Network** menu and then on **DHCP Server**.

Enable the service by putting a check mark on the Enable DHCP Server item. Enter the first IP of your local range in the Initial IP Pool Address field and the total number of addresses to be assigned within the Pool Size field. Then click on the **Apply** button to save.

Next, open the **Advanced** tab and look for the DNS Server item. Select the User Defined item and enter the following DNS addresses within the First DNS Server and Second DNS Server fields respectively:

- **First DNS Server:** 185.236.104.104
- **Second DNS Server:** 185.236.105.105

:::hint{type="info"}
Alternatively, it is possible to set the local IP address of the Zyxel or Zywall router as the only DNS in your DHCP settings. This way, the clients will use the DNS set on the router, which is already configured to point to our cloud servers.
:::

Finally, click **Apply** to keep the changes. As a last option, it is also possible to manually set our DNS addresses or the local device IP on the internal network clients one by one.

[title] Ruijie
[path] Router Guides/Routers Configuration/

## Overview

Ruijie is a renowned company in the network device industry. Offering high-quality products and an advanced management cloud, it stands out for its innovation and reliability in the field of enterprise connectivity. Ruijie devices provide various configurations depending on user needs, applicable to the filter. Follow the official link to log in with your administrative credentials to the **Ruijie Networks Cloud**.

## DNS IP Configuration for WAN Interfaces

To configure the DNS on your external interface, please proceed as follows:

- Login to your **Dashboard**.
- Select the **Network** category.
- Select **WAN**.
- Enter the dedicated DNS **185.236.104.104** and click on **Save**.

## Support DDNS Configuration

:::hint{type="info"}
The DDNS configuration is fully functional, but please note that the provider dyndns.org is not currently supported by Ruijie. Should your chosen provider be different, please proceed as follows:
:::

- Select the **Advanced** category.
- Select the entry **Dynamic DNS**.
- Select the desired service provider and the interface on which to apply the service.
- Enter your Dynamic DNS domain name.
- Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- Enter the specific password assigned to your dynamic network.
- Click on **Log In** to force the synchronization.

## Proxy DNS Configuration

To force the network to redirect all DNS traffic to our secure servers, the following steps can be taken:

- Select the **Network** category.
- Select the **LAN** item.
- Select **DNS Proxy** and click **Enable**.
- Enter the dedicated DNS **185.236.104.104** and click **Save**.

## DNS Forwarding Filtering Support

To enforce strict access control on DNS forwarding, please proceed as follows:

- Select the **Behaviour** category.
- Select the entry **Access Control**.
- Select **Add** to reach the new configuration menu.
- In the popup window that opens, check the **DNS** box and click **OK** to apply the rule.

[title] The multiprofile and multipolitics
[path] Router Guides/Routers Configuration/MikroTik/How to configure multiprofile on Mikrotik/

## Overview

The Multiprofile feature enables you to create different filtering profiles and associate them with a single network. This means you can apply completely different filtering rules to various devices sharing the exact same public IP address.

Our filter provides five dedicated pairs of DNS addresses, and each pair can be associated with a different profile:

- **185.236.104.104** and **185.236.105.105**
- **185.236.104.114** and **185.236.105.115**
- **185.236.104.124** and **185.236.105.125**
- **185.236.104.134** and **185.236.105.135**
- **185.236.104.144** and **185.236.105.145**

## Configuration Example

To better understand how it works, let us proceed with a practical scenario where we define two different profiles for a single client network:

- **Default Profile:** Using primary DNS 185.236.104.104 and secondary 185.236.105.105. This profile is used by standard employees with the social network category locked.
- **Executive Profile:** Using primary DNS 185.236.104.114 and secondary 185.236.105.115. This profile is used by management with the social network category completely unlocked.

## Configure the Default Profile

First, you need to access your management panel by entering your credentials. Using the **Profile** tab at the top of the dashboard, you can configure the default profile settings.

If you want to change its name, you can do so by clicking on the pencil icon next to it, typing a new name, and finally clicking on the **Edit** button to apply the changes.

## Create the Second Profile

After configuring the default setup, we are going to create a second profile named Executive and associate it with the second DNS pair. Follow these exact steps:

- Click on the **Profile** tab.
- Click on **Create New Profile** next to the + icon and fill in the following fields:
  - **Name:** Choose a recognizable name for the profile. In our case, it will be Management.
  - **Time Zone:** Choose the time zone that will be used for your Cloud reporting functions.
  - **Mode:** Choose Normal to block only the chosen categories and blacklisted domains, or choose Restricted to block absolutely everything except your explicitly whitelisted domains.
  - **DNS:** Choose a different DNS pair from the drop-down menu. In this example, select 185.236.104.114 and 185.236.105.115.
  - **Networks:** Check the specific dynamic network username or the public IP address that you want to associate with this new DNS pair.
- Finally, click **Insert** to create the new profile.

:::hint{type="info"}
If no network has been added to your account yet, the **Networks** field will not be present during creation. You can easily associate the address later after you have created at least one network in the dedicated menu.
:::

## Apply the Rules

At this point, you can configure the various filtering rules inside your dashboard. Following our example, we will block the social network category on the **Default** profile and unblock it on the **Executive** profile.

In this way, any device sending requests to the DNS pair ending in 114 and 115 will respond to a different configuration than the Default DNS.

## Methods of Use

To actively use the profiles you have just created, you will need to configure your local network. There are two possible options:

- **Manual Setup:** Manually change the DNS addresses on individual devices based on which profile you want to apply to that specific computer.
- **Firewall Automation:** Create NAT redirection rules based on the originating local IP addresses. This automated method is only possible if you have a compatible router or firewall like MikroTik.

## Related Articles

| Configuration Guide                                                       | Description & Focus                                                          |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [How to configure multiprofile on Mikrotik](docId:04jLbuj64LpadyBUJbyRM)  | A guide to managing multiple distinct filtering profiles on a single device. |




[title] Netgear
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for our filtering service, you can do so by visiting our registration page. Connect to the control panel by entering the IP address of the Netgear router in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure the Device DNS

First, you need to configure the DNS of the device. To do this, click on the **Advanced** section and then open the **Installation** menu. Next, click on **Internet Configuration**. In the window that opens, look for the entry **DNS Address Domain Name Server** and click on **Use these DNS servers**. Then, enter the address 185.236.104.104 as the primary DNS and 185.236.105.105 as the secondary DNS. Click on the **Apply** button to save the changes.

## Configure Dynamic DNS Service

To configure the Dynamic DNS service, open the **Advanced Configuration** menu and then click on **Dynamic DNS**. Check the **Use a Dynamic DNS service** item and fill in the various fields exactly as follows:

- **Service Provider:** Select www\.DynDNS.org.
- **Host name:** Enter any name you like, for example, the word Filter.
- **User Name:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main account registration email.
- **Password:** Enter the specific password assigned to your dynamic network.

Finally, click **Apply** to make the changes active.

## Enable the DHCP Server

At this point, you can enable the DHCP Server so that it automatically assigns network parameters to the various internal devices. Open the **Installation** menu and click on **LAN Settings**. Enable the **Use router as DHCP server** item and enter the first and last IP of your DHCP range in the **Start IP Address** and **End IP Address** fields respectively.

:::hint{type="info"}
The DHCP Server will distribute the local IP of the Netgear router as the only DNS for your clients. Since the DNS of the router itself has been previously changed to our cloud addresses, all network traffic will be correctly routed and filtered.
:::

Alternatively, the DNS settings of the various devices within the network can be changed manually one by one.

## Optional: Deny DNS Changes by Users

It is possible to increase security by denying users the ability to browse unfiltered by manually changing the DNS on their local devices. To do this, proceed as follows:

Open the **Security** menu and click on **Firewall Rules**. At this point, you need to create rules to block all outbound traffic on port 53 for both TCP and UDP protocols, except for requests directed specifically to our cloud IPs.

Click on the **+Add** button and fill in the page as follows:

- **Services:** Choose the DNS TCP and UDP port 53 item from the drop-down menu.
- **Action:** Select ALWAYS Allow.
- **LAN Users:** Leave the Any item selected.
- **WAN Server:** Choose Unique Address.
- **Start:** Enter the IP 185.236.104.104.

Click **Apply** to save.

Now you need to create another rule exactly similar to the previous one, except for the IP address of the **Start** field, which must be 185.236.105.105.

Finally, you need to create a rule to block all DNS traffic directed to external IPs other than our own cloud addresses. Proceed as follows:

- **Services:** Choose the DNS TCP and UDP port 53 item.
- **Action:** Select the BLOCK always item.
- **LAN users:** Leave Any.
- **WAN Servers:** Leave Any.

Then click the **Apply** button to create the final rule.

[title] TP-Link
[path] Router Guides/Routers Configuration/

## Overview

If you have not yet registered for the service, you can do so by visiting our registration page. Connect to the control panel by entering the IP address of the TP-Link device in the address bar of any browser. Then, log in by entering your administrative credentials.

## Configure the Device DNS

First, you need to configure the DNS of the device. Open the **Network** menu, then go to **WAN**. Finally, click on **Advanced**. Enter the following cloud IPs in the Primary DNS and Secondary DNS fields respectively:

- **Primary DNS:** 185.236.104.104
- **Secondary DNS:** 185.236.105.105

## Configure Dynamic DNS Service

At this point, it is necessary to activate and configure the Dynamic DNS service. Proceed as follows:

- **Service Provider:** Choose Dyndns as your service.
- **Username:** Enter the specific username assigned to your dynamic network inside our dashboard. Do not use your main registration email.
- **Password:** Enter the specific password assigned to your dynamic network.
- **Domain:** Enter a domain name at will, for example, the word domain.
- **Enable DDNS:** Check the Enable DDNS entry.

Click the **Login** button to force synchronization and then click on **Save** to apply the changes.

:::hint{type="info"}
It is absolutely not necessary to register for the Dyndns service. Our system will still work perfectly since the filter automatically redirects the update request to itself. Also, do not worry if an error message like DDNS not launching appears on the screen during this process.
:::

## Enable the DHCP Server

At this point, you can configure the DHCP Server to automatically assign network parameters, including our filtered DNS, to the various internal devices. To do this, click on the **DHCP** menu and then on **DHCP Settings**.

Enable the service and configure it as follows:

- **Start IP Address:** Enter the first IP in your local range.
- **End IP Address:** Enter the last IP in your local range.
- **Address Lease Time:** Choose the length of time the addresses assigned by DHCP are valid in seconds.
- **Default Gateway:** Enter the default gateway address of your network.
- **Default Domain:** Enter the domain name of your network if you have one.
- **Primary DNS:** Enter the address 185.236.104.104.
- **Secondary DNS:** Enter the address 185.236.105.105.

:::hint{type="info"}
Alternatively, you can set the local IP address of the TP-Link router as the only DNS in your DHCP settings. This way, the clients will use the DNS set on the router, which is already configured to point to our cloud servers.
:::

Finally, click **Save** to apply the changes.

[title] FAQ
[path] /


[title] Migration and Licenses
[path] FAQ/

## Will DNS filtering stop during the migration?

**No.&#x20;**&#x54;hroughout the entire migration process, DNS filtering will continue to work normally, with **no service interruptions.**

## When will it be possible to start the migration from the Legacy platform to the new platform?

The migration is already possible. On the **Legacy Platform**, a **banner** is available, allowing you to start the migration.

## Which licenses will be migrated?

**All licenses** will be migrated. The only requirement is that th&#x65;**&#x20;license must be valid.**

## Can a customer without active licenses at Go-Live be imported and enabled for migration later?

**Yes.** For the entire duration of the Legacy panel, migration authorization can also be **granted after Go-Live.**

## What happens if a customer with an expired license activates a new license after the Legacy panel End of Life?

If a customer used the Legacy panel in the past, was not active at the time of Go-Live, and **activates a license after the Legacy End of Life**, the customer will be **treated as a new customer.** It will **not be possible to migrate configurations** previously created on the Legacy panel.

## What happens if an MSP/provider with a partial migration registers and activates a license for a new customer?

The customer will be **registered on the Legacy panel** and enabled for migration.
The dealer will be able to **migrate the configuration immediately**, without creating networks on the Legacy panel.

## Is it possible to migrate without synchronizing configurations or to choose what to migrate?

There is **no option to select which configurations to migrate**, while **reports can be selected.**

The migration **synchronizes all configurations** that are active on the customer at the time of migration, and it is **not possible to choose&#x20;**&#x73;pecific configurations. If the customer does not want certain configurations to be synchronized, they must **remove them from the Legacy panel.** If the customer wants to **start from scratch** on the new panel, **all configurations must be removed** from the Legacy panel. For **reports**, however, the user can choose during the migration process whether to import them along with the configurations.

## For resellers/MSPs, is it necessary to migrate all customers at once?

**No**, you can migrat&#x65;**&#x20;one customer at a time**. However, all accounts must be migrated by **April 30**, which is the final migration date to the new platform.

## For resellers/MSPs, is it possible to access both platforms?

**Yes**. Resellers/MSPs using both the Legacy platform and New platform 2026 will see **two main menus** in the **customer area**, one for each platform.


[title] Registration procedures
[path] FAQ/

## Can I register on the new platform using the same email address as the Legacy platform?

**No**, this is not possible. To access the new platform, you **must** log in to the Legacy platform and **complete the migration**.

## Is it possible to use the same IP address used on the Legacy platform when configuring the new platform?&#x20;

**No.** To use the new platform, you must use a **different IP** address during configuration. If you want to use the same IP address, you must first **remove it** from the **Legacy** platform and then add it to the new platform.

[title] Pricing and Purchasing
[path] FAQ/

## Will there be any price increases?

**No.** License costs will **remain unchanged**, even after the migration.

## Will there be any changes to licensing?

**No.** There will be **no changes** to the licensing model, which will continue to follow the **same purchasing and management procedures.**

[title] Remote support by Sygma Connect
[path] Support/

**Remote support** is a service that enables a technical team to access a computer or device from a distance via an internet connection. This allows them to diagnose and resolve technical issues in real-time, eliminating the need for an on-site physical intervention.

We utilize **Sygma Connect** to deliver this standard of assistance. Our technical team relies on Sygma Connect because it is a highly secure, reliable, and easy-to-configure remote control solution. This enables us to intervene promptly and efficiently, guaranteeing the maximum result in problem-solving with the minimum effort for the client.

Below you will find all the details, system requirements, and download links to get started with Sygma Connect.

## Sygma connect



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/FMpCLs_30zEr2IrnJaMCa_sygmaconnect2.svg" size="36" width="300" height="95" darkWidth="300" darkHeight="95" position="center" showCaption="false"}

The secure remote control solution, easy to configure, which guarantees you the maximum result at the minimum effort.

[Go to Website](https://www.sygmaconnect.com/en/home/index.php)

## Windows version



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/iGrBwVNrNcRu_QgZYDPx5_magnific-windows-10-logo-stylized-xgdfkxvjfw.png" size="26" width="1024" height="1024" darkWidth="1024" darkHeight="1024" position="center" showCaption="false"}

Requirements: from 7 to 10, from 2008 to 2016,x86 architecture both 32 and 64 bit (no arm)

[Download](https://update.sygmaconnect.com/upd/SygmaConnect-setup.exe)

## MacOS version

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/B-g3yXKk0kmqipt1xtJH7_magnific-vector-graphic-of-a-simpl-l78fopbgv9.png" size="24" width="2048" height="2048" darkWidth="2048" darkHeight="2048" position="center" showCaption="false"}



Requirements: from 10.12 (Sierra) to 10.15 (Catalina), x86\_64 architecture only

[Download](https://update.sygmaconnect.com/upd/macx)

## Why choose Sygma Connect ?

### Easy to set up

With just a few simple steps, you can connect to remote PCs or servers for support.

### Multiplatform

Multi-platform software: Windows, Mac and Linux. Download the version that’s right for you.

### Global technology

Developed entirely in Italy, it ensures secure and secure connections thanks to data encryption.

### Advantageous price

Sygma is a great investment, you can do remote assistance in an easy and economical way.

**Other ways to ask**:

- Sygma Connect Remote Assistance
- Remote IT Support via Sygma Connect

[space] Docs (/legacy)

[title] Linksys Router
[path] Router Guides/

## To activate the Cloud filter

If you have *not yet registered for the service* you can do so by clicking on the following link<font color="#000000">:
Connect to the control panel by entering the IP address of the Linksys in the address bar of any Browser.
Then </font>**log** in by *entering your credentials*.
First you need to *configure the DNS of the device*. To do this, open the \[**Connectivity**] menu and then click on \[**Internet Settings**].&#x20;

Then click on the \[**Edit**] item next to *Type of Internet Connection* and choose the *connection mode of your connection*.
**PLEASE NOTE**: In this example, Static IP mode will be used. Should you wish to use, for example, *Automatic Configuration - DHCP*, then you would need to configure our DNS on the network's DHCP Server.

Fill in the various fields as follows:

- **Internet IPv4 address**: Enter your *Static Public IP*.
- **Subnet mask**: Enter the network mask of your connection.
- **Default gateway**: Enter the *IP of the default gateway* (usually the IP of the Router).
- **DNS 1**: Enter the *IP 185.236.104.104*.
- **DNS 2 (optional)**: Enter the IP *185.236.105.105*.
- **DNS 3 (optional)**: Leave the field blank.

Click on the \[**Ok**] button to save the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ZhzqCM4Ght4eOdPnd3V4n_image.png" size="50" width="963" height="606" position="center" caption="Compilations of the various connectivity items" alt="Compilation of connectivity and IP type" darkWidth="963" darkHeight="606" showCaption="true"}

To configure *Dynamic DNS service*, open the \[**Security**] menu and then click on \[**Apps and Gaming**].
Then select *Dyn.com* from the *drop-down menu next to Select a provider*: and configure the service as follows:

- **Username**: Enter the email/username of the Filter.
- **Password**: Enter your password.
- **Host Name**: Enter *ddns.name.com*.

Finally, click \[**Update**] to make the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/evizeXb3XIJx3w_rwcLMa_image.png" size="50" width="960" height="625" position="center" caption="Configuration of Dynamic IP" alt="Configuring and setting up Dynamic IP service" darkWidth="960" darkHeight="625" showCaption="true"}

At this point you can enable the *DHCP Server* so that it automatically assigns network parameters, including our *DNS*, to the various internal devices.
Then open the \[**Connectivity**] menu and click on \[**Local Network**].
Check **Enabled** next to **DHCP Server**, to enable the service, and then configure it with the parameters of your network.
Then enter the following *IPs in the Static DNS 1 and Static DNS 2 fields*, respectively:

-  *185.236.104.104*
- *185.236.105.105*

Finally, click \[**Ok**] to activate the service.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/U5lyZs9x4bq6jwVa74AtL_image.png" size="50" width="961" height="689" position="center" caption="DHCP Server" alt="Enabling DHCP server" darkWidth="961" darkHeight="689" showCaption="true"}

Alternatively, the DNS of the various devices within the network can be changed manually.

**Other ways to ask**:

- How to configure linksys router.
- Linksys router configuration. How to.


[title] Pro & ProPlus (cloned)
[path] /


[title] Legacy Platform
[path] /

# Legacy Platform Documentation

Technical resources for the **Classic Panel** (pre-2026 versions).

### Documentation Archive

| ### Section              | ### Topics Covered                                                                    |
| ------------------------ | ------------------------------------------------------------------------------------- |
| **DNS Protection**       | Standard content filtering, geo-blocking, and security features for the legacy panel. |
| **Router Configuration** | Setup guides for Mikrotik, Ubiquiti, and standard ISP routers using dynamic DNS.      |
| **ISP & MSP Tools**      | Management of multi-tenant structures and sub-accounts in the classic interface.      |
| **Legacy API**           | Documentation for API                                                                 |

:::hint{type="warning"}
**End of Life Notice** This documentation refers to the **Legacy Platform**. The migration to the **New Platform&#x20;**&#x69;s currently underway.

- **Status:** Active / Migration Phase
- **Scheduled End of Life:** 2026
:::


[title] Marketing Tools for Sales
[path] Pro & ProPlus/First Steps/

## Marketing Tools for Sales

We have developed a range of useful tools designed to increase filter sales, specifically created to help resellers grow their business.

## Promotional Link

Customize your website and communications with personalized links!
&#x20;Simply copy the link provided in the dedicated section — it is generated specifically for you. The page with the form will be personalized with your logo and details, and all conversions will be automatically linked to your main account data. [Go to the tool](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)

## Promotional Card

These are cards containing a PIN code that allows for a free 30/60-day activation, which you can include inside router boxes or use in your communications.
&#x20;Using the configurator, you can upload your logo, choose from 3 card sizes, and select the trial duration as well as the language. [Go to the tool](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)

## Promotional Email

An email marketing campaign in just 2 minutes! Create a personalized promotional email linked to a landing page with an information request form.
You can choose from different email templates tailored to various types of customers.
You can send the emails directly from the customer area or forward them to your email inbox and then send them to your clients. [Go to the tool](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)

## Graphic Materials

Here you can find a collection of official promotional materials that you can use in your communications. [Go to the section](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)

**Other ways to ask:**

- How to manage marketing tools.&#x20;
- Managing marketing tools: how to do it.&#x20;

[title] App Blocker
[path] Pro & ProPlus/Protection Configuration/

Through application blocking, it is possible to exclude, through certain modes, what are possible distractions for users. Applications such as video games, music, dating apps can create a waste of time in the work environment, consequently leading to a slowdown and lack of responsibility. The flexibility allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/n5wsqgtmRh_I5RiW5bECy_protection12.png" size="50" width="1236" height="780" position="center" caption="App Blocker table" alt="tabular demonstration of functionality" showCaption="true"}

## Macrocategory Customization&#x20;

The filter has macrocategories with subcategories of hazards more specifically within them.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/L1svCCvcNub-z7o4HQWE-_protection15.png" size="50" width="1233" height="255" position="center" caption="Blocking categories" alt="How to block categories" showCaption="true"}

The *entire macrocategory* can be locked to not allow any of the categories below it to pass through the filter by clicking on the gray "*Always Lock*" circle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/QpR0VA82Ax6utOeFW4iRs_protection14.png" size="50" width="1236" height="780" position="center" caption="Blocking macrocategories" alt="How to blocking Macrocategories" showCaption="true"}

## <font color="#ff361d">Category Customization </font>

Ability to extend the group, *individually blocking each category at will*, thus having more freedom with respect to content.

In case there are individual items within a macrocategory that are blocked and others that are not, graphically a green half-circle under "*always allowed*" and a red half-circle under "*always blocked*" will be displayed, indicative of a custom category filter.

## Schuduling Blocks&#x20;

Ability to schedule blocks and elements, prohibiting access to certain content only within a time slot, *fully customizable by the user by selecting start time*, end time, and filter repetition.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0kBHwtNtWSN-JvmnAb_iE_protection16.png" size="50" width="1235" height="547" position="center" caption="Scheduling " alt="Schedule App blocker" showCaption="true"}

Clicking "*insert*" will apply the filter as desired, and the icon shown from the menu will take the form of a yellow clock in the block scheduling part.



**Other ways to ask**:

- How to use AppBlocker.
- AppBlocker. How to use it.


[title] DNS Proxy configuration
[path] Pro & ProPlus/Granular Protection and Active Directory integration/DNS Proxy Setup/

Activate the *DNS proxy and enter the login credentials*, which are as follows:

-  **Login**: enter admin and press Enter.
- **Password**: enter dnsproxy and press Enter to confirm.

**NOTE**: The password is not displayed because Linux hides it.

A list of tasks to be performed to configure and test the virtual machine will be displayed. *Proceed as follows*:

-  If you want to change the system name, type 1 and press Enter to confirm. Type "y" and type the name you want to use.

Type 2 to change the network settings:

- **Network Name**: you can press Enter to use the default interface name (CloudBox) or choose a new one and press Enter.
- **IP Address**: enter the free private IP you want to assign to the DNS proxy Ethernet interface.
- **Subnet**: you can press Enter to use the default subnet mask (255.255.255.0) or choose a new one and press Enter.
- **Network**: enter the IP of the network, then press Enter. NOTE: If you have, for example, the network 192.168.1.0/255.255.255.255.0, the network will be 192.168.1.0.
- **Gateway**: Type in the network gateway and press Enter.
- **MTU**: You can leave the default MTU value (1500) or choose a different one.
  Then press **Enter**.

Type T to perform some ping tests. Enter a domain, such as www\.google.com, and press *Enter*.
If it works, you can continue, otherwise check the network settings (step 2).

Enter 3 and press *Enter* to configure it:

- **Enter user name**: type the user name.
  Press Enter to confirm.

**IMPORTANT**: If you cannot type the @ symbol, you can use ALT + 64 (the left ALT on your keyboard).

- **Enter the password**: type in the filter password and press Enter.
  If everything is correct, you should see the word GOOD next to Status.
  If yes, you can continue to the next step; if not, try to verify the credentials and try again.
-  Enter Y to confirm and then restart the system using the R character.
- The *DNS Proxy has been configured correctly* and is now ready for operation.

To understand how to use the advanced tools, see the following guide:

[DNS Proxy - Advanced Tools](docId:0VZBVqdM_g9fsEdffiJAL)

After restarting the DNS proxy will automatically update to the latest version available, if it does not update go to the admin menu and restart the service by typing B and confirm.
The operation may take a few minutes, if the problem persists contact technical support.



**Other ways to ask**:

- DNS proxy configuration.
- Configure DNS proxy. How.


[title] ClientShield Troubleshooting
[path] Pro & ProPlus/Remote End-Points/ClientShield remote agent configuration/ClientShield for Windows/

## To quickly solve the problem, carefully read the guide that shows the error code:&#x20;

### Error: code 100&#x20;

This error means that the *client cannot connect to Windows services*.
The Internet Protection Service may be disabled or blocked due to incompatibility with other programs.
If there is a problem, the service will be restarted automatically every minute.

**Troubleshooting:**
To manually restart the service, proceed as follows:
1\. Go to "Start" > "Run" > "Services.msc" (run it as administrator).
2\. Locate "Internet Protection Service" in the list of services.
3\. Right-click on the name of the service and then "Restart".
4\. Check the status in the right-hand column.

### API Connection Failed&#x20;

ClientShield fails to establish a connection to our Internect Protection infrastructure.
If the connection to our API has failed multiple times, ClientShield will block the VPN tunnel because of this failure.
This problem may be caused by an unstable Internet connection or a wrong network configuration.

### <font color="#0C121D"></font>

ClientShield fails to establish a secure connection with our *Internect Protection infrastructure.*


- Once the Prompt is open, type "telnet 185.236.104.104 1194" (test it for "185.236.105.105" as well).
- **VerifyProblem Solving**:
  Check whether port 443 is allowed outbound to "185.236.106.106" in this way:
  1\. Go to "*Start*" > "*Run*" and type "*cmd*".
  2\. Once the prompt opens, type "telnet 185.236.106.106 443" and press "*Enter.*"
  3\. Check if the connection is rejected, accepted, or if there is a timeout.
  4\. If the connection is "*refuse*d," it means that port 443 is blocked, perhaps due to a wrong network configuration or third-party software blocking it in the PC.

### Door 443 Closed&#x20;

ClientShield detected that outgoing port 443 to "185.236.106.106" is closed.

**Troubleshooting**:
Check whether port 443 is allowed to "185.236.106.106."
1\. Go to "Start" > "Run" and type "cmd."
2\. Once the prompt opens, type "telnet 185.236.106.106 443" and press "Enter."
3\. Check if the connection is rejected, accepted, or if there is a timeout.
4\. If the connection is rejected, port 443 is blocked, possibly due to a wrong network configuration or third-party software blocking port 443 in the PC.

### Door 1194 Closed&#x20;

ClientShield has detected that outgoing port 1194 to 185.236.104.104 or 185.236.105.105 is closed.
This problem could be caused by a firewall in the network blocking that port.

**Troubleshooting**:
Check whether port 1194 is allowed outbound to "185.236.104.104" and "185.236.105.105." Check the following steps:
1\. Go to "*Start*" > "*Run*" > and type "*cmd*".
icate if the connection is rejected, accepted or if there is a timeout.
4\. If the connection is "refused," the 1194 port is blocked, possibly due to incorrect network configuration or third-party software.

**Domain resolution failed:**
ClientShield fails to resolve domains correctly.
Make sure the PC has configured a *valid DNS server by checking the PC's "TCP/IP" settings*.

**Other ways to ask**:

- How to troubleshoot.
- Troubleshooting. How to.


[title] DNS Proxy Setup
[path] Pro & ProPlus/Granular Protection and Active Directory integration/

## Introduction

The DNS on-premis proxy has been certified to work only on a virtual machine environment. Any physical installation is discouraged and not supported.

## The configuration of DNS Proxy&#x20;

It is responsible for redirecting DNS requests to the relevant profile in the cloud, based on the user/group, by synchronizing the public IP of the network with our global infrastructure.

## The distribution of DNS Proxy&#x20;

The following are the minimum requirements for the virtual machine:

- **Memory**: 4 GB RAM
- **Number of CPUs**: 2
- **Disk space**: min. 10 GB

**Note**: The above parameters are set automatically when the image is imported.

Follow the guide according to your level of virtualization:

- [Hyper-V Configuration Guide](docId\:DwGS46UIh63qhLMfHBnOF)&#x20;
- [VMware configuration guide](docId\:z1MCI9Rg9BhtQ9zrEoiBu)&#x20;
- [Proxmox configuration guide](docId:0NGlshP_W_RzOhGKxSqm3)**&#x20;&#x20;**&#xD;
- Alternatively, you can [download the ISO of DNS Proxy](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=iso_dnsproxy).

DNS Proxy Configuration


Now it is time to configure the DNS Proxy with the configuration parameters: [DNS Proxy configuration](docId\:ngj9T8ZXKzagKGE1npmog).

**Other ways to ask**:

- DNS proxy configuration.
- Configure DNS proxy. How.


[title] Geoblocking
[path] Pro & ProPlus/Protection Configuration/

Through Geoblocking protection it is possible to block, through certain modes, what is all Internet traffic from specific areas of the world. The flexibility of platform's DNS filtering allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/FzKpq8A7IlTTVKTZUHCuG_protection24.png" size="50" width="1243" height="832" position="center" caption="Geoblocking" alt="Geoblocking protection's visual" showCaption="true"}

## Macrocategory Customization&#x20;

The filter has macro-zones with cities and areas more specifically inside.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/WYVpELBaQe44BQRHpEGfH_protection26.png" size="50" width="1243" height="832" position="center" caption="Blocking Macrocategories" alt="How to block Macrocategories" showCaption="true"}

The *entire macrocategory* can be blocked from allowing any of the cities below to pass through the filter by clicking on the gray "*Deny*" circle.

## Category Customization&#x20;

Ability to extend the group, *individually blocking each city at will*, thus having more freedom with respect to content.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/KRJ8OiGOxDiCin87AR5iK_protection27.png" size="50" width="1235" height="497" position="center" caption="Block Categories" alt="How to block Categories" showCaption="true"}

In case there are individual items within a macro-area that are blocked and others are not, graphically a green half-circle will be displayed under "*Allow*" and a red half-circle under "*Deny*," indicative of a custom category filter.

Ability to extend the group, *individually blocking each city at will*, thus having more freedom with respect to content.



**Other ways to ask**:

- Geolocation-based protection.
- Geographic Restriction by Security.


[title] IP Blocking
[path] Pro & ProPlus/Protection Configuration/

Through blocking by IP, it is possible to deny threats directly by going back to the ip instead of the individual domain.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/LLgRtJYtB_XkinTo_335t_protection22.png" size="50" width="1240" height="231" position="center" caption="IP blocking " alt="How to enable IP blocking" showCaption="true"}

## Threats by IP&#x20;

This feature allows the user to block all domains that pass by a certain IP address. This allows the user to avoid hand-writing every domain that passes by that particular address.&#x20;

Clicking on the toggle slide will enable blocking threats by IP.

&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/I6qH1ojmVie0I1VN-tpzb_protection23.png" size="50" width="1242" height="230" position="center" caption="Block activation by IP" alt="Graphical demonstration of enabling IP blocking to recognize malicious addresses" showCaption="true"}

**Other ways to ask**:

- IP address filtering.
- IP address restriction.


[title] DoH and DoT Configuration (cloned)
[path] Pro & ProPlus/Remote End-Points/DoH and DoT Protocol Configuration/

&#x20;This page will explain the method of adding a DNS over HTTPS (DoH) network in order to complete a more secure DNS resolution thanks precisely to the HTTPS protocol, further protecting user privacy.
&#x20;
By clicking on "*Networks*," you will have a block where active networks will be listed, as well as other settings.
The item needed for DoH configuration is *DoH Networks*.

Within DoH Networks, previously configured *DoH networks* (if there are any) will be visible, with the option to delete them or copy the DoH URL.

Clicking instead on "*New Network*" will give you the option of creating a new Network.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/eWqCtZdvNGYaKIZNmf7Wk_dotgen1.png" size="50" width="1242" height="362" position="center" caption="New Network" alt="Adding a new network cofiguration" showCaption="true"}

Before creating a new network, it is necessary to define whether the network will be created in the profile in which we are at the time of creation or whether we want to install it in a different profile created.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ZSjO2GFQ0geR0VRdyYuVs_dotgen2.png" size="50" width="1225" height="336" position="center" caption="Profile selected" alt="Select your profile " showCaption="true"}

You can choose from several options, the item inherent in this guide is " Connect a DoH / DoT network (DNS over HTTPS / DNS over TLS)".

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/pZhnkM7HT5lKaVB4p2WhP_image.png" size="50" width="1220" height="448" position="center" caption="Connection to Doh/DoT" alt="Network setup and connection to Doh/DoT." showCaption="true"}

Then select "*configure DoH/DoT network* ".
Confirm this with the green "Continue" button.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/aB99riA7-6N7Po8Xspp9b_image.png" size="50" width="1225" height="537" position="center" caption="DoH/DoT configuration activation" alt="DoH/DoT configuration activation via DoT and DoH setting." showCaption="true"}

Once done, the system will provide a URL, and going back to the list of DoH and Dot Networks, we will see the new network configured.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/zCJ5wh3OzUHDwOe4eCsvO_image.png" size="50" width="1220" height="322" position="center" caption="DoH and DoT address" alt="Obtaining DoH and DoT addresses and configuration completed" showCaption="true"}



**Other ways to ask**:

- How to configure DoH and DoT.
- Configuring DoH and DoT. Let's see how.


[title] ClientShield for IOs
[path] Pro & ProPlus/Remote End-Points/ClientShield remote agent configuration/

Download the app from the Apple Store through the following link: <font color="#0C121D">

Once the installation process is finished, follow the instructions to activate the filter on your own mobile. </font>



**Other ways to ask**:

- How to configure ClientShield for iOS.
- ClientShield configuration for iOS. How to do it.


[title] Tool: time zone change
[path] Pro & ProPlus/FlashStart's advanced configurations/

The *Time Zone tool* allows you to change the time zone by selecting the desired country from the list and then clicking on \[*CONFIRM AND CONTINUE*>>].

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/bhcwjHsivsJNxgzGgR-_g_image.png" size="50" width="1068" height="246" position="center" caption="Time zone change " alt=" Time zone change confirmation and continue" showCaption="true"}

**Other ways to ask**:

- How to change the time zone.
- Time zone change. How to.


[title] Tool: statistics infrastructure
[path] Pro & ProPlus/FlashStart's advanced configurations/

The *Infrastructure Statistics tool* allows you to view *the status of the various Data centers*, which can be:

- **Operational**: Running smoothly.
- **Partially operational**: DNS resolution is guaranteed however Filters may be temporarily disabled.
- **Offline**: Data center turned off or otherwise not usable that will be rehabilitated shortly.
- **Under Maintenance**: Data center turned off for maintenance purposes (e.g., upgrades) and will be reactivated once changes and checks are completed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/9OQrmy4y7WwlZwAUAuym6_image.png" size="50" width="787" height="545" position="center" caption="Data center statistics" alt="Data center statistics with node definition and last update" showCaption="true"}

**Other ways to ask**:

- How to set infrastructure statistics.
- Infrastructure statistics settings. How to behave.


[title] First Steps
[path] Pro & ProPlus/

### How to start surfing safely with Internet Protection through simple first steps.

## Create an account

If you have not already done so, you need to [create an account](docId\:OuM9fs0rFPxm84hOwHxJ8) on our platform that will allow you to access all functions and manage your [licenses](docId\:OuM9fs0rFPxm84hOwHxJ8).

## Try protection for Free

Each user can take advantage of a [free trial](https://flashstart.com/landing-free-trial/) (no obligation) to test the potential of the filter and browse safely. Resellers can activate a trial for each customer.

## Buy Licenses

On the platform you will find a section dedicated to [price lists](https://flashstart.com/landing-get-quote/) with prices calibrated according to the market and the country you are in. Retailers will be able to browse a wide range of proposals to do business with the product.

## Set up your protection

Now you are ready to optimize protection according to your needs. After completing the [initial configuration](docId\:F0jvtTxZucF8qu9OdfxzZ) phase and entering DNS, you can select your blacklist, whitelist, geographic protection, and report preferences.

**Other ways to ask:**

- Initial Guide to Effective Security Management.
- Approaching Protection: Beginnings to Effective Management.

You got it! To make the text about "First Steps" twice shorter while still covering "why it's important" and "who benefits," here's a highly condensed version you can place before the footer:



### Find Out Also Your Essential Path to Online Protection

In today's cyber landscape, proactive defense isn't an option—it's a necessity. The platform offers immediate, powerful DNS filtering to protect against growing threats like ransomware and inappropriate content, ensuring a secure and reliable online experience.

**Who Benefits?**

- **Businesses:** Protect data, prevent breaches, and boost productivity.
- **Schools:** Ensure safe learning environments and meet compliance.
- **MSPs & ISPs:** Offer leading security solutions to clients effortlessly.
- **Individuals:** Gain peace of mind with protection across all devices.

These first steps provide the foundation for comprehensive, fast, and customizable internet security. Create your account, try the free protection, secure your licenses, and easily configure your tailored defenses for complete control and safety online.


[title] License management
[path] Pro & ProPlus/

License management is an extremely important yet simple task. It is essential to keep track of the licenses associated with your account so that users always have full control through simple steps and tools provided.

## License Summary

Once you enter the **Licenses** section from the Customer Area, a summary of the licenses associated with your account will appear:

- **Active Licenses**&#x20;
- **To Be Activated**&#x20;
- **Trial Activated**&#x20;
- **Expired Licenses**&#x20;
- **Renewed Licenses**&#x20;

It is also possible to retrieve important information and details about any license, with the option to cancel a dismissed license.

## License Allocation and Credit Management

To assign licenses to customers, you must have **available credit** (previously purchased).

The available credit is visible at the top-right of your **Customer Area**.
&#x20;Prepaid credit **does not expire automatically** and can be used to assign both **Single Cloud Licenses** and **Cloud Bulk Licenses** to your clients.

Credit can also be used to assign **free Trial licenses** (maximum 2 per client).

## Credit Validity and Service Continuity

To keep your Reseller account active and continue using the platform, including the ne&#x77;**&#x20;Internet Protection 2026**, it is necessary to perform a **credit top-up**, even with a minimal amount.

By topping up:

- The entire balance will be **preserved**&#x20;
- The credit validity will be **extended by 12 months**&#x20;
- The extension applies to both the **newly added amount** and the **existing credit balance**&#x20;

No specific amount above the **system minimum** is required.
&#x20;This ensures continuous use of the Reseller Platform and supports the development of Internet Protection 2026, designed for **MSPs, ISPs, and System Integrators**.

## License Continuity and Migration to the New Platform

Existing licenses for clients will **continue to operate normally**.

- From **January 24**, you can choose when to migrate one or more licenses, even gradually, **until March 31**&#x20;
- From **April 1**, all licenses still active on the old platform will be **automatically migrated**&#x20;

No service interruption or device reconfiguration is required.

If credit expires on the same day as End User licenses, these licenses will still be **renewed normally**.

## Credit Renewal

To preserve and extend your available balance, perform a [top-up online before the expiration date](https://cloud.flashstart.com/customerarea/pricelist).
To extend validity and keep your credit active, a **top-up online** is recommended.

## Useful FAQs

**What is the minimum top-up amount required?**
&#x20;The top-up amount is at your discretion. To extend credit validity, a **minimal top-up** is sufficient. No amount above the **system minimum** is required to extend the 12-month validity of the existing balance.

**Does the 12-month validity apply only to the top-up or to the entire balance?**
&#x20;The 12-month validity applies to the **entire available balance**. By performing a top-up (even minimal), the new 12-month expiration will start from the date of the top-up and will apply to both the newly added amount and your **existing credit**, ensuring continuity and usability.

**Why the platform has introduced this annual minimum top-up condition?**
&#x20;This condition is a **standard commercial and operational measure** on the new platform, aimed at ensuring continuous use of the Reseller Platform and supporting the investments needed for the launch of Internet Protection 2026.
&#x20;It allows to maintain **zero fixed costs** for the platform while providing a continuously evolving product.

**When and how can I migrate?**
&#x20;From **January 24**, you can choose when to migrate one or more licenses, even gradually, **until March 31**.
&#x20;From **April 1**, all licenses still active on the old platform will be **automatically migrated**.
&#x20;No service downtime or reconfiguration is required.

**What happens if the credit expires on the same day as End User licenses?**
&#x20;In this case, End User licenses expiring on the same day as the credit will be **renewed normally**, without service interruption.

## Allocation of license&#x20;

To assign licenses to customers, it is necessary to have a *credit (previously bought)*.
You can see your credit on *top-right* of your Customer Area.
Prepaid credit will never expire and you can use it to assign both single and Bulk license to your Customers.

Purchased credit never expires and can be used to assign [Single Cloud Licenses](docId:_7x1I7FPWhR3BzpVynusw) or [Cloud Bulk licensing](docId:9mCTl-4CtHRzqXo_TbcGc) to your Clients.

You will also be able to allocate free Trial licenses (maximum 2 per client).
[Show more about licenses](docId\:P7NSjltVsR_HcRliElEqw).

### Other ways to ask:

- How to manage licenses.
- License management. How?


[title] The DoH and DoT configuration in Android devices
[path] Pro & ProPlus/Remote End-Points/DoH and DoT Protocol Configuration/

DoH and DoT configurations are not always possible.
In the specific case of Android devices, it is necessary to have the Android 9 operating system in order to configure DoT.&#x20;
**PLEASE NOTE**: There is still no implementation of DoH configuration.

To enable DoT in an Android dispotive, it is necessary to open the general settings and, consequently, select the "connection and sharing" item.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/k6UsZHxx_M-9mwzJOiY7p_image.png" size="30" width="1080" height="2400" position="center" caption="Settings configuration" alt="inizial page of android settings" showCaption="true"}

Within connection and sharing you will be able to select private DNS.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/5SVkAUR8_VYqJq3XXR3Dz_image.png" size="30" width="1080" height="2400" position="center" caption="Private DNS Selection" alt="Selecting the Private DNS entry within Connection and Sharing" showCaption="true"}

Basically in all phones, private DNS will be disabled.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/hYVwvxE0aTTBDk1oKyQlQ_image.png" size="30" width="1080" height="2400" position="center" caption="Private DNS" alt="Standard setting of private DNS" showCaption="true"}

To change DNS from off, you need to click on *designed DNS*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Cku88qLAtHPJJIJO-R1GL_image.png" size="30" width="1080" height="2400" position="center" caption="Setting Designated Private DNS" alt="Setting Designated Private DNS to Change DNS" showCaption="true"}

For DoT to work properly, the DNS designed will require us to have a certain address.  So we will need to *enter the address that we obtained by activating the designed DNS from the customer Area*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/1D7q-wmWOM3MBoNF2fq3k_image.png" size="30" width="1080" height="2400" position="center" caption="DoT address entry" alt="Designated private DNS DoT" showCaption="true"}

**Other ways to ask**:

- How to configure DoH and DoT on Android devices.
- Configuring DoH and DoT on Android devices. Let's see how.


[title] Content filtering
[path] Pro & ProPlus/Protection Configuration/

Through Content Filtering it is possible to block, through certain modes, those that are *distracting sites, sensitive content and more*. The flexibility allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/OW9Uw6Au5w6h6e_phOG8C_protection7.png" size="50" width="1246" height="427" position="center" caption="Content Filtering table" alt="Demonstration of functionality" showCaption="true"}

## Macrocategory Customization&#x20;

The filter has macrocategories with subcategories of hazards more specifically within them.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/dYaEvmILVKuHuKiecjXTR_protection8.png" size="50" width="1241" height="487" position="center" caption="Category customization" alt="List of Categories " showCaption="true"}

The *entire macrocategory&#x20;*&#x63;an be locked to not allow any of the categories below it to pass through the filter by clicking on the gray "*Always Lock*" circle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/LWYr-i5box0MkoCcc4McC_protection9.png" size="50" width="1246" height="427" position="center" caption="Blocking macrocategories" alt="How to block Macrocategories" showCaption="true"}

## Category Customization&#x20;

Ability to extend the group, *individually blocking each category at will*, thus having more freedom with respect to content.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/R31eHGVhbX5GJP5ViCsPl_protection10.png" size="50" width="1241" height="487" position="center" caption="Blocking categories" alt="How to block categories" showCaption="true"}

In case there are individual items within a macrocategory that are blocked and others that are not, graphically a green half-circle under "*always allowed*" and a red half-circle under "*always blocked*" will be displayed, indicative of a custom category filter.

## Scheduling Blocks&#x20;

Ability to schedule blocks and elements, prohibiting access to certain content only within a *time slot,* *fully customizable by the user by selecting start time*, end time, and filter repetition.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/wgfBzba6iI69eEEYel-JV_protection11.png" size="50" width="1242" height="717" position="center" caption="Scheduling of Protection Blocks" alt="Scheduling Table of Protection Blocks" showCaption="true"}

Clicking "*insert*" will apply the filter as desired, and the icon shown from the menu will take the form of a yellow clock in the block scheduling part.



**Other ways to ask**:

- Content filtering management.
- Content filtering. How to manage them.


[title] Personal BlackLists
[path] Pro & ProPlus/Protection Configuration/

The BlackListing system allows the user to manually enter domains that will be blocked even if they are located within a browsable category.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/hSK0jsfe1hzj_iZNrkPhI_protection31.png" size="50" width="1243" height="211" position="center" caption="Blacklist " alt="List of Blacklist" showCaption="true"}

Ability to both BlackList certain domains in the current profile and make them unavailable in any user profile.

Ability, once the domain to be blocked is written, to specify the category of the address as well as an optional comment.&#x20;
Otherwise, you can skip this process by blocking the domain without putting it in a category.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/WNu-u4STycRBLiAP1qynh_protection32.png" size="50" width="803" height="502" position="center" caption="Site classified" alt="Selected category of the site that you have classified" showCaption="true"}

Ability, once the domain to be blocked is written, to specify the category of the address as well as an optional comment. Otherwise, you can skip this process by blocking the domain without putting it in a category.



**Other ways to ask**

- Catalog of personal restrictions.
- Custom excluded list.


[title] Tool: Stop page
[path] Pro & ProPlus/FlashStart's advanced configurations/

Thanks to the Customize stop page tool, it is possible to customize the filter block page, which appears every time the user tries to access a blocked website.&#x20;
Once you open the customization page, you’ll see all the profiles available in the account. By default, every profile is assigned the global block page, which can be modified by clicking on the customize button on the right (1).
Moreover, you can activate for each profile the Use a customized block page option, in order to use a different page instead of the one suggested by default (Global block page).&#x20;

Therefore, click on the Customize button to set up the customization (**1/2**).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/XGXvxvp5iTwKlX33-PFA6_image.png" size="50" width="976" height="370" position="center" caption="stop page" alt="customize stop page" showCaption="true"}

At this point, you will be able to choose whether to use a custom block page or, alternatively, redirect the user to an external page.&#x20;

In the first case (Customize the stop page), you will have different options, which you can select by clicking on the pencil symbol close to each of them:
**1.** It will be possible to modify the block heading by choosing to show the client’s name or else the profile’s name.
**2.** You will be able to modify the block image, importing it from your device.&#x20;
**NOTE**: The image must be in PNG, JPG or JPEG format and the maximum dimension allowed is of 300px width and 300px height.&#x20;
Finally, click on Save to confirm your choice.&#x20;
**3.&#x20;**&#x49;t is possible to add your own message, which will appear below the image that has been previously uploaded.&#x20;
**NOTE**: the added text will not be translated in all languages but will only be shown in the selected one.&#x20;
Confirm your choice by clicking on Save.&#x20;
**4.&#x20;**&#x4E;ow the system allows you to choose among three options:&#x20;
&#x20;   **a.** Hide the reason for the block: a generic message is shown instead of the specific reason for the block.&#x20;
&#x20;&#x20;**&#x20; b.&#x20;**&#x53;how the reason for the block: the complete reason for the block is shown (e.g. Website in  Phishing, Cracks and warez blacklist).
&#x20;   c. Don’t show anything: the entire section is removed from the block page.
**5.&#x20;**&#x42;y enabling suggestions with the first button, users will have access to a forum where they can ask the network administrator to unblock specific websites.&#x20;
Moreover, the second button allows you to input additional details such as the reason for the block and the name of the user who requested access to the blocked website.&#x20;
Finally, click on Save to confirm your choice.&#x20;
**6.** With this function, you will be allowed to upload your logo directly from your device. It will appear at the end of the block page.&#x20;
NOTE: The image must be in PNG, JPG or JPEG format and the maximum dimension allowed is of 300px width and 100px height.
Finally, click on Save to confirm your choice.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/yxjKQydkheAG5MCal5Nad_image.png" size="50" width="975" height="678" position="center" caption="Customize" alt="Customize the stop page for the profile Default" showCaption="true"}


In the second case, Redirect to an external page, you will be able to redirect the user to an external website. Therefore, you shall add the complete url of the chosen page, including http/https.
Click on Apply to confirm your choice.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/uhrIrPrt-W-_e3Z3FWwaH_image.png" size="50" width="980" height="424" position="center" caption="Redirect " alt="Redirect to an external page" showCaption="true"}

In conclusion, [here is a guide](docId\:XB1PSLHW05sn3GLcLcWiv) that provides an effective solution to ensure that the blocking page responds correctly to all clients, even when there are restrictions that prevent direct entry of IP addresses in the “Networks” section. By following these steps, it will be possible to maintain safe and reliable traffic control, adapting to system restrictions without compromising functionality.

**Other ways to ask**:

- How to manage advanced settings.
- Managing Advanced Settings. How to.


[title] DNS Proxy Setup
[path] ISP Lite & Premium/ISP and WISP Setup Guide/Cloud and local DNS cache/

## The configuration of DNS Proxy&#x20;

It is responsible for redirecting DNS requests to the relevant profile in the cloud, based on the user/group, by synchronizing the public IP of the network with our global infrastructure.

## <font color="#ff361d">The distribution of DNS Proxy </font>

The following are the minimum requirements for the virtual machine:


- **O.S.**: Linux 64 bit generic
-  **Memory**: 4 GB RAM
- **Number of CPUs**: 2

**Note**: The above parameters are set automatically when the image is imported.

Follow the guide according to your level of virtualization:

-  **Hyper-V** Configuration Guide
-  **VMware** configuration guide
-  **Proxmox** configuration guide

Alternatively, you can [download the ISO of DNS Proxy](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=iso_dnsproxy).

<font color="#ff361d">DNS Proxy Configuration</font>
-------

Now it is time to configure the DNS Proxy with the configuration parameters:

[DNS Proxy configuration](docId\:ngj9T8ZXKzagKGE1npmog).

**Other ways to ask**:

- DNS proxy configuration.
- Configure DNS proxy. How.


[title] Custom RPZ Blacklist Insertion
[path] ISP Lite & Premium/ISP and WISP Setup Guide/

The Import RPZ lists service allows the importation of custom RPZ lists onto the DNS Proxy.

File variation checking and possible importation are performed every 30 minutes.

To manage the service, access the admin panel at A Advanced configuration » \[Z] - Import RPZ lists

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/LCKz7CXa9GAk7Qj61ttSI_menu-import-rpz-1.png" size="90" isUploading="false" width="405" height="262" darkWidth="405" darkHeight="262" showCaption="false"}

It is advisable to block Proxy & Bypass Filters on the Cloud panel for the proper functioning of RPZ policies.



![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0W61E7dqjWUW4XWPadM_9_image-13.png)

## Initial configuration

1. Access the Import RPZ list menu.
2. Enable the service by typing y and pressing ENTER.
3. On the next screen, type y and press ENTER to create the fsupload user.
4. On the next screen, type Y and press ENTER to proceed with entering the password for the fsupload user.

It is always possible to change the password from the Change fsupload password menu.

## How to import an RPZ list

To import an RPZ list, it is necessary to use an SFTP client.

## SFTP access parameters

![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/7vKOttcmU5o8heRBeu2Vu_import-01.jpg)

Standard access mode: connect with any SFTP client using the listed parameters and the password chosen during configuration.

SSH key access mode enable the access mode from the Change configuration menu and insert the SSH keys of the machines authorized to access via the Manage SSH Keys » Add key menu.

## Supported list formats

The following formats are supported:

- Standard RPZ zone file
- Domain List

## Standard RPZ zone file

Standard RPZ file with Policy Triggers and Policy Actions RPZ zone example

![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/qLp6ZLt0FMsOFPW3GyZzX_inserimento-blacklist-rpz-personalizzate-02.jpg)

Domain List It is possible to import a list of domains to block and define the policies of the list. The policy definition must be inserted on the first line respecting the following format:

Variable definition

- block\_type indicates the block type, insert one of these values.
- block the domain is blocked with a Not-existent domain error.
- send\_to\_ip the domain is resolved with the IP indicated in destination.
- send\_to\_domain the domain is resolved with the domain indicated in destination.
- destination mandatory if block\_type is send\_to\_ip or send\_to\_domain, indicates the IP or domain it must resolve to.

Example file with resolution to the example.com domain&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/3bZ6zfMhGLiAh_sR4kr5g_rpz011.jpg)

## RPZ insertion into the configuration

- Access the machine via sftp with the fsupload user.
- Access the fsupload/rpz/ folder.
- Upload the file with the .load extension.
- Wait for the procedure timing or, to execute the import immediately, access the Check RPZ lists now menu.

## RPZ removal from the configuration

- Access the machine via sftp with the fsupload user.
- Access the fsupload/rpz/ folder.
- Remove the file with the .db extension.
- Wait for the procedure timing or, to execute the removal immediately, access the Check RPZ lists now menu.

## Import error check

- Access the machine via sftp.
- Access the fsupload/rpz/ folder.
- Download the file with the .error extension and remove it from the folder.
- Open the file with a text editor and scroll to the end of the file to verify the error.
- Correct the file and retry the RPZ insertion into the configuration.

## List import example

The example below shows the import of an RPZ file using the sftp command, available on both Windows and Linux, in SSH key access mode. Note: upon first access, authorization to access is requested, type yes and press ENTER.&#x20;

![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/g7ZHH6UZHUjs0HONl39_L_inserimento-blacklist-rpz-personalizzate-03.jpg)

## Import RPZ List Menu

Disable service / Enable service

Access the menu to deactivate or activate the RPZ import service.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/k6I2-umAnA2A85wrH82H7_inserimento-blacklist-rpz-personalizzate-05.jpg" size="80" isUploading="false" width="453" height="300" darkWidth="453" darkHeight="300" showCaption="false"}

## Disable service

1. Access the \[D] - Disable service menu.
2. Type y and press ENTER to confirm the deactivation.

## Enable service

1. Access the main Import RPZ lists menu.
2. Type y and press ENTER to confirm the activation. Note: if the fsupload user was not present, it will be created and configured

## Change configuration

Enable access via public SSH key

1. Access the \[C] - Change configuration menu.
2. Type y and press ENTER to prepare access.
3. Type y and press ENTER to immediately manage the enabled SSH keys, or type n and press ENTER to return to the Import RPZ lists menu. It is possible to manage the enabled SSH keys from the menu.

## Manage SSH Keys

Through this menu, it is possible to manage the SSH keys authorized to access.

1. Access the \[M] - Manage SSH Keys menu

## View authorized keys

1. Access the \[V] - View authorized keys menu.
2. If there are multiple SSH keys, the system divides the display into blocks, press the spacebar to view the next block.

## Add key

1. Access the \[A] - Add key menu.
2. Enter an identification name for the key and press ENTER, only letters, numbers, and the \_ character are allowed. This name will be used for the deletion of the key.
3. Insert/Copy the SSH key of the machine authorized to access and press ENTER.

## Delete key

To delete an SSH key, it is necessary to know the identification name given to the key during insertion. If you do not remember the name, it is possible to view it via the Manage SSH Keys » View authorized keys menu.

1. Access the \[D] - Delete single key menu.
2. Enter the identification name of the key to be deleted and press ENTER.

## Clear all keys

Through this menu, all SSH keys will be deleted:

1. Access the \[C] - Clear all keys menu.
2. Type y and press ENTER to confirm the deletion.

## Change fsupload password

1. Access the \[P] - Change fsupload password menu
2. Type Y and press ENTER to proceed with entering the password for the fsupload user.

## Check RPZ lists now

The checking of the lists to import is performed automatically every 30 minutes; if execution is necessary, access this menu.

1. Access the \[I] - Check RPZ lists now menu.
2. Type y and press ENTER to confirm the check.
3. At the end, the system will show the current import status.

## View RPZ lists import status

1. Access the \[S] - View RPZ lists import status menu
2. Type y and press ENTER to confirm.

## Legend

- Last check/Last import » last check performed
- Last check: indicates that the check was performed but no variations were present.
- Last import: indicates that the check was performed and variations were applied.
- Loaded » RPZ lists successfully loaded into the configuration file with a .db extension.
- To be parsed » RPZ lists to be checked by the system file with a .load extension.
- To be removed » RPZ lists to be removed, they are loaded in the configuration but the .db files are no longer present in the folder.
- Error » RPZ lists that were checked but generated an error and were not loaded in the configuration file with a .error extension.

[title] Cloud and local DNS cache
[path] ISP Lite & Premium/ISP and WISP Setup Guide/

## Cloud and Local DNS Cache&#x20;

This environment is ideal for larger ISP networks and can scale up to a high number of QPS (queries per second).

It consists of a *cloud configuration* and an *on-premises local DNS cache (called DNS Proxy)* to ensure low response times and high cache speeds.

It can be run as a virtual machine, with a pre-configured *VM template for Vmware, Hyper-V and Proxmox.*

You can find more information on configuring [DNS Proxy Setup](docId\:iKT2bkWdeaoEl5hzuSlCf).

The DNS Proxy can also be added later to a Cloud Puro environment, and users can be migrated gradually from Cloud DNS IPs to the DNS Proxy IP.

As in the Cloud Puro method, we suggest creating NAT rules to forward DNS requests to the DNS Proxy IP.

In this case, you must redirect all DNS requests except those coming from the DNS Proxy IP (to avoid loops in the network).

**NOTE**: If you are using a Mikrotik router, you can find more information here:
[Mikrotik for ISP: NAT rules to DNS Proxy](docId\:mVJ7WxSSCtMEp9fNaaGt2)

## Streaming DNS issue resolution (e.g. Netflix)

Sometimes, problems can occur in some parts of the world when accessing websites that use CDNs to distribute audio and video content worldwide. These problems may occur due to the geographical restrictions of the CDN.

You can easily solve the problem by forwarding CDN-related domains directly to the main servers, overriding normal DNS behavior.&#x20;

You can find more information by [clicking here](docId:6DKnpyoH9AiCq_r0aKXC5).

**Other ways to ask**:

- Configuring Cloud and Local DNS Cache.
- Configuring Cloud and Local DNS Cache. How to.


[title] Mikrotik: NAT General Rules
[path] ISP Lite & Premium/ISP and WISP Setup Guide/Pure Cloud setup mode/

You can create **NAT rules on Mikrotik to automatically redirect all DNS queries** (**port 53 TCP and UDP**) to our datacenters.

Copy and paste the following commands into the *Mikrotik terminal*:

- /ip firewall nat
- add action=redirect chain=dstnat comment=internetprotection dst-port=53 protocol=udp to-ports=53
-  add action=redirect chain=dstnat comment=internetprotection dst-port=53 protocol=tcp to-ports=53
-  /ip firewall nat move \[/ip firewall nat find comment=internetprotection] 0
  \# Disable the use of Peer DNS.
-  /ip dhcp-client set use-peer-dns=no 0
-  /ip dns set servers=185.236.104.104,185.236.105.105
-  /ip dns set cache-max-ttl=5m

This will allow you to take advantage of *Mikrotik's cache*, improving network performance.



**Other ways to ask**:

- The operation of the general NAT rules for Mikrotik.
- The general NAT rules for Mikrotik. How to manage them.


[title] Netgear configuration
[path] Router Guides/

## Filter Configuration on Netgear&#x20;

If you have not yet registered for the service you can do so by clicking on the following link:<font color="#000000"> .</font>
Connect to the control panel by *entering the IP address of the Netgear* in the address bar of any Browser.
Then log in by entering your credentials.
First you need to configure the DNS of the device. To do this click on the \[Advanced] section and then open the \[**Installation**] menu.
Then click on \[**Internet Configuration**].
In the window that opens, look for the entry *DNS Address (Domain Name Server)* and click on Use these DNS servers.
Then enter the following addresses, respectively, "*185.236.104.104" "185.236.105.105"*
Click on the \[**Apply**] button to save the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/otR8B5AhbVfD1xkfLURWf_image.png" size="50" width="1319" height="604" position="center" caption="DNS Configuration " alt="Configuring the correct dns" darkWidth="1319" darkHeight="604" showCaption="true"}

To configure *Dynamic DNS service*, open the \[**Advanced Configuration**] menu and then click on \[**Dynamic DNS**].
Check the *Use a Dynamic DNS service* item and fill in the various fields as follows:

- **Service Provider**: Select www\.DynDNS.org.
- **Host name**: Enter any name you like. For example, enter the word Filter.
- **User Name**: Enter your registration email/username.
- **Password**: Enter your password.

**PLEASE NOTE**: The password was emailed to the address specified when registering for the Filter Cloud.
Finally, click \[**Apply**] to make the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/363a_upSnrpUPV03c0ArY_image.png" size="50" width="1324" height="612" position="center" caption="Dynamic DNS Configuration" alt="Dynamic DNS Settings and Configuration" darkWidth="1324" darkHeight="612" showCaption="true"}

At this point you can enable the *DHCP Server* so that it automatically assigns network parameters, including our DNS, to the various internal devices.
Then open the \[**Installation**] menu and click on \[**LAN Settings**].
Enable the *Use router as DHCP server item* and enter the *first and last IP of the DHCP range in the Start IP Address and End IP Address fields*, respectively.
**PLEASE NOTE**: The *DHCP Server will distribute the Netgear's IP as the only DNS*.
Since the *DNS of the Router* has been previously changed, setting our IPs will be used to resolve DNS requests. So the traffic will be filtered.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/wQyDGC-tGDzFulmfuFhxk_image.png" size="50" width="1318" height="603" position="center" caption="DHCP Server Configuration" alt="DHCP Server Configuration" darkWidth="1318" darkHeight="603" showCaption="true"}

Alternatively, the DNS of the various devices within the network can be changed manually.

## OPTIONAL: Deny DNS changes by users

It is possible to increase security by denying the user the ability to browse unfiltered, as a result of changing the DNS on their device.
To do this, proceed as follows:

- Open the \[**Security**] menu and click on \[**Firewall Rules**].
- At this point you need to create rules to block all traffic on *port 53 (DNS Service)*, both TCP and UDP, except those directed to our IPs.

Then click on the \[**+Add**] button and fill in the page as follows:

- **Services**: Choose the *DNS (TCP/UDP:53)* item from the drop-down menu.
- **Action**: Select ALWAYS Allow.
- **LAN Users**: Leave the Any item selected.
- **WAN Server**: Choose Unique Address.
- **Start**: Enter this IP 185.236.104.104.

Click \[**Apply**] to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/3p6nkRaVRnf0IcnSbKvLt_image.png" size="50" width="1317" height="607" position="center" caption="Firewall rules" alt="Firewall rule to deny user browsing from unfiltered" showCaption="true"}

Now we need to create another rule similar to the previous one except for the *IP address of the Start field*, which must be *185.236.105.105*.
Finally we need to create a rule to *block all DNS traffic directed to other IPs*, other than our own.

**Therefore, proceed as follows:**

- **Services**: Choose *DNS(TCP/UDP:53)*.
- **Action**: Select the *BLOCK* always item.
- **LAN users**: Leave *Any*.
- **WAN Servers**: Leave *Any*.

Then click the \[**Apply**] button to create the rule.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/dIrKshVngIQAZ4Y899EKc_image.png" size="50" width="1322" height="610" position="center" caption="Deny dns traffic " alt="Firewall rule to block external dns traffic" showCaption="true"}

**Other ways to ask**:

- How to configure NetGear router.
- NetGear router configuration. How to


[title] Router Guides/Integration📡
[path] /


[title] Engenius SD-WAN Router
[path] Router Guides/

This guide is intended to help Engenius SD-WAN Router (ESG) users integrate a security and content filter solution.

1\. When you have your router managed through Engenius Cloud, you will be    ready for its configuration.

2\. Go to the configuration section/Gateway/Interfaces

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/rxJOTupiBGrlpLQtMIBcZ_image.png" size="50" width="886" height="417" position="center" caption="Interfaces" alt="Section/Gateway/Interfaces" showCaption="true"}

3\. Enable the Engenius DDNS and assign a name ex: "example."

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/miYsmyjdW5xh9jSm1W9KZ_.blob" size="50" width="438" height="355" position="center" caption="DDNS Name" alt="Assign a name to the DDNS ex:&#x22;example&#x22;" showCaption="true"}

4\. Check that the changes have been applied correctly from the general panel of the Gateway

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/6MPI_V4Pj-5hP8bOf2IXs_.blob" size="50" width="566" height="142" position="center" caption="Check" alt="Check that the changes have been applied correctly" showCaption="true"}

5\. Go to your panel and make the following configurations:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/MwCfOnVRoX86of8qNV2S8_image.png" size="50" width="886" height="249" position="center" caption="Add new Network" alt="Add new Network" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/jkNIWIfczJD81zcn7zJ83_image.png" size="50" width="886" height="285" position="center" caption="Standard" alt="Select Standard" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/kVfYXVO1h8mjo7fT8gqP9_image.png" size="50" width="886" height="478" position="center" caption="Network's Router" alt="Connect your Network's Router" showCaption="true"}

Use the same domain that you have previously setup in your Engenius Gateway.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/mgq9-7c_5btg4cIGOi0-k_image.png" size="50" width="886" height="333" position="center" caption="Dynamic Host" alt="Type your dynamic host" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/IRRWAoA44N9MXzftwzdvY_imm.png" size="50" width="886" height="333" position="center" caption="choose dynamic" alt="choose dynamic host and confirm" showCaption="true"}

In case we are unable to resolve your public IP address, wait a few minutes for the DNS to propagate correctly.

1\) Go back to our Gateway and assign the DNS of Flahstart:

185.236.104.104

185.236.105.105

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/tqJ3hjerlQ_svf-g_DM4H_image.png" size="50" width="886" height="490" position="center" caption="Assign DNS" alt="Assign DNS" showCaption="true"}

2\) Apply the changes.

Back to the panel and we now should have our Engenius SD-WAN router synchronized.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Mar2aBdckDz0rAHmYInBE_image.png" size="50" width="886" height="227" position="center" caption="Panel" alt="Status of SD-WAN router" showCaption="true"}

**Other ways to ask**:

- How to configure on a Engenius SD-WAN router.
- Using the Engenius SD-WAN router. Here's how.


[title] Teldat configuration
[path] Router Guides/

##

CONFIGURE FILTERING ON TELDAT DEVICES

To activate the containment filter on Teldat devices, please do the following:
 <font color="#000000"></font>

Connect to the *control panel by entering the IP address of the Teldat device in the browser*. Then enter the login credentials.
First, you need to change the *DNS of the device*.

For web filtering to work on the devices, you need to configure the router and replace the DNS with ours.
To do this, go to the router panel and enter the following commands:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/laKZ-UlCFG-VlK5Grabet_image.png" size="50" width="1018" height="131" position="center" caption="DNS Configuration" alt="FlashStart DNS Configuration" showCaption="true"}

## Web filtering works with dynamic and static IPs

If you have a dynamic IP address, configure DynDNS on the router as follows:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/CdGS6hOrV8L-tQN7zg5uu_image.png" size="50" width="1017" height="328" position="center" caption="Dynamic DNS Configuration through dydns.org" alt="Dynamic DNS Configuration through dydns.org" showCaption="true"}

## OPTIONAL: Deny DNS changes by users

You can strengthen security by preventing user DNS changes. To do this, simply create a new access list for use on the WAN interface, as follows:

## OPTIONAL: CONFIGURE MULTIPROFILE

The advanced feature called *Multiprofile* allows you to create multiple profiles per client/license and associate them with a single network (IP address).*Web Filter recognizes the remote network* (and configuration profile) based on the public IP.

For example, if you have the address "1.2.3.4", you can use the following ports:

- **Standard port 58** (default profile);
- **Other ports** (110,143,5402,5403).

As you can see, there are two profiles (Default and Profile 2), port 53 and 5402, respectively.
If you want to create two or more profiles per network (same IP address), you need to configure a different port for each profile.

First, enable the AFS feature:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/E5DobOhCluHhcgOMNKb3J_image.png" size="50" width="1016" height="80" position="center" caption="Configure Multiprofile configuration" alt="Ability AFS function" showCaption="true"}

Then change the DNS request (port 53) to the new port via NAT:

**PLEASE NOTE**: Note that a port other than 53 must be entered in PORT\_PROFILE2 between 110,143,5402 and 5403.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/9l6QcdRtNuKCh47fe-ivJ_image.png" size="50" width="1018" height="624" position="center" caption="switch port through NAT" alt=" DNS request change via port 53 NAT" showCaption="true"}

**PLEASE NOTE**: The default port (53) connects directly, no special configuration is needed.
Here is an example of configuring the web filter with *MultiProfile or Dynamic DNS in Teldat*, so that only Teldat DNS servers can be used:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/r6NjrQFkvcuLHXe6SK9fW_image.png" size="50" width="1016" height="674" position="center" caption="Multiprofile example" alt="Example of multiprofile configuration" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/1MGki6Mnh9A5llKcXRVOV_image.png" size="50" width="1015" height="796" position="center" caption="Multiprofile example" alt="Example of multiprofile configuration" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/u8LNK_ZRqbwIb_3--3hS-_image.png" size="50" width="1015" height="824" position="center" caption="Multiprofile example" alt="Example of multiprofile configuration" showCaption="true"}

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/H_uG6uCq6a0rfQNRPALqB_image.png" size="50" width="1015" height="824" position="center" caption="Multiprofile example" alt="Example of multiprofile configuration" showCaption="true"}

**Other ways to ask**:

- How to configure Teldat.
- Teldat router configuration. How to.


[title] Draytek configuration
[path] Router Guides/

## FILTER CONFIGURATION ON DRAYTEK ROUTER

To activate Cloud filtering on Draytek devices proceed as follows:

### Please access the link below to register

<font color="#0C121D">If you have not yet registered for the service you can do so by clicking on the following link: .
Connect to the </font>*control panel by entering the IP address of the Draytek in the address bar of any Browser*. Then log in by entering your credentials.

To configure Dynamic DNS service, open the \[**Applications**] menu and then click on \[**Dynamic DNS**].
Check "*Enable Dynamic DNS Account*" and fill in the various fields as follows:

- **Service Provider**: Choose *Customized or User-Defined*.
- **Provider Host**: Enter *https\://ddns.name.com*.
- **Service API**: Type */nic/update?*.
- **Auth Type**: Choose *basic*.
- **Connection Type**: Select *Https*.
- **Server Response**: Leave this field blank.
- **Login Name**: Enter the email/username of the Filter.
- **Password**: Enter the password of the Filter.
- **Determine Real WAN IP**: Select *WAN IP*.

Finally, click \[**OK**] to make the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Fzgv56j8MsXWIBytTDs3O_image.png" size="50" width="720" height="499" position="center" caption="Cloud filter activation on Draytek devices" alt="filter compilation and activation page in Draytek devices" showCaption="true"}



### At this point you can enable the DHCP Server so that it automatically assigns network parameters, including our DNS, to the various internal devices

Then open the \[**LAN**] menu and click on \[**General Setup**].
Click on the \[Details Page] button for your LAN and enable the Enable Server item to activate the DHCP service. Then configure it as follows:

- **Start IP Address**: Enter the first private IP in the range.
- **IP Pool Counts**: Set *the number of IPs* to be handled by DHCP.
- **Gateway IP Address**: Enter the IP of your gateway (usually the IP of your router).
- **Lease Time**: Leave the *default value (86400)* or enter the desired one.
- **Primary IP Address**: Enter *185.236.104.104*.
- **Secondary IP Address**: Type *185.236.105.105*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/tXHv4CcU1Fbs-jEHZve9Y_image.png" size="50" width="717" height="380" position="center" caption="DHCP Server" alt="Enabling DHCP server to automatically set DNS to internal devices" showCaption="true"}

Alternatively, the *DNS of the various devices within the network can be changed manually*.

## OPTIONAL: Deny DNS changes by users

It is possible to increase security by denying the user the ability to browse unfiltered, as a result of changing the **DNS** on their device.
Then open the \[**Firewall**] menu and click on \[**Filter Setup**].
At this point you need to create rules to allow traffic on **port 53** (DNS Service), both *TCP and UDP, only to our IPs*.
Click on the *first available number*, under the *Set column*, and then on the \[1] button (under the *Filter Rule column*) to create a new rule.
Then enable it by selecting **Check to enable the Filter Rule** and configure it as follows:

- **Direction**: Choose **LAN/RT/VPN** -> **WAN**.
- **Source IP**: Leave Any.
- **Destination IP**: Click \[**Edit**], select Single Address and enter 185.236.104.104.
- **Service Type**: Click \[**Edit**], choose User defined, with TCP/UDP protocol, and enter the value 53 in the Source and Destination Port fields. Click \[**OK**] to save.
- **Filter**: Choose Pass Immediately from the drop-down menu.

Click \[**OK**] to save and apply the changes.&#x20;

Now we need to create another rule similar to the previous one except for the **IP address of the Destination IP field**, which should be *185.236.105.105*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/MYGRyw3-q8j7Td9sL6xYA_image.png" size="50" width="712" height="648" position="center" caption="Changing the other filter rule" alt=" Creating another rule with, unlike the previous one, a different IP withing the &#x22;destination IP&#x22; field" showCaption="true"}



Finally, it is necessary to create a rule to **block all DNS traffic directed to other IPs**, other than our own.
Then proceed as follows:

- **Direction**: Choose **LAN/RT/VPN** -> **WAN**.
- **Source IP**: Leave Any.
- **Destination IP**: Leave Any.
- **Service Type**: Click \[**Edit**], choose User defined, with *TCP/UDP protocol*, and enter the *value 53 in the Source and Destination Port fields*. Click \[**OK**] to save.
- **Filter**: Choose *Block Immediately*.

Finally, click \[**OK**] to create the rule.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ta3yMkJGMlHM2qozhAneq_image.png" size="50" width="712" height="646" position="center" caption="Blocking dns traffic to other ip" alt="Blocking dns traffic to other ip" showCaption="true"}

**Other ways to ask**:

- How to configure Draytek router.
- Draytek router configuration. How to.


[title] Ruijie Router
[path] Router Guides/

## Filter configuration on Ruijie Router

<font color="#000000">Ruijie is a Chinese company renowned in the network device industry. Offering high-quality products and an advanced management cloud, it stands out for its innovation and reliability in the field of enterprise connectivity.

Ruijie devices provede various configurations depending on the user's needs, applicable to the filter.

Follow this</font> to log in with your own credentials to the Ruijie Networks Cloud.

## Support DNS IP configuration for WAN interfaces

Please proceed as follows:

- **Login&#x20;**&#x74;o your Dashboard
- Select **Network category**
- Select **WAN**
- Enter the dedicated **DNS 185.236.104.104** and click on **Save** as in the picture below

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/LbnWprQRs0qq17PaQhQ7-_ruijie1.png" size="50" width="1915" height="916" position="center" caption=" Support DNS IP" alt="configuration for WAN interfaces" darkWidth="1915" darkHeight="916" showCaption="true"}

## Support DDNS Configuration

The DDNS configuration is fully functional, but the provider dyndns.org is not currently supported.
Should your provider be different, please proceed as follows:

- **Enter your personal username and password**
- Select the **Advanced category**
- Select the **entry Dynamic DNS**
- Select the **desired service provider** and the interface on which to apply the service
- Enter **Dynamic DNS** under Domain and click on **Log** In as in the image belo

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/yTPst05UCnTAoaBqLUJSG_image.png" size="50" width="1165" height="907" position="center" caption="Support DDNS Configuration" alt="Select the desired service provider" darkWidth="1165" darkHeight="907" showCaption="true"}

## Proxy DNS Configuration

To force the user to redirect all DNS traffic to a specific one, the following steps can be taken:

- Select the **Network category**.&#x20;
- Select the **LAN item**.
- Select **DNS Proxy** and click **Enable&#x20;**&#x61;s pictured below
- Enter the dedicated **DNS 185.236.104.104** and click **Save** as per the picture below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/JkJMRINWv-m7DGDJmnZ3e_image.png" size="50" width="1166" height="842" position="center" caption="Proxy DNS Configuration" alt="redirect all DNS traffic to a specific one" darkWidth="1166" darkHeight="842" showCaption="true"}

## DNS forwarding filtering support

Please proceed as follows:

- Select the **Behaviour category**
- Select the entry **Access Control**
- Select **Add** to reach the configuration as shown in the picture below

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0_yALiCAlIUq0mzjhTZjr_image.png" size="50" width="1920" height="912" position="center" caption="Access Control" alt="Configuration as shown in the picture below" darkWidth="1920" darkHeight="912" showCaption="true"}

- In the popup that opens, check the **DNS box** and click **OK** as in the picture below

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/aKzvlXIkTsk_Fcw6Bm2-9_image.png" size="50" width="1302" height="721" position="center" caption="DNS box" alt="check the DNS box and click OK as in the picture below" darkWidth="1302" darkHeight="721" showCaption="true"}

**Other ways to ask**:

- How to configure on a ruijie router.
- Using the ruijie router. Here's how.


[title] How to Enable DoH on MikroTik Routers
[path] Router Guides/The FlashStart DNS filter configuration for Mikrotik OS/

The **DNS over HTTPS (DoH)** feature allows you to encrypt DNS requests, improving both security and privacy while browsing.
&#x20;Follow the steps below to enable DoH on **MikroTik routers** using Platform servers.

## Connect to the Router

Access your **MikroTik router** using **WinBox** or the **web interface**.

## Open the Console (New Terminal)

Once connected, open the MikroTik terminal from the main menu (**New Terminal**).

## Download and Import the Root CA

Type the following commands to download and install the root certificate:

:::BlockQuote
/tool fetch url=[link](https://download.flashstart.com/fs_rootca/fs_rootca.pem)
/certificate import file-name=fs\_rootca.pem
:::

These commands download th&#x65;**&#x20;Root CA** and import it into the system, ensuring proper DoH certificate verification.

## Enable DNS over HTTPS (DoH)

Enable DoH by specifying the server and requesting certificate verification:

:::BlockQuote
/ip dns set use-doh-server=[link](https://doh.flashstart.com/123456) verify-doh-cert=yes
:::

**Note:** Replace 123456 with the **DoH code&#x20;**&#x76;isibile from your Dashboard (Network/DoH DoT menu).

## Verify Operation

Check that the router is correctly using DoH by running:

:::BlockQuote
/ip dns print
:::

Make sure the use-doh-server field is correctly set to [link](https://doh.flashstart.com/....)

## Tip

If you are using a **multi-WAN configuration** or a **local DNS setup**, ensure that your firewall or NAT rules allow HTTPS traffic (port 443) to the domain [link](https://doh.flashstart.com).

**Other ways to ask**:

- Enabling DoH on MikroTik Routers&#x20;
- DoH Configuration Guide for MikroTik Routers


[title] Pi-Hole's blacklist configuration
[path] Router Guides/

## How to extend Pi-hole blacklist for Internet DNS filtering

**Pi-Hole** is a very powerful tool that acts as a *DNS server* with the ability to *block advertising and tracking domains&#x20;*(tracking domains).
**Pi-Hole** obtains lists of advertising and tracking domains from a **configurable blacklist of predefined sources**, and then **compares DNS queries against them**.
However, although its main purpose is to work as an ad blocker, the nature of Pi-hole actually allows it to block the domain of any website by *manually adding the domain name to a blacklist*.&#x20;

***

***>> >> platform is totally in Cloud and easy to activate &#x20;***[](https://flashstart.com/landing-get-quote)***&#x20;or&#x20;***<font color="#ff361d"></font>

***

<font color="#000000">For more information on how Pi-Hole works, visit the .</font>
This guide explains how to **extend Pi-Hole's blacklists** with our blacklists in order to benefit from **additional malware protection and content filtering features**.

**PLEASE NOTE(1)**: Before proceeding with this guide, you must *register your public IP address*.
Only **registered IP addresses** can use the *malware protection and content filtering features on their network*.
You can do this by going<font color="#000000"> </font> and then accessing the **Networks section**.

**PLEASE NOTE(2)**: The *configuration process* described in this guide can be done either through the *web interface or by manually editing the configuration files*.
You can decide which one to use based on your preferences (and the type of installation you have done).

If you decide for configuration via web interface, you have to follow the first paragraph of the guide.
Otherwise, the second one is the one for you.

***

***>> platform protects you from a vast gamma of threats and blocks the access to damaging sites ?&#x20;***[](https://flashstart.com/landing-get-quote)***&#x20;or&#x20;***<font color="#ff361d"></font>

***

## Configuration through Web Interface

Web Interface Access

From here, go inside the *Settings menu* and move to the *DNS tab*.

Here you need to enter the IP addresses of the upstream DNS servers you want to set up

These are the servers to which all requests will be automatically forwarded by your Pi-Hole server.
In this case, the IP addresses you need to enter in the IPv4 Custom fields are as follows, as shown in the image below :

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/yrvCbbvCm4nwIHK6lZuPi_image.png" size="50" width="747" height="554" position="center" caption="isP4 custom Insert " alt="Entering the correct ipv4 DNS" darkWidth="747" darkHeight="554" showCaption="true"}

Click the Save button to save your changes...and that's it!

You should now have your Pi-Hole server properly configured to forward all client requests to our DNS servers.

To start using our blacklists for content filtering and malware protection

You must now configure them: you can do this by simply going to our site and<font color="#000000"> </font> in the **Protection section**.

***

***>> Protect your network with advanced video and DNS content filtering&#x20;***[](https://flashstart.com/landing-get-quote)***&#x20;or&#x20;***<font color="#ff361d"></font>

***

## Switch Configuration File

If for some reason you don't want to use the web interface (or have simply decided not to install it),&#x20;you can alternatively edit the **Pi-Hole configuration files manually by following these simple steps**.

**PLEASE NOTE**: If you have already completed all the steps described in the previous part of this guide, you do not need to proceed with the next part.

The file we are interested in is called *setupVars.conf* and by default is located insid&#x65;*&#x20;the /etc/pihole/ folder*.
Move now to that folder and *open the file with any text editor*.

The file is basically a script that takes care of setting numerous variables, which will then be used by *Pi-Hole when running the various scripts*.
If you edit this file manually and then run the *pihole -r command*, the *new values you set will be applied*.
Once the file is open, it should look approximately like this:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/DEMnqxnSyDWtbkzrwCv9g_image.png" size="50" width="687" height="442" position="center" caption="Configuration change scripts" alt="Changing the correct DNS through text editor" darkWidth="687" darkHeight="442" showCaption="true"}



The variables we need to change are the ones called **PIHOLE\_DNS**, that is, the ones highlighted by the arrows in the image above.
If you have not previously configured an upstream dns server, you should not find any of these variables in the file.
In that case you can directly add two new variables: called **PIHOLE\_DNS\_1** and **PIHOLE\_DNS\_2** respectively to the file and then set their values to the correct IP addresses, as shown in the image below:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/LSsdb_XupbuPcoRV7RPSS_image.png" size="50" width="246" height="58" position="center" caption="Changing the right variables" alt="Correcting PIHOLE_DNS variables with the correct ip's" darkWidth="246" darkHeight="58" showCaption="true"}



Otherwise, simply change these two variables by setting the desired values.
&#x20;
Save and close the file. Then run the *pihole -r command* in a command shell to apply the changes.

Finally, we need to restart the **DNS service**.
You can use the following command to do this:
*sudo service dnsmasq restart*

We are done and you should now have your *Pi-Hole server properly configured to forward all client requests to our DNS servers*.
What remains to be done now is to configure our blacklists: you can do this by going to our site and then to the Protection section.

**Other ways to ask**:

- How to configure Pi-Hole blacklists for Internet DNS filtering.
- Configuring Pi-Hole blacklists for Internet DNS filtering. How to.


[title] 🛡️ Al-based DNS filtering for
MSPs, ISPs & Companies (cloned)
[path] /


[title] Al-based DNS filtering
[path] DNS Protection/

Advanced DNS protection against
Malwares & dangerous contents
-----------------------------

The platform is a **global security service in DNS filtering solutions**, securing businesses, K-12 schools, and governments from cyber threats and inappropriate web contents.

The **global network Anycast** and **artificial intelligence** guarantee fast, reliable, and up-to-date internet protection everywhere.

Ideal for MSPs and ISPs thanks to easy installation and compatibility with any device, with innovative, customizable, and extremely detailed features.

IMPORTANT: If you have multiple Microsoft Active Directory servers, it is necessary to install the Windows connector on all servers.

90% of Enterprises&#x20;
are vulnerable to malwares
--------------------------

According to the latest statistics, **more than ninety percent of enterprises are vulnerable**, and ransomware (ex: hacker attacks with extortion) confirm that they are the most dangerous, with total payments in excess of $20 billion and estimated to grow by tenfold over the next ten years.

### [Show Real Time Threat Map](https://threatmap.flashstart.com/) >

### Essential Internet Protection for Every User

Cyber threats like ransomware are a constant, costly risk, making robust online defense crucial. The platform's AI-powered DNS filtering provides vital, proactive protection that stops threats before they reach your network, ensuring safe and reliable internet access.

**Who Benefits Most?**

- **Businesses:** Safeguard data, prevent costly breaches, and ensure employee productivity.
- **K-12 Schools & Public Entities:** Comply with regulations, block inappropriate content, and provide a secure learning environment.
- **MSPs & ISPs:** Offer a valuable, easy-to-deploy security solution to your clients.
- **Individuals & Families:** Enjoy peace of mind with protection against malware, phishing, and unwanted content across all devices.

The platform offers comprehensive, fast, and highly customizable security with effortless setup, making advanced protection accessible to all.

[title] Tool: Change password
[path] Pro & ProPlus/FlashStart's advanced configurations/

This tool allows you to change your *account password* through a few simple steps:

In the *Old Password* field enter the password currently in use.
In the *New Password* field enter the new password with which you want to replace the old one.
**IMPORTANT**: The password must have at least *8 characters and contain at least one number.*
In th&#x65;*&#x20;Confirm Password* field confirm the new password entered in the previous field by writing it again.
Finally click \[*Edit*] to apply the change.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/eQEYngOdVElnOR4WkPSam_image.png" size="50" width="609" height="265" position="center" caption="Tool" alt="change password" showCaption="true"}



**Other ways to ask**:

- How to change password.
- Password Change. See how.


[title] The denial of DNS changes to users through Active Directory group policies
[path] Pro & ProPlus/Remote End-Points/ClientShield remote agent configuration/

Users can be prevented from changing DNS using *Active Directory Group Policies*.
For more information on Group Policies (GPOs), see Microsoft's online guides.

Another improvement that can be implemented is to create some rules in the router/firewall, to automatically redirect DNS requests from PCs to the private IP of the DNS Proxy.

In this way, internal devices configured to use a DNS other than the DNS Proxy IP will be filtered using the default filter criteria.
**IMPORTANT**: This rule should be applied to all IPs except the Proxy DNS.

**Related articles**:

[Pro+ Filter setup - Introduction](docId\:K_bf7DPc8ndUCo2j1VCOK)&#x20;

**Other ways to ask**:

- How to deny DNS changes to users.
- Denying DNS changes to users. How to do it.


[title] Personal WhiteLists
[path] Pro & ProPlus/Protection Configuration/

The WhiteListing system allows the user to manually enter domains that will not be blocked even if they are located within a non-navigable category.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/cfO4zyQSRiTw-MAKzPORu_protection28.png" size="50" width="1247" height="245" position="center" caption="Whitelist " alt="List of the Whitelist " showCaption="true"}

Ability both to whitelist certain domains in the current profile and to make them available in any user profile.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0AIPIJrmirIGeTZFW0SIO_protection30.png" size="50" width="1237" height="362" position="center" caption="Extended" alt="Visualize Extended view of the whitelists" showCaption="true"}

Ability to search for a particular domain if you have more than one.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/MxKLE4BgoDbNSLSeG_qvt_protection29.png" size="50" width="258" height="69" position="center" caption="Search" alt="Domain Search" showCaption="true"}

Ability to see domains in the list with different and extended style.



**Other ways to ask**:

- Catalog of individual permissions.
- Customized permission list.


[title] Product licenses
[path] Pro & ProPlus/License management/

The *Licenses section* contains general information on *Licenses to Activate, Active Demos, Active Licenses, and Expired Licenses*.

## Licenses to Activate

This section highlights licenses that have yet to be activated, and shows respectively: license owner, license type, number of concurrent users, and license duration.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/JykzJS0vqgoVC7uAkZzJp_licenza1.png" size="50" width="827" height="143" position="center" caption="Licenses to activate" alt="Table of licenses to be activated" showCaption="true"}

Clicking on the row *itself* or on "*Show"*, under the *Actions column*, will extend the menu revealing additional information, namely:

-  **Product**: what type of product the license is associated with.
- **License Type**: The type of license.
- **Concurrent Users**: The number of concurrent users.
- **Associated PIN**: The PIN associated with the license, which will be used to activate it.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/VRK_sN5AEjAPMuAP7KGAm_licenza2.png" size="50" width="833" height="359" position="center" caption="Summary of licenses" alt="Tabular summary of the license to be activated" showCaption="true"}

## <font color="#ff361d">Demo or Licenses to Activate</font>

These tables contain information regarding demos and active licenses, namely:

- **The type of license** (demo, single or Bulk), the number of concurrent users.
- **The expiration date of the license**.
- **The working status of the Filter** (green: the DNS Filter is working properly, red: the DNS Filter is not working, we recommend why to check that the Devices in the network are using our DNS or contact technical support).

The *major difference between Demo and License* (single or Bulk) is that the former is a 30-day trial license, while the latter is a 12- or 36-month purchased license.

Extending the menu as in the example above this time will have:

- **Product**: What type of product the license is associated with.
- **License Type**: Type of license (Reseller or End Customer).
- **Concurrent Users**: the number of concurrent users.
- **License Expiration**: The date on which the license expires.
- **Registration Date**: The date on which the demo was activated.
- **Associated PIN**: The PIN associated with that license.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/SwjRMmOMS19DDr4ZAecFv_licenza3.png" size="50" width="847" height="628" position="center" caption="activate demos" alt="List and tabular summary of active demos" showCaption="true"}

## Expired Licenses

This last part contains information about expired licenses.The fields are:

-  **The type of license**
- **The number of concurrent users**
- **The date on which it expired**

As in the previous examples extending the menu will appear items similar to those described above, providing, therefore, additional information.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/C_i8wWzNicx3G7fISKAWe_licenza5.png" size="50" width="833" height="470" position="center" caption="Expired licenses" alt="Tabular summary of expired licenses" showCaption="true"}

**Other ways to ask**:

- How to activate demo licenses.
- Demo license activation. What to do?


[title] ClientShield for MacOs
[path] Pro & ProPlus/Remote End-Points/ClientShield remote agent configuration/

Download the app via the Apple Store from the following link:
[Apple Store](https://apps.apple.com/us/app/internet-protection-client/id1672585386?mt=12)

Once installation is complete, follow the instructions to enable filters on your device.

**Other ways to ask**:

- How to configure ClientShield for macOS.
- ClientShield configuration for macOS. How to do it.


[title] Single Cloud Licenses
[path] Pro & ProPlus/License management/

This panel makes it easy and efficient to assign individual cloud licenses to clients.

## Singolar License&#x20;

Select the client on which to activate the license or demo from the respective drop-down menu.&#x20;
If not present select the create new client option or click on register above the text box, and you will be redirected to the create new client panel.
Then click on \[CONTINUE].



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/pWeR0wtAzqIHZg4dAKA2n_single1.png" size="50" width="852" height="288" position="center" caption="Selection or registration-client" alt="Selection of an existing client or registration of a new one" showCaption="true"}

After that, select either *I want to register a PIN to activate a single license or I want to activate a free Demo to assign a Demo license*.

**PLEASE NOTE**: The steps are described below according to the choice made previously.
Then click on \[NEXT].

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/6yNOQZv9C5ilLTIMrLud9_single2.png" size="50" width="854" height="239" position="center" caption="Select " alt="Select PIN or Free trial registration" showCaption="true"}

## Demo Activation

Select *Cloud Filter / Cloud Filter* and click on the \[NEXT] button.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ZVanpQxqRqBOikIEewTcz_single3.png" size="50" width="854" height="243" position="center" caption="Demo " alt="Webfilter and malware mitigation Full Demo" showCaption="true"}

The last screen before activation will show the license activation and expiration date.
To complete the procedure and activate the Demo, click \[CONFIRM].

**PLEASE NOTE**: Do not close the panel page before the Demo license creation procedure is completed.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ngf4yLq1P2WMCdfvJuGaN_single4.png" size="50" width="850" height="247" position="center" caption="License to be activated" alt="Linear summary of the license to be activated" showCaption="true"}

## <font color="#ff361d">License Activation </font>

In this case, you must enter your PIN, which you received via email following your purchase, in the text box provided.

**IMPORTANT**: Pay attention to any spaces due to copy-paste.
Then click \[NEXT] once to verify the existence of the PIN, then again to continue with activation.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/8pNaBNQTNk9RieF_L0R4s_single5.png" size="50" width="834" height="250" position="center" caption="Pin entry received" alt="Entering the PIN received personally" showCaption="true"}

On the summary screen click on \[CONFIRM] to activate the license.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/neNRUkvOKefK7ezg3nKuu_single6.png" size="50" width="846" height="300" position="center" caption="License" alt="License to " showCaption="true"}

**Other ways to ask**:

- How to manage single cloud licenses.
- Single cloud license management. How to deal with it?


[title] Protection Configuration
[path] Pro & ProPlus/

This page will explain, in the different categories, the various customizations made possible by the flexibility of DNS filter.

# Index

### Protection

- ****[Threat Protection](docId\:BwIwMUFsm8YjrUUagVT7w)&#x20;
- [Content filtering](docId:_oKCTIcdCmsR4x0pHky8p)&#x20;
- [App Blocker](docId\:dgFlqJMrw7AcUO_uzUKvb)&#x20;

### Advanced Protection

- ****[Search engines protection](docId\:jpUSgmrQq6hqGau-bAHSq)
- [IP Blocking](docId\:nFEiFVkUrE0FVzt8ygf4S)
- [Geoblocking](docId\:LvjNxsIu1KJEDxXdjpqev)&#x20;

### Exception

- [Personal WhiteLists](docId\:UkO8WO6suHQ9xNzqJ0J9R)
- [Personal BlackLists](docId\:DewJZAImVw3a9tn0KOpuO)



## Protection

### Thread Protection&#x20;

Through Threat protection it is possible to block, through certain modes, those that are **malware-carrying sites, suspicious domains and more**. The flexibility of platform's DNS filtering allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/eFByPsDvtXYHBxgJ88Ldf_image.png" size="50" width="1243" height="382" position="center" caption="Thread Protection Table" alt="Broad visualization of the entire functionality" showCaption="true"}

**Macrocategory Customization**

The filter has macrocategories with subcategories of hazards more specifically within them.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/RPha80Pb-zU3V34_6Rihu_image.png" size="54" width="1241" height="916" position="center" caption="Table of Macrocategories of Threat Protection" alt="Broad View of Macrocategories" showCaption="true"}

The *entire macrocategory* can be blocked to not allow any of the categories below it to pass through the filter by clicking on the gray '*Always Block*' circle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/eRfrmlbItSmMdXNb1VRdu_image.png" size="50" width="1247" height="333" position="center" caption="Function blocking feature" alt="Demonstration of blocked threats and no" showCaption="true"}

**Categories Costumization**

Ability to extend the group, *individually blocking each category as desired*, thus having more freedom with respect to content.

In case within a macrocategory there are individual items that are blocked and others are not, graphically a green half circle under '*always allowed*' and a red half circle under '*always blocked*' will be displayed, indicative of a custom category filter.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/oLJR_Bc7q2bFFVSynuaH9_image.png" size="50" width="1241" height="916" position="center" caption="Demonstration table of categories" alt="Customization of protection for different categories" showCaption="true"}

**Block Scheduling**

Clicking '*insert*' will apply the filter as desired, and the icon shown from the menu will take the form of a yellow clock in the block scheduling part.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/OTbN0c3UUoBgtSkEU3slh_protection5.png" size="50" width="1233" height="511" position="center" caption="Schedule" alt="Schedule graphic " showCaption="true"}

Ability to schedule blocks and elements, prohibiting access to certain content only within a *time slot, fully customizable by the use*r by selecting start time, end time, and filter repetition.

### Content Filtering

**Macrocategory Customization**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ac218ur-PUK9gCoe2EmjA_protection7.png" size="50" width="1246" height="427" position="center" caption="Content filtering " alt="Macrocategory Customization for Content filtering" showCaption="true"}

Through Content Filtering it is possible to block, through certain modes, those that are distracting sites, sensitive content and more. The flexibility of platform's DNS filtering allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

**Categories Customization**



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/GjPCZ6W5tuJi7ChP96wzM_protection8.png" size="50" width="1241" height="487" position="center" caption="Customization of categories" alt="Demonstration of customization Categories" showCaption="true"}

The entire macrocategory can be blocked to not allow any of the categories below it to pass through the filter by clicking on the gray '*Always Block*' circle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/V03GWeLKBCxXn5hSDadSX_protection10.png" size="50" width="1241" height="487" position="center" caption="Blocking " alt="How to block the category" showCaption="true"}

The filter has macrocategories with subcategories of hazards more specifically within them.

In case there are individual items within a macrocategory that are blocked and others that are not, graphically a green half-circle under '*always allowed*' and a red half-circle under '*always blocked*' will be displayed, indicative of a custom category filter.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/unZJMwztP41hoe25hvE0y_protection13.png" size="50" width="1233" height="255" position="center" caption="Blocking" alt="How to appear a blocked app" showCaption="true"}

Ability to extend the group, *individually blocking each category at will*, thus having more freedom with respect to content.

**Block Scheduling**

Clicking '*insert*' will apply the filter as desired, and the icon shown from the menu will take the form of a yellow clock in the block scheduling part.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ZftQJcypR7RLdJKdIDb5d_protection11.png" size="50" width="1242" height="717" position="center" caption="Schedule" alt="Scheduling content filter" showCaption="true"}

Ability to schedule blocks and elements, prohibiting access to certain content only within a *time slot, fully customizable by the use*r by selecting start time, end time, and filter repetition.

### App Blocker

**Macrocategory Customization**



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/uPMacXEqNTQklcUlg5_qL_protection12.png" size="50" width="1236" height="780" position="center" caption="App Blocker table" alt="Tabular demonstration of functionality" showCaption="true"}

Through application blocking, it is possible to exclude, through certain modes, what are possible distractions for users. Applications such as video games, music, dating apps can create a waste of time in the work environment, consequently leading to a slowdown and lack of responsibility. The flexibility allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

**Categories Customization**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/vcHXFOlrHSf7sJ1WFuU4M_protection13.png" size="50" width="1233" height="255" position="center" caption="Blocking app" alt="How to blocking app" showCaption="true"}

Imagine Caption: Customizing the Categories of the App Blocker feature
Imagine Alt Text: Graphic demonstration&#x20;

The *entire macrocategory* can be blocked to not allow any of the categories below it to pass through the filter by clicking on the gray '*Always Block*' circle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/eaMsDFYZqqWRy_E538IRn_image.png" size="50" width="1240" height="655" position="center" caption="Table of macrotegories respective to the App Blocker" alt="Table of macrotegories respective to the App Blocker" showCaption="true"}

The filter has macrocategories with subcategories of hazards more specifically within them.

In case there are individual items within a macrocategory that are blocked and others that are not, graphically a green half-circle under '*always allowed*' and a red half-circle under '*always blocked*' will be displayed, indicative of a custom category filter.


**Block Scheduling**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ChbG3Bir_UjSW1IJd-2MP_image.png" size="50" width="1240" height="655" position="center" caption="Table of the macrotegory Games" alt="Table of the macrotegory Games" showCaption="true"}

Ability to extend the group, *individually blocking each category at will*, thus having more freedom with respect to content.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/F9h_w0c-aM4FZrGPYksXq_image.png" size="50" width="1240" height="297" position="center" caption="Table of the macrotegory Games" alt="Table of the macrotegory Games" showCaption="true"}

Clicking '*insert*' will apply the filter as desired, and the icon shown from the menu will take the form of a yellow clock in the block scheduling part.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/tscvyuUCjVfVdtL75mZ3Y_protection16.png" size="50" width="1235" height="547" position="center" caption="Schedule" alt="Scheduling content filter" showCaption="true"}



Ability to schedule blocks and elements, prohibiting access to certain content only within a *time slot, fully customizable by the user* by selecting start time, end time, and filter repetition.

## Advanced Protection

### <font color="#0C121D">Search and youtube engine protection</font>

**Protection of Google® / Bing® / DuckDuckGo® searches**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/rA3arvaA8rsqo1TtCeDKH_protection17.png" size="50" width="1247" height="177" position="center" caption="Search engines" alt="Youtube" showCaption="true"}

Search engine and Youtube protection allows the user to set up a filter that blocks access to unwanted sites such as pornography and other safe and undecent content.

**YouTube** **Protection**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/hVvx6KQjGGh2pGYWr4YOp_protection21.png" size="50" width="798" height="233" position="center" caption="Enable Youtube" alt="Search Protection modification" showCaption="true"}

After confirmation, Youtube will filter this content.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0R6-dktrXGlxP8CnrtWhZ_protection18.png" size="50" width="1247" height="177" position="center" caption="Search engines" alt="Youtube" showCaption="true"}

Google/Bing/DuckDuckGo search protection allows the user to block unwanted content from these search engines. The Browser will not show sites that contain undecent content according to these.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/6M8O8LJncY5qjhA_MWKyb_protection19.png" size="50" width="807" height="242" position="center" caption="Search Protection" alt="Enable" showCaption="true"}

After confirmation, Protection of Google® / Bing® / DuckDuckGo® will filter this content.

### Blocking IP

**Threats for IP**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/-KFVl_H4ES9FP3OiuNDvP_protection22.png" size="50" width="1240" height="231" position="center" caption="Blocking threats by IP" alt="Blocking for IP" showCaption="true"}

Through blocking by IP, it is possible to deny threats directly by going back to the ip instead of the individual domain.

This feature allows blocking all domains that pass by a certain IP address. This allows the user to avoid hand-writing every domain that passes by that particular address.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Vy935k_XN40Lzf-VKQD_m_protection23.png" size="50" width="1242" height="230" position="center" caption="IP Blocking" alt="Block Threats" showCaption="true"}

Clicking on the slide toggle will enable threat blocking by IP.

### Geoblocking Protection&#x20;

**Macrocategory Customization**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/l4NNS1j8bs4Dwy_6dz4Xp_protection24.png" size="50" width="1243" height="832" position="center" caption="Geoblocking protection" alt="Demonstration of different countries possible by management" showCaption="true"}

Through Geoblocking protection it is possible to block, through certain modes, what is all Internet traffic from specific areas of the world. The flexibility allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

**Categories Customization**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/koxdZUoF2WO0LY3rn4LsQ_protection26.png" size="50" width="1243" height="832" position="center" caption="Geoblocking protection" alt="Demonstration of different countries possible by management" showCaption="true"}

The *entire macrocategory* can be blocked to not allow any of the cities below to pass through the filter by clicking on the gray '*Deny*' circle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/hVLMS_mLophg9YmjyidB2_protection25.png" size="50" width="1235" height="497" position="center" caption="Depiction of some of the different countries to be managed" alt="Depiction of some of the different countries to be managed" showCaption="true"}

The filter has macro-zones with cities and zones within them more specifically.

In case there are individual items within a macro-zone that are blocked and others are not, graphically a green half-circle under '*Allow*' and a red half-circle under '*Deny*' will be displayed, indicative of a custom category filter.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/_GSWEf2GnOyLbepJZ0P8W_image.png" size="50" width="1232" height="428" position="center" caption="Depiction of some of the different countries to be managed" alt="Graphical and tabular demonstration" showCaption="true"}

Ability to extend the group, *individually blocking each city at will*, thus having more freedom with respect to content.

## <font color="#ff361d">Exception</font>

### Personal WhiteList

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/mdgx_qdIsQfgNHGKSgyVP_protection28.png" size="50" width="1247" height="245" position="center" caption="Personal whitelist" alt="Depiction of some of the different countries to be managed" showCaption="true"}

Ability to see domains in the list with different and extended style.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/vZggmB2TaCe0_gi_rVBCL_protection29.png" size="50" width="258" height="69" position="center" caption="Domain search" alt="Different and extended style" showCaption="true"}

Ability to search for a particular domain if you have more than one.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/GnsFaRJOiRqTAG6jnzwDZ_protection30.png" size="50" width="1237" height="362" position="center" caption="Personal whitelists" alt="Particular domain" showCaption="true"}

Ability to both whitelist certain domains in the current profile and make them available in any user profile.

The WhiteListing system allows the user to manually enter domains that will not be blocked even if they are located within a non-navigable category.

### Personal BlackList

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/5NEmWKnbmsTB0FIo2Gn6G_protection32.png" size="50" width="803" height="502" position="center" caption="Personal blacklist" alt="Personal blacklist" showCaption="true"}

Ability, once the domain to be blocked is written, to specify the category of the address as well as an optional comment. Otherwise, you can skip this process by blocking the domain without putting it in a category.

The BlackListing system allows the user to manually enter domains that will be blocked even if they are located within a browsable category.

**Other ways to ask**:

- Structuring protection policies.
- Organization of cybersecurity measures.


[title] Threat Protection
[path] Pro & ProPlus/Protection Configuration/

Through Threat protection it is possible to block, through certain modes, those that are *malware-carrying sites, suspicious domains and more*. The flexibility allows the user various and customized solutions with features that characterize filtering making it convenient and practical.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/04YntMoIuav9BGdQjDDLN_protection1.png" size="50" width="1246" height="335" position="center" caption="Blocking Threat Protection" alt="Categories of Threat Protection filter" showCaption="true"}

## Macrocategory Customization&#x20;

The filter has macrocategories with subcategories of hazards more specifically within them.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/9IIiuLzII8JX9TGspsuX-_protection2.png" size="50" width="1242" height="682" position="center" caption="Table of Macrocategories ofThreat Protection" alt="Broad View of Macrocategories" showCaption="true"}

The *entire macrocategory* can be locked to not allow any of the categories below it to pass through the filter by clicking on the gray *"Always Lock"* circle.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/QWPqEvr8wOz7PBsyxN9wu_protection3.png" size="50" width="1246" height="335" position="center" caption="Function blocking feature" alt="Demonstration of blocked threats and not" showCaption="true"}

## Category Customization&#x20;

Ability to extend the group, *individually blocking each category as desired*, thus having more freedom with respect to content.

In case there are individual items within a macrocategory that are blocked and others are not, graphically a green half-circle under "*always allowed*" and a red half-circle under "*always blocked*" will be displayed, indicative of a customized category filter.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/iIWjQO9mpYiURDx70zmt0_protection4.png" size="50" width="1242" height="682" position="center" caption="Blocking Threat and malware" alt="How to blocking Malware and threat" showCaption="true"}

## Scheduling Blocks&#x20;

Ability to schedule blocks and elements, prohibiting access to certain content only within a *time slot, fully customizable by the user* by selecting start time, end time, and filter repetition.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/lM5aaLSXK95GH6iF59-aA_protection5.png" size="50" width="1233" height="511" position="center" caption="Schedule" alt="Scheduling interface of threat protection" showCaption="true"}

Clicking "*insert*" will apply the filter as desired, and the icon shown from the menu will take the form of a yellow clock in the block scheduling part.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0AUUqO5DmYATtuZtIn-E8_protection6.png" size="50" width="1237" height="362" position="center" caption="Schedule visual" alt="Scheduled blocks visual" showCaption="true"}

**Other ways to ask**:

- Defense against threats.
- Security against threats.


[title] Search engines protection
[path] Pro & ProPlus/Protection Configuration/

Search engine and Youtube protection allows the user to set up a filter that blocks access to unwanted sites such as pornography and other safe and undecent content.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/kLnPP632QveUrJcaunQ09_protection17.png" size="50" width="1247" height="177" position="center" caption="Blocking Engines and Youtube" alt="How to block Search engines and Youtube" showCaption="true"}

## <font color="#ff361d">Protection of Google® / Bing® / DuckDuckGo® searches</font>

Google/Bing/DuckDuckGo search protection allows the user to block unwanted content from these search engines. The Browser will not show sites that contain undecent content according to these.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/FK-c4gKpTk0dlIudvDyC8_protection18.png" size="50" width="1247" height="177" position="center" caption="Google/Bing/DuckDuckGo" alt="Protection of Google/Bing/DuckDuckGo" showCaption="true"}

After confirmation, Browsers will filter this content.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/y5hqFomf3mZePnWXDP8z5_protection19.png" size="50" width="807" height="242" position="center" caption="Protection of Google® / Bing® / DuckDuckGo® searches" alt="Protection of Google® / Bing® / DuckDuckGo® searches through search engine protection" showCaption="true"}

## <font color="#ff361d">Youtube Protection </font>

Youtube's protection allows the user to block unwanted content from this search engine. No results will be shown that contain undecent content according to this.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/A41_jcn7CtA5S_7x8U88i_protection20.png" size="50" width="1247" height="177" position="center" caption="Youtube protection" alt="Protection of Youtube Search" showCaption="true"}

After confirmation, Youtube will filter this content.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/P7i9Kei6TMF1L23kSY3sr_protection21.png" size="50" width="798" height="233" position="center" caption="Confirmation" alt="Confirmation of Youtube Protection Search" showCaption="true"}

**Other ways to ask**:

- Protection from threats on search engines and YouTube.
- Security of experience on search and YouTube.


[title] Pro+ Filter setup - Introduction
[path] Pro & ProPlus/Granular Protection and Active Directory integration/Windows connector setup/

*Pro+ Filter* implements granular filter policies based upon Active Directory groups and users.

The solution consists of two components:

- ***Windows connector***
- ***DNS Proxy***

## Windows connector setup

It has to be installed into the Microsoft Active Directory Server, with the *Administrator* account,
and it serves to synchronize users and groups with our Datacenters. Here below the guide:

[Windows connector setup](docId\:Nl0YvrsUsx-1nf_DV23e_)&#x20;

## DNS Proxy Setup

At this point you need to download and configure the *DNS Proxy*. See the guide below:

[DNS Proxy Setup](docId\:iKT2bkWdeaoEl5hzuSlCf)&#x20;

## Network DNS configuration

*DNS Proxy* IP address must be the unique DNS Server for your PCs and WiFi guest devices.
It will provide to forward to the internal Windows Domain Controller the Active Directory DNS zones.
You can configure DNS settings through a *DHCP Server* or setup DNS to the clients manually.
See the image below to better understand how it works:

[Example image](https://cloud.flashstart.com/customerarea/ca-include/img/knbase/NetworkDNSConfiguration.png)

Prevent users from overriding DNS filter

To improve network security, avoiding users to change DNS settings, follow this guide:

[Preventing users from ignoring DNS filter](docId\:VHnZuHEuWf4SVS_K21WIb)&#x20;



**Other ways to ask**:

- Pro+ Filter implements granular filter
- Pro+ Filter: introdution and implement


[title] Hyper-V Virtual Machine import
[path] Pro & ProPlus/Granular Protection and Active Directory integration/DNS Proxy Setup/

Download the Hyper-V virtual machine image from the following link:
[Microsoft Hyper-V virtual machine](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=hyperv_dnsproxy).

### To import the virtual machine into your Hyper-V environment, follow these steps:&#x20;

- Open the **Hyper-V management console** and right-click the name of your machine.
-  Click "**Import virtual machine....**"
- Click \[**Browse...**] and select the path where the virtual machine's file folder is located. Then click \[**Next**].
-  Click \[**Next**].
-  Choose "**Copy virtual machine (create new unique ID)**" to create a new virtual machine. Continue with \[**Next**].
-  Select the location where you want to **store the virtual machine files**.

Alternatively, you can leave the default values and click \[**Next**].

-  Choose the path where you want to place the **virtual hard disk** for the **new virtual machine**.
-  You should see an error because the name of the virtual switch used during the export process does not exist on your **Hyper-V host**.
-  Use the **drop-down menu next to "Connection**": to choose the virtual switch you wish to **associate with the new virtual machine**.
-  Click \[**Finish**] to start the virtual machine import and wait for the **restore process**.



**If the import process fails:**

-  Create a **new virtual machine**.
- When prompted, choose "**Generation 1**".
- In the "**Connect Virtual Hard Drive**" section, select "**Use an existing virtual hard drive**."
- Navigate to the location where the **dnsproxy.vhdx file** is stored (you can find it in the DnsProxy\_HypervDnsProxyVirtual Hard Disks folder).
- Complete the creation process.



**Other ways to ask**:

- How to import Hyper-V virtual machines.
- Importing Hyper-V virtual machines. How to.


[title] VMware Virtual Machine import
[path] Pro & ProPlus/Granular Protection and Active Directory integration/DNS Proxy Setup/

*Download the VMware virtual machine* image from the following link:
[VMware virtual machine](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=vmware_dnsproxy)

### To import the virtual machine into your VMware environment, follow these steps: &#xA;&#xD;

- **Extract the file** you just downloaded.
-  Open the **VMware management console** and click **File**->**Deploy OVF Template**.
-  Click \[**Browse...**] and select the **location where the virtual machine file folder is located**.&#x20;
- Select the 3 files and click \[**Next**].
-  Verify the **details of the OVF template** and click \[**Next**] to proceed.
-  Type in a name for the virtual machine.

**NOTE**: It must be unique within the inventory folder.

-  Choose the **datastore in which you wish to save** the virtual machine files.
-  Choose the **disk format** you prefer to use. We suggest leaving the default one.
-  Map the **network used in the model to the networks** in your **virtual environment**.
-  Review the **template configuration** and click \[**Next**] to start the import of the **new virtual machine**.
-  Once complete, you should see "**Completed**."
- Continue with configuring the virtual machine according to your needs.



**Other ways to ask**:

- How to import VmWare virtual machines.
- Importing VmWare virtual machines. How to.




[title] Proxmox Virtual Machine import
[path] Pro & ProPlus/Granular Protection and Active Directory integration/DNS Proxy Setup/

*Download the Proxmox virtual machine image* from the following link:
[Proxmox virtual machine](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=proxmox_dnsproxy)

### To import the virtual machine into your Proxmox environment, follow these steps: &#xA;&#xD;

- **Extract the file** you just downloaded.
-  **Transfer DnsProxy\_Proxmox.vma.gz to the Proxmox datastore** you wish to use to restore the virtual machine, for example, using Filezilla.
-  **Connect to the Proxmox SSH console**, using, for example, Putty, and move to the directory that contains the file you just uploaded.
-  **Type qmrestore DnsProxy\_Proxmox.vma.gz ID\_VM**, where **ID\_VM is the ID** you wish to assign to the new virtual machine.
-  Wait for the **restore process** to complete and then log on to the **Proxmox Web console**.
-  You should see the **new virtual machine named DnsProxy**.
-  Click on the virtual machine and open the **Hardware menu**.
-  Check the **hardware configuration** and, if everything is correct, turn on the **new virtual machine**.
- Continue with configuring the virtual machine according to your needs.

### Related articles:

- [Pro+ Filter setup - Introduction](docId\:K_bf7DPc8ndUCo2j1VCOK)&#x20;
- [DNS Proxy configuration](docId\:ngj9T8ZXKzagKGE1npmog)&#x20;



**Other ways to ask**:

- How to import Proxmox virtual machines.
- Importing Proxmox virtual machines. How to.


[title] DoH and DoT Protocol Configuration
[path] Pro & ProPlus/Remote End-Points/

DNS over HTTPS (DoH) and DNS over TLS (DoT) Protocols provide more secure DNS resolution through HTTPS, further protecting user privacy.

Go to the guide for setting up [DoH and DoT Protocol Configuration](docId\:Y8JfA-LAuxpwgBgWJwJU2).

### <font color="#0C121D">Desktop</font>&#xD;

- Configuration of the DoT protocol on [Mac](docId\:pOlGdWKLVp4oQf7_w_QRq).

### <font color="#0C121D">Mobile</font>

- Configuration of the DoT protocol for [Android](docId:37hExnQHI1zFnr2h6o3bl).
- Configuration of the DoT protocol for [iOS](docId\:D2NfKLTrnlqQQVAwxk43m).

  Note: To access detailed guides on configuring the DoH protocol, we recommend that you refer to the specific options in your browser's advanced settings.



**Other ways to ask**:

- How to configure ClientShield remote agents.
- ClientShield remote agent configuration. How to do it.


[title] advanced configurations
[path] Pro & ProPlus/

Several advanced configurations are available:

## External Research&#x20;

Filtering search results with several fields for targeted searching. [Learn more](docId\:BCLsxwwmULjwhtqdboJkU).

## Multiprofile e multipolicy&#x20;

*Multiprofile* allows you to enable different profiles and associate them with a single network, so you can use different filtering rules on the same public IP. [Learn more](docId:7h3yj9_QdD-mZ8VVes5lj).

## API for third-party integration&#x20;

Go to the [dedicated guide](docId\:BrZFDNNVwVOOPuPUiZ8TM) to see the available integrations

## <font color="#000000"></font>

To access the filter tools, you need to click on the wrench icon located at the top right of the filter management panel. [See Picture](https://cloud.flashstart.com/customerarea/ca-include/img/knbase/fs_guide_toolX.png)

- *Search lists*. [Learn more](docId\:BrZFDNNVwVOOPuPUiZ8TM)
- *Real-time analysis*
- *Latency Test*
- *Import from txt file*. [Learn more](docId:2makHwKLhvgzIlHovCSn7)
- *Change Password*. [Learn more](docId\:sCBS4xahk9pIY-ORxzZtY)
- *Add to Favorites*.&#x20;
- *Advanced settings*. [Learn more](docId\:dMEVe_stA4VSX1G60CVxI)
- *Customize stop page*. [Learn More](docId\:dMEVe_stA4VSX1G60CVxI)
- *Change time zone*. [Learn more](docId\:XRG7TdV7M4OZ9Ao6-lDGV)
- *Infrastructure Statistics*. [Learn More](docId\:Zdg1wJa00-LIQqetHY2fU)

**Other ways to ask**:

- How to set advanced configurations.
- Advanced configurations. How to manage them.


[title] The extended search menu
[path] Pro & ProPlus/FlashStart's advanced configurations/

## <font color="#ff361d"></font>

### <font color="#000000"></font>

This panel is for filtering search results, there are several fields for targeted search that we will now go to analyze and understand.
Starting from the left we find:

- **Profile**: This field is for selecting the profile you want to use for the search results
- **Date**: This field is used to select the date interested in the search
- **Time**: With this field you can select the time interval interested in the search
- **Action**: With this field you can select the queries you prefer to view.&#x20;

They are divided into the following 3:

- **All**: All visited domains will be shown
- **Allowed**: Only allowed domains will be shown
- **Blocked**: Only blocked domains will be shown
- **URL**: This field allows you to filter the search based on the chosen Url.
- **Category**: In this field you can select the category of the request(Blog, Chat, Gambling,etc...)
- **Objects for page**: This field simply allows you to select the number of domains you want to display for page.

Once the specifications have been selected, to apply them and view the result simply click on the \[*Search*] button.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/KUpL9fvKP54g8M_oo3a77_image.png" size="50" width="979" height="570" position="center" caption="Extended research menu" alt=" Extended search using various data and criteria" showCaption="true"}



In the image below is an example of a search, where you can see that blocked domains are distinguishable by a ban symbol placed to the left of the domain.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Kkh_I1HlCeoe-vn1SSe6J_image.png" size="50" width="979" height="118" position="center" caption="Domain locked" alt="Example of research on blocked domains" showCaption="true"}



### Real-Time Analysis

In this section you will be able to check the DNS traffic of the selected network in real time.



**Other ways to ask**:

- How to manage extended search.
- Managing extended search. How to.


[title] API for third-party integration (cloned)
[path] Pro & ProPlus/FlashStart's advanced configurations/

Available functions of the API:&#x20;



- **GetReport**: get all Cloud reports;
- **CreateProfile**: create a new profile;
- **ModifyProfile**: edit an existing profile;
- **DeleteProfile**: delete an existing profile;
- **SystemBlacklists**: get the profile's system blacklists (including scheduled restrictions);
- **ModifySystemBlacklists**: edit the profile's system blacklists (including scheduled restrictions);
- **PersonalLists**: get the profile's personal list (blacklists and whitelists);
- **ModifyPersonalLists**: edit the profile's personal list (blacklists and whitelists);


**EXAMPLE**:

- '***GetReport***' - integration of filter reports into an external application:
- **CustomerEmail**: to get the cumulative report of all sites, enter the registration email address of the related customer;
- **OfficeCode**: to obtain only a site-specific report, enter the code of the related site (OfficeCode);
- **ReportCode**: the code of the requested report (\*);
- **DateFrom**: date the data analysis begins;
- **DateTo**: end date of data analysis;
- **TimeFrom**: start time;
- **TimeTo**: end time;
- **ViewDetails**: switch (0 not required, 1 required): to specify whether details are required or not;
- **PortNumber**: can be set to "0";

## Information:&#x20;

If you wish to obtain the '*Allowed by Category*' report of all client profiles customermail\@mail.com, from 17/06/2018 to 20/06/2018, the request will be:
customermail\@mail.com .

RCATACCESSI\_CLOUD
2018-06-17
2018-06-20
00:00:00
23:59:59
0
0



**Other ways to ask**:

- How to use API for third-party integrations.
- Third-party integration via API. How to do it.





[title] Define my networks
[path] Pro & ProPlus/FlashStart's advanced configurations/Tool: Stop page/

This new section was created primarily for ISPs using one or more DNS Proxies. It enables the block page to respond correctly to various clients, even when their IP addresses cannot be entered directly in the “Networks” section (due to system-imposed limitations).
Since all DNS requests are forwarded to the DNS Proxy, which in turn forwards them to the cloud using a single public IP address, it is not necessary to register each public IP individually in the “Networks” section. However, you will need to enter your public IPs in the new “Define My Networks” section to ensure that the custom block page displays correctly.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/dmYiGe5RhMVPkchRyrCX__image.png" size="50" width="2158" height="820" position="center" caption="Define My Networks" alt="customize the stop page" showCaption="true"}



To add a new IP address for the blocking page to recognize, follow these simple steps:

1. Insert the IP address in the entry bar provided, making sure to separate the digits with a colon (“.”) character for IPv4 and a colon (“:”) character for IPv6. IPv6 addresses can be abbreviated by omitting leading zeros or by using double colons (“\::”) to represent sequences of zeros.
   The system supports both entering a single IP address and adding a block of addresses in CIDR format. Below are some examples of how to enter IP addresses correctly:

- IPv4 (single address):****
  44.68.121.88
- IPv4 (CIDR):****
  201.34.3.96/24
- IPv6 (single address):****
  2001:0db8:85a3:0000:0000:8a2e:0370:7334
  or abbreviated as:
  2001\:db8:85a3\::8a2e:370:7334
- IPv6 (CIDR):****
  2001\:db8\::/32

1. Confirm the entry by clicking on the “Add” button. If the value entered is valid and the operation is successful, the newly added address is displayed immediately below the entry panel.

To remove an IP address (or CIDR), simply click the trashcan-shaped button located to the left of the item in question.

**PLEASE NOTE**: 

1. IPs registered through this feature only allow the display of their own custom block page. Any DNS requests made from these IP addresses will be rejected, as they are not enabled for DNS service.
2. The IPs entered in this section are associated only with the global block page and not with the custom pages for each profile.

**Other ways to ask**:

- How to define my networks.
- Define my networks. How to.


[title] Remote End-Points
[path] Pro & ProPlus/

In an increasingly interconnected environment, **remote endpoints** play a key role in communication between devices and services on distant networks. In this guide,
we will explore the essence of these connection points, understand how they
they facilitate data exchange, and examine best practices for implementing them in an
effective ways.

You will discover the differences, benefits, and practical considerations that will guide you in choosing the approach best suited to your needs, across **two effective options**:

[ClientShield Remote Agent Installation via App](docId\:Rs1U-LTTgetSM6LDHJgob).&#x20;
[DoH and DoT Protocol Configuration](docId\:Y8JfA-LAuxpwgBgWJwJU2)&#x20;



**Other ways to ask**:

- How to configure ClientShield remote agents.
- ClientShield remote agent configuration. How to do it.


[title] Client Shield installation through the silent install
[path] Pro & ProPlus/Remote End-Points/ClientShield remote agent configuration/ClientShield for Windows/

You can install *Client Shield in silent mode* by running the following command line on command prompt (to be opened as administrator):
" msiexec /i "\<**ABSOLUTE PATH**>" KEY=\<**KEY**> SSL=\<true / false> /qn

**Then replace the following parameters**:


- \<**PERCURRENT**>: Full path to the "setup.msi" file (Example: C\:UsersUser1DesktopSetup.msi)
- \<**KEY**>: Key associated with the cloud profile you want to use (see menu step 2 Remote End-Points)
- **SSL**: With this parameter you can decide whether to also install the certificate that will allow you to avoid future errors

In a network with *Domain Servers*, you can use *Microsoft's Group Polic*y to install Client Shield on the various network devices.



**Other ways to ask**:

- How to complete ClientShield installation in silent mode.
- Installing ClientShield in Silent Mode. How to do it.


[title] Preventing users from ignoring DNS filter
[path] Pro & ProPlus/

You can prevent users from changing *DNS using Active Directory Group Policy*. See Microsoft's online guides for more information on Group Policy Objects (GPOs).

Another improvement is to *create some rules on your router/firewall* to automatically redirect DNS requests from PCs to the private IP address of the DNS Proxy.

In this way, internal devices configured to use a *DNS other than the Proxy DNS IP will be filtered using the default DNS filtering policies*.

**IMPORTANT**: This rule should be applied to all IPs except the Proxy DNS.

**Other ways to ask**:

- How to prevent users from ignoring DNS filtering.
- Preventing users from ignoring DNS filtering. How to.


[title] Granular Protection and Active Directory integration
[path] Pro & ProPlus/

## Granular protection and integration with Active Directory&#x20;

The *Pro+ version of DNS filtering* allows you to manage different filtering policies related to *Active Directory groups and users*.

To do this you need to configure:

-  **Windows connector**
- **DNS Proxy**

### Windows connector Configuration&#x20;

It must be installed in the *Microsoft Active Directory Server with the Administrator account*, and is used to synchronize users and groups with our Datacenters.&#x20;
Go to the dedicated guide [Windows connector setup](docId\:Nl0YvrsUsx-1nf_DV23e_)&#x20;

### DNS Proxy Configuration&#x20;

At this point you need to download and configure the *DNS proxy*.
Go to the dedicated guide [DNS proxy installation and configuration](docId\:iKT2bkWdeaoEl5hzuSlCf)**.**

## DNS Network Configuration&#x20;

The *DNS proxy IP address* must be the unique DNS server for PCs and WiFi guest devices.
It will also provide the internal Windows domain controller with *Active Directory DNS zones*.
You can configure *DNS settings by a DHCP server or manually configure DNS clients*.
To better understand how it works look at picture for [example](https://cloud.flashstart.com/customerarea/ca-include/img/knbase/NetworkDNSConfigurationX.png).&#x20;

## Prevent users from ignoring DNS filtering&#x20;

To improve network security by preventing users from changing DNS settings, follow this guide: [Preventing users from ignoring DNS filter](docId\:VHnZuHEuWf4SVS_K21WIb)&#x20;



**Other ways to ask**:

- How to manage granular protection integration with Active directory.
- Managing granular protection and integration with Active directory. How to.


[title] ClientShield remote agent configuration
[path] Pro & ProPlus/Remote End-Points/

*ClientShield* is an agent used to protect remote users' devices from dangerous or unwanted Web sites.

*ClientShield* also provides *the same protection as the corporate network*.
It is very easy to install and configure on users' devices.

### Desktop

- Go to the guide for [Windows](docId:0a8g03zxQ0IFiu0yI1Bqe).
- Go to the guide for [MacOs](docId\:oA6bQTPKouDJSrLWVji5u).

### Mobile

- Go to the guide for [Android/Chromebook](docId\:zdmz-TuqDQ05k3ZzA-S4c).
- Go to the guide for [IOs](docId\:s4_D_wFcNERpkqiolAS77).



**Other ways to ask**:

- How to configure ClientShield remote agents.
- ClientShield remote agent configuration. How to do it.


[title] Advanced: Multiprofile and Multipolitics
[path] Pro & ProPlus/FlashStart's advanced configurations/

## Multiprofile and Multipolitics

Multiprofile enables several profiles to be enabled and associated with a single network, so that different filtering rules can be used on the same public IP.
The filter provides 5 pairs of DNS addresses, each pair can be associated with a different profile:

**Primary**                    **Secondary**
185.236.104.104 - 185.236.105.105
185.236.104.114 - 185.236.105.115
185.236.104.124 - 185.236.105.125
185.236.104.134 - 185.236.105.135
185.236.104.144 - 185.236.105.145

To better understand how it works, let us proceed with an example;
in this case we want to define the following 2 profiles for a single Client with the same public IP:


- **Default** (**Primary DNS: 185.236.104.104; secondary: 185.236.105.105**): profile used by employees (with social network category locked).
- **Executive** (**Primary DNS: 185.236.104.114; secondary: 185.236.105.115**): profile used by management (with social network category unlocked).

First you need to access the management panel by entering your credentials; using the \[Profile] tab at the top of the dashboard, we can configure the default profile.
If you want to change the name you can do so by clicking on the pencil icon related to it and choosing a new name.

- Finally clicking on \[*Edit*] to apply the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Q2Eh-fAPWfwMejfw-SKpP_image.png" size="50" width="889" height="361" position="center" caption="Management Panel" alt="Popup and profile management panel" showCaption="true"}

After that we will go on to create a second profile (Executive) similar to the previous one, and we will go and choose DNS 185.236.104.114 - 185.236.105.115.

To do this, the following steps must be followed:

- **Click on the \[Profile] tab**.
- **Click on the \[Create New Profile] item** next to the + icon and fill in the following fields:
  - **Name** : Choose a name for the profile. In our case it will be Management .
  - **Time Zone** : Choose the time zone that will be used for Cloud functions.
  - **Mode** : Choose from:
    - *Normal:&#x20;*&#x42;locks only the chosen categories and blacklisted domains.
    - *Restricted* : Blocks everything except whitelisted domains.
  - **DNS** : Choose a diffrent DNS pair from the drop-down menu. In this example it will be 185.236.104.114 - 185.236.105.115.
  - **Networks** : Check the email/username or public IP address that you want to associate with DNS 185.236.104.114 - 185.236.105.115.&#x20;

**NOTE**: If no network has been added yet, this field will not be present. You can associate the address later, after you have created at least one network.

- Finally click \[*Insert*] to create the new profile.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/CgPbisORUSKibOU4iEiBD_image.png" size="50" width="921" height="313" position="center" caption="Creating Profile" alt="Network profile entry and creation" showCaption="true"}



If everything has been done correctly you will get a result similar to the following image:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/rlxUkdiM_sQ-c1F4EQoWs_image.png" size="50" width="990" height="388" position="center" caption="Configuration completed " alt="Network configuration completed" showCaption="true"}

At this point you can *configure the various filtering rules*, in our case we will block the social network category to the Default profile and unblock it to the Executives profile.
This way, requests to DNS 185.236.104.114 - 185.236.105.115 will respond to a different configuration than the Default DNS.

## Methods of Use&#x20;

At this point to use the profiles you have just created you will need to configure your network. To do this there are two possible options:

- *manually change device DNS based* on which profile you want to use on that pc.
- *Create redirection rules based on the originating IP*.

This is only possible if there are routers or firewalls that allow it (e.g., Mikrotik).


Related articles:
Mikrotik: How do I configure multiprofile?



**Other ways to ask**:

- How to manage multiprofiles and multipolicies.
- Managing multiprofiles and multipolicies. How to.


[title] Windows connector setup
[path] Pro & ProPlus/Granular Protection and Active Directory integration/

Download the Windows connector for Microsoft Active Directory Server from the following link:
[Downloading the Windows Connector](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=windowsconnector).

**IMPORTANT**: If you have multiple Microsoft Active Directory servers, you need to install the Windows Connector on only one of them.

**NOTE**: This guide is compatible with Windows Server 2012 and later versions. For older versions of the operating system, open a support ticket.

## Installing the Windows connector&#x20;

:::BlockQuote
Extract and install the connector on your *AD server*, using the *administrator's domain account*.
:::

**NOTE**: To ensure that you install the Windows connector with administrator privileges, right-click on the plugin and choose "Run as administrator."

**Proceed as follows**:

-  Click \[Next].
- Select I accept the terms of the License Agreement and then \[Next].
- Continue by leaving the defaults or choose the installation path by clicking \[Change...].
- Confirm with \[Next].
- Complete the installation by clicking \[Install].
- Click \[Finish] to start the plugin configuration.

## Windows connector configuration&#x20;

Fill out the form as follows (you can also change the language using the drop-down menu at the top right of the plugin):

-  **Username**: Enter the Cloud Filter username.
- **Password**: Enter the password for Cloud Filter.
- **Synchronize Every**: Choose how often to synchronize your groups and users with our data centers.

**NOTE**: You can force synchronization using the sync icon.

Click \[APPLY] to save the changes, then \[START] to start the service.
You should see the green message "*The service is running*" below the \[APPLY] button.
This means that you have configured it correctly and the synchronization of groups and users is underway.

You can close the connector by clicking \[X], confirm with \[Yes] and then press \[OK].

**NOTE**: This will not stop the service, it will only close the plugin interface.

Now it's necessary to enable some Audit policies on your Active Directory Server.
Please check the following guide:
[The setting of audit criteria](docId\:DXxUcHmLMOQDU2yzbwADB)&#x20;

**Other ways to ask**:

- How to configure the Windows connector.
- Configuring the Windows connector. How to.


[title] DNS Proxy - Advanced Tools
[path] Pro & ProPlus/Granular Protection and Active Directory integration/DNS Proxy Setup/DNS Proxy configuration/

Here is an explanation of the other optional menus:

- **N- Update Device IP**:

You can use this function to manually synchronize the public IP of the network with our hosts.

- **B- Restart Service**:

Restarts a service in the background. It is recommended to avoid its use unless there is a problem or in agreement with our service department.

- **P- Change Password**:

You can change the SSH console administrator password. It is strongly recommended to change it.

- **L- Change Language**:

Change the language of the DNS proxy by entering the language code (en, it, es ...).

- **R- Reboot system**:

Reboots the virtual machine.
Click Y to continue.

- **S- Shutdown**:

Click here to shut down the virtual machine. Confirm with Y.

- **X- Exit**:

Return to the login page.

**Other ways to ask**:

- Configure advanced DNS proxy tools.
- Configuring local and cloud DNS caches. How to.


[title] First configuration of Cloud Filter
[path] Pro & ProPlus/First Steps/

The guide on the first configuration of Internet Protection is about protecting your network and connected devices, providing step by step all the steps you need to take to get to the activation of the filter.

If this is the first time you are logging in or, if you have not yet configured a network, a First Configuration Support page will automatically open.&#x20;

![Login page of the DNS pannel ](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/rGG7cuh3VNfdPrXfZHdf2_untitled-design.png "Login ")

Otherwise, you can log in by clicking on the wrench at the top right of the panel and selecting \[First Configuration].



![First steps DNS Configuration](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/XDRgBjptMUDLv800ZNSg5_untitled-design-5.png "DNS Configuration")

From this page you will be able to choose whether to use the wizard, selecting your device from those present or the manual one.
If, on the other hand, the device being used is a *Push Device* see the 'Configuration with Push Device' guide.

![Choosing the Device ](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/cLXUeODkAIbBCJrH4nQ0x_general1.png "Devices")

At this point,**&#x20;follow one of the two methods:**

- Configuration wizard
- Manual Configuration

## First Method: Setup wizard

Choose the logo of your device, from those listed on the page, to proceed with configuration.
Select the model of your Router/Firewall and proceed.

![Choosing model of Router/Firewall ](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/pO1V0NUtxjFo-cT43Kss5_general2.png "Mikrotik OS example")

Then click on the **\[Start Configuration]** button.

![Starting Configuration](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/H3KZ9g_mmvn5Ywjr-ywnu_general3.png "Configuration model")

The window that appears shows the DNS to be configured on your Router/Firewall, also shown at the bottom left of each Cloud panel page, and the credentials to be used.

**PLEASE NOTE**: For security reasons only the first character of the password is shown.

![Running test of connection of the device](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/5U2AIyPZ-QIcTy_Ga1iye_general4.png "Testing connection")

In the window, at the bottom, you can choose from three different options, namely:

-  &#x20;**\[View guide]**: Clicking on it will show a guide with the various steps to follow to activate the service on the previously chosen device.
- **\[Skip the test and close]**: Making this choice will close the guide and thus complete the configuration procedure, without running the connection and DNS resolution tests.
- **\[Test device connection]**: Selecting this option will run a test, lasting a maximum of 90 seconds, that will check whether or not your Router/Firewall has synchronized correctly with our Servers.
  When finished, if the connection has not been successful, an error message, like the one shown below, will appear on the right.
  We recommend that in such a case you review the guide or contact us at technical support using the direct links that will appear below the error message.

![Network configuration is not connected  ](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/fKlZnws7POHVybdhgnQvD_general5.png "Network not connected")

In case of successful test instead, the following message will appear:

![Configuration Network succesfully](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/ApE7dHC7tC-kMUNlVB5RH_general6.png "Network connection")

In the page will disappear the button **\[Device connection test]** and it'll appear antoher one called **\[Open test DNS page].**

![Network connected visual](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/nFaizm1rPzSRS4RXEvd9z_general7.png "Network configuration")

Clicking on the latter will open a new page and further testing will be done to see if our DNS have been set up correctly.

If it fails, a series of FAQs will appear with solutions to the most frequently encountered problems. It will also be possible to open a support chat or ticket that will be answered as quickly as possible.



**PLEASE NOTE**: For the test to be successful you must be connected via an internal device to the network on which you wish to activate Cloud Filters.

![Reload page after Checking the DNS settings](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/XjGJ1gjJawpiS74pttUgp_general8.png "Reload page")

If the test is successful instead, it will be possible to close the test page.
Finally, close the window with the wizard by clicking **\[Close]**.

## Second Method: Manual Configuration

On the initial screen, click on the item \[Can't find your device? Switch to manual configuration] to proceed with manual configuration of the service.

Select I have a *Static IP* if your network has a static public IP otherwise on I have a *Dynamic IP*.
To find out this information you need to contact your provider or proceed as follows:

- Check your public IP by accessing, for example, this site [](https://www.whatsmyip.org/).
- Turn off your Router and turn it back on after a few minutes.
- Log back on to [](https://www.whatsmyip.org/) and check whether the IP has changed, in which case it is dynamic, or whether it has remained the same, so it is almost certainly static. To be certain, however, it is advisable to contact your provider.

  Follow, at this point, the directions for the type of Internet connection you have:
- A. Configuration with static public IP
- B. Configuration with dynamic public IP

### Option A: Manual Configuration with Static IP

Select the item 'I have a Static IP'. Then click on 'Continue'.

![Selected the configuration of IP ](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/isQz7u843UQ-e-2Lvvl-z_general10.png "Configuration IP")

Automatically the public IP of your network will be entered in the *Enter your IP field*.

**PLEASE NOTE**: We recommend checking to see if the IP entered is correct by going to [](https://www.whatsmyip.org/).
Click on \[Continue].

![Register your IP](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/nLku3JVuXEE-yZWCASEVQ_general11.png "IP registration ")

This page prompts you to enter the Brand and Model of the Router/Firewall on which you want to activate the Filtering in Cloud service.
You can usually find this information in the device label, located below the device.

**PLEASE NOTE**: This information will be used exclusively by us to be able to improve the service , adding new guides.
Once you have entered this information click on the orange \[Continue] button.

![Confirmation of the Brand and Model of your device ](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/LgXW9DlpSy9iPnmocldm__general12.png "Confirm Device")

![Configuration network completed](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/O23qTgttwWZcarrCQ6QKf_general13.png "Configuration network ")

Then clicking on **\[Run DNS test page]** will open a new page and run an additional test to see if the DNS on your network has been set up correctly.
If it fails, a series of FAQs will appear with answers to the most frequently encountered issues. You will also be able to open a support chat or ticket that will be answered as quickly as possible.

**PLEASE NOTE**: For the test to be successful you must be on a device internal to the network on which you want to activate Cloud Filters.

![Test succesfully](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/MMSh_-hCxgHJKDT47dAf7_general14.png "Test page")

Otherwise, a message like this will appear *Congratulations! Your network is now protected.*
If so, you can close the test page and the wizard window by clicking **\[Close]**.

### Option B: Manual Configuration with Dynamic IP

Select the item *I have a Dynamic IP*. Then click on **\[Continue]**.
This page prompts you to enter the Brand and Model of the Router/Firewall on which the Filtering in Cloud service will be activated.
You can usually find this information in the device label, located below the device.

**PLEASE NOTE**: This information will be used exclusively by us to be able to improve the service , adding new guides.
Once you have entered this information click on the orange **\[Continue]** button.

![Setting up and confirming the apparatus with dynamic ip](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/znxvg1c47NUlk8_D2Pq70_general15.png "Device brand IP Dynamic")

The window that appears shows the DNS to be configured on your Router/Firewall, also shown at the bottom left of each Cloud panel page, and the credentials to be used.

**PLEASE NOTE**: For security reasons only the first character of the password is shown.

![Configuration of the DNS with network](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/bl9jlPKKVOjCaRNkhixFy_general16.png "DNS configuration")

In the window, at the bottom, you can choose from three different options, namely:

-  **\[View guide]**: Clicking on it will show a guide with the various steps to follow to activate the service on the previously chosen device.
- **\[Skip the test and close]**: Making this choice will close the guide and thus complete the configuration procedure, without running the connection and DNS resolution tests.
- **\[Test device connection]**: Selecting this option will run a test, lasting a maximum of 90 seconds, that will check whether or not your Router/Firewall has synchronized correctly with our Servers.

When finished, if the connection has not been successful, an error message, like the one shown below, will appear on the right.

We recommend that in such a case you review the guide or contact us at technical support using the direct links that will appear below the error message.

![Network not connected with test](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/cw-ZoDm0Rd5k63pjhn-Kf_general17.png "Network connection failed")

In case of successful test instead, the following message will appear:

![Network connected succesfully](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/V-damjsRd69ai_1DPAs4B_general18.png "Network connected")

In the window, the **\[Test device connection]** button will disappear and the **\[Click here]** item will appear to the right under the caption *Congratulations! Your network is connected*.

![Network connected page](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/Q8i2L4AOH1We1iONYmpmB_general19.png "Network connected")

Clicking on the latter will open a new page and further testing will be done to see if our DNS have been set up correctly.


If it fails, a series of FAQs will appear with solutions to the most frequently encountered problems. It will also be possible to open a support chat or ticket that will be answered as quickly as possible.

**PLEASE NOTE**: For the test to be successful you must be connected via an internal device to the network on which you wish to activate Cloud Filters.

![DNS settings before reload page](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/yinWlTQ5kaJSMzKPq8sHC_general20.png "DNS test page")

If the test is successful instead, it will be possible to close the test page.
Finally, close the window with the wizard by clicking **\[Close]**.

**Other ways to ask**:

- How to approach the first configuration of Internet Protection.
- How to approach the first configuration of Internet Protection. Let's see how.


[title] ClientShield for Windows
[path] Pro & ProPlus/Remote End-Points/ClientShield remote agent configuration/

## Description<font color="#ff361d"> </font>

*Client Shield* is Windows software used to *protect external users' PCs from dangerous or unwanted sites*.
The protection provided through this Client is the same as that provided in the standard Cloud solution.
It is very easy to install and configure the Client on the user's PC.



## Requirements&#x20;

Client Shield is only compatible with 64-bit systems and can coexist with other VPNs.


**Supported Operating Systems**:

- Windows 11 64bit
- Windows 10 64bit
- Windows 8.1 64bit
- Windows 7 64bit

  **Network requirements**:
- Open TCP port 1194 to class 185.236.104.0/24
- Open TCP port 1194 to class 185.236.105.0/24
- Open TCP/UDP ports 80,443 to class 185.236.106.0/24

  **Upcoming versions**:
- MacOS
- IOs

## Activation&#x20;

Connect to the Cloud panel on which you wish to activate the Client and open the *CLIENT SHIELD ROAMING* menu.
Then click on the \[Continue] button to activate this feature.
Next, the panel will show the list of profiles (Step 1) and, for each of them, the corresponding key (Step 2).
Choose the profile to use and click on the symbol to the right of the key to copy it.
**NOTE**: The key will be unique for each profile.
Finally, download the Client by clicking on Download (Step 3).

## <font color="#000000"></font>

Double-click the file (Setup.msi) you just downloaded and proceed with the installation.

For CLientShield 1.2.0.0 users.
Internet Protection Client v2.0.0.0 is backward compatible with ClientShield v1.2.0.0, you can remove 1.2.0.0 without losing your registration

You have to **uninstall ClientShield 1.2.0.**&#x30; to install **Internet Protection Client 2.0.0.0.**



## Configuration&#x20;

Once the installation is complete, a new window should open automatically.
If not, double-click on th&#x65;*&#x20;Client* icon in the *Desktop*.
Fill in the fields as follows:

- **Profile Key**: Paste the alphanumeric key copied earlier from the *CLIENT SHIELD ROAMING menu*.
- **Description** (optional): Leave the default value (PC name) or enter one of your choice. This name will appear later on the Cloud panel in the Clients section.

  Finally, click on \[Register] to connect the device with our servers.
  If everything has been configured correctly the Security enabled item should appear.
  It is now possible to close the window since the service will continue to run in the background.
  **NOTE**: The Client will update automatically when a new version is available.

  At this point the Filter has been properly enabled on the PC.
  The Client will automatically forward all DNS requests to our IPs so no further changes need to be applied.

## Silent Mode Installation (Alternative)&#x20;

Alternatively, you can install Client Shield in silent (command line) mode, [click here.](docId:9-ZBIUSOohu4g0vdiZn8q)

## Troubleshooting&#x20;

To quickly solve registration and connection problems, check the following points:


- Verify that DNS resolves the domain "[api page](https://api.flashstart.com)".
- Allow 80.443/tcp outbound traffic to 185.236.106.106.
- Allow 1194/tcp outbound traffic to 185.236.104.104 and 185.236.105.105.
- Check that Windows Firewall is not blocking ports 443/tcp and 1194/tcp.

**Go to&#x20;**[troubleshooting ](docId\:GdRlfO62ldlVgcvCFEKoB)**guide!**



**Other ways to ask**:

- How to manage CloudShield for Windows.
- CloudShield management for Windows. How to do it.


[title] Cloud Bulk licensing
[path] Pro & ProPlus/License management/

To assign Cloud Bulk licenses to end clients, simply proceed as follows.

Click on the appropriate menu item *Licenses* > *Cloud Bulk Licenses* > *Assign Licenses to Customers*.

Select the customer from the drop-down menu by clicking in the text box. After selecting it, click on the **\[CONTINUE]** button.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/yUf_DcuB4bi3-gCie9uT8_bulk1.png" size="50" width="827" height="241" position="center" caption="licenses for clients" alt="Allocation of licenses to customers via bulk license distribution" showCaption="true"}

## Values in coin&#x20;

Licenses will have a value in Coins as described below:

-  **Businesses and Public Administration**: 1 nominal user equals 1 Coin.
- **Schools and Education**: 5 nominal users equals 1 Coin.


For example, assuming we have a business with 50 employees, 50 Coins will be scaled, one for each user.

Similarly, for a school with 1,000 students, to get the number of Coins to be scaled, simply divide the number of nominal users (in this case 1,000) by 5, then 200 Coins will be deducted.


- **Wifi Hotspot Areas**: the area in square meters will be considered without taking into account the number of users.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/IANZWvI66mDZ8ZDv5c512_bulk2.png" size="50" width="831" height="291" position="center" caption="licenses in coin" alt="Assigning licenses via coins" showCaption="true"}

## Assignment of licenses&#x20;

If this is the first time Bulk licenses are assigned to a client, they will be activated on the main location.

**PLEASE NOTE**: If the client has multiple locations, it will be necessary to repeat the assignment procedure for the other locations.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/oYYvAnyYdKoZSZqi2xp4H_bulk3.png" size="50" width="824" height="254" position="center" caption="Licenses" alt="Activation on Head Office" showCaption="true"}

Finally, in the summary window click on \[CONFIRM] to complete the assignment.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/DMiNyyrcamQQSajScAfXe_bulk4.png" size="50" width="832" height="537" position="center" caption="Confirmation" alt="Confirm the licenses" showCaption="true"}

**Other ways to ask**:

- How to Assign Licenses to Clients (Cloud Bulk Licenses).
- Cloud Bulk licenses and assigning licenses to clients. How to.


[title] The setting of audit criteria
[path] Pro & ProPlus/Granular Protection and Active Directory integration/Windows connector setup/

To enable *Security Auditing registration*, with the Administrator account in the Microsoft server, follow the next steps:

-  **Open the Group Policy Manager** from Start->Run->gpmc.msc.
- Right-clic&#x6B;**&#x20;Default Domain Policies** and choose Edit.
- **Open Computer Configuration**->**Policies**->**Windows Settings**->**Security Settings-**> **Advanced Audit Policy Configuration**->**Audit Policies**->**Account Logon.**
- **Right-click Audit Kerberos Authentication Service** (right) and then click Properties.
- **Select the Configure the following audit events** **and Success items**. Apply the changes by clicking \[Apply] and then \[OK].
- Now open **Computer Configuration**->**Policies**->**Windows Settings**->**Security Settings-**> **Advanced Audit Policy Configuration**->**Audit Policies**->**Logon/Logoff**.
- Right-click **Audit Logon** (right) and then click Properties.
- Select the **Configure the following audit events and Success items**. Apply the changes by clicking \[Apply] and then \[OK].

Open Start->Run->cmd and run gpupdate /force to apply the changes immediately.

Related Frequently Asked Questions:


[Configuring the Pro+ Filter - Introduction](https://cloud.flashstart.com/customerarea/share.php?Lang=IT\&mode=share\&module=88115ed8e82c07b09bc00058e6fb827b\&name=FAQ\&code=1458)
[Configuring the Windows Connector](https://cloud.flashstart.com/customerarea/share.php?Lang=IT\&mode=share\&module=88115ed8e82c07b09bc00058e6fb827b\&name=FAQ\&code=1459)



**Other ways to ask:**

- How to enable Security Auditing Registration.<font color="#f99900"> </font>
- Audit criteria. Let's see how.


[title] Tool: Search in lists
[path] Pro & ProPlus/FlashStart's advanced configurations/

The Search in lists feature allows you retrieve classification information for a specific domain.
To do this, type the requested domain in the input textbox. Then, select the checkboxes nearby to get the information you need.
Let's take a look at the results:
**Blacklist**: it shows the Macrocategory and the Category of the domain
**Malware**: it displays possible malware and/or other dangerous infections
**Geoblocking**: it indicates the location of the physical server hosting the domain
**Whitelist**: it shows whether that domain has been included in the Personal Whitelist

**Other ways to ask**:

- How to use API for third-party integrations.
- Third-party integration via API. How to do it.





[title] Tool: Import from txt file
[path] Pro & ProPlus/FlashStart's advanced configurations/

The Import from "*txt file tool*" allows, very simply, throug&#x68;*&#x20;a text file (.txt)*, to add a set of domains to personal Blacklists and/or personal Whitelists.

To do this, simply select, from the drop-down menu on the right of the *Destination field*, one of two options between *Personal Blacklists or Personal Whitelists*.
Once this is done, indicate in the *Upload TXT file field the path to the .txt file* with the list of domains or select it directly by clicking on \[*Browse*].
Finally click on \[*Import*] to add all domains to the chosen list.

This is a faster method of adding domains to related lists without having to write them one by one when there are many.
**PLEASE NOTE**: Domains in the text document should be written in a listed manner.
As shown in the image:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/_24XUsQEBIShvBOJkVHtC_image.png" size="50" width="548" height="309" position="center" caption="Txt File" alt="Graphical demonstration txt file with domains" showCaption="true"}



**Other ways to ask**:

- How to import file from txt.
- Importing files from txt. How to.


[title] Sales marketing tools
[path] Pro & ProPlus/

We have developed a number of useful tools to increase filter sales, tailored to help retailers increase their business.

## Promo Link&#x20;

Customize your Web site and communications with personalized links!
You will simply have to copy the *link in the dedicated section*, generated especially for you. The page with the form will be customized with your logo and data, and conversions will be automatically linked to your master data. [Go to the tool](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)

## Promo Card&#x20;

These are cards that contain a PIN for free 30/60-day activation, which you can insert in *the boxes of Routers to be shipped or used in communication*.
From the configurator you can upload your logo, choose from *3 card sizes*, and decide on the *trial duration*, as well as the language. [Go to the tool](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)

## Promo Mail&#x20;

An email marketing campaign in 2 minutes! Create a *customized promotional mailing*, *linked to a landing page* with an information request form!
You can choose from *various mail templates*, dedicated to *different types of customers*.
You can send the mails directly from the customer area or send them to your inbox and then convey them to your customers. [Go to the tool](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)

## Graphical Material

Here you can find a collection of official promotional materials that you can use in your communications. [Go to the section](https://cloud.flashstart.com/customerarea/mtools/endusertrials/?\&lang=EN)



**Other ways to ask**:

- How to manage Marketing tools.
- Managing Marketing Tools. How to.


[title] Demo License activation
[path] Pro & ProPlus/First Steps/

Through registration for the service and activation of the demo license, it is possible to take advantage of the DNS filter through a 15-day trial to have a chance to test first-hand the benefits of the service it offers.

## Service Registration

Log on to the following address<font color="#0C121D">  </font>and click on \[Register] to proceed with registration:

![Service Registration](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/oSDztOEnbdTsgKWKBiE2v_image.png "Service Registration")

### Complete the page that opens as follows:

-  **User Type**: Select from the drop-down menu the type of user you intend to register from Company/Professional, Public Entity, School, Reseller and Private User.
- **Business Name**: Enter your Business Name.
- **First Name**: Enter the First Name of the referring user you wish to register.
- **Last Name**: Enter the Last Name of the referring user you wish to register.
- **Country**: Select from the list the country to which you belong.
- **Municipality**: Enter the first few letters of the Municipality and confirm by clicking on the correct entry from those listed in the drop-down menu.
- **Email**: Enter a valid Email to be contacted.
- **Password**: Enter your valid Password.
- **Confirm Password**: Confirm your password.
- **Mobile/Direct Phone (optional)**: Enter a phone number, personal or company, so that you can be contacted later for technical/commercial advice.
- **Skype (optional)**: Enter, if you have, your Skype account.

Finally, check the *I agree to privacy* - *Registration is protected by SSL protocol* and click on the green \[Start Trial] button.
A new page will then open where you can activate a Demo with a validity of 1 month.

![Tabular compilation form with personal data entry](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/nkB0yhQ-BIG7-MlbpxS2t_content1.png "Compilation Form")

## Demo licence activation

Select from the drop-down menu *I want to activate a free Demo* and click \[Continue].



![Free Demo activation](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/-V9txZeJrqAozEwvXvcH5_content2.png "Licencies for free entity and demo")

Select the *Cloud Filter* / *Cloud Filter* item from the drop-down menu.

![Attivation of cloud fiter for a new license](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/lXkwDxU2qEXYYTyO_q1rJ_content3.png "Cloud filter for a new license")

A summary page with the start and end date of validity of the Demo license will be shown. Then click \[Continue] to proceed with license generation.

![New license to be activated](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/ysh3CE7iU_bJduxLl038u_content4.png "Active the license")

Wait for the license to be generated.
**PLEASE NOTE**: Do not close the web page during this step otherwise the license will not be generated.

![Loading of the new singolar license generation](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/1Un_Pqd1LyBAdpEjQ-5Fh_content55.png "Generation of License")

At this point the license has been successfully generated and you can access your Cloud Filter configuration page by clicking on the \[Access Configuration] button.

![Configuration DNS Filter and summary about the registration sent by email](https://app.archbee.com/api/optimize/qeNTDI134aDAkmAtZMoNc/i0viLEyNLhY1nqPHdIMWf_content6.png "Configuration FIashStart Filter")

Next, enter your registration credentials.

### Other ways to ask:

- How activate a demo license and sign up at the service.
- Service registration and attivation of demo license. Let's see how.


[title] Tool: Advanced settings
[path] Pro & ProPlus/FlashStart's advanced configurations/

This advanced setting, enabled by default, is used to be able to configure Dynamic DNS service, on your Router/Firewall, using dyndns.org as the host.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/qVOPWL7Z28CoCDYH1wKgq_image.png" size="50" width="609" height="327" position="center" caption="Advanced Settings" alt="configure Dynamic DNS service" showCaption="true"}

**Other ways to ask**:

- How to manage advanced settings.
- Managing Advanced Settings. How to.


[title] The configuration of the DoT protocol on Mac
[path] Pro & ProPlus/Remote End-Points/DoH and DoT Protocol Configuration/

Apple natively offers DNS-over-HTTPS (DoH) or DNS-over-TLS (DoT) configuration directly in the operating system.

This tutorial will guide step by step through the configuration of DoT on macOS. DoT allows you to encrypt DNS resolution information via TCP protocol, providing greater privacy of DNS queries both in the local network and over the Internet.

Here's how to proceed:

1\. **Download&#x20;**&#x74;he provider profile of your choice from GitHub and open it.
2\. **Go&#x20;**&#x74;o: Apple > System Settings > In the sidebar, click on: Privacy and Security > On the right, click on: Profiles.
NOTE: You may be asked to enter your password or other information during installation.
3\. In the "**Downloaded**" section, double-click the profile.
4\. **Check&#x20;**&#x74;he contents of the profile and, if it is correct, click on: Continue > Install or Sign up.
5\. You can **check&#x20;**&#x69;nstalled profiles at any time through:
Apple > System Settings > In the sidebar, click on: Privacy and Security > On the right, click on: Profiles.

From here, you can select the desired profile to view its information. Now you are ready for safer and more secure browsing on macOS!

**Other ways to ask**:

- How to configure DoH and DoT.
- Configuring DoH and DoT. Let's see how.


[title] Install to APP for Android/Chromebook
[path] Pro & ProPlus/Remote End-Points/ClientShield remote agent configuration/ClientShield for Windows/

**1.&#x20;**&#x44;ownload the app from Play Store and open it.

**2.&#x20;**&#x59;ou will be required to input the Security Key (the “Security Key” is a Key associated with the user navigation profile. It is needed in order to register the App on the cloud, and so that the App can be associated to the chosen navigation profile).
Where can you find the Security Key? You can find it [here.](https://cloud.flashstart.com/?direct=1\&go_menu=CL_CLIENT_SHIELD\&lang=EN)&#x20;

::Image[]{src="https://flashstart.com/wp-content/uploads/2022/02/fs_guida_appandroid_01-en.png" size="50" width="2048" height="895" position="center" caption="Security key" alt="Security key" darkWidth="2048" darkHeight="895" showCaption="true"}

::Image[]{src="https://flashstart.com/wp-content/uploads/2022/02/fs_guida_appandroid_03-en.png" size="50" width="2048" height="863" position="center" caption="Disable PIN" alt="Find Disable PIN" darkWidth="2048" darkHeight="863" showCaption="true"}

**3.&#x20;**&#x49;n order to proceed with profile registration, copy and paste the Security Key and type into the “Description” field the client name that will appear in the protection management panel.

**4.&#x20;**&#x43;lick on “Enable protection” to configure the protected VPN on the device.
(Note: Consent to the authorization of the VPN configuration).

**5.&#x20;**&#x57;ait for the protection to become active.

**6.&#x20;**&#x43;ongratulations! Your device is now protected!

:::hint{type="warning"}
**Important Device Settings**

To ensure continuous and uninterrupted protection, please verify your Android battery optimization settings. Make sure they are not set to be too restrictive, as this might force the system to close the app in the background. Furthermore, you must enable the **Always-on VPN&#x20;**&#x66;eature specifically for this application by navigating to your device's network settings.
:::

## How to change the navigation profile after registration

**1.&#x20;**&#x41;ccess the panel for protection management here.

**2.&#x20;**&#x4F;pen the “Clients” tab and click on the pencil.

**3.&#x20;**&#x43;hange the client profile and click on “Save”.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/pf_w-qW6fxCS-bIhql3LT_image.png" size="50" width="737" height="640" position="center" caption="Navigation Profile" alt="Navigation Profile Change" darkWidth="737" darkHeight="640" showCaption="true"}


How to disable Android protection
---------------------------------

In order to disable the mobile protection, use the “Disable PIN” that you can find [here](https://cloud.flashstart.com/?direct=1\&go_menu=CL_CLIENT_SHIELD\&lang=EN).&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/1NPq_qjhR0Pp7qqUDtbSE_image.png" size="50" width="745" height="316" position="center" caption="Disable PIN" alt="Find Disable PIN" darkWidth="745" darkHeight="316" showCaption="true"}

**Notes**

You are advised to use App Locker in order to prevent the removal of the app. The app is programmed to remain always connected to the VPN once it is activated. When the app is restarted / turned off / updated, it will automatically connect to the VPN network.

## Internet Protection for Android

When the application is started, a unique ID is assigned to the user's device, which is necessary together with the profile key to register to the cloud panel.
For a quick and practical search from the panel, the description field allows us to enter an identification name.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/xjSaN7VF784vh9Zj17pra_image.png" size="50" width="288" height="621" position="center" caption="Registrazione del dispositivo" alt="Registrazione del dispositivo" darkWidth="288" darkHeight="621" showCaption="true"}

After successfully registering your device, you will need to provide **authorization&#x20;**&#x74;o start the VPN trough the **ACTIVATE SECURITY** button.

Once the authorization is given, you will go to the **status page** where the connection to the VPN service will begin.You will be notified about the connection and the status page will be updated.

The status page tells you that the device is now protected! From here we can obtain information about the user and the IP by clicking on the **information** button.

To proceed with closing the VPN protection,you must click on "**Disable protection**" and will be redirected to the disabling page.

Here, you have to enter the numeric **PIN&#x20;**&#x74;hat disables the protection and you will be redirected to the final status page, which will also notify us through a notification that the device is no longer protected..

With a simple click on "**ACTIVATE SECURITY**" a new VPN connection will be established and the device will be protected again.

### How to protect your device from disabling the app?

The application has been designed to **always stay connected** to the VPN once activated. When restarting / shutting down / updating the application it will automatically connect to the VPN network.
It is advisable to be aware of the **App Locker** usage to prevent the application from being uninstalled, thus the only way to disable the connection is to enter the PIN inside the application.

### How to Access Debugging Logs

This advanced procedure allows you to record application activities to help technical support diagnose complex anomalies.

- Click the **"i"** icon inside the application.
- Tap the application version **7 times** quickly to unlock a hidden system menu.
- Select the newly appeared **Developer options** on the screen.
- Enter the **Debug logging** section and enable the toggle located in the top right corner.
- Go back, use the app normally, and **replicate the exact problem** you are experiencing so it can be recorded.
- Return to the **Debug logging** menu and click the **Send all** button to automatically transmit the log files to noc\@flashstart.com.
- **Disable the toggle** in the top right corner to stop the recording and return the app to standard operation.

**Other ways to ask**:

- How to configure ClientShield for Android.
- Configuring ClientShield for Android. How to.


[title] DoT/DoH configuration guide on iOS (version 14+)
[path] Pro & ProPlus/Remote End-Points/DoH and DoT Protocol Configuration/

This guide shows the steps required to configure DoT (DNS over TLS) or DoH (DNS over HTTPS) protocol on iOS devices with version 14 or later. The example images show the steps using an iPhone, but the procedure is identical for those using an iPad.

## Steps for configuration

**1. Creating the configuration profile**
In order to set up DoT/DoH on iOS, you must first create a configuration profile. You can use an online tool to generate it:
**1.1** Go to the [Secure DNS profile creator](https://dns.notjakob.com/tool.html) site directly from the browser of your iOS device. To be guaranteed that the procedure will work properly, we recommend that you use Safari as your browser;
**1.2** Enter the required parameters, as follows:&#x20;

- In the Name of DNS provider field you must enter the name of the profile you are creating, for example, “exampleName.”
- Immediately below, you will find the two types of protocols available. Here, choose the one that best suits your needs from the options “DNS-over-HTTPS (DoH)” and “DNS-over-TLS (DoT).”
- Finally, enter the URL provided by the cloud panel in the DoH server URL or DoT server URL field, depending on the protocol selected in the previous step. NOTE: If you opted for DoH, make sure that the URL starts with the scheme related to that protocol, i.e., [https://](https://dns.notjakob.com/tool.html). Otherwise, the configuration procedure will fail.

**2.&#x20;**&#x41;t this point, you must click on the green button at the bottom, called “Add to profile,” which has the effect of generating the file with the profile inside. A dialog box will open confirming that the profile has been added. Click on the “Close” button.

**3.&#x20;**&#x54;o download the profile, simply click again on the green button at the bottom, this time titled “Download profile.” Another dialog box will open alerting you that a website is trying to download a configuration profile. To confirm, click “Allow.” Finally, a final dialog box will inform you that the profile has been successfully downloaded and can be installed from the system settings.

## Installation of the configuration profile

After downloading the configuration profile file from the website, follow these steps:

**1.** Open the Settings app on your iOS device.

**2.&#x20;**&#x47;o to General > VPN and device management.

::Image[]{src="https://flashstart.com/wp-content/uploads/2025/03/Senza-titolo.png" size="30" width="213" height="468" position="center" caption="Mobile Settings" alt="Mobile Settings" showCaption="true"}

::Image[]{src="https://flashstart.com/wp-content/uploads/2025/03/zxb.png" size="30" width="495" height="1075" position="center" caption="General Settings" alt="General Settings" showCaption="true"}

**3.&#x20;**&#x48;ere, under the section related to VPNs, you should see the profile that you precendently downloaded, under the name “Encrypted DNS (DoH, DoT).”

::Image[]{src="https://flashstart.com/wp-content/uploads/2025/03/sdf.png" size="30" width="495" height="1075" position="center" caption="VPN " alt="VPN and Device Menagment" showCaption="true"}

::Image[]{src="https://flashstart.com/wp-content/uploads/2025/03/cgmdcj.png" size="30" width="495" height="1075" position="center" caption="Install Profile" alt="Install Profile" showCaption="true"}

**4.&#x20;**&#x54;ap Install and follow the on-screen instructions. You may need to enter your device unlock code to authorize the installation.

::Image[]{src="https://flashstart.com/wp-content/uploads/2025/03/6.png" size="30" width="495" height="1075" position="center" caption="Warning" alt="Warning Message" showCaption="true"}

::Image[]{src="https://flashstart.com/wp-content/uploads/2025/03/7.png" size="30" width="495" height="1075" position="center" caption="Install Message" alt="Messaggio di installazione" showCaption="true"}

::Image[]{src="https://flashstart.com/wp-content/uploads/2025/03/8.png" size="30" width="495" height="1075" position="center" caption="Profile Installed" alt="Profile Installed" showCaption="true"}

**Other ways to ask**:

- How to configure DoH and DoT on Android devices.
- Configuring DoH and DoT on Android devices. Let's see how.


[title] ISP Lite & Premium (cloned)
[path] /


[title] Mikrotik for ISP: NAT rules to DNS Proxy
[path] ISP Lite & Premium/ISP and WISP Setup Guide/Cloud and local DNS cache/

If you've installed the DNS Proxy machine, you need to create NAT rules on Mikrotik to automatically redirect all DNS requests (port 53 TCP and UDP) to DNS Proxy IP, except those that come from DNS Proxy itself.

Copy the following commands and replace \<**DNS\_Proxy\_IP**> with the DNS Proxy IP.
Then paste it into your Mikrotik terminal:

*/ip firewall nat&#xD;*&#xA;*add action=dst-nat src-address!=\<**DNS\_Proxy\_IP**> comment=internetprotection chain=dstnat dst-port=53 protocol=udp to-addresses=\<**DNS\_Proxy\_IP**> to-ports=53&#xD;*&#xA;*add action=dst-nat src-address!=\<**DNS\_Proxy\_IP**> chain=dstnat dst-port=53 protocol=tcp to-addresses=\<**DNS\_Proxy\_IP**> to-ports=53&#xD;*&#xA;*/ip firewall nat move \[/ip firewall nat find comment=internetprotection] 0*

**Other ways to ask**:

- The operation of the general NAT rules for Mikrotik.
- The general NAT rules for Mikrotik. How to manage them.


[title] ISP and WISP Setup Guide
[path] ISP Lite & Premium/

ISPs and WISPs can easily protect their networks by configuring our Filters to avoid malicious content and malware, which are often responsible for bottlenecks that increase help desk effort.
Our Lite solution also fully supports the CGNAT environment.
Depending on the size of the customer base, different configuration modes are available to best suit any reality:

- [Pure Cloud](docId\:w_P50raVEajgBl11-cPx6): secure resolvers will be set up in edge routers as forwarders, if clients use the router's DNS as a server, or deployed directly in the client's network configuration (e.g., via DHCP).
  With Mikrotik it is also possible to configure some destination rules (NAT rules) to automatically redirect all DNS requests to our datacenters.
- <font color="#ff9900"> </font>: an on-premises virtual machine will be installed within the ISP's network and will forward DNS traffic to our Cloud hosts.
  This mode of configuration will greatly increase performance by benefiting from a zero-latency local caching environment.
  It will also allow you to easily configure and manage different filtering policies for your clients.

**Below are our guides:**

- [Pure Cloud](docId\:w_P50raVEajgBl11-cPx6)
- [Cloud and local DNS cache](docId\:TO9zfCXVapsonPKX6JaC8)&#x20;

**Additional feature:**

- [Data Export](docId\:hr5eclfhMgXcmkOe_fPmq)&#x20;
- [Import RPZ lists](docId\:GkqhBDT4irFobw6O8z9tI)&#x20;

**Other ways to ask:**

- How to Configure ISP Setup and WISP.
- Configuring ISP Setup and Wisp. How to.


[title] Import RPZ lists
[path] ISP Lite & Premium/

The Import RPZ lists service allows personal RPZ lists (e.g., [https://threatfox.abuse.ch/downloads/threatfox.rpz](https://threatfox.abuse.ch/downloads/threatfox.rpz)) to be imported to the DNS Proxy.

File change control and eventual import is performed every 30 minutes.

To manage the service access the admin panel under A Advanced configuration » \[Z] - Import RPZ lists.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/go8dR09IlrSNAZXWj4IYf_image.png" size="50" width="405" height="262" position="center" caption="Prompt" alt="Import RPZ Lists" showCaption="true"}

It is advisable to block Proxy & Bypass Filters on the Cloud panel for proper operation of RPZ policies.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/xB693FAf7JX4MMWWq5nEa_image.png" size="50" width="902" height="121" position="center" caption="Cloud Panel" alt="Block Proxy and Bypass Filters on the Cloud" showCaption="true"}

## <font color="#000000"></font>



<font color="#ff361d">**1.** </font>Access the Import RPZ list menu.

<font color="#ff361d">**2**</font><font color="#ff361d">**.** </font>Activate the service by typing y and pressing ENTER.

<font color="#ff361d">**3**</font><font color="#ff361d">**.** </font>On the next screen, type y and press ENTER to create the fsupload user (wait for the procedure to run).

<font color="#ff361d">**4**</font><font color="#ff361d">**.** </font>On the next screen, type y and press ENTER to proceed to enter the password on the fsupload user.

It is always possible to change the password from the Change fsupload password menu.

## <font color="#000000"></font>

To import an RPZ list, an SFTP client (e.g., FileZilla or Linux/Windows sftp) must be used.

## <font color="#0C121D"></font>



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/NCw-6IY3xa-Z8aRKAK2b4_image.png" size="50" width="713" height="207" position="center" caption="SFP " alt="SFTP Access Parameters" showCaption="true"}

**Standard access mode:**

With any SFTP client connect with the listed parameters and the password chosen during configuration.

**SSH key access mode**

Enable the access mode from the Change configuration menu and enter the SSH keys of the machines enabled to access via the Manage SSH Keys » Add key.

## <font color="#000000"></font>

The following formats are supported:

- Standard RPZ zone files
- List Domains

### Standard RPZ zone files

Standard RPZ files with Policy Triggers and Policy Actions

**Example RPZ zones:**



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/M7_gX_Gpp6YzETWW82XuZ_image.png" size="50" width="723" height="340" position="center" caption="RPZ" alt="RPZ Zones" showCaption="true"}

**Domain List**

It is possible to import a list of domains to be blocked and define policies for the list.

The policy definition must be entered in the first line respecting the following format:



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0X6415wrxow9RfO7QN7JV_image.png" size="50" width="717" height="66" position="center" caption="Format" alt="Policy Definition" showCaption="true"}

**Variables definition**

- block\_type
  indicates the block type, enter one of these values.
- block
  the domain is blocked with not-existent domain error.
- send\_to\_ip
  the domain is resolved with the IP given in destination.
- send\_to\_domain
  the domain is resolved with the domain specified in destination.
- destination
  mandatory if block\_type is send\_to\_ip or send\_to\_domain, indicates the IP or domain to resolve.

**Example file with resolution to the domain example.com**



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/J64QGpGS_YZIOCv75Liz9_image.png" size="50" width="725" height="211" position="center" caption="Example.com Domain" alt="Resolution to the Example Domain" showCaption="true"}

**Entering RPZ into the configuration**

- Log in sftp to the machine with the user fsupload.
- Access the fsupload/rpz/ folder.
- Upload the file with the extension .load.
- Wait for the timing of the procedure or, to perform the import immediately, access the Check RPZ lists now menu.

## <font color="#000000"></font>

- Log in sftp to the machine with the user fsupload.
- Access the fsupload/rpz/ folder.
- Remove the file with the .db extension.
- Wait for the timing of the procedure or, to perform the removal immediately, access the Check RPZ lists now menu.

## <font color="#000000"></font>

- Log in sftp to the machine.
- Access the fsupload/rpz/ folder.
- Download the files with the extension .error and remove it from the folder.
- Open the file with a text editor and move to the end of the file to check the error.
- Correct the file and retry RPZ Insertion in the configuration.

## List import example

The example below shows the import of an RPZ file using the sftp command, available on both Windows and Linux, in SSH key access mode.

**Notes:** the first time you log in you will be asked for permission to log in, type yes and press ENTER.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/zJ8rgZaFQ1npS0zuK_bA0_image.png" size="50" width="716" height="212" position="center" caption=" RPZ file using the sftp" alt="the import of an RPZ file using the sftp command," showCaption="true"}

## Menu Import RPZ List&#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/gvvToHsYEuJfYtAXrx6lm_image.png" size="50" width="453" height="300" position="center" caption="import menu" alt="Menu Import RPZ List " showCaption="true"}

## <font color="#000000">Disable service / Enable service</font>

Access the menu to disable or enable the RPZ import service.

### Disable service

<font color="#ff361d">**1.** </font>Access the \[D] - Disable service menu.

<font color="#ff361d">**2.**</font><font color="#ff9900"> </font>Type y and press ENTER to confirm deactivation (wait for the procedure to run).
Access the menu to disable or enable the RPZ import service.

### Enable service

<font color="#ff361d">**1.** </font>Go to the main menu Import RZP lists.

<font color="#ff361d">**2.**</font> Type y and press ENTER to confirm activation (wait for the procedure to be executed).
Notes: if the fsupload user was not present it will be created and configured

## Change configuration

Enable access via public SSH key

<font color="#ff361d">**1.** </font>Access the \[C] - Change configuration menu.

<font color="#ff361d">**2.**</font> Type y and press ENTER to set up access.

<font color="#ff361d">**3.** </font>Type y and press ENTER to immediately manage the enabled SSH keys,
or type n and press ENTER to return to the Import RPZ lists menu. It is possible to manage SSH enabled keys from the menu.

## Manage SSH Keys

Through this menu you can manage the SSH keys authorized for access.

<font color="#ff361d">**1.** </font>Access the \[M] - Manage SSH Keys menu.

### View authorized keys

<font color="#ff361d">**1.**</font> Access the \[V] - View authorized keys menu. <font color="#ff361d">**2.**</font> If there are multiple SSH keys, the system divides the view into blocks, press the space bar to display the next block.

### Add key

<font color="#ff361d">**1.**</font> Access the \[A] - Add key menu. <font color="#ff361d">**2.**</font> Enter an identifying name for the key and press ENTER, only letters, numbers and \_ character are allowed.
This name will be used when deleting the key <font color="#ff361d">**3.**</font> Enter/Copy the SSH key of the machine authorized to access and press ENTER (*wait for the procedure to be executed*).

### Delete key

To delete an SSH key you need to know the idenfiticative name given to the chive when entering it.

If you do not remember the name à you can view it through the ***Manage SSH Keys » View authorized keys*** menu.
 <font color="#ff361d">**1.**</font> Access the \[D] - Delete single key menu. <font color="#ff361d">**2.**</font> Enter the idenficative name of the key to be deleted and press ENTER (*wait for the procedure to run*).

### Clear all keys

Through this menu all SSH keys will be cleared:
 <font color="#ff361d">**1.**</font> Access the \[C] - Clear all keys menu. <font color="#ff361d">**2.**</font> Type y and press ENTER to confirm the deletion (*wait for the procedure to run*).

## <font color="#000000"></font>

<font color="#ff361d">**1.**</font> Access the \[P] - Change fsupload password menu. <font color="#ff361d">**2.** </font>Type y and press ENTER to proceed to enter the password on the fsupload user.&#x20;

## Check RPZ lists now

Checking the lists to be imported is done automatically every 30 minutes if execution is needed access this menu.
 <font color="#ff361d">**1.**</font> Access the \[I] - Check RPZ lists now menu. <font color="#ff361d">**2.**</font> Type y and press ENTER to confirm the check (*wait for the procedure to run*). <font color="#ff361d">**3.**</font> When finished, the system will show ***the current import status***.

## View RPZ lists import status

<font color="#ff361d"> </font> Access the \[S] - View RPZ lists import status menu.

<font color="#ff361d">**2.**</font> Type y and press ENTER to confirm (*wait for the procedure to run*).

## Legend

- Last check/Last import » last check performed.
- Last check: indicates that the check was performed but no changes were present.
- Last import: indicates that the check was performed and changes were made.
- Loaded » RPZ lists successfully loaded into the file configuration with .db extension.
- To be parsed » RPZ lists that need to be checked by the system files with .load extension.
- To be removed » RPZ lists to be removed, they are loaded in the configuration but no longer have .db files in the folder.
- Error » RPZ lists that were checked but generated error and were not loaded into the configuration files with extension .erro



**Other ways to ask**:

- The Import RPZ lists service allows personal RPZ lists
- How to Import RPZ lists.


[title] Data Export
[path] ISP Lite & Premium/

The Logs export service allows the export of DNS Proxy browsing logs.
The browsing logs are compressed into files with the extension **.tar.gz** and sent every 5 minutes by ISP-type DNS Proxies and every hour by DNS Proxies with Active Directory.

If the file is not transferred, it remains pending and is transferred at the next execution.
In case the same remote host is configured on two or more DNS proxies.
To avoid file conflict problems, one of the following options should be chosen:


- configure on the DNS Proxy a unique hostname for each device;
- configure multiple destination folders in the Data Export, one for each DNS Proxy.

**Note:**

- Untransferred files remain in pending status for up to 2 days, but in the case of 95% occupied disk space, all pending files are deleted.
- The date entered in the logs is set with [Timezone BST](https://dateful.com/convert/british-summer-time-bst).&#x20;
- The file name will be in the format: bind-HOST\_NAME-YYYYMMDDHHMMSS.tar.gz
  Where HOST\_NAME is the machine name, YYYYMMDDHHMMSS is the timestamp of the file creation *(e.g., bind-dns\_proxy\_test-20231002101500.tar.gz).*

To manage the service access the admin panel in \[A] - Advanced configuration " \[L] - Logs export.&#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/NIaaxFIVTQFYLiS20VGv1_image.png" size="50" width="405" height="262" position="center" caption="prompt" alt="command prompt" darkWidth="800" darkHeight="518" showCaption="true"}

## <font color="#000000"></font>

<font color="#ff361d"> </font>*Access theLogs export menu*

<font color="#ff361d"> </font>Activate the service by typingy and pressing ENTER.

<font color="#ff361d"> </font>*Sending mode&#x20;*: enter the file sending mode and press ENTER:

- **SFTP&#x20;**&#x73;upports password and public key authentication methods
- **SCP&#x20;**&#x73;upports only public key authentication methods&#x20;

<font color="#ff361d"> </font>*Remote host*: enter the domain or IP of the host on which to send data

<font color="#ff361d">**5.**</font> *Remote port*: enter the port of the host on which to send data

<font color="#ff361d"> </font>*Username*: enter the user enabled to send

<font color="#ff361d">**7.**</font> *Login mode*: enter the authentication mode:

- **password&#x20;**&#x66;or user and password authentication, available in SFTP sending mode **- sshkey&#x20;**&#x66;or public key authentication.
- In this case, it is necessary to copy the key of the DNS proxy to the target host destination, see ***Menu Logs export » View local SSH Key.***

<font color="#ff361d">**8.** </font>Only if *Login mode = password*, Enter password: enter the login password for the remote host.

<font color="#ff361d">**9.**</font> *Remote path&#x20;*: enter the destination path to the files.

<font color="#ff361d">**10.**</font> Confirm the configuration by typing y and pressing ENTER.

<font color="#ff361d">**11.**</font> On the next screen:

- *If **sshkey&#x20;**&#x61;ccess mode was selected*, type y and press ENTER to display the local SSH key to be entered into the target host.
- You can also view the key later via the Logs export menu ***Menu Logs export » View local SSH Key.***
- *If **password&#x20;**&#x61;ccess mode was selected type&#x20;**&#x20;&#x20;*****y&#x20;**&#x61;nd press ENTER to proceed to test sending a file.

It is also possible to test file sending at a later time via ***Menu Logs export » Test export***

## <font color="#000000"></font>

If the service is active the saved configuration is shown, type y and press ENTER to access the Logs export service management

If the service is not active you are asked to activate the service, type y and press ENTER to proceed to activation.

**Example active service configuration:**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/-t22zJB3DBH6KOC-H3_xJ_image.png" size="50" width="376" height="244" position="center" caption="prompt" alt="command prompt" darkWidth="800" darkHeight="519" showCaption="true"}

**Service management menu:**

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/1PR5mMIE8tQwMHu33MOlC_image.png" size="50" width="373" height="225" position="center" caption="prompt" alt="type y" darkWidth="800" darkHeight="483" showCaption="true"}

## Disable service

Access the menu to disable the Logs export service.

<font color="#ff361d">**1.**</font> Access the \[D] - Disable service menu.

<font color="#ff361d">**2.**</font> Type y and press ENTER to confirm the deactivation.

## <font color="#000000"></font>

Access the menu to change the configuration of the Logs Export service.

**Notes:**

This screen is also shown when reactivating the service.
Values in square brackets are those previously configured, press ENTER to confirm the previous value:

<font color="#ff361d">**1.**</font> Access the \[C] - Change configuration menu.

<font color="#ff361d">**2.**</font> Sending mode: enter the file sending mode and press ENTER:

- SFTP
  supports password and public key authentication methods
- SCP
  supports only public key authentication methods

<font color="#ff361d">**3.**</font> Remote host: enter the domain or IP of the host on which to send data.

<font color="#ff361d">**4.**</font> Remote port: enter the port of the host on which to send data.

<font color="#ff361d"> </font>Username: enter the user enabled to send.

<font color="#ff361d">**6.**</font> Login mode: enter the authentication mode:

- password
  for user and password authentication, available in SFTP sending mode;sshkey
  for public key authentication.  &#x20;In this case, it is necessary to copy the key of the DNS proxy to the target host destination, see [Menu Logs export » View local SSH Key ](https://cloud.flashstart.com/customerarea/support/docsisp/#:~\:text=host%20destination%2C%20see-,Menu%20Logs%20export%20%C2%BB%20View%20local%20SSH%20Key,-.%0A%0A7.%20Only)Only if Login mode = password, Enter password: enter the login password for the remote host.
- Remote path: enter the destination path to the files.

<font color="#ff361d"> </font>Confirm the configuration by typing y and pressing ENTER.

<font color="#ff361d"> </font>On the next screen, type y and press ENTER to proceed to test sending a file.

<font color="#ff361d">**9.**</font> It is also possible to test file sending at a later time via the menu Menu Logs export » Test export.

## <font color="#000000"></font>

Access the menu to view the local SSH key.

**Notes:**

This menu is not displayed if SFTP sending mode with user and password authentication method has been chosen:
 <font color="#ff361d">**1.**</font> Access the menu V View local SSH Kec <font color="#ff361d"> </font>The screen shows the local SSH key as the expample below:



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/otfn-px6RUJUxFsvqOVua_image.png" size="50" width="716" height="289" position="center" caption="Local SSH key" alt="Local SSH key" showCaption="true"}

To authorize access to the SFTP host, it is necessary to:

- select the text;
- copy it;
- paste it into the authorized\_keys file of the SFTP host on the configured user
  e.g. on Linux with user user\_export the file path could be
  /home/user\_export/.ssh/authorized\_keys.

&#x20;<font color="#ff361d"> </font>Permit ENTER to return to the Logs export menu.

## <font color="#000000"></font>

Access the menu to perform the export of a test file.

The file will be named with export-SYSTEMNAME\_DNSPROXY.txt and exported to the configured destination folder:

<font color="#ff361d">**1.** </font>Access the \[T] - Test export menu.

<font color="#ff361d">**2**</font><font color="#ff361d">**.** </font>Type y and press ENTER to send the file.
(Wait for the procedure to run).

****<font color="#ff361d"></font>Test result:

- If the file was exported, the message File exported is displayed
  successfully!
- If errors were encountered, the message ERROR: Unable to export file and any error log are displayed.

<font color="#ff361d">**4.**</font> Permit ENTER to return to the Logs export menu.



**Other ways to ask**:

- Configure on the DNS Proxy a unique hostname for each device.
- Configure multiple destination folders in the Data Export.


[title] Why Netflix, Amazon Prime Video and Youtube don`t work on Smart TV?
[path] ISP Lite & Premium/ISP and WISP Setup Guide/Cloud and local DNS cache/

Sometimes there may be problems using Netflix, Amazon Prime Video, and YouTube on Smart TV (while they may work properly on PC or mobile devices).

In fact, these services are not blocked by our filters, but by the *streaming services themselves for geographical reasons*.

To solve this problem, you can use *the cache bypass feature*, *available after installing and configuring the DNS Proxy Virtual Machine* (click here to see the guide) in your network.

Log in to your Cloud panel using your credentials and then open the *Local DNS Cache menu*.

Now click *Cache Bypass* and enter the following domains:
 <font color="#ff361d"></font>
nflxext.com
nflxso.net
edgesuite.net
nflxvideo.net
llnwd.net
nflximg.com
netflix.com
nflximg.net

<font color="#ff361d"></font>
aiv-cdn.net
aiv-cdn.net.c.footprint.net
aiv-delivery.net
amazonvideo.com
atv-ext.amazon.com
atv-ps.amazon.com
d25xi40x97liuc.cloudfront.net
dmqdd6hw24ucf.cloudfront.net
media-amazon.com
primevideo.com

<font color="#ff361d"></font>
youtubei.googleapis.com
ytstatic.l.google.com
ytimg.l.google.com
youtube-ui.l.google.com
youtube.com
ytimg.com
googlevideo.com
youtube-nocookie.com
youtu.be
youtube-ui.l.google.com
youtubeeducation.com
youtubei.googleapis.com
yt3.ggpht.com
ytimg.com

In this way, the *DNS Proxy will use Google DNS* to *resolve the domains and subdomains listed above*, and the Smart TV can connect without any problem.



**Other ways to ask**:

- The operation of Netflix, Amazon Prime Video and YouTube.
- How Netflix, Amazon Prime Video and YouTube work. How to behave.


[title] Pure Cloud setup mode
[path] ISP Lite & Premium/ISP and WISP Setup Guide/

After choosing the **ISP and WISP Configuration option**, you will be prompted to enter your public IP address or a public network range.

Any **public IP address** that sends DNS queries to our hosts will need to be listed and granted as a trusted **IP or network**.

We always suggest configuring both **DNS Anycast** (185.236.104.104 and 185.236.105.105) to ensure full redundancy.

We strongly suggest redirecting any outgoing **DNS requests** (**port 53 UDP and TCP**) to the secure DNS of the filter to ensure that no one tries to bypass DNS protection using third-party resolvers.

**DNS redirection** is a **simple firewall NAT** **rule** and can be easily implemented by asking the *router/gateway administrator*.

Some routers are also capable of redirecting *DNS requests through Layer 7 application control*. It is possible to use both techniques.

It is possible to use both techniques.

**PLEASE NOTE**: If you are using a Mikrotik router, you can find more information here:
[Mikrotik: NAT General Rules](docId:9LwQLa9DfMHPZ6ZRY00Vo).

**Other ways to ask**:

- Configurare il Pure Cloud Mode.
- Configurazione del Pure Cloud Mode. Come comportarsi  .


[title] Ubiquiti-UniFi configuration
[path] Router Guides/

If you have not yet registered for the service you can do so by clicking on the following link<font color="#000000"></font>

Connect to the *Web panel by entering the IP address of the Ubiquiti* in the address bar of any Browser.
Then log in by entering your credentials.
First you need to change the DNS of the device.
To do this click on the \[**Network**] menu then look for the *WAN Network Settings item*. Enter the address *185.236.104.104* inside the *Primary DNS IP field* and *185.236.105.105* in the *Secondary DNS IP field*.
Click \[**Change**] to apply the changes.

![Web panel by entering the IP address of the Ubiquiti i](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/HIkt0uWCISoQ9wel1cY5h_image-33.png "onnect to the Web panel")

## Configure Dynamic DNS Service

Then open the \[**Services**] menu and enable the Dynamic DNS item.
Then configure the various fields as follows:

- **Service**: *Select Dyndns.org*.

**IMPORTANT**: It is not necessary to be registered for the DynDns.org service. The service still works since the Servers redirect the request to themselves.

- **Host Name**: Enter any name you like. For example *Filter*.
- **User Name**: Enter the username or email you used to register for the *Filter Cloud*.
- **Password**: Enter your password, received by email to the address specified during registration.

Click on the \[**Change**] button to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/xxzpb3kMSRO7eeLj6Lk2V_image.png" size="50" width="1144" height="430" position="center" caption="Dynamic DNS Configuration" alt="Configuring dynamic dns through dyndns" showCaption="true"}

## Configure the DHCP Server to distribute the Filter DNS to devices within the network

To do this, open the \[**Network**] menu and look for the LAN Network Settings item.
Then fill in the fields as follows:

- **Range Start**: Enter the *first IP address of the DHCP range.*
- **Range End**: Enter the *last IP address of the DHCP range*.
- **Netmask**: Enter the subnet mask.
- **Lease Time**: Set a *DHCP lease time* (in seconds).
- **Primary DNS IP**: Enter the IP *185.236.104.104* as the primary DNS.
- **Secondary DNS IP**: Enter the IP *185.236.105.105* as the secondary DNS.

Then click \[**Change**] to make the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/dJjWl6YJvy0kdsJApLy9e_image.png" size="50" width="967" height="510" position="center" caption="DNS Settings" alt="dns setting" showCaption="true"}

Alternatively, the DNS of the various devices within the network can be changed manually.

## OPTIONAL: Deny DNS changes by users

It is possible to increase security by denying the user the ability to browse unfiltered, as a result of changing the DNS on their device.
To do this proceed as follows:

-  Click on \[**Network**] and open the \[**Firewall**] item.
- At this point you need to create rules to block all traffic on *port 53 (DNS Service)*, both *TCP and UDP*, except those directed to our IPs.

See the image below to understand how to create the various rules.
**PLEASE NOTE**: It is impostante to respect the order to create the rules correctly. So first there must be the allowed ones and then the blocked ones, as you can see in the image below.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/jvCsnkChCBu2ZJij7uhjG_image.png" size="50" width="1441" height="671" position="center" caption="Creating firewall rules" alt="Creating firewall rule to deny user unfiltered browsing" showCaption="true"}

**Other ways to ask**:

- How to configure the Ubiquiti-UniFi router.
- Ubiquiti-UniFi router configuration. How to.


[title] How to solve synchronization problems in Mikrotik
[path] Router Guides/The FlashStart DNS filter configuration for Mikrotik OS/

**Proceed as follows:**

-  Read the Integration [Guide for Mikrotik.](docId\:qR1gDuVQ5eG3AxYeak7cl)
- Remove any spaces in the Script (due, for example, to copy and paste).
- Verify that the Filter username and password are correct.
- If, within the password, the $ (dollar) character is present, add the \ (backslash) character
  in front.

**Example**: In the presence of the password Passwd1$$ we will write Passwd1\\$$.

**Other ways to ask**:

- How to solve Mikrotik synchronization problems.
- Mikrotik synchronization troubleshooting. How to perform it.


[title] Configure the Dynamic DNS using dyndns.org
[path] Router Guides/Untitled/

If your Router does not allow to customize the Service, please follow this workaround:

<font color="#ff361d">**1.** </font>Configure in your Router the following DNS: 185.236.104.104 | 185.236.105.105

<font color="#ff361d"> </font>Choose "Dyndns.org" as Service type

**IMPORTANT:** you DO NOT need to create any DynDns.org account !
We will redirect automatically Dyndns.org connections to the Webfilter.

Use Webfilter Username and Password in the configuration.
(DO NOT use any DynDns.org credentials!)

**Here is a common example:**



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/n-APNAnbWBMB0C46tpO8e_image.png" size="50" width="488" height="196" position="center" caption="Dynamic DNS" alt=" Dyndns.org connections to the Webfilter" showCaption="true"}

**Other ways to ask:**

- How to configure the Dynamic DNS using dyndns.org
- Dynamic DNS using dyndns.org. How to configure.


[title] Generic guide to enable cloud filtering
[path] Router Guides/

First check whether your network uses a static or dynamic IP.


To find out this information we recommend contacting your provider.

In the case of dynamic public IP you need to do one more step so read point 1 otherwise go directly to point 2 of this guide.

## Configuration with dynamic public IP

On networks with *dynamic public IPs*, you must first set the following IPs as the DNS of the device (Router/Firewall) installed on your network:

- *185.236.104.104&#xD;*
- *185.236.105.105*

Then the Dynamic DNS will need to be configured by setting the following parameters:

-  **Service Provider: ""** ([click here](docId\:yqoRkp_EevrZbl_A8ILBq)  if you cannot type a custom service)
- **Username**: Enter the previously registered email/user.
-  **Password**: Enter your password.

At this point if everything has been set up correctly you will be able to see on '*Networks*' your public IP and the green dot indicating that the synchronization was successful.&#x20;

Otherwise you can also perform the connection test by clicking on \[**Device Connection Test**].

Finally, move on to step 2 to configure DNS on devices internal to your network.

## <font color="#000000"></font>

You can filter internal network devices in several ways:

- **Create rules in the firewall management** such that all traffic on *port 53 (DNS)* is redirected to our IPs.

This way, even if we change the DNS on internal devices these devices will continue to be filtered.

- **Create rules on the firewall** to block all traffic on port 53 except to our IPs.
- **Configure our DNS on the DHCP Server** and then distribute them to the different devices on the network, which will be filtered accordingly.
- **Configure our DNS on the Router/Firewall and set**, on the DNS of the internal devices, **the IP** of the latter (use only this DNS and do not set a secondary one).
- If it is not possible to enable a DHCP Server configure our DNS manually on the various devices in the network.
-  If there is an **internal DNS Server** (usually a Domain Controller) you can configure our IPs in the DNS settings by going to Forwarding Server.

This will allow you to keep the Server's IP as the only DNS on the various devices on your network, thus continuing to resolve the names of devices internal to your network as well.



**Other ways to ask**:

- How to activate Cloud filter.
- Cloud filter activation. How to.


[title] Zyxel/Zywall configuration
[path] Router Guides/

## To activate the Cloud filter

If you have not yet registered for the service you can do so by clicking on the following Register Here link.

Connect to the control panel by *entering the IP address of the Zyxel/Zywall* in the address bar of any Browser.
Then log in by entering your credentials.
Click on the gear on the left and then open the \[**Network**] menu then go to \[**WAN**].
Look for the *WAN DNS Assignment item* and select, from the drop-down menu, *User Defined*.
Then enter the following *DNS in the First DNS Server* and *Second DNS Server fields*, respectively:

- *185.236.104.104*
- *185.236.105.105*&#x20;

At this point you need to activate and configure the *Dynamic DNS service*. Then click on \[**Network**] and then on \[**DDNS**]. Put a check mark on *Enable Dynamic DNS*, to enable the service, and configure the various fields as follows:

- **Service Provider**: Choose WWW\.DynDNS.ORG as the service. PLEASE NOTE: It is not necessary to register for the dyndns service, it still works since the Filter redirects the request to itself.
- **Host Name**: Enter any name you like for this field. For example Filter.
- **Username**: Enter the username or email you used to register for the Filter Cloud.
- **Password**: Enter your password, received via email.

Click \[**Apply**] to save the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/AkE8pSqvxVT69xJWjK69v_image.png" size="50" width="1875" height="514" position="center" caption=" Dynamic DNS Configuration" alt="Dynamic DNS COnfiguration and Attivation" showCaption="true"}



At this point you can configure the *DHCP Server* to automatically assign network parameters, including our DNS, to the various devices. To do this click on the \[**Network**] menu and then on \[**DHCP Server**].
Enable the service by *putting a check mark on the Enable DHCP Server item* and enter in the *Initial IP Pool Address field the first IP in the DHCP range* and, within the *Pool Size field the number of addresses to be assigned*.
Then click on the \[**Apply**] button to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Ihw05d6HUuy-UYNpjAnbM_image.png" size="50" width="1877" height="415" position="center" caption="DHCP Lan Configuration" alt="DHCP Server Configuration and Attivation" showCaption="true"}



Open the \[**Advanced**] tab and look for the *DNS Server item*.
Then select the *User Defined item and enter the following DNS within the First DNS Server and Second DNS Server fields*, respectively:

- *185.236.104.104*
- *185.236.105.105*

**IMPORTANT**: Alternatively, it is possible to set the *IP address of the Zyxel/Zywall* as the only DNS. This way the clients will use the DNS set on the router, which is ours.
Finally, click \[**Apply**] to keep the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/nbC8fShft_pTL9SL978to_image.png" size="50" width="1871" height="828" position="center" caption="DNS Settings " alt="Advanced settings and editing of assigned DNS servers" showCaption="true"}

Alternatively, it is possible to manually set our DNS, or device IP, on internal network clients.

**Other ways to ask**:

- How to configure Zyxel/Zywall router.
- Zyxel/Zywall router configuration.


[title] Grandstream configuration
[path] Router Guides/

If you have not yet registered for the service you can do so by clicking on the following link: [Register here](https://cloud.flashstart.com/customerarea/demo.php?no-login=1\&lang=IT\&mrks=site).

You need to change the DNS of the device. To do this click on the **\[Network Settings]** side menu then look for the WAN item. Next click in the pen icon under Operations in the chosen WAN.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/lczpNrLDUb22wB7Awz0GF_image.png" size="50" width="1818" height="388" position="center" caption="Network Settings " alt="Network Settings" showCaption="true"}

Set the WAN according to the desired mode ( DHCP, Static IP, PPPoE, etc.) and manually set the DNS
Enter the address 185.236.104.104 inside the Primary DNS IP field and 185.236.105.105 in the Secondary DNS IP field.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/PapGYmFVZHcenVVUhBvq0_image.png" size="50" width="1497" height="704" position="center" caption="Secondary DNS " alt="Secondary DNS IP field" showCaption="true"}

To configure Dynamic DNS service, then open the **\[External Access]&#x20;**&#x6D;enu and click on the DDNS item.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/gERfnF40y-q9xQRcpmS9__image.png" size="50" width="1813" height="624" position="center" caption="External Access" alt="External Access after configure Dynamic DNS service" showCaption="true"}

**Then configure the various fields as follows:**

- Service Provider: Select Dyndns.org. IMPORTANT: It is not necessary to be registered with the DynDns.org service. The service will still work since the Servers redirect the request to themselves.
- User Name : Enter the user name or email you registered for the Cloud Filter.
- Password: Enter your password, received via email to the address specified during registration.
- Domain : Enter the domain checkip.dyndns.org
- Interface : Select the interface on which to configure the dynamic DNS service.
  Click on the **\[Save]** button to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ThQcBPQRfmWs6x03pMIBx_image.png" size="50" width="1726" height="703" position="center" caption="Various Fields" alt="Configure the various fields" showCaption="true"}

Finally, you can inhibit clients from using all DNS except filter DNS.
You need to create rules to block all traffic on port 53 (DNS Service), both TCP and UDP, except those directed to our IPs.
Click in the\[Firewall] menu and then on the\[Traffic Rules] item. Within Forwarding Rules, click on Add to add a new rule.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/7pVk5AK_XGDjUNXU4VXvz_image.png" size="50" width="1857" height="686" position="center" caption="New Rule" alt="Add new Rule on Firewall menu on the Traffic Rules item" showCaption="true"}

Through the first rule in the image below, the first DNS of the filter is allowed to be used.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/glfyBQowrkzLsxhF5Yt3l_image.png" size="50" width="1557" height="766" position="center" caption="First rule" alt="First rule" showCaption="true"}

Through the second rule in the image below, the second DNS of the filter is allowed to be used.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/3CxOOf7hLIaiuWb9OP1SF_image.png" size="52" width="1568" height="763" position="center" caption="Second rule" alt="Second Rule" showCaption="true"}

Finally, through the rule in the image below we block all other DNS.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/GcGDRuaw6YmwB-RJ0nISC_image.png" size="52" width="1651" height="759" position="center" caption="Another rule" alt="block all other DNS" showCaption="true"}

**Other ways to ask**:

- How to configure the Grandstream
- Grandstream configuration. How to.


[title] Cisco configuration
[path] Router Guides/

## Filter Configuration on CISCO Router

If you have not yet registered for the service you can do so by clicking on the following link:<font color="#000000"> </font>.
Connect to the control panel by entering the Cisco IP address in the address bar of any Browser. Then log in by entering your credentials.
First you need to configure the DNS of the device. To do this, open the \[**Setup**] menu and then click on \[**Network**].
Look for the section called WAN Setting Table and select the name of your WAN interface. Click on the \[**Edit**] button to edit the interface parameters.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/g2sraS1QoA-GdPH-i4rwK_image.png" size="50" width="1371" height="672" position="center" caption="DNS Configuration" alt="Cisco DNS Configuration" showCaption="true"}



In the window that appears, enable te Use the Following DNS Server Address item and then type inside the DNS Server 1 and DNS Server 2 fields, respectively, the following IPs:

-  *185.236.104.104*
- *185.236.105.105*

Click on the \[**Save**] button to save the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Sh3lPnHON7xNlhs60z9Qg_image.png" size="50" width="804" height="358" position="center" caption="DNS Settings" alt="DNS setting and editing" showCaption="true"}

To configure *Dynamic DNS service*, open the \[**Setup**] menu and then click on \[**Dynamic DNS**].
Select the name of your WAN interface again and click on \[**Edit**].

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ccdLAtrJR6B1r2sczf8e6_image.png" size="50" width="768" height="292" position="center" caption="Dynamic DNS Configuration" alt="Dynamic DNS Configuration and Attivation" showCaption="true"}



Configure the service as follows:

-  **Service**: Select *DynDNS.org*.
- **Username**: Enter your registration email/username.
- **Password**: Enter your password.
- **Host Name**: Enter ddns.name.com.

Finally, click \[**Save**] to make the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/hGnbIyX63iLLBjbDHQZbj_image.png" size="50" width="723" height="338" position="center" caption="DNS Dynamic Edit " alt="DnyDNS Dynamic Edit" showCaption="true"}



At this point you can enable the *DHCP Server* so that it automatically assigns network parameters, including our DNS, to the various internal devices.
Then open the \[**DHCP**] menu and click on \[**DHCP Setup**].
Configure the service with your network parameters and *select Use DNS as Below*, next to *the DNS Server field*, to configure our DNS.
Then enter the following *IPs in the Static DNS 1 and Static DNS 2 fields*, respectively:

- *185.236.104.104*
- *185.236.105.105*

Finally, click \[**Save**] to activate the service. Alternatively, the DNS of the various devices within the network can be changed manually.

## OPTIONAL: Deny DNS changes by users

It is possible to increase security by denying the user the ability to browse unfiltered, as a result of changing the DNS on their device. To do this, proceed as follows:

Open the \[**Firewall**] menu and click on \[**Access Rules**]. Then click on \[**Add**] to create a new rule.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/x033BPOpBy9lSgt0E_iJ-_image.png" size="50" width="825" height="353" position="center" caption="DNS rules" alt=" Changing DNS rules and denying user changes" showCaption="true"}



At this point we need to create rules to block all traffic on **port 53** (*DNS Service*), both *TCP and UDP*, except those directed to our IPs.
Proceed as follows:

-  **Action**: Choose Allow.
- **Service**: Select the DNS entry \[UDP/53-53] from the drop-down menu.
- **Log**: Decide whether or not you want to display the log related to this.
- **Source Interface**: Select the name of your LAN (internal) interface.
- **Source IP**: Choose ANY. PLEASE NOTE: It is also possible to select an IP range that will use this rule, instead of the entire network.
- **Destination IP**: Select Single and then enter this IP 185.236.104.104 in the field on the right.

Click \[**Apply**] to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/bcNeDaYSg0B6npN-o7WzU_image.png" size="50" width="715" height="478" position="center" caption="Access Rules" alt="Changing access rules" showCaption="true"}



Now it is necessary to create another rule, similar to the previous one, except for the *Destination IP field address*, which must be *185.236.105.105*.
Finally, it is necessary to create another rule to block all DNS traffic directed to other IPs, other than our own.
Therefore, proceed as follows

- **Action**: Choose *Deny*.
- **Service**: Select the *DNS entry \[UDP/53-53]* from the drop-down menu.
- **Log**: Decide whether or not you want to view the log related to this rule.
- **Source Interface**: Select the name of your *LAN (internal) interface*.
- **Source IP**: Choose ANY.

**PLEASE NOTE**: It is also possible to select an IP range that will use this rule, instead of the entire network.

- **Destination IP**: Select ANY from the drop-down menu.

Then click \[**Save**] to apply the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/CM3PlnKRfKFVazV4UVDa-_image.png" size="50" width="705" height="485" position="center" caption="Creation new rules" alt="Creating a new rule with Destination IP different from the one previously created" showCaption="true"}

**Other ways to ask:**

- How to configure the Cisco router.
- Cisco router configuration. How to.


[title] Fritz!Box configuration
[path] Router Guides/

## Configuration Guide: FRITZ!Box 7690

To access via browser type: fritz.box

Password: **insist3974**

If it is the first access, connect the PC client via LAN cable.

## DNS over TLS

To confirm the activation of the service, you will need to have registered a phone number on which to confirm the option remotely, or have direct/physical access to the FRITZ!Box device.

- **Path:** Internet > Account Information > DNS Server > DNS over TLS

**

![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/fgQTpc7HJQ0HgCw98oWjM_.blob)

- Check the box to enable Encrypted name resolution on the Internet.
- Check the box to Force a certificate check for encrypted name resolution on the Internet.

If you need to force communication solely via DoT, deselect the highlighted checkbox: Allow fallback to unencrypted name resolution on the Internet.

**

![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/N5uu0jTlRDncOUd2M9iMu_.blob)

In the Resolution names of the DNS servers field, enter the address obtained from the FlashStart Cloud platform.

![](https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/lnab3-4ublGknPikGh8qt_image.png)

**Example:** <font color="#247d45">xxxx##.dot.flashstart.com</font>.

### Other ways to ask:

How to configure the Fritz!Box router.

Fritz!Box router configuration. How to.

[title] How to configure multiprofile on Mikrotik
[path] Router Guides/The FlashStart DNS filter configuration for Mikrotik OS/

Through the creation of firewall rules, multiple browsing profiles (multiprofiles) can be used on the same network.
In this way, two or more machines connected to the same network will be able to use different filtering rules and we could more easily split data traffic.
For additional information on multiprofile click here.

**IMPORTANT**: This guide is only usable in workgroup environments, that is, without Active Directory servers.

**PLEASE NOTE**: The following commands allow you to create rules to manage five browsing profiles.&#x20;
However, it is not mandatory to use all profiles; depending on your needs, it will be sufficient to delete superfluous parts of code.

Then edit the following fields, before running the commands on the mikrotik terminal:

**\<List\_IP1>**: list of IP addresses that will be assigned to profile "Profile1".
**\<List\_IP2>**: list of IP addresses that will be assigned to profile "Profile2" (if any).&#x20;
**\<List\_IP3>**: list of IP addresses that will be assigned to profile "Profile3" (if any).
**\<List\_IP4>**: list of IP addresses that will be assigned to the "Profile4" profile (if any).

**PLEASE NOTE**: You can enter a single IP or a range of IPs using the "-" symbol, between the first and last IP in the range (e.g. 192.168.1.2-192.168.1.100).

**\<Profile1>**: name assigned to the first profile.
**\<Profile2>**: name assigned to the second profile (if any).
**\<Profile3>**: name assigned to the third profile (if any).
**\<Profile4>**: name assigned to the fourth profile (if any).

**\<Perfil1>**: nombre asignado al primer perfil.
**\<Perfil2>**: nombre asignado al segundo perfil (si existe)
**\<Perfil3>**: nombre asignado al tercer perfil (si existe)
**\<Perfil4>**: nombre asignado al cuarto perfil (si existe)

/ip firewall address-list
add address= **\<*****List\_IP1>*** list=**\<*****Profile1*****>**
add address= **\<*****List\_IP2>*** list=**\<*****Profile2*****>**
add address= **\<*****List\_IP3>*** list=**\<*****Profile3*****>**
add address= **\<*****List\_IP4>*** list=**\<*****Profile4*****>**

/ip firewall nat

\# **\<*****Profile1*****>**
add action=dst-nat chain=dstnat comment=**\<*****Profile1*****>&#xA0;**&#x64;st-port=53 protocol=udp
    src-address-list=**\<*****Profile1*****>&#xA0;**&#x74;o-addresses=185.236.104.114 to-ports=53
add action=dst-nat chain=dstnat comment=**\<*****Profile1*****>&#xA0;**&#x64;st-port=53 protocol=tcp
    src-address-list=**\<*****Profile1*****>&#xA0;**&#x74;o-addresses=185.236.104.114 to-ports=53

\# **\<*****Profile2*****>**
add action=dst-nat chain=dstnat comment=**\<*****Profile2*****>&#xA0;**&#x64;st-port=53 protocol=udp
    src-address-list=**\<*****Profile2*****>&#xA0;**&#x74;o-addresses=185.236.104.124 to-ports=53
add action=dst-nat chain=dstnat comment=**\<*****Profile2*****>&#xA0;**&#x64;st-port=53 protocol=tcp
    src-address-list=**\<*****Profile2*****>&#xA0;**&#x74;o-addresses=185.236.104.124 to-ports=53

\# **\<*****Profile3*****>**
add action=dst-nat chain=dstnat comment=**\<*****Profile3*****>&#xA0;**&#x64;st-port=53 protocol=udp
    src-address-list=**\<*****Profile3*****>&#xA0;**&#x74;o-addresses=185.236.104.134 to-ports=53
add action=dst-nat chain=dstnat comment=**\<*****Profile3*****>&#xA0;**&#x64;st-port=53 protocol=tcp
    src-address-list=**\<*****Profile3*****>&#xA0;**&#x74;o-addresses=185.236.104.134 to-ports=53

\# **\<*****Profile4*****>**
add action=dst-nat chain=dstnat comment=**\<*****Profile4*****>&#xA0;**&#x64;st-port=53 protocol=udp
    src-address-list=**\<*****Profile4*****>&#xA0;**&#x74;o-addresses=185.236.104.144 to-ports=53
add action=dst-nat chain=dstnat comment=**\<*****Profile4*****>&#xA0;**&#x64;st-port=53 protocol=tcp
    src-address-list=**\<*****Profile4*****>&#xA0;**&#x74;o-addresses=185.236.104.144 to-ports=53
    
\# **Profilo Default**
add action=dst-nat chain=dstnat comment=Default dst-port=53 protocol=udp
    to-addresses=185.236.104.104 to-ports=53
add action=dst-nat chain=dstnat comment=Default dst-port=53 protocol=tcp
    to-addresses=185.236.104.104 to-ports=53

**IMPORTANT**: The default profile should always have lower priority than the other rules.

**Other ways to ask**:

- How to Configure Multiprofile on Mikrotik.
- Configuring multiprofile on Mikrotik devices. How to.



[title] Bind configuration
[path] Router Guides/

If you are using **Bind** as your DNS server and want to **forward** all incoming requests to our DNS server you can use the *malware protection and content filtering features*<font color="#000000">, please follow the steps below. For more information on how Bind works you can visit the 

</font>**IMPORTANT NOTE**: Before proceeding with this guide, you must register y*our public IP address*.
*Only registered IP addresses can use the malware protection and content filtering features on their network*.
You can do this by going <font color="#000000"> </font>and then accessing the *Networks section*.

Move to the folder that **contains the Bind configuration files**.
By default, the folder should be */etc/bind*.

The file we need to change is the "*named.conf.options*" file, so open it in a text editor with **sudo privileges**.
Once opened, the file should look something like this:
\>*options \{&#xD;*&#xA;*&#x20;    "/var/cache/bind" directory;&#xD;*&#xA;*&#x20;    dnssec-validation auto;&#xD;*&#xA;*&#x20;    auth-nxdomain no; # conform to RFC1035&#xD;*&#xA;*&#x20;    listen-on-v6 \{ any; };&#xD;*&#xA;*&#x20;      };*

Within the options \{} block we need to create another block called forwarders that will contain the **IP addresses of the DNS servers** to which **we want to forward requests**.
In this case the IP addresses to be entered are as follows:
\>*...*
*options \{&#xD;*&#xA;*&#x20;       directory "/var/cache/bind";&#xD;*&#xA;*&#x20;      forwarders \{&#xD;*&#xA;*&#x20;     185.236.104.104;&#xD;*&#xA;*&#x20;     185.236.105.105;&#xD;*&#xA;*&#x20;        };*

Now we need to set the forward directive to "**only**," since our server should automatically forward all requests and not attempt to resolve them on its own.
The configuration file should look like this when finished:
\>...
*options \{&#xD;*&#xA;*&#x20;      directory "/var/cache/bind";&#xD;*&#xA;*&#x20;      forwarders \{&#xD;*&#xA;*&#x20;      185.236.104.104;&#xD;*&#xA;*&#x20;      185.236.105.105;&#xD;*&#xA;*&#x20;        };&#xD;*&#xA;*&#xD;forward only;*

**Save and close** the file once you are done.
To check if you have done everything correctly, we can use the **tools provided by Bind** to check the *syntax of the configuration files*.
To do this, simply type the following command:
\>*sudo named-checkconf*

If there are no syntax errors in the configuration, *the shell prompt will terminate immediately without displaying any output*.

Finally, you need to **restart the Bind daemon** to *implement the changes*.
You can do this with the following command (the command below uses Bind 9: replace it with the version you are currently using):
\>*sudo service bind9-restart*

We're done, and you should now have your **Bind server properly configured to start filtering content and protecting your network from malware**.

**Other ways to ask**:

- How to configure Bind for Internet DNS filtering.
- Configuring Bind for Internet DNS Filtering. How to.


[title] How to configure DNS filtering on Mikrotik devices
[path] Router Guides/The FlashStart DNS filter configuration for Mikrotik OS/How to solve synchronization problems in Mikrotik/

**IMPORTANT**: Access the Mikrotik via WinBox or Web.
Connect to the control panel (via SSH, Web or WinBox).
**PLEASE NOTE**: In this guide we have used WinBox to configure the device.

## Create the Script

First you need to create a new Script.
Then proceed as follows:

- Go to \[System] and then click on \[Scripts].
- In the window that opens, click on the + symbol under Scripts.
- Choose a name to give the Script, for example, exampleScript.
- Leave the default policies active.
- In the Source field paste the following instruction:

Replace the words *USER* and *PASS* as follows:

- ***USER*** - registration email/username.
- ***PASS*** - registration password, received by email to the address specified during registration.

**IMPORTANT**: If the password contains special characters such as $ or ", you must enter the \ symbol before each of these characters.
For example, suppose you have the password password123$$, this must be written as follows: password123\\$$.
This change is necessary otherwise the Mikrotik would see those symbols as commands and not as simple characters.

- Click \[**OK**] to save the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/tSixu0-4Aefzhj9ZqJfur_image.png" size="50" width="1236" height="729" position="center" caption="Creation of Script" alt="Creating script from system menu" showCaption="true"}



## Schedule the script

At this point it is necessary to create a Scheduler so that it automatically executes the Script created earlier. Then proceed as follows:

- Go to \[**System**] and click on \[**Scheduler**].
- In the window that opens, click on the + symbol under the Scheduler heading.
- Choose a name to give the Scheduler, for example *exampleScheduler*.
- Choose the 'Script execution time interval, for example 5 minutes.

**PLEASE NOTE**: The format must be *hh\:mm\:ss*, so in our case it will be 00:05:00.

- In the *On Event field enter* the name of the previously created Script. In our example therefore it will be exampleScript.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/R6F2GD4lOYjPycVQh1suj_image.png" size="50" width="1195" height="728" position="center" caption="Script scheduling" alt="Scheduling scripts to be executed" showCaption="true"}

## DNS loud filter Configuration

Set the following DNS, either using a *DHCP Server* or manually, on the various devices inside the network:

- **Primary DNS**: *185.236.104.104*
- **Secondary DNS**: *185.236.105.105*

Alternatively, it is possible to change the *DNS used by the Mikrotik* so that the IP itself is used as the only DNS on the devices internal to the network.
To do this proceed as follows:

- Go to \[**IP**] and click on \[**DNS**].
- In the window that opens, respectively, enter the following *IPs in the Servers field*:
  - **Primary DNS**: *185.236.104.104*
  - **Secondary DNS**: *185.236.105.105*
- Click on the \[**OK**] button to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/A1atBZwdQugy7J2Qrf9SV_image.png" size="50" width="896" height="526" position="center" caption="DNS Configuration" alt="DNS Cloud filter configuration" showCaption="true"}

**IMPORTANT**: If there is an address, within the Dynamic DNS field on DNS Settings, it means that the Mikrotik also takes DNS from the DHCP of another device on the network (usually the Router).
To avoid this proceed as follows:

- Open the \[**IP**] menu and then click on \[**DHCP Client**].
- *Double-click* on the entry for the active DHCP client to open the respective properties.
- Remove the check mark from the *Use Peer DNS item*.
- Click \[**OK**] to save.

## OPTIONAL: Deny DNS changes by users

You can create some Firewall rules with the purpose of automatically redirecting all DNS traffic (port 53) to our Servers.
This way you will not need to change the DNS on the devices inside the network.
To do this open the \[**IP**] menu and click on the \[**Firewall**] button.
Then click on the \[**NAT**] tab and then on the \[**Add new**] button, to create a new *rule.lient.*

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/wmOnJ_2Zns71aSNxsgJOO_image.png" size="50" width="1104" height="401" position="center" caption="Redirect server requests" alt="Redirect server requests" showCaption="true"}

Fill in the various fields as follows:

- **Enabled**: Check the box to enable the rule.
- **Chain**: Select *dstnat* from the drop-down menu.
- **Protocol**: Choose *udp*.
- **Dst. Port**: Enter *53*.
- **In. Interface**: Choose the internal network interface to be filtered.
  By default it is called *bridge1*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ik9QEs_I_3amJylbR_xIW_image.png" size="50" width="711" height="860" position="center" caption="Firewall settings compilation" alt="Firewall settings compilation" showCaption="true"}

- **Action**: Select *dst-nat*.
- **To Address**:Enter the address *185.236.104.104*.
- **To Port**:Enter the port number chosen previously, default is *53*.

**PLEASE NOTE**: If a port other than 53 was registered on the Cloud panel, enter that port.

- Click \[**Ok**] to save.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/lv7aDzzqIz9leXJBqetVV_image.png" size="50" width="558" height="202" position="center" caption="udp rules creation" alt="udp rules creation and change the right port" showCaption="true"}

Finally create another rule, the same as the previous one, except the Protocol field must be tcp instead of udp.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/2y8i-OBdxVIIc_EGhdQac_image.png" size="50" width="712" height="862" position="center" caption="tcp rule creation" alt="New rule same as previous rule but with tcp protocol" showCaption="true"}

**Related articles**:
[Mikrotik: How to run scripts on multi-WAN scenarios?](docId\:LDNW37V8yqVnhvEppaFBw)
[Mikrotik: How do I configure multiprofile?](docId\:qR1gDuVQ5eG3AxYeak7cl)

**Other ways to ask**:

- How to configure filter on Mikrotik devices.
- Configuring the filter on Mikrotik devices. How to perform it.


[title] TP-Link configuration
[path] Router Guides/

## To activate the Cloud filter

<font color="#000000">If you have not yet registered for the service you can do so by clicking on the following link: </font>.
Connect to the control panel by entering the IP address of the TP-Link in the address bar of any Browser. Then log in by entering your credentials.
Open the \[**Network**] menu then go to \[**WAN**]. Finally, click on \[**Advanced**].
Enter the *following DNS in the Primary DNS and Secondary DNS fields*, respectively:

- *185.236.104.104*
- *185.236.105.105*

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/xVTdzwEVXK1PdpZ__9-_F_image.png" size="50" width="1302" height="777" position="center" caption="DNS Configuration" alt="DNS Configuration in TP-Link" showCaption="true"}



At this point it is necessary to activate and configure the **Dynamic DNS service**.
Then proceed as follows:

- **Service Provider**: Choose Dyndns as your service.

**PLEASE NOTE**: It is not necessary to register for the dyndns service, it will still work since the Filter redirects the request to itself.

- **Username**: Enter your Cloud Filter registration username.
- **Password**: Enter your password, which arrived via email to the address specified during registration.
- **Domain**: Enter a domain name at will. For example, domain.
- **Enable DNS**: Check the Enable DDNS entry.

Click the \[**Login**] button to force synchronization and then on \[**Save**] to apply the changes.

**PLEASE NOTE**: Do not worry if an error message like this appears DDNS not launching!!!&#x20;

At this point you can configure the *DHCP Server to automatically assign network parameters, including our DNS*, to the various devices.
To do this click on the \[**DHCP**] menu and then on \[**DHCP Settings**].

Enable the service and configure it as follows:

- **Start IP Address**: Enter the first IP in the range.
- **End IP Address**: Enter the last IP in the range.
- **Address Lease Time**: Choose the length of time the addresses assigned by DHCP are valid (in seconds).
- **Default Gateway**: Enter the default gateway address of the network.
- **Default Domain**: Enter the domain name of your network, if any.
- **Primary DNS**: Enter as the *primary DNS this address 185.236.104.104*
- **Secondary DNS**: Type in as the *secondary DNS this address 185.236.105.105*

**IMPORTANT NOTE**: Alternatively, you can set the *IP address of the TP-Link as the only DNS*.This way the clients will use the DNS set on the router, which is ours.

Finally, click \[**Save**] to apply the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/6TzH99SQ81oX1TfI9NvzR_image.png" size="50" width="1310" height="937" position="center" caption=" DHCP Server Configuration" alt=" DHCP Server Configuration and Attivation" showCaption="true"}

**Other ways to ask**:

- How to configure TP-Link router.
- TP-Link router configuration. How to.


[title] The multiprofile and multipolitics
[path] Router Guides/The FlashStart DNS filter configuration for Mikrotik OS/How to configure multiprofile on Mikrotik/

Multiprofile enables different profiles and associates them with a single network, so different filtering rules can be used on the same public IP.&#x20;
The filter provides 5 pairs of DNS addresses, each pair can be associated with a different profile:

**Primary Secondary:**

185.236.104.104 - 185.236.105.105
185.236.104.114 - 185.236.105.115
185.236.104.124 - 185.236.105.125
185.236.104.134 - 185.236.105.135
185.236.104.144 - 185.236.105.145

To better understand how it works, let us proceed with an example;

In this case we want to define the following 2 profiles for a single Client with the same public IP:

- Default (*primary DNS: 185.236.104.104; secondary: 185.236.105.105*): profile used by employees (with social network category locked)
- Executive (*Primary DNS: 185.236.104.114; secondary: 185.236.105.115*): profile used by management (with social network category unlocked)

First you need to access the management panel by entering your credentials; using the \[**Profile**] tab at the top of the dashboard, we can configure the default profile.
If you want to change the name you can do so by clicking on the pencil icon related to it and choosing a new name, finally clicking on \[**Edit**] to apply the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/owk2RUukY1n4uke76yt-s_image.png" size="50" width="889" height="361" position="center" caption="DNS Configuration" alt="DNS Configuration and insection" showCaption="true"}



After that we are going to create a second profile (Executive) similar to the previous one, and we are going to choose DNS *185.236.104.114 - 185.236.105.115*.
To do this we need to follow the following steps:

- Click on the \[**Profile**] tab.
- Click on the \[**Create New Profile**] item next to the + icon and fill in the following fields:
  - **Name** : Choose a name for the profile. In our case it will be Management .
  - **Time Zone** : Choose the time zone that will be used for Cloud functions.
  - **Mode** : Choose from:
    - **Normal**: Blocks only the chosen categories and blacklisted domains.
    - **Restricted** : Blocks everything except whitelisted domains.
  - **DNS** : Choose a diffrent DNS pair from the drop-down menu.
    In this example it will be 185.236.104.114 - 185.236.105.115.
  - **Networks** : Check the email/username or public IP address that you want to associate with DNS 185.236.104.114 - 185.236.105.115.

**PLEASE NOTE**: If no network has been added yet, this field will not be present.
You can associate the address later, after you have created at least one network.

- Finally click \[**Insert**] to create the new profile.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/LqqOvQ5sAKclpOtXGp18j_image.png" size="50" width="921" height="313" position="center" caption="DNS and Profile Settings" alt="DNS settings and switch profile" showCaption="true"}

If everything has been done correctly you will get a result similar to the following image:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ZAnMemTx4Jf6LT_mlu15J_image.png" size="50" width="990" height="388" position="center" caption="Creating conferm" alt="Confirm new network node creation" showCaption="true"}

At this point you can configure the various filtering rules, in our case we will block the social network category to the *Default profile and unblock it to the Executives profile*.
In this way, requests to *DNS 185.236.104.114 - 185.236.105.115* will respond to a different configuration than the Default DNS.

**Methods of use**
At this point to use the profiles you have just created you will need to configure your network.
To do this there are two possible options:

- manually change the device DNS based on which profile you want to use on that pc.
- Create redirection rules based on the originating IP. This is only possible if there are routers or firewalls that allow it (e.g., Mikrotik).

**Related articles**:
[Mikrotik: How do I configure multiprofile?](docId\:bHCDfbRHm7uM47dmfUx1l)

**Other ways to ask**:

- How to enable multiprofiles and multipolitics.
- Enabling multiprofiles and multipolitics. How to.


[title] Bright Box configuration
[path] Router Guides/

## FILTER CONFIGURATION ON BRIGHT BOX DEVICES

To activate the containment filter on Bright Box devices, please do the following:
 <font color="#000000">

Connect to the control panel by entering the </font>*IP address of the Bright Box* in the browser. Then enter your login credentials.
First, you need to change the DNS of the device. To do this, click on the \[**Advanced**] tab at the top of the page and open the \[**Broadband Settings**] menu.
In the window that appears, choose "*MANUAL*", under "*DNS IP Address*," and type these IPs into the "*Primary DNS*" and "*Secondary DNS*" fields, respectively:

- *185.236.104.104*
- *185.236.105.105&#xD;*&#xA;*&#xD;*
  Click on the \[**SAVE SETTINGS**] button to apply the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/QvPN5RoN0vi6U0ogfbW4G_image.png" size="50" width="1276" height="739" position="center" caption="DNS Configuration" alt=" DNS Configuration" showCaption="true"}



To configure *dynamic DNS service*, open the \[**System**] menu and click \[**DDNS**].
Check the "*Dynamic DNS*" box and copy the following steps:

- **Provider**: select DYNDNS.org.
- **Domain name**: Type in the domain name.com.
- **Account/Email**: Enter the e-mail/user name of the Content Filter.
- **Password/Key**: Enter the password of the Content Filter.

Click the \[**SAVE SETTINGS**] button to save the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Jf6xBkXK-XHl7bynCusFu_image.png" size="50" width="1277" height="737" position="center" caption="Dynamic DNS Configuration" alt="Dynamic DNS Configuration through dydns.org" showCaption="true"}

Next, you can enable the *DHCP server to automatically distribute our DNS* to internal network devices.

Open the \[**DHCP**] menu and enable the *DHCP Server item*.
Choose a lease time and enter the first and last *IP address of the DHCP range*.

**PLEASE NOTE**: DHCP will distribute your unique IP as a unique DNS.
This will not cause problems since our IPs have been configured as DNS of the router.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/j6-_F8QM3GzJ7Y2Ys1DiI_image.png" size="50" width="1278" height="739" position="center" caption=" DHCP Server Configuration" alt="DHCP Server Configuration" showCaption="true"}



**Other ways to ask**:

- How to configure the Bright Box router.
- Bright Box router configuration. How to.


[title] IPCOP configuration
[path] Router Guides/

## Filter Configuration on IPCO

<font color="#000000">If you have not yet registered for the service you can do so by clicking on the following link: .</font>
Connect to the control panel by *entering the IP address of the IPCOP* in the address bar of any Browser.

**PLEASE NOTE**: Type the address as follows: *https\://IndirizzoIP:8443*.
Then **log** in by *entering your credentials*.

First you need to change the *DNS used by the IPCOP&#x20;*(RED Network).
To do this click on \[**System**], then open the \[**SSH Access**] menu.
Check the *SSH Access item* and click on the \[**Save**] button to apply the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/bsEB9kYF_ZhsZwQ49whST_image.png" size="50" width="1343" height="257" position="center" caption="DNS Edit" alt="DNS edit menu" showCaption="true"}

To access the console, using the *SSH protocol*, you can use the Putty software <font color="#000000">()</font>
Then open the Putty software and *enter the IP address of the IPCOP* (GREEN Network) inside the field and *8022 in the Port field*.
Then click on \[**Open**] to open the console.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/ObBI1ClJWGjV9HmgZ80M8_image.png" size="50" width="426" height="435" position="center" caption="Putty Software Configuration" alt=" Using SSH protocol via Putty software" showCaption="true"}

Log in with your root credentials and type the command setup.
Then click the enter key, and then a new page with a setup wizard will open.
Select the *Networking item* and click on the \[**Select**] button.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/yygxUsKAgI2TL4jsjCqXA_image.png" size="50" width="668" height="427" position="center" caption="Networking menu" alt="Log in with root credentials and select the Networking item" showCaption="true"}

Navigate to the *DNS and Gateway settings item* and click on the \[**Select**] button.
Enter the address *185.236.104.104* in the Primary DNS field and *185.236.105.105* in the *Secondary DNS field*.
Click on the \[**Ok**] button and wait for the network reconfiguration procedure to complete.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/zdrv_6c8fccOgsAYxzyh2_image.png" size="50" width="666" height="426" position="center" caption="DNS and Gateway Settings" alt="Gateway settings within the DNS entry" showCaption="true"}

You can then close the *Putty program*.
**PLEASE NOTE**: To check if the DNS have been set correctly click on \[**Status**], in the *IPCOP web panel*, and then open the \[**Network Status**] menu.
Look for the *Red DNS configuration item* and check if the DNS are the correct ones.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/CL5XwIp5ebSkh46c_Mz38_image.png" size="50" width="1332" height="134" position="center" caption="DNS Configuration" alt="Checking DNS after closing Putty" showCaption="true"}

At this point we need to configure IPCOP so that we can authenticate with our Servers.
Then open the \[**Services**] menu and then click on \[**Dynamic DNS**].
As the service, choose *dyndns.org*.
**IMPORTANT**: You do not need to be registered with the *dyndns.org service as our Servers redirect the request directly to themselves*.
Then click on the \[**Add**] button to proceed with the service configuration.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/vrS1zm-BhURXZhlEJen-n_image.png" size="50" width="1323" height="155" position="center" caption="IPCOP Configuration" alt="IPCOP Configuration from Dynamic DNS Menu" showCaption="true"}

Then configure it as follow

- **Enabled**: Check the item to enable the service.
- **Hostname**: Enter any name you like. For example, the word hostname.
- **Domain**: Enter a domain of your choice. For example domain.com.
- **Username**: Enter the email/username to register for the service.
- **Password**: Enter your password.

**PLEASE NOTE**: The password was emailed to the address specified when registering for the Cloud Filter.
Finally, click \[**Update]** to save.

Image Alt Text: At this point you can enable the DHCP Server so that it automatically assigns network parameters, including our DNS, to the various internal devices.
To configure the *DHCP Server*, open the \[**Services**] menu and then click on \[**DHCP Server**].
Fill in the various fields as follows:


- **Enabled**: Put a checkmark to enable the service.
- **Start address**: Enter the first IP address in the DHCP range.
- **End address**: Enter the last IP address of the DHCP range .
- **Default lease time (mins)**: Set the DHCP lease time (in minutes).
- **Primary DNS**: Enter the address 185.236.104.
- **Secondary DNS**: Enter the address 185.236.105.105.

Click on the \[**Save**] button to save the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0c_nkr6W4DASQ6p2tcVtd_image.png" size="50" width="1330" height="343" position="center" caption="Dhcp server configuration" alt="Configuring and enabling DHCP server" showCaption="true"}

Alternatively, the DNS of the various devices within the network can be changed manually.

## OPTIONAL: Deny DNS changes by users

It is possible to increase security by denying the user the ability to browse unfiltered, as a result of changing the DNS on their device.
To do this, proceed as follows:

- Open the \[**Firewall**] menu and click on \[**Firewall&#x20;**
- At this point you need to create rules to block all traffic on *port 53 (DNS Service)*, both *TCP and UDP*, except those directed to our IPs.

Then click on the \[**Outgoing Traffic**] button to create a new rule.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/qnUbZkqIvK9bOZhsJqgqd_image.png" size="50" width="1323" height="304" position="center" caption=" Firewall rules" alt="Blocking traffic on port 53 via Firewall rule" showCaption="true"}

See the image below to understand how to create the rule.
**PLEASE NOTE**: Enter the *IP 185.236.104.104* in the *Destination IP or Net: field*.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/xIpyPwA-z62aqoiiMYVNu_image.png" size="50" width="1332" height="623" position="center" caption="Denial of editing for the user" alt="Creating firewall rule to deny the user from changing DNS" showCaption="true"}

Then click \[**Save**] to add the rule.
Then create another rule, similar to the previous one, except the *Destination IP or Net: field must be 185.236.105.105*.
Finally, you need to create an additional rule with the purpose of blocking all traffic on *port 53 (DNS), both TCP and UDP*.
See the image below to understand how to create the rule.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/PRjCGbDKGcPFtAigM4qiV_image.png" size="50" width="1327" height="617" position="center" caption="New firewall rules" alt="Creating a new rule with Destination IP different from the one previously created" showCaption="true"}

**Other ways to ask**:

- How to configure IPCOP router.
- IPCOP router configuration. How to.


[title] How to run scripts on multi-WAN scenarios on Mikrotik
[path] Router Guides/The FlashStart DNS filter configuration for Mikrotik OS/

+To synchronize 2 or more public IPs, you need to create a Script on Mikrotik with the following lines:

*WANs&#xD;*
-----------

*/ip route remove \[find comment=ddns\_wan]*

Replace *\<GATEWAY\_WAN2>* with the gateway of the second line (WAN).

*/ip route add dst-address=185.236.104.114 gateway=\<GATEWAY\_WAN2> comment=ddns\_wan*

In the USER1 and PASS1 fields, enter the user name (username) and password of your account (first network).

\:tool fetch url=[link](https://ddns.flashstart.com/nic/update?hostname=\&myip=\&wildcard=NOCHG\&username=USER1\&password=PASS1)

Do the same thing for USER2 and PASS2.

**PLEASE NOTE**: To synchronize the second Public IP you must enter the second network within your Dashboard (*NETWORK menu*).

\:tool fetch url=[link](https://ddns2.flashstart.com/nic/update?hostname=\&myip=\&wildcard=NOCHG\&username=USER2\&password=PASS2)

Also copy and paste if following lines in order to delete previously created static routes and clear the cache.

*/ip route remove \[find comment=ddns\_wan]&#x20;/ip dns cache flush*

Below are the scripts to be used in the case of 3 and 4 WANs.

**PLEASE NOTE:&#x20;**&#x41;s explained above, you must replace the *GATEWAY\_WAN,USER* and *PASS* fields with your own data.

WANs


*/ip route remove \[find comment=ddns\_wan]*

*/ip route add dst-address=185.236.104.114 gateway=\<GATEWAY\_WAN2> comment=ddns\_wan*

*/ip route add dst-address=185.236.104.124 gateway=\<GATEWAY\_WAN3> comment=ddns\_wan*

\:tool fetch url=[link](https://ddns.flashstart.com/nic/update\\?hostname=\&myip=\&wildcard=NOCHG\&username=USER1\&password=PASS1)

\:tool fetch url=[link](https://ddns2.flashstart.com/nic/update\\?hostname=\&myip=\&wildcard=NOCHG\&username=USER2\&password=PASS2)

\:tool fetch url=[link](https://ddns3.flashstart.com/nic/update\\?hostname=\&myip=\&wildcard=NOCHG\&username=USER3\&password=PASS3)

*/ip route remove \[find comment=ddns\_wan]&#xD;*&#xA;*&#xD;/ip dns cache flush*

## WANs

*/ip route remove \[find comment=ddns\_wan]&#xD;*&#xA;*&#xD;*&#xA;*&#xD;/ip route add dst-address=185.236.104.114 gateway=\<GATEWAY\_WAN2> comment=ddns\_wan&#xD;*&#xA;*&#xD;*&#xA;*&#xD;/ip route add dst-address=185.236.104.124 gateway=\<GATEWAY\_WAN3> comment=ddns\_wan&#xD;*&#xA;*&#xD;*&#xA;*&#xD;/ip route add dst-address=185.236.104.134 gateway=\<GATEWAY\_WAN4> comment=ddns\_wan*

\:tool fetch url=[link](https://ddns.flashstart.com/nic/update\\?hostname=\&myip=\&wildcard=NOCHG\&username=USER1\&password=PASS1)
\:tool fetch url=[link](https://ddns2.flashstart.com/nic/update\\?hostname=\&myip=\&wildcard=NOCHG\&username=USER2\&password=PASS2)
\:tool fetch url=[link](https://ddns3.flashstart.com/nic/update\\?hostname=\&myip=\&wildcard=NOCHG\&username=USER3\&password=PASS3)
\:tool fetch url=[link](https://ddns4.flashstart.com/nic/update\\?hostname=\&myip=\&wildcard=NOCHG\&username=USER4\&password=PASS4)

*/ip route remove \[find comment=ddns\_wan]&#xD;*&#xA;*&#xD;/ip dns cache flush*

Finally, you need to create a *Scheduler to automatically run the Script*, for example, every minute.
From your Dashboard, in the *NETWORKS menu*, you can check the status of your various networks.
If everything is working properly you should see the various Public IPs and synchronization status.

**Other ways to ask**:

- How to run scripts on multi-WAN scenarios in Mikrotik.
- Running scripts on multi-WAN scenarios in Mikrotik. How to handle them.


[title] PFSense configuration
[path] Router Guides/

## Filter Configuration on<font color="#ff9900"> </font>PFSense

If you have not yet registered for the service you can do so by clicking on the following link:<font color="#0b0b0b"> </font>.
Connect to the PFSense web panel and configure the Dynamic DNS (DDNS) service like this:

- **Service Type**: Choose Custom.
- **Interface to monitor**: Select WAN.
- **Interface to send update from**: Select WAN.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/GX5vKDr_BLmPWq7XGmIgj_image.png" size="50" width="679" height="367" position="center" caption="Dynamic DNS Configuration" alt="Dynamic DNS Client Configuration" darkWidth="679" darkHeight="367" showCaption="true"}

- **Username**: Enter username/email of registration.
- **Password**: Enter password, received via email to the address specified during registration.
- **Update URL**: Paste the following instruction:

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/JX5cDYdtTEOpwzZ0LmXjm_image.png" size="50" width="971" height="483" position="center" caption="Data Inseriment" alt="insert username and password for configuration" darkWidth="971" darkHeight="483" showCaption="true"}

Click on \[**Diagnostic**] and then on \[**Edit File**].
Then click on \[**Browse**] and, in the list below, open the folder etc.
Finally, open the file called crontab and edit it as follows:

- Look for the line ending with */etc/rc.dyndns.update*, then edit the first column by entering the string \*/5 (The number following the characters \*/ stands for how often public IP synchronization will be forced).
  Also edit the second column by entering the character \*.
  In this example the synchronization will be done every 5 minutes.
  When this is done click on the \[**Save**] button to apply the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/g7ksh9KPm6lF3K9LzLYHV_image.png" size="50" width="1145" height="470" position="center" caption="Public IP Syncronization" alt="DDNS Tr Configurazion" darkWidth="1145" darkHeight="470" showCaption="true"}

**PLEASE NOTE**: In order to use the DDNS service correctly, the operation done is not sufficient since once the device is restarted, the change made to the crontab file will be lost.
Therefore, it is necessary to proceed as follows:

- Click \[**Browse**] again and open the file called rc.bootup.
- Look for the *configure\_cron() command*; and comment it out by adding the *# symbol* at the beginning of the line, as you can see in the image below.
  Then click on \[**Save**] to make the changes.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/35i8q00fIX8NSD_SXudva_image.png" size="50" width="1146" height="501" position="center" caption="Script BootUp edit" alt="Modifying the bootUp script by commenting on the &#x22;configure_cron()&#x22; entry." darkWidth="1146" darkHeight="501" showCaption="true"}

As a final step, you need to edit the *rc.dyndns.update* file, again within the etc. directory. To do this proceed as follows:

- Search inside the file for the line containing the string /\* Interface IP address has changed \*/ and add under it the following command:
  unlink("/conf/dyndns\_wancustom'checkip'0.cache");

**IMPORTANT**: In our example the name of the WAN interface is wancustomer, so you will need to enter the correct command, based on the name of your WAN interface.

- Then save by clicking \[**Save**].

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/HS-YM0JvnITGnxEsKGY5d_image.png" size="50" width="1146" height="467" position="center" caption="edit rc.dyndns.update " alt="edit rc.dyndns.update filesystem" darkWidth="1146" darkHeight="467" showCaption="true"}

Set, either manually or through a *DHCP Server*, the following *IPs as primary and secondary DNS&#x20;*&#x72;espectively on the devices inside the network:

- *185.236.104.104*
- *185.236.105.105*

**Other ways to ask**:

- How to configure the PFSense router.
- PFSense router configuration. How to.


[title] Mikrotik OS configuration
[path] Router Guides/

## Filter configuration using Mikrotik OS

Platform has been certified as a **"Made for Mikrotik"** software platform. It guarantees official recognition and full compatibility on any Router model and OS version! 

**Setup** - Installation is handled by an automatic script that configures content and malware filtering on MikroTik devices. The script also includes DNS redirection rules to prevent users from bypassing the filter by manually changing their DNS resolver.

**DNS Redirection -** Firewall rules redirect all outbound DNS traffic to platform's DNS servers (185.236.104.104 and 185.236.105.105), regardless of the resolver configured on individual clients. This eliminates the need to change DNS settings on each device in the network, which would be a complex operation in large networks or for ISPs.

**Large-scale Provisioning -** The configuration can be deployed simultaneously across multiple routers, which is useful for MikroTik distributors and network administrators managing a high number of devices.

**API** provides a set of APIs that allow integration of the service's features into external portals or systems. Through the API it is possible to retrieve statistical data (blocked websites, traffic by category, detected malware) and programmatically control the main functions of the platform.

If you’re interested in watching how DNS blocking of content works and how it can perform DNS filtering using the MikroTik router, there exists a [dedicated video](https://www.youtube.com/watch?v=YnnHNy48dyo) by [Maher Haddad](https://www.facebook.com/MaherHaddadOfficial/).

If you want to watch a quick tutorial on how to configure Mikrotik on the dashboard, you can find it [here](https://www.youtube.com/watch?v=hs8c87oRiNQ).

Mikrotik O.S. is one of the most used Routers today by our Customers and Partners all over the world. Precisely for this reason, we have created an automatic procedure that allows, in a few clicks, to activate filters on the network, without having to change pre-existing Mikrotik settings.

**Therefore, proceed as follows:**

- Log in to your *Dashboard*.
-  Open the *Networks menu*, after which click *Add New Network*.
-  Then select *Standard* and then on the proceed button.
-  Click on *Connect your network router* then on I have a *Dynamic IP* and continue.
-  Click on I have a *Dynamic DNS service* and *Sincronize with Platform Cloud* and continue.
-  Click on the *Mikrotik logo* and select the *Mikrotik-public dynamic/static IP option*.
-  Click *Auto Configuration* and enter your account password.
-  Copy the generated script by clicking *Copy script*.

**PLEASE NOTE**: By default the option *Add automatic redirection of DNS Queries to Filter is active*.

If active it allows you to create additional Firewall rules for the purpose of automatically forwarding DNS traffic to our hosts.

It is recommended that these rules be used, in order to increase security by preventing users from circumventing the filters by changing the DNS on their machine.

- Finally, click on *continue* to complete the network entry procedure.
-  Access *Mikrotik through WinBox* (recommended) or from the web interface.
-  Open the *Mikrotik terminal by clicking on the New terminal button*, from the list located on the left.
-  Paste the previously copied text by pressing the right mouse button and clicking on the *paste item*.
- To verify the correct synchronization of your *IP click Connection test*, on the network configuration window located within the Dashboard.

**Other topics:**

[How to Enable DoH on MikroTik Routers](docId:6R2vLbCpjQimj7SFIfhX7)&#x20;
[Mikrotik: How to run scripts on multi-WAN scenarios?](docId\:MLpmEzkaCuQbdIhC9HHeE)
[Mikrotik: How do I configure multiprofile?](docId\:bHCDfbRHm7uM47dmfUx1l)
[Mikrotik: How can I solve synchronization problems?  ](docId\:GEqT1d_izz2bPkdRW_7s7)&#x20;
[Mikrotik: How can I block DNS resolution from outside?](docId\:KOxApYCOfttRHq64PBQlX)



**Other ways to ask**:

- How to configure the Mikrotik OS filter.
- Mikrotik OS filter configuration. How to.


[title] How to block DNS resolution from outside in Mikrotik
[path] Router Guides/The FlashStart DNS filter configuration for Mikrotik OS/

It is very important to block the *DNS service* (port 53), for incoming connections, on your *Router/Firewall*, in order to increase security and avoid cyber attacks, such as DDOS.

To do this, connect to your MikroTik, for example, using Winbox, and run the following commands from the Terminal:

- */ip firewall filter&#x20;&#xD;*
- *add chain=input in-interface=IN-INT protocol=udp dst-port=53 action=drop&#xD;*
- *add chain=input in-interface=IN-INT protocol=tcp dst-port=53 action=drop&#xD;*
- */ip firewall filter&#xD;*
- *add chain=forward in-interface=IN-INT protocol=udp dst-port=53 action=drop&#xD;*
- *add chain=forward in-interface=IN-INT protocol=tcp dst-port=53 action=drop*


  **PLEASE NOTE**: Replace IN-INT with the name of your Mikrotik's WAN interface.

**IMPORTANT**: If you use multiple WAN interfaces (multi-WAN scenario) in your Mikrotik, you must re-run the above commands, replacing IN-INT with the names of the other WAN interfaces.

**Other ways to ask**:

- How to block DNS resolution from outside.
- Blocking DNS resolution from outside. How to.


[title] API Documentation for Developers
[path] /


[title] API Documentation for Developers (cloned)
[path] API Integration/


[title] Auth
[path] API Integration/Customerarea/



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/auth/token",
  "name": "Create auth Token",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": ""
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "string",
        "description": "ID of the cake to get"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "dkcMSvJpG55fDm1yzudLH",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"token\": *AUTH_TOKEN*,\n        \"expiration\": \"15 min\"\n    }\n}",
        "language": "200"
      },
      {
        "id": "L9mU1msp6gGzH0do5DWnu",
        "code": "# The user cannot login to the web panel #\n{\n    \"code\": 401,\n    \"content\": []\n}",
        "language": "404"
      }
    ],
    "selectedLanguageId": "dkcMSvJpG55fDm1yzudLH"
  },
  "examples": {
    "languages": [
      {
        "id": "CTZaKtcF2v9hb_mb6Rlrm",
        "code": "# With this token you can create a one-time link that will authenticate your customer, valid until expired.\n\n# The token is already URL-Encoded.\n\n# To create a one-time link, use:\n# - https://cloud.flashstart.com/?auth_token=YOUR_AUTH_TOKEN\n\n# If you have a whitelabel, you can use:\n# - https://WHITELABEL/?auth_token=YOUR_AUTH_TOKEN\n\n\n_________________________________________________________________________________________________________________\n\ncurl -X 'GET' \\\n  'https://api.fsflt.net/customerarea/auth/token' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "CTZaKtcF2v9hb_mb6Rlrm"
  },
  "description": "Create a temporary auth Token ",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "create-auth-token",
  "legacyHash": "j0UbjGD6VJNGTOLIsLLSe"
}
```
:::


[title] Remote support by Sygma Connect
[path] Support/

**Remote support** is a service that enables a technical team to access a computer or device from a distance via an internet connection. This allows them to diagnose and resolve technical issues in real-time, eliminating the need for an on-site physical intervention.

We utilize **Sygma Connect** to deliver this standard of assistance. Our technical team relies on Sygma Connect because it is a highly secure, reliable, and easy-to-configure remote control solution. This enables us to intervene promptly and efficiently, guaranteeing the maximum result in problem-solving with the minimum effort for the client.

Below you will find all the details, system requirements, and download links to get started with Sygma Connect.

## Sygma connect



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/FMpCLs_30zEr2IrnJaMCa_sygmaconnect2.svg" size="36" width="300" height="95" darkWidth="300" darkHeight="95" position="center" showCaption="false"}

The secure remote control solution, easy to configure, which guarantees you the maximum result at the minimum effort.

[Go to Website](https://www.sygmaconnect.com/en/home/index.php)

## Windows version



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/iGrBwVNrNcRu_QgZYDPx5_magnific-windows-10-logo-stylized-xgdfkxvjfw.png" size="26" width="1024" height="1024" darkWidth="1024" darkHeight="1024" position="center" showCaption="false"}

Requirements: from 7 to 10, from 2008 to 2016,x86 architecture both 32 and 64 bit (no arm)

[Download](https://update.sygmaconnect.com/upd/SygmaConnect-setup.exe)

## MacOS version

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/B-g3yXKk0kmqipt1xtJH7_magnific-vector-graphic-of-a-simpl-l78fopbgv9.png" size="24" width="2048" height="2048" darkWidth="2048" darkHeight="2048" position="center" showCaption="false"}



Requirements: from 10.12 (Sierra) to 10.15 (Catalina), x86\_64 architecture only

[Download](https://update.sygmaconnect.com/upd/macx)

## Why choose Sygma Connect ?

### Easy to set up

With just a few simple steps, you can connect to remote PCs or servers for support.

### Multiplatform

Multi-platform software: Windows, Mac and Linux. Download the version that’s right for you.

### Global technology

Developed entirely in Italy, it ensures secure and secure connections thanks to data encryption.

### Advantageous price

Sygma is a great investment, you can do remote assistance in an easy and economical way.

**Other ways to ask**:

- Sygma Connect Remote Assistance
- Remote IT Support via Sygma Connect

[title] Devices
[path] API Integration/Panel/

:::ApiMethodV2
```json
{
  "name": "Get Devices",
  "method": "GET",
  "url": "https://api.fsflt.net/panel/device/list",
  "description": "Gets he available list of devices of a given customer",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "cUPtWy1p1N3xp-F-fUX3k",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/device/list' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"customer_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "RfG5aAsT_T6ey3ZN_slWQ",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/device/list',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "03-28bf9210NoMJlH_lQ-",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/device/list\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "Q3X9iik5pPHS4klhIw_n_",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/device/list\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "L9EhTNSkaVz1LYF2Fio5y",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/device/list\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "cUPtWy1p1N3xp-F-fUX3k"
  },
  "results": {
    "languages": [
      {
        "id": "3JG60vIv7cTpw8laFAm0m",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"device_id\": \"56829ba5\",\n            \"device_username\": \"Client Williamson\",\n            \"device_type\": \"clientshield\"\n        },\n        {\n            \"device_id\": \"4321.2\",\n            \"device_username\": \"testdevice@email.com\",\n            \"device_type\": \"cloudbox\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "3JG60vIv7cTpw8laFAm0m"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the customer, ex. 1234"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-devices",
  "legacyHash": "KSlCX3xKvMTa6FgWoQjjL"
}
```
:::


[title] Objects
[path] API Integration/Panel/Devices/

:::ApiMethodV2
```json
{
  "name": "Get Objects",
  "method": "GET",
  "url": "https://api.fsflt.net/panel/device/objects/list",
  "description": "Gets the list of objects in a profile of a given device",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "3bXR84mFLdPV29Ul_s4BW",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/device/objects/list' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"device_id\":\"string\",\"customer_code\":\"Number\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "ffXuiq0hgSzx1ytq3fe3j",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/device/objects/list',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"device_id\": \"string\",\n      \"customer_code\": \"Number\",\n      \"profile_code\": \"Number\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "BImCHTTS5SBOByZQ3yiMS",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"device_id\": \"string\",\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/device/objects/list\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "TuQIkJRxnEfT0b5f078b-",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/device/objects/list\"\n\npayload = json.dumps({\n   \"device_id\": \"string\",\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "jKFhogDhK6sv0TQZ1nNss",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/device/objects/list\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"device_id\": \"string\",\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "3bXR84mFLdPV29Ul_s4BW"
  },
  "results": {
    "languages": [
      {
        "id": "4QwQDWR2ubpxsv9CkGurd",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"profile_code\": 1,\n        \"ips\": [\n            {\n                \"ip\": \"1.2.3.4\",\n                \"disabled\": false\n            },\n            {\n                \"ip\": \"1.2.3.5\",\n                \"disabled\": false\n            },\n            {\n                \"ip\": \"1.2.3.6\",\n                \"disabled\": false\n            },\n            {\n                \"ip\": \"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff\",\n                \"disabled\": false\n            }\n        ],\n        \"users\": [\n              {\n                \"username\": \"testuser\",\n                \"name\": \"Jhon\",\n                \"surname\": \"Smith\",\n                \"disabled\": false\n              }\n        ],\n        \"groups\": [\n              {\n                \"name\": \"Administrators\",\n                \"disabled\": false\n              }\n        ]\n    }\n}"
      },
      {
        "id": "87VqRNSpwq8gmgrlRWGzX",
        "language": "412",
        "code": "{\n  \"code\" => 412\n  \"content\" => \"Unauthorized: The device_id provided is not associated with this customer.\"\n}",
        "customLabel": ""
      },
      {
        "id": "-Aq4PX3sZ2xsHEgjWDOSs",
        "language": "409",
        "code": "{\n  \"code\" => 409\n  \"content\" => \"Unauthorized: The profile_code provided is not associated with this customer.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "4QwQDWR2ubpxsv9CkGurd"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "device_id",
        "kind": "required",
        "type": "string",
        "description": "The ID of the Device",
        "children": []
      },
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the Customer, ex. 1234"
      },
      {
        "name": "profile_code",
        "kind": "optional",
        "type": "Number",
        "description": "Number of the Profile, ex. 1",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-objects",
  "legacyHash": "n7G0lnk-1nUXMws9jHf0J"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add IP Address",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/device/objects/ip/add",
  "description": "Add a new IP address in a profile for a specific device",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "NuWmx37x92QRpBQOmCSzm",
        "language": "curl",
        "code": "curl --location --request POST 'https://api.fsflt.net/panel/objects/ip/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"device_id\":\"String\",\"customer_code\":\"Number\",\"ip\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "8HtFDpeHoip6whe-FoJgI",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/objects/ip/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"device_id\": \"String\",\n      \"customer_code\": \"Number\",\n      \"ip\": \"String\",\n      \"profile_code\": \"Number\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "e3KBC3vjSjcIZRziOVCPI",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip\": \"String\",\n   \"profile_code\": \"Number\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/objects/ip/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "onF0bs5U9NSOBv6ZEpx5U",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/objects/ip/add\"\n\npayload = json.dumps({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip\": \"String\",\n   \"profile_code\": \"Number\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "D1-he9MTuHcp2EcWvA02n",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/objects/ip/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip\": \"String\",\n   \"profile_code\": \"Number\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "NuWmx37x92QRpBQOmCSzm"
  },
  "results": {
    "languages": [
      {
        "id": "h9XA32cnfmhDRXT51Kd8C",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"IP inserted successfully.\"\n}"
      },
      {
        "id": "kZiEfQY8K-RCdyo8JE1vo",
        "language": "412",
        "customLabel": "",
        "code": "{\n  \"code\" => 412\n  \"content\" => \"Unauthorized: The device_id provided is not associated with this customer.\"\n}"
      },
      {
        "id": "vQs7cSqz5Bf4VBdn9WUnW",
        "language": "403",
        "code": "{\n  \"code\" => 403\n  \"content\" => \"The CloudBox provided cannot handle IPv6s. Please upgrade the CloudBox with a version greater than 1.0.5\"\n}",
        "customLabel": ""
      },
      {
        "id": "UTqhLh3OijgYo6E0t7qMN",
        "language": "406",
        "code": "{\n  \"code\" => 406\n  \"content\" => \"Error: Could not add the requested IP address.\"\n}",
        "customLabel": ""
      },
      {
        "id": "BqoSS84YkU6jrFZc7StZW",
        "language": "409",
        "code": "{\n  \"code\" => 409\n  \"content\" => \"Unauthorized: The profile_code provided is not associated with this customer.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "BqoSS84YkU6jrFZc7StZW"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "device_id",
        "kind": "required",
        "type": "String",
        "description": "Device ID ex. 123.2",
        "children": []
      },
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the Customer"
      },
      {
        "name": "ip",
        "kind": "required",
        "type": "String",
        "description": "IPv4 / IPv6",
        "children": []
      },
      {
        "name": "profile_code",
        "kind": "optional",
        "type": "Number",
        "description": "Profile number ex. 1",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-ip-address",
  "legacyHash": "ibWmDuLCX8l3HHRM7zshT"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add Range IP",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/device/objects/rangeip/add",
  "description": "Add a new range of IP addresses in a profile for a specific device",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "TBjPxnFz1DcZlpuBLtCU-",
        "language": "curl",
        "code": "curl --location --request POST 'https://api.fsflt.net/panel/objects/rangeip/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"device_id\":\"String\",\"customer_code\":\"Number\",\"ip_start\":\"String\",\"ip_end\":\"string\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "0M3ZNHle4M7ZsoZ8Zhv9a",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/objects/rangeip/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"device_id\": \"String\",\n      \"customer_code\": \"Number\",\n      \"ip_start\": \"String\",\n      \"ip_end\": \"string\",\n      \"profile_code\": \"Number\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "Vk9_WMszGkzCSyHw6ifMZ",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip_start\": \"String\",\n   \"ip_end\": \"string\",\n   \"profile_code\": \"Number\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/objects/rangeip/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "K9TwPyAuIchqZT1WsH2kZ",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/objects/rangeip/add\"\n\npayload = json.dumps({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip_start\": \"String\",\n   \"ip_end\": \"string\",\n   \"profile_code\": \"Number\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "i_DUOQk0yCTS8kat3Lste",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/objects/rangeip/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip_start\": \"String\",\n   \"ip_end\": \"string\",\n   \"profile_code\": \"Number\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "TBjPxnFz1DcZlpuBLtCU-"
  },
  "results": {
    "languages": [
      {
        "id": "h9XA32cnfmhDRXT51Kd8C",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"IP inserted successfully.\"\n}"
      },
      {
        "id": "kZiEfQY8K-RCdyo8JE1vo",
        "language": "412",
        "customLabel": "",
        "code": "{\n  \"code\" => 412\n  \"content\" => \"Unauthorized: The device_id provided is not associated with this customer.\"\n}"
      },
      {
        "id": "vQs7cSqz5Bf4VBdn9WUnW",
        "language": "403",
        "code": "{\n  \"code\" => 403\n  \"content\" => \"Range IP not valid. Please provide a valid IP Range.\"\n}",
        "customLabel": ""
      },
      {
        "id": "UTqhLh3OijgYo6E0t7qMN",
        "language": "406",
        "code": "{\n  \"code\" => 406\n  \"content\" => \"The supplied IP Range exceeds the limits\"\n}",
        "customLabel": ""
      },
      {
        "id": "oJtRAr65qLlcWJI6thRbT",
        "language": "409",
        "code": "{\n  \"code\" => 409\n  \"content\" => \"Unauthorized: The profile_code provided is not associated with this customer.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "h9XA32cnfmhDRXT51Kd8C"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "device_id",
        "kind": "required",
        "type": "String",
        "description": "Device ID ex. 123.2",
        "children": []
      },
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the Customer"
      },
      {
        "name": "ip_start",
        "kind": "required",
        "type": "String",
        "description": "IPv4 only",
        "children": []
      },
      {
        "name": "ip_end",
        "kind": "required",
        "type": "string",
        "description": "IPv4 only",
        "children": []
      },
      {
        "name": "profile_code",
        "kind": "optional",
        "type": "Number",
        "description": "Profile number ex. 1",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-range-ip",
  "legacyHash": "KX10_ckn-MztjEjjN30EH"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add CIDR",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/device/objects/cidr/add",
  "description": "Add CIDR in a profile for a specific device",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "nGVrdZvLcATMu2-7jhHYD",
        "language": "curl",
        "code": "curl --location --request POST 'https://api.fsflt.net/panel/objects/cidr/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"device_id\":\"String\",\"customer_code\":\"Number\",\"cidr\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "V4kwHVmotsqynMFjwF9UN",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/objects/cidr/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"device_id\": \"String\",\n      \"customer_code\": \"Number\",\n      \"cidr\": \"String\",\n      \"profile_code\": \"Number\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "EpZu7iZwqG-5O5p3-_b7M",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"cidr\": \"String\",\n   \"profile_code\": \"Number\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/objects/cidr/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "xhk7uAi0KVJ2-c64L7wfz",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/objects/cidr/add\"\n\npayload = json.dumps({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"cidr\": \"String\",\n   \"profile_code\": \"Number\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "MVCrHbbXJKnHJjKT_EHLu",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/objects/cidr/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"cidr\": \"String\",\n   \"profile_code\": \"Number\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "nGVrdZvLcATMu2-7jhHYD"
  },
  "results": {
    "languages": [
      {
        "id": "h9XA32cnfmhDRXT51Kd8C",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"code\" => 200\n  \"content\" => \"CIDR inserted successfully.\"\n}"
      },
      {
        "id": "oJtRAr65qLlcWJI6thRbT",
        "language": "409",
        "code": "{\n  \"code\" => 409\n  \"content\" => \"Unauthorized: The profile_code provided is not associated with this customer.\"\n}",
        "customLabel": ""
      },
      {
        "id": "kZiEfQY8K-RCdyo8JE1vo",
        "language": "412",
        "customLabel": "",
        "code": "{\n  \"code\" => 412\n  \"content\" => \"Unauthorized: The device_id provided is not associated with this customer.\"\n}"
      },
      {
        "id": "vQs7cSqz5Bf4VBdn9WUnW",
        "language": "403",
        "code": "{\n  \"code\" => 403\n  \"content\" => \"The CloudBox provided cannot handle CIDRs.\"\n}",
        "customLabel": ""
      },
      {
        "id": "1wlAI87YUEx6oL7tC5Byj",
        "language": "406",
        "code": "{\n  \"code\" => 406\n  \"content\" => \"Error: Could not add the requested CIDR address.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "h9XA32cnfmhDRXT51Kd8C"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "device_id",
        "kind": "required",
        "type": "String",
        "description": "Device ID ex. 123.2",
        "children": []
      },
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the Customer"
      },
      {
        "name": "cidr",
        "kind": "required",
        "type": "String",
        "description": "IPv4 / IPv6 CIDR, ex. 192.168.1.0/24",
        "children": []
      },
      {
        "name": "profile_code",
        "kind": "optional",
        "type": "Number",
        "description": "Profile number ",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-cidr",
  "legacyHash": "10Dj7zaw__e-dGEVI-XrU"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Remove IP Address",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/device/objects/ip/remove",
  "description": "Remove IP address from profile for a specific device",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "qSRlhCRSqFZ-Gcg56dMbp",
        "language": "curl",
        "code": "curl --location --request POST 'https://api.fsflt.net/panel/objects/ip/remove' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"device_id\":\"String\",\"customer_code\":\"Number\",\"ip\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "hg8C-rT8RGOsDsfv8g54i",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/objects/ip/remove',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"device_id\": \"String\",\n      \"customer_code\": \"Number\",\n      \"ip\": \"String\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "ZQ-eJaV-Kel9PMs6zoEka",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip\": \"String\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/objects/ip/remove\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "4kGHH6xHiLU4-vJeDMJZI",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/objects/ip/remove\"\n\npayload = json.dumps({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip\": \"String\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "iY9sB3I6-yoxTthLn6Qb_",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/objects/ip/remove\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip\": \"String\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "qSRlhCRSqFZ-Gcg56dMbp"
  },
  "results": {
    "languages": [
      {
        "id": "h9XA32cnfmhDRXT51Kd8C",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"IP removed successfully.\"\n}"
      },
      {
        "id": "kZiEfQY8K-RCdyo8JE1vo",
        "language": "412",
        "customLabel": "",
        "code": "{\n  \"code\" => 412\n  \"content\" => \"Unauthorized: The device_id provided is not associated with this customer.\"\n}"
      },
      {
        "id": "UTqhLh3OijgYo6E0t7qMN",
        "language": "406",
        "code": "{\n  \"code\" => 406\n  \"content\" => \"IP given not found.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "h9XA32cnfmhDRXT51Kd8C"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "device_id",
        "kind": "required",
        "type": "String",
        "description": "Device ID ex. 123.2",
        "children": []
      },
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the Customer"
      },
      {
        "name": "ip",
        "kind": "required",
        "type": "String",
        "description": "IPv4 / IPv6",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-ip-address",
  "legacyHash": "7ODvma0BffNTapOH__zY9"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Remove Range IP",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/device/objects/rangeip/remove",
  "description": "Removes a range of IP addresses in a profile for a specific device",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "v_MXGjD8G5-Wfsz6d1yqp",
        "language": "curl",
        "code": "curl --location --request POST 'https://api.fsflt.net/panel/objects/rangeip/remove' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"device_id\":\"String\",\"customer_code\":\"Number\",\"ip_start\":\"String\",\"ip_end\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "08L4rpXMXgKpwfhpM0mTR",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/objects/rangeip/remove',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"device_id\": \"String\",\n      \"customer_code\": \"Number\",\n      \"ip_start\": \"String\",\n      \"ip_end\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "9dmfUlDh_7sKQWt9k8Swr",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip_start\": \"String\",\n   \"ip_end\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/objects/rangeip/remove\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "TFB8WL3hTkbdzJ8Kpmdb_",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/objects/rangeip/remove\"\n\npayload = json.dumps({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip_start\": \"String\",\n   \"ip_end\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "rLcJSXrKOtj6IInm1d8FF",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/objects/rangeip/remove\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"ip_start\": \"String\",\n   \"ip_end\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "v_MXGjD8G5-Wfsz6d1yqp"
  },
  "results": {
    "languages": [
      {
        "id": "h9XA32cnfmhDRXT51Kd8C",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Range IP removed successfully.\"\n}"
      },
      {
        "id": "kZiEfQY8K-RCdyo8JE1vo",
        "language": "412",
        "customLabel": "",
        "code": "{\n  \"code\" => 412\n  \"content\" => \"Unauthorized: The device_id provided is not associated with this customer.\"\n}"
      },
      {
        "id": "UTqhLh3OijgYo6E0t7qMN",
        "language": "406",
        "code": "{\n  \"code\" => 406\n  \"content\" => \"Range IP given not found.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "h9XA32cnfmhDRXT51Kd8C"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "device_id",
        "kind": "required",
        "type": "String",
        "description": "Device ID ex. 123.2",
        "children": []
      },
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the Customer"
      },
      {
        "name": "ip_start",
        "kind": "required",
        "type": "String",
        "description": "IPv4 only",
        "children": []
      },
      {
        "name": "ip_end",
        "kind": "required",
        "type": "string",
        "description": "IPv4 only",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-range-ip",
  "legacyHash": "9BLYmEbvAoVud1OXmCa1p"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Remove CIDR",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/device/objects/cidr/remove",
  "description": "Removes CIDR in a profile for a specific device",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "zGkRIojkTvpc1GnG6ef2-",
        "language": "curl",
        "code": "curl --location --request POST 'https://api.fsflt.net/panel/objects/cidr/remove' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"device_id\":\"String\",\"customer_code\":\"Number\",\"cidr\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "582wwoEzvfZxehpeqaS9K",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/objects/cidr/remove',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"device_id\": \"String\",\n      \"customer_code\": \"Number\",\n      \"cidr\": \"String\",\n      \"profile_code\": \"Number\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "UxYM_D7Y1CWkBik6PwscN",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"cidr\": \"String\",\n   \"profile_code\": \"Number\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/objects/cidr/remove\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "4NVkhPfoxF3NL5imJkWcL",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/objects/cidr/remove\"\n\npayload = json.dumps({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"cidr\": \"String\",\n   \"profile_code\": \"Number\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Rpp9SqZd-ixZd7B9_xPmr",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/objects/cidr/remove\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"device_id\": \"String\",\n   \"customer_code\": \"Number\",\n   \"cidr\": \"String\",\n   \"profile_code\": \"Number\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "zGkRIojkTvpc1GnG6ef2-"
  },
  "results": {
    "languages": [
      {
        "id": "h9XA32cnfmhDRXT51Kd8C",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"code\" => 200\n  \"content\" => \"CIDR removed successfully.\"\n}"
      },
      {
        "id": "kZiEfQY8K-RCdyo8JE1vo",
        "language": "412",
        "customLabel": "",
        "code": "{\n  \"code\" => 412\n  \"content\" => \"Unauthorized: The device_id provided is not associated with this customer.\"\n}"
      },
      {
        "id": "1wlAI87YUEx6oL7tC5Byj",
        "language": "406",
        "code": "{\n  \"code\" => 406\n  \"content\" => \"CIDR given not found.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "1wlAI87YUEx6oL7tC5Byj"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "device_id",
        "kind": "required",
        "type": "String",
        "description": "Device ID ex. 123.2",
        "children": []
      },
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "ID of the Customer"
      },
      {
        "name": "cidr",
        "kind": "required",
        "type": "String",
        "description": "IPv4 / IPv6 CIDR, ex. 192.168.1.0/24",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-cidr",
  "legacyHash": "E1kRJvYfujPS8kqH8SmFq"
}
```
:::


[title] Schedule
[path] API Integration/Report/

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/schedule/available",
  "name": "Available reports for scheduling",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "name": "lang",
        "kind": "optional",
        "type": "String",
        "description": "EN | IT | DE | ES",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "0BtCgb0hqT2Z1Z39ElIma",
        "code": "[\n    {\n        \"id\": 28,\n        \"description\": \"Blocked by category\"\n    },\n    {\n        \"id\": 29,\n        \"description\": \"Blocked for macrocategory\"\n    }\n]",
        "language": "200"
      },
      {
        "id": "XWakB6Y5GOX3hUSvB1zyW",
        "code": "{\n    \"code\": 401,\n    \"message\": \"Missing API Key\"\n}",
        "language": "401"
      },
      {
        "id": "I9BMRN6B8q6VobA3gfHFH",
        "language": "422",
        "code": "{\n    \"code\": 422,\n    \"message\": \"Validation error\",\n    \"content\": {\n        \"lang\": [\n            \"validation.in\"\n        ]\n    }\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "0BtCgb0hqT2Z1Z39ElIma"
  },
  "examples": {
    "languages": [
      {
        "id": "4kDS0Gqkeu5NhOLA9QlTA",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/schedule/available' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "_YiUD8SNdIsJXmEt5YIiw",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/schedule/available',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "tmMcnDdJBvUAP0DWUtVi3",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/schedule/available\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "GhtGW_sUANSbs0H7Shc7X",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/schedule/available\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "KUVn1_c2ZY_1CnmRdQkvo",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/schedule/available\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "_YiUD8SNdIsJXmEt5YIiw"
  },
  "description": "Get the list of available reports for scheduling",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "available-reports-for-scheduling",
  "legacyHash": "GuIiYEI7tKuufG6a3tTrm"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/schedule/list",
  "name": "List active scheduling on customer",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "name": "lang",
        "kind": "optional",
        "type": "String",
        "description": "EN | IT | DE | ES",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "0BtCgb0hqT2Z1Z39ElIma",
        "code": "[\n    {\n        \"id\": \"886.2\",\n        \"reports_id\": [\n            8,\n            28,\n            60\n        ],\n        \"recivers\": [\n            \"example@example.com\"\n        ],\n        \"days\": [\n            \"0\",\n            \"1\",\n            \"2\",\n            \"3\",\n            \"4\",\n            \"5\",\n            \"6\"\n        ],\n        \"hours\": [\n            \"00\",\n            \"23\"\n        ],\n        \"interval\": 7,\n        \"profile_name\": \"Default\"\n    },\n    {\n        \"id\": \"997.2\",\n        \"reports_id\": [\n            87\n        ],\n        \"recivers\": [\n            \"example@example.com\"\n        ],\n        \"days\": [\n            \"1\"\n        ],\n        \"hours\": [\n            \"00\",\n            \"23\"\n        ],\n        \"interval\": 7,\n        \"profile_name\": \"New 1\"\n    }\n]",
        "language": "200"
      },
      {
        "id": "XWakB6Y5GOX3hUSvB1zyW",
        "code": "{\n    \"code\": 401,\n    \"message\": \"Missing API Key\"\n}",
        "language": "401"
      },
      {
        "id": "I9BMRN6B8q6VobA3gfHFH",
        "language": "422",
        "code": "{\n    \"code\": 422,\n    \"message\": \"Validation error\",\n    \"content\": {\n        \"lang\": [\n            \"validation.in\"\n        ]\n    }\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "I9BMRN6B8q6VobA3gfHFH"
  },
  "examples": {
    "languages": [
      {
        "id": "tWh7Xadsj2104OaCA_mJR",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/schedule/list' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "eSdIgN7wpd2BrBrAqwKZw",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/schedule/list',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "_2xi_JEY5URHm15ljQsjX",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/schedule/list\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "DXir81dnhYq0hXzVexEIY",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/schedule/list\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "ZXe6gjHtDjtInTnEkgI7i",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/schedule/list\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tWh7Xadsj2104OaCA_mJR"
  },
  "description": "Gets the currently active reports schedule of a given customer",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "list-active-scheduling-on-customer",
  "legacyHash": "e_BnoyiYiGxGD3QpzqU6N"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/schedule/add",
  "name": "Add a report schedule",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "name": "reports_id",
        "kind": "required",
        "type": "Array",
        "description": "Array of reports id to add in the schedule",
        "children": []
      },
      {
        "name": "recivers",
        "kind": "required",
        "type": "Array",
        "description": "Array of emails to send the reports: max 3",
        "children": []
      },
      {
        "name": "days",
        "kind": "required",
        "type": "Array",
        "description": "Array of integer of days of the week to be included in the report.\n0 stands for monday\n...\n6 for sunday",
        "children": []
      },
      {
        "name": "hours",
        "kind": "required",
        "type": "string",
        "description": "Array of indeger of size 2 to specify the interval of the report. e.g [00,23] stands for all day",
        "children": []
      },
      {
        "name": "interval",
        "kind": "required",
        "type": "Number",
        "description": "How often send the reports\n1 for once a day\n7 for once a week",
        "children": []
      },
      {
        "name": "all_profiles",
        "kind": "required",
        "type": "Boolean",
        "description": "True for generate reports for all profiles",
        "children": []
      },
      {
        "name": "profile_code",
        "kind": "optional",
        "type": "Integer",
        "description": "If all_profiles is false, specify a profile to generate the reports",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "0BtCgb0hqT2Z1Z39ElIma",
        "code": "{\n    \"id\": \"1195.2\",\n    \"message\": \"Schedule added successfully\"\n}",
        "language": "200"
      },
      {
        "id": "XWakB6Y5GOX3hUSvB1zyW",
        "code": "{\n    \"code\": 401,\n    \"message\": \"Missing API Key\"\n}",
        "language": "401"
      },
      {
        "id": "I9BMRN6B8q6VobA3gfHFH",
        "language": "422",
        "code": "{\n    \"code\": 422,\n    \"message\": \"Validation error\",\n    \"content\": {\n        \"lang\": [\n            \"validation.in\"\n        ]\n    }\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "0BtCgb0hqT2Z1Z39ElIma"
  },
  "examples": {
    "languages": [
      {
        "id": "ll0UTeffaijOsS_69Jpy7",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/report/traffic_reports/schedule/add' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"reports_id\":\"Array\",\"recivers\":\"Array\",\"days\":\"Array\",\"hours\":\"String\",\"interval\":\"Number\",\"all_profiles\":\"Boolean\",\"profile_code\":\"Integer\"}'",
        "customLabel": ""
      },
      {
        "id": "c2C_kYXa9zmYgAs9tz8wt",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/report/traffic_reports/schedule/add',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"reports_id\":\"Array\",\"recivers\":\"Array\",\"days\":\"Array\",\"hours\":\"String\",\"interval\":\"Number\",\"all_profiles\":\"Boolean\",\"profile_code\":\"Integer\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "9co35gWwtsJS11s9ZETMD",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"reports_id\\\":\\\"Array\\\",\\\"recivers\\\":\\\"Array\\\",\\\"days\\\":\\\"Array\\\",\\\"hours\\\":\\\"String\\\",\\\"interval\\\":\\\"Number\\\",\\\"all_profiles\\\":\\\"Boolean\\\",\\\"profile_code\\\":\\\"Integer\\\"}\";\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/schedule/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "K_I67h_cQ9nV2C_UyURce",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/schedule/add\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"reports_id\\\":\\\"Array\\\",\\\"recivers\\\":\\\"Array\\\",\\\"days\\\":\\\"Array\\\",\\\"hours\\\":\\\"String\\\",\\\"interval\\\":\\\"Number\\\",\\\"all_profiles\\\":\\\"Boolean\\\",\\\"profile_code\\\":\\\"Integer\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "10vUZ2gjZ1l3TKf4k6LUY",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/schedule/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"reports_id\\\":\\\"Array\\\",\\\"recivers\\\":\\\"Array\\\",\\\"days\\\":\\\"Array\\\",\\\"hours\\\":\\\"String\\\",\\\"interval\\\":\\\"Number\\\",\\\"all_profiles\\\":\\\"Boolean\\\",\\\"profile_code\\\":\\\"Integer\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "K_I67h_cQ9nV2C_UyURce"
  },
  "description": "Add a new schedule report on a specified customer",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-a-report-schedule",
  "legacyHash": "IYOy-J9Ee8vNF9IHZTb5t"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/schedule/remove",
  "name": "Remove a report schedule",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "name": "id",
        "kind": "required",
        "type": "String",
        "description": "Id of the schedule report to remove",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "0BtCgb0hqT2Z1Z39ElIma",
        "code": "{\n    \"message\": \"Schedule removed successfully\"\n}",
        "language": "200"
      },
      {
        "id": "XWakB6Y5GOX3hUSvB1zyW",
        "code": "{\n    \"code\": 401,\n    \"message\": \"Missing API Key\"\n}",
        "language": "401"
      },
      {
        "id": "I9BMRN6B8q6VobA3gfHFH",
        "language": "422",
        "code": "{\n    \"code\": 422,\n    \"message\": \"Validation error\",\n    \"content\": {\n        \"lang\": [\n            \"validation.in\"\n        ]\n    }\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "0BtCgb0hqT2Z1Z39ElIma"
  },
  "examples": {
    "languages": [
      {
        "id": "YH-jTDMDQijdzw-Cj61M5",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/report/traffic_reports/schedule/remove' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"id\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "li51QSyXxdBprvnWSLzxi",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/report/traffic_reports/schedule/remove',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"id\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "NnuIsstsLYaCcNJELWHds",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"id\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/schedule/remove\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "Fbot0n4jJC4CkQDeL-jiM",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/schedule/remove\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"id\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "XlhMBvfK_bMlnPeeuzegy",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/schedule/remove\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"id\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "YH-jTDMDQijdzw-Cj61M5"
  },
  "description": "Remove a report scheduling from a customer",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-a-report-schedule",
  "legacyHash": "5izJceCqJ0gGoUwdJ7Q6N"
}
```
:::


[title] Timezone
[path] API Integration/Panel/

:::ApiMethodV2
```json
{
  "name": "Get available Timezones",
  "method": "GET",
  "url": "https://api.fsflt.net/panel/timezone/list",
  "description": "Get the list of assignable Timezones",
  "tab": "examples",
  "examples": {
    "selectedLanguageId": "o8O2do0eCWLjQseiUvcTY",
    "languages": [
      {
        "id": "o8O2do0eCWLjQseiUvcTY",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"id\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.cakes.com\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      }
    ]
  },
  "results": {
    "languages": [
      {
        "id": "cMstEMic-jQJB9YZUAMPK",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        \"Pacific/Niue\",\n        \"Pacific/Pago_Pago\",\n        \"Pacific/Honolulu\",\n        \"Pacific/Rarotonga\",\n        \"Pacific/Tahiti\",\n        \"Pacific/Marquesas\",\n        \"America/Anchorage\",\n        \"Pacific/Gambier\",\n        \"America/Los_Angeles\",\n        \"America/Tijuana\",\n        \"America/Vancouver\",\n        \"America/Whitehorse\",\n        \"Pacific/Pitcairn\",\n        \"America/Dawson_Creek\",\n        \"America/Denver\",\n        \"America/Edmonton\",\n        \"America/Hermosillo\",\n        \"America/Mazatlan\",\n        \"America/Phoenix\",\n        \"America/Yellowknife\",\n        \"America/Belize\",\n        \"America/Chicago\",\n        \"America/Costa_Rica\",\n        \"America/El_Salvador\",\n        \"America/Guatemala\",\n        \"America/Managua\",\n        \"America/Mexico_City\",\n        \"America/Regina\",\n        \"America/Tegucigalpa\",\n        \"America/Winnipeg\",\n        \"Pacific/Easter\",\n        \"Pacific/Galapagos\",\n        \"America/Bogota\",\n        \"America/Cancun\",\n        \"America/Guayaquil\",\n        \"America/Havana\",\n        \"America/Iqaluit\",\n        \"America/Jamaica\",\n        \"America/Lima\",\n        \"America/Nassau\",\n        \"America/New_York\",\n        \"America/Panama\",\n        \"America/Port-au-Prince\",\n        \"America/Rio_Branco\",\n        \"America/Toronto\",\n        \"America/Asuncion\",\n        \"America/Barbados\",\n        \"America/Boa_Vista\",\n        \"America/Campo_Grande\",\n        \"America/Caracas\",\n        \"America/Cuiaba\",\n        \"America/Curacao\",\n        \"America/Grand_Turk\",\n        \"America/Guyana\",\n        \"America/Halifax\",\n        \"America/La_Paz\",\n        \"America/Manaus\",\n        \"America/Martinique\",\n        \"America/Port_of_Spain\",\n        \"America/Porto_Velho\",\n        \"America/Puerto_Rico\",\n        \"America/Santiago\",\n        \"America/Santo_Domingo\",\n        \"America/Thule\",\n        \"Antarctica/Palmer\",\n        \"Atlantic/Bermuda\",\n        \"America/St_Johns\",\n        \"America/Araguaina\",\n        \"America/Argentina/Buenos_Aires\",\n        \"America/Bahia\",\n        \"America/Belem\",\n        \"America/Cayenne\",\n        \"America/Fortaleza\",\n        \"America/Godthab\",\n        \"America/Maceio\",\n        \"America/Miquelon\",\n        \"America/Montevideo\",\n        \"America/Paramaribo\",\n        \"America/Recife\",\n        \"Antarctica/Rothera\",\n        \"Atlantic/Stanley\",\n        \"America/Noronha\",\n        \"Atlantic/South_Georgia\",\n        \"America/Scoresbysund\",\n        \"Atlantic/Azores\",\n        \"Atlantic/Cape_Verde\",\n        \"Africa/Abidjan\",\n        \"Africa/Accra\",\n        \"Africa/Bissau\",\n        \"Africa/Casablanca\",\n        \"Africa/El_Aaiun\",\n        \"Africa/Monrovia\",\n        \"America/Danmarkshavn\",\n        \"Atlantic/Canary\",\n        \"Atlantic/Faroe\",\n        \"Atlantic/Reykjavik\",\n        \"Etc/GMT\",\n        \"Europe/Dublin\",\n        \"Europe/Lisbon\",\n        \"Europe/London\",\n        \"Africa/Algiers\",\n        \"Africa/Ceuta\",\n        \"Africa/Lagos\",\n        \"Africa/Ndjamena\",\n        \"Africa/Tunis\",\n        \"Africa/Windhoek\",\n        \"Europe/Amsterdam\",\n        \"Europe/Andorra\",\n        \"Europe/Belgrade\",\n        \"Europe/Berlin\",\n        \"Europe/Brussels\",\n        \"Europe/Budapest\",\n        \"Europe/Copenhagen\",\n        \"Europe/Gibraltar\",\n        \"Europe/Luxembourg\",\n        \"Europe/Madrid\",\n        \"Europe/Malta\",\n        \"Europe/Monaco\",\n        \"Europe/Oslo\",\n        \"Europe/Paris\",\n        \"Europe/Prague\",\n        \"Europe/Rome\",\n        \"Europe/Stockholm\",\n        \"Europe/Tirane\",\n        \"Europe/Vienna\",\n        \"Europe/Warsaw\",\n        \"Europe/Zurich\",\n        \"Africa/Cairo\",\n        \"Africa/Johannesburg\",\n        \"Africa/Maputo\",\n        \"Africa/Tripoli\",\n        \"Asia/Amman\",\n        \"Asia/Beirut\",\n        \"Asia/Damascus\",\n        \"Asia/Gaza\",\n        \"Asia/Jerusalem\",\n        \"Asia/Nicosia\",\n        \"Europe/Athens\",\n        \"Europe/Bucharest\",\n        \"Europe/Chisinau\",\n        \"Europe/Helsinki\",\n        \"Europe/Kaliningrad\",\n        \"Europe/Kiev\",\n        \"Europe/Riga\",\n        \"Europe/Sofia\",\n        \"Europe/Tallinn\",\n        \"Europe/Vilnius\",\n        \"Africa/Khartoum\",\n        \"Africa/Nairobi\",\n        \"Antarctica/Syowa\",\n        \"Asia/Baghdad\",\n        \"Asia/Qatar\",\n        \"Asia/Riyadh\",\n        \"Europe/Istanbul\",\n        \"Europe/Minsk\",\n        \"Europe/Moscow\",\n        \"Asia/Tehran\",\n        \"Asia/Aqtau\",\n        \"Asia/Baku\",\n        \"Asia/Dubai\",\n        \"Asia/Tbilisi\",\n        \"Asia/Yerevan\",\n        \"Europe/Samara\",\n        \"Indian/Mahe\",\n        \"Indian/Mauritius\",\n        \"Indian/Reunion\",\n        \"Asia/Kabul\",\n        \"Antarctica/Mawson\",\n        \"Asia/Aqtobe\",\n        \"Asia/Ashgabat\",\n        \"Asia/Bishkek\",\n        \"Asia/Dushanbe\",\n        \"Asia/Karachi\",\n        \"Asia/Tashkent\",\n        \"Asia/Yekaterinburg\",\n        \"Indian/Kerguelen\",\n        \"Indian/Maldives\",\n        \"Asia/Colombo\",\n        \"Antarctica/Vostok\",\n        \"Asia/Almaty\",\n        \"Asia/Dhaka\",\n        \"Asia/Omsk\",\n        \"Asia/Thimphu\",\n        \"Indian/Chagos\",\n        \"Indian/Cocos\",\n        \"Antarctica/Davis\",\n        \"Asia/Bangkok\",\n        \"Asia/Hovd\",\n        \"Asia/Jakarta\",\n        \"Asia/Krasnoyarsk\",\n        \"Indian/Christmas\",\n        \"Asia/Brunei\",\n        \"Asia/Choibalsan\",\n        \"Asia/Hong_Kong\",\n        \"Asia/Irkutsk\",\n        \"Asia/Kuala_Lumpur\",\n        \"Asia/Macau\",\n        \"Asia/Makassar\",\n        \"Asia/Manila\",\n        \"Asia/Shanghai\",\n        \"Asia/Singapore\",\n        \"Asia/Taipei\",\n        \"Asia/Ulaanbaatar\",\n        \"Australia/Perth\",\n        \"Asia/Pyongyang\",\n        \"Asia/Dili\",\n        \"Asia/Jayapura\",\n        \"Asia/Seoul\",\n        \"Asia/Tokyo\",\n        \"Asia/Yakutsk\",\n        \"Pacific/Palau\",\n        \"Australia/Adelaide\",\n        \"Australia/Darwin\",\n        \"Antarctica/DumontDUrville\",\n        \"Asia/Vladivostok\",\n        \"Australia/Brisbane\",\n        \"Australia/Hobart\",\n        \"Australia/Sydney\",\n        \"Pacific/Chuuk\",\n        \"Pacific/Guam\",\n        \"Pacific/Port_Moresby\",\n        \"Antarctica/Casey\",\n        \"Asia/Magadan\",\n        \"Pacific/Efate\",\n        \"Pacific/Guadalcanal\",\n        \"Pacific/Kosrae\",\n        \"Pacific/Norfolk\",\n        \"Pacific/Noumea\",\n        \"Asia/Kolkata\",\n        \"Asia/Kathmandu\",\n        \"Pacific/Pohnpei\",\n        \"Asia/Kamchatka\",\n        \"Pacific/Auckland\",\n        \"Pacific/Fiji\",\n        \"Pacific/Funafuti\",\n        \"Pacific/Kwajalein\",\n        \"Pacific/Majuro\",\n        \"Pacific/Nauru\",\n        \"Pacific/Tarawa\",\n        \"Pacific/Wake\",\n        \"Pacific/Wallis\",\n        \"Pacific/Apia\",\n        \"Pacific/Enderbury\",\n        \"Pacific/Fakaofo\",\n        \"Pacific/Tongatapu\",\n        \"Pacific/Kiritimati\",\n        \"America/Sao_Paulo\"\n    ]\n}"
      }
    ],
    "selectedLanguageId": "cMstEMic-jQJB9YZUAMPK"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-available-timezones",
  "legacyHash": "EJ29C1i7rWziX0SEw-g3W"
}
```
:::


[title] Customerarea
[path] API Integration/


[title] Networks
[path] API Integration/Panel/

Use those APIs to add Static IPs, Ranges, and Dynamic networks.

:::hint{type="info"}
✨To Add a different Profiles to an existing Network, please add the same Network with a different Profile ID.&#x20;

✨To Delete a specific Profile from an existing Network, call the delete APIs with the profile you want to remove.
:::

:::ApiMethodV2
```json
{
  "name": "Get Customer's Network",
  "method": "GET",
  "url": "https://api.fsflt.net/panel/network/list",
  "description": "Get the list of the Customer's Network",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "IJnDOHe18iBMWn0HJzK5l",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/network/list' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\"}'",
        "customLabel": ""
      },
      {
        "id": "RuHAiT0QaNdisnucxHQSr",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/network/list',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "UMLqxikkVeoGNmTClP_IC",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/list\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "zqOXXhHppzu5rw1_am8J_",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/list\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "XiEozlIediINQWgqxXMO-",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/list\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "IJnDOHe18iBMWn0HJzK5l"
  },
  "results": {
    "languages": [
      {
        "id": "lXLHiFI45_mrwOQU1ncI5",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"static\": {\n            \"range\": [\n                {\n                    \"ip_from\": \"5.6.2.3\",\n                    \"ip_to\": \"5.6.5.3\",\n                    \"profiles\": [\n                        0\n                    ],\n                    \"description\": \"My Range\",\n                    \"ip_version\": 4,\n                    \"status\": {\n                        \"has_traffic\": false\n                    }\n                }\n            ],\n            \"single\": [\n                {\n                    \"ip\": \"4.5.32.3\",\n                    \"profiles\": [\n                        1,\n                        4\n                    ],\n                    \"description\": \"My IP\",\n                    \"ip_version\": 4,\n                    \"status\": {\n                        \"has_traffic\": true\n                    }\n                }\n            ]\n        },\n        \"dynamic\": [\n            {\n                \"username\": \"email@email.com\",\n                \"description\": \"My Dynamic Network\",\n                \"profiles\": [\n                    0\n                ],\n                \"device\": {\n                    \"id\": \"33.2\",\n                    \"brand_name\": \"MikroTik\",\n                    \"brand_code\": \"mikrotik\",\n                    \"device_name\": \"Mikrotik NAT connection (DNS over VPN)\"\n                },\n                \"status\": {\n                    \"has_traffic\": true\n                }\n            }\n        ],\n        \"encrypted\": [\n            {\n                \"id\": \"76a27aa0\",\n                \"name\": \"My DOH & DOT Network\",\n                \"profile\": 0,\n                \"remote_doh\": \"https://doh.flashstart.com/76a27aa0\",\n                \"remote_dot\": \"https://76a27aa0.dot.flashstart.com\"\n            }\n        ]\n    }\n}"
      }
    ],
    "selectedLanguageId": "lXLHiFI45_mrwOQU1ncI5"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-customers-network",
  "legacyHash": "NKxHeAdXtoDvXgUtP1-lJ"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add Static IP",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/static/single/add",
  "description": "Add a Static WAN IP (IPv4 / IPv6). LAN IPs are not allowed.",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "xSISGPExvG6dJ7U6Cu5p-",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/static/single/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"ip\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "-sxnZhH4-KEDyKgxgNjfZ",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/static/single/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\",\n      \"profile_code\": \"Integer\",\n      \"ip\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "UXRAeBaiQWcTS9Tvvk09L",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/static/single/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "zAi18BhGMi-NR5FupQ5Vl",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/static/single/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "T1hn1vFzGXk5_tYUK2gzT",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/static/single/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xSISGPExvG6dJ7U6Cu5p-"
  },
  "results": {
    "languages": [
      {
        "id": "hsxcPPR9Z4rUgwiPym55k",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Static Network created successfully\"\n}"
      },
      {
        "id": "EE0AeICJFMzW5yDzSaf0c",
        "language": "412",
        "customLabel": "",
        "code": "{\n    \"code\": 412,\n    \"content\": \"You can't insert internal IPs\"\n}"
      },
      {
        "id": "jqWOr3_aD7penEzKPE0vW",
        "language": "406",
        "code": "// The Network may already be registered in a different customer with the same Profile DNSs\n{\n    \"code\": 406,\n    \"content\": \"Static Network already exists\"\n}",
        "customLabel": ""
      },
      {
        "id": "Xc7UQutx2p60q_UIzTjJR",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Xc7UQutx2p60q_UIzTjJR"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Profile",
        "children": []
      },
      {
        "name": "ip",
        "kind": "required",
        "type": "string",
        "description": "Static IPv4 / IPv6",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-static-ip",
  "legacyHash": "N6izUW6yq_gulCjjQrIIT"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Remove a Static IP",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/static/single/remove",
  "description": "Remove a Static IP (IPv4 / IPv6)",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "rBkjySdBtWaAWZu5kVt4m",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/static/single/remove' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"ip\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "C_jR3LiHw90rvBjgbQC00",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/static/single/remove',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\",\n      \"profile_code\": \"Integer\",\n      \"ip\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "RpgVCVuyBZix65iSJt5lb",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/static/single/remove\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "vlbSlGX6ZXaPL7SwNIDSx",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/static/single/remove\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "1ljFyyrlaFPRA32fZaZj4",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/static/single/remove\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "rBkjySdBtWaAWZu5kVt4m"
  },
  "results": {
    "languages": [
      {
        "id": "lCZOI_2o2jWaxu4a8EydZ",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Static Network removed successfully\"\n}"
      },
      {
        "id": "LIUL-Z4PtPcXew6VhGEFk",
        "language": "406",
        "code": "{\n    \"code\": 406,\n    \"content\": \"Static Network doesn't exists\"\n}",
        "customLabel": ""
      },
      {
        "id": "98ycIXlxRCxLXUwL8LlEg",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "98ycIXlxRCxLXUwL8LlEg"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Profile",
        "children": []
      },
      {
        "name": "ip",
        "kind": "required",
        "type": "string",
        "description": "Static IPv4 / IPv6",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-a-static-ip",
  "legacyHash": "W67HKlwQPMIHAU1FKWptQ"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add a Static Range IP ",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/static/range/add",
  "description": "Add a Static Range IP (IPv4 only) LAN IPs are not allowed. ",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "Ai0GoFZnM_y2KQaEcrvw6",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/static/range/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"ip_from\":\"string\",\"ip_to\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "9Cez6-03EHSyD99nMHwMK",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/static/range/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\",\n      \"profile_code\": \"Integer\",\n      \"ip_from\": \"string\",\n      \"ip_to\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "xEDah1Exhy8eqh5mrWlmT",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip_from\": \"string\",\n   \"ip_to\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/static/range/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "_1C33G3apyzTo-86rWlxe",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/static/range/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip_from\": \"string\",\n   \"ip_to\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "r38IQlKzc8VZxyUIQUytK",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/static/range/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip_from\": \"string\",\n   \"ip_to\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Ai0GoFZnM_y2KQaEcrvw6"
  },
  "results": {
    "languages": [
      {
        "id": "NNCl89WezcJKzYNV4LDx8",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Static Network created successfully\"\n}"
      },
      {
        "id": "B9yEpYRTvVTaWclbn15IQ",
        "language": "412",
        "customLabel": "",
        "code": "{\n    \"code\": 412,\n    \"content\": \"You can't insert internal IPs\"\n}"
      },
      {
        "id": "lKr7K3kF9JiLQVz17dI5P",
        "language": "406",
        "code": "{\n    \"code\": 406,\n    \"content\": \"Some IPs of this range are already present: x.x.x.x\"\n}",
        "customLabel": ""
      },
      {
        "id": "1_xxDqhZ9cbIxI8Nh7ZHc",
        "language": "416",
        "code": "{\n    \"code\": 416,\n    \"content\": \"You can't insert a range greather than XY IPs. Please contact the Support to add more.\"\n}",
        "customLabel": ""
      },
      {
        "id": "63pLIKrSMeT_SuhFxx9bs",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "1_xxDqhZ9cbIxI8Nh7ZHc"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Profile",
        "children": []
      },
      {
        "name": "ip_from",
        "kind": "required",
        "type": "string",
        "description": "Start IP (IPv4 only)",
        "children": []
      },
      {
        "name": "ip_to",
        "kind": "required",
        "type": "string",
        "description": "End IP (IPv4 only)",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-a-static-range-ip",
  "legacyHash": "JtppuI6dIhVBj929h2nVV"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Remove a Static IP Range",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/static/range/remove",
  "description": "Remove a Static IP Range (IPv4) LAN IPs are not allowed.",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "6r1mxqhIrkDuF8k18EDvz",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/static/range/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"ip_from\":\"string\",\"ip_to\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "Ak_VKIgDtlxLxc49s7kSy",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/static/range/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\",\n      \"profile_code\": \"Integer\",\n      \"ip_from\": \"string\",\n      \"ip_to\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "yiipvQGr71DvR7PilIiaG",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip_from\": \"string\",\n   \"ip_to\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/static/range/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "hCA8ZyZEprEe-_f_Zh0nY",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/static/range/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip_from\": \"string\",\n   \"ip_to\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "4pR80uyyfCT3yAuUVOSLO",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/static/range/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"ip_from\": \"string\",\n   \"ip_to\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "6r1mxqhIrkDuF8k18EDvz"
  },
  "results": {
    "languages": [
      {
        "id": "OSBDqKStBwMgLqv4smV37",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Static Network removed successfully\"\n}"
      },
      {
        "id": "dehhvOetTexcWqN3LUiFu",
        "language": "416",
        "customLabel": "",
        "code": "{\n    \"code\": 416,\n    \"content\": \"You can't insert a range greather than XY IPs. Please contact the Support to add more.\"\n}"
      },
      {
        "id": "xNSab7CB24LF3aN6lwbAJ",
        "language": "406",
        "code": "{\n    \"code\": 406,\n    \"content\": \"Static Network doesn't exists\"\n}",
        "customLabel": ""
      },
      {
        "id": "hfLfyFBA0vXD5LTVFMvbA",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hfLfyFBA0vXD5LTVFMvbA"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Profile",
        "children": []
      },
      {
        "name": "ip_from",
        "kind": "required",
        "type": "string",
        "description": "Start IP (IPv4 only)",
        "children": []
      },
      {
        "name": "ip_to",
        "kind": "required",
        "type": "string",
        "description": "End IP (IPv4 only)",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-a-static-ip-range",
  "legacyHash": "5zLZ4CYFajuIT0LDS8MEe"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add Dynamic Network",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/dynamic/add",
  "description": "Add a Dynamic Network with an optional NetworkDevice",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "6mNHskd-Z7xmMQp_NvRFJ",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/static/range/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"username\":\"string\",\"password\":\"string\",\"device_id\":\"Number\",\"lang\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "cIgclGWbz5YE5NMXMMcQu",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/static/range/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\",\n      \"profile_code\": \"Integer\",\n      \"username\": \"string\",\n      \"password\": \"string\",\n      \"device_id\": \"Number\",\n      \"lang\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "UrzWEpnuqPpxfeoGwEt-e",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"username\": \"string\",\n   \"password\": \"string\",\n   \"device_id\": \"Number\",\n   \"lang\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/static/range/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "lQe0b4V-bSRtYA43IYUK0",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/static/range/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"username\": \"string\",\n   \"password\": \"string\",\n   \"device_id\": \"Number\",\n   \"lang\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "akfr72A0CjNPZrR_mwqiw",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/static/range/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"username\": \"string\",\n   \"password\": \"string\",\n   \"device_id\": \"Number\",\n   \"lang\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "6mNHskd-Z7xmMQp_NvRFJ"
  },
  "results": {
    "languages": [
      {
        "id": "qm4bZWdDepbv47eOkVdET",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Dynamic Network created successfully\"\n}"
      },
      {
        "id": "J6Xc0sALGikk3XLlPu_wU",
        "language": "409",
        "customLabel": "",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}"
      },
      {
        "id": "GxdYFM29nAkcC-Ugg5yiZ",
        "language": "408",
        "code": "{\n    \"code\": 408,\n    \"content\": \"You are using an existing username's Dynamic Network. Please change the Profile in order to add another one to the existing Network.\"\n}",
        "customLabel": ""
      },
      {
        "id": "0E8BjrBLcjNJ6LUf7bhcl",
        "language": "412",
        "code": "{\n    \"code\": 412,\n    \"content\": \"Please choose a different username.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "0E8BjrBLcjNJ6LUf7bhcl"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Profile",
        "children": []
      },
      {
        "name": "username",
        "kind": "required",
        "type": "string",
        "description": "Network DyDNS Username. ",
        "children": []
      },
      {
        "name": "password",
        "kind": "required",
        "type": "string",
        "description": "Password of the Dynamic Network, requested to update the IP. Needs to be between 8-16 chars, only Dollar Sign ($) is accepted as special char.",
        "children": []
      },
      {
        "name": "device_id",
        "kind": "optional",
        "type": "Number",
        "description": "NetworkDevice ID, may be a Mikrotik Over VPN or a different device type. Use the device/list endpoint to list all the available NetworkDevices.",
        "children": []
      },
      {
        "name": "lang",
        "kind": "optional",
        "type": "string",
        "description": "Lang code (in ES,DE,FR,PT,IT,EN)\nRequired only if device_id is sent.",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-dynamic-network",
  "legacyHash": "4XLGTKIbFS9wE0JEsbGKS"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Delete Dynamic Network",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/dynamic/remove",
  "description": "Delete a Dynamic Network",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "ssCXM1_ZMVTflHTaMT4fX",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/static/range/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"username\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "XcyRCok6tTIC-Q2m53k_t",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/static/range/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\",\n      \"profile_code\": \"Integer\",\n      \"username\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "_-18vmeQz3H-C_g6d7tHe",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"username\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/static/range/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "LFr-4D2y5x19RQxQtgxyZ",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/static/range/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"username\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "iKkZvqE6WrbIKGrp8LsMN",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/static/range/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\",\n   \"profile_code\": \"Integer\",\n   \"username\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ssCXM1_ZMVTflHTaMT4fX"
  },
  "results": {
    "languages": [
      {
        "id": "GQpYjIEzykMWY-a8eauG4",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Dynamic Network deleted successfully\"\n}"
      },
      {
        "id": "ZHTqFmh9y67bOWEPsrQfh",
        "language": "406",
        "customLabel": "",
        "code": "{\n    \"code\": 406,\n    \"content\": \"Dynamic Network not found\"\n}"
      },
      {
        "id": "PdAbYbPaXofrMYopWd86K",
        "language": "409",
        "code": "{\n    \"code\": 406,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "PdAbYbPaXofrMYopWd86K"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Profile",
        "children": []
      },
      {
        "name": "username",
        "kind": "required",
        "type": "string",
        "description": "Network username",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "delete-dynamic-network",
  "legacyHash": "tCpFmNVbN7doFVsFa1ar1"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add Encrypted Network ",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/encrypted/add",
  "description": "Add an Encrypted Network (DNS over HTTPS & DNS over TLS)",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "kNyFTEJ5oOjCqw7F4kjj5",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/encrypted/add' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"name\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "e2ucQBiIwCRAW_6MiDlAK",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/encrypted/add',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Integer\",\"profile_code\":\"Integer\",\"name\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "6rUXQDVPeStZZ7evjToi4",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Integer\\\",\\\"profile_code\\\":\\\"Integer\\\",\\\"name\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/encrypted/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "E2yUtsedw21NTqy_n5eOs",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/panel/network/encrypted/add\"\n\npayload = \"{\\\"customer_code\\\":\\\"Integer\\\",\\\"profile_code\\\":\\\"Integer\\\",\\\"name\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "bg4HXC0RuCK63hfCnMM7A",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/encrypted/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Integer\\\",\\\"profile_code\\\":\\\"Integer\\\",\\\"name\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "kNyFTEJ5oOjCqw7F4kjj5"
  },
  "results": {
    "languages": [
      {
        "id": "GQpYjIEzykMWY-a8eauG4",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"id\": \"d7861a0f\",\n        \"name\": \"My Encrypted Network\",\n        \"profile\": 0,\n        \"remote_doh\": \"https://doh.flashstart.com/d7861a0f\",\n        \"remote_dot\": \"https://d7861a0f.dot.flashstart.com\"\n    }\n}"
      },
      {
        "id": "PdAbYbPaXofrMYopWd86K",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "PdAbYbPaXofrMYopWd86K"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Profile",
        "children": []
      },
      {
        "name": "name",
        "kind": "optional",
        "type": "string",
        "description": "Network name",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-encrypted-network",
  "legacyHash": "FLlqsW-gq0pRe4dbvlunV"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Remove Encrypted Network",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/network/encrypted/remove",
  "description": "Remove an Encrypted Network (DNS over HTTPS & DNS over TLS)",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "9l1H7kpo9GU5V02VOx65T",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/network/encrypted/remove' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Integer\",\"id\":\"Integer\"}'",
        "customLabel": ""
      },
      {
        "id": "G6sf_qlrMEKo7vv4Uu84x",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/network/encrypted/remove',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Integer\",\"id\":\"Integer\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "KLRkc63zTAddimh87Triq",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Integer\\\",\\\"id\\\":\\\"Integer\\\"}\";\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/encrypted/remove\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "io8GBtLJ7G6IC_9uY3j00",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/panel/network/encrypted/remove\"\n\npayload = \"{\\\"customer_code\\\":\\\"Integer\\\",\\\"id\\\":\\\"Integer\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "YX9z6yoESkxFFoaaARWQ_",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/encrypted/remove\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Integer\\\",\\\"id\\\":\\\"Integer\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "9l1H7kpo9GU5V02VOx65T"
  },
  "results": {
    "languages": [
      {
        "id": "GQpYjIEzykMWY-a8eauG4",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"DoH & DoT network deleted successfully\"\n}"
      },
      {
        "id": "PdAbYbPaXofrMYopWd86K",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      },
      {
        "id": "mmYdZ4e7u25gO3ZlYtJjj",
        "language": "406",
        "code": "{\n    \"code\": 406,\n    \"content\": \"DoH & DoT network not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "mmYdZ4e7u25gO3ZlYtJjj"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "id",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Encrypted Network (from panel/network/list/ endpoint)",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-encrypted-network",
  "legacyHash": "iZQ-uiIkClUw0iWNEJ5lI"
}
```
:::


[title] Network Devices
[path] API Integration/Panel/Networks/

:::ApiMethodV2
```json
{
  "name": "Get Network Devices",
  "method": "GET",
  "url": "https://api.fsflt.net/panel/network/device/list",
  "description": "Get the list of Network Devices",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "YCRBWgM5zFU8LYDanm7Ui",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/network/device/list' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Integer\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "enbDSpaCcP09XAyy7Ltq_",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/network/device/list',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Integer\",\n      \"lang\": \"String\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "Y0Yf44abd3F34w-puxKs0",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Integer\",\n   \"lang\": \"String\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/network/device/list\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "lcz1OVj7jXPybz1GuKFDV",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/network/device/list\"\n\npayload = json.dumps({\n   \"customer_code\": \"Integer\",\n   \"lang\": \"String\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "nGtVQKOvREKF_MgjWFwjg",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/network/device/list\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Integer\",\n   \"lang\": \"String\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "YCRBWgM5zFU8LYDanm7Ui"
  },
  "results": {
    "languages": [
      {
        "id": "akimWPO9aW6DLlNls71G1",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"id\": \"33.2\",\n            \"brand_name\": \"MikroTik\",\n            \"brand_code\": \"mikrotik\",\n            \"device_name\": \"Mikrotik NAT connection (DNS over VPN)\"\n        }\n    ]\n}"
      }
    ],
    "selectedLanguageId": "akimWPO9aW6DLlNls71G1"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Integer",
        "description": "ID of the Customer"
      },
      {
        "name": "lang",
        "kind": "required",
        "type": "String",
        "description": "Lang code (IT,EN,ES,PT,FR,DE)",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-network-devices",
  "legacyHash": "F0QWq9pVI_CGngIedyD6H"
}
```
:::


[title] API Documentation for Developers
[path] API Integration/API Documentation for Developers (cloned)/

## Authentication

An API Key is required to access the API. The client need to send authentication's details in the **Authorization header** with a valid API Key.

## Request your API Key

Go to [Customerarea](https://cloud.flashstart.com/customerarea/integrations/api/) and click "Request API Key"

**Other ways to ask**:

- API Documentation Guide for Developers
- Writing Effective API Documentation for Developers


[title] Check domain
[path] API Integration/Blocklist/

:::hint{type="warning"}
This endpoint is available upon customer request.
It allows you to understand if a domain is blocked by filters, based on a custom configuration per customer.

For information, write to customer support.

:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/blocklist/check_domain",
  "name": "Check Domain",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "domain",
        "kind": "required",
        "type": "string",
        "description": "domain name (ex. test.com)",
        "children": []
      }
    ],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API Key"
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "CZxE3lx8b1x7cbh5omsdG",
        "code": "{\r\n    \"code\": 200,\r\n    \"content\": {\r\n        \"blocked\": false\r\n    }\r\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "8r0IpijtHqEBJk6-Kbpx2",
        "code": "Too Many Attempts.",
        "language": "429",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "CZxE3lx8b1x7cbh5omsdG"
  },
  "examples": {
    "languages": [
      {
        "id": "uP4Bn2tNgyyQPRtSuvpCn",
        "language": "shell",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/blocklist/check_domain?domain=string' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "uP4Bn2tNgyyQPRtSuvpCn"
  },
  "description": "Check if a domain is in your customized blocklist",
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "check-domain",
  "legacyHash": "7WwBNyLA1jB_h2hbA1w33"
}
```
:::


[title] Can I create user-based filter policies?
[path] FAQ/

Yes it is possible through the advanced *Multi Profile feature*.
We recommend that you first read the following[](https://app.archbee.com/public/PREVIEW-tCtLwhb7CO48au8cL1Aok/PREVIEW-xe6iUw7xZ7zfeCVMZeoUr)[guide](docId:7h3yj9_QdD-mZ8VVes5lj) on how *Multi Profile works*.
&#x20;
By then assigning different pairs of **DNSs** (e.g., 185.236.104.104-185.236.105.105, 185.236.104.114-185.236.105.115, etc...) you will be able to create different filtering groups.

**PLEASE NOTE**: This differentiation is possible in both *WORKGROUP and Windows Server Active Directory environments*, but in the latter case it will require the use of advanced features, which are active only on ProPlus licenses.
See the [guide](docId:7h3yj9_QdD-mZ8VVes5lj) for more information.

## Mikrotik Case

To simplify multiprofile configuration on Mikrotik routers, we have created [a special guide](docId:5J6_p8KfYZzUJDMqXQ3QK).

If the problem has not been solved, please open a support ticket by<font color="#ff9900"> </font>.

**Other ways to ask:**

- Is there any way to change the account email?
- How to change the account email.


[title] Mikrotik: How do I set up the multi-profile?
[path] FAQ/Can I create user-based filter policies?/

Through the creation of firewall rules, it is possible to use more navigation profiles (multi-profile) on the same network.&#x20;

In this way, two or more devices connected to the same network will be able to use different filtering rules and it will be possible to divide the data traffic more easily.&#x20;
For further information about the multi-profile [click here](docId\:smcc7yytpIJs3PuN5xe1j).

**IMPORTANT:** This guide can be used only in workgroup environments, hence without an Active Directory server.&#x20;

**NOTE:** the following commands allow you to create the rules needed to manage five navigation profiles. You are not however obliged to use all of the profiles: depending on your needs, you may just delete the unnecessary parts of the code.&#x20;

Modify the following fields before executing the commands on the mikrotik terminal:

&#x20;**\<*****List\_IP1>:&#x20;***&#x6C;ist of IP addresses that will be assigned to “***Profile1***”.
**\<*****List\_IP2>:&#x20;***&#x6C;ist of IP addresses that will be assigned to “***Profile2***” (if present).&#x20;
**\<*****List\_IP3>:&#x20;***&#x6C;ist of IP addresses that will be assigned to “***Profile3***” (if present).
**\<*****List\_IP4>:&#x20;***&#x6C;ist of IP addresses that will be assigned to “***Profile4***” (if present).

**NOTE:** It is possible to add a single IP or also a range of IPs using the “-” symbol between the first and the last IP in the range (e.g.: 192.168.1.2-192.168.1.100).

**\<*Profile1*>:** name assigned to the first profile.
**\<*Profile2*>:** name assigned to the second profile (if present).
**\<*Profile3*>:** name assigned to the third profile (if present).
**\<*Profile4*>:** name assigned to the fourth profile (if present).&#x20;

| /ip firewall address-list<br />add address=**\<*****List\_IP1>*** list=**\<*Profile1*>**<br />add address=**\<*****List\_IP2>*** list=**\<*Profile2*>**<br />add address=**\<*****List\_IP3>&#x20;***&#x6C;ist=**\<*Profile3*>**<br />add address=**\<*****List\_IP4>*** list=**\<*Profile4*>**<br /><br /><br />/ip firewall nat<br /><br /># **\<*Profile1*>**<br />add action=dst-nat chain=dstnat comment=**\<*Profile1*>&#x20;**&#x64;st-port=53 protocol=udp \\<br />src-address-list=**\<*Profile1*>&#x20;**&#x74;o-addresses=185.236.104.114 to-ports=53<br />add action=dst-nat chain=dstnat comment=**\<*Profile1*>&#x20;**&#x64;st-port=53 protocol=tcp \\<br />src-address-list=**\<*Profile1*>&#x20;**&#x74;o-addresses=185.236.104.114 to-ports=53<br /><br /># **\<*Profile2*>**<br />add action=dst-nat chain=dstnat comment=**\<*Profile2*>&#x20;**&#x64;st-port=53 protocol=udp \\<br />src-address-list=**\<*Profile2*>&#x20;**&#x74;o-addresses=185.236.104.124 to-ports=53<br />add action=dst-nat chain=dstnat comment=**\<*Profile2*>&#x20;**&#x64;st-port=53 protocol=tcp \\<br />src-address-list=**\<*Profile2*>&#x20;**&#x74;o-addresses=185.236.104.124 to-ports=53<br /><br /># **\<*Profile3*>**<br />add action=dst-nat chain=dstnat comment=**\<*Profile3*>&#x20;**&#x64;st-port=53 protocol=udp \\<br />src-address-list=**\<*Profile3*>&#x20;**&#x74;o-addresses=185.236.104.134 to-ports=53<br />add action=dst-nat chain=dstnat comment=**\<*Profile3*>&#x20;**&#x64;st-port=53 protocol=tcp \\<br />src-address-list=**\<*Profile3*>** to-addresses=185.236.104.134 to-ports=53<br /><br /># **\<*Profile4*>**<br />add action=dst-nat chain=dstnat comment=**\<*Profile4*>&#x20;**&#x64;st-port=53 protocol=udp \\<br />src-address-list=**\<*Profile4*>&#x20;**&#x74;o-addresses=185.236.104.144 to-ports=53<br />add action=dst-nat chain=dstnat comment=**\<*Profile4*>&#x20;**&#x64;st-port=53 protocol=tcp \\<br />src-address-list=**\<*Profile4*>&#x20;**&#x74;o-addresses=185.236.104.144 to-ports=53<br /><br /># Profilo Default<br />add action=dst-nat chain=dstnat comment=Default dst-port=53 protocol=udp \\<br />to-addresses=185.236.104.104 to-ports=53<br />add action=dst-nat chain=dstnat comment=Default dst-port=53 protocol=tcp \\<br />to-addresses=185.236.104.104 to-ports=53<br /><br /> |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

**IMPORTANT:**

The default profile must always have lower priority compared to the other rules.

**Other ways to ask:**

- MikroTik: Configuring Multi-Profile Setup
- MikroTik: Multi-Profile Configuration Guide


[title] Why can't I surf?
[path] FAQ/

In order to use our service, you will need to register your public IP(s) on our Cloud Panel.
Below are some tips that may help you in case you are unable to browse:


- If you are using a **Load-Balancer system** (or backup line), you will need to add a*ll public IPs on your Cloud Panel*.
- Check your router/firewall and make sure there are no filters on port 53 (DNS), which could block traffic on our ip classes (185.236.104.0/24 and 185.236.105.0/24).
- Check that our DNS ( **Primary: 185.236.104.104, Secondary: 185.236.105.105**) are reachable from your network using a tool such as ping/tracer.
- Verify that the *public IP(s)* registered on the cloud are currently in use.
  You will be able to view your IP via the following link [what is my ip.](https://www.whatsmyip.org/)
- Verify that there are *no blocking rules on DNS resolution on the router/firewall*.

To verify this you will be able to use a different port instead of the standard port (53).
Using the following commands, you will be able to check if there are any blocking rules on DNS resolution.
Open cmd on your device and run the following commands:
*-nslookup*
*-set port=53535*
*-domain\_blocked* (where domain\_blocked is the domain that should be blocked).
If the result is 185.236.107.107 it means that the domain has been filtered, so there is a redirection on port 53.
In this case you will need to disable the redirection rules on the router/firewall.

- Verify that you have *correctly configured DNS on your device* (or via DHCP service).
- If you configure DNS on the router, it does not mean that internally the devices use these DNS, so we will need to configure a *DHCP service* or firewall rules to force the use of our DNS on the internal network.
- Verify that your *public IP is registered on the system* (network menu).
- Log in to your *Cloud panel* and verify that your license has not expired.

If the problem has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask:**

- Why do I have difficulty navigating?
- The problems related to navigation.


[title] Why are filters not applied to the network?
[path] FAQ/

In order for filters to be properly applied on one's network, it is first necessary to properly configure our DNS within one's network.

There are several methods to do this, such as *configuring DNS manually on devices*, using a *dhcp service, via firewall rules, etc*.

Below are some tricks that may help you when setting up filters:

- If you configure our DNS on the router, it does not mean that internally the devices use these DNS, so you will need to configure a *DHCP service* or *firewall rules to force the use of our DNS on the internal network*.
- Check that the *protection rules have been properly configured* on the cloud panel (protection menu).
- Check that n*o VPNs are active on your pc or device/ disable any VPNs* try again to access the blocked site.
- Verify that there are no blocking rules on *DNS resolution on the router/firewall*.
  To verify this you will be able to use a different port instead of the standard port (53).
  Using the following commands, you will be able to check if there are any *blocking rules on DNS resolution*.
- Open cmd on your device and run the following commands:
  *-nslookup*
  *-set port=53535*
  *-domain\_blocked* ( where domain\_blocked is the domain that should be blocked)
- If the result is 185.236.107.107 it means that the domain has been filtered, so there is a redirection on port 53.

In this case it will be necessary to disable the redirection rules on the router/firewall.
If the problem has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask**:

- Why are filters not applied on the network?
- The failure to apply filters on the network.


[title] How do I change the account email?
[path] FAQ/

You can change your own email, or that of a customer through the Dashboard.
Here are the two cases:

- [Change your own account email](docId\:hoYUIRne4N2WjX6JZj3kf)
- [Change customer account email](docId\:qPjzC2BCLnn0cBwhUYto-)&#x20;

**NOTE:** When the mail change occurs if there is a dynamic network synchronized via router you must also change the mail on the router (Dynamic DNS)
If the issue has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).&#x20;

**Other ways to ask**:

- Is there any way to change Client's email?
- How to change Client's email.


[title] Untitled
[path] /


[title] Customers
[path] API Integration/Customerarea/



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/customers/new",
  "name": "Create new customer",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "X-API-KEY"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "email",
        "type": "string",
        "description": "The customer email"
      },
      {
        "kind": "required",
        "name": "password",
        "type": "string",
        "description": "The customer password used to login"
      },
      {
        "kind": "required",
        "name": "customer_name",
        "type": "string",
        "description": "The customer name"
      },
      {
        "kind": "required",
        "name": "country_code",
        "type": "string",
        "description": "The customer country code (ISO 3166-1 alpha-2 format) \nSee directory/countries for countries list"
      },
      {
        "kind": "required",
        "name": "industry_code",
        "type": "Number",
        "description": "The customer industry\nSee directory/industries for industries list"
      },
      {
        "kind": "required",
        "name": "company_name",
        "type": "string",
        "description": "The company name\nRequired with all industries except family"
      },
      {
        "name": "customer_code",
        "kind": "optional",
        "type": "string",
        "description": "The customer code field identifies the dealer; a distributor can use it to register a customer under that dealer.",
        "": "The customer code field identifies the dealer; a distributor can use it to register a customer under that dealer."
      },
      {
        "kind": "optional",
        "name": "skype",
        "type": "string",
        "description": "The customer skype contact"
      },
      {
        "kind": "optional",
        "name": "phone",
        "type": "string",
        "description": "The customer phone number"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Preferred customer language, defaults EN"
      },
      {
        "kind": "optional",
        "name": "customer_surname",
        "type": "string",
        "description": "The customer surname"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "RSFrYuOPvvHGsgQepd1tn",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"customer_code\": 12345\n    }\n}",
        "language": "200"
      },
      {
        "id": "qA201AQQ98dHN1GMY_jd7",
        "language": "406",
        "code": "{\n    \"code\": 406,\n    \"content\": {\n        \"message\": \"You cannot register the Customer as a Reseller, you must be a Distributor to do so.\"\n    }\n}",
        "customLabel": ""
      },
      {
        "id": "ogqgmxCGjRDOJhbpgG_iZ",
        "language": "428",
        "code": "{\n    \"code\": 428,\n    \"content\": {\n        \"message\": \"You cannot register the Customer, you must be a Reseller or a Distributor to do so.\"\n    }\n}",
        "customLabel": ""
      },
      {
        "id": "5rQy5OoMwMOGmK1BxHdA8",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": {\n        \"message\": \"Email already registered.\"\n    }\n}",
        "customLabel": ""
      },
      {
        "id": "gOQmtt2lu1kBKC7DygwW2",
        "code": "{\n    \"code\": 422,\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"lang\": [\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\n        ]\n    }\n}",
        "language": "422"
      }
    ],
    "selectedLanguageId": "RSFrYuOPvvHGsgQepd1tn"
  },
  "examples": {
    "languages": [
      {
        "id": "z5g4FznZ9MujlrTjn5FaM",
        "code": "curl -X 'POST' \\\n  'https://api.fsflt.net/customerarea/customers/new' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "z5g4FznZ9MujlrTjn5FaM"
  },
  "description": "Use this route to create a new customer",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "create-new-customer",
  "legacyHash": "pXHTQenAqffLr9ug0nOgH"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/customers/list",
  "name": "Get customer list",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": ""
      },
      {
        "name": "customer_code",
        "kind": "optional",
        "type": "string",
        "description": "As a distributor, this field let you to retrieve customers of a specific customer",
        "": "optional"
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "sQW8zE1oo140uUROICWqd",
        "language": "200",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"main\": true,\n            \"code\": 4242,\n            \"name\": \"My\",\n            \"surname\": \"Account\",\n            \"email\": \"myaccount@email.com\",\n            \"lang\": 'EN',\n            \"country_code\": \"GB\",\n            \"company_name\": \"My Company Name\",\n            \"industry_code\": 1,\n            \"organization_id\": null,\n            \"migration_status\": \"NOT_MIGRATED\"\n            \"contacts\": {\n                \"skype\": \"\",\n                \"phone\": \"+3912345\"\n            },\n        },\n        {\n            \"main\": false,\n            \"code\": 1234,\n            \"name\": \"Jack\",\n            \"surname\": \"Jhonson\",\n            \"email\": \"jack123@email.com\",\n            \"lang\": 'EN',\n            \"country_code\": \"GB\",\n            \"company_name\": \"Jack Tech Co.\",\n            \"industry_code\": 1,\n            \"organization_id\": \"019f88ef-7fb5-725c-88e8-0d7028d1b392\",\n            \"migration_status\": \"MIGRATED\"\n            \"contacts\": {\n                \"skype\": \"Jack2021\",\n                \"phone\": \"+3912345\"\n            },\n        }\n    ]\n}"
      },
      {
        "id": "iHbQXnm7ws7PfRfWTZpqs",
        "language": "417",
        "code": "{\n    \"code\": 417,\n    \"content\": [\"message\": 'Dealer not found. The dealer code provided is invalid or the customer is blocked.']\n}"
      }
    ],
    "selectedLanguageId": "sQW8zE1oo140uUROICWqd"
  },
  "examples": {
    "languages": [
      {
        "id": "FY3Bef8Yq0PYoQJScyWL2",
        "code": "curl -X 'GET' \\\r\n  'https://api.fsflt.net/customerarea/customers/list' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": "Shell"
      }
    ],
    "selectedLanguageId": "FY3Bef8Yq0PYoQJScyWL2"
  },
  "description": "Get your customer list",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-customer-list",
  "legacyHash": "Dq99524cD8V1imEMcdTUN"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/customers/licenses",
  "name": "Get customer licenses",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": ""
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "customer_code",
        "type": "string",
        "description": "Send this field to retrieve licenses of a specific customer",
        "": "Send this field to retrieve licenses of a specific customer"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "EN, ES, IT"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "wihCI9qdi8ga8_Vn403pm",
        "code": "{\n    \"ACTIVE_LICENSES\": [\n        {\n            \"id\": 223344,\n            \"code\": \"CL_Q_A005-M1\",\n            \"title\": \"Business Filter License - 5  nominal user\",\n            \"purchase_date\": \"2024-01-24\",\n            \"expiration_date\": \"2024-02-29\",\n            \"note\": \"License note\",\n            \"canceled\": \"0\"\n        },\n        {\n            \"id\": 112233,\n            \"code\": \"CL_Q_A005-M1\",\n            \"title\": \"Business Filter License - 5  nominal user\",\n            \"purchase_date\": \"2024-01-24\",\n            \"expiration_date\": \"2024-02-29\",\n            \"note\": \"License note\",\n            \"canceled\": \"0\"\n        }\n]}",
        "language": "200",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "wihCI9qdi8ga8_Vn403pm"
  },
  "examples": {
    "languages": [
      {
        "id": "co1ddakY9xv1uMq4JBOhU",
        "code": "curl -X 'POST' \\\n  'https://api.fsflt.net/customerarea/customers/licenses' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "co1ddakY9xv1uMq4JBOhU"
  },
  "description": "",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-customer-licenses",
  "legacyHash": "zU0N6t4OZKLtTkfUGxOG4"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/customers/licenses/remove",
  "name": "Remove a customer license ",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": ""
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "string",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "license_id",
        "type": "string",
        "description": "The License ID"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "wihCI9qdi8ga8_Vn403pm",
        "code": "{\n    \"code\": 200,\n    \"content\": \"License removed successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "74PMiPS2kGeCmWcqmBTyF",
        "language": "412",
        "code": "{\n    \"code\": 412,\n    \"content\": \"Unable to find the license provided. The license must have been assigned in the last 3 days.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "wihCI9qdi8ga8_Vn403pm"
  },
  "examples": {
    "languages": [
      {
        "id": "iSH1rI8Vz-yNc7rIMuSrx",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/customerarea/customers/licenses/remove' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"string\",\"license_id\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "O-ZnqPuEF_vEBOQu5mrse",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/customerarea/customers/licenses/remove',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"string\",\n      \"license_id\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "xSgeu4fXT9XCEjuj4tE8G",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"string\",\n   \"license_id\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/customerarea/customers/licenses/remove\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "g8DjCwZBiaiRwSI5Dr8Ke",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/customerarea/customers/licenses/remove\"\n\npayload = json.dumps({\n   \"customer_code\": \"string\",\n   \"license_id\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "6b8_C_DQmRuxrAt9KUSA0",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/customerarea/customers/licenses/remove\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"string\",\n   \"license_id\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "iSH1rI8Vz-yNc7rIMuSrx"
  },
  "description": "The license must have been assigned in the last 3 days",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-a-customer-license",
  "legacyHash": "THyEc7n7xN9IQZZci_xMy"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/customerarea/customers/change/password",
  "name": "Change customer password",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": ""
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "string",
        "description": "ID of the customer"
      },
      {
        "kind": "required",
        "name": "password",
        "type": "string",
        "description": "must be at least 8 chars\nmust be maximum 15 chars"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "hzxx47liJVLCwI5Inn0Qb",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"message\": \"The password has been modified.\"\n    }\n}",
        "language": "200"
      }
    ],
    "selectedLanguageId": "hzxx47liJVLCwI5Inn0Qb"
  },
  "examples": {
    "languages": [
      {
        "id": "TuAHHGh7EA-3nnZeGdJHo",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/customerarea/customers/change/password' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "TuAHHGh7EA-3nnZeGdJHo"
  },
  "description": "",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "change-customer-password",
  "legacyHash": "HS_R5q2N6A_C15Jg7VJ_3"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/customerarea/customers/change/mail",
  "name": "Change customer E-Mail",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": ""
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "string",
        "description": "ID of the customer"
      },
      {
        "kind": "required",
        "name": "mail",
        "type": "string",
        "description": "must be a valid email",
        "": "must be a valid email"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "hzxx47liJVLCwI5Inn0Qb",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"message\": \"The mail has been modified.\"\n    }\n}",
        "language": "200"
      }
    ],
    "selectedLanguageId": "hzxx47liJVLCwI5Inn0Qb"
  },
  "examples": {
    "languages": [
      {
        "id": "TuAHHGh7EA-3nnZeGdJHo",
        "code": "curl -X 'POST' \\\n  'https://api.fsflt.net/customerarea/customers/change/mail' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "TuAHHGh7EA-3nnZeGdJHo"
  },
  "description": "",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "change-customer-e-mail",
  "legacyHash": "mKKsMfi-dRvoS5t1dzzwI"
}
```
:::


[title] Blocklist
[path] API Integration/


[title] Report
[path] API Integration/


[title] Licenses
[path] API Integration/Customerarea/Untitled/



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/directory/licenses/versions",
  "name": "Get licenses version",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "1RllSrcK2hZrz_yBZOdUW",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"version_code\": 0,\n            \"version_name\": \"Cloud Pro\"\n        },\n        {\n            \"version_code\": 1,\n            \"version_name\": \"Cloud ProPlus\"\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "a7V5xYCixZaPjJvLvzfEy",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "MZ4nzCQK_MoU4iPPZlZwH",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"lang\": [\r\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "1RllSrcK2hZrz_yBZOdUW"
  },
  "examples": {
    "languages": [
      {
        "id": "zje_aawdOY2OyNDmdIqb-",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/customerarea/directory/licenses/versions' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\"",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "zje_aawdOY2OyNDmdIqb-"
  },
  "description": "Get licenses version filter",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-licenses-version",
  "legacyHash": "dt5u1eUq52_zLDTp4TEjN"
}
```
:::




[title] Categories
[path] API Integration/Panel/

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/categories/macro/list",
  "name": "Macrocategory list",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "sxU1SrOr-NVeBpVnIJVPH",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"macro_code\": 2,\n            \"macro_name\": \"News\"\n            \"module_code\": 1\n        },\n        {\n            \"macro_code\": 3,\n            \"macro_name\": \"Work\"\n            \"module_code\": 2\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "UMRl6ZupMVE3k8HdIvJFi",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "yYJpJCsQCNZwz-HLjdW5F",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"lang\": [\r\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "sxU1SrOr-NVeBpVnIJVPH"
  },
  "examples": {
    "languages": [
      {
        "id": "S_853sFIbqZBh4DJC7-FH",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/categories/macro/list' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"lang\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "RE0pksqjIkpXj2_MFAxEf",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/categories/macro/list',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"lang\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "DNrgAtIgHHfgSgAKNoFTt",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"lang\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/categories/macro/list\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "qFTPjMqOyguqpdRMfTt9l",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/categories/macro/list\"\n\npayload = json.dumps({\n   \"lang\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "8xuzWF_YI1FD1940tg4jj",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/categories/macro/list\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"lang\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "S_853sFIbqZBh4DJC7-FH"
  },
  "description": "Get the macrocategory list",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "macrocategory-list",
  "legacyHash": "KdmC3Fs81OkKILyLpEQ9n"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/categories/list",
  "name": "Category list",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "DUNcwQB6e3ohUSyQ1G-eJ",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"category_code\": \"adult\",\n            \"category_name\": \"Adult\",\n            \"macro_code\": 4\n        },\n        {\n            \"category_code\": \"publicite\",\n            \"category_name\": \"Advertising\",\n            \"macro_code\": 7\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "DblZMflU52HrgzytlZbhm",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "lWytt79FbPtBZuWv_yXbu",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"lang\": [\r\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "DUNcwQB6e3ohUSyQ1G-eJ"
  },
  "examples": {
    "languages": [
      {
        "id": "Fp6O4uTqAnLt-F-V7--4T",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/panel/categories/list' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "linux"
      },
      {
        "id": "MsewPKQsJcX6ycRQ80vd4",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/categories/list' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"lang\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "SSbmPQ8Qon-9CWNfqRlGH",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/categories/list',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"lang\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "2gG3Bt9429fbhQRe2U52b",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"lang\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/categories/list\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "NWr6fiAtC7PwXDMacu-ut",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/categories/list\"\n\npayload = json.dumps({\n   \"lang\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "r5bTicD374kEgIjBZn9wK",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/categories/list\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"lang\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Fp6O4uTqAnLt-F-V7--4T"
  },
  "description": "Get the category list",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "category-list",
  "legacyHash": "ECjEaieooUaq4ZtcPpKXm"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/categories/modules/",
  "name": "Get Modules",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "DUNcwQB6e3ohUSyQ1G-eJ",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"module_name\": \"<b>Content</b> Filter\",\n            \"module_code\": 1\n        },\n        {\n            \"module_name\": \"<b>Threat</b> Protection\",\n            \"module_code\": 2\n        },\n        {\n            \"module_name\": \"<b>App</b> Blocker\",\n            \"module_code\": 3\n        }\n    ]\n}",
        "language": "200"
      },
      {
        "id": "DblZMflU52HrgzytlZbhm",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "lWytt79FbPtBZuWv_yXbu",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"lang\": [\r\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "DUNcwQB6e3ohUSyQ1G-eJ"
  },
  "examples": {
    "languages": [
      {
        "id": "iMd_ZRJA4xLAXZZQhu38a",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/categories/modules' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"lang\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "XTZ0JDTHZyUzjfx0fd1jM",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/categories/modules',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"lang\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "0dV7R3SYeNNHJ-w_6PMgX",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"lang\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/categories/modules\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "YvQFWhjSkncfFqBWn4UTS",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/categories/modules\"\n\npayload = json.dumps({\n   \"lang\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "i_UamAMC85-6JJQpQFaO2",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/categories/modules\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"lang\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "iMd_ZRJA4xLAXZZQhu38a"
  },
  "description": "Get the protection modules (AppBlocker, Contentfilter ecc)",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-modules",
  "legacyHash": "gXV9Ir3oxIR1Xx5woadXO"
}
```
:::




[title] Countries
[path] API Integration/Panel/

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/countries/region/list",
  "name": "Regions list",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "8fEBmF1bqIsfrngJJZcqS",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"region_code\": \"europe\",\n            \"region_name\": \"Europe\"\n        },\n        {\n            \"region_code\": \"north_america\",\n            \"region_name\": \"North America\"\n\t\t},\n    ]\n}",
        "language": "200"
      },
      {
        "id": "FVkQTBPNxRqJyxjGCmCML",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "rky3leXDhy-n96-Op8Dqw",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"lang\": [\r\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "8fEBmF1bqIsfrngJJZcqS"
  },
  "examples": {
    "languages": [
      {
        "id": "n5IWwo5QuFW1TVlXUvFXK",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/panel/countries/region/list' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "n5IWwo5QuFW1TVlXUvFXK"
  },
  "description": "Get the regions list",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "regions-list",
  "legacyHash": "R0PTsCLJ9qhAGPHnLBaav"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/countries/list",
  "name": "Countries list",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "0QJg20iR30qOr1IE4NV-P",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"country_code\": \"AF\",\n            \"country_name\": \"Afghanistan\",\n            \"region_code\": \"asia\"\n        },\n        {\n            \"country_code\": \"AX\",\n            \"country_name\": \"Aland Islands\",\n            \"region_code\": \"europe\"\n        },\n        {\n            \"country_code\": \"AL\",\n            \"country_name\": \"Albania\",\n            \"region_code\": \"eastern_europe\"\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "6zKayENmFxJ4xgaH1qP2e",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      }
    ],
    "selectedLanguageId": "0QJg20iR30qOr1IE4NV-P"
  },
  "examples": {
    "languages": [
      {
        "id": "R1ewSF-djYUQyiZg6R-Ma",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/panel/countries/list' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "linux"
      }
    ],
    "selectedLanguageId": "R1ewSF-djYUQyiZg6R-Ma"
  },
  "description": "Get the countries list",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "countries-list",
  "legacyHash": "c_sizuCfTlud8VEQG7kDR"
}
```
:::




[title] Directory
[path] API Integration/Customerarea/



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/directory/industries",
  "name": "Get Industries",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the industry name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "uENE7q8TnXER1CN36BJ42",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"industry_code\": 9,\n            \"industry_name\": \"Reseller\"\n        },\n        {\n            \"industry_code\": 1,\n            \"industry_name\": \"Company\"\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "DpV0lO5g0GzahshOP98wf",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "YR93v5EPbPJ2X3Y2IMnxK",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"lang\": [\r\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "uENE7q8TnXER1CN36BJ42"
  },
  "examples": {
    "languages": [
      {
        "id": "9t7yHmpL03Bi1hm9_SoWp",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/customerarea/directory/industries' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "9t7yHmpL03Bi1hm9_SoWp"
  },
  "description": "Get industries list for customers registration",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-industries",
  "legacyHash": "7U36eF7XdIBwjP7XOl1kx"
}
```
:::



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/directory/countries",
  "name": "Get Countries",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "L3s5J8Hxy-qh8eGO7_f6I",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"country_code\": \"AD\",\n            \"country_name\": \"Andorra\"\n        },\n        {\n            \"country_code\": \"AE\",\n            \"country_name\": \"United Arab Emirates\"\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "2fmhnfpUe0zfMgs6z3Jxo",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "U-R8eP5hNx2KDNxGNSVfw",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"Error message.\",\r\n    \"errors\": { }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "L3s5J8Hxy-qh8eGO7_f6I"
  },
  "examples": {
    "languages": [
      {
        "id": "5rjm09SNYPSnKo5mVC7_c",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/customerarea/directory/countries' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" ",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "5rjm09SNYPSnKo5mVC7_c"
  },
  "description": "Get countries list for customers registration",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-countries",
  "legacyHash": "LDcED_BobXdWbQI-aivmu"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/directory/currencies",
  "name": "Get Currencies",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "HEH3pDNfl1yKRB5OFsuSG",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"currency_code\": \"EUR\",\n            \"currency_name\": \"Euro\"\n        },\n        {\n            \"currency_code\": \"USD\",\n            \"currency_name\": \"U.S. Dollar\"\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "s_DlyezYAMrbTBgzSzQx7",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "2N_hYbXaMopsNmqwk_UJl",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"Error message.\",\r\n    \"errors\": { }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "HEH3pDNfl1yKRB5OFsuSG"
  },
  "examples": {
    "languages": [
      {
        "id": "i4tQ8bsPF1h7-E9yGWKub",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/customerarea/directory/currencies' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" ",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "i4tQ8bsPF1h7-E9yGWKub"
  },
  "description": "Get currencies list for license amount",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-currencies",
  "legacyHash": "7jzA5Bp_Z4j9Q5LVUhgpY"
}
```
:::


[title] Traffic Reports
[path] API Integration/Report/

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/last/top_categories",
  "name": "Last top categories",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "bucket_size",
        "type": "String",
        "description": "Timing range\nThe bucket size must be one of the following types: 24h,  48h,  72h,  7days, 1month, 6month\n\n24h = Last 24h report\n48h = Last 48h report\n72h = Last 72h report\n7days = Last 7 days report\n1month = Last month report\n6month = Last 6 months report"
      },
      {
        "kind": "required",
        "name": "category_type",
        "type": "Number",
        "description": "The category type \nCategory Type must be one of the following types: 1, 2\n\n1 = Blocked categories\n2 = Allowed categories"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "0BtCgb0hqT2Z1Z39ElIma",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"category_name\": \"Advertising\",\n            \"total_requests\": \"108506\",\n            \"category_code\": \"publicite\"\n        },\n        {\n            \"category_name\": \"Online Services\",\n            \"total_requests\": \"13924\",\n            \"category_code\": \"onlineservices\"\n        },\n    ]\n}\n",
        "language": "200"
      },
      {
        "id": "XWakB6Y5GOX3hUSvB1zyW",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "CN2xSG8cPfZdsjEPM5lLM",
        "code": "{\r\n    \"code\": 500, \r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"bucket_size\": [\r\n            \"The bucket size must be one of the following types: 24h, 48h, 72h, 7days [24h = Last 24h report, 48h = Last 48h report, 72h = Last 72h report, 7days = Last 7 days report]\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "0BtCgb0hqT2Z1Z39ElIma"
  },
  "examples": {
    "languages": [
      {
        "id": "4MeIKrZxmfl-s8mqU8RxV",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/last/top_categories' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"category_type\":\"Number\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "H9RCr0DZc8_XVEYZw3zsb",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/last/top_categories',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"category_type\":\"Number\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "9vYJjEIIWcbltxwSnwYyQ",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"category_type\\\":\\\"Number\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/last/top_categories\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "xARv1N4itkZoWzz67hd-t",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/last/top_categories\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"category_type\\\":\\\"Number\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "CLugusiCCs6dlOv56Ps9M",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/last/top_categories\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"category_type\\\":\\\"Number\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "4MeIKrZxmfl-s8mqU8RxV"
  },
  "description": "Gets the top categories requested in a period of time",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "last-top-categories",
  "legacyHash": "AesFHHBAxmZ6L949nZGZm"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/last/top_domains",
  "name": "Last top domains",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "bucket_size",
        "type": "String",
        "description": "Timing range\nThe bucket size must be one of the following types: 24h,  48h,  72h,  7days, 1month, 6month\n\n24h = Last 24h report\n48h = Last 48h report\n72h = Last 72h report\n7days = Last 7 days report\n1month = Last month report\n6month = Last 6 months report"
      },
      {
        "kind": "required",
        "name": "request_type",
        "type": "Number",
        "description": "The request type \nRequest Type must be one of the following types: 1, 2, 3\n\n1 = Blocked request\n2 = Allowed request\n3 = NX unresolved request"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "gShqEj9jrXhTXMunvYhwf",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"domain\": \"www.googleadservices.com\",\n            \"total_requests\": \"9009\"\n        },\n        {\n            \"domain\": \"googleads.g.doubleclick.net\",\n            \"total_requests\": \"5521\"\n        },\n    ]\n}\n",
        "language": "200"
      },
      {
        "id": "aWRDO5It47SAoTzPcE6yj",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "rAzK09hVG3B6Gld9-CH2f",
        "code": "{\r\n    \"code\": 500, \r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"bucket_size\": [\r\n            \"The bucket size must be one of the following types: 24h, 48h, 72h, 7days [24h = Last 24h report, 48h = Last 48h report, 72h = Last 72h report, 7days = Last 7 days report]\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "gShqEj9jrXhTXMunvYhwf"
  },
  "examples": {
    "languages": [
      {
        "id": "ZMYjjrzoTK7v1Sd6VJSjO",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/last/top_domains' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"request_type\":\"Number\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "M96QEuJO0nNXSknyElq0R",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/last/top_domains',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"request_type\":\"Number\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "oYokMa0JjmLkbir_9BZTW",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"request_type\\\":\\\"Number\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/last/top_domains\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "-FrjaSfiqF1SwvWtdy9zE",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/last/top_domains\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"request_type\\\":\\\"Number\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "kutBdlSagKCkbm2dYpLEO",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/last/top_domains\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"request_type\\\":\\\"Number\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ZMYjjrzoTK7v1Sd6VJSjO"
  },
  "description": "Gets the top domains requested in a period of time",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "last-top-domains",
  "legacyHash": "A-Th8StGTFq4MqDGKhuTp"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/last/statistics",
  "name": "Last statistics",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "bucket_size",
        "type": "String",
        "description": "Timing range\nThe bucket size must be one of the following types: 24h,  48h,  72h,  7days, 1month, 6month\n\n24h = Last 24h report\n48h = Last 48h report\n72h = Last 72h report\n7days = Last 7 days report\n1month = Last month report\n6month = Last 6 months report"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "KOm857amQd-qkPpZXFbdk",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"total_queries\": \"37403346\",\n            \"total_blocked\": \"160541\",\n            \"total_allowed\": \"36940727\",\n            \"total_unresolved\": \"302078\",\n            \"total_malwares_blocked\": \"8994\"\n        }\n    ]\n}\n",
        "language": "200"
      },
      {
        "id": "FCUwqcHPEQhtqxqScCIZS",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "e2vPpNZvyRAwWDORFa2Tj",
        "code": "{\r\n    \"code\": 500, \r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"bucket_size\": [\r\n            \"The bucket size must be one of the following types: 24h, 48h, 72h, 7days [24h = Last 24h report, 48h = Last 48h report, 72h = Last 72h report, 7days = Last 7 days report]\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "KOm857amQd-qkPpZXFbdk"
  },
  "examples": {
    "languages": [
      {
        "id": "YisLuU-m4Z66qvC_kBYux",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/last/statistics' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "ixuO4zmHx4efo4Mf9urzK",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/last/statistics',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "s_5re0Fh6-Fxo6h7LfjRR",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/last/statistics\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "csY9yudoLdJePRYY5mk0T",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/last/statistics\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "cBR55HNTTdds3RSxdaLDw",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/last/statistics\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "YisLuU-m4Z66qvC_kBYux"
  },
  "description": "Gets statistics in a period of time",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "last-statistics",
  "legacyHash": "gldgKUpI2yP4pRE56tDRN"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/last/hourly_requests",
  "name": " Per hour request",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "bucket_size",
        "type": "String",
        "description": "Timing range\nThe bucket size must be one of the following types: 24h,  48h,  72h,  7days, 1month, 6month\n\n24h = Last 24h report\n48h = Last 48h report\n72h = Last 72h report\n7days = Last 7 days report\n1month = Last month report\n6month = Last 6 months report"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "7SE8kdNyz-DEcBY-LjNyf",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"timestamp\": \"2021-12-20 09:00:00\",\n            \"total_requests\": 5853694\n        },\n        {\n            \"timestamp\": \"2021-12-20 10:00:00\",\n            \"total_requests\": 1712199\n        },\n        {\n            \"timestamp\": \"2021-12-20 11:00:00\",\n            \"total_requests\": 1942722\n        },\n    ]\n}\n",
        "language": "200"
      },
      {
        "id": "da2OTRPJ5HL_-DYEH73sg",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "4OYOMD45oLgVmyDgz2TKV",
        "code": "{\r\n    \"code\": 500, \r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"bucket_size\": [\r\n            \"The bucket size must be one of the following types: 24h, 48h, 72h, 7days [24h = Last 24h report, 48h = Last 48h report, 72h = Last 72h report, 7days = Last 7 days report]\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "7SE8kdNyz-DEcBY-LjNyf"
  },
  "examples": {
    "languages": [
      {
        "id": "VvM4sGp-7vgs50pOTJpd2",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/last/hourly_requests' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "9e_ncNXHH3ztvKbfuR1bI",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/last/hourly_requests',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"bucket_size\":\"String\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "HrNFscVAK7O9XxJMGzbRI",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/last/hourly_requests\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "YkuKOgCfy1sPHmxdgdNPY",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/last/hourly_requests\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "emEq-XubnaHNBWN-QmKyi",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/last/hourly_requests\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"bucket_size\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "VvM4sGp-7vgs50pOTJpd2"
  },
  "description": "Gets hourly requests (blocked and allowed) in a period of time",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "per-hour-request",
  "legacyHash": "xQuwMo632Ft1dEL67yF0-"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_blocked_category",
  "name": "Blocked by category",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "string",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and category name, defaults EN"
      },
      {
        "kind": "optional",
        "name": "macro_code",
        "type": "Number",
        "description": "Only search for mcarocatogy, defaults to all\nSee panel/categories/macro/list for accepted values"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "PmhVACeI4o8xiSl1_4JFe",
        "code": "{\n    \"code\": 200,\n     \"content\": {         \n        \"title\": \"Blocked by category\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=891157&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=orange&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=Advertising%7C311706%3BOnline+Services%7C42182%3BDoH+Proxy%7C14568%3BWeb+Stats%7C12699%3BGames%7C7122%3BSoftware+%26+Tech%7C3246%3BDangerous+Threats%7C1604%3BCDN%7C760\",\n        \"result\": [\n            {\n                \"category_name\": \"Advertising\",\n                \"total_requests\": \"311706\",\n                \"category_code\": \"publicite\"\n            },\n            {\n                \"category_name\": \"Online Services\",\n                \"total_requests\": \"42182\",\n                \"category_code\": \"onlineservices\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "lUlafin6_3nCmPFRecEzs",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "eySNQ1I_pfnyBVo-n629W",
        "code": "{\r\n    \"code\": 500, \r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"macro_code\": [\r\n            \"The macro code is invalid, please connect to categories/macro/list for the valid values list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "PmhVACeI4o8xiSl1_4JFe"
  },
  "examples": {
    "languages": [
      {
        "id": "V_kmJ9ELXpZCqrwzE-Lib",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_blocked_category' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\",\"macro_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "eXumEjltv1V8GkvPkXEWQ",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_blocked_category',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\",\"macro_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "8wshGceBjg8TTqXgMuyld",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"macro_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_blocked_category\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "3JQPrBmjy8n2Qsoif8OPP",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_blocked_category\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"macro_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Hg1a6snRN052alDhDKBXZ",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_blocked_category\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"macro_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "V_kmJ9ELXpZCqrwzE-Lib"
  },
  "description": "Gets the total number of blocked requests by category for customer in a period of time. Sorted by categories with more requests",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "blocked-by-category",
  "legacyHash": "LYKRC1as1ESG-xWQeUxGP"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_allowed_category",
  "name": " Allowed by category",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and category name, defaults EN"
      },
      {
        "kind": "optional",
        "name": "macro_code",
        "type": "Number",
        "description": "Only search for mcarocatogy, defaults to all\nSee panel/categories/macro/list for accepted values"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "FnRKkXAyGYprtbMF_gzLA",
        "code": "{\n    \"code\": 200,\n     \"content\": {         \n        \"title\": \"Blocked by category\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=602719&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=green&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=Software+%26+Tech%7C1084838%3BTikTok%7C1040098%3BOnline+Services%7C588832%3BFacebook%7C471340%3BCDN%7C306955%3BWhatsApp+%28vocals+%26+calls+only%29%7C237272%3BSearch+Engines%7C226234%3BYouTube%7C128520\",\n        \"result\": [\n            {\n                \"category_name\": \"Advertising\",\n                \"total_requests\": \"311706\",\n                \"category_code\": \"publicite\"\n            },\n            {\n                \"category_name\": \"Online Services\",\n                \"total_requests\": \"42182\",\n                \"category_code\": \"onlineservices\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "9FOfrCAu1UurqfkE2qkJ_",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "0Fajryq7Lv-hnR0usoZLS",
        "code": "{\r\n    \"code\": 500, \r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"macro_code\": [\r\n            \"The macro code is invalid, please connect to categories/macro/list for the valid values list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "FnRKkXAyGYprtbMF_gzLA"
  },
  "examples": {
    "languages": [
      {
        "id": "oQ2i4mi58G5VOX0LRfSfX",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_allowed_category' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\",\"macro_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "479btFgR7BVdakr-ay0H0",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_allowed_category',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\",\"macro_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "jqflkpJGaHfSK6KSsR1t6",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"macro_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_allowed_category\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "0aZGpYNj4sY0lWXo7CmEL",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_allowed_category\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"macro_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "DGAGpkGN14TmfBjV9W9Iy",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_allowed_category\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"macro_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "oQ2i4mi58G5VOX0LRfSfX"
  },
  "description": "Gets the total number of allowed requests by category for customer in a period of time. Sorted by categories with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "allowed-by-category",
  "legacyHash": "2YaeMTSgEJT5122cMar93"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_dangerous_transited",
  "name": "Dangerous requests transited",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "277jA47Z4qh0TWdAi3vvl",
        "code": "{\n    \"code\": 200,\n     \"content\": {         \n        \"title\": \"Dangerous requests transited\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=244960&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=black&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=Games%7C14776%3BChat%7C1083%3BDating%7C333%3BDesktop+Wallpapers%7C4\",\n        \"result\": [\n            {\n                \"category_name\": \"Games\",\n                \"total_requests\": \"14776\"\n            },\n            {\n                \"category_name\": \"Chat\",\n                \"total_requests\": \"1083\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "ftC-ofxNT-g_xFn6cWg8V",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "g4MUTQApUdJl1vY7wlXUg",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "277jA47Z4qh0TWdAi3vvl"
  },
  "examples": {
    "languages": [
      {
        "id": "DVpvSgySf0PYXWtFQkLCr",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_dangerous_transited' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "PbLocO-PIMQizKYsVXhLg",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_dangerous_transited',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "nvBjQhHecT9YC13dW8azv",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_dangerous_transited\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "AC21jJII-llYYNlAjTgYb",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_dangerous_transited\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "2q4OUJ7bw1ldKX-13Nl8d",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_dangerous_transited\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "DVpvSgySf0PYXWtFQkLCr"
  },
  "description": "Gets the total number of allowed requests by categories deemed dangerous for customer in a period of time. Sorted by categories with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "dangerous-requests-transited",
  "legacyHash": "E1r3LqtnfBOKjRdUh8jYh"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/report/traffic_reports/total_blocked_malware",
  "name": "Malware: threats blocked",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "X9ldgJLj4gC83C4fmY_b1",
        "code": "{\n    \"code\": 200,\n     \"content\": {         \n        \"title\": \"Unwanted blocked\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=818822&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=black&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=Dangerous+Threats%7C1604%3BMalicious+web+sites%7C18%3BMalicious+DNS+activity%7C14%3BMalicious+activity%7C7%3BFraud+and+Scams%7C2%3BTrojan%7C1\",\n        \"result\": [\n            {\n                \"category_name\": \"Dangerous Threats\",\n                \"total_requests\": \"1604\"\n            },\n            {\n                \"category_name\": \"Malicious web sites\",\n                \"total_requests\": \"18\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "NRA7sLD1yDSa3Z54AvweX",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "-LCVe50nUc_5u7jt3DKyg",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "X9ldgJLj4gC83C4fmY_b1"
  },
  "examples": {
    "languages": [
      {
        "id": "xswKPlw0SYxEt73L2vbKx",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_blocked_malware' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "JgcouiyluxEEwz6ol9X0x",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_blocked_malware',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "TIQrxR97a40OKRzqWvSt0",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_blocked_malware\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "KWziOEyfwUMbXjkBualaL",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_blocked_malware\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "YyOjrzALslRNLUvusgS_3",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_blocked_malware\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "xswKPlw0SYxEt73L2vbKx"
  },
  "description": "Gets the total number of blocked requests by malware categories for customer in a period of time. Sorted by categories with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "malware-threats-blocked",
  "legacyHash": "T4sb2jjikwOOaa3uXg0DO"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_blocked_macrocategory",
  "name": "Blocked for macrocategory",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and macro category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "pCv9eiFZHRArNhPLaR6oX",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"Blocked for macrocategory\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=769647&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=orange&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=Ads%2C+Spam+%26+Web+Stats%7C324405%3BTechnology%7C46188%3BUnwanted+websites%7C23596%3BMalware+%26+Threats%7C1646%3BDangerous%7C1228%3BFree+Time%7C40%3BNational+Government+Blacklists%7C5%3BNews%7C2\",\n        \"result\": [\n            {\n                \"macro_name\": \"Ads, Spam & Web Stats\",\n                \"total_requests\": \"324405\",\n                \"macro_code\": 7\n            },\n            {\n                \"macro_name\": \"Technology\",\n                \"total_requests\": \"46188\",\n                \"macro_code\": 9\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "XnnI9D9nDdC3aSvKP6NIq",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "5I5oyhrknd419pIDhpDMO",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "pCv9eiFZHRArNhPLaR6oX"
  },
  "examples": {
    "languages": [
      {
        "id": "IhsAPE_EyqdhsqvdegxTb",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_blocked_macrocategory' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "zXHc9GBNtFwJjjZWM7CK9",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_blocked_macrocategory',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "X2WU-OFW6fLdo-9GktukI",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_blocked_macrocategory\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "wfYSZ6HODon-NFt4-CIsK",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_blocked_macrocategory\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "qW_C1rRNXvV7HyR-R1Asx",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_blocked_macrocategory\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "IhsAPE_EyqdhsqvdegxTb"
  },
  "description": "Gets the total number of blocked  requests by macrocategory for customer in a period of time. Sorted by macrocategories with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "blocked-for-macrocategory",
  "legacyHash": "gMdGAFgzK-0zRKeVLcfE3"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_allowed_macrocategory",
  "name": "Allowed for macrocategory",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and macro category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "1k8EjpUWdngVxYkwbjmoH",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"Allowed for macrocategory\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=255656&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=green&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=Technology%7C2103670%3BSocial+Network%7C1821181%3BSearch+Engines%7C226234%3BAudio+%26+Video%7C178934%3BWork%7C59827%3BAds%2C+Spam+%26+Web+Stats%7C37286%3BUnwanted+websites%7C16196%3BNews%7C10896\",\n        \"result\": [\n            {\n                \"macro_name\": \"Ads, Spam & Web Stats\",\n                \"total_requests\": \"324405\",\n                \"macro_code\": 7\n            },\n            {\n                \"macro_name\": \"Technology\",\n                \"total_requests\": \"46188\",\n                \"macro_code\": 9\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "gEWRdJv_sbnr9uchxTPyr",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "U9SXHSIW8s1CGNtJ5iLz6",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "1k8EjpUWdngVxYkwbjmoH"
  },
  "examples": {
    "languages": [
      {
        "id": "qxdCKzOtMobDTNcwaUlDU",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_allowed_macrocategory' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "u_ZScr1lqx0BjJyaTKNi1",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_allowed_macrocategory',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "9AOy7k3EeStOgTCgpyL8r",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_allowed_macrocategory\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "ODN6Y6FPQu9tFwMVnxnuY",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_allowed_macrocategory\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "V43Jrie1CzP0oVRczVZ42",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_allowed_macrocategory\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "qxdCKzOtMobDTNcwaUlDU"
  },
  "description": "Gets the total number of allowed requests by macrocategory for customer in a period of time. Sorted by macrocategories with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "allowed-for-macrocategory",
  "legacyHash": "UUKLUQc_rgsJ8Rn3QRe5O"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_allowed_country",
  "name": "Allowed by country",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and country name, defaults EN"
      },
      {
        "kind": "optional",
        "name": "region_code",
        "type": "string",
        "description": "Only search for country region code, defaults to all\nSee panel/countries/region/list for accepted values "
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "omyT1bw6IkTKr3DEj5cSE",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"Allowed by country\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=621301&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=green&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=United+States%7C816742%3BLatvia%7C74873%3BChina%7C37330%3BMexico%7C23205%3BIreland%7C11435%3BSingapore%7C5955%3BGermany%7C4279%3BNetherlands%7C3550\",\n        \"result\": [\n            {\n                \"country\": \"United States\",\n                \"total_requests\": \"816742\"\n            },\n            {\n                \"country\": \"Latvia\",\n                \"total_requests\": \"74873\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "It_0vj2HOptPyIlko1Ga5",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "TKw-YwX_DAl-rleC0oOFu",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"region_code\": [\r\n            \"The region code is invalid, please connect to countries/region/list for the valid values list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "omyT1bw6IkTKr3DEj5cSE"
  },
  "examples": {
    "languages": [
      {
        "id": "F4vTeSOP_5eAulq9UokeJ",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_allowed_country' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\",\"region_code\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "ddA6mr-bVBn3ouWhvoMMw",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_allowed_country',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\",\"region_code\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "D2iII64JPZZRYPXGGjeVR",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"region_code\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_allowed_country\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "-Hk-5ELuCV8zCMbds5aPy",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_allowed_country\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"region_code\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "An1ezbANUeH_x0ULWveJl",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_allowed_country\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\",\\\"region_code\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "F4vTeSOP_5eAulq9UokeJ"
  },
  "description": "Gets the total number of allowed requests by country for customer in a period of time. Sorted by countries with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "allowed-by-country",
  "legacyHash": "NDT5CyHIZ7nkCsyGiLoHc"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_allowed_geolocation",
  "name": "Allowed geolocation",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the report name and region name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "fv7RtR1lliwjtfML3gqSk",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"Allowed geolocation\",\n        \"items_graph\": \"No image for this report\",\n        \"result\": [\n            {\n                \"region\": \"North America\",\n                \"total_requests\": \"817119\",\n                \"region_code\": \"north_america\"\n            },\n            {\n                \"region\": \"Baltics\",\n                \"total_requests\": \"74876\",\n                \"region_code\": \"baltics\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "ODOGLsJW75ldLcgGsbeUF",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "i-RSc235IZzgvwq8KkTIc",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "fv7RtR1lliwjtfML3gqSk"
  },
  "examples": {
    "languages": [
      {
        "id": "vQtcL_pEfy8X54Qe_M5hB",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_allowed_geolocation' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "7-Yz56k4VdEDjq0a7Kdb0",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_allowed_geolocation',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "nI2ZTLVVLt3_eBRDLXL76",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_allowed_geolocation\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "FXtllO-we4CoPSHQihe_Q",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_allowed_geolocation\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "ya4kio7-b-sGA1-YBE7o1",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_allowed_geolocation\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "vQtcL_pEfy8X54Qe_M5hB"
  },
  "description": "Gets the total number of allowed requests by country region for customer in a period of time. Sorted by countries with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "allowed-geolocation",
  "legacyHash": "N4u2LmFeJLpokd3Ch8fBU"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_blocked_malware_domain",
  "name": "Malware: infected host blocked",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "WIEkcKclZSnxjwMF0qlNz",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"Malware: infected host blocked\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=572800&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=black&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=omnatuor.com%7C592%3Bzegons-global.zego.im%7C4%3Bnews-cimase.cc%7C3%3Bd24ak3f2b.top%7C3%3Bpatch.b68a5bd56.net%7C2%3Btracepath.cc%7C2%3Bboot.b68a5bd56.net%7C2%3Bjxn0.51ginkgo.com%7C1\",\n        \"result\": [\n            {\n                \"domain\": \"omnatuor.com\",\n                \"total_requests\": \"592\"\n            },\n            {\n                \"domain\": \"zegons-global.zego.im\",\n                \"total_requests\": \"4\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "eljxDwtUuKZEV9_ARSphQ",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "FFZZNggCU7fRkpDlnhxPA",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "WIEkcKclZSnxjwMF0qlNz"
  },
  "examples": {
    "languages": [
      {
        "id": "nKoek5SyRdpuv3n1UPwYo",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_blocked_malware_domain' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "52XkOVOUSS58J_QAQvm9b",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_blocked_malware_domain',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "HK6Ldf5-agdm0FRAms5c7",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_blocked_malware_domain\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "R9fgQdqxBjmm7uy3kA5sB",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_blocked_malware_domain\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "RutgZG3ZqH-EUX2r_aDuW",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_blocked_malware_domain\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "nKoek5SyRdpuv3n1UPwYo"
  },
  "description": "Gets the total number of blocked requests by malware domain for customer in a period of time. Sorted by domains with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "malware-infected-host-blocked",
  "legacyHash": "pTNb4e7WtDm4nfSCmvQbf"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_allowed_domain",
  "name": "Domains allowed",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "category_code",
        "type": "string",
        "description": "Only search for category, defaults to all\nSee panel/categories/list for accepted values"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "z7MbjFKVSmJOHgCb-TiVq",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"Domains allowed\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=946983&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=green&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=ddns.flashstart.com%7C73190%3Bcloud.mikrotik.com%7C41785%3Bconnectivitycheck.gstatic.com%7C37853%3Bmtalk.google.com%7C28028%3Bgraph.facebook.com%7C26101%3Bmqtt-mini.facebook.com%7C22358%3Bplay.googleapis.com%7C18741%3Bg.whatsapp.net%7C16063\",\n        \"result\": [\n            {\n                \"domain\": \"connectivitycheck.gstatic.com\",\n                \"total_requests\": \"37853\"\n            },\n            {\n                \"domain\": \"mtalk.google.com\",\n                \"total_requests\": \"28028\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "X9CcNZ2xayDvd7YJTwXCR",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "2o_vvbE0CHshVkXS1kdT6",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "z7MbjFKVSmJOHgCb-TiVq"
  },
  "examples": {
    "languages": [
      {
        "id": "Tsrlsthap6JIk5NSvarTa",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_allowed_domain' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"category_code\":\"String\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "nxNfgJXSu2OLTkXI2qcmT",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_allowed_domain',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"category_code\":\"String\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "q_4FEoRHVPkZawFni6cu6",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"category_code\\\":\\\"String\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_allowed_domain\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "y7q2ymSvjD6Prk51BKNjI",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_allowed_domain\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"category_code\\\":\\\"String\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "tVUcuSrdA0OuIYhAE480u",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_allowed_domain\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"category_code\\\":\\\"String\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Tsrlsthap6JIk5NSvarTa"
  },
  "description": "Gets the total number of allowed requests by domain for customer in a period of time. Sorted by domains with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "domains-allowed",
  "legacyHash": "On6HtQw3_mtF39b24ICjR"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_blocked_domain",
  "name": "Domains blocked",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      },
      {
        "kind": "optional",
        "name": "category_code",
        "type": "string",
        "description": "Only search for category, defaults to all\nSee panel/categories/list for accepted values"
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the category name, defaults EN"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "6ntuM5hTblUVp-eeif72I",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"Domains blocked\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=692530&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=orange&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=www.googleadservices.com%7C17541%3Bgoogleads.g.doubleclick.net%7C10013%3Bapi16-access-sg.pangle.io%7C7646%3Bsdkconfig.ad.intl.xiaomi.com%7C4746%3Bdns.google%7C4526%3Bandroid.bugly.qq.com%7C3756%3Bfirebase-settings.crashlytics.com%7C3594%3Bdata.mistat.intl.xiaomi.com%7C3290\",\n        \"result\": [\n            {\n                \"domain\": \"www.googleadservices.com\",\n                \"total_requests\": \"17541\"\n            },\n            {\n                \"domain\": \"googleads.g.doubleclick.net\",\n                \"total_requests\": \"10013\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "j0UXoZ5ZLu_-EQe0Dru_O",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "aoljHx2E4rww82DaHDL1T",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "6ntuM5hTblUVp-eeif72I"
  },
  "examples": {
    "languages": [
      {
        "id": "Y5cLQUJMLi_Vnf6Q03JS7",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_blocked_domain' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"category_code\":\"String\",\"lang\":\"String\"}'",
        "customLabel": ""
      },
      {
        "id": "JBwbJgbsQlYEUEQPf1UKN",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_blocked_domain',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\",\"category_code\":\"String\",\"lang\":\"String\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "MuXbISUV-nT_5zmsiFy0g",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"category_code\\\":\\\"String\\\",\\\"lang\\\":\\\"String\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_blocked_domain\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "1PxCn3DcJiIG0iSIzI4CG",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_blocked_domain\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"category_code\\\":\\\"String\\\",\\\"lang\\\":\\\"String\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "1JGubKDeMLAWSorztamv6",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_blocked_domain\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\",\\\"category_code\\\":\\\"String\\\",\\\"lang\\\":\\\"String\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Y5cLQUJMLi_Vnf6Q03JS7"
  },
  "description": "Gets the total number of blocked requests by domain for customer in a period of time. Sorted by domains with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "domains-blocked",
  "legacyHash": "drFQbu_xZSVQi8gYe5edg"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/total_nx_domain",
  "name": "NX - Not existing domains",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_datetime",
        "type": "String",
        "description": "Report lower limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "required",
        "name": "end_datetime",
        "type": "string",
        "description": "Report upper limit, format Y-m-d H:i:s\n(on customer timezone)"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "R4TK9lwGBHEWUpeqW5sg4",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"NX - Not existing domains\",\n        \"top_items_graph\": \"http://graph.fsflt.net/histogram?rnd=179515&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=grey&hideLblX=0&breakLabel=0&limitChar=16&dynChartIsMobile=false&arrayVal=ipv6-api.kwai-pro.com%7C3035%3Bgoogle.com%7C1468%3Bsettings.crashlytics.com%7C832%3Bepdg.epc.mnc111.mcc732.pub.3gppnetwork.org%7C782%3Bepdg.epc.mnc103.mcc732.pub.3gppnetwork.org%7C571%3Bhttps%3A%2F%2Fapp-measurement.com%2Fsdk-exp%7C537%3Bd3vj4c1ig8mfeg.cloudfront.net%7C485%3Bdebug.opendns.com%7C434\",\n        \"result\": [\n            {\n                \"domain\": \"ipv6-api.kwai-pro.com\",\n                \"total_requests\": \"3035\"\n            },\n            {\n                \"domain\": \"google.com\",\n                \"total_requests\": \"1468\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "zlWis3FierPJHPe0Qs-l4",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "idMdRUm0ffnm0HKn63J_i",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "R4TK9lwGBHEWUpeqW5sg4"
  },
  "examples": {
    "languages": [
      {
        "id": "l4-k25cDtJ_j8NK53qqKq",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/total_nx_domain' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "1aPYTm5_CoD7FznxZ0Wq9",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/total_nx_domain',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_datetime\":\"String\",\"end_datetime\":\"String\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "FhUsdmy2FH6pxSTjsColw",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/total_nx_domain\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "ta_1KLYEb38j51rPu92TI",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/total_nx_domain\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "aXZAXbrd_G6EhR0P_VK9Z",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/total_nx_domain\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_datetime\\\":\\\"String\\\",\\\"end_datetime\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "l4-k25cDtJ_j8NK53qqKq"
  },
  "description": "Gets the total number of nx requests by domain for customer in a period of time. Sorted by domains with more requests",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "nx-not-existing-domains",
  "legacyHash": "Z6r7ADg1rCQjWtEoQTTl0"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/traffic_hourly",
  "name": "By time slot",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_date",
        "type": "String",
        "description": "Report lower limit, format Y-m-d"
      },
      {
        "kind": "required",
        "name": "end_date",
        "type": "string",
        "description": "Report upper limit, format Y-m-d"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "qrSd8IZa8sCG97R-EHH0J",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"By time slot\",\n        \"items_graph\": \"http://graph.fsflt.net/line?rnd=586548&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=orange&hideLblX=0&fontSize=9&breakLabel=0&limitChar=16&arrayVal=15+12am%7C0%3B15+1am%7C0%3B15+2am%7C0%3B15+3am%7C0%3B15+4am%7C0%3B15+5am%7C0%3B15+6am%7C0%3B15+7am%7C0%3B15+8am%7C0%3B15+9am%7C0%3B15+10am%7C0%3B15+11am%7C0%3B15+12pm%7C0%3B15+1pm%7C0%3B15+2pm%7C0%3B15+3pm%7C0%3B15+4pm%7C0%3B15+5pm%7C0%3B15+6pm%7C0%3B15+7pm%7C0%3B15+8pm%7C0%3B15+9pm%7C0%3B15+10pm%7C0%3B15+11pm%7C0%3B16+12am%7C0%3B16+1am%7C0%3B16+2am%7C0%3B16+3am%7C0%3B16+4am%7C0%3B16+5am%7C0%3B16+6am%7C11301\",\n        \"result\": [\n            {\n                \"hour\": \"19 6am\",\n                \"total_requests\": \"14073\"\n            },\n            {\n                \"hour\": \"19 7am\",\n                \"total_requests\": \"46707\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "-MRpRtgGM9atvGK9MNsT1",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "J4TtjXghxmGzhbZ_i85cv",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "qrSd8IZa8sCG97R-EHH0J"
  },
  "examples": {
    "languages": [
      {
        "id": "7ToisMbaGH2vjaEVnnLgc",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/traffic_hourly' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_date\":\"String\",\"end_date\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "6rr_mqhr7PdHOCDQXrjlB",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/traffic_hourly',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_date\":\"String\",\"end_date\":\"String\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "o5_1ZtCAR6q_-nyki4_Dj",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/traffic_hourly\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "iMBB5OQxi1QG9OsaKAcIZ",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/traffic_hourly\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "2HEX2VZokUClMq1M_oJ_Q",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/traffic_hourly\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "7ToisMbaGH2vjaEVnnLgc"
  },
  "description": "Gets the traffic hourly (allowed and blocked) for customer in a period of time",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "by-time-slot",
  "legacyHash": "eDHu1-QUoaUTKP_vwHByI"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/traffic_daily",
  "name": "By day",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_date",
        "type": "String",
        "description": "Report lower limit, format Y-m-d"
      },
      {
        "kind": "required",
        "name": "end_date",
        "type": "string",
        "description": "Report upper limit, format Y-m-d"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "98lUtieQcG5XxY9KVa26F",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"By day\",\n        \"items_graph\": \"http://graph.fsflt.net/line?rnd=514836&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=orange&hideLblX=0&fontSize=9&breakLabel=0&limitChar=16&arrayVal=11%2F15%7C0%3B11%2F16%7C1954912%3B11%2F17%7C110868%3B11%2F18%7C0%3B11%2F19%7C56271%3B11%2F20%7C0\",\n        \"result\": [\n            {\n                \"day\": \"11/15\",\n                \"total_requests\": \"0\"\n            },\n            {\n                \"day\": \"11/16\",\n                \"total_requests\": \"1954912\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "kKGYX237-bqqCXFYcikxb",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "MOhozOonpmQf9p_uVRzQq",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "98lUtieQcG5XxY9KVa26F"
  },
  "examples": {
    "languages": [
      {
        "id": "CccaILUqBUxnSbh2vXeKQ",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/traffic_daily' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_date\":\"String\",\"end_date\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "u4RoP_scoO9PP8sPWoFB2",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/traffic_daily',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_date\":\"String\",\"end_date\":\"String\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "DvJqc8zrN_Udg5Y8UWrtH",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/traffic_daily\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "AYhc_PRaZZLEwzPDAWplJ",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/traffic_daily\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "_cvjbtTySxBXve6TlGk8R",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/traffic_daily\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "CccaILUqBUxnSbh2vXeKQ"
  },
  "description": "Gets the traffic daily (allowed and blocked) for customer in a period of time",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "by-day",
  "legacyHash": "MoJmJ51vdlRs3JLhWnJ2i"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/report/traffic_reports/traffic_weekly",
  "name": "For weekday",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "start_date",
        "type": "String",
        "description": "Report lower limit, format Y-m-d"
      },
      {
        "kind": "required",
        "name": "end_date",
        "type": "string",
        "description": "Report upper limit, format Y-m-d"
      },
      {
        "kind": "optional",
        "name": "profile_code",
        "type": "Number",
        "description": "Only search for profile, defaults to all\nSee panel/profiles/list for profiles list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "K_koA3KKIjvQZZ0rDuKGQ",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"title\": \"For weekday\",\n        \"items_graph\": \"http://graph.fsflt.net/line?rnd=855625&typeFS=4&maxWi=958&maxHe=200&barWi=60&barStyle=orange&hideLblX=0&fontSize=9&breakLabel=0&limitChar=16&arrayVal=monday%7C0%3Btuesday%7C2113032%3Bwednesday%7C124064%3Bthursday%7C0%3Bfriday%7C60780%3Bsaturday%7C0\",\n        \"result\": [\n            {\n                \"day\": \"monday\",\n                \"total_requests\": \"0\"\n            },\n            {\n                \"day\": \"tuesday\",\n                \"total_requests\": \"2113032\"\n            },\n        ]\n    }\n}\n",
        "language": "200"
      },
      {
        "id": "oRO3Hgudvburn3przDWsM",
        "code": "{\r\n    \"message\": \"Invalid token or Unauthorized admin\"\r\n}",
        "language": "401"
      },
      {
        "id": "EK4aQfLB1vN6zvffbXkWc",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"profile_code\": [\r\n            \"Profile not found, please connect to profiles/list for the list\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "K_koA3KKIjvQZZ0rDuKGQ"
  },
  "examples": {
    "languages": [
      {
        "id": "8JbLfJ3P1fhv6HNbvFcJS",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/report/traffic_reports/traffic_weekly' \\\n--header 'X-API-KEY: string' \\\n--data '{\"customer_code\":\"Number\",\"start_date\":\"String\",\"end_date\":\"String\",\"profile_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "zlMC_SX5K525E355CJXoP",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/report/traffic_reports/traffic_weekly',\n   'headers': {\n      'X-API-KEY': 'string'\n   },\n   body: '{\"customer_code\":\"Number\",\"start_date\":\"String\",\"end_date\":\"String\",\"profile_code\":\"Number\"}'\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "Mg2K6FYjcBc_mye5O_aQj",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"X-API-KEY\", \"string\");\n\nvar raw = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\";\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/report/traffic_reports/traffic_weekly\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "cwVy6tMNf0CHkHoGkkI7i",
        "language": "python",
        "code": "import requests\n\nurl = \"https://api.fsflt.net/report/traffic_reports/traffic_weekly\"\n\npayload = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\nheaders = {\n   'X-API-KEY': 'string'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "RJhxt2WvVhnqO-x6Q5k5M",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/report/traffic_reports/traffic_weekly\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"X-API-KEY\"] = \"string\"\nrequest.body = \"{\\\"customer_code\\\":\\\"Number\\\",\\\"start_date\\\":\\\"String\\\",\\\"end_date\\\":\\\"String\\\",\\\"profile_code\\\":\\\"Number\\\"}\"\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "8JbLfJ3P1fhv6HNbvFcJS"
  },
  "description": "Gets the traffic weekly (allowed and blocked) for customer in a period of time",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "for-weekday",
  "legacyHash": "QXgMx8dX7dVJo9l8H4ol5"
}
```
:::




[title] Profiles
[path] API Integration/Panel/

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/profiles/view",
  "name": "Get Customer's Profiles",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "nitQOTciaZZ9AbH6bfB6z",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"code\": 0,\n            \"name\": \"Default Profile\",\n            \"timezone\": \"America/Chicago\",\n            \"is_limited\": false,\n            \"dns\": {\n                \"ipv4\": {\n                    \"primary_dns\": \"185.236.104.124\",\n                    \"secondary_dns\": \"185.236.105.125\"\n                },\n                \"ipv6\": {\n                    \"primary_dns\": \"2a12:7bc0:104:124::\",\n                    \"secondary_dns\": \"2a12:7bc0:105:125::\"\n                }\n            },\n            \"safesearch\": {\n                \"searchengines\": false,\n                \"youtube\": true\n            },\n            \"blocked_categories\": [\n                \"zealand_threats\",\n                \"worm_comm\",\n                \"worm\",\n                \"trojan_comm\",\n                \"trojan\",\n                \"translator_proxy\",\n                \"stealer\",\n                \"spyware\",\n                \"scamadviser\",\n                \"rootkit\",\n                \"riskware\",\n                \"rat\",\n                \"proxy\",\n                \"phishing_community\",\n                \"phishing\",\n                \"mining\",\n                \"malware_comm\",\n                \"malicious_activity\",\n                \"hoax\",\n                \"exploit\",\n                \"dropper\",\n                \"downloader\",\n                \"dns_proxy\",\n                \"dga\",\n                \"cryptowall_comm\",\n                \"cryptowall\",\n                \"chongluadao\",\n                \"cc_skimming\",\n                \"c2\",\n                \"botnet_comm\",\n                \"botnet\",\n                \"banker\",\n                \"backdoor_comm\",\n                \"backdoor\",\n                \"android_malwares\",\n                \"adware\"\n            ],\n            \"blocked_countries\": [],\n            \"blacklist\": [\n                \"mema-fasteno.it\"\n            ],\n            \"allowlist\": []\n        },\n        {\n            \"code\": 1,\n            \"name\": \"Second Profile\",\n            \"timezone\": \"America/Chicago\",\n            \"is_limited\": true,\n            \"dns\": {\n                \"ipv4\": {\n                    \"primary_dns\": \"185.236.104.104\",\n                    \"secondary_dns\": \"185.236.105.105\"\n                },\n                \"ipv6\": {\n                    \"primary_dns\": \"2a12:7bc0:104:104::\",\n                    \"secondary_dns\": \"2a12:7bc0:105:105::\"\n                }\n            },\n            \"safesearch\": {\n                \"searchengines\": true,\n                \"youtube\": false\n            },\n            \"blocked_categories\": [],\n            \"blocked_countries\": [],\n            \"blacklist\": [\n                \"test.com\"\n            ],\n            \"allowlist\": [\n                \"test2.com\"\n            ]\n        }\n    ]\n}",
        "language": "200"
      },
      {
        "id": "Gso7CeSjZ5IREx7Ck4f-g",
        "language": "409",
        "code": "{\n  \"code\": 409,\n  \"content\": \"Please provide a valid customer\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "nitQOTciaZZ9AbH6bfB6z"
  },
  "examples": {
    "languages": [
      {
        "id": "ysU2TcxuYVKUMiUnuj1Xi",
        "language": "curl",
        "code": "curl --location --request GET 'https://api.fsflt.net/panel/profiles/view' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Number\"}'",
        "customLabel": ""
      },
      {
        "id": "YMDcdpVR6muN62rsgpVnR",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'GET',\n   'url': 'https://api.fsflt.net/panel/profiles/view',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "hJJI_jMJQDgRUquOIah_n",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/profiles/view\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "hfaJTDLbMM5JMf6dvrzU4",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/profiles/view\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Da9M9H_bMLaFi3T7kESjk",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/profiles/view\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "ysU2TcxuYVKUMiUnuj1Xi"
  },
  "description": "Get all the profiles associated to a customer. Returns profile code, name and protection infos",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-customers-profiles",
  "legacyHash": "AVYJmuN2XyZrKMJWjyD8v"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Add a Profile",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/profiles/add",
  "description": "Create a new protection profile",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "90znQ8YRJQRq7VUT6Qu62",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/profiles/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Number\",\"name\":\"string\",\"dns_id\":\"Number\",\"timezone\":\"string\",\"is_limited\":\"Boolean\"}'",
        "customLabel": ""
      },
      {
        "id": "wJVfEqQjqz9D_U6JMArII",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/profiles/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\",\n      \"name\": \"string\",\n      \"dns_id\": \"Number\",\n      \"timezone\": \"string\",\n      \"is_limited\": \"Boolean\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "-uEVS1S6PDajGfhpaHzGu",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/profiles/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "KIVMan_S3KkHHRkoSDvX9",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/profiles/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Bim6gw568GuEsPrHCdPgu",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/profiles/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "90znQ8YRJQRq7VUT6Qu62"
  },
  "results": {
    "languages": [
      {
        "id": "-PT0bgSvnWxQfZ8-2LTxB",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 201,\n    \"content\": {\n        \"msg\": \"Profile added successfully\",\n        \"profile_code\": 24\n    }\n}"
      },
      {
        "id": "ja-7PbSWBw48S7fzV0tGK",
        "language": "409",
        "customLabel": "",
        "code": "{\n  \"code\": 409,\n  \"content\": \"Please provide a valid customer\"\n}"
      },
      {
        "id": "f7eNR7A5aR7dnJ2e77ft1",
        "language": "405",
        "code": "{\n  \"code\": 405,\n  \"content\": \"Please provide a valid timezone\"\n}",
        "customLabel": ""
      },
      {
        "id": "firR6lvk0ZhVA_Bao2DSx",
        "language": "412",
        "code": "{\n  \"code\": 412,\n  \"content\": \"Please provide a valid DNS ID\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "-PT0bgSvnWxQfZ8-2LTxB"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "name": "name",
        "kind": "required",
        "type": "string",
        "description": "Name of the profile",
        "children": []
      },
      {
        "name": "dns_id",
        "kind": "required",
        "type": "Number",
        "description": "DNSs ID, retrieved by /profiles/dns Endpoint",
        "children": []
      },
      {
        "name": "timezone",
        "kind": "optional",
        "type": "string",
        "description": "Timezone, retrieved by /timezone/list Endpoint",
        "children": []
      },
      {
        "name": "is_limited",
        "kind": "optional",
        "type": "Boolean",
        "description": "1 => Limited profile, 0 => Normal profile",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-a-profile",
  "legacyHash": "HzGc8yWUJsyH4vrPlvg45"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Edit Profile",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/profiles/edit",
  "description": "Edit an existing profile",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "90znQ8YRJQRq7VUT6Qu62",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/profiles/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Number\",\"name\":\"string\",\"dns_id\":\"Number\",\"timezone\":\"string\",\"is_limited\":\"Boolean\"}'",
        "customLabel": ""
      },
      {
        "id": "wJVfEqQjqz9D_U6JMArII",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/profiles/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\",\n      \"name\": \"string\",\n      \"dns_id\": \"Number\",\n      \"timezone\": \"string\",\n      \"is_limited\": \"Boolean\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "-uEVS1S6PDajGfhpaHzGu",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/profiles/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "KIVMan_S3KkHHRkoSDvX9",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/profiles/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Bim6gw568GuEsPrHCdPgu",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/profiles/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "90znQ8YRJQRq7VUT6Qu62"
  },
  "results": {
    "languages": [
      {
        "id": "-PT0bgSvnWxQfZ8-2LTxB",
        "language": "200",
        "customLabel": "",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Profile edited successfully\"\n}"
      },
      {
        "id": "ja-7PbSWBw48S7fzV0tGK",
        "language": "409",
        "customLabel": "",
        "code": "{\n  \"code\": 409,\n  \"content\": \"Please provide a valid customer\"\n}"
      },
      {
        "id": "f7eNR7A5aR7dnJ2e77ft1",
        "language": "405",
        "code": "{\n  \"code\": 405,\n  \"content\": \"Please provide a valid timezone\"\n}",
        "customLabel": ""
      },
      {
        "id": "firR6lvk0ZhVA_Bao2DSx",
        "language": "412",
        "code": "{\n  \"code\": 412,\n  \"content\": \"Please provide a valid DNS ID\"\n}",
        "customLabel": ""
      },
      {
        "id": "7K67n8ju9aTHhKEk69N6s",
        "language": "406",
        "code": "{\n  \"code\": 406,\n  \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      },
      {
        "id": "j3FxbGNiIlMM8YbRSUCvH",
        "language": "407",
        "code": "{\n  \"code\": 407,\n  \"content\": \"You cannot use this port for this profile because it's already used\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "-PT0bgSvnWxQfZ8-2LTxB"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Number",
        "description": "Profile code",
        "children": []
      },
      {
        "name": "name",
        "kind": "optional",
        "type": "string",
        "description": "Name of the profile",
        "children": []
      },
      {
        "name": "is_limited",
        "kind": "optional",
        "type": "Boolean",
        "description": "1 => Limited profile, 0 => Normal profile",
        "children": []
      },
      {
        "name": "dns_id",
        "kind": "optional",
        "type": "Number",
        "description": "DNSs ID, retrieved by /profiles/dns Endpoint",
        "children": []
      },
      {
        "name": "timezone",
        "kind": "optional",
        "type": "string",
        "description": "Timezone, retrieved by /timezone/list Endpoint",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "edit-profile",
  "legacyHash": "ziuwxgmBDUsSgJdrXvNn2"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Delete a Profile",
  "method": "POST",
  "url": "https://api.fsflt.net/panel/profiles/remove",
  "description": "Delete an existing profile",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "90znQ8YRJQRq7VUT6Qu62",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/profiles/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Number\",\"name\":\"string\",\"dns_id\":\"Number\",\"timezone\":\"string\",\"is_limited\":\"Boolean\"}'",
        "customLabel": ""
      },
      {
        "id": "wJVfEqQjqz9D_U6JMArII",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/profiles/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\",\n      \"name\": \"string\",\n      \"dns_id\": \"Number\",\n      \"timezone\": \"string\",\n      \"is_limited\": \"Boolean\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "-uEVS1S6PDajGfhpaHzGu",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/profiles/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "KIVMan_S3KkHHRkoSDvX9",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/profiles/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Bim6gw568GuEsPrHCdPgu",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/profiles/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "90znQ8YRJQRq7VUT6Qu62"
  },
  "results": {
    "languages": [
      {
        "id": "-PT0bgSvnWxQfZ8-2LTxB",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Profile deleted successfully\"\n}"
      },
      {
        "id": "ja-7PbSWBw48S7fzV0tGK",
        "language": "409",
        "customLabel": "",
        "code": "{\n  \"code\": 409,\n  \"content\": \"Please provide a valid customer\"\n}"
      },
      {
        "id": "7K67n8ju9aTHhKEk69N6s",
        "language": "406",
        "code": "{\n  \"code\": 406,\n  \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      },
      {
        "id": "firR6lvk0ZhVA_Bao2DSx",
        "language": "412",
        "code": "{\n  \"code\": 412,\n  \"content\": \"You cannot delete the Default profile\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "firR6lvk0ZhVA_Bao2DSx"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "customer_code",
        "kind": "required",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "name": "profile_code",
        "kind": "required",
        "type": "Number",
        "description": "Profile code",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "delete-a-profile",
  "legacyHash": "tT2Zi5cjUuOWrCCzxCloP"
}
```
:::

:::ApiMethodV2
```json
{
  "name": "Profile DNSs",
  "method": "GET",
  "url": "https://api.fsflt.net/panel/profiles/dns",
  "description": "Get the list of assignable DNSs",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "90znQ8YRJQRq7VUT6Qu62",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/profiles/add' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Number\",\"name\":\"string\",\"dns_id\":\"Number\",\"timezone\":\"string\",\"is_limited\":\"Boolean\"}'",
        "customLabel": ""
      },
      {
        "id": "wJVfEqQjqz9D_U6JMArII",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/profiles/add',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\",\n      \"name\": \"string\",\n      \"dns_id\": \"Number\",\n      \"timezone\": \"string\",\n      \"is_limited\": \"Boolean\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "-uEVS1S6PDajGfhpaHzGu",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/profiles/add\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "KIVMan_S3KkHHRkoSDvX9",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/profiles/add\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "Bim6gw568GuEsPrHCdPgu",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/profiles/add\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\",\n   \"name\": \"string\",\n   \"dns_id\": \"Number\",\n   \"timezone\": \"string\",\n   \"is_limited\": \"Boolean\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "90znQ8YRJQRq7VUT6Qu62"
  },
  "results": {
    "languages": [
      {
        "id": "-PT0bgSvnWxQfZ8-2LTxB",
        "language": "200",
        "customLabel": "",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"5402\": {\n            \"ipv4\": {\n                \"primary_dns\": \"185.236.104.134\",\n                \"secondary_dns\": \"185.236.105.135\"\n            },\n            \"ipv6\": {\n                \"primary_dns\": \"2a12:7bc0:104:134::\",\n                \"secondary_dns\": \"2a12:7bc0:105:135::\"\n            }\n        },\n        \"5403\": {\n            \"ipv4\": {\n                \"primary_dns\": \"185.236.104.144\",\n                \"secondary_dns\": \"185.236.105.145\"\n            },\n            \"ipv6\": {\n                \"primary_dns\": \"2a12:7bc0:104:144::\",\n                \"secondary_dns\": \"2a12:7bc0:105:145::\"\n            }\n        },\n        \"53\": {\n            \"ipv4\": {\n                \"primary_dns\": \"185.236.104.104\",\n                \"secondary_dns\": \"185.236.105.105\"\n            },\n            \"ipv6\": {\n                \"primary_dns\": \"2a12:7bc0:104:104::\",\n                \"secondary_dns\": \"2a12:7bc0:105:105::\"\n            }\n        },\n        \"110\": {\n            \"ipv4\": {\n                \"primary_dns\": \"185.236.104.114\",\n                \"secondary_dns\": \"185.236.105.115\"\n            },\n            \"ipv6\": {\n                \"primary_dns\": \"2a12:7bc0:104:114::\",\n                \"secondary_dns\": \"2a12:7bc0:105:115::\"\n            }\n        },\n        \"143\": {\n            \"ipv4\": {\n                \"primary_dns\": \"185.236.104.124\",\n                \"secondary_dns\": \"185.236.105.125\"\n            },\n            \"ipv6\": {\n                \"primary_dns\": \"2a12:7bc0:104:124::\",\n                \"secondary_dns\": \"2a12:7bc0:105:125::\"\n            }\n        }\n    }\n}"
      }
    ],
    "selectedLanguageId": "-PT0bgSvnWxQfZ8-2LTxB"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "X-API-KEY",
        "kind": "required",
        "type": "string",
        "description": "Your API Key",
        "children": []
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "profile-dnss",
  "legacyHash": "nBu0Hw6udU6te7GdOjepe"
}
```
:::


[title] Panel
[path] API Integration/


[title] Licenses
[path] API Integration/Customerarea/



:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/customerarea/licenses/available",
  "name": "Get available licenses",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "X-API-KEY"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "customer_code",
        "type": "Number",
        "description": "Identifies the customer on which to perform the operation, default yourself.",
        "": "Identifies the customer on which to perform the operation, default yourself."
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "Language for the license name, defaults EN"
      },
      {
        "kind": "optional",
        "name": "version_code",
        "type": "Number",
        "description": "Only search for version, defaults to all\nSee directory/licenses/versions for versions list"
      },
      {
        "kind": "optional",
        "name": "license_duration",
        "type": "string",
        "description": "Search for duration (in monthes), Default: All durations"
      },
      {
        "kind": "optional",
        "name": "license_code",
        "type": "string",
        "description": "Returns detail for specific license code"
      },
      {
        "kind": "optional",
        "name": "currency_code",
        "type": "string",
        "description": "Currency for the license amount, default EUR\nSee directory/currencies for currencies list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "fLq5yVk0nl9rycufct19a",
        "code": "{\n    \"code\": 200,\n    \"content\": [\n        {\n            \"license_code\": \"CL_Q_A005-M1\",\n            \"license_name\": \"Business Filter License\",\n            \"license_duration_months\": \"1\",\n            \"license_version\": \"0\",\n            \"license_quantity\": \"5 users\",\n            \"license_points\": 0.5,\n            \"license_amount\": 5,\n            \"license_amount_currency\": \"EUR\"\n        },\n        {\n            \"license_code\": \"CL_Q_A010-M1\",\n            \"license_name\": \"Business Filter License\",\n            \"license_duration_months\": \"1\",\n            \"license_version\": \"0\",\n            \"license_quantity\": \"10 users\",\n            \"license_points\": 1,\n            \"license_amount\": 10,\n            \"license_amount_currency\": \"EUR€\"\n        },\n    ]\n}",
        "language": "200"
      },
      {
        "id": "XivAqJMahHMwUZfqXRpdJ",
        "code": "{\n    \"code\": 422,\n    \"message\": \"Validation error\",\n    \"content\": {\n        \"lang\": [\n            \"validation.alpha\",\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\n        ]\n    }\n}",
        "language": "422"
      },
      {
        "id": "yCzSkTAuiwtzgqcoiyTqz",
        "language": "100",
        "code": "{\n    \"code\": 500,\n    \"content\": [\"message\": \"Prepaid credit not enough\"]\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "yCzSkTAuiwtzgqcoiyTqz"
  },
  "examples": {
    "languages": [
      {
        "id": "BnV038bZhTQOBdQl7MIRK",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/customerarea/licenses/availables' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{\"customer_code\": CUSTOMER_NUMBER, YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "BnV038bZhTQOBdQl7MIRK"
  },
  "description": "Get available licenses for customer",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-available-licenses",
  "legacyHash": "K7sY0NblA7n1Cwp2OSbII"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/customerarea/licenses/api",
  "name": "API Monthly Usage Statistics",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "X-API-KEY"
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "fLq5yVk0nl9rycufct19a",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"total_allowed_calls\": 500,\n        \"used_calls\": 99,\n        \"remaining_calls\": 401,\n        \"period_start\": \"2024-12-01\",\n        \"period_end\": \"2024-12-31\"\n    }\n}",
        "language": "200"
      },
      {
        "id": "Jw0_RU4GAt6nlPBr8JKqm",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      }
    ],
    "selectedLanguageId": "fLq5yVk0nl9rycufct19a"
  },
  "examples": {
    "languages": [
      {
        "id": "BnV038bZhTQOBdQl7MIRK",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/customerarea/licenses/availables' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{\"customer_code\": CUSTOMER_NUMBER, YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "BnV038bZhTQOBdQl7MIRK"
  },
  "description": "This endpoint retrieves the API's monthly usage statistics",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "api-monthly-usage-statistics",
  "legacyHash": "buY-qRp3V7JQCzVqU2rak"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/licenses/demo",
  "name": "Assign Demo",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "optional",
        "name": "customer_code",
        "type": "Number",
        "description": "Identifies the customer on which to perform the operation, default yourself.",
        "": "Identifies the customer on which to perform the operation, default yourself."
      },
      {
        "kind": "optional",
        "name": "lang",
        "type": "string",
        "description": "The language of the customer to whom the demo is assigned.\nDefault value => EN"
      },
      {
        "kind": "optional",
        "name": "accept_notifications",
        "type": "Boolean",
        "description": "Flag allowing the user to choose whether or not to receive notifications when a new demo is assigned.\nDefault value => True"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "C7GpTguxewsR_1BeI0SDt",
        "code": "{\n    \"code\": 200,\n    \"content\": \n    {\n        \"customer\": \"FSDEV8080\",\n        \"version\": \"CL_DEMO\",\n        \"license\": \"Internet Protection and malware mitigation Trial - Demo inserted by API\",\n        \"expiry_date\": \"2022-01-12\",\n        \"license_id\": 108501\n    }\n}",
        "language": "200"
      },
      {
        "id": "1NlBINaoBD_5lMvAcVZqp",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "4eVVs4P-Zita2aJJSGVWQ",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"lang\": [\r\n            \"The lang must be one of the following types: EN, IT, ES, DE\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "C7GpTguxewsR_1BeI0SDt"
  },
  "examples": {
    "languages": [
      {
        "id": "klVLF7Aq_5-FD6lq4PZ52",
        "code": "curl -X 'POST' \\\n  'https://api.fsflt.net/customerarea/licenses/demo' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{\"customer_code\": CUSTOMER_NUMBER, YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "klVLF7Aq_5-FD6lq4PZ52"
  },
  "description": "Assigns a new demo license to the chosen customer",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "assign-demo",
  "legacyHash": "V1C4Sdozl99qUMbVa7AGp"
}
```
:::



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/licenses/assign",
  "name": "Assign License",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "API Key for authorization",
        "": "required"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "license_code",
        "type": "string",
        "description": "License code to be assigned\nSee licenses/available for licenses list\n"
      },
      {
        "kind": "required",
        "name": "license_info",
        "type": "string",
        "description": "License description (ex. Headquarter, Secondary Office)"
      },
      {
        "kind": "optional",
        "name": "customer_code",
        "type": "Number",
        "description": "Identifies the customer on which to perform the operation, default yourself",
        "": "Identifies the customer on which to perform the operation, default yourself"
      },
      {
        "kind": "optional",
        "name": "accept_notifications",
        "type": "Boolean",
        "description": "Flag allowing the user to choose whether or not to receive notifications when a new license is assigned.\nDefault value => True"
      },
      {
        "kind": "optional",
        "name": "currency_code",
        "type": "string",
        "description": "Currency for the deducted amount, default EUR\nSee directory/currencies for currencies list"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "GBujRodlRdisHXz7xJP43",
        "code": "{\n    \"code\": 200,\n    \"content\": {\n        \"customer\": \"The customer name\",\n        \"license_id\": \"13343\",\n        \"start_date\": \"2022-01-18\",\n        \"expiry_date\": \"2022-01-31\",\n        \"deducted_amount\": 5,\n        \"currency_code\": \"EUR\"\n    }\n}",
        "language": "200"
      },
      {
        "id": "ojLcmekP_Ieq4SQxJafHf",
        "code": "{\n    \"message\": \"Invalid token or Unauthorized admin\"\n}",
        "language": "401"
      },
      {
        "id": "jjqNz6PXxfGP6uI4YAnV2",
        "code": "{\r\n    \"code\": 500,\r\n    \"message\": \"The given data was invalid.\",\r\n    \"errors\": {\r\n        \"license_info\": [\r\n            \"The license info may only contain letters, numbers, dashes and whitespace.\"\r\n        ]\r\n    }\r\n}",
        "language": "500"
      }
    ],
    "selectedLanguageId": "GBujRodlRdisHXz7xJP43"
  },
  "examples": {
    "languages": [
      {
        "id": "8pcr6WgXa0LOirYHoNgJu",
        "code": "curl -X 'POST' \\\n  'https://api.fsflt.net/licenses/assign' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -d '{\"customer_code\": CUSTOMER_NUMBER, YOUR_PARAM}'",
        "language": "shell"
      }
    ],
    "selectedLanguageId": "8pcr6WgXa0LOirYHoNgJu"
  },
  "description": "Assigns a new Bulk license to the chosen customer",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "assign-license",
  "legacyHash": "Xwn46s_2nVGv9P-DpqXg7"
}
```
:::



:::ApiMethodV2
```json
{
  "tab": "request",
  "url": "https://api.fsflt.net/customerarea/licenses/suspend",
  "name": "Suspend license renewal",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "",
        "": "required"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "license_id",
        "type": "string",
        "description": "ID of the license"
      },
      {
        "kind": "required",
        "name": "customer_code",
        "type": "string",
        "description": "Customer code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "hRXmDVs6b97S0_uaWnhxH",
        "code": "{\r\n    \"code\": 200,\r\n    \"content\": \"License suspended successfully.\"\r\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "EV-Yzpj5YvxWbPJuVX9f2",
        "code": "{\n    \"code\": 405,\n    \"message\": \"License already suspended.\",\n    \"error\": []\n}",
        "language": "405",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hRXmDVs6b97S0_uaWnhxH"
  },
  "examples": {
    "languages": [
      {
        "id": "W575XKnmsKRb-e-jUHMCE",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/customerarea/licenses/suspend' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{\"customer_code\": CUSTOMER_NUMBER, \"license_id\": LICENSE_ID}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "W575XKnmsKRb-e-jUHMCE"
  },
  "description": "",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "suspend-license-renewal",
  "legacyHash": "tY5F60EkALPqswPkEKvoy"
}
```
:::



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/customerarea/licenses/enable",
  "name": "Resume license renewal",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "",
        "": "required"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "license_id",
        "type": "string",
        "description": "ID of the license"
      },
      {
        "kind": "required",
        "name": "customer_code",
        "type": "string",
        "description": "Customer code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "hRXmDVs6b97S0_uaWnhxH",
        "code": "{\r\n    \"code\": 200,\r\n    \"content\": \"License enabled successfully.\"\r\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "EV-Yzpj5YvxWbPJuVX9f2",
        "code": "{\n    \"code\": 405,\n    \"message\": \"License already suspended.\",\n    \"error\": []\n}",
        "language": "405",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "hRXmDVs6b97S0_uaWnhxH"
  },
  "examples": {
    "languages": [
      {
        "id": "SbXXIMynN_OOyzpAD5gOZ",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/customerarea/licenses/enable' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{\"customer_code\": CUSTOMER_NUMBER, \"license_id\": LICENSE_ID}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "SbXXIMynN_OOyzpAD5gOZ"
  },
  "description": "",
  "currentNewParameter": {
    "label": "Header Parameter",
    "value": "headerParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "resume-license-renewal",
  "legacyHash": "b26cKcOT3UabAHlEyK0-K"
}
```
:::


[title] Protection
[path] API Integration/Panel/

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/blacklist/add",
  "name": "Add personal blacklist",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "domain",
        "type": "string",
        "children": [],
        "description": "ex. test-site.com"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "CjqCQMzH6_EbiapSBjpWz",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain blacklisted successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "goj84CnWc1nEi6_5t7vAg",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain already present in Personal Blacklists\"\n}",
        "language": "405",
        "customLabel": ""
      },
      {
        "id": "BpHbZ-LncaZMQq8I1cZ5B",
        "code": "",
        "language": "100",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "goj84CnWc1nEi6_5t7vAg"
  },
  "examples": {
    "languages": [
      {
        "id": "69vghA3RQvC7_wjxKGZ0J",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/blacklist/add' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "69vghA3RQvC7_wjxKGZ0J"
  },
  "description": "Add a domain to a personal blacklist",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-personal-blacklist",
  "legacyHash": "gUKe_Gl4JW2Z7vD8Nwiif"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/whitelist/add",
  "name": "Add personal whitelist",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer Code"
      },
      {
        "kind": "required",
        "name": "domain",
        "type": "string",
        "children": [],
        "description": "ex. test-site.com"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "KyKxoaT7fBKUZB_IhYZ6_",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain whitelisted successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "uZiCg2F6CA_TJ0Mhm7tUo",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain already present in Personal Whitelist\"\n}",
        "language": "405",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "KyKxoaT7fBKUZB_IhYZ6_"
  },
  "examples": {
    "languages": [
      {
        "id": "jev1LjnnE3QqbmHuhVhmc",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/whitelist/add' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "jev1LjnnE3QqbmHuhVhmc"
  },
  "description": "Add a domain to a personal whitelist",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "add-personal-whitelist",
  "legacyHash": "eRODf5TrMP5wLytPxezqQ"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/whitelist/remove",
  "name": "Remove personal whitelist",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer Code"
      },
      {
        "kind": "required",
        "name": "domain",
        "type": "string",
        "children": [],
        "description": "ex. test-site.com"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "KyKxoaT7fBKUZB_IhYZ6_",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain whitelisted successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "uZiCg2F6CA_TJ0Mhm7tUo",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain already present in Personal Whitelist\"\n}",
        "language": "405",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "KyKxoaT7fBKUZB_IhYZ6_"
  },
  "examples": {
    "languages": [
      {
        "id": "jev1LjnnE3QqbmHuhVhmc",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/whitelist/add' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "jev1LjnnE3QqbmHuhVhmc"
  },
  "description": "Remove a domain from a personal whitelist",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-personal-whitelist",
  "legacyHash": "Sy-0K28ocR0NUysEEu0jJ"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/blacklist/remove",
  "name": "Remove personal blacklist",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer Code"
      },
      {
        "kind": "required",
        "name": "domain",
        "type": "string",
        "children": [],
        "description": "ex. test-site.com"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "KyKxoaT7fBKUZB_IhYZ6_",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain whitelisted successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "uZiCg2F6CA_TJ0Mhm7tUo",
        "code": "{\n  \"code\": 200,\n  \"content\": \"Domain already present in Personal Whitelist\"\n}",
        "language": "405",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "KyKxoaT7fBKUZB_IhYZ6_"
  },
  "examples": {
    "languages": [
      {
        "id": "jev1LjnnE3QqbmHuhVhmc",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/whitelist/add' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "jev1LjnnE3QqbmHuhVhmc"
  },
  "description": "Remove a domain from a personal blacklist",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "remove-personal-blacklist",
  "legacyHash": "_8knTh8207LJ4WzHBH64C"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/category/block",
  "name": "Block a category",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "category",
        "type": "string",
        "description": "Category ex. porn, warez, ecc"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "WjCpn6bQ7G5aGGMe7omst",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Category blocked successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "sAdqA3p0LEw-EIXCM4u69",
        "code": "{\n    \"code\": 405,\n    \"content\": \"Category already blocked\"\n}",
        "language": "405",
        "customLabel": ""
      },
      {
        "id": "rdOItlgzDTyc5drBJKVhl",
        "language": "412",
        "code": "{\n    \"code\": 412,\n    \"content\": \"You cannot manage this category, you need a valid ProPlus License to handle this.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "rdOItlgzDTyc5drBJKVhl"
  },
  "examples": {
    "languages": [
      {
        "id": "pp3wqBgKlwsYQ62rxwmwt",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/category/block' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "pp3wqBgKlwsYQ62rxwmwt"
  },
  "description": "Block a category for a given profile",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "block-a-category",
  "legacyHash": "bjO5YdJpvQ1HzSp416nzr"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/category/allow",
  "name": "Allow a category",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "category",
        "type": "string",
        "description": "Category ex. porn, warez, ecc"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "RZIe1UE8wTbkhH84yTTvt",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Category allowed successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "vbWqsmPRMmRAmcYe4tPv-",
        "code": "{\n    \"code\": 405,\n    \"content\": \"Category already allowed\"\n}",
        "language": "405",
        "customLabel": ""
      },
      {
        "id": "Ek-lzxhf8cjczAbz8Kfgx",
        "language": "412",
        "code": "{\n    \"code\": 412,\n    \"content\": \"You cannot manage this category, you need a valid ProPlus License to handle this.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Ek-lzxhf8cjczAbz8Kfgx"
  },
  "examples": {
    "languages": [
      {
        "id": "KQ2IJh-ychjq_rltwkg8p",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/category/allow' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "KQ2IJh-ychjq_rltwkg8p"
  },
  "description": "Allow a category for a given profile",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "allow-a-category",
  "legacyHash": "0QGVFYgpiNiyCceMVx4gq"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/safesearch/enable",
  "name": "Enable Safesearch",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      },
      {
        "name": "type",
        "kind": "required",
        "type": "string",
        "description": "Type: youtube, searchengines",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "tjhsmJlZ0unPzaozyrX1Y",
        "code": "{\n    \"code\": 200,\n    \"content\": \"SafeSearch protection enabled successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "DCoW9lFPCaVoPkjf89ipj",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Please provide a valid customer\"\n}",
        "customLabel": ""
      },
      {
        "id": "bbJQDfHTKk9ffXj5MJoQq",
        "language": "406",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      },
      {
        "id": "Tfeoi8evTbBufG_NVRJLs",
        "language": "412",
        "code": "{\n    \"code\": 412,\n    \"content\": \"Please provide a correct type\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "Tfeoi8evTbBufG_NVRJLs"
  },
  "examples": {
    "languages": [
      {
        "id": "EcAYVjGDlVKbovIYiyff8",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/category/blocked' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "EcAYVjGDlVKbovIYiyff8"
  },
  "description": "Enable the safesearch option",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "enable-safesearch",
  "legacyHash": "lDGFsbecb3G2rA5TcZtNR"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/safesearch/disable",
  "name": "Disable Safesearch",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      },
      {
        "name": "type",
        "kind": "required",
        "type": "string",
        "description": "Type: youtube, searchengines",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "tjhsmJlZ0unPzaozyrX1Y",
        "code": "{\n    \"code\": 200,\n    \"content\": \"SafeSearch protection disabled successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "DCoW9lFPCaVoPkjf89ipj",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Please provide a valid customer\"\n}",
        "customLabel": ""
      },
      {
        "id": "bbJQDfHTKk9ffXj5MJoQq",
        "language": "406",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      },
      {
        "id": "Tfeoi8evTbBufG_NVRJLs",
        "language": "412",
        "code": "{\n    \"code\": 412,\n    \"content\": \"Please provide a correct type\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tjhsmJlZ0unPzaozyrX1Y"
  },
  "examples": {
    "languages": [
      {
        "id": "EcAYVjGDlVKbovIYiyff8",
        "code": "curl -X 'POST' \\\r\n  'https://api.fsflt.net/panel/protection/category/blocked' \\\r\n  -H 'accept: application/json' \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\r\n  -d '{YOUR_PARAM}'",
        "language": "shell",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "EcAYVjGDlVKbovIYiyff8"
  },
  "description": "Disable the safesearch option",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "disable-safesearch",
  "legacyHash": "-hDyEjBS5q33OoPaHwt5i"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/country/block",
  "name": "Block a Country",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      },
      {
        "name": "country_code",
        "kind": "required",
        "type": "string",
        "description": "Country codes can be found in /countries/list/ Endpoint",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "tjhsmJlZ0unPzaozyrX1Y",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Country blocked successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "DCoW9lFPCaVoPkjf89ipj",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Please provide a valid customer\"\n}",
        "customLabel": ""
      },
      {
        "id": "bbJQDfHTKk9ffXj5MJoQq",
        "language": "406",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      },
      {
        "id": "Tfeoi8evTbBufG_NVRJLs",
        "language": "412",
        "code": "{\n    \"code\": 412,\n    \"content\": \"Country already blocked\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tjhsmJlZ0unPzaozyrX1Y"
  },
  "examples": {
    "languages": [
      {
        "id": "cYQM4vFK9wekc_24OyjdB",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/protection/country/block' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Number\",\"profile_code\":\"Number\",\"country_code\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "kCWBl_cBmugBwiswBsCod",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/protection/country/block',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\",\n      \"profile_code\": \"Number\",\n      \"country_code\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "3esjHMNE93yACHHzCQOZE",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\",\n   \"country_code\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/protection/country/block\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "Fth_-GUefP9xNYAUu-HWF",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/protection/country/block\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\",\n   \"country_code\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "qp4Yt2LRhLkafCDD8Ithe",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/protection/country/block\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\",\n   \"country_code\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "cYQM4vFK9wekc_24OyjdB"
  },
  "description": "Geoblocking => Block a country",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "block-a-country",
  "legacyHash": "5joG_PfblVkk6i2Rn2oP8"
}
```
:::

:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/panel/protection/country/allow",
  "name": "Allow a Country",
  "method": "POST",
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API key"
      }
    ],
    "bodyDataParameters": [
      {
        "kind": "required",
        "name": "customer_code",
        "type": "Number",
        "description": "Customer code"
      },
      {
        "kind": "required",
        "name": "profile_code",
        "type": "Number",
        "description": "Profile code"
      },
      {
        "name": "country_code",
        "kind": "required",
        "type": "string",
        "description": "Country codes can be found in /countries/list/ Endpoint",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "tjhsmJlZ0unPzaozyrX1Y",
        "code": "{\n    \"code\": 200,\n    \"content\": \"Country allowed successfully\"\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "DCoW9lFPCaVoPkjf89ipj",
        "language": "409",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Please provide a valid customer\"\n}",
        "customLabel": ""
      },
      {
        "id": "bbJQDfHTKk9ffXj5MJoQq",
        "language": "406",
        "code": "{\n    \"code\": 409,\n    \"content\": \"Profile not found\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "tjhsmJlZ0unPzaozyrX1Y"
  },
  "examples": {
    "languages": [
      {
        "id": "cYQM4vFK9wekc_24OyjdB",
        "language": "curl",
        "code": "curl --location 'https://api.fsflt.net/panel/protection/country/block' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data '{\"customer_code\":\"Number\",\"profile_code\":\"Number\",\"country_code\":\"string\"}'",
        "customLabel": ""
      },
      {
        "id": "kCWBl_cBmugBwiswBsCod",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.fsflt.net/panel/protection/country/block',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"customer_code\": \"Number\",\n      \"profile_code\": \"Number\",\n      \"country_code\": \"string\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "3esjHMNE93yACHHzCQOZE",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\",\n   \"country_code\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.fsflt.net/panel/protection/country/block\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      },
      {
        "id": "Fth_-GUefP9xNYAUu-HWF",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.fsflt.net/panel/protection/country/block\"\n\npayload = json.dumps({\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\",\n   \"country_code\": \"string\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "qp4Yt2LRhLkafCDD8Ithe",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.fsflt.net/panel/protection/country/block\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"customer_code\": \"Number\",\n   \"profile_code\": \"Number\",\n   \"country_code\": \"string\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "cYQM4vFK9wekc_24OyjdB"
  },
  "description": "Geoblocking => Allow a country",
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "allow-a-country",
  "legacyHash": "kYeGhbgvssTNOXG1DpYc1"
}
```
:::


[title] Get Domain Categories
[path] API Integration/Blocklist/

:::hint{type="warning"}
This endpoint is available upon customer request.
It allows you to obtain categorization information for a domain, such as associated categories.

For information, write to customer support.

:::



:::ApiMethodV2
```json
{
  "tab": "examples",
  "url": "https://api.fsflt.net/blocklist/category",
  "name": "Get Domain Categories",
  "method": "GET",
  "request": {
    "pathParameters": [],
    "queryParameters": [
      {
        "name": "domain",
        "kind": "required",
        "type": "string",
        "description": "Valid domain name",
        "children": []
      }
    ],
    "headerParameters": [
      {
        "kind": "required",
        "name": "X-API-KEY",
        "type": "string",
        "description": "Your API Key"
      }
    ],
    "bodyDataParameters": [],
    "formDataParameters": []
  },
  "results": {
    "languages": [
      {
        "id": "8r0IpijtHqEBJk6-Kbpx2",
        "code": "Too Many Attempts.",
        "language": "429",
        "customLabel": ""
      },
      {
        "id": "CZxE3lx8b1x7cbh5omsdG",
        "code": "{\n    \"domain\": \"facebook.com\",\n    \"categories\": [\n        \"socialnetworks\",\n        \"app_facebook\"\n    ]\n}",
        "language": "200",
        "customLabel": ""
      },
      {
        "id": "44ctgC6yW0u2fbR5WRN5k",
        "language": "423",
        "code": "You can't use this API.",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "CZxE3lx8b1x7cbh5omsdG"
  },
  "examples": {
    "languages": [
      {
        "id": "uP4Bn2tNgyyQPRtSuvpCn",
        "language": "shell",
        "code": "curl -X 'GET' \\\n  'https://api.fsflt.net/blocklist/category?domain=string' \\\n  -H 'accept: application/json' \\\n  -H \"Content-Type: application/json\" \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "uP4Bn2tNgyyQPRtSuvpCn"
  },
  "description": "Get the list of categories associated with a domain",
  "currentNewParameter": {
    "label": "Query Parameter",
    "value": "queryParameters"
  },
  "hasTryItOut": false,
  "autoGeneratedAnchorSlug": "get-domain-categories",
  "legacyHash": "l3bPjkuNpsPjc0AhCUpaW"
}
```
:::


[title] Import CA on Firefox
[path] FAQ/Why appears "Certificate Error" in some blocked websites?/Install the CA to avoid certificate errors/

To fix page blocking issues with Mozilla Firefox, there are 2 methods.

## Import CA on Firefox

For the first method follow these steps to import the WebTitan SSL certificate for Firefox.

- Open Firefox and go to Options
- Click **Privacy & Security** in the left-hand menu and scroll down to **Certificates**.
- Click **View Certificates...** and the Certificate Manager window displays.
- Click **Authorities** and then **Import...**.
- &#x20;Browse to locate the downloaded *WebFilter.crt* certificate file and click **Open**.
- Click **OK**.

## Use Windows certificate store

The second method is an option included in Firefox which allows to trust Root authorities in the windows certificate store.
This means that certificates can be deployed via group policy as normal and Firefox will trust the same Root authorities that Internet Explorer trusts.&#x20;

Unfortunately, Mozilla have decided not to turn this feature on by default, so this method still requires some other configuration.
To enable this setting the security.enterprise\_roots.enabled must be set to true. &#x20;

To enable this feature on a single computer:

- In Firefox, type 'about\:config' in the address bar.
- If prompted, accept any warnings  .
- Right-click to create a new boolean value, and enter 'security.enterprise\_roots.enabled' as the Name.
- Set the value to 'true'

**Other ways to ask**:

- Add a Certificate Authority to Firefox
- Install a Root Certificate in Firefox


[title] 💬 FAQ
[path] /


[title] Why can't I add a network?
[path] FAQ/

The number of networks allowed **depends on the type and number of licenses assigned to the client**.
There are two possibilities:

## Location with multiple Internet lines

In this case it is necessary to open a support ticket (see bottom of the page).


<font color="">Customer with multiple locations: it will be necessary to assign a license for each location.</font>


**Ex**: Suppose we have a company structured as follows:

- **Location A**: 100 employees.
- **Location B**: 10 employees.
- **Location C**: 5 employees.

Therefore, to filter all locations it will be *necessary to assign three different licenses to the same client* of 100, 10 and 5 named users (all people working within the company), respectively.

**PLEASE NOTE**: If a single license has already been assigned as the sum of the users of the various locations, open a support ticket to handle the issue.

If the issue has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask**:

- Why can't I add a network?
- Why am I denied adding a new network?


[title] Change your own account email
[path] FAQ/How do I change the account email?/

**Follow these steps:**

**NOTE:** This function is available only for dealers and direct end-users.

- Log with your credentials to [https://cloud.flashstart.com/](https://cloud.flashstart.com/).
- Open *My profile* menu.
- Replace your old email with the new one, next to *E-mail* field.
- Click on \[Modify] and then \[Proceed] to complete the operation.

**WARNING:** This process will also modify the email address linked to your dynamic network (if any) so, to avoid connection issues, you've to change the email on your Router/Firewall.&#x20;

**Other ways to ask**:

- Update Your Account Email Address
- How to Change Your Account Email


[title] How can I synchronize my router?
[path] FAQ/

Before you start using the filter, you need to *register your IP on the cloud panel*.
To do this, the *Dynamic DNS (DDNS) service*, found on most routers/firewalls, is used.
To configure Dynamic DNS on your router [Manual configuration with dynamic IP](docId\:WVxjQwhllpC_-ClzSRYPJ)&#x20;

**Configuration tips**

- Check if a dynamic network (related to the desired username) is present on the Dashboard (Network Menu).
- Try entering username and password without copy and paste to avoid possible errors, (ex: unintended spaces).
- Sometimes the router may report an error, ut the service is working properly. Check that the network status is green and showing your public ip (Network Menu).
- If your router does not allow Dynamic DNS, select "*dyndns.org or dyndns.com*" from the list and [read the guide here](docId\:yqoRkp_EevrZbl_A8ILBq). Check that the *router's WAN DNS settings* are set to: 185.236.104.104 and 185.236.105.105.&#x20;

**NOTE**: Change the DNS of your internal LAN after the router has been properly configured.

- Check for *automatic DNS redirections* (port 53 tcp/udp) *to third-party DNS* (e.g., to ISP DNS servers) and, if so, ask your ISP.
- Access the *DNS resolution tool* (if any) and enter "*members.dynds.org*." The result should be "185.236.104.104."
- If the problem has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask**:

- Is there a way to synchronize one's router?
- How to synchronize your own router.


[title] Why can't I add a network?
[path] FAQ/

The number of allowed networks depends on the number of licenses assigned to the customer.
There are two different possibilities:

- Site with different internet networks: in this case it is necessary to open a support ticket (see at the bottom of the page).
- Customer with different sites: you will need to assign a license for each site.
  Ex: suppose we have a company structured in the following way:
  &#x20;    -Site A: 100 employees.
  &#x20;    -Site B: 10 employees.
  &#x20;    -Site C: 5 employees.
  To filter all the sites it will be necessary to assign three different licenses to the same customer, respectively of 100, 10 and 5 nominal users (all the people that work inside the company).

**NOTE**: if a single license has already been granted for the sum of the users of the various locations, open a support ticket to manage the issue.
If the issue has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask**:

- Can't Add Wi-Fi Network on Android?
- Troubleshooting Wi-Fi Network Addition on Android


[title] How do I unlock a website?
[path] FAQ/

If you have already unblocked the domain from your dashboard, the changes you have made may take a while to be applied. So, we suggest waiting a few minutes, after which clear your Browser's cache and try again to open the desired site.

If the problem persists here are some tips that can help you solve it:

- Verify that the domain is not blocked, either by system category or under geoblocking.
  To check this, use the[ List Search tool](docId\:BrZFDNNVwVOOPuPUiZ8TM) from your panel.
  If the domain should be blocked, you will need to add it to the Personal Whitelist on the Protection page.
- Trying to resolve the domain using **nslookup (cmd)** via the following commands:
  *-nslookup iltuodomain*
  For example to resolve amazon.com the command will be:
  -nslookup amazon.com

**PLEASE NOTE**: enter only the domain, without http/https.
If the command returns 185.236.107.107 it means the domain is filtered, so add it within your *Personal Whitelist*.
If "Non-existent Domain" or "DNS request timed out" is displayed, please open a support ticket.

- Try entering the domain in the **Personal Whitelist** to unblock possible CDNS and domains related to it es (aliases or third level domains).

Wait a few minutes, clear your Browser cache, and try logging back in.&#x20;                        Check traffic logs using the following tools, both located within the search menu:

- **Historical data**: daily log, by time slot
- **Real-time analysis**: real-time traffic for the last few minutes&#x20;

Both tools allow you to view visited domains, specifying whether or not they have been blocked by filters.

- Through the advanced tools es (on Chrome click other tools -> Developer Tools -> Network) it will be possible to view all the domains used by the site to load different resources.

If there should be blocked domains (in red), *add them to the***&#x20;Personal Whitelist**.
If the problem has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask**:

- How can I unblock a site?
- The ability to unblock a site.


[title] Change customer account email
[path] FAQ/How do I change the account email?/

**Read the following steps:**

**NOTE:** This function is available only for dealers.

- Log with your credentials to [https://cloud.flashstart.com/](https://cloud.flashstart.com/).
- Click on \[Customers] and then \[Customer List].
- Click on the magnifying glass symbol, right of the Customers's name.
- Click on the pencil symbol, next to the Customer's email, and enter the new email address.
- Confirm by clicking \[Proceed].

**WARNING:** This procedure will also modify the email address linked to Customer's dynamic network (if any) so, to avoid connection issues, you've to change the email on Customer's Router/Firewall.&#x20;

**Other ways to ask**:

- Update Customer Account Email
- Change Customer Email Address


[title] Why appears "Certificate Error" in some blocked websites?
[path] FAQ/

That message appears since you are trying to open a blocked website, using a *HTTPS* secure connection.
So the Browser informs you that the certificate has not been realeased by a reliable/recognized authority.

It's possible to avoid this error by installing our *Certification Authority* on your internal devices.
Here below the guide:
[CA installation guide](docId\:rRQJomCg4HRtohsE7oa5j)&#x20;

Alternately, in most cases, you can click *Proceed anyway* to force the site to open.
In this case you will see the Filter blocked page.&#x20;

**Other ways to ask**:

- Why Do Blocked Websites Show a Certificate Error?
- What Causes SSL Certificate Errors on Restricted Sites?


[title] Is it possible to customize the filter block page?
[path] FAQ/

Yes, our system allows you to customize the block page by allowing you to change your logo, text, image that will appear on the screen, etc.
To edit the stop page you need to click on the tools in the top right corner of the dashboard panel (wrench icon).
For more info on how to make changes to the stop page [click here](docId\:LlYmC0mKGHlWKxq_2t22x).

**Possible issues:**

- If the stop page does not open and the browser shows an *error message*, it is possible that the *packet is not reaching the destination host* so there may be a routing problem.&#x20;
- To check whether this is the *cause of the problem*, open the command prompt (cmd) and run the following command:
  -tracert 185.236.107.107&#x20;
- If problems are found, open a *support ticket and send the tracer result*.
- When images regarding the *stop page are uploaded*, verify that you have correctly adhered to the maximum allowed size and formats.
- The system also allows you to customize the stop page for each profile created on the account.
  However in case of networks with multiprofiles, the *stop page that will open will always be the one associated with the default profile*.&#x20;
- Should a *blocking message appear in the browser*, check the *network for third-party filters*.

If so, we suggest disabling these filters so that there are no conflicts with third-party filters. If the problem has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask**:

- Is there an option to customize DNS filter stop page?
- How to customize the stop page of platform's DNS filter.


[title] Customization of the stop page
[path] FAQ/Is it possible to customize the filter block page?/

Thanks to the Customize stop page tool, it is possible to customize the filter block page, which appears every time the user tries to access a blocked website.&#x20;

Once you open the customization page, you’ll see all the profiles available in the account. By default, every profile is assigned the global block page, which can be modified by clicking on the customize button on the right (1).

Moreover, you can activate for each profile the Use a customized block page option, in order to use a different page instead of the one suggested by default (Global block page).&#x20;

Therefore, click on the Customize button to set up the customization (**1/2**).

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/XGXvxvp5iTwKlX33-PFA6_image.png" size="50" width="976" height="370" position="center" caption="stop page" alt="customize stop page" showCaption="true"}

At this point, you will be able to choose whether to use a custom block page or, alternatively, redirect the user to an external page.&#x20;

In the first case (Customize the stop page), you will have different options, which you can select by clicking on the pencil symbol close to each of them:
It will be possible to modify the block heading by choosing to show the client’s name or else the profile’s name.
You will be able to modify the block image, importing it from your device.&#x20;
**NOTE**: The image must be in PNG, JPG or JPEG format and the maximum dimension allowed is of 300px width and 300px height.&#x20;
Finally, click on Save to confirm your choice.&#x20;
It is possible to add your own message, which will appear below the image that has been previously uploaded.&#x20;
**NOTE**: the added text will not be translated in all languages but will only be shown in the selected one.&#x20;
Confirm your choice by clicking on Save.&#x20;
Now the system allows you to choose among three options:&#x20;
&#x20;   Hide the reason for the block: a generic message is shown instead of the specific reason for the block.&#x20;
&#x20; <font color="#ff361d">  </font>Show the reason for the block: the complete reason for the block is shown (e.g. Website in  Phishing, Cracks and warez blacklist).
&#x20;   c. Don’t show anything: the entire section is removed from the block page.
By enabling suggestions with the first button, users will have access to a forum where they can ask the network administrator to unblock specific websites.&#x20;
Moreover, the second button allows you to input additional details such as the reason for the block and the name of the user who requested access to the blocked website.&#x20;
Finally, click on Save to confirm your choice.&#x20;
With this function, you will be allowed to upload your logo directly from your device. It will appear at the end of the block page.&#x20;
NOTE: The image must be in PNG, JPG or JPEG format and the maximum dimension allowed is of 300px width and 100px height.
Finally, click on Save to confirm your choice.&#x20;

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/yxjKQydkheAG5MCal5Nad_image.png" size="50" width="975" height="678" position="center" caption="Stop Page" alt="Costumize Stop Page" showCaption="true"}


In the second case, Redirect to an external page, you will be able to redirect the user to an external website. Therefore, you shall add the complete url of the chosen page, including http/https.
Click on Apply to confirm your choice.

::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/uhrIrPrt-W-_e3Z3FWwaH_image.png" size="50" width="980" height="424" position="center" caption="REdirect to an external Page" alt="REdirect to an external Page" showCaption="true"}

**Other ways to ask**:

- How to manage advanced settings.
- Managing Advanced Settings. How to.


[title] Why can't I access the dashboard?
[path] FAQ/

You can gain access to the dashboard panel through this link, which is compatible with all types of browsers.

**Potential issues:**

- Try to input the password manually, without using copy and paste, so as to avoid including any special characters (e.g.: spaces).&#x20;
- If multiple languages are installed on the pc, check that the set one is the same as the keyboard one (on windows systems you can usually see this on the bottom right).&#x20;
- Check/Verify that the access email (username) is the one that has been used when registering to the service.
- Try to reset the password by clicking [here](https://cloud.flashstart.com/customerarea/recover-data.php?no-login=1\&lang=EN).
  IMPORTANT: if the ddns service for the synchronization of the public ip has already been configured, you will have to update the password on the router/firewall.&#x20;
- In case multiple sessions have been opened, the login might fail.&#x20;
  Try to close the browser and access again.&#x20;
- If the access email or password has just been modified, wait for some minutes and try again.

  If the issue has not been resolved, please open a support ticket by [clicking here](https://cloud.flashstart.com/customerarea/support/tickets/).

**Other ways to ask**:

- Can't Access the Admin Dashboard?
- Unable to Reach the Dashboard?


[title] Install the CA to avoid certificate errors
[path] FAQ/Why appears "Certificate Error" in some blocked websites?/

When you try to open an Https blocked website for security policies, a browser certificate warning message appears.
To avoid this issue you can install our Certification Authority (CA) on your devices.

It's possible to perform a manual installation or a massive deployment under Microsoft Active Directory Server.

## MANUAL INSTALLATION

Logon with an administrative account on the device.

[ download the Certification Authority](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=share_ca_ssl) on the Desktop.

Unzip the *WebFilter.zip* file and right-click on the extracted *WebFilter.crt* file. Click \[Install certificate] from the menu.
Choose to install the certificate for Local Machine and press \[Next] to continue.&#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/gZLOG-M0BxLKT53Ke3AC1_image.png" size="50" width="541" height="527" position="center" caption="Certificate Import Wizard" alt="Certificate Import Wizard" darkWidth="541" darkHeight="527" showCaption="true"}

Choose Place all certificates in the following store and then click on the \[Browse...] button.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0hf7JFptoZmdw3Pub2MZ-_image.png" size="50" width="539" height="527" position="center" caption="Place Certificates" alt="Place Certificates in the store" darkWidth="539" darkHeight="527" showCaption="true"}

Highlight *Trusted Root Certification Authorities* and then confirm with \[OK]. Finally, click \[Finish] to complete the *CA* installation.

**N.B&#x20;**&#x49;f it does not work on mozilla firefox, please refer to the [following guide](docId:4zr4bd9689G8rIs-h_Drj).

## INSTALLATION USING ACTIVE DIRECTORY GPO

*Certification Authority* using the Group Policy in a Microsoft Active Directory environment.
**NOTE:** In the following guide we'll explain how to create the policy with Microsoft Windows Server 2012 but the steps are silimar also with the other versions of Windows.

Log into your Active Directory Server, using an administrative account and [download the Certification Authority](https://cloud.flashstart.com/customerarea/share.php?mode=download\&lang=EN\&code=share_ca_ssl) on the Desktop.

Unzip the *WebFilter.zip* file and right click on the extracted *WebFilter.crt* file.

Open the group policy management console by running *gpmc.msc* command.&#x20;



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/0MZfD3jO8_FFx9NHGNCrK_image.png" size="50" width="428" height="236" position="center" caption="gpmc.msc" alt="gpmc.msc" darkWidth="428" darkHeight="236" showCaption="true"}

Choose your domain, right click and select Create a GPO in this domain and link it here.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/yLsY43uJIV9078iBVBxBk_image.png" size="50" width="1008" height="492" position="center" caption="GPO" alt="Create a GPO" darkWidth="1008" darkHeight="492" showCaption="true"}

Type a name for your GPO and click \[OK] to create it.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/Cxw0nTsQDP86a6nXCrRtH_image.png" size="50" width="398" height="184" position="center" caption="Signing Certificate" alt="Signing Certificate" darkWidth="398" darkHeight="184" showCaption="true"}

Righ click on the policy you've just created and then select \[Edit]. In the new window navigate to Computer Configuration->Policies->Windows Settings->Security Settings->Public Key Policies.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/nod-6xwZNxoIC1Z2C2joh_image.png" size="50" width="931" height="422" position="center" caption="Public key Policies" alt="Public key Policies" darkWidth="931" darkHeight="422" showCaption="true"}

Right click on the Trusted Root Certification Authorities entry and click \[Import].



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/OGNakkRzs88V7cvdoNQUj_image.png" size="50" width="1041" height="391" position="center" caption="Import Rood" alt="Import Root" darkWidth="1041" darkHeight="391" showCaption="true"}

Click \[Next] and then click \[Browse...] to choose our Certification Authority.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/IB42AcpDlYbREY4o_wOaj_image.png" size="50" width="550" height="526" position="center" caption="Browse" alt="Browse" darkWidth="550" darkHeight="526" showCaption="true"}

Select the extracted certificate, called WebFilter.crt, you saved before on your Desktop and click \[Open]. Click \[Next] to proceed.
Choose Place all certificates in the following store and then click on the \[Browse...] button.
Highlight Trusted Root Certification Authorities and then confirm with \[OK]. Then confirm with \[Next].
Finally, click \[Finish] to complete the procedure.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/D5f3MPV88j81HmYjkt1Sn_image.png" size="50" width="545" height="525" position="center" caption="Certificate Import Wizard" alt="Certificate Import Wizard" darkWidth="545" darkHeight="525" showCaption="true"}

Navigate to Computer configuration->Policies->Administrative Templates Policy definitions->Windows Components->Windows Update.
Double click Allow signed content from intranet Microsoft update service location.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/G5JkRWcnamnarWKqhgikp_image.png" size="50" width="1279" height="524" position="center" caption="Windows Update" alt="Windows Update" darkWidth="1279" darkHeight="524" showCaption="true"}

Next select \[Enabled]. Click \[OK] to confirm.



::Image[]{src="https://archbee-image-uploads.s3.amazonaws.com/qeNTDI134aDAkmAtZMoNc/2PQJPcG80rmoIA57rkwOj_image.png" size="50" width="705" height="650" position="center" caption="Enabled Microsoft Update" alt="Enabled Microsoft Update Service Location" darkWidth="705" darkHeight="650" showCaption="true"}

The new group policy will be updated, on your internal devices, based on the refresh interval time. The standard interval is 90 minutes.
**NOTE**: You can use the gpupdate /force command to immediately load the policy on your PC.

**Other ways to ask**:

- How can I install the Certificate Authority to prevent SSL/TLS certificate errors?
- What steps should I take to install the CA and eliminate certificate trust issues?


[title] Installing SSL Certificates on Android
[path] FAQ/Why appears "Certificate Error" in some blocked websites?/Install the CA to avoid certificate errors/

Installing SSL certificates on Android devices is crucial for securing digital communication and protecting user privacy.

This guide will provide a step-by-step process for installing the certificate, including specific configurations for different device models. By following these instructions, users will be able to ensure a successful and secure installation of their SSL certificates.

## Installation for android&#x20;

**Access the configuration**

- Go to the admin panel of your Android device. From there, go to “Settings” and then “Security”.
- Under “Credential storage”, look for the option “Install from phone storage” or “Install from SD”, depending on your Android version, it may be displayed as: “Install from internal device memory”.

If this option is not visible, you can find it in “Advanced settings” under “Security” or even “Privacy”.

**File selection**

- When you select the install option, you will encounter the File Storage Manager. Browse for the SSL certificate file you have on your device.

**Authentication**

- If prompted, provide the password or passphrase PKCS#12 that you created earlier. This step verifies your authorization to install the certificate.

**Name the certificate**

- In the field designated for the certificate name, assign a descriptive name that will help you quickly identify the certificate.

Using credentials

Choose the appropriate “Use Credentials” option according to your security requirements. Select the appropriate one if you are using the certificate for VPN and Apps or Wi-Fi.

## For Samsung devices:

- **Certificate download:&#x20;**&#x44;ownload the required certificate to your device.



::Image[]{src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe5n8AmUhFMRKr8zJWwPET4fVCDTMzBMEDZ_KameropzBImRdY7MePU1N9T-2pBuH6_iH0WlhMCV82UQ8IK5Yo3MrHo3oT55i9T250aDebWFVoZnxIrVLwVQxxZ1UlKocuh-cZ7luCqwHmG1XlLx52dQdXk?key=enCfxzZhmBJ27RQtZx2StA" size="50" width="1078" height="708" position="center" caption="Downloads" alt="Downloads" showCaption="true"}

- **Device settings:&#x20;**&#x41;ccess your device **settings**. Go to “**Biometrics and security”.** Within this section, look fo&#x72;**“Other security settings**”.



::Image[]{src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXe1swB-0Eyd-IBfnDAU8qEsAslSMapSsYOPlJxcwG8AANyVgN51e1YPu4eH9iOHVulGbkgbogGXA3g1hq8tOQPjFRCXWWdf8Q_70_xT1rNugWs7wQ0FRyn8GFK0iDoj10rKAbEH8L2PX3vGQYEEslTW-qHY?key=enCfxzZhmBJ27RQtZx2StA" size="50" width="795" height="1600" position="center" caption="Other security settings" alt="Other security settings" showCaption="true"}

- **Install the certificate:&#x20;**&#x43;hoose “**Install certificates from SD**”.



::Image[]{src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcVF0UaE_wf81LffFNbiddmPWJvpqP4Fez_jDiup-6JMFJoA4yVBxq6vX9S0Tn3kXThej-puoYpa9T0uOsxp9AZgt9OHSauvm_iL_2_6HhN-NVox60jK0QJerrl1rXq8Cda1pIutZ5CoQPx2JdHbOjtCQlC?key=enCfxzZhmBJ27RQtZx2StA" size="50" width="795" height="1600" position="center" caption="Install from device Storage" alt="Install from device storage" showCaption="true"}

- Click on “**CA Certificate**”.



::Image[]{src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXewnOfs2rqG8ZxwEoZjl20NQtUOyOzobjJ5-a8e_QEsMpRY95fpBpXXKQC_onHwN4WiuodYsWwOpKXl7vf809XBpsFKyvqujnTz6i_pIBm_CV8fHmCBf3gxuGGJ3-W2_1tfe2JUAP-xGEASsEx-JWKi-_U?key=enCfxzZhmBJ27RQtZx2StA" size="50" width="1079" height="653" position="center" caption="CA certificate" alt="CA certificate" showCaption="true"}

- Click “**Install anyway**” to confirm your intention.



::Image[]{src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeoyhGch2psLMC3uijFRMqdB7A1WInMqKMWl1SlX6bkhCbX1ZOzpRfM4b7yQiLtNAT2tLyS5elW7AzFJdQ4Y5AnQNLJAeDi_wm2os3X7ka2hl3JaCIgKpm9jq8lGmQiJedpLbShl8FzjfVs13iOi8o1cVT1?key=enCfxzZhmBJ27RQtZx2StA" size="50" width="795" height="1600" position="center" caption="Install Anyway" alt="Install Anyway" showCaption="true"}

- **Select the file** and download the certificate by clicking “**Download**”. Finish the process by selecting “**Securly**”.



::Image[]{src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc5Jn5uG817F_i7Fd0Oya3w1Q-kWMONl5if65ljQgUTUGAx3abShjP9Y0GWuuDiMYhS2qhpMqU4owqrsPkFdXDDanvsRs2M34otzYJ28I_tP2fdpueDUOulXIDGD2Ll5kdAj14-lHMQQPiimOFrWo197jOd?key=enCfxzZhmBJ27RQtZx2StA" size="50" width="1600" height="929" position="center" caption="Select Item" alt="Select Item" showCaption="true"}

## Verify the trustworthiness of your certificate:

If you are installing certificates manually on your Android devices, it is important to repeat these actions  on each new device you want to be within the scope of SSL filtering.

 To ensure the legitimacy and trustworthiness of the installed certificate follow these steps

The precise path to access the Trusted Credentials menu depends on the version of Android running on your device.

- **Step 1:** Open the Settings app: Launch the Settings app on your device.
- **Step 2:** Navigate to Trusted Credentials: Go to “Security.” Find and select “Trusted Credentials.” Click on the “User” tab within this menu.
- **Step 3:** Confirm the presence of the certificate: Following the above steps, the list of user certificates will be displayed.  
- If you find the certificate in this list, the installation was successful.

**Other ways to ask**:

- Installing SSL Certificates on Android
- How to Install SSL Certificates on Android

