update documenation, susmng
This commit is contained in:
parent
fc8dfb43e0
commit
1fee71280f
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,2 @@
|
|||||||
redis
|
redis
|
||||||
docker-compose.yml
|
.env
|
||||||
|
@ -5,7 +5,7 @@ services:
|
|||||||
build: .
|
build: .
|
||||||
ports: [ "80:80" ]
|
ports: [ "80:80" ]
|
||||||
environment:
|
environment:
|
||||||
- SECRET=secret
|
- SECRET=${SECRET}
|
||||||
redis:
|
redis:
|
||||||
image: redis:7
|
image: redis:7
|
||||||
volumes: [ "./redis:/data" ]
|
volumes: [ "./redis:/data" ]
|
26
readme
26
readme
@ -2,3 +2,29 @@ sus
|
|||||||
===
|
===
|
||||||
|
|
||||||
simple URL shortener
|
simple URL shortener
|
||||||
|
|
||||||
|
|
||||||
|
usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
running the server
|
||||||
|
|
||||||
|
1. generate the secret used to create and delete shortlinks
|
||||||
|
|
||||||
|
echo SECRET=`pwgen -s 64 1` >> .env
|
||||||
|
|
||||||
|
2. run the services
|
||||||
|
|
||||||
|
docker-compose up -d --build
|
||||||
|
|
||||||
|
setting up susmng
|
||||||
|
|
||||||
|
1. install susmng
|
||||||
|
|
||||||
|
make install-susmng
|
||||||
|
|
||||||
|
2. create config files
|
||||||
|
|
||||||
|
susmng init
|
||||||
|
|
||||||
|
3. edit config files (~/.config/susmng/config.json) to add your secrets
|
||||||
|
38
susmng.py
38
susmng.py
@ -6,6 +6,7 @@ import hmac
|
|||||||
import hashlib
|
import hashlib
|
||||||
import pathlib
|
import pathlib
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
def get_args():
|
def get_args():
|
||||||
@ -13,26 +14,43 @@ def get_args():
|
|||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('susserver')
|
|
||||||
parser.add_argument('command')
|
parser.add_argument('command')
|
||||||
parser.add_argument('shortlink')
|
parser.add_argument('-s', '--server', default="")
|
||||||
parser.add_argument('value')
|
parser.add_argument('-l', '--shortlink', default="")
|
||||||
parser.add_argument('--secret-file', type=pathlib.Path, default=pathlib.Path(os.path.expanduser('~/.susmng_secret')))
|
parser.add_argument('-v', '--value', default="")
|
||||||
parser.add_argument('--http', action='store_true')
|
parser.add_argument('-c', '--config', type=pathlib.Path, default=pathlib.Path(os.path.expanduser('~/.config/susmng/config.json')))
|
||||||
|
parser.add_argument('-H', '--http', action='store_true')
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
def main(args):
|
def main(args):
|
||||||
""" Entry point for script """
|
""" Entry point for script """
|
||||||
|
|
||||||
if not args.secret_file.exists():
|
if args.command == "init":
|
||||||
print(f"secret file does not exist at: {args.secret_file}")
|
print(f"creating config file and quitting")
|
||||||
|
|
||||||
|
if args.config.exists():
|
||||||
|
print("config file exists... doing nothing")
|
||||||
|
return
|
||||||
|
|
||||||
|
with open(args.config, 'w+') as fp:
|
||||||
|
json.dump({ 'secrets': { 'sus.example.com': 'secret' } }, fp, indent=2)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
with open(args.secret_file) as fp:
|
with open(args.config) as fp:
|
||||||
secret = fp.read().strip()
|
config = json.load(fp)
|
||||||
|
|
||||||
r = requests.post(f"{'http' if args.http else 'https'}://{args.susserver}",
|
server = args.server
|
||||||
|
if server == "":
|
||||||
|
server = list(config['secrets'].keys())[0]
|
||||||
|
|
||||||
|
secret = config['secrets'][server]
|
||||||
|
|
||||||
|
if args.command == "delete" and args.value != "confirm":
|
||||||
|
print("--value not set to 'confirm'... delete operation may fail")
|
||||||
|
|
||||||
|
r = requests.post(f"{'http' if args.http else 'https'}://{server}",
|
||||||
data = {
|
data = {
|
||||||
'Command': args.command,
|
'Command': args.command,
|
||||||
'Shortlink': args.shortlink,
|
'Shortlink': args.shortlink,
|
||||||
|
Loading…
Reference in New Issue
Block a user