#!/usr/bin/perl

use CGI;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

$query = new CGI;
$stringpassed=$ENV{'QUERY_STRING'};
$stringpassed=~s/\+/ /g;

use DBI;

$platform = "mysql";
$database = "smspaysolutions_db";
$host = "general-purpose-db-all-clients-do-user-2736765-0.b.db.ondigitalocean.com";
$port = "25060";
$user = "smspay_user";
$pw = 'vYs29+H!3U?xJDFqhMbX';
$dsn = "dbi:$platform:$database:$host:$port:mysql_ssl=1";
$connect = DBI->connect($dsn, $user, $pw) or die &mysqlConnectionError;

sub mysqlConnectionError{
	print "Content-Type: text/html\n\n";
	print "Error connecting to database: $DBI::errstr";
	exit;
}


my $time = time;

while (1) {
        sleep 10;
        &run;
}


sub run{	
	chdir("/etc/apache2/sites-available/");
	
	$myquery{'get_services'} = "SELECT id, sms_domain FROM services WHERE sms_domain_active = '0' LIMIT 0,1";
	$query_handle{'get_services'} = $connect->prepare($myquery{'get_services'});
	$query_handle{'get_services'}->execute();
	$query_handle{'get_services'}->bind_columns(undef, \$service{'id'}, \$service{'sms_domain'});
	while($query_handle{'get_services'}->fetch()) {

		system "cp -a /var/www/html/sites_sms/template/. /var/www/html/sites_sms/$service{'sms_domain'}/";

		my $filename = "$service{'sms_domain'}.conf";
		open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
		print $fh "<VirtualHost *:80>
ServerAdmin ian\@hennesseehosting.com
ServerName $service{'sms_domain'}
DocumentRoot /var/www/html/sites_sms/$service{'sms_domain'}/
ErrorLog \${APACHE_LOG_DIR}/error.log
CustomLog \${APACHE_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ /var/www/html/sites_sms/$service{'sms_domain'}/cgi-bin/
RewriteEngine on
RewriteCond \%{SERVER_NAME} =$service{'sms_domain'}
RewriteRule ^ https://\%{SERVER_NAME}\%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
";
		close $fh;
		
		system "a2ensite $service{'sms_domain'}.conf";
		system "service apache2 reload";

		use Expect;
		my $command = "certbot --apache -d $service{'sms_domain'}";
		my $exp = Expect->spawn($command, @params);
		$exp->send("2\n");
		$exp->soft_close();

		$myquery{'update'} = "UPDATE services SET sms_domain_active = '1' WHERE id = ?";
		$query_handle{'update'} = $connect->prepare($myquery{'update'});
		$query_handle{'update'}->execute("$service{'id'}");
	}

}
