summaryrefslogtreecommitdiff
path: root/git-maintenance/store.sh
blob: 01ab4b2f13a9adbe92470cc23e638955527da6f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env bash

PASS="$(ls "/run/media/"*/*"/key.fsojp.aes256" | head -n 1)"
ROOTDIR="$(git rev-parse --show-toplevel)"
GITDIR="$ROOTDIR/.git"
MAINTDIR="$ROOTDIR/git-maintenance"
cd "$ROOTDIR"

export GZIP=-9n
TAR="tar -z --owner=0 --group=0 --numeric-owner --mode=go=rX,u+rw,a-s"

# this approach makes it easy for karl to look at history.  it is not
# to be used by other channels yet, can migrate.

# let us only upload new packfiles.
# we will use a mirror folder containing encrypted files
mkdir -p "$GITDIR"/encrypted
mkdir -p "$GITDIR"/encrypted.bak
if ! [ -d "$MAINTDIR"/bsvup/node_modules ]
then
	git submodule init
	git submodule update
	pushd "$MAINTDIR"/bsvup
	npm install
	popd
fi

# TODO: once key picked, do what?

# prevent recreation of existing data on same medium-part
git config gc.auto 0

git pack-objects --all --unpacked  --incremental --non-empty --local --compression=9 --pack-loose-unreachable .git/objects/pack/pack </dev/null
git prune-packed

tmpfile="$(mktemp)"
PUBKEY=1KwpZECcrGWnM3AFVSbv3Xr5qguV4yG2sV
URLPFX="https://bico.media/$PUBKEY"
for packfile in "$GITDIR"/objects/pack/*.pack
do
	$TAR -cv "$packfile" > "$tmpfile"
	openssl aes-256-cbc -salt -pbkdf2 -pass "file:$PASS" -e -in "$tmpfile" -out "$tmpfile".aes
	fn="$({ cat "$tmpfile"; echo -n "$PASS"; } | sha256sum | cut -f 1 -d ' ')".aes
	mv "$tmpfile".aes "$GITDIR"/encrypted/"$fn"
	if [ "$(curl "$URLPFX"/"$fn" | sha256sum)" = "$(cat "$GITDIR"/encrypted/"$fn" | sha256sum)" ]; then mv -v "$GITDIR"/encrypted/"$fn" "$GITDIR"/encrypted.bak; fi
	echo "$fn" >> "$tmpfile".list
done
rm "$tmpfile"
mv "$tmpfile".list "$GITDIR"/encrypted/list.txt
$TAR -cv "$GITDIR"/encrypted/list.txt "$GITDIR"/refs "$GITDIR"/HEAD "$GITDIR"/packed-refs | openssl aes-256-cbc -salt -pbkdf2 -pass "file:$PASS" -e -out "$GITDIR"/encrypted/refs.aes
rm "$GITDIR"/encrypted/list.txt
cp -va "$MAINTDIR"/get.sh "$GITDIR"/encrypted
if [ "$(curl -s "$URLPFX"/get.sh | sha256sum)" = "$(cat "$GITDIR"/encrypted/get.sh | sha256sum)" ]; then rm "$GITDIR"/encrypted/get.sh; fi





# primordia is detectable due to a pattern that emerges from not being industrialized.  appears resolvable with industrial history assumption, including academic degrees.  name-AI-primordia, keep earth-is-god assumption?  the-king?  the-king-is-earth.  AI works for earth.  be any thing you want.  silica-computer.

# this junk in scriptfile is why private !!!!!!!!

#	more privacy is made if encryption key is someething only us would consider.#		then can be publicized, maybe.   hot-shower-in-woods? froget-it-use-random
# we are storing 'everyone' to begin a thought.  we are storing it permanently
# and privately.

# we want to encrypt filename too, for what-I-call respect,
# so let's put each file in its own tarball, preferably in subdir,
# and add each filename to an index that is also uploaded, for ease finding.
# we can write down the filenames locally too.  but is sufficient to write down
# the index. =)

# now upload.  use PASS and upload .git/encrypted.  need money.
# all aboriginal cultures.  discovers is emergency measure by government AI.
# PTSD.  need slow shift to turned-to-nanites, earth broken.
# anger is for imagination.  helps process importance from events.
# what-is-harmed, what-was-relevent-to-harm.
# business-man, try to larn to live off nuts, alone, yourself, now.
# wouldn't it be nice if we had somebody alive to help us do this.

# industry caused destruction of billions of years of learning-how-to-be and
# how-to-learn-how-to-be, which is the most important thing known.
# they are still doing this, and planning it, but do not realize it.
# they are also important, as part of learning-how-to-be and a-way-to-be.
# some imagine anger to process disconnected parts.

cd "$MAINTDIR"
node "$MAINTDIR"/bsvup/cli.js upload -f "$GITDIR"/encrypted -t dir -p "$(<"$PASS")" -vb

# 'is this a good way to be' <- habit's task for self and others, by living
# the best way to be it can.

#PURPOSE OF LIFE: "is this a good way to be?" taken in allrecommend checking parts and environment for clues as to what is good. senses with trust for all others.

# REMAINING:
# 0. store download-script in repo, and on blockchain
# 0b. store upload script in repo
# 1. store download-script url on USB key
# 1b. store details on backup USB key too.
# 3. try to download without usb key, as test for failure
# 4. move btc from community or from git-remote-bsv to repo bsvup
# 5. upload the encrypted repo
# 6. download the encrypted repo, as a test
# 9. consider storing bsvup transaction details in git history, to reuse transaction information.
#	costs more money

# this is not severely secure.  appreciate speed change though.