FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python-dnspod-ddns/ddns.py at master · eeload/python-dnspod-ddns · GitHub
eeload
/
python-dnspod-ddns
Public
forked from
geekan/python-dnspod-ddns
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
python-dnspod-ddns
/
ddns.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
70 lines (56 loc) · 1.99 KB
Breadcrumbs
python-dnspod-ddns
/
ddns.py
Copy path
File metadata and controls
70 lines (56 loc) · 1.99 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- coding: utf-8 -*-
import
urllib2
import
os
import
json
import
requests
import
time
import
daemon
from
config
import
target
,
public_data
headers
=
{
'UserAgent'
:
'NAIVE DDNS Client/1.0.0 (naive@aliyun.com)'
}
name
=
target
.
split
(
'.'
)[
0
]
domain
=
'.'
.
join
(
target
.
split
(
'.'
)[
-
2
:])
domain_list_api
=
'https://dnsapi.cn/Domain.List'
record_modify_api
=
'https://dnsapi.cn/Record.Modify'
record_list_api
=
'https://dnsapi.cn/Record.List'
ip
=
''
# At first we dont get the ip in record, so get it once,
# and then we dont need it if ip has not been changed.
def
try_modify_record_if_ip_changed
():
global
ip
ipinfo
=
json
.
loads
(
os
.
popen
(
'curl http://ipinfo.io'
).
read
())
if
ip
==
ipinfo
[
'ip'
]:
return
r
=
requests
.
post
(
domain_list_api
,
data
=
public_data
,
headers
=
headers
)
domains
=
{
i
[
'punycode'
]:
i
[
'id'
]
for
i
in
r
.
json
()[
'domains'
]}
record_list_data
=
public_data
.
copy
()
record_list_data
[
'domain_id'
]
=
domains
[
domain
]
r
=
requests
.
post
(
record_list_api
,
data
=
record_list_data
,
headers
=
headers
)
records
=
{
i
[
'name'
]:
i
[
'id'
]
for
i
in
r
.
json
()[
'records'
]}
records_ip
=
{
i
[
'name'
]:
i
[
'value'
]
for
i
in
r
.
json
()[
'records'
]}
if
records_ip
[
name
]
==
ipinfo
[
'ip'
]:
print
(
'ip no change since last start.'
)
ip
=
ipinfo
[
'ip'
]
return
record_modify_data
=
record_list_data
.
copy
()
record_modify_data
[
'record_id'
]
=
records
[
name
]
record_modify_data
[
'record_type'
]
=
'A'
record_modify_data
[
'record_line'
]
=
u'默认'
record_modify_data
[
'value'
]
=
ipinfo
[
'ip'
]
record_modify_data
[
'mx'
]
=
5
record_modify_data
[
'sub_domain'
]
=
name
r
=
requests
.
post
(
record_modify_api
,
data
=
record_modify_data
,
headers
=
headers
)
print
(
r
.
json
())
print
(
'new ip: '
+
ipinfo
[
'ip'
]
+
' old ip:'
+
ip
)
ip
=
ipinfo
[
'ip'
]
def
main
():
while
1
:
try
:
try_modify_record_if_ip_changed
()
except
:
print
(
"exception."
)
time
.
sleep
(
30
)
if
__name__
==
'__main__'
:
with
daemon
.
DaemonContext
():
main
()
Back
|
FazBrowse Home
|
New Git URL