first commit
This commit is contained in:
commit
4db1260dc5
103
dedyn.yml
Normal file
103
dedyn.yml
Normal file
@ -0,0 +1,103 @@
|
||||
---
|
||||
- name: desec dyndns
|
||||
hosts: all
|
||||
tasks:
|
||||
- name: Needed software
|
||||
apt:
|
||||
name:
|
||||
- curl
|
||||
update_cache: no
|
||||
install_recommends: no
|
||||
|
||||
- name: /usr/local/sbin/dedyn.sh
|
||||
blockinfile:
|
||||
path: /usr/local/sbin/dedyn.sh
|
||||
mode: "0500"
|
||||
owner: root
|
||||
group: root
|
||||
create: yes
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
. /etc/bash/gaboshlib.include
|
||||
g_lockfile
|
||||
|
||||
# deDyn/deSEC-Settings
|
||||
[ -f /usr/local/etc/dedyn.conf ] || exit 0
|
||||
. /usr/local/etc/dedyn.conf
|
||||
|
||||
dedyndns="ns2.desec.org. ns1.desec.io."
|
||||
|
||||
|
||||
# Get IP(s)
|
||||
if ! [ -z $doipv6 ]
|
||||
then
|
||||
# IPv6 (and maybe IPv4)
|
||||
ipv6=$(curl https://checkipv6.dedyn.io/ 2>/dev/null)
|
||||
g_valid_ipv6 "$ipv6" || g_echo_error_exit "Didn't receive a vaild IPv6-address: $ipv6"
|
||||
fi
|
||||
if ! echo $doipv6 | grep -q "only"
|
||||
then
|
||||
# IPv4 and IPv6
|
||||
ipv4=$(curl https://checkipv4.dedyn.io/ 2>/dev/null)
|
||||
g_valid_ipv4 "$ipv4" || g_echo_error_exit "Didn't receive a vaild IPv4-address: $ipv4"
|
||||
fi
|
||||
|
||||
# Get Updateserver and string
|
||||
updatesrv=update.dedyn.io
|
||||
if echo $doipv6 | grep -q "only"
|
||||
then
|
||||
# Only IPv6
|
||||
updatesrv=update6.dedyn.io
|
||||
updatestring="myipv6=${ipv6}"
|
||||
elif ! [ -z $doipv6 ]
|
||||
then
|
||||
# IPv4 and IPv6
|
||||
updatestring="myipv4=${ipv4}&myipv6=${ipv6}"
|
||||
else
|
||||
updatestring="myipv4=${ipv4}"
|
||||
fi
|
||||
|
||||
for dynaddr in ${dedynhosts}
|
||||
do
|
||||
dynaddr="${dynaddr}.dedyn.io"
|
||||
host ${dynaddr} ${dedyndns} >"$g_tmp/${dynaddr}"
|
||||
for ip in ${ipv4} ${ipv6}
|
||||
do
|
||||
if egrep -q "${ip}" $g_tmp/${dynaddr}
|
||||
then
|
||||
g_echo_ok "DynDNS IP ${ip} for ${dynaddr} up2date"
|
||||
else
|
||||
g_echo_ok "Renewing DynDNS IP ${ip} for ${dynaddr}"
|
||||
# if curl -i "https://${updatesrv}/?hostname=${dynaddr}&myipv4=${ipv4}" --header "Authorization: Token ${dedynpw}"
|
||||
# if curl -i "https://${updatesrv}/?hostname=${dynaddr}&myipv4=${ipv4}&myipv6=${ipv6}" --header "Authorization: Token ${dedynpw}"
|
||||
if curl -i "https://${updatesrv}/?hostname=${dynaddr}&${updatestring}" --header "Authorization: Token ${dedynpw}"
|
||||
then
|
||||
g_echo_ok "DynDNS IP ${ip} for ${dynaddr} renewed"
|
||||
else
|
||||
g_echo_error "DynDNS IP ${ip} for ${dynaddr}"
|
||||
fi
|
||||
sleep $(shuf -i 61-120 -n 1)
|
||||
fi
|
||||
done
|
||||
done
|
||||
backup: yes
|
||||
validate: /bin/bash -n %s
|
||||
|
||||
- name: /usr/local/sbin/dedyn.sh shebang
|
||||
lineinfile:
|
||||
path: /usr/local/sbin/dedyn.sh
|
||||
insertbefore: BOF
|
||||
line: "#!/bin/bash"
|
||||
|
||||
- name: /etc/cron.d/dedyn_local
|
||||
blockinfile:
|
||||
path: /etc/cron.d/dedyn_local
|
||||
create: yes
|
||||
mode: 0644
|
||||
owner: root
|
||||
group: root
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
*/30 * * * * root /usr/local/sbin/dedyn.sh >/dev/null 2>&1
|
||||
backup: yes
|
||||
|
Loading…
Reference in New Issue
Block a user