Skip to content

Commit fbf6f8a

Browse files
author
shital.rtcamp
committed
Merge branch 'python' of https://github.com/rtCamp/easyengine into python
2 parents b4aa0bc + a8b88c4 commit fbf6f8a

File tree

8 files changed

+166
-30
lines changed

8 files changed

+166
-30
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ before_install:
1313
- rm -rf ~/.gnupg
1414

1515
before_script:
16+
- sudo bash -c 'echo example.com > /etc/hostname'
17+
- sudo service hostname restart
1618
- sudo apt-get -qq purge mysql* graphviz*
1719
- sudo apt-get -qq autoremove
1820

ee/cli/plugins/debug.py

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
from ee.core.mysql import EEMysql
77
from ee.core.services import EEService
88
from ee.core.logging import Log
9+
from ee.cli.plugins.site_functions import logwatch
910
import os
1011
import configparser
12+
import glob
13+
import signal
1114

1215

1316
def debug_plugin_hook(app):
@@ -70,7 +73,7 @@ def debug_nginx(self):
7073
if not self.trigger_nginx:
7174
Log.info(self, "Nginx debug connection already enabled")
7275

73-
self.msg = self.msg + [" /var/log/nginx/*.error.log"]
76+
self.msg = self.msg + ["/var/log/nginx/*.error.log"]
7477

7578
# stop global debug
7679
elif not self.start and not self.app.pargs.site_name:
@@ -99,7 +102,7 @@ def debug_nginx(self):
99102
else:
100103
Log.info(self, "Debug for site allready enabled")
101104

