Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPV4 DDNS 上报 错误 #35

Closed
KiritakeKumi opened this issue Jan 4, 2019 · 10 comments
Closed

IPV4 DDNS 上报 错误 #35

KiritakeKumi opened this issue Jan 4, 2019 · 10 comments
Labels

Comments

@KiritakeKumi
Copy link

您好,在启动后出现如下错误:
b'{"success":false,"errors":[{"code":1004,"message":"DNS Validation Error","error_chain":[{"code":9005,"message":"Content for A record is invalid. Must be a valid IPv4 address"}]}],"messages":[],"result":null}'

用的是API的公网IP那挡

请问是否为Bug,以及其是否有解决方案?谢谢!!!

@NewFuture
Copy link
Owner

看看上报的IP是啥?
然后打开这个确认一下 http://v4.ipv6-test.com/api/myip.php

@KiritakeKumi
Copy link
Author

看看上报的IP是啥?
然后打开这个确认一下 http://v4.ipv6-test.com/api/myip.php

已确认.两个IP是相同的
LOG:

com(A) ==> b'1*.67' [via DIRECT]
b'{"success":false,"errors":[{"code":1004,"message":"DNS Validation Error","error_chain":[{"code":9005,"message":"Content for A record is invalid. Must be a valid IPv4 address"}]}],"messages":[],"result":null}'

@zhanggangbz
Copy link

(A) ==> b'10.10.10.10' [via DIRECT]
使用的是ddns.exe,2.4.4
输出信息如上显示,应该是IP取错了不应该有b和'

@KiritakeKumi
Copy link
Author

(A) ==> b'10.10.10.10' [via DIRECT]
使用的是ddns.exe,2.4.4
输出信息如上显示,应该是IP取错了不应该有b和'

请问有什么建议的解决方案嘛??

@zhanggangbz
Copy link

zhanggangbz commented Jan 11, 2019

@pukanxi
才看到你的消息
我是直接用python运行了
刚把这个exe研究了下,发现用2.4.4版本的exe解析出现这种问题时配置文件中index4设置如下
"index4": "public",
你应该也是
把这个修改位
"index4": "default",
就能正常获取IP,exe也就可以正常运行了

@NewFuture
作者代码中:
DDNS/util/ip.py 43到54行

def public_v4(url="http://v4.ipv6-test.com/api/myip.php"):  # 公网IPV4地址
    try:
        return urlopen(url, timeout=60).read()
    except Exception as e:
        logger.error(e)


def public_v6(url="http://v6.ipv6-test.com/api/myip.php"):  # 公网IPV6地址
    try:
        return urlopen(url, timeout=60).read()
    except Exception as e:
        logger.error(e)

应该是这里直接return这个有问题,我猜应该像DDNS/dns/cloudflare.py第61行一样decode('utf8')一下

@zhanggangbz
Copy link

@pukanxi
我电脑是直接拨号上网的且拿到的也是公网IP,所以昨天直接改成default是可行的
如果过路由器应该就不行了

@NewFuture
Copy link
Owner

应该是这里直接return这个有问题,我猜应该像DDNS/dns/cloudflare.py第61行一样decode('utf8')一下

可能是编码问题,我晚上看看

@zwpaper
Copy link

zwpaper commented Jan 17, 2019

run.py 改成下面就可以:

(domain, record_type, kw['ip'].decode("utf-8") , proxy))

@NewFuture
Copy link
Owner

run.py 改成下面就可以:

(domain, record_type, kw['ip'].decode("utf-8") , proxy))

DDNS/util/ip.py
嗯,改这个文件比较合适,这个地方应该处理一下兼容

NewFuture added a commit that referenced this issue Jan 19, 2019
@NewFuture NewFuture added the bug label Jan 19, 2019
@NewFuture
Copy link
Owner

fixed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants