@ -1,4 +1,3 @@
# -*- python -*-
# -*- coding: utf-8 -*-
#
# Copyright (C) 2007, 2008 by Jan Dittberner.
@ -18,9 +17,10 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Version: $Id: client.py 1101 2007-02-28 21:15:20Z jan $
# Version: $Id$
import datetime , os
import datetime
import os
from gnuviechadmin . exceptions import *
from settings import *
@ -28,6 +28,7 @@ from BackendTo import Record, Domain
from BackendEntity import BackendEntity
from BackendEntityHandler import BackendEntityHandler
class DomainEntity ( BackendEntity ) :
""" Entity class for DNS domains. """
@ -130,12 +131,12 @@ class DomainEntity(BackendEntity):
template = get_template ( config . get ( ' domain ' , ' htdocstemplate ' ) ,
tpl )
template = template . substitute ( {
' domain ' : self . delegateto . name } )
' domain ' : self . delegateto . name } )
self . write_to_file ( os . path . join ( vhostdir , tpl ) , template )
cmd = ' chown -R %(username)s : %(group)s " %(dir)s " ' % {
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' dir ' : vhostdir }
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' dir ' : vhostdir }
self . sucommand ( cmd )
def _create_log_dir ( self ) :
@ -164,8 +165,8 @@ class DomainEntity(BackendEntity):
template = get_template ( config . get ( ' domain ' , ' conftemplates ' ) ,
config . get ( ' domain ' , ' statshtaccesstemplate ' ) )
template = template . substitute ( {
' domain ' : self . delegateto . name ,
' userfile ' : authfile } )
' domain ' : self . delegateto . name ,
' userfile ' : authfile } )
self . write_to_file ( os . path . join ( self . _get_stats_dir ( ) ,
' .htaccess ' ) , template )
@ -178,10 +179,10 @@ class DomainEntity(BackendEntity):
template = get_template ( config . get ( ' domain ' , ' conftemplates ' ) ,
config . get ( ' domain ' , ' modlogantemplate ' ) )
template = template . substitute ( {
' statsdir ' : self . _get_stats_dir ( ) ,
' logdir ' : self . _get_log_dir ( ) ,
' domain ' : self . delegateto . name ,
' domainesc ' : self . delegateto . name . replace ( ' . ' , ' \ . ' ) } )
' statsdir ' : self . _get_stats_dir ( ) ,
' logdir ' : self . _get_log_dir ( ) ,
' domain ' : self . delegateto . name ,
' domainesc ' : self . delegateto . name . replace ( ' . ' , ' \ . ' ) } )
self . write_to_file ( os . path . join ( modlogandir ,
self . delegateto . name + ' .conf ' ) ,
template )
@ -190,11 +191,11 @@ class DomainEntity(BackendEntity):
template = get_template ( config . get ( ' domain ' , ' conftemplates ' ) ,
config . get ( ' domain ' , ' apachetemplate ' ) )
template = template . substitute ( {
' ipaddr ' : self . ipaddr ,
' statsdir ' : self . _get_stats_dir ( ) ,
' logdir ' : self . _get_log_dir ( ) ,
' domain ' : self . delegateto . name ,
' docroot ' : self . _get_vhost_dir ( ) } )
' ipaddr ' : self . ipaddr ,
' statsdir ' : self . _get_stats_dir ( ) ,
' logdir ' : self . _get_log_dir ( ) ,
' domain ' : self . delegateto . name ,
' docroot ' : self . _get_vhost_dir ( ) } )
self . write_to_file ( os . path . join ( config . get ( ' domain ' , ' sitesdir ' ) ,
self . delegateto . name ) , template )
@ -202,14 +203,14 @@ class DomainEntity(BackendEntity):
template = get_template ( config . get ( ' common ' , ' mailtemplates ' ) ,
config . get ( ' domain ' , ' create.mail ' ) )
text = template . substitute ( {
' sysuser ' : self . delegateto . sysuser . username ,
' domain ' : self . delegateto . name ,
' docroot ' : self . _get_vhost_dir ( ) ,
' statspass ' : self . delegateto . sysuser . clearpass } )
' sysuser ' : self . delegateto . sysuser . username ,
' domain ' : self . delegateto . name ,
' docroot ' : self . _get_vhost_dir ( ) ,
' statspass ' : self . delegateto . sysuser . clearpass } )
template = get_template_string ( config . get ( ' domain ' , ' create_subject ' ) )
subject = template . substitute ( {
' domain ' : self . delegateto . name } )
self . send_mail ( subject , text )
' domain ' : self . delegateto . name } )
self . send_mail ( subject , text )
def create_hook ( self , session ) :
self . delegateto . records . append ( Record (
@ -223,7 +224,7 @@ class DomainEntity(BackendEntity):
name = self . delegateto . name , type = ' NS ' , content = self . ns2 ,
ttl = config . getint ( ' domain ' , ' defaultttl ' ) ) )
self . delegateto . records . append ( Record (
name = self . delegateto . name , type = ' MX ' , content = self . mx ,
name = self . delegateto . name , type = ' MX ' , content = self . mx ,
ttl = config . getint ( ' domain ' , ' defaultttl ' ) ,
prio = config . getint ( ' domain ' , ' defaultmxprio ' ) ) )
self . delegateto . records . append ( Record (
@ -258,65 +259,69 @@ class DomainEntity(BackendEntity):
def _archive_stats_dir ( self ) :
archive = os . path . join ( self . delegateto . sysuser . home ,
' %(domain)s -stats.tar.gz ' % {
' domain ' : self . delegateto . name } )
cmd = ' tar czf " %(archive)s " --directory= " %(statsbase)s " " %(statsdir)s " ' % {
' archive ' : archive ,
' statsbase ' : config . get ( ' domain ' , ' statspath ' ) ,
' statsdir ' : self . delegateto . name }
' domain ' : self . delegateto . name } )
cmd = ' tar czf " %(archive)s " --directory= " %(statsbase)s " ' + \
' " %(statsdir)s " ' % {
' archive ' : archive ,
' statsbase ' : config . get ( ' domain ' , ' statspath ' ) ,
' statsdir ' : self . delegateto . name }
self . sucommand ( cmd )
cmd = ' rm -r " %(statsdir)s " ' % {
' statsdir ' : self . _get_stats_dir ( ) }
' statsdir ' : self . _get_stats_dir ( ) }
self . sucommand ( cmd )
cmd = ' chown " %(username)s : %(group)s " " %(archive)s " ' % {
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' archive ' : archive }
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' archive ' : archive }
self . sucommand ( cmd )
def _archive_log_dir ( self ) :
archive = os . path . join ( self . delegateto . sysuser . home ,
' %(domain)s -logs.tar.gz ' % {
' domain ' : self . delegateto . name } )
cmd = ' tar czf " %(archive)s " --directory= " %(logbase)s " " %(logdir)s " ' % {
' archive ' : archive ,
' logbase ' : config . get ( ' domain ' , ' logpath ' ) ,
' logdir ' : self . delegateto . name }
' domain ' : self . delegateto . name } )
cmd = ' tar czf " %(archive)s " --directory= " %(logbase)s " ' + \
' " %(logdir)s " ' % {
' archive ' : archive ,
' logbase ' : config . get ( ' domain ' , ' logpath ' ) ,
' logdir ' : self . delegateto . name }
self . sucommand ( cmd )
cmd = ' rm -r " %(logdir)s " ' % {
' logdir ' : self . _get_log_dir ( ) }
' logdir ' : self . _get_log_dir ( ) }
self . sucommand ( cmd )
cmd = ' chown " %(username)s : %(group)s " " %(archive)s " ' % {
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' archive ' : archive }
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' archive ' : archive }
self . sucommand ( cmd )
def _archive_vhost_dir ( self ) :
archive = os . path . join ( self . delegateto . sysuser . home ,
' %(domain)s -vhost.tar.gz ' % {
' domain ' : self . delegateto . name } )
cmd = ' tar czf " %(archive)s " --directory= " %(vhostbase)s " " %(vhostdir)s " ' % {
' archive ' : archive ,
' vhostbase ' : self . delegateto . sysuser . home ,
' vhostdir ' : self . delegateto . name }
' domain ' : self . delegateto . name } )
cmd = ' tar czf " %(archive)s " --directory= " %(vhostbase)s " ' + \
' " %(vhostdir)s " ' % {
' archive ' : archive ,
' vhostbase ' : self . delegateto . sysuser . home ,
' vhostdir ' : self . delegateto . name }
self . sucommand ( cmd )
cmd = ' rm -r " %(vhostdir)s " ' % {
' vhostdir ' : os . path . join ( self . delegateto . sysuser . home ,
' vhostdir ' : os . path . join ( self . delegateto . sysuser . home ,
self . delegateto . name ) }
self . sucommand ( cmd )
cmd = ' chown " %(username)s : %(group)s " " %(archive)s " ' % {
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' archive ' : archive }
' username ' : self . delegateto . sysuser . username ,
' group ' : config . get ( ' sysuser ' , ' defaultgroup ' ) ,
' archive ' : archive }
self . sucommand ( cmd )
def delete_hook ( self , session ) :
def delete_hook ( self , session ) :
self . _delete_apache_conf ( )
self . _delete_stats_conf ( )
self . _archive_stats_dir ( )
self . _archive_log_dir ( )
self . _archive_vhost_dir ( )
class DomainHandler ( BackendEntityHandler ) :
""" BackendEntityHandler for Domain entities. """