mirror of https://github.com/PurpleI2P/pyseeder
l-n-s
8 years ago
6 changed files with 202 additions and 138 deletions
@ -0,0 +1,20 @@ |
|||||||
|
Copyright (c) 2016-2017 Darknet Villain |
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining |
||||||
|
a copy of this software and associated documentation files (the |
||||||
|
"Software"), to deal in the Software without restriction, including |
||||||
|
without limitation the rights to use, copy, modify, merge, publish, |
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to |
||||||
|
permit persons to whom the Software is furnished to do so, subject to |
||||||
|
the following conditions: |
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be |
||||||
|
included in all copies or substantial portions of the Software. |
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@ -1,128 +0,0 @@ |
|||||||
#! /usr/bin/env python3 |
|
||||||
import os |
|
||||||
import sys |
|
||||||
import argparse |
|
||||||
import logging |
|
||||||
|
|
||||||
import pyseeder.transport |
|
||||||
import pyseeder.actions |
|
||||||
from pyseeder.utils import PyseederException |
|
||||||
|
|
||||||
log = logging.getLogger(__name__) |
|
||||||
|
|
||||||
def main(): |
|
||||||
parser = argparse.ArgumentParser() |
|
||||||
parser.add_argument('--loglevel', default=logging.INFO, help="Log level", |
|
||||||
choices=[logging.CRITICAL, logging.ERROR, logging.WARNING, |
|
||||||
logging.INFO, logging.DEBUG]) |
|
||||||
|
|
||||||
subparsers = parser.add_subparsers(title="actions", |
|
||||||
help="Command to execute") |
|
||||||
|
|
||||||
kg_parser = subparsers.add_parser( |
|
||||||
"keygen", |
|
||||||
description="Generates keypair for your reseed", |
|
||||||
usage=""" |
|
||||||
%(prog)s --cert data/user_at_mail.i2p.crt \\ |
|
||||||
--private-key data/priv_key.pem --signer-id user@mail.i2p""" |
|
||||||
) |
|
||||||
kg_parser.add_argument("--signer-id", required=True, |
|
||||||
help="Identifier of certificate (example: user@mail.i2p)") |
|
||||||
kg_parser.add_argument("--private-key", default="data/priv_key.pem", |
|
||||||
help="RSA private key (default: data/priv_key.pem)") |
|
||||||
kg_parser.add_argument("--cert", default=None, |
|
||||||
help="Certificate (example: data/user_at_mail.i2p.crt)") |
|
||||||
kg_parser.add_argument("--no-encryption", action="store_true", |
|
||||||
help="Disable private key encryption") |
|
||||||
kg_parser.set_defaults(func=pyseeder.actions.keygen) |
|
||||||
|
|
||||||
|
|
||||||
rs_parser = subparsers.add_parser( |
|
||||||
"reseed", |
|
||||||
description="Creates su3 reseed file", |
|
||||||
usage=""" |
|
||||||
echo $YOUR_PASSWORD | %(prog)s --netdb /path/to/netDb \\ |
|
||||||
--private-key data/priv_key.pem --outfile output/i2pseeds.su3 \\ |
|
||||||
--signer-id user@mail.i2p""" |
|
||||||
) |
|
||||||
rs_parser.add_argument("--signer-id", required=True, |
|
||||||
help="Identifier of certificate (example: user@mail.i2p)") |
|
||||||
rs_parser.add_argument("--private-key", default="data/priv_key.pem", |
|
||||||
help="RSA private key (default: data/priv_key.pem)") |
|
||||||
rs_parser.add_argument("-o", "--outfile", default="output/i2pseeds.su3", |
|
||||||
help="Output file (default: output/i2pseeds.su3)") |
|
||||||
rs_parser.add_argument("--netdb", required=True, |
|
||||||
help="Path to netDb folder (example: ~/.i2pd/netDb)") |
|
||||||
rs_parser.add_argument("--no-encryption", action="store_true", |
|
||||||
help="Disable private key encryption") |
|
||||||
rs_parser.set_defaults(func=pyseeder.actions.reseed) |
|
||||||
|
|
||||||
|
|
||||||
tpull_parser = subparsers.add_parser( |
|
||||||
"transport.pull", |
|
||||||
description="Download su3 file from random reseed server", |
|
||||||
usage=""" |
|
||||||
%(prog)s --urls https://reseed.i2p-projekt.de/ \\ |
|
||||||
https://reseed.i2p.vzaws.com:8443/ \\ |
|
||||||
--outfile output/i2pseeds.su3""" |
|
||||||
) |
|
||||||
tpull_parser.add_argument("--urls", default=pyseeder.transport.RESEED_URLS, |
|
||||||
nargs="*", help="""Reseed URLs separated by space, default are |
|
||||||
mainline I2P (like https://reseed.i2p-projekt.de/)""") |
|
||||||
tpull_parser.add_argument("-o", "--outfile", default="output/i2pseeds.su3", |
|
||||||
help="Output file (default: output/i2pseeds.su3)") |
|
||||||
tpull_parser.set_defaults(func=pyseeder.actions.transport_pull) |
|
||||||
|
|
||||||
|
|
||||||
tpush_parser = subparsers.add_parser( |
|
||||||
"transport.push", |
|
||||||
description="Upload su3 file with transports", |
|
||||||
usage="%(prog)s --config transports.ini --file output/i2pseeds.su3" |
|
||||||
) |
|
||||||
tpush_parser.add_argument("--config", default="transports.ini", |
|
||||||
help="Transports config file (default: transports.ini)") |
|
||||||
tpush_parser.add_argument("-f", "--file", default="output/i2pseeds.su3", |
|
||||||
help=".su3 file (default: output/i2pseeds.su3)") |
|
||||||
tpush_parser.set_defaults(func=pyseeder.actions.transport_push) |
|
||||||
|
|
||||||
|
|
||||||
serve_parser = subparsers.add_parser( |
|
||||||
"serve", |
|
||||||
description="""Run HTTPS reseeding server |
|
||||||
(in production use nginx instead, please). |
|
||||||
Will ask for a private key password""", |
|
||||||
usage="""%(prog)s --port 8443 --host 127.0.0.1 \\ |
|
||||||
--private-key data/priv_key.pem \\ |
|
||||||
--cert data/user_at_mail.i2p.crt \\ |
|
||||||
--file output/i2pseeds.su3""" |
|
||||||
) |
|
||||||
serve_parser.add_argument("--host", default="0.0.0.0", |
|
||||||
help="Host listening for clients (default: 0.0.0.0)") |
|
||||||
serve_parser.add_argument("--port", default=8443, |
|
||||||
help="Port listening for clients (default: 8443)") |
|
||||||
serve_parser.add_argument("--private-key", default="data/priv_key.pem", |
|
||||||
help="RSA private key (default: data/priv_key.pem)") |
|
||||||
serve_parser.add_argument("--cert", required=True, |
|
||||||
help="Certificate (example: data/user_at_mail.i2p.crt)") |
|
||||||
serve_parser.add_argument("-f", "--file", default="output/i2pseeds.su3", |
|
||||||
help=".su3 file (default: output/i2pseeds.su3)") |
|
||||||
serve_parser.set_defaults(func=pyseeder.actions.serve) |
|
||||||
|
|
||||||
|
|
||||||
args = parser.parse_args() |
|
||||||
|
|
||||||
logging.basicConfig(level=args.loglevel, |
|
||||||
format='%(levelname)-8s %(message)s') |
|
||||||
|
|
||||||
if hasattr(args, "func"): |
|
||||||
try: |
|
||||||
args.func(args) |
|
||||||
except PyseederException as pe: |
|
||||||
log.critical("Pyseeder error: {}".format(pe)) |
|
||||||
sys.exit(1) |
|
||||||
else: |
|
||||||
parser.print_help() |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
main() |
|
@ -0,0 +1,128 @@ |
|||||||
|
#! /usr/bin/env python3 |
||||||
|
import os |
||||||
|
import sys |
||||||
|
import argparse |
||||||
|
import logging |
||||||
|
|
||||||
|
import pyseeder.transport |
||||||
|
import pyseeder.actions |
||||||
|
from pyseeder.utils import PyseederException |
||||||
|
|
||||||
|
log = logging.getLogger(__name__) |
||||||
|
|
||||||
|
def main(): |
||||||
|
parser = argparse.ArgumentParser() |
||||||
|
parser.add_argument('--loglevel', default=logging.INFO, help="Log level", |
||||||
|
choices=[logging.CRITICAL, logging.ERROR, logging.WARNING, |
||||||
|
logging.INFO, logging.DEBUG]) |
||||||
|
|
||||||
|
subparsers = parser.add_subparsers(title="actions", |
||||||
|
help="Command to execute") |
||||||
|
|
||||||
|
kg_parser = subparsers.add_parser( |
||||||
|
"keygen", |
||||||
|
description="Generates keypair for your reseed", |
||||||
|
usage=""" |
||||||
|
%(prog)s --cert data/user_at_mail.i2p.crt \\ |
||||||
|
--private-key data/priv_key.pem --signer-id user@mail.i2p""" |
||||||
|
) |
||||||
|
kg_parser.add_argument("--signer-id", required=True, |
||||||
|
help="Identifier of certificate (example: user@mail.i2p)") |
||||||
|
kg_parser.add_argument("--private-key", default="data/priv_key.pem", |
||||||
|
help="RSA private key (default: data/priv_key.pem)") |
||||||
|
kg_parser.add_argument("--cert", default=None, |
||||||
|
help="Certificate (example: data/user_at_mail.i2p.crt)") |
||||||
|
kg_parser.add_argument("--no-encryption", action="store_true", |
||||||
|
help="Disable private key encryption") |
||||||
|
kg_parser.set_defaults(func=pyseeder.actions.keygen) |
||||||
|
|
||||||
|
|
||||||
|
rs_parser = subparsers.add_parser( |
||||||
|
"reseed", |
||||||
|
description="Creates su3 reseed file", |
||||||
|
usage=""" |
||||||
|
echo $YOUR_PASSWORD | %(prog)s --netdb /path/to/netDb \\ |
||||||
|
--private-key data/priv_key.pem --outfile output/i2pseeds.su3 \\ |
||||||
|
--signer-id user@mail.i2p""" |
||||||
|
) |
||||||
|
rs_parser.add_argument("--signer-id", required=True, |
||||||
|
help="Identifier of certificate (example: user@mail.i2p)") |
||||||
|
rs_parser.add_argument("--private-key", default="data/priv_key.pem", |
||||||
|
help="RSA private key (default: data/priv_key.pem)") |
||||||
|
rs_parser.add_argument("-o", "--outfile", default="output/i2pseeds.su3", |
||||||
|
help="Output file (default: output/i2pseeds.su3)") |
||||||
|
rs_parser.add_argument("--netdb", required=True, |
||||||
|
help="Path to netDb folder (example: ~/.i2pd/netDb)") |
||||||
|
rs_parser.add_argument("--no-encryption", action="store_true", |
||||||
|
help="Disable private key encryption") |
||||||
|
rs_parser.set_defaults(func=pyseeder.actions.reseed) |
||||||
|
|
||||||
|
|
||||||
|
tpull_parser = subparsers.add_parser( |
||||||
|
"transport.pull", |
||||||
|
description="Download su3 file from random reseed server", |
||||||
|
usage=""" |
||||||
|
%(prog)s --urls https://reseed.i2p-projekt.de/ \\ |
||||||
|
https://reseed.i2p.vzaws.com:8443/ \\ |
||||||
|
--outfile output/i2pseeds.su3""" |
||||||
|
) |
||||||
|
tpull_parser.add_argument("--urls", default=pyseeder.transport.RESEED_URLS, |
||||||
|
nargs="*", help="""Reseed URLs separated by space, default are |
||||||
|
mainline I2P (like https://reseed.i2p-projekt.de/)""") |
||||||
|
tpull_parser.add_argument("-o", "--outfile", default="output/i2pseeds.su3", |
||||||
|
help="Output file (default: output/i2pseeds.su3)") |
||||||
|
tpull_parser.set_defaults(func=pyseeder.actions.transport_pull) |
||||||
|
|
||||||
|
|
||||||
|
tpush_parser = subparsers.add_parser( |
||||||
|
"transport.push", |
||||||
|
description="Upload su3 file with transports", |
||||||
|
usage="%(prog)s --config transports.ini --file output/i2pseeds.su3" |
||||||
|
) |
||||||
|
tpush_parser.add_argument("--config", default="transports.ini", |
||||||
|
help="Transports config file (default: transports.ini)") |
||||||
|
tpush_parser.add_argument("-f", "--file", default="output/i2pseeds.su3", |
||||||
|
help=".su3 file (default: output/i2pseeds.su3)") |
||||||
|
tpush_parser.set_defaults(func=pyseeder.actions.transport_push) |
||||||
|
|
||||||
|
|
||||||
|
serve_parser = subparsers.add_parser( |
||||||
|
"serve", |
||||||
|
description="""Run HTTPS reseeding server |
||||||
|
(in production use nginx instead, please). |
||||||
|
Will ask for a private key password""", |
||||||
|
usage="""%(prog)s --port 8443 --host 127.0.0.1 \\ |
||||||
|
--private-key data/priv_key.pem \\ |
||||||
|
--cert data/user_at_mail.i2p.crt \\ |
||||||
|
--file output/i2pseeds.su3""" |
||||||
|
) |
||||||
|
serve_parser.add_argument("--host", default="0.0.0.0", |
||||||
|
help="Host listening for clients (default: 0.0.0.0)") |
||||||
|
serve_parser.add_argument("--port", default=8443, |
||||||
|
help="Port listening for clients (default: 8443)") |
||||||
|
serve_parser.add_argument("--private-key", default="data/priv_key.pem", |
||||||
|
help="RSA private key (default: data/priv_key.pem)") |
||||||
|
serve_parser.add_argument("--cert", required=True, |
||||||
|
help="Certificate (example: data/user_at_mail.i2p.crt)") |
||||||
|
serve_parser.add_argument("-f", "--file", default="output/i2pseeds.su3", |
||||||
|
help=".su3 file (default: output/i2pseeds.su3)") |
||||||
|
serve_parser.set_defaults(func=pyseeder.actions.serve) |
||||||
|
|
||||||
|
|
||||||
|
args = parser.parse_args() |
||||||
|
|
||||||
|
logging.basicConfig(level=args.loglevel, |
||||||
|
format='%(levelname)-8s %(message)s') |
||||||
|
|
||||||
|
if hasattr(args, "func"): |
||||||
|
try: |
||||||
|
args.func(args) |
||||||
|
except PyseederException as pe: |
||||||
|
log.critical("Pyseeder error: {}".format(pe)) |
||||||
|
sys.exit(1) |
||||||
|
else: |
||||||
|
parser.print_help() |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
main() |
@ -0,0 +1,37 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
|
||||||
|
from setuptools import setup |
||||||
|
|
||||||
|
with open("README.md") as readme: |
||||||
|
long_description = readme.read() |
||||||
|
|
||||||
|
with open("requirements.txt") as f: |
||||||
|
install_requires = f.read().split() |
||||||
|
|
||||||
|
setup( |
||||||
|
name='pyseeder', |
||||||
|
version='0.0.1', |
||||||
|
description='Python reseed utilities for I2P', |
||||||
|
long_description=long_description, |
||||||
|
author='Darnet Villain', |
||||||
|
author_email='supervillain@riseup.net', |
||||||
|
url='https://github.com/PurpleI2P/pyseeder/', |
||||||
|
keywords='i2p reseed', |
||||||
|
license='MIT', |
||||||
|
classifiers=[ |
||||||
|
'Development Status :: 4 - Beta', |
||||||
|
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', |
||||||
|
'Programming Language :: Python :: 3', |
||||||
|
'Programming Language :: Python :: 3.3', |
||||||
|
'Programming Language :: Python :: 3.4', |
||||||
|
'Programming Language :: Python :: 3.5', |
||||||
|
'Programming Language :: Python :: 3.6', |
||||||
|
], |
||||||
|
packages=['pyseeder', 'pyseeder.transports'], |
||||||
|
install_requires=install_requires, |
||||||
|
entry_points={ |
||||||
|
'console_scripts': [ |
||||||
|
'pyseeder=pyseeder.cli:main', |
||||||
|
], |
||||||
|
} |
||||||
|
) |
Loading…
Reference in new issue