Skip to content
Snippets Groups Projects

Configuration

Configuration through UCI and TR-181 data model is possible.

UCI Configuration

The configuration involved parentalcontrol UCI and (optionally) schedules UCI.

parentalcontrol UCI Configuration

The table below describes the options available in the parentalcontrol UCI file:

Option Type Description
globals section Defines global settings for parental controls.
enable (in globals) boolean Enable or disable the parental control globally (1 for enable).
profile section Profile contains hosts and is referred to by filters.
name string A descriptive name for the profile (e.g., kids).
host list Specifies hosts associated with the profile (MAC addresses or device names).
profile_urlfilter section Links URL filtering settings to a profile.
dm_parent string Refers to the profile section by name.
filter_text list List substrings which can be looked into URLs to block them.
profile_urlfilter_schedule list Refers to schedules defined in the schedules UCI file.
profile_urlbundle list Refers to urlbundle sections.
enable boolean Enable or disable the specific profile URL filter (1 for enable).
urlbundle section Bundle contains options for individual urls and bundle files.
custom_url list URLs to be resolved and added to daemon's cache at startup and blocked.
download_url string Remote or local path to a file which contains newline separated URLs

NOTE: If the bundle is fetched from remote location, then maximum size allowed is 2MB per download_url option.

schedules UCI Configuration

The schedules UCI file allows defining time-based schedules for controlling URL filters. Options are described in the table below:

Option Type Description
global section Defines global scheduling settings.
enable (in global) boolean Enable or disable scheduling globally (1 for enable).
schedule section Defines a time-based schedule.
enable boolean Enable or disable the specific schedule (1 for enable).
duration integer Duration of the schedule in seconds (e.g., 28800 for 8 hours).
day list Days on which the schedule is active (e.g., Monday).
start_time string Start time of the schedule in HH:MM format (24-hour clock).

Explanation of Key Options

filter_text

  • If a URL contains any of these strings, it will be blocked.

custom_url

  • Allows manually defining individual URLs for blocking.
  • The IP addresses for these URLs are added to cache on start up, thus, these will be blocked even if someone alters the DNS configuration of the device.

download_url

  • Specifies a source (local or remote) from where URL bundles can be fetched.

Sample UCI configuration

# cat /etc/config/parentalcontrol

config globals 'globals'
	option enable '1'

config profile 'profile_1'
	option name 'kids'
	list host 'aa:00:aa:92:01:01'
	list host ' D_wan_53_1'
	list internet_break_schedule 'schedule_1'
	option internet_break_enable '1'
	option bedtime_enable '1'

config profile_urlfilter 'profile_1_profile_urlfilter_1'
	option dm_parent 'profile_1'
	option access 'Deny'
	list filter_text 'youtube.com'
	list profile_urlfilter_schedule 'schedule_1'
	option enable '1'
	list profile_urlbundle 'b_kids'
	list profile_urlbundle 'b_kids1'
	list profile_urlbundle 'b_kids2'
	list profile_urlbundle 'b_kids3'

config urlbundle 'urlbundle_1'
	option name 'b_kids'
	option enable '1'
	option download_url 'file:///tmp/urlfilter/default/urlbundles/abuse'
	list custom_url 'facebook.com'

config urlbundle 'urlbundle_2'
	option name 'b_kids1'
	option enable '1'
	option download_url 'file:///tmp/urlfilter/default/urlbundles/facebook'

config urlbundle 'urlbundle_3'
	option name 'b_kids2'
	option enable '1'
	option download_url 'file:///tmp/urlfilter/default/urlbundles/tiktok'

config urlbundle 'urlbundle_4'
	option name 'b_kids3'
	option enable '1'
	option download_url 'file:///tmp/urlfilter/default/urlbundles/porn'

config profile_bedtime_schedule 'profile_1_profile_bedtime_schedule_1'
	option dm_parent 'profile_1'
	list day 'Monday'
	list day 'Tuesday'
	list day 'Wednesday'
	option start_time '23:00'
	option end_time '05:00'
	option enable '1'
# cat /etc/config/schedules

config global 'global'
	option enable '1'

config schedule 'schedule_1'
	option enable '1'
	option duration '28800'
	list day 'Monday'
	list day 'Tuesday'
	list day 'Wednesday'
	list day 'Thursday'
	list day 'Friday'
	option start_time '09:00'

Data model configuration

URL Filter

bbfdmd -c add Device.X_IOWRT_EU_ParentalControl.Profile.
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.HostList 'aa:00:aa:92:01:01, D_wan_53_1'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.Name 'kids'
bbfdmd -c add Device.X_IOWRT_EU_ParentalControl.Profile.1.URLFilter.
bbfdmd -c add Device.X_IOWRT_EU_ParentalControl.URLBundle.
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.1.Name 'b_kids'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.1.DownloadURL "file:///tmp/urlfilter/default/urlbundles/abuse"
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.1.Enable '1'
bbfdmd -c add Device.X_IOWRT_EU_ParentalControl.URLBundle.
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.2.Name 'b_kids1'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.2.DownloadURL "file:///tmp/urlfilter/default/urlbundles/facebook"
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.2.Enable '1'
bbfdmd -c add Device.X_IOWRT_EU_ParentalControl.URLBundle.
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.3.Name 'b_kids2'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.3.DownloadURL "file:///tmp/urlfilter/default/urlbundles/tiktok"
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.3.Enable '1'
bbfdmd -c add Device.X_IOWRT_EU_ParentalControl.URLBundle.
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.4.Name 'b_kids3'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.4.DownloadURL "file:///tmp/urlfilter/default/urlbundles/porn"
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.URLBundle.4.Enable '1'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.URLFilter.1.URLBundleRef "Device.X_IOWRT_EU_ParentalControl.URLBundle.1,Device.X_IOWRT_EU_ParentalControl.URLBundle.2,Device.X_IOWRT_EU_ParentalControl.URLBundle.3,Device.X_IOWRT_EU_ParentalControl.URLBundle.4"
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Enable 1
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.URLFilter.1.Enable 1

Internet break

bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.InternetBreak.ScheduleRef Device.Schedules.Schedule.1
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.InternetBreak.Enable 1

Bedtime

bbfdmd -c add Device.X_IOWRT_EU_ParentalControl.Profile.1.BedTime.Schedule.
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.BedTime.Schedule.1.Days 'Monday,Tuesday,Wednesday'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.BedTime.Schedule.1.StartTime '23:00'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.BedTime.Schedule.1.EndTime '05:00'
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.BedTime.Schedule.1.Enable 1
bbfdmd -c set Device.X_IOWRT_EU_ParentalControl.Profile.1.BedTime.Enable 1