U
    W¨+d~  ã                   @   s0   d dl mZ d dlZd dlZG dd„ deƒZdS )é    )Ú	InstallerNc                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTraca6  
    Install Trac and DAV-SVN
    Sets up a Vhost pointing to [Trac]->home
    Using the config parameter [Trac]->hostname
    Sets up a trac environment for every directory found under [Trac]->data_dir

    [Trac]
    name = My Foo Server
    hostname = trac.foo.com
    home = /mnt/sites/trac
    data_dir = /mnt/trac
    svn_dir = /mnt/subversion
    server_admin = root@foo.com
    sdb_auth_domain = users
    # Optional
    SSLCertificateFile = /mnt/ssl/foo.crt
    SSLCertificateKeyFile = /mnt/ssl/foo.key
    SSLCertificateChainFile = /mnt/ssl/FooCA.crt

    c                 C   s`   | j dddd | j dddd |   d¡ |   d¡ |   d¡ |   d¡ |   d	¡ |   d
¡ d S )Nzapt-get -y install tracT)ÚnotifyZexit_on_errorz!apt-get -y install libapache2-svnza2enmod sslza2enmod mod_pythonza2enmod dav_svnza2enmod rewriteztouch /var/log/boto.logzchmod a+w /var/log/boto.log)Úrun©Úself© r   úE/tmp/pip-unpacked-wheel-dlxw5sjy/boto/pyami/installers/ubuntu/trac.pyÚinstall0   s    




zTrac.installc           
      C   sP  t j dd¡ ¡ }|rL| d¡}td|d  dƒ}| d¡ t j dd¡r¸| d	¡ | d
¡ | dt j dd¡ ¡  ¡ | d| ¡ | d¡ | d| ¡ | d¡ | d¡ n
| d
¡ | dt j dd¡ ¡  ¡ | d| ¡ | dt j dd¡ ¡  ¡ | dt j dd¡ ¡  ¡ | d¡ | d¡ | d¡ | d¡ | d¡ | d¡ | d¡ | dt j dd¡ ¡ | d¡ | d¡ | d ¡ t j dd!¡}t |¡D ]j}|d dkr¸| d"| ¡ | d#¡ | d$¡ | d%¡ | d&||f ¡ | d'| ¡ | d ¡ q¸t j dd(¡}t |¡D ]H}|d dkr<| d)| ¡ | d*¡ | d+||f ¡ | d ¡ q<| d,¡ | d-¡ | d.¡ | d/¡ t j dd¡}|rÚ| d0¡ | d1| ¡ t j dd2¡}|rü| d3| ¡ t j dd4¡}	|	r| d5|	 ¡ | d6¡ | 	¡  |  
d7|d  ¡ |  
d8¡ d S )9Nr   ÚhostnameÚ.z/etc/apache2/sites-available/%sr   ÚwzNameVirtualHost *:80
ÚSSLCertificateFilezNameVirtualHost *:443

z<VirtualHost *:80>
z	ServerAdmin %s
Zserver_adminz	ServerName %s
z	RewriteEngine On
z!	RewriteRule ^(.*)$ https://%s$1
z</VirtualHost>

z<VirtualHost *:443>
z	DocumentRoot %s
Úhomez	<Directory %s>
z,		Options FollowSymLinks Indexes MultiViews
z		AllowOverride All
z		Order allow,deny
z		allow from all
z	</Directory>
z	<Location />
z		AuthType Basic
z		AuthName "%s"
Únamez		Require valid-user
z,		AuthUserFile /mnt/apache/passwd/passwords
z	</Location>
Údata_dirz	<Location /trac/%s>
z		SetHandler mod_python
z%		PythonInterpreter main_interpreter
z,		PythonHandler trac.web.modpython_frontend
z		PythonOption TracEnv %s/%s
z$		PythonOption TracUriRoot /trac/%s
Úsvn_dirz	<Location /svn/%s>
z
		DAV svn
z		SVNPath %s/%s
z%	ErrorLog /var/log/apache2/error.log
z	LogLevel warn
z0	CustomLog /var/log/apache2/access.log combined
z	ServerSignature On
z	SSLEngine On
z	SSLCertificateFile %s
ÚSSLCertificateKeyFilez	SSLCertificateKeyFile %s
ÚSSLCertificateChainFilez	SSLCertificateChainFile %s
z</VirtualHost>
za2ensite %sz /etc/init.d/apache2 force-reload)ÚbotoÚconfigÚgetÚstripÚsplitÚopenÚwriteÚosÚlistdirÚcloser   )
r   ÚdomainZdomain_infoZcnfr   Úenvr   r   r   r   r   r   r	   Úsetup_vhost<   s‚    


























zTrac.setup_vhostc                 C   s   |   ¡  |  ¡  d S )N)r
   r!   r   r   r   r	   Úmain‰   s    z	Trac.mainN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r!   r"   r   r   r   r	   r      s   Mr   )Z&boto.pyami.installers.ubuntu.installerr   r   r   r   r   r   r   r	   Ú<module>   s   