Merge pull request #22 from kuba/setuptools-script

Setuptools magic
This commit is contained in:
James Kasten
2014-11-19 11:39:33 -08:00
8 changed files with 155 additions and 137 deletions
+3
View File
@@ -1,2 +1,5 @@
*.pyc
*.egg-info
build/
dist/
m3
+6 -1
View File
@@ -1 +1,6 @@
recursive-include letsencrypt/ *
recursive-include letsencrypt *.json
recursive-include letsencrypt *.sh
recursive-include letsencrypt *.conf
recursive-include letsencrypt *.cnf
include letsencrypt/client/ca_offerings
include letsencrypt/client/.ca_offerings
+8 -6
View File
@@ -8,16 +8,18 @@ Apache, though we will be expanding it to other platforms.
## Running the demo code on Ubuntu
`sudo apt-get install python-pip python-crypto python-dev python-jsonschema python-augeas gcc python-m2crypto python-dialog`
`sudo apt-get install python python-setuptools python-dev python-augeas gcc`
`sudo pip install jose`
`python setup.py install --user`
`sudo ./letsencrypt.py`
`sudo ./letsencrypt.py` (or `~/.local/bin/letsencrypt`)
Hint: on Debian testing/unstable, python-dialog is unavailable and you may
need to do `sudo pip install python2-pythondialog` (lets-encrypt does not yet
handle debian unstable's Apache2 conf layout, either...)
Note, that letsencrypt does not yet handle Debian unstable's Apache2
conf layout.
## Developing
`python setup.py develop --user`
## Command line usage
-121
View File
@@ -1,121 +0,0 @@
#!/usr/bin/env python
# This file parses the command line and calls the appropriate functions
import getopt
import os
import sys
from letsencrypt.client import client
from letsencrypt.client import display
from letsencrypt.client.CONFIG import ACME_SERVER
def main():
# Check to make sure user is root
if not os.geteuid() == 0:
sys.exit("\nOnly root can run letsencrypt.\n")
# Parse options
try:
opts, args = getopt.getopt(sys.argv[1:], "", ["text", "test",
"view-checkpoints",
"privkey=", "csr=",
"server=", "rollback=",
"revoke", "agree-eula",
"redirect",
"no-redirect",
"help"])
except getopt.GetoptError as err:
# print help info and exit
print str(err)
usage()
sys.exit(2)
server = None
csr = None
privkey = None
curses = True
names = args
flag_revoke = False
redirect = None
eula = False
for o, a in opts:
if o == "--text":
curses = False
elif o == "--csr":
csr = a
elif o == "--privkey":
privkey = a
elif o == "--server":
server = a
elif o == "--rollback":
from letsencrypt.client import configurator, logger
logger.setLogger(logger.FileLogger(sys.stdout))
logger.setLogLevel(logger.INFO)
config = configurator.Configurator()
config.rollback_checkpoints(a)
config.restart()
sys.exit(0)
elif o == "--view-checkpoints":
from letsencrypt.client import configurator, logger
logger.setLogger(logger.FileLogger(sys.stdout))
logger.setLogLevel(logger.INFO)
config = configurator.Configurator()
config.display_checkpoints()
sys.exit(0)
elif o == "--revoke":
# Do Stuff
flag_revoke = True
elif o == "--redirect":
redirect = True
elif o == "--no-redirect":
redirect = False
elif o == "--agree-eula":
eula = True
elif o == "--help":
print_options()
elif o == "--test":
#put any temporary tests in here
continue
if curses:
display.setDisplay(display.NcursesDisplay())
else:
display.setDisplay(display.FileDisplay(sys.stdout))
if not server:
server = ACME_SERVER
c = client.Client(server, csr, privkey, curses)
if flag_revoke:
c.list_certs_keys()
else:
c.authenticate(args, redirect, eula)
def usage():
s = "Available options: --text, --privkey=, --csr=, --server=, "
s += "--rollback=, --view-checkpoints, --revoke, --agree-eula, --redirect,"
s += " --no-redirect, --help"
print s
def print_options():
print "\nsudo ./letsencrypt.py (default authentication mode using pythondialog)"
options = [ "privkey= (specify privatekey file to use to generate the certificate)",
"csr= (Use a specific CSR. If this is specified, privkey " +
"must also be specified with the correct private key for the CSR)",
"server (list the ACME CA server address)",
"revoke (revoke a certificate)",
"view-checkpoints (Used to view available checkpoints and " +
"see what configuration changes have been made)",
"rollback=X (Revert the configuration X number of checkpoints)",
"redirect (Automatically redirect all HTTP traffic to " +
"HTTPS for the newly authenticated vhost)",
"no-redirect (Skip the HTTPS redirect question, " +
"allowing both HTTP and HTTPS)",
"agree-eula (Skip the end user agreement screen)" ]
for o in options:
print " --%s" % o
sys.exit(0)
if __name__ == "__main__":
main()
+1
View File
@@ -0,0 +1 @@
letsencrypt/scripts/main.py
+3 -1
View File
@@ -4,8 +4,10 @@
# validate JSON objects as ACME protocol messages
import json, jsonschema
import pkg_resources
schemata = {schema: json.load(open("letsencrypt/client/schemata/%s.json" % schema)) for schema in [
schemata = {schema: json.load(open(pkg_resources.resource_filename(
__name__, "schemata/%s.json" % schema))) for schema in [
"authorization", "authorizationRequest", "certificate", "certificateRequest",
"challenge", "challengeRequest", "defer", "error", "revocation",
"revocationRequest", "statusRequest"]
View File
+121
View File
@@ -0,0 +1,121 @@
#!/usr/bin/env python
# This file parses the command line and calls the appropriate functions
import getopt
import os
import sys
from letsencrypt.client import client
from letsencrypt.client import display
from letsencrypt.client.CONFIG import ACME_SERVER
def main():
# Check to make sure user is root
if not os.geteuid() == 0:
sys.exit("\nOnly root can run letsencrypt.\n")
# Parse options
try:
opts, args = getopt.getopt(sys.argv[1:], "", ["text", "test",
"view-checkpoints",
"privkey=", "csr=",
"server=", "rollback=",
"revoke", "agree-eula",
"redirect",
"no-redirect",
"help"])
except getopt.GetoptError as err:
# print help info and exit
print str(err)
usage()
sys.exit(2)
server = None
csr = None
privkey = None
curses = True
names = args
flag_revoke = False
redirect = None
eula = False
for o, a in opts:
if o == "--text":
curses = False
elif o == "--csr":
csr = a
elif o == "--privkey":
privkey = a
elif o == "--server":
server = a
elif o == "--rollback":
from letsencrypt.client import configurator, logger
logger.setLogger(logger.FileLogger(sys.stdout))
logger.setLogLevel(logger.INFO)
config = configurator.Configurator()
config.rollback_checkpoints(a)
config.restart()
sys.exit(0)
elif o == "--view-checkpoints":
from letsencrypt.client import configurator, logger
logger.setLogger(logger.FileLogger(sys.stdout))
logger.setLogLevel(logger.INFO)
config = configurator.Configurator()
config.display_checkpoints()
sys.exit(0)
elif o == "--revoke":
# Do Stuff
flag_revoke = True
elif o == "--redirect":
redirect = True
elif o == "--no-redirect":
redirect = False
elif o == "--agree-eula":
eula = True
elif o == "--help":
print_options()
elif o == "--test":
#put any temporary tests in here
continue
if curses:
display.setDisplay(display.NcursesDisplay())
else:
display.setDisplay(display.FileDisplay(sys.stdout))
if not server:
server = ACME_SERVER
c = client.Client(server, csr, privkey, curses)
if flag_revoke:
c.list_certs_keys()
else:
c.authenticate(args, redirect, eula)
def usage():
s = "Available options: --text, --privkey=, --csr=, --server=, "
s += "--rollback=, --view-checkpoints, --revoke, --agree-eula, --redirect,"
s += " --no-redirect, --help"
print s
def print_options():
print "\nsudo ./letsencrypt.py (default authentication mode using pythondialog)"
options = [ "privkey= (specify privatekey file to use to generate the certificate)",
"csr= (Use a specific CSR. If this is specified, privkey " +
"must also be specified with the correct private key for the CSR)",
"server (list the ACME CA server address)",
"revoke (revoke a certificate)",
"view-checkpoints (Used to view available checkpoints and " +
"see what configuration changes have been made)",
"rollback=X (Revert the configuration X number of checkpoints)",
"redirect (Automatically redirect all HTTP traffic to " +
"HTTPS for the newly authenticated vhost)",
"no-redirect (Skip the HTTPS redirect question, " +
"allowing both HTTP and HTTPS)",
"agree-eula (Skip the end user agreement screen)" ]
for o in options:
print " --%s" % o
sys.exit(0)
if __name__ == "__main__":
main()
+6 -1
View File
@@ -1,5 +1,7 @@
#!/usr/bin/env python
from setuptools import setup
setup(
name="letsencrypt",
version="0.1",
@@ -10,6 +12,7 @@ setup(
packages=[
'letsencrypt',
'letsencrypt.client',
'letsencrypt.scripts',
],
install_requires=[
#'dialog',
@@ -23,7 +26,9 @@ setup(
],
entry_points={
'console_scripts': [
'letsencrypt = letsencrypt.client.client:authenticate'
'letsencrypt = letsencrypt.scripts.main:main'
]
},
zip_safe=False,
include_package_data=True,
)