get pub ips from api, place them in cache
This commit is contained in:
parent
60abc4e12e
commit
dd8e14478c
4 changed files with 53 additions and 54 deletions
|
@ -5,10 +5,9 @@ import requests
|
||||||
import json
|
import json
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
dburl = 'https://www.datapoint.bg/vmanager/slavetables/1'
|
|
||||||
clientiface = 'ens19'
|
clientiface = 'ens19'
|
||||||
|
|
||||||
workscriptpath = '/root/fr-workscripts/'
|
workscriptpath = '/root/fr-workscripts/'
|
||||||
|
|
||||||
###
|
###
|
||||||
|
@ -278,58 +277,29 @@ dhcpd -4 -cf /root/fr-vlanconf/v{0}.dhconf -lf /root/fr-vlanconf/v{0}.dhlease -p
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def setpubips():
|
def setpubips():
|
||||||
db_result = requests.get(dburl, headers={"content-type": "application/json"}, timeout=30 )
|
rr = open('/root/pubip.cache', 'r').read()
|
||||||
proxjson = db_result.json()
|
cache = json.loads(rr)
|
||||||
for key, value in proxjson['addresses'].items():
|
data = ''
|
||||||
pass
|
for ip, vlan in cache.items():
|
||||||
#data += '#ip: ' + value['ipv4'] + ' mac:' + value['mac'] + '\n'
|
print('ip: ' + ip)
|
||||||
#data += 'iptables -P FORWARD DROP\n'
|
print('vlan: ' + vlan)
|
||||||
#data += 'iptables -P FORWARD -j ACCEPT -i '
|
print(' ')
|
||||||
|
data += """
|
||||||
data = """
|
ip link del vtap{1}
|
||||||
ip link del vtap107
|
ip link add vtap{1} link $INET_IFACE type macvlan
|
||||||
ip link add vtap107 link $INET_IFACE type macvlan
|
ip addr add {0}/24 dev vtap{1}
|
||||||
ip addr add 87.120.110.42/24 dev vtap107
|
ip link set dev vtap{1} up
|
||||||
ip link set dev vtap107 up
|
$IPT -t nat -A PREROUTING -d {0} -j DNAT --to-destination 10.0.{1}.10
|
||||||
$IPT -t nat -A PREROUTING -d 87.120.110.42 -j DNAT --to-destination 10.0.107.10
|
$IPT -t nat -A POSTROUTING -s 10.0.{1}.10 -j SNAT --to-source {0}
|
||||||
$IPT -t nat -A POSTROUTING -s 10.0.107.10 -j SNAT --to-source 87.120.110.42
|
""".format(ip, vlan)
|
||||||
|
|
||||||
ip link del vtap120
|
|
||||||
ip link add vtap120 link $INET_IFACE type macvlan
|
|
||||||
ip addr add 87.120.110.43/24 dev vtap120
|
|
||||||
ip link set dev vtap120 up
|
|
||||||
$IPT -t nat -A PREROUTING -d 87.120.110.43 -j DNAT --to-destination 10.0.120.10
|
|
||||||
$IPT -t nat -A POSTROUTING -s 10.0.120.10 -j SNAT --to-source 87.120.110.43
|
|
||||||
|
|
||||||
ip link del vtap121
|
|
||||||
ip link add vtap121 link $INET_IFACE type macvlan
|
|
||||||
ip addr add 87.120.110.44/24 dev vtap121
|
|
||||||
ip link set dev vtap121 up
|
|
||||||
$IPT -t nat -A PREROUTING -d 87.120.110.44 -j DNAT --to-destination 10.0.121.10
|
|
||||||
$IPT -t nat -A POSTROUTING -s 10.0.121.10 -j SNAT --to-source 87.120.110.44
|
|
||||||
|
|
||||||
ip link del vtap122
|
|
||||||
ip link add vtap122 link $INET_IFACE type macvlan
|
|
||||||
ip addr add 87.120.110.41/24 dev vtap122
|
|
||||||
ip link set dev vtap122 up
|
|
||||||
$IPT -t nat -A PREROUTING -d 87.120.110.41 -j DNAT --to-destination 10.0.122.10
|
|
||||||
$IPT -t nat -A POSTROUTING -s 10.0.122.10 -j SNAT --to-source 87.120.110.41
|
|
||||||
|
|
||||||
ip link del vtap140
|
|
||||||
ip link add vtap140 link $INET_IFACE type macvlan
|
|
||||||
ip addr add 87.120.110.40/24 dev vtap140
|
|
||||||
ip link set dev vtap140 up
|
|
||||||
$IPT -t nat -A PREROUTING -d 87.120.110.40 -j DNAT --to-destination 10.0.140.10
|
|
||||||
$IPT -t nat -A POSTROUTING -s 10.0.140.10 -j SNAT --to-source 87.120.110.40
|
|
||||||
|
|
||||||
"""
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def routerinit():
|
|
||||||
bashexec('fwfconfig', initfw())
|
|
||||||
bashexec('vlfconfig', setvlans(clientiface))
|
|
||||||
bashexec('ipfconfig', setpubips())
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
routerinit()
|
if sys.argv[1] == 'init':
|
||||||
|
bashexec('fwfconfig', initfw())
|
||||||
|
bashexec('vlfconfig', setvlans(clientiface))
|
||||||
|
|
||||||
|
if sys.argv[1] == 'apply':
|
||||||
|
print(setpubips())
|
||||||
|
#bashexec('ipfconfig', setpubips())
|
||||||
|
|
||||||
|
|
1
interfaces
Symbolic link
1
interfaces
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/etc/network/interfaces
|
|
@ -11,4 +11,6 @@ ip addr add $TRANSPORT_IP dev $PUBIF
|
||||||
sleep 5
|
sleep 5
|
||||||
ip route add default via $TRANSPORT_GW
|
ip route add default via $TRANSPORT_GW
|
||||||
|
|
||||||
python3 /root/frankenrouter/frankenrouter.py
|
python3 /root/frankenrouter/frankenrouter.py init
|
||||||
|
python3 /root/frankenrouter/frankenrouter.py apply
|
||||||
|
|
||||||
|
|
26
updateipcache.py
Normal file
26
updateipcache.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# downloads and update the ip cache.
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
|
||||||
|
slave_name = 'lexx'
|
||||||
|
|
||||||
|
api_url = 'https://www.datapoint.bg/vmanager/slavetables'
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
try:
|
||||||
|
data = {"passphrase": "batkataisthebest1", "slavename": str(slave_name)}
|
||||||
|
apireq = requests.post(api_url, headers={'Content-Type': 'application/json'}, data=json.dumps(data), timeout=30)
|
||||||
|
result = apireq.json()
|
||||||
|
except:
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
if result['status'] == 'ok':
|
||||||
|
del result['status']
|
||||||
|
wr = open('/root/pubip.cache', 'w')
|
||||||
|
wr.write(json.dumps(result))
|
||||||
|
wr.close()
|
||||||
|
print('public ip cache updated')
|
||||||
|
|
Loading…
Reference in a new issue