Skip to content

Commit

Permalink
Merge pull request #5 from dzhuang/url_black
Browse files Browse the repository at this point in the history
Implemented url_black.
  • Loading branch information
dzhuang committed Feb 15, 2024
2 parents 4ab797f + 917826c commit 9237843
Show file tree
Hide file tree
Showing 3 changed files with 155 additions and 2 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,7 @@ The management of alias of devices, mapping mac addresses. The implemented metho
### mac_qos

The interface for limiting download/upload speed of devices, mapping mac addresses. The implemented methods include: `add_mac_qos`, `list_mac_qos`, `edit_mac_qos`, `del_mac_qos`, `enable_mac_qos`, `disable_mac_qos`.

### url_black

Blacklisting or whitelisting url for accessing, mapping mac addresses. The implemented methods include: `add_url_black`, `list_url_black`, `edit_url_black`, `del_url_black`, `enable_url_black`, `disable_url_black`.
15 changes: 14 additions & 1 deletion src/pyikuai/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class rp_func_name: # noqa
acl_l7 = "acl_l7"
acl_mac = "acl_mac"

url_black = "url_black"


class rp_order_param: # noqa
asc = "asc"
Expand Down Expand Up @@ -97,7 +99,7 @@ class acl_mac_param: # noqa


class mac_qos_param: # noqa
attr = "attr"
attr = "attr" # todo: what does this control?
id = "id"
comment = "comment"
enabled = "enabled"
Expand All @@ -109,3 +111,14 @@ class mac_qos_param: # noqa
week = "week"
qos_type = "type"
ip_type = "ip_type"


class url_black_param: # noqa
id = "id"
comment = "comment"
domain = "domain"
enabled = "enabled"
ip_addr = "ip_addr"
mode = "mode"
time = "time"
week = "week"
138 changes: 137 additions & 1 deletion src/pyikuai/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
acl_l7_param, acl_l7_param_action, acl_mac_param,
domain_blacklist_param, json_result_code,
mac_comment_param, mac_group_param, mac_qos_param,
rp_action, rp_func_name, rp_key, rp_order_param)
rp_action, rp_func_name, rp_key, rp_order_param,
url_black_param)
from .exceptions import (AuthenticationError, RequestError, RouterAPIError,
ValidationError)

Expand Down Expand Up @@ -806,3 +807,138 @@ def enable_mac_qos(self, mac_qos_id):
)

# }}}

# {{{ url_black CRUD
# 行为管控 之 网址黑名单

def list_url_black(self, **query_kwargs):
result = self.exec(
func_name=rp_func_name.url_black,
action=rp_action.show,
param=QueryRPParam(**query_kwargs).as_dict()
)
return result[JSON_RESPONSE_DATA]

def _get_url_black_param(
self,
ip_addrs,
mode,
enabled=True,
time="00:00-23:59",
comment=None,
week="1234567",
is_editing=False,
url_black_id=None):

if not isinstance(ip_addrs, list):
ip_addrs = [ip_addrs]
ip_addr = ",".join(ip_addrs)

# mode: "0" for 独立限速, "1" for 共享限速
assert mode in [0, 1, "0", "1"]
mode = int(mode)

self.validate_time_range(time)
self.validate_weekday(week)

enabled = "yes" if enabled else "no"
comment = comment or ""
comment = comment.replace(" ", quote(" "))

param = {
url_black_param.ip_addr: ip_addr,
url_black_param.comment: comment,
url_black_param.enabled: enabled,
url_black_param.mode: mode,
url_black_param.time: time,
url_black_param.week: week,
}

# when edit, there's a attr=0 param
if is_editing:
assert url_black_id is not None, (
"mac_qos_param_id cannot be None when editing")

param[url_black_param.id] = url_black_id
return param

def add_url_black(
self,
ip_addrs,
mode,
enabled=True,
time="00:00-23:59",
comment=None,
week="1234567"):

param = self._get_url_black_param(
ip_addrs=ip_addrs,
mode=mode,
enabled=enabled,
time=time,
comment=comment,
week=week,
is_editing=False,
)

return self.exec(
func_name=rp_func_name.url_black,
action=rp_action.add,
param=param
)

def edit_url_black(
self,
url_black_id,
ip_addrs,
mode,
enabled=True,
time="00:00-23:59",
comment=None,
week="1234567"):

param = self._get_url_black_param(
ip_addrs=ip_addrs,
mode=mode,
enabled=enabled,
time=time,
comment=comment,
week=week,
is_editing=True,
url_black_id=url_black_id
)

return self.exec(
func_name=rp_func_name.url_black,
action=rp_action.edit,
param=param
)

def del_url_black(self, url_black_id):
return self.exec(
func_name=rp_func_name.url_black,
action=rp_action.delete,
param={
url_black_param.id: url_black_id,
}
)

def disable_url_black(self, url_black_id):
return self.exec(
func_name=rp_func_name.url_black,
action=rp_action.down,
param={
url_black_param.id: url_black_id,
}
)

def enable_url_black(self, url_black_id):
return self.exec(
func_name=rp_func_name.url_black,
action=rp_action.up,
param={
url_black_param.id: url_black_id,
}
)

# }}}

0 comments on commit 9237843

Please sign in to comment.