Fix für Alfred-Announce: OpenVPN auf 'none' eingestellt

master
root 2016-09-25 18:04:36 +02:00
parent e90f08538e
commit 882a547567
3 changed files with 41 additions and 6 deletions

5
README
View File

@ -1 +1,6 @@
Achtung, Verwendung aller Programme auf eigene Gefahr! Achtung, Verwendung aller Programme auf eigene Gefahr!
Vor Inbetriebnahme ist jedes Script daraufhin zu überprüfen,
ob noch Konfigurationseinstellungen vorgenommen werder müssen.
Z.B. muß bei ffgate-check die IP-Aresse des anzupingenden Hosts
eingetragen werden.

View File

@ -104,12 +104,14 @@ def fn_node_net_mesh_ifaces():
for iface in map(lambda line: line.split(':')[0], call(['batctl', '-m', cfg['interface'], 'if']))] for iface in map(lambda line: line.split(':')[0], call(['batctl', '-m', cfg['interface'], 'if']))]
def fn_exitvpn_provider(): def fn_exitvpn_provider():
# Wir arbeiten mit der Standardkonfigurationsdatei von OpenVPN. """
# Dort ist immer unser aktuell verwendeter Exit-Tunnel eingetragen. Wir arbeiten mit der Standardkonfigurationsdatei von OpenVPN.
# Wenn OpenVPN konfiguriert ist, aber kein Tunnel verwendet wird, Dort ist immer unser aktuell verwendeter Exit-Tunnel eingetragen.
# steht in der Konfiguration 'none'. Zur Unterscheidung wird im Wenn OpenVPN konfiguriert ist, aber kein Tunnel verwendet wird,
# Fehlerfall 'n/a' zurückgeliefert. Das kommt z.B. vor, wenn steht in der Konfiguration 'none'. Zur Unterscheidung wird im
# gar kein OpenVPN installiert ist. Fehlerfall 'n/a' zurückgeliefert. Das kommt z.B. vor, wenn
gar kein OpenVPN installiert ist.
"""
try: try:
for line in open('/etc/default/openvpn'): for line in open('/etc/default/openvpn'):
if line.startswith('AUTOSTART='): if line.startswith('AUTOSTART='):
@ -124,6 +126,8 @@ def fn_exitvpn_country():
ISO 3166 Country Code ISO 3166 Country Code
""" """
provider = fn_exitvpn_provider() provider = fn_exitvpn_provider()
if provider in ('none', 'n/a'):
return 'n/a'
for line in open('/etc/openvpn/' + provider.lower() + '.conf'): for line in open('/etc/openvpn/' + provider.lower() + '.conf'):
if line.startswith('## ExitCountry = '): if line.startswith('## ExitCountry = '):
k, v = line.split(" = ") k, v = line.split(" = ")

26
dhcpd-leases.py Executable file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env python
# Vergleiche
# dhcp-lease-list --lease /var/lib/dhcp/dhcpd.leases
import re
import datetime
def count_dhcp_leases():
regex_leaseblock = re.compile(r"lease (?P<ip>\d+\.\d+\.\d+\.\d+) {(?P<config>[\s\S]+?)\n}")
regex_properties = re.compile(r"\s+(?P<key>\S+) (?P<value>[\s\S]+?);")
leases = 0
with open("/var/lib/dhcp/dhcpd.leases") as lease_file:
macs = set()
for match in regex_leaseblock.finditer(lease_file.read()):
block = match.groupdict()
properties = {key: value for (key, value) in regex_properties.findall(block['config'])}
if properties['binding'].split(' ')[1] == 'active' and properties['ends'] != 'never':
dt_ends = datetime.datetime.strptime(properties['ends'][2:], "%Y/%m/%d %H:%M:%S")
if dt_ends > datetime.datetime.utcnow() and properties['hardware'].startswith('ethernet'):
macs.add(properties['hardware'][9:])
leases = len(macs)
return leases
if __name__ == "__main__":
print "%d unique active leases" % count_dhcp_leases()