From 02700b547a80a014ee8fb1b66e8c586e0489bc2c Mon Sep 17 00:00:00 2001 From: "tlimoncelli@stackexchange.com" Date: Tue, 2 Jun 2015 15:37:06 +0000 Subject: [PATCH] Update comments and add newly added files to packages. --- Makefile | 41 +++++++++-------- README.md | 11 +++-- bin/_stack_lib.sh | 63 +++++++++++++++++++++----- bin/blackbox_cat | 2 +- bin/blackbox_decrypt_all_files | 6 ++- bin/blackbox_edit | 2 +- bin/blackbox_edit_start | 2 +- bin/blackbox_list_files | 2 +- bin/blackbox_register_new_file | 2 +- tools/mk_macports.vcs_blackbox.txt | 5 +- tools/mk_rpm_fpmdir.stack_blackbox.txt | 5 +- 11 files changed, 97 insertions(+), 44 deletions(-) diff --git a/Makefile b/Makefile index f0e6834..5e86dcf 100644 --- a/Makefile +++ b/Makefile @@ -15,29 +15,13 @@ install: # The default package type is RPM. packages: packages-rpm -# -# MacPorts builds -# -# To test: -# rm -rf /tmp/foo ; mkdir -p /tmp/foo;make packages-macports DESTDIR=/tmp/foo;find /tmp/foo -ls - -# Make mk_macports.vcs_blackbox.txt from mk_rpm_fpmdir.stack_blackbox.txt: -tools/mk_macports.vcs_blackbox.txt: tools/mk_rpm_fpmdir.stack_blackbox.txt - sed -e 's@/usr/blackbox/bin/@bin/@g' -e '/profile.d-usrblackbox.sh/d' $@ - -# Make mk_deb_fpmdir.vcs_blackbox.txt from mk_rpm_fpmdir.stack_blackbox.txt: -tools/mk_deb_fpmdir.stack_blackbox.txt: tools/mk_rpm_fpmdir.stack_blackbox.txt - sed -e 's@/usr/blackbox/bin/@/usr/bin/@g' -e '/profile.d-usrblackbox.sh/d' $@ - -# MacPorts expects to run: make packages-macports DESTDIR=${destroot} -packages-macports: tools/mk_macports.vcs_blackbox.txt - mkdir -p $(DESTDIR)/bin - cd tools && ./mk_macports mk_macports.vcs_blackbox.txt - # # RPM builds # +# NOTE: mk_rpm_fpmdir.stack_blackbox.txt is the master list of files. All +# other packages should generate their list from it. + packages-rpm: cd tools && PKGRELEASE="$${PKGRELEASE}" PKGDESCRIPTION="Safely store secrets in git/hg/svn repos using GPG encryption" ./mk_rpm_fpmdir stack_blackbox mk_rpm_fpmdir.stack_blackbox.txt @@ -67,6 +51,10 @@ unlock-rpm: packages-deb: tools/mk_deb_fpmdir.stack_blackbox.txt cd tools && PKGRELEASE="$${PKGRELEASE}" PKGDESCRIPTION="Safely store secrets in git/hg/svn repos using GPG encryption" ./mk_deb_fpmdir stack_blackbox mk_deb_fpmdir.stack_blackbox.txt +# Make mk_deb_fpmdir.vcs_blackbox.txt from mk_rpm_fpmdir.stack_blackbox.txt: +tools/mk_deb_fpmdir.stack_blackbox.txt: tools/mk_rpm_fpmdir.stack_blackbox.txt + sed -e 's@/usr/blackbox/bin/@/usr/bin/@g' -e '/profile.d-usrblackbox.sh/d' $@ + packages-deb-debug: tools/mk_deb_fpmdir.stack_blackbox.txt @echo BUILD: @PKGRELEASE=99 make packages-deb @@ -80,6 +68,21 @@ local-deb: -@sudo dpkg -e $(PKGNAME) sudo dpkg -i $$(cat ~/rpmbuild-$(PKGNAME)/bin-packages.txt) +# +# MacPorts builds +# +# To test: +# rm -rf /tmp/foo ; mkdir -p /tmp/foo;make packages-macports DESTDIR=/tmp/foo;find /tmp/foo -ls + +# Make mk_macports.vcs_blackbox.txt from mk_rpm_fpmdir.stack_blackbox.txt: +tools/mk_macports.vcs_blackbox.txt: tools/mk_rpm_fpmdir.stack_blackbox.txt + sed -e 's@/usr/blackbox/bin/@bin/@g' -e '/profile.d-usrblackbox.sh/d' $@ + +# MacPorts expects to run: make packages-macports DESTDIR=${destroot} +packages-macports: tools/mk_macports.vcs_blackbox.txt + mkdir -p $(DESTDIR)/bin + cd tools && ./mk_macports mk_macports.vcs_blackbox.txt + # Add other package types here. # diff --git a/README.md b/README.md index 105c60f..72f4cb4 100644 --- a/README.md +++ b/README.md @@ -91,20 +91,23 @@ Commands: | Name: | Description: | | --- | --- | -| `blackbox_addadmin` | Add someone to the list of people that can encrypt/decrypt secrets | -| `blackbox_cat` | Decrypt and view the contents of a file | -| `blackbox_diff` | Diff decrypted files against their original crypted version | | `blackbox_edit` | Decrypt, run $EDITOR, re-encrypt a file | | `blackbox_edit_start` | Decrypt a file so it can be updated | | `blackbox_edit_end` | Encrypt a file after blackbox_edit_start was used | +| `blackbox_cat` | Decrypt and view the contents of a file | +| `blackbox_diff` | Diff decrypted files against their original crypted version | | `blackbox_initialize` | Enable blackbox for a GIT or HG repo | -| `blackbox_postdeploy` | Decrypt all managed files | | `blackbox_register_new_file` | Encrypt a file for the first time | +| `blackbox_list_files` | List the files maintained by blackbox | +| `blackbox_decrypt_all_files` | Decrypt all managed files (INTERACTIVE) | +| `blackbox_postdeploy` | Decrypt all managed files (batch) | +| `blackbox_addadmin` | Add someone to the list of people that can encrypt/decrypt secrets | | `blackbox_removeadmin` | Remove someone from the list of people that can encrypt/decrypt secrets | | `blackbox_shred_all_files` | Safely delete any decrypted files | | `blackbox_update_all_files` | Decrypt then re-encrypt all files. Useful after keys are changed | | `blackbox_whatsnew` | show what has changed in the last commit for a given file | + Compatibility: ============================ diff --git a/bin/_stack_lib.sh b/bin/_stack_lib.sh index 3b20bde..e3c3abb 100755 --- a/bin/_stack_lib.sh +++ b/bin/_stack_lib.sh @@ -1,6 +1,9 @@ # Library functions for bash scripts at Stack Exchange. +# NOTE: This file is open sourced. Do not put Stack-proprietary code here. + # Usage: +# # set -e # . _stack_lib.sh @@ -46,6 +49,48 @@ function add_on_exit() fi } +function create_self_deleting_tempfile() { + local filename + + case $(uname -s) in + Darwin ) + : ${TMPDIR:=/tmp} ; + filename=$(mktemp -t _stacklib_ ) + ;; + Linux ) + filename=$(mktemp) + ;; + * ) + echo 'ERROR: Unknown OS. Exiting.' + exit 1 + ;; + esac + + add_on_exit rm -f "$filename" + echo "$filename" +} + +function create_self_deleting_tempdir() { + local filename + + case $(uname -s) in + Darwin ) + : ${TMPDIR:=/tmp} ; + filename=$(mktemp -d -t _stacklib_ ) + ;; + Linux ) + filename=$(mktemp -d) + ;; + * ) + echo 'ERROR: Unknown OS. Exiting.' + exit 1 + ;; + esac + + add_on_exit rm -rf "$filename" + echo "$filename" +} + # Securely and portably create a temporary file that will be deleted # on EXIT. $1 is the variable name to store the result. function make_self_deleting_tempfile() { @@ -55,14 +100,11 @@ function make_self_deleting_tempfile() { case $(uname -s) in Darwin ) : ${TMPDIR:=/tmp} ; - name=$(mktemp -t _stacklib_.XXXXXXX ) + name=$(mktemp -t _stacklib_ ) ;; Linux ) name=$(mktemp) ;; - CYGWIN* ) - name=$(mktemp) - ;; * ) echo 'ERROR: Unknown OS. Exiting.' exit 1 @@ -79,15 +121,12 @@ function make_tempdir() { case $(uname -s) in Darwin ) - : "${TMPDIR:=/tmp}" ; + : ${TMPDIR:=/tmp} ; name=$(mktemp -d -t _stacklib_ ) ;; Linux ) name=$(mktemp -d) ;; - CYGWIN* ) - name=$(mktemp -d) - ;; * ) echo 'ERROR: Unknown OS. Exiting.' exit 1 @@ -99,12 +138,12 @@ function make_tempdir() { function make_self_deleting_tempdir() { local __resultvar="$1" - local dirname + local dname - make_tempdir dirname + make_tempdir dname - add_on_exit rm -rf "$dirname" - eval $__resultvar="$dirname" + add_on_exit rm -rf "$dname" + eval $__resultvar="$dname" } function fail_if_not_running_as_root() { diff --git a/bin/blackbox_cat b/bin/blackbox_cat index 0eb8f99..604eee7 100755 --- a/bin/blackbox_cat +++ b/bin/blackbox_cat @@ -1,7 +1,7 @@ #!/usr/bin/env bash # -# blackbox_cat.sh -- Decrypt a file, cat it, shred it +# blackbox_cat -- Decrypt a file, cat it, shred it # set -e blackbox_home=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) diff --git a/bin/blackbox_decrypt_all_files b/bin/blackbox_decrypt_all_files index c9605bb..aca77b0 100755 --- a/bin/blackbox_decrypt_all_files +++ b/bin/blackbox_decrypt_all_files @@ -1,7 +1,7 @@ #!/usr/bin/env bash # -# blacbox_decrypt_all_files -- Decrypt all blackbox files. +# blacbox_decrypt_all_files -- Decrypt all blackbox files (INTERACTIVE). # # Usage: @@ -15,6 +15,8 @@ export PATH=/usr/bin:/bin:"$PATH" set -e -eval $(gpg-agent --daemon) +if [[ -z $GPG_AGENT_INFO ]]; then + eval $(gpg-agent --daemon) +fi exec blackbox_postdeploy.sh "$@" diff --git a/bin/blackbox_edit b/bin/blackbox_edit index 432cf0d..b72f957 100755 --- a/bin/blackbox_edit +++ b/bin/blackbox_edit @@ -1,7 +1,7 @@ #!/usr/bin/env bash # -# blackbox_edit.sh -- Decrypt a file temporarily for edition, then re-encrypts it again +# blackbox_edit -- Decrypt a file temporarily for edition, then re-encrypts it again # set -e blackbox_home=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) diff --git a/bin/blackbox_edit_start b/bin/blackbox_edit_start index 6e5f9e7..cf327b7 100755 --- a/bin/blackbox_edit_start +++ b/bin/blackbox_edit_start @@ -1,7 +1,7 @@ #!/usr/bin/env bash # -# blackbox_edit_start.sh -- Decrypt a file for editing. +# blackbox_edit_start -- Decrypt a file for editing. # set -e diff --git a/bin/blackbox_list_files b/bin/blackbox_list_files index c57bba3..f90fd96 100755 --- a/bin/blackbox_list_files +++ b/bin/blackbox_list_files @@ -1,7 +1,7 @@ #!/usr/bin/env bash # -# blackbox_list_files.sh -- List files that black box is tracking +# blackbox_list_files -- List files that black box is tracking # set -e blackbox_home=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) diff --git a/bin/blackbox_register_new_file b/bin/blackbox_register_new_file index 22acf65..77b997d 100755 --- a/bin/blackbox_register_new_file +++ b/bin/blackbox_register_new_file @@ -1,7 +1,7 @@ #!/usr/bin/env bash # -# blackbox_register_new_file.sh -- Enroll a new file in the blackbox system. +# blackbox_register_new_file -- Enroll a new file in the blackbox system. # # Takes a previously unencrypted file and enrolls it into the blackbox # system. It will be kept in the repo as an encrypted file. On deployment diff --git a/tools/mk_macports.vcs_blackbox.txt b/tools/mk_macports.vcs_blackbox.txt index 55afb3f..852e7ed 100644 --- a/tools/mk_macports.vcs_blackbox.txt +++ b/tools/mk_macports.vcs_blackbox.txt @@ -2,13 +2,16 @@ exec bin/_blackbox_common.sh ../bin/_blackbox_common.sh exec bin/_stack_lib.sh ../bin/_stack_lib.sh exec bin/blackbox_addadmin ../bin/blackbox_addadmin exec bin/blackbox_cat ../bin/blackbox_cat +exec bin/blackbox_decrypt_all_files ../bin/blackbox_decrypt_all_files +exec bin/blackbox_diff ../bin/blackbox_diff exec bin/blackbox_edit ../bin/blackbox_edit exec bin/blackbox_edit_end ../bin/blackbox_edit_end exec bin/blackbox_edit_start ../bin/blackbox_edit_start exec bin/blackbox_initialize ../bin/blackbox_initialize +exec bin/blackbox_list_files ../bin/blackbox_list_files exec bin/blackbox_postdeploy ../bin/blackbox_postdeploy exec bin/blackbox_register_new_file ../bin/blackbox_register_new_file exec bin/blackbox_removeadmin ../bin/blackbox_removeadmin exec bin/blackbox_shred_all_files ../bin/blackbox_shred_all_files exec bin/blackbox_update_all_files ../bin/blackbox_update_all_files -exec bin/blackbox_list_files ../bin/blackbox_list_files +exec bin/blackbox_whatsnew ../bin/blackbox_whatsnew diff --git a/tools/mk_rpm_fpmdir.stack_blackbox.txt b/tools/mk_rpm_fpmdir.stack_blackbox.txt index de4731e..0f1b0b5 100644 --- a/tools/mk_rpm_fpmdir.stack_blackbox.txt +++ b/tools/mk_rpm_fpmdir.stack_blackbox.txt @@ -3,13 +3,16 @@ exec /usr/blackbox/bin/_blackbox_common.sh ../bin/_blackbox_common.sh exec /usr/blackbox/bin/_stack_lib.sh ../bin/_stack_lib.sh exec /usr/blackbox/bin/blackbox_addadmin ../bin/blackbox_addadmin exec /usr/blackbox/bin/blackbox_cat ../bin/blackbox_cat +exec /usr/blackbox/bin/blackbox_decrypt_all_files ../bin/blackbox_decrypt_all_files +exec /usr/blackbox/bin/blackbox_diff ../bin/blackbox_diff exec /usr/blackbox/bin/blackbox_edit ../bin/blackbox_edit exec /usr/blackbox/bin/blackbox_edit_end ../bin/blackbox_edit_end exec /usr/blackbox/bin/blackbox_edit_start ../bin/blackbox_edit_start exec /usr/blackbox/bin/blackbox_initialize ../bin/blackbox_initialize +exec /usr/blackbox/bin/blackbox_list_files ../bin/blackbox_list_files exec /usr/blackbox/bin/blackbox_postdeploy ../bin/blackbox_postdeploy exec /usr/blackbox/bin/blackbox_register_new_file ../bin/blackbox_register_new_file exec /usr/blackbox/bin/blackbox_removeadmin ../bin/blackbox_removeadmin exec /usr/blackbox/bin/blackbox_shred_all_files ../bin/blackbox_shred_all_files exec /usr/blackbox/bin/blackbox_update_all_files ../bin/blackbox_update_all_files -exec /usr/blackbox/bin/blackbox_list_files ../bin/blackbox_list_files +exec /usr/blackbox/bin/blackbox_whatsnew ../bin/blackbox_whatsnew