Open vcancy opened 6 years ago
IP变更信息通过server酱推送到微信
@vcancy 十分感谢你的PR, 下面是我的一点建议:
以后所有的feature的配置全部建议放在feature_[feature name]的section里面, 这样逻辑更清晰
[feature_serverchan]
enabled=false
sckey =
如果新功能的配置全部放在feature_xxx的section中的话, 需要修改config.py过滤掉feature_开头的section
FROM:
def get_domain_record_sections(self):
"""
Get sections other than default, which contains DomainRecord definition
:return: section list
"""
return self.parser.sections()
TO:
def get_domain_record_sections(self):
"""
Get sections other than default, which contains DomainRecord definition
:return: section list
"""
# filter out feature_sections
sections = self.parser.sections()
return [ s for s in sections if not s.lower().startswith("feature_") ]
if not self.access_id or not self.access_key:
DDNSUtils.err_and_exit("Invalid access_id or access_key in config file.")
# if we specify section "feature_serverchan", then we need read the required options
if self.parser.has_section("feature_serverchan"):
self.get_feature_serverchan_options()
def get_feature_serverchan_options():
section_name = "feature_serverchan"
try:
enabled = self.parser.getboolean(section_name, "enabled")
except ValueError as ex:
DDNSUtils.err_and_exit("Invalid 'enabled' value in feature serverchan config: {0}".format(ex))
except ConfigParser.NoOptionError as ex:
enabled = False
if enabled:
try:
sckey = self.parser.getboolean(section_name, "sckey")
except ConfigParser.NoOptionError as ex:
DDNSUtils.err_and_exit("No sckey specified")
if sckey == "":
DDNSUtils.err_and_exit("Empty serverchan sckey")
self.serverchan_enabled = enabled
self.serverchan_sckey = sckey
为效率考虑,在ddns.py里面判断self.serverchan_enabled is True的时候才去调用push_serverchan_msg()
if not remote_record:
DDNSUtils.err("Failed finding remote DomainRecord" \ DDNSUtils.err("Failed finding remote DomainRecord" \
"[{rec.subdomain}.{rec.domainname}]".format(rec=local_record)) "[{rec.subdomain}.{rec.domainname}]".format(rec=local_record))
if config.serverchan_enabled:
DDNSUtils.push_serverchan_msg(config.serverchan_sckey,"更新DNS失败:外网IP[{remote}]".format(remote=remote_record.value))
...
在push_serverchan_msg()里面需要用try...except处理错误,以防影响主功能的运行。
try:
requests.get('https://sc.ftqq.com/{}.send?text={}&desp={}'.format(sckey,title,msg)
except:
pass
建议能不能在Readme里面加入"server酱"功能的基本介绍以及各个参数代表的意思,以及简单示例配置
IP变更信息通过server酱推送到微信