102-
self.msg = self.msg + ['/var/www//logs/error.log'
105+
self.msg = self.msg + ['/var/www/{0}/logs/error.log'
103106
.format(self.app.pargs.site_name)]
104107

105108
else:
@@ -143,6 +146,7 @@ def debug_php(self):
143146
self.app.render((data), 'upstream.mustache', out=ee_nginx)
144147
ee_nginx.close()
145148
self.trigger_php = True
149+
self.trigger_nginx = True
146150
else:
147151
Log.info(self, "PHP debug is allready enabled")
148152

@@ -161,6 +165,7 @@ def debug_php(self):
161165
self.app.render((data), 'upstream.mustache', out=ee_nginx)
162166
ee_nginx.close()
163167
self.trigger_php = True
168+
self.trigger_nginx = True
164169
else:
165170
Log.info(self, "PHP debug is allready disabled")
166171

@@ -185,6 +190,7 @@ def debug_fpm(self):
185190
Log.info(self, "PHP5-FPM log_level = debug already setup")
186191

187192
self.msg = self.msg + ['/var/log/php5/fpm.log']
193+
188194
# PHP5-FPM stop global debug
189195
else:
190196
if EEShellExec.cmd_exec(self, "grep \"log_level = debug\" "
@@ -280,6 +286,11 @@ def debug_wp(self):
280286
.format(webroot))
281287
else:
282288
Log.info(self, "WordPress debug log already enabled")
289+
290+
self.msg = self.msg + ['/var/www/{0}/htdocs/wp-content'
291+
'/debug.log'
292+
.format(self.app.pargs.site_name)]
293+
283294
else:
284295
Log.info(self, "{0} domain not valid"
285296
.format(self.app.pargs.site_name))
@@ -374,6 +385,31 @@ def debug_rewrite(self):
374385
Log.info(self, "Nginx rewrite logs for {0} allready "
375386
" disabled".format(self.app.pargs.site_name))
376387

388+
@expose(hide=True)
389+
def signal_handler(self, signal, frame):
390+
self.start = False
391+
if self.app.pargs.nginx:
392+
self.debug_nginx()
393+
if self.app.pargs.php:
394+
self.debug_php()
395+
if self.app.pargs.fpm:
396+
self.debug_fpm()
397+
if self.app.pargs.mysql:
398+
self.debug_mysql()
399+
if self.app.pargs.wp:
400+
self.debug_wp()
401+
if self.app.pargs.rewrite:
402+
self.debug_rewrite()
403+
404+
# Reload Nginx
405+
if self.trigger_nginx:
406+
EEService.reload_service(self, 'nginx')
407+
408+
# Reload PHP
409+
if self.trigger_php:
410+
EEService.reload_service(self, 'php5-fpm')
411+
self.app.close(0)
412+
377413
@expose(hide=True)
378414
def default(self):
379415
self.start = True
@@ -425,10 +461,19 @@ def default(self):
425461
# Reload PHP
426462
if self.trigger_php:
427463
EEService.reload_service(self, 'php5-fpm')
428-
#
429-
# if len(self.msg) > 0:
430-
# self.app.log.info("Use following command to check debug logs:"
431-
# "\n{0}".format(self.msg.join()))
464+
465+
if len(self.msg) > 0:
466+
if not self.app.pargs.interactive:
467+
disp_msg = ' '.join(self.msg)
468+
Log.info(self, "Use following command to check debug logs:\n"
469+
+ Log.ENDC + "tail -f {0}".format(disp_msg))
470+
else:
471+
signal.signal(signal.SIGINT, self.signal_handler)
472+
watch_list = []
473+
for w_list in self.msg:
474+
watch_list = watch_list + glob.glob(w_list)
475+
476+
logwatch(self, watch_list)
432477

433478

434479
def load(app):

ee/cli/plugins/stack.py

Lines changed: 67 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from ee.core.mysql import EEMysql
1313
from ee.core.addswap import EESwap
1414
from ee.core.git import EEGit
15+
from ee.core.checkfqdn import check_fqdn
1516
from pynginxconfig import NginxConfig
1617
from ee.core.services import EEService
1718
import random
@@ -44,6 +45,8 @@ class Meta:
4445
dict(help='Install admin tools stack', action='store_true')),
4546
(['--mail'],
4647
dict(help='Install mail server stack', action='store_true')),
48+
(['--mailscanner'],
49+
dict(help='Install mail scanner stack', action='store_true')),
4750
(['--nginx'],
4851
dict(help='Install Nginx stack', action='store_true')),
4952
(['--php'],
@@ -82,7 +85,8 @@ def pre_pref(self, apt_packages):
8285
EERepo.add(self, repo_url=EEVariables.ee_mysql_repo)
8386
Log.debug(self, 'Adding key for {0}'
8487
.format(EEVariables.ee_mysql_repo))
85-
EERepo.add_key(self, '1C4CBDCDCD2EFD2A')
88+
EERepo.add_key(self, '1C4CBDCDCD2EFD2A',
89+
keyserver="subkeys.pgp.net")
8690
chars = ''.join(random.sample(string.ascii_letters, 8))
8791
Log.info(self, "Pre-seeding MySQL")
8892
EEShellExec.cmd_exec(self, "echo \"percona-server-server-5.6 "
@@ -466,13 +470,26 @@ def post_pref(self, apt_packages, packages):
466470
"/dovecot.pem")
467471

468472
# Custom Dovecot configuration by EasyEngine
469-
data = dict()
473+
data = dict(email=EEVariables.ee_email)
470474
Log.debug(self, "Writting configuration into file"
471475
"/etc/dovecot/conf.d/99-ee.conf ")
472476
ee_dovecot = open('/etc/dovecot/conf.d/99-ee.conf', 'w')
473477
self.app.render((data), 'dovecot.mustache', out=ee_dovecot)
474478
ee_dovecot.close()
475479

480+
EEShellExec.cmd_exec(self, "sed -i \"s/\\!include "
481+
"auth-system.conf.ext/#\\!include "
482+
"auth-system.conf.ext/\" "
483+
"/etc/dovecot/conf.d/10-auth.conf")
484+
485+
EEShellExec.cmd_exec(self, "sed -i \"s\'/etc/dovecot/"
486+
"dovecot.pem\'/etc/ssl/certs/dovecot.pem"
487+
"\'\" /etc/dovecot/conf.d/10-ssl.conf")
488+
EEShellExec.cmd_exec(self, "sed -i \"s\'/etc/dovecot/"
489+
"private/dovecot.pem\'/etc/ssl/private"
490+
"/dovecot.pem\'\" /etc/dovecot/conf.d/"
491+
"10-ssl.conf")
492+
476493
# Custom Postfix configuration needed with Dovecot
477494
# Changes in master.cf
478495
# TODO: Find alternative for sed in Python
@@ -514,14 +531,14 @@ def post_pref(self, apt_packages, packages):
514531
"= static:5000\"")
515532
EEShellExec.cmd_exec(self, "postconf -e \""
516533
" virtual_mailbox_domains = "
517-
" mysql:/etc/postfix/mysql/virtual_"
518-
" domains_maps.cf\"")
534+
"mysql:/etc/postfix/mysql/virtual_"
535+
"domains_maps.cf\"")
519536
EEShellExec.cmd_exec(self, "postconf -e \"virtual_mailbox_maps"
520537
" = mysql:/etc/postfix/mysql/virtual_"
521538
"mailbox_maps.cf\"")
522539
EEShellExec.cmd_exec(self, "postconf -e \"virtual_alias_maps "
523540
"= mysql:/etc/postfix/mysql/virtual_"
524-
" alias_maps.cf\"")
541+
"alias_maps.cf\"")
525542
EEShellExec.cmd_exec(self, "openssl req -new -x509 -days "
526543
" 3650 -nodes -subj /commonName="
527544
"{HOSTNAME}/emailAddress={EMAIL}"
@@ -534,7 +551,7 @@ def post_pref(self, apt_packages, packages):
534551
EEShellExec.cmd_exec(self, "postconf -e \"smtpd_tls_cert_file "
535552
"= /etc/ssl/certs/postfix.pem\"")
536553
EEShellExec.cmd_exec(self, "postconf -e \"smtpd_tls_key_file "
537-
" = /etc/ssl/private/postfix.pem\"")
554+
"= /etc/ssl/private/postfix.pem\"")
538555

