From 2d4bcbd7aad2c1ee350de2dc9cd88f935a91ced8 Mon Sep 17 00:00:00 2001 From: James Zhu Date: Fri, 28 Sep 2018 14:07:47 -0700 Subject: [PATCH] Add blackbox-encrypted secrets.py, keyrings See https://github.com/StackExchange/blackbox for blackbox usage. Keys added: jvperrin, jameszhu, hutch, michaelmlu --- .gitattributes | 2 ++ .gitignore | 5 +++++ Makefile | 6 +++--- bbtest.txt.gpg | Bin 0 -> 1282 bytes hknweb/settings/__init__.py | 15 +++++++++++++++ hknweb/{settings.py => settings/common.py} | 12 +----------- hknweb/settings/dev.py | 15 +++++++++++++++ hknweb/settings/dummy_secrets.py | 4 ++++ hknweb/settings/prod.py | 17 +++++++++++++++++ hknweb/settings/secrets.py.gpg | Bin 0 -> 1361 bytes keyrings/live/blackbox-admins.txt | 4 ++++ keyrings/live/blackbox-files.txt | 2 ++ keyrings/live/pubring.kbx | Bin 0 -> 8129 bytes keyrings/live/trustdb.gpg | Bin 0 -> 1200 bytes 14 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 .gitattributes create mode 100644 bbtest.txt.gpg create mode 100644 hknweb/settings/__init__.py rename hknweb/{settings.py => settings/common.py} (91%) create mode 100644 hknweb/settings/dev.py create mode 100644 hknweb/settings/dummy_secrets.py create mode 100644 hknweb/settings/prod.py create mode 100644 hknweb/settings/secrets.py.gpg create mode 100644 keyrings/live/blackbox-admins.txt create mode 100644 keyrings/live/blackbox-files.txt create mode 100644 keyrings/live/pubring.kbx create mode 100644 keyrings/live/trustdb.gpg diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..c5bd52ff --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +**/blackbox-admins.txt text eol=lf +**/blackbox-files.txt text eol=lf diff --git a/.gitignore b/.gitignore index f3e5727d..836ffecc 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,8 @@ target/ # Emacs stuff \#*\# *~ +/keyrings/live/pubring.gpg~ +/keyrings/live/pubring.kbx~ +/keyrings/live/secring.gpg +/bbtest.txt +/hknweb/settings/secrets.py diff --git a/Makefile b/Makefile index a0726c1f..e5e44d38 100644 --- a/Makefile +++ b/Makefile @@ -5,11 +5,11 @@ PIP_HOME = $(shell python3 -c "import site; import os; print(os.path.join(site.U .PHONY: dev dev: - pipenv run python ./manage.py runserver $(DEV_LISTEN_IP):$(DEV_PORT) + HKNWEB_MODE='dev' pipenv run python ./manage.py runserver $(DEV_LISTEN_IP):$(DEV_PORT) .PHONY: dev-vagrant dev-vagrant: - pipenv run python ./manage.py runserver [::]:$(DEV_PORT) + HKNWEB_MODE='dev' pipenv run python ./manage.py runserver [::]:$(DEV_PORT) .PHONY: livereload livereload: @@ -29,7 +29,7 @@ venv: Pipfile Pipfile.lock .PHONY: migrate migrate: - pipenv run python ./manage.py migrate + pipenv run python ./manage.py migrate --settings=hknweb.settings.dev .PHONY: test test: venv diff --git a/bbtest.txt.gpg b/bbtest.txt.gpg new file mode 100644 index 0000000000000000000000000000000000000000..bde488f5d62b3f8c9af68cfacfc06748a1957042 GIT binary patch literal 1282 zcmV+d1^xPk0Sp6wzvUNHZ7l@>2mA>#6B?>Y;?w|hk~(HAOof@GUzYahd?{i^;ev8z ze&}Y5bAJjro@8u18wFGb$gqsQ=&w#_KH22Oo)smC-ZnEBEN|H7`f%A*2_z;*AUet> zn4XeY_259ZR{{vXpXZ)#$CRk*=4jXmb=@C_RicV+!Agq9Mk(WL zA|`r+1-=nj1V`=6?P=YO<~B!5)xWoPL^7y`>b9nGW-v8@9E5E(r+h?yWhmf_e7~SO zTe!EJ2(@S63)3TFEodEU6+eVt1EXXT{7xj&ViExdK%Tj0p4do}W2Q_*6)v~Vs~m<< zHUzAA}|^0eRfhHN5k@ONdwsN#h_8~0* zt9{51VY|~tKA>mQ$;`UPo*hQuVkte{krQIgz9x!h@8{@If;x*Ro1dV z73nhU$xY4)N|+UB*QpI+*!T&M5`9^}QldkItXXTvmsCIf{E%#pmNRqAzOP+O&p(q= z<5aR(XIckR_`+x#N*$z^2&`a9u3&}7RN8q%jwK2uGyo8nVPBbT^F>(H)oiov8KLEA z-`38b=H$}}W9o?;%bo%JTX{}1uke&rWbnNV4_U9+&RnX*1aFl08KA{&+M^om0d__UE&ZyuZS(WufgqU@AxYe>{Ur|lSZhx=uQ*QSgoBs<-rKDD^8HRTh z^WrzF|+@g$AW%%CakHT5|OaLaK!miT3Qs z;lvkB8aW|j%obVIuq05h9=o>J7S!^&Q2$mG{1a6;4O2kiUytkM6C|2~>A=R6Ay&CC zNq8`|`wFVet?;_|cBg2;XfLG6pCV}$bBj>79e)qlHNc1=fHb4%yj^8xL6RXsW!0mJ zA2~~BRR6D;J^GFLNbs-zrN{+&XytO9o#zlm)E_{^N9f&Ns6W}8hM($LdzYz+pk6?4 zF^+YKGTCVyq;DBqBo0%GrfSa;$45J~R-XsG4q`%>O7Y{MBp}UCR#w@kn2u~SPhT9{ znZxJjk>Kwfe2*?@O--Kv+s?8p`c1cF2fkva@s;9!guiZpbd;c8tP1rjqU8#IVQkHP zOp9_3OV%392h$Db`I}yarXXAYlw)BX3P;D#1E9faWNy(4rH9k2yY)Ai-tul5g#8Cf zuiEY~Vlou$X8sxKPhO{hz=PXM_MsFU;2H*?(sKdJ=qG_jNeSb!?wzQ7Mq_GH0MeMp zuq9s?#8_d!NYwWtG!uU|ldP}wvj`D4<-6ho^F~@c@B(*MIjSEwF80d!F##v soKlKV&*A-sr3LqU$uG_brc`Q_%E#yQAisHvV)7709wURX<$V&yF=N+q0RR91 literal 0 HcmV?d00001 diff --git a/hknweb/settings/__init__.py b/hknweb/settings/__init__.py new file mode 100644 index 00000000..789ce58d --- /dev/null +++ b/hknweb/settings/__init__.py @@ -0,0 +1,15 @@ +import os +import sys + +try: + HKNWEB_MODE = os.environ['HKNWEB_MODE'].lower() + if HKNWEB_MODE == 'dev': + from .dev import * + elif HKNWEB_MODE == 'prod': + from .prod import * + else: + print("HKNWEB_MODE is not a valid value") + sys.exit() +except KeyError: + print("SETTINGS says: HKNWEB_MODE not supplied, so no data will be loaded into settings. You can still load of the subpackages manually.") + diff --git a/hknweb/settings.py b/hknweb/settings/common.py similarity index 91% rename from hknweb/settings.py rename to hknweb/settings/common.py index dce868ee..2807c1aa 100644 --- a/hknweb/settings.py +++ b/hknweb/settings/common.py @@ -12,21 +12,11 @@ import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'v9lj^szduvr@a*31&r(l5ub+5q%ebszts70vlpzaiekt23s)gb' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - # Application definition INSTALLED_APPS = [ diff --git a/hknweb/settings/dev.py b/hknweb/settings/dev.py new file mode 100644 index 00000000..92ac7fc1 --- /dev/null +++ b/hknweb/settings/dev.py @@ -0,0 +1,15 @@ +from .common import * + +#In dev mode, attempt to use real secrets, but if unavailiable, fall back to dummy secrets +try: + from .secrets import * +except ImportError: + from .dummy_secrets import * + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = ['localhost','127.0.0.1','hkn.eecs.berkely.edu','hkn.mu'] + + + diff --git a/hknweb/settings/dummy_secrets.py b/hknweb/settings/dummy_secrets.py new file mode 100644 index 00000000..5332c094 --- /dev/null +++ b/hknweb/settings/dummy_secrets.py @@ -0,0 +1,4 @@ +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'v9lj^szduvr@a*31&r(l5ub+5q%ebszts70vlpzaiekt23s)gb' + + diff --git a/hknweb/settings/prod.py b/hknweb/settings/prod.py new file mode 100644 index 00000000..d4a0aad5 --- /dev/null +++ b/hknweb/settings/prod.py @@ -0,0 +1,17 @@ +from .common import * + + +#In prod mode, rigidly enforce using real secrets and fail if unavailiable +from .secrets import * + + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'v9lj^szduvr@a*31&r(l5ub+5q%ebszts70vlpzaiekt23s)gb' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = False + +ALLOWED_HOSTS = ['hkn.eecs.berkeley.edu','hkn.mu'] + + + diff --git a/hknweb/settings/secrets.py.gpg b/hknweb/settings/secrets.py.gpg new file mode 100644 index 0000000000000000000000000000000000000000..fc64b60fd60fb1ba07bd0a54bdea37232330a5fc GIT binary patch literal 1361 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 literal 0 HcmV?d00001 diff --git a/keyrings/live/trustdb.gpg b/keyrings/live/trustdb.gpg new file mode 100644 index 0000000000000000000000000000000000000000..620ba52ba4be4f819ad562475aa5affaf8f3138c GIT binary patch literal 1200 zcmZQfFGy!*W@Ke#Vql2o-4Vxt9WZiX7sn7CRfiEIV1dza84VXu2#lr!%F+P