o
    ȷe~                     @   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)notify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	   X/var/www/ideatree/venv/lib/python3.10/site-packages/boto/pyami/installers/ubuntu/trac.pyinstall0   s   




zTrac.installc           
      C   sR  t jdd }|r|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 ]4}|d dkr|d"|  |d# |d$ |d% |d&||f  |d'|  |d  qt jdd(}t|D ]$}|d dkr@|d)|  |d* |d+||f  |d  q|d, |d- |d. |d/ t jdd}|rl|d0 |d1|  t jdd2}|r}|d3|  t jdd4}	|	r|d5|	  |d6 |	  | 
d7|d   | 
d8 d S d S )9Nr   hostname.z/etc/apache2/sites-available/%sr   wzNameVirtualHost *:80
SSLCertificateFilezNameVirtualHost *:443

z<VirtualHost *:80>
z	ServerAdmin %s
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   domaindomain_info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   )&boto.pyami.installers.ubuntu.installerr   r   r   r   r	   r	   r	   r
   <module>   s   