diff options
| author | Marius Halden <marius.h@lden.org> | 2014-03-17 19:10:00 +0100 | 
|---|---|---|
| committer | Marius Halden <marius.h@lden.org> | 2014-03-17 19:10:00 +0100 | 
| commit | d398793a759acc1d8bf2484f3533d0e9744bd429 (patch) | |
| tree | ce453af337ad0fb94aacb6b445ce01cd7e1f717d | |
| parent | 144427894721bb54baa08a7584e850277681c71b (diff) | |
| download | DDNS.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.wsgi | 13 | ||||
| -rw-r--r-- | ddns/__init__.py | 7 | ||||
| -rw-r--r-- | ddns/auth.py | 4 | ||||
| -rw-r--r-- | ddns/backend/dnsupdate.py | 11 | ||||
| -rw-r--r-- | ddns/cfg_parser.py | 8 | ||||
| -rw-r--r-- | ddns/frontend/dyn_com.py | 4 | ||||
| -rwxr-xr-x | run.py | 13 | 
7 files changed, 38 insertions, 22 deletions
@@ -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 @@ -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)  | 
