summarylogtreecommitdiffstats
path: root/swarm-bee-clef.install
blob: 1dfabfef03a72ee27d5f6922249c91cfb30bdf33 (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
pre_install() {
    if ! getent passwd bee-clef >/dev/null; then
        useradd -r -d /var/lib/bee-clef -s /sbin/nologin -c 'Clef user' -U bee-clef
    fi

    if getent passwd bee >/dev/null; then
        usermod -a -G bee-clef bee >/dev/null
    fi

    if ! test -d /var/lib/bee-clef; then
        mkdir -p /var/lib/bee-clef/keystore
        chmod 0750 /var/lib/bee-clef
        chmod 0700 /var/lib/bee-clef/keystore
        chown -R bee-clef:bee-clef /var/lib/bee-clef
    fi

    if ! test -f /var/lib/bee-clef/password; then
        tr </dev/urandom -dc _A-Z-a-z-0-9 2>/dev/null | head -c32 >/var/lib/bee-clef/password
        chmod 0600 /var/lib/bee-clef/password
        chown bee-clef:bee-clef /var/lib/bee-clef/password
    fi
}

post_install() {
    SECRET=$(cat /var/lib/bee-clef/password)
    parse_json() { echo $1 | sed -e 's/[{}]/''/g' | sed -e 's/", "/'\",\"'/g' | sed -e 's/" ,"/'\",\"'/g' | sed -e 's/" , "/'\",\"'/g' | sed -e 's/","/'\"---SEPERATOR---\"'/g' | awk -F=':' -v RS='---SEPERATOR---' "\$1~/\"$2\"/ {print}" | sed -e "s/\"$2\"://" | tr -d "\n\t" | sed -e 's/\\"/"/g' | sed -e 's/\\\\/\\/g' | sed -e 's/^[ \t]*//g' | sed -e 's/^"//' -e 's/"$//'; }
    clef --configdir /var/lib/bee-clef --stdio-ui init >/dev/null 2>&1 <<EOF
$SECRET
$SECRET
EOF
    clef --keystore /var/lib/bee-clef/keystore --stdio-ui newaccount --lightkdf >/dev/null 2>&1 <<EOF
$SECRET
EOF
    clef --keystore /var/lib/bee-clef/keystore --configdir /var/lib/bee-clef --stdio-ui setpw 0x$(parse_json $(cat /var/lib/bee-clef/keystore/*) address) >/dev/null 2>&1 <<EOF
$SECRET
$SECRET
$SECRET
EOF
    clef --keystore /var/lib/bee-clef/keystore --configdir /var/lib/bee-clef --stdio-ui attest $(sha256sum /etc/bee-clef/rules.js | cut -d' ' -f1 | tr -d '\n') >/dev/null 2>&1 <<EOF
$SECRET
EOF
    chown -R bee-clef:bee-clef /var/lib/bee-clef
}

post_remove() {
    userdel bee-clef >/dev/null 2>&1 || true
    groupdel bee-clef >/dev/null 2>&1 || true
}