Skip to main content

.

Project description

https://travis-ci.org/mayfieldrobotics/thr33p.svg https://coveralls.io/repos/mayfieldrobotics/thr33p/badge.svg

Authenticating HTTP proxy for S3. Similar to these:

which might be better for you.

quickstart

Create your config(s):

$ cat > ~/.thr33p/config.py <<EOF
import certifi

http_pool_manager = {
   'cert_reqs': 'CERT_REQUIRED',
   'ca_certs': certifi.where(),
}

buckets =  {
   r'~.+-at-bernies': {
      'creds': {
         'access_key_id': 'EXAMPLE',
         'secret_access_key': 'EXAMPLEKEY',
      },
   }
}
EOF
$ cat > ~/.thr33p/gunicorn.py <<EOF
import os

workers = 1

backlog = 1024

worker_class = 'gevent'

loglevel = 'info'

proc_name = 'thr33p'

def post_fork(server, worker):
    import thr33p

    config_path = os.path.abspath(os.path.join(__file__, '..', 'config.py'))
    thr33p.init(config_path)

EOF

and run it with docker:

$ sudo docker run -p 5000:8000 -v $HOME/.thr33p/:/etc/thr33p/ mayfieldrobotics/thr33p:latest --config=/etc/thr33p/gunicorn.py
$ curl http://127.0.0.1:5000/dead-1.jpeg --header "Host:weekend-at-bernies.s3.amazonaws.com" -vvv

or ghetto dev style:

$ mkvirtualenv thr33p
(thr33p)$ pip install thr33p
(thr33p)$ thr33p -d -p 5000 ~/.thr33p/config.py &
(thr33p)$ curl http://127.0.0.1:5000/dead-1.jpeg --header "Host:weekend-at-bernies.s3.amazonaws.com" -vvv

config

Just a python file like e.g. this:

import os

import certifi


# passed to `urllib3.PoolManager`
http_pool_manager = {
   'cert_reqs': 'CERT_REQUIRED',
   'ca_certs': certifi.where(),
}

buckets =  {
   # authenticates buckets matching literal "wake-at-bernies" using temporary iam-role creds
   r'wake-at-bernies': {
      'creds': None
   }

   # authenticates buckets matching literal "evening-at-bernies" using env creds
   r'evening-at-bernies': {
      'creds': {
         'access_key_id': os.environ['AWS_ACCESS_KEY_ID'],
         'secret_access_key':os.environ['AWS_SECRET_ACCESS_KEY'],
      }
   }

   # authenticates buckets matching regex ".+-at-bernies" using baked creds
   r'~.+-at-bernies': {
      'creds': {
         'access_key_id': 'EXAMPLE',
         'secret_access_key': 'EXAMPLEKEY',
      },
   }
}

dev

Get it:

$ git clone git@github.com:mayfieldrobotics/thr33p.git
$ cd thr33p
$ pip install -e .[tests]

test it:

$ py.test tests/ --cov thr33p.py

and build docker images:

$ sudo docker build -t {your-account}/thr33p .

release

All is well:

$ py.test tests/ --cov thr33p.py

so update __version__ in:

  • thr33p.py

tag it (travis will publish it to pypi):

$ git commit -am "release v{version}"
$ git tag -a v{version} -m "release v{version}"
$ git push --tags

and register the tag with docker so others can just:

$ sudo docker pull mayfieldrobotics/thr33p:{version}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thr33p-0.2.0.tar.gz (3.3 kB view details)

Uploaded Source

File details

Details for the file thr33p-0.2.0.tar.gz.

File metadata

  • Download URL: thr33p-0.2.0.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for thr33p-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2970f150b30e5b51e6a71c6674affb0a3b05018e84605ef51a74a7988cb8c477
MD5 d2d9ffc5e4f07204092b5545db2325ca
BLAKE2b-256 40def06bc4fbf999fe9e4da6fd41392a67137c694b1dd744cd963a164806b496

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page