qunarcorp / open_dnsdb

OpenDnsdb 是去哪儿网OPS团队开源的基于Python语言的DNS管理系统
Apache License 2.0
415 stars 153 forks source link

添加主机组时报ip格式错误 #30

Closed smallops closed 5 years ago

smallops commented 5 years ago

问题描述 [2019-04-28 05:40:18 +0000] [3339] [DEBUG] POST /web/config/add/host 2019-04-28 05:40:18.888 3339 ERROR dnsdb_common.library.decorators [-] func: add_host, args: (), kwargs: {'host_name': 'a.a', 'host_ip': '10.110.3.211', 'group_name': 'Master'} 2019-04-28 05:40:18.888 3339 ERROR dnsdb_common.library.decorators [-] Invalid ip format: '10.110.3.211' does not appear to be an IPv4 or IPv6 address. Did you pass in a bytes (str in Python 2) instead of a unicode object? 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators Traceback (most recent call last): 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators File "/usr/local/open_dnsdb/dnsdb_common/library/decorators.py", line 84, in decorator 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators return resp(data=func(*kargs, *kwargs), is_json=is_json) 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators File "/usr/local/open_dnsdb/dnsdb_common/library/decorators.py", line 180, in _wrapper 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators ret = func(args, **kwargs) 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators File "/usr/local/open_dnsdb/dnsdb/view/web/config.py", line 102, in add_host 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators HostGroupConfDal.check_host(host_name, host_ip) 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators File "/usr/local/open_dnsdb/dnsdb_common/dal/host_group_conf.py", line 41, in check_host 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators format_ipv4(ip) 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators File "/usr/local/open_dnsdb/dnsdb_common/library/utils.py", line 71, in format_ipv4 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators raise BadParam('Invalid ip format: %s ' % e, msg_ch='ip格式错误') 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators BadParam: Invalid ip format: '10.110.3.211' does not appear to be an IPv4 or IPv6 address. Did you pass in a bytes (str in Python 2) instead of a unicode object? 2019-04-28 05:40:18.888 3339 TRACE dnsdb_common.library.decorators

修复:

vim open_dnsdb/dnsdb_common/library/utils.py 修改 def format_ipv4(ip): if '.' not in ip: raise BadParam('Invalid IPv6 format', msg_ch='IPv6格式错误') try: ip = ipaddress.ip_address(ip) except Exception as e: raise BadParam('Invalid ip format: %s ' % e, msg_ch='ip格式错误') return str(ip) 为 def format_ipv4(ip): if '.' not in ip: raise BadParam('Invalid IPv6 format', msg_ch='IPv6格式错误') try: ip = ipaddress.ip_address(ip.decode("utf8")) except Exception as e: raise BadParam('Invalid ip format: %s ' % e, msg_ch='ip格式错误') return str(ip)

LostSymbol commented 5 years ago

主分支支持python3.6+, 麻烦先升级下python版本