539556
# Sieve configuration
540557
if not os.path.exists('/var/lib/dovecot/sieve/'):
@@ -561,7 +578,7 @@ def post_pref(self, apt_packages, packages):
561578
"default.sieve")
562579
EEGit.add(self, ["/etc/postfix", "/etc/dovecot"],
563580
msg="Installed mail server")
564-
EEService.reload_service(self, 'dovecot')
581+
EEService.restart_service(self, 'dovecot')
565582
EEService.reload_service(self, 'postfix')
566583

567584
if set(EEVariables.ee_mailscanner).issubset(set(apt_packages)):
@@ -575,6 +592,20 @@ def post_pref(self, apt_packages, packages):
575592
out=ee_amavis)
576593
ee_amavis.close()
577594

595+
# Amavis ViMbadmin configuration
596+
if os.path.isfile("/etc/postfix/mysql/virtual_alias_maps.cf"):
597+
vm_host = os.popen("grep hosts /etc/postfix/mysql/virtual_"
598+
"alias_maps.cf | awk \'{ print $3 }\' |"
599+
" tr -d '\\n'").read()
600+
vm_pass = os.popen("grep password /etc/postfix/mysql/"
601+
"virtual_alias_maps.cf | awk \'{ print "
602+
"$3 }\' | tr -d '\\n'").read()
603+
604+
data = dict(host=vm_host, password=vm_pass)
605+
vm_config = open('/etc/amavis/conf.d/50-user', 'w')
606+
self.app.render((data), '50-user.mustache', out=vm_config)
607+
vm_config.close()
608+
578609
# Amavis postfix configuration
579610
EEShellExec.cmd_exec(self, "postconf -e \"content_filter = "
580611
"smtp-amavis:[127.0.0.1]:10024\"")
@@ -598,7 +629,7 @@ def post_pref(self, apt_packages, packages):
598629
Log.debug(self, "Restarting clamav-daemon service")
599630
EEShellExec.cmd_exec(self, "service clamav-daemon restart")
600631
EEGit.add(self, ["/etc/amavis"], msg="Adding Amvis into Git")
601-
EEService.reload_service(self, 'dovecot')
632+
EEService.restart_service(self, 'dovecot')
602633
EEService.reload_service(self, 'postfix')
603634
EEService.reload_service(self, 'amavis')
604635

