Index: head/security/py-certbot/pkg-message =================================================================== --- head/security/py-certbot/pkg-message (revision 541965) +++ head/security/py-certbot/pkg-message (nonexistent) @@ -1,34 +0,0 @@ -[ -{ type: install - message: <, [domain2, ... domainN]> - -NOTE: - -The client requires the ability to bind on TCP port 80 or 443 (depending -on the --preferred-challenges option used). If a server is running on that -port, it will need to be temporarily stopped so that the standalone server -can listen on that port to complete the challenge authentication process. - -For more information on the 'standalone' mode, see: - - https://certbot.eff.org/docs/using.html#standalone - -The certbot plugins to support apache and nginx certificate installation -will be made available in the following ports: - - * Apache plugin: security/py-certbot-apache - * Nginx plugin: security/py-certbot-nginx - -In order to automatically renew the certificates, add this line to -/etc/periodic.conf: - - weekly_certbot_enable="YES" -EOM -} -] Property changes on: head/security/py-certbot/pkg-message ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/security/py-certbot/Makefile =================================================================== --- head/security/py-certbot/Makefile (revision 541965) +++ head/security/py-certbot/Makefile (revision 541966) @@ -1,77 +1,77 @@ # Created by: Kubilay Kocak # $FreeBSD$ PORTNAME= certbot PORTVERSION= ${ACME_VERSION} -PORTREVISION= 1 +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= security python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= python@FreeBSD.org COMMENT= Let's Encrypt client #' LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE.txt RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}acme>=${ACME_VERSION},1:security/py-acme@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}configargparse>=0.9.3:devel/py-configargparse@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}configobj>0:devel/py-configobj@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}cryptography>=1.2.3:security/py-cryptography@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}distro>=1.0.1:sysutils/py-distro@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}josepy>=1.1.0:security/py-josepy@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}parsedatetime>=1.3:devel/py-parsedatetime@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}openssl>0:security/py-openssl@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyrfc3339>0:devel/py-pyrfc3339@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytz>0:devel/py-pytz@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}zope.component>0:devel/py-zope.component@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}zope.interface>0:devel/py-zope.interface@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR} USES= python USE_PYTHON= autoplist concurrent distutils NO_ARCH= yes -SUB_FILES= 500.certbot +SUB_FILES= 500.certbot pkg-message PLIST_FILES= etc/periodic/weekly/500.certbot-${PYTHON_VER} SUB_LIST= PYTHON_VER=${PYTHON_VER} OPTIONS_DEFINE= MANPAGES OPTIONS_DEFAULT= MANPAGES MANPAGES_BUILD_DEPENDS= ${RUN_DEPENDS} \ ${PY_SPHINX} \ ${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}repoze.sphinx.autointerface>0:devel/py-repoze.sphinx.autointerface@${PY_FLAVOR} \ MANPAGES_PLIST_FILES= share/man/man1/certbot.1.gz \ share/man/man7/certbot.7.gz post-patch: @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \ ${WRKSRC}/certbot/compat/misc.py \ ${WRKSRC}/tests/cli_test.py post-build-MANPAGES-on: # Avoid gmake / ${DO_MAKE_BUILD} -C ${WRKSRC}/docs man (cd ${WRKSRC}/docs && \ sphinx-build-${PYTHON_VER} -N -b man . _build/man) post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/weekly ${INSTALL_SCRIPT} ${WRKDIR}/500.certbot \ ${STAGEDIR}${PREFIX}/etc/periodic/weekly/500.certbot-${PYTHON_VER} post-install-MANPAGES-on: ${INSTALL_MAN} ${WRKSRC}/docs/_build/man/certbot.1 \ ${STAGEDIR}${PREFIX}/share/man/man1 ${INSTALL_MAN} ${WRKSRC}/docs/_build/man/certbot.7 \ ${STAGEDIR}${PREFIX}/share/man/man7 do-test: @cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test .include "${.CURDIR}/../py-acme/version.mk" .include Index: head/security/py-certbot/files/500.certbot.in =================================================================== --- head/security/py-certbot/files/500.certbot.in (revision 541965) +++ head/security/py-certbot/files/500.certbot.in (revision 541966) @@ -1,53 +1,83 @@ #!/bin/sh # # $FreeBSD$ # # Automatically renew Let's Encrypt certificates each week # # Add the following lines to /etc/periodic.conf: # # weekly_certbot_enable (bool): Set to "NO" by default -# weekly_certbot_service (str): If defined, certbot will try to -# shutdown this this service before -# renewing the certificate, and restart -# it afterwards. For example, set to -# "nginx" or "apache24" +# weekly_certbot_service (str): If defined, certbot will try to shutdown this +# service before renewing the certificate, and restart it afterwards. +# For example, set to "nginx" or "apache24". This is usually used to avoid +# conflict with the standalone plugin webserver. +# If any of pre_hook or post_hook is set, this behavior is disabled. +# weekly_certbot_pre_hook (str): Command to be run in a shell before obtaining +# any certificates. +# weekly_certbot_post_hook (str): Command to be run in a shell after +# attempting to obtain/renew certificates. +# An example to reload nginx after renewing all certificates. +# weekly_certbot_post_hook="service nginx onereload" +# weekly_certbot_deploy_hook (str): Command to be run in a shell once for each +# successfully issued certificate. +# weekly_certbot_custom_args (str): Any other misc arguments for the renewal +# See certbot -h renew for full list +# An example to force renewal for certificates not due yet +# weekly_certbot_custom_args="--force-renewal" # If there is a global system configuration file, suck it in. # if [ -r /etc/defaults/periodic.conf ] then . /etc/defaults/periodic.conf source_periodic_confs fi case "$weekly_certbot_enable" in [Yy][Ee][Ss]) echo echo "Renewing Let's Encrypt certificates:" PRE_HOOK="" POST_HOOK="" - if [ -n "$weekly_certbot_service" ] + DEPLOY_HOOK="" + + if [ -n "$weekly_certbot_service" ] && \ + [ -z "$weekly_certbot_pre_hook" ] && [ -z "$weekly_certbot_post_hook" ]; then - if service "$weekly_certbot_service" onestatus - then - PRE_HOOK="service $weekly_certbot_service onestop" - POST_HOOK="service $weekly_certbot_service onestart" - fi + if service "$weekly_certbot_service" onestatus + then + PRE_HOOK="--pre-hook 'service $weekly_certbot_service onestop'" + POST_HOOK="--post-hook 'service $weekly_certbot_service onestart'" + fi + else + if [ -n "$weekly_certbot_pre_hook" ]; then + PRE_HOOK="--pre-hook '$weekly_certbot_pre_hook'" + fi + + if [ -n "$weekly_certbot_post_hook" ]; then + POST_HOOK="--post-hook '$weekly_certbot_post_hook'" + fi fi + if [ -n "$weekly_certbot_deploy_hook" ]; then + DEPLOY_HOOK="--deploy-hook '$weekly_certbot_deploy_hook'" + fi + anticongestion - if %%LOCALBASE%%/bin/certbot-%%PYTHON_VER%% renew --pre-hook "$PRE_HOOK" \ - --post-hook "$POST_HOOK" \ - --no-random-sleep-on-renew + + eval %%LOCALBASE%%/bin/certbot-%%PYTHON_VER%% renew "$PRE_HOOK" "$POST_HOOK" \ + "$DEPLOY_HOOK" "$weekly_certbot_custom_args" --no-random-sleep-on-renew + if [ $? -gt 0 ] then - rc=0 + echo + echo "Errors were reported when renewing Let's Encrypt certificate(s)." + rc=3 else - rc=1 + rc=0 fi ;; *) rc=0;; esac exit $rc Index: head/security/py-certbot/files/pkg-message.in =================================================================== --- head/security/py-certbot/files/pkg-message.in (nonexistent) +++ head/security/py-certbot/files/pkg-message.in (revision 541966) @@ -0,0 +1,56 @@ +[ +{ type: install + message: <, [domain2, ... domainN]> + +NOTE: + +The client requires the ability to bind on TCP port 80 or 443 (depending +on the --preferred-challenges option used). If a server is running on that +port, it will need to be temporarily stopped so that the standalone server +can listen on that port to complete the challenge authentication process. + +For more information on the 'standalone' mode, see: + + https://certbot.eff.org/docs/using.html#standalone + +The certbot plugins to support apache and nginx certificate installation +will be made available in the following ports: + + * Apache plugin: security/py-certbot-apache + * Nginx plugin: security/py-certbot-nginx + +In order to automatically renew the certificates, add this line to +/etc/periodic.conf: + + weekly_certbot_enable="YES" + +More config details in the certbot periodic script: + + %%LOCALBASE%%/etc/periodic/weekly/500.certbot-%%PYTHON_VER%% + +EOM +} +{ + type: upgrade + maximum_version: "1.5.0_2,1" + message: <