aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2014-03-17 19:10:00 +0100
committerMarius Halden <marius.h@lden.org>2014-03-17 19:10:00 +0100
commitd398793a759acc1d8bf2484f3533d0e9744bd429 (patch)
treece453af337ad0fb94aacb6b445ce01cd7e1f717d
parent144427894721bb54baa08a7584e850277681c71b (diff)
downloadDDNS.py-d398793a759acc1d8bf2484f3533d0e9744bd429.tar.gz
DDNS.py-d398793a759acc1d8bf2484f3533d0e9744bd429.tar.bz2
DDNS.py-d398793a759acc1d8bf2484f3533d0e9744bd429.tar.xz
Chaged where the configfile is defined and how the config is used
-rw-r--r--ddns.wsgi13
-rw-r--r--ddns/__init__.py7
-rw-r--r--ddns/auth.py4
-rw-r--r--ddns/backend/dnsupdate.py11
-rw-r--r--ddns/cfg_parser.py8
-rw-r--r--ddns/frontend/dyn_com.py4
-rwxr-xr-xrun.py13
7 files changed, 38 insertions, 22 deletions
diff --git a/ddns.wsgi b/ddns.wsgi
index 9e5292c..4e11d0c 100644
--- a/ddns.wsgi
+++ b/ddns.wsgi
@@ -1,4 +1,15 @@
#import sys
#sys.path.insert(0, '/path/to/ddns/dir/')
-#from main import app as application
+
+import os
+import ddns.cfg_parser
+
+if os.environ.get('DDNS_CFG_PATH'):
+ cfg_file = os.environ['DDNS_CFG_PATH']
+else:
+ cfg_file = os.path.dirname(os.path.realpath(__file__)) + '/ddns.cfg'
+
+ddns.cfg_parser.cfg_file = cfg_file
+ddns.cfg_parser.read_config()
+
from ddns import app as application
diff --git a/ddns/__init__.py b/ddns/__init__.py
index b0de21e..7e4bc7b 100644
--- a/ddns/__init__.py
+++ b/ddns/__init__.py
@@ -1,8 +1,8 @@
-from flask import Flask, request, Response
+from flask import Flask
import ddns.cfg_parser
-cfg_parser.cfg_file = '/home/marius/ddns/ddns.cfg'
-cfg_parser.read_config()
+#cfg_parser.cfg_file = 'ddns.cfg'
+#cfg_parser.read_config()
app = Flask(__name__)
@@ -11,6 +11,5 @@ def index():
app.add_url_rule('/', 'index', index)
-#from ddns.frontend.dyn_com import dyn_com
import ddns.frontend.dyn_com
app.add_url_rule('/nic/update', 'ddns.frontend.dyn_com.dyn_com', ddns.frontend.dyn_com.dyn_com)
diff --git a/ddns/auth.py b/ddns/auth.py
index 6624aad..030d239 100644
--- a/ddns/auth.py
+++ b/ddns/auth.py
@@ -4,10 +4,8 @@ from functools import wraps
import ddns.cfg_parser
import hash
-auth_cfg = ddns.cfg_parser.cfg['users']
-
def check_auth(username, password):
- for user in auth_cfg:
+ for user in ddns.cfg_parser.cfg.get('users'):
if username == user['username'] and \
hash.hash(user['hash'], password) == user['password']:
return True
diff --git a/ddns/backend/dnsupdate.py b/ddns/backend/dnsupdate.py
index cd1dee2..650759f 100644
--- a/ddns/backend/dnsupdate.py
+++ b/ddns/backend/dnsupdate.py
@@ -5,7 +5,6 @@ import dns.update
import dns.resolver
import ddns.cfg_parser
-zone_cfg = None
keyring = None
def resolve(domain, rtype='A'):
@@ -23,7 +22,7 @@ def check_ip(domain, ip, rtype='A'):
return False
def get_zone(name):
- for zone in zone_cfg:
+ for zone in ddns.cfg_parser.cfg.get('zones'):
if zone['name'] == name:
return zone
return None
@@ -53,6 +52,10 @@ def get_hash_method(hash_name):
return dns.tsig.default_algorithm
def update_dns(zone, hostname, ip, ttl=300):
+ global keyring
+ if not keyring:
+ keyring = gen_keyring(ddns.cfg_parser.cfg.get('dnskeys'))
+
zone = get_zone(zone)
dns_srv = zone['ns']
@@ -68,7 +71,3 @@ def update_dns(zone, hostname, ip, ttl=300):
# if not check_ip(hostname+'.'+zone['name'], ip, rtype):
update.replace(hostname.encode('ascii'), ttl, rtype, ip.strNormal(0))
res = dns.query.tcp(update, dns_srv)
-
-zone_cfg = ddns.cfg_parser.cfg['zones']
-keyring = gen_keyring(ddns.cfg_parser.cfg['dnskeys'])
-
diff --git a/ddns/cfg_parser.py b/ddns/cfg_parser.py
index e8134cd..8defb71 100644
--- a/ddns/cfg_parser.py
+++ b/ddns/cfg_parser.py
@@ -9,9 +9,9 @@ def read_config():
global cfg
if not cfg_file or not os.path.exists(cfg_file):
- return None
+ cfg = None
+ return
with io.open(cfg_file, 'r') as fp:
- _cfg = yaml.load(fp)
-
- cfg = _cfg
+ cfg = yaml.load(fp)
+ fp.close()
diff --git a/ddns/frontend/dyn_com.py b/ddns/frontend/dyn_com.py
index bbd61e5..5ef6e11 100644
--- a/ddns/frontend/dyn_com.py
+++ b/ddns/frontend/dyn_com.py
@@ -1,6 +1,6 @@
-from flask import request, Response
-import ddns.backend.dnsupdate
+from flask import request
from IPy import IP
+import ddns.backend.dnsupdate
import ddns.auth
import ddns.cfg_parser
diff --git a/run.py b/run.py
index dccdad1..ed0f53a 100755
--- a/run.py
+++ b/run.py
@@ -1,5 +1,14 @@
#!/usr/bin/env python
import ddns
+import os
+import ddns.cfg_parser
-if __name__ == '__main__':
- ddns.app.run(host="0.0.0.0", debug=True)
+if os.environ.get('DDNS_CFG_PATH'):
+ cfg_file = os.environ['DDNS_CFG_PATH']
+else:
+ cfg_file = os.path.dirname(os.path.realpath(__file__)) + '/ddns.cfg'
+
+ddns.cfg_parser.cfg_file = cfg_file
+ddns.cfg_parser.read_config()
+
+ddns.app.run(debug=True)