@@ -776,7 +807,13 @@ def post_pref(self, apt_packages, packages):
776807
Log.debug(self, "Creating directory "
777808
"/etc/postfix/mysql/")
778809
os.makedirs('/etc/postfix/mysql/')
779-
data = dict(password=vm_passwd, host=EEVariables.ee_mysql)
810+
811+
if EEVariables.ee_mysql_host is "localhost":
812+
data = dict(password=vm_passwd, host="127.0.0.1")
813+
else:
814+
data = dict(password=vm_passwd,
815+
host=EEVariables.ee_mysql_host)
816+
780817
vm_config = open('/etc/postfix/mysql/virtual_alias_maps.cf',
781818
'w')
782819
self.app.render((data), 'virtual_alias_maps.mustache',
@@ -817,7 +854,7 @@ def post_pref(self, apt_packages, packages):
817854
self.app.render((data), '50-user.mustache',
818855
out=vm_config)
819856
vm_config.close()
820-
EEService.reload_service(self, 'dovecot')
857+
EEService.restart_service(self, 'dovecot')
821858
EEService.reload_service(self, 'nginx')
822859
EEService.reload_service(self, 'php5-fpm')
823860
self.msg = (self.msg + ["Configure ViMbAdmin:\thttps://{0}:"
@@ -870,8 +907,8 @@ def post_pref(self, apt_packages, packages):
870907
EEShellExec.cmd_exec(self, "bash -c \"sed -i \\\"s:\$config\["
871908
"\'plugins\'\] "
872909
"= array(:\$config\['plugins'\] = "
873-
"array(\n\'sieverules\',:\\\" /var/www"
874-
"/roundcubemail/htdocs/config"
910+
"array(\\n \'sieverules\',:\\\" "
911+
"/var/www/roundcubemail/htdocs/config"
875912
"/config.inc.php\"")
876913
EEShellExec.cmd_exec(self, "echo \"\$config['sieverules_port']"
877914
"=4190;\" >> /var/www/roundcubemail"
@@ -929,7 +966,8 @@ def install(self, packages=[], apt_packages=[], disp_msg=True):
929966
(not self.app.pargs.php) and (not self.app.pargs.mysql) and
930967
(not self.app.pargs.postfix) and (not self.app.pargs.wpcli) and
931968
(not self.app.pargs.phpmyadmin) and
932-
(not self.app.pargs.adminer) and (not self.app.pargs.utils)):
969+
(not self.app.pargs.adminer) and (not self.app.pargs.utils) and
970+
(not self.app.pargs.mailscanner)):
933971
self.app.pargs.web = True
934972

935973
if self.app.pargs.web:
@@ -956,6 +994,8 @@ def install(self, packages=[], apt_packages=[], disp_msg=True):
956994
self.app.pargs.postfix = True
957995

958996
if not EEAptGet.is_installed(self, 'dovecot-core'):
997+
check_fqdn(self,
998+
os.popen("hostname -f | tr -d '\n'").read())
959999
Log.debug(self, "Setting apt_packages variable for mail")
9601000
apt_packages = apt_packages + EEVariables.ee_mail
9611001
packages = packages + [["https://github.com/opensolutions/"
@@ -971,8 +1011,11 @@ def install(self, packages=[], apt_packages=[], disp_msg=True):
9711011
"Roundcube"]]
9721012

9731013
if EEVariables.ee_ram > 1024:
974-
apt_packages = (apt_packages +
975-
EEVariables.ee_mailscanner)
1014+
self.app.pargs.mailscanner = True
1015+
else:
1016+
Log.info(self, "System RAM is less than 1GB\nMail "
1017+
"scanner packages are not going to install"
1018+
" automatically")
9761019
else:
9771020
Log.info(self, "Mail server is already installed")
9781021

@@ -1031,6 +1074,9 @@ def install(self, packages=[], apt_packages=[], disp_msg=True):
10311074
"htdocs/db/adminer/index.php",
10321075
"Adminer"]]
10331076

1077+
if self.app.pargs.mailscanner:
1078+
apt_packages = (apt_packages + EEVariables.ee_mailscanner)
1079+
10341080
if self.app.pargs.utils:
10351081
Log.debug(self, "Setting packages variable for utils")
10361082
packages = packages + [["http://phpmemcacheadmin.googlecode"
@@ -1130,6 +1176,9 @@ def remove(self):
11301176
EEMysql.execute(self, "drop database IF EXISTS vimbadmin")
11311177
EEMysql.execute(self, "drop database IF EXISTS roundcubemail")
11321178

1179+
if self.app.pargs.mailscanner:
1180+
apt_packages = (apt_packages + EEVariables.ee_mailscanner)
1181+
11331182
if self.app.pargs.nginx:
11341183
Log.debug(self, "Removing apt_packages variable of Nginx")
11351184
apt_packages = apt_packages + EEVariables.ee_nginx
@@ -1206,6 +1255,9 @@ def purge(self):
12061255
EEMysql.execute(self, "drop database IF EXISTS vimbadmin")
12071256
EEMysql.execute(self, "drop database IF EXISTS roundcubemail")
12081257

1258+
if self.app.pargs.mailscanner:
1259+
apt_packages = (apt_packages + EEVariables.ee_mailscanner)
1260+
12091261
if self.app.pargs.nginx:
12101262
Log.debug(self, "Purge apt_packages variable of Nginx")
12111263
apt_packages = apt_packages + EEVariables.ee_nginx

ee/cli/templates/50-user.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ $final_spam_destiny = D_PASS;
88

99
# We need to provide list of domains for which filtering need to be done
1010
@lookup_sql_dsn = (
11-
['DBI:mysql:database=vimbadmin;host=127.0.0.1;port=3306',
11+
['DBI:mysql:database=vimbadmin;host={{host}};port=3306',
1212
'vimbadmin',
1313
'{{password}}']);
1414

ee/cli/templates/vimbadmin.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
;; This file is licenesed Under GNU GENERAL PUBLIC LICENSE Version 3
2-
;; © Copyright 2011 - 2014 Open Source Solutions Limited, Dublin, Ireland.
2+
;; © Copyright 2011 - 2014 Open Source Solutions Limited, Dublin, Ireland.
33
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
44
;;
55
;; ViMbAdmin :: Virtual Mailbox Admin
@@ -129,7 +129,7 @@ defaults.mailbox.gid = 5000
129129
;
130130
; http://wiki2.dovecot.org/VirtualUsers/Home
131131

132-
defaults.mailbox.maildir = "maildir:/var/vmail/%d/%u""
132+
defaults.mailbox.maildir = "maildir:/var/vmail/%d/%u"
133133
defaults.mailbox.homedir = "/var/vmail/"
134134

135135
;minimum mailbox password length

ee/core/apt_repo.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,12 @@ def remove(self, repo_url=None):
4848
"--remove '{ppa_name}'"
4949
.format(ppa_name=repo_url))
5050

51-
def add_key(keyids, keyserver=None):
51+
def add_key(self, keyids, keyserver=None):
5252
if keyserver is None:
53-
EEShellExec.cmd_exec("gpg --keyserver {serv}"
54-
.format(serv=(keyserver
55-
or "hkp://keys.gnupg.net"))
53+
EEShellExec.cmd_exec(self, "gpg --keyserver {serv}"
54+
.format(serv=(keyserver or
55+
"hkp://keys.gnupg.net"))
5656
+ " --recv-keys {key}".format(key=keyids))
57-
EEShellExec.cmd_exec("gpg -a --export --armor {0}".format(keyids)
57+
EEShellExec.cmd_exec(self, "gpg -a --export --armor {0}"
58+
.format(keyids)
5859
+ " | apt-key add - ")

0 commit comments

Comments
 (0)