Skip to content

Commit dc36d5c

Browse files
committed
Merge branch 'feature/v3.4.1' into develop
2 parents af90010 + f7f01ae commit dc36d5c

File tree

12 files changed

+218
-75
lines changed

12 files changed

+218
-75
lines changed

.travis.yml

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,47 +37,33 @@ script:
3737
- sudo ee site create mysql.com --mysql
3838
- sudo ee site create site1.com --wp
3939

40-
- sudo ee site create site2.com --wpsc
4140
- sudo ee site create site2.net --wp --wpsc
42-
- sudo ee site create site2.org --wpsc --wp
43-
- sudo ee site create site3.com --w3tc
4441
- sudo ee site create site3.net --wp --w3tc
45-
- sudo ee site create site3.org --w3tc --wp
4642
- sudo ee site create site4.com --wpfc
4743
- sudo ee site create site4.net --wp --wpfc
4844
- sudo ee site create site4.org --wpfc --wp
4945
- sudo ee site create site5.com --wpsubdir
50-
- sudo ee site create site5.net --wpsubdir
5146

5247
- sudo ee site create site6.com --wpsubdir --wpsc
53-
- sudo ee site create site6.net --wpsc --wpsubdir
5448
- sudo ee site create site7.com --wpsubdir --w3tc
55-
- sudo ee site create site7.net --w3tc --wpsubdir
5649
- sudo ee site create site8.com --wpsubdir --wpfc
5750
- sudo ee site create site8.net --wpfc --wpsubdir
5851
- sudo ee site create site9.com --wpsubdomain
5952

6053
- sudo ee site create site10.org --wpsubdomain --wpsc
61-
- sudo ee site create site10.in --wpsc --wpsubdomain
6254
- sudo ee site create site11.org --wpsubdomain --w3tc
63-
- sudo ee site create site11.in --w3tc --wpsubdomain
6455
- sudo ee site create site12.org --wpsubdomain --wpfc
6556
- sudo ee site create site12.in --wpfc --wpsubdomain
66-
- sudo ee site create site12.net --wpfc --wpsubdomain
6757

6858
- yes | sudo ee site create site.hhvm.pagespeed2.com --wpsc --hhvm --pagespeed
69-
- yes | sudo ee site create site.hhvm.pagespeed3.com --w3tc --hhvm --pagespeed
7059
- yes | sudo ee site create site.hhvm.pagespeed4.com --wpfc --hhvm --pagespeed
7160
- yes | sudo ee site create site.hhvm.pagespeed5.com --wpsubdir --hhvm --pagespeed
7261
- yes | sudo ee site create site.hhvm.pagespeed6.com --wpsubdir --wpsc --hhvm --pagespeed
73-
- yes | sudo ee site create site.hhvm.pagespeed7.com --wpsubdir --w3tc --hhvm --pagespeed
7462
- yes | sudo ee site create site.hhvm.pagespeed8.com --wpsubdir --wpfc --hhvm --pagespeed
7563
- yes | sudo ee site create site.hhvm.pagespeed9.com --wpsubdomain --hhvm --pagespeed
7664
- yes | sudo ee site create site.hhvm.pagespeed10.org --wpsubdomain --wpsc --hhvm --pagespeed
77-
- yes | sudo ee site create site.hhvm.pagespeed11.in --w3tc --wpsubdomain --hhvm --pagespeed
7865
- yes | sudo ee site create site.hhvm.pagespeed12.in --wpfc --wpsubdomain --hhvm --pagespeed
7966

80-
- sudo ee site create site.localtest.me --php --mysql --html
8167
- sudo ee site create site1.localtest.me --php --mysql
8268
- sudo ee site create site2.localtest.me --mysql --html
8369
- sudo ee site create site3.localtest.me --php --html
@@ -106,11 +92,9 @@ script:
10692
- yes | sudo ee site update site1.com --wpredis
10793

10894
- sudo ee site update site5.com --wpsubdir --wpfc
109-
- sudo ee site update site5.com --wpsubdir --w3tc
11095
- sudo ee site update site5.com --wpsubdir --wpsc
11196

11297
- sudo ee site update site9.com --wpsubdomain --wpfc
113-
- sudo ee site update site9.com --wpsubdomain --w3tc
11498
- sudo ee site update site9.com --wpsubdomain --wpsc
11599
- yes | sudo ee site update site.hhvm.pagespeed12.in --pagespeed=off --hhvm=off
116100
- yes | sudo ee site update site9.com --hhvm --pagespeed
@@ -123,11 +107,15 @@ script:
123107
- sudo ee site delete www.subsite.site-1.com --all --no-prompt
124108

125109
- sudo ee site delete site12.in --all --no-prompt
126-
- sudo ee site delete site12.net --no-prompt
127-
- sudo ee site delete site12.org --no-prompt
128-
- sudo ee site delete site9.com --no-prompt
129110

130-
- sudo ee stack install --mail
111+
- echo "yes" | sudo ee stack install --nginxmainline
112+
- nginx -v
113+
- sudo ee site create site-nm.localtest.me --php --mysql --html
114+
- sudo ee site update site-nm.localtest.me --wp
115+
- yes | sudo ee site update site-nm.localtest.me --hhvm --pagespeed --wpredis
116+
- sudo ee site delete site-nm.localtest.me --no-prompt
117+
118+
- travis_wait sudo ee stack install --mail
131119
- sudo ls /var/www/
132120
- sudo wp --allow-root --info
133121
- sudo bash -c 'cat /var/log/ee/ee.log'

CHANGELOG.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
v3.4.0 - Jan 6, 2015
1+
v3.4.1 - Jan 20, 2016
2+
- Fixed and update ee stack install --nginx/--nginxmainline
3+
- Fixed --letsencrypt minor issues
4+
- Fixed #665 #659
5+
- Fixed other minor bug
6+
7+
v3.4.0 - Jan 6, 2016
28
- Added Let's Encrypt support
39
- ee site create example.com [--wp/..] --letsencrypt
410
- ee site update example.com --letsencrypt=on/off/renew

ee/cli/plugins/site.py

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -753,8 +753,8 @@ def default(self):
753753
setupLetsEncrypt(self, ee_domain)
754754
httpsRedirect(self,ee_domain)
755755
Log.info(self,"Creating Cron Job for cert auto-renewal")
756-
EECron.setcron_daily(self,'ee site update {0} --le=renew --min_expiry_limit 30 2> /dev/null'.format(ee_domain),'Renew '
757-
'letsencrypt SSL cert. Set by EasyEngine')
756+
EECron.setcron_weekly(self,'ee site update --le=renew --all 2> /dev/null'.format(ee_domain),'Renew all'
757+
' letsencrypt SSL cert. Set by EasyEngine')
758758

759759
if not EEService.reload_service(self, 'nginx'):
760760
Log.error(self, "service nginx reload failed. "
@@ -828,8 +828,6 @@ class Meta:
828828
dict(help="configure letsencrypt ssl for the site",
829829
action='store' or 'store_const',
830830
choices=('on', 'off', 'renew'), const='on', nargs='?')),
831-
(['--min_expiry_limit'],
832-
dict(help="pass minimum expiry days to renew let's encrypt cert")),
833831
(['--proxy'],
834832
dict(help="update to proxy site", nargs='+')),
835833
(['--experimental'],
@@ -1090,9 +1088,15 @@ def doupdatesite(self, pargs):
10901088
pargs.pagespeed = False
10911089

10921090
#--letsencrypt=renew code goes here
1093-
if pargs.letsencrypt == "renew" and not pargs.min_expiry_limit:
1091+
if pargs.letsencrypt == "renew" and not pargs.all:
1092+
expiry_days = SSL.getExpirationDays(self,ee_domain)
1093+
min_expiry_days = 30
10941094
if check_ssl:
1095-
renewLetsEncrypt(self,ee_domain)
1095+
if (expiry_days <= min_expiry_days):
1096+
renewLetsEncrypt(self,ee_domain)
1097+
else:
1098+
Log.error(self,"More than 60 days left for certificate Expiry. Not renewing now.")
1099+
10961100
else:
10971101
Log.error(self,"Cannot RENEW ! SSL is not configured for given site .")
10981102

@@ -1103,34 +1107,31 @@ def doupdatesite(self, pargs):
11031107
Log.info(self, "Expiration DATE: " + str(SSL.getExpirationDate(self,ee_domain)))
11041108

11051109
else:
1106-
Log.warn(self, "Your cert already EXPIRED ! .PLEASE renew soon . ")
1107-
1108-
if pargs.min_expiry_limit:
1109-
if not int(pargs.min_expiry_limit)>0 or not int(pargs.min_expiry_limit)< 90:
1110-
Log.error(self,'INVALID --min_expiry_limit argument provided. Please use range 1-89 .')
1110+
Log.warn(self, "Your cert already EXPIRED !. PLEASE renew soon . ")
11111111

1112-
if not pargs.letsencrypt == "renew":
1113-
Log.error(self,'--min_expiry_limit parameter cannot be used as a standalone. Provide --le=renew')
1112+
if pargs.all and pargs.letsencrypt == "renew":
11141113

1115-
if not check_ssl:
1116-
Log.error(self,"Cannot RENEW ! SSL is not configured for given site .")
1117-
1118-
expiry_days = SSL.getExpirationDays(self,ee_domain)
1119-
min_expiry_days = int(pargs.min_expiry_limit)
1120-
if (expiry_days <= min_expiry_days):
1121-
renewLetsEncrypt(self,ee_domain)
1122-
Log.info(self, "SUCCESS: Certificate was successfully renewed For"
1123-
" https://{0}".format(ee_domain))
1124-
else:
1125-
Log.info(self, "Not renewing SSL .")
1126-
1127-
if (SSL.getExpirationDays(self,ee_domain)>0):
1128-
Log.info(self, "Your cert will expire within " + str(SSL.getExpirationDays(self,ee_domain)) + " days.")
1129-
Log.info(self, "Expiration DATE: " + str(SSL.getExpirationDate(self,ee_domain)))
1114+
if check_ssl:
1115+
expiry_days = SSL.getExpirationDays(self,ee_domain,True)
1116+
if expiry_days < 0:
1117+
return 0
1118+
min_expiry_days = 30
1119+
if (expiry_days <= min_expiry_days):
1120+
renewLetsEncrypt(self,ee_domain)
1121+
Log.info(self, "SUCCESS: Certificate was successfully renewed For"
1122+
" https://{0}".format(ee_domain))
1123+
else:
1124+
Log.info(self,"More than 60 days left for certificate Expiry. Not renewing now.\n")
11301125

1126+
if (SSL.getExpirationDays(self,ee_domain)>0):
1127+
Log.info(self, "Your cert will expire within " + str(SSL.getExpirationDays(self,ee_domain)) + " days.")
1128+
Log.info(self, "Expiration DATE: \n\n" + str(SSL.getExpirationDate(self,ee_domain)))
1129+
return 0
1130+
#else:
1131+
# Log.warn(self, "Your cert already EXPIRED ! .PLEASE renew soon . ")
11311132
else:
1132-
Log.warn(self, "Your cert already EXPIRED ! .PLEASE renew soon . ")
1133-
return 0
1133+
Log.info(self,"SSL not configured for site http://{0}".format(ee_domain))
1134+
return 0
11341135

11351136
if pargs.letsencrypt:
11361137
if pargs.letsencrypt == 'on':
@@ -1300,7 +1301,7 @@ def doupdatesite(self, pargs):
13001301

13011302
if 'proxy' in data.keys() and data['proxy']:
13021303
updateSiteInfo(self, ee_domain, stype=stype, cache=cache,
1303-
hhvm=hhvm, pagespeed=pagespeed)
1304+
hhvm=hhvm, pagespeed=pagespeed,ssl=True if check_site.is_ssl else False)
13041305
Log.info(self, "Successfully updated site"
13051306
" http://{0}".format(ee_domain))
13061307
return 0
@@ -1323,7 +1324,7 @@ def doupdatesite(self, pargs):
13231324

13241325
httpsRedirect(self,ee_domain)
13251326
Log.info(self,"Creating Cron Job for cert auto-renewal")
1326-
EECron.setcron_daily(self,'ee site update {0} --le=renew --min_expiry_limit 30 2> /dev/null'.format(ee_domain),'Renew'
1327+
EECron.setcron_weekly(self,'ee site update --le=renew --all 2> /dev/null'.format(ee_domain),'Renew all'
13271328
' letsencrypt SSL cert. Set by EasyEngine')
13281329

13291330
if not EEService.reload_service(self, 'nginx'):
@@ -1350,8 +1351,8 @@ def doupdatesite(self, pargs):
13501351
if not EEService.reload_service(self, 'nginx'):
13511352
Log.error(self, "service nginx reload failed. "
13521353
"check issues with `nginx -t` command")
1353-
Log.info(self,"Removing Cron Job set for cert auto-renewal")
1354-
EECron.remove_cron(self,'ee site update {0} --le=renew --min_expiry_limit 30 2> \/dev\/null'.format(ee_domain))
1354+
#Log.info(self,"Removing Cron Job set for cert auto-renewal")
1355+
#EECron.remove_cron(self,'ee site update {0} --le=renew --min_expiry_limit 30 2> \/dev\/null'.format(ee_domain))
13551356
Log.info(self, "Successfully Disabled SSl for Site "
13561357
" http://{0}".format(ee_domain))
13571358

@@ -1371,7 +1372,7 @@ def doupdatesite(self, pargs):
13711372
"check issues with `nginx -t` command")
13721373

13731374
updateSiteInfo(self, ee_domain, stype=stype, cache=cache,
1374-
hhvm=hhvm, pagespeed=pagespeed)
1375+
hhvm=hhvm, pagespeed=pagespeed,ssl=True if check_site.is_ssl else False)
13751376

13761377
Log.info(self, "Successfully updated site"
13771378
" http://{0}".format(ee_domain))
@@ -1589,10 +1590,10 @@ def doupdatesite(self, pargs):
15891590
db_user=data['ee_db_user'],
15901591
db_password=data['ee_db_pass'],
15911592
db_host=data['ee_db_host'], hhvm=hhvm,
1592-
pagespeed=pagespeed)
1593+
pagespeed=pagespeed,ssl=True if check_site.is_ssl else False)
15931594
else:
15941595
updateSiteInfo(self, ee_domain, stype=stype, cache=cache,
1595-
hhvm=hhvm, pagespeed=pagespeed)
1596+
hhvm=hhvm, pagespeed=pagespeed,ssl=True if check_site.is_ssl else False)
15961597
Log.info(self, "Successfully updated site"
15971598
" http://{0}".format(ee_domain))
15981599
return 0

ee/cli/plugins/site_functions.py

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,7 +1186,8 @@ def operateOnPagespeed(self, data):
11861186

11871187
def cloneLetsEncrypt(self):
11881188
letsencrypt_repo = "https://github.com/letsencrypt/letsencrypt"
1189-
1189+
if not os.path.isdir("/opt"):
1190+
EEFileUtils.mkdir(self,"/opt")
11901191
try:
11911192
Log.info(self, "Downloading {0:20}".format("LetsEncrypt"), end=' ')
11921193
EEFileUtils.chdir(self, '/opt/')
@@ -1213,7 +1214,13 @@ def setupLetsEncrypt(self, ee_domain_name):
12131214
EEFileUtils.chdir(self, '/opt/letsencrypt')
12141215
EEShellExec.cmd_exec(self, "git pull")
12151216

1216-
ssl = EEShellExec.cmd_exec(self, "./letsencrypt-auto certonly --webroot -w /var/www/{0}/htdocs/ -d {0} -d www.{0} "
1217+
if os.path.isfile("/etc/letsencrypt/renewal/{0}.conf".format(ee_domain_name)):
1218+
Log.debug(self, "LetsEncrypt SSL Certificate found for the domain {0}"
1219+
.format(ee_domain_name))
1220+
ssl= archivedCertificateHandle(self,ee_domain_name,ee_wp_email)
1221+
else:
1222+
Log.warn(self,"Please Wait while we fetch SSL Certificate for your site.\nIt may take time depending upon network.")
1223+
ssl = EEShellExec.cmd_exec(self, "./letsencrypt-auto certonly --webroot -w /var/www/{0}/htdocs/ -d {0} -d www.{0} "
12171224
.format(ee_domain_name)
12181225
+ "--email {0} --text --agree-tos".format(ee_wp_email))
12191226
if ssl:
@@ -1331,7 +1338,48 @@ def httpsRedirect(self,ee_domain_name,redirect=True):
13311338
Log.info(self, "Disabled HTTPS Force Redirection for Site "
13321339
" http://{0}".format(ee_domain_name))
13331340

1341+
def archivedCertificateHandle(self,domain,ee_wp_email):
1342+
Log.warn(self,"You already have an existing certificate for the domain requested.\n"
1343+
"(ref: /etc/letsencrypt/renewal/{0}.conf)".format(domain) +
1344+
"\nPlease select an option from below?"
1345+
"\n\t1: Reinstall existing certificate"
1346+
"\n\t2: Keep the existing certificate for now"
1347+
"\n\t3: Renew & replace the certificate (limit ~5 per 7 days)"
1348+
"")
1349+
check_prompt = input("\nType the appropriate number [1-3] or any other key to cancel: ")
1350+
if not os.path.isfile("/etc/letsencrypt/live/{0}/cert.pem".format(domain)):
1351+
Log.error(self,"/etc/letsencrypt/live/{0}/cert.pem file is missing.".format(domain))
1352+
if check_prompt == "1":
1353+
Log.info(self,"Please Wait while we reinstall SSL Certificate for your site.\nIt may take time depending upon network.")
1354+
ssl = EEShellExec.cmd_exec(self, "./letsencrypt-auto certonly --reinstall --webroot -w /var/www/{0}/htdocs/ -d {0} -d www.{0} "
1355+
.format(domain)
1356+
+ "--email {0} --text --agree-tos".format(ee_wp_email))
1357+
elif check_prompt == "2" :
1358+
Log.info(self,"Using Existing Certificate files")
1359+
if not (os.path.isfile("/etc/letsencrypt/live/{0}/fullchain.pem".format(domain)) or
1360+
os.path.isfile("/etc/letsencrypt/live/{0}/privkey.pem".format(domain))):
1361+
Log.error(self,"Certificate files not found. Skipping.\n"
1362+
"Please check if following file exist\n\t/etc/letsencrypt/live/{0}/fullchain.pem\n\t"
1363+
"/etc/letsencrypt/live/{0}/privkey.pem".format(domain))
1364+
ssl = True
1365+
1366+
elif check_prompt == "3":
1367+
Log.info(self,"Please Wait while we renew SSL Certificate for your site.\nIt may take time depending upon network.")
1368+
ssl = EEShellExec.cmd_exec(self, "./letsencrypt-auto --renew certonly --webroot -w /var/www/{0}/htdocs/ -d {0} -d www.{0} "
1369+
.format(domain)
1370+
+ "--email {0} --text --agree-tos".format(ee_wp_email))
1371+
else:
1372+
Log.error(self,"Operation cancelled by user.")
1373+
1374+
if os.path.isfile("{0}/conf/nginx/ssl.conf"
1375+
.format(domain)):
1376+
Log.info(self, "Existing ssl.conf . Backing it up ..")
1377+
EEFileUtils.mvfile(self, "/var/www/{0}/conf/nginx/ssl.conf"
1378+
.format(domain),
1379+
'/var/www/{0}/conf/nginx/ssl.conf.bak'
1380+
.format(domain))
13341381

1382+
return ssl
13351383

13361384

13371385

0 commit comments

Comments
 (0)