my cgi script:

#!/usr/bin/env python
 
import os
import time
from string import Template
 
# Configuration – python dictionary
ddns = {
        'ns1'   :       "ns1.example.com",
        'ns2'   :       "ns2.example.com",
        'email' :       "admin@example.com",
# the ddns records
        'ebal'  :       "ebal.dyn.example.com"
}
 
# Zone Template
zone = Template('$zone.\tIN\tSOA\t$ns1\t$email\t$serial\t14400\t14400\t1209600\t86400\n\t\t\tIN\tNS\t$ns1\n\t\t\tIN\tNS\t$ns2\n$zone.\t300\tIN\tA\t$dynip\n')
 
# Zone File – must have write access
fddns="/tmp/" + ddns[os.environ['REMOTE_USER']]
 
# Write zone 
with open(fddns, 'w') as f:
    f.write( zone.substitute(zone=ddns[os.environ['REMOTE_USER']], serial=str(int(time.time())), dynip=os.environ['REMOTE_ADDR'] , ns1= ddns['ns1'], ns2= ddns['ns2'], email= ddns['email'] ) )
 
print