From 985d7f735a12b85a5f00fc18683ec7840d483a76 Mon Sep 17 00:00:00 2001 From: sneak Date: Thu, 1 Oct 2020 06:10:09 -0700 Subject: [PATCH] add chrome history slurper and solana dockerfile --- chromeurls/urls.sh | 24 +++++++++ solanad.dockerfile/Dockerfile | 94 +++++++++++++++++++++++++++++++++ solanad.dockerfile/Makefile | 5 ++ solanad.dockerfile/run.solanad | 30 +++++++++++ solanad.dockerfile/supervise.sh | 48 +++++++++++++++++ 5 files changed, 201 insertions(+) create mode 100644 chromeurls/urls.sh create mode 100644 solanad.dockerfile/Dockerfile create mode 100644 solanad.dockerfile/Makefile create mode 100644 solanad.dockerfile/run.solanad create mode 100644 solanad.dockerfile/supervise.sh diff --git a/chromeurls/urls.sh b/chromeurls/urls.sh new file mode 100644 index 0000000..3ac3b63 --- /dev/null +++ b/chromeurls/urls.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +SRC="$HOME/Library/Application Support/Google/Chrome/Default/History" + +Q="SELECT + datetime(last_visit_time/1000000-11644473600, \"unixepoch\") as last_visited, + last_visit_time as orig, + url, + title, + visit_count +FROM urls +ORDER BY last_visited desc + +LIMIT 1 +; +" + +mkdir -p $HOME/tmp + +cp "$SRC" $HOME/tmp/history + +sqlite3 -readonly $HOME/tmp/history "$Q" + +rm $HOME/tmp/history diff --git a/solanad.dockerfile/Dockerfile b/solanad.dockerfile/Dockerfile new file mode 100644 index 0000000..fc2c135 --- /dev/null +++ b/solanad.dockerfile/Dockerfile @@ -0,0 +1,94 @@ +FROM ubuntu:focal as builder + +ENV DEBIAN_FRONTEND noninteractive + +# this is the hash of solana-1.3.14 +ENV VERSION c8f4bfca90e5087f77dd11921b75231c5fa30151 + + +RUN apt update && apt install -y \ + clang \ + cmake \ + curl \ + git \ + golang \ + lcov \ + libssl-dev \ + libudev-dev \ + llvm \ + mscgen \ + net-tools \ + pkg-config \ + rsync \ + sudo \ + zlib1g-dev \ + unzip + +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +RUN . $HOME/.cargo/env && rustup component add rustfmt && rustup update + +RUN git clone \ + https://github.com/solana-labs/solana.git \ + /usr/local/src/solana && \ + cd /usr/local/src/solana && \ + git checkout $VERSION + +WORKDIR /usr/local/src/solana + +RUN . $HOME/.cargo/env && cargo build --release + +# kept crashing docker desktop, hard locks on OOM instead of doing +# something sensible. fuck closed source, proprietary software. +#RUN . $HOME/.cargo/env && cargo cargo test +#RUN . $HOME/.cargo/env rustup install nightly && cargo +nightly bench + +RUN cd target/release && \ + rm -f *.so *.d *.rlib && \ + mv -v * /usr/local/bin + +FROM ubuntu:focal as runner +COPY --from=builder /usr/local/bin/* /usr/local/bin/ + +ENV DEBIAN_FRONTEND noninteractive +ENV PATH $PATH:/usr/local/bin + +RUN apt update && apt install -y \ + runit \ + runit-systemd + +COPY ./supervise.sh /usr/local/sbin/supervise.sh +RUN mkdir -p /etc/service/solanad +COPY ./run.solanad /etc/service/solanad/run +RUN chmod +x /etc/service/*/run + +#RUN solana transaction-count +#RUN solana-gossip spy --entrypoint devnet.solana.com:8001 +RUN mkdir -p /var/lib/solana && chown nobody:nogroup /var/lib/solana +ENV HOME /var/lib/solana +WORKDIR /var/lib/solana +USER nobody:nogroup + +ENV NETWORK_URL https://devnet.solana.com +#RUN solana config set --url http://devnet.solana.com + +VOLUME /var/lib/solana +# rpc +EXPOSE 8899 + +# this daemon is stupid +EXPOSE 8000 +EXPOSE 8001 +EXPOSE 8002 +EXPOSE 8003 +EXPOSE 8004 +EXPOSE 8005 +EXPOSE 8005 +EXPOSE 8006 +EXPOSE 8007 +EXPOSE 8008 +EXPOSE 8009 +EXPOSE 8010 + +USER root +WORKDIR / +CMD [ "/bin/sh", "/usr/local/sbin/supervise.sh" ] diff --git a/solanad.dockerfile/Makefile b/solanad.dockerfile/Makefile new file mode 100644 index 0000000..282a267 --- /dev/null +++ b/solanad.dockerfile/Makefile @@ -0,0 +1,5 @@ +docker: + docker build --progress plain -t solanad . + +run: + docker run -ti solanad diff --git a/solanad.dockerfile/run.solanad b/solanad.dockerfile/run.solanad new file mode 100644 index 0000000..464fbce --- /dev/null +++ b/solanad.dockerfile/run.solanad @@ -0,0 +1,30 @@ +#!/bin/bash +export HOME=/var/lib/solana +export PATH="$PATH:/usr/local/bin" + +ASN="chpst -u nobody:nogroup" + +cd $HOME + +$ASN solana config set --url $NETWORK_URL + +if [[ ! -e $HOME/validator-keypair.json ]]; then + $ASN solana-keygen new -o $HOME/validator-keypair.json +fi +$ASN solana-keygen pubkey ~/validator-keypair.json + +if [[ ! -d $HOME/validator-ledger ]]; then + $ASN mkdir $HOME/validator-ledger +fi + +exec $ASN \ + solana-validator \ + --identity $HOME/validator-keypair.json \ + --trusted-validator dv1LfzJvDF7S1fBKpFgKoKXK5yoSosmkAdfbxBo1GqJ \ + --no-untrusted-rpc \ + --ledger $HOME/validator-ledger \ + --rpc-port 8899 \ + --entrypoint entrypoint.devnet.solana.com:8001 \ + --expected-genesis-hash Ap36zrBt2jLWpwUjaF48hRULVgmvSE3ViFxiQgjZX2XC \ + --log - \ + --limit-ledger-size 2>&1 diff --git a/solanad.dockerfile/supervise.sh b/solanad.dockerfile/supervise.sh new file mode 100644 index 0000000..56622bb --- /dev/null +++ b/solanad.dockerfile/supervise.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +shutdown() { + echo "shutting down container" + + # first shutdown any service started by runit + for _srv in $(ls -1 /etc/service); do + sv force-stop $_srv + done + + # shutdown runsvdir command + kill -HUP $RUNSVDIR + wait $RUNSVDIR + + # give processes time to stop + sleep 0.5 + + # kill any other processes still running in the container + for _pid in $(ps -eo pid | grep -v PID | tr -d ' ' | grep -v '^1$' | head -n -6); do + timeout -t 5 /bin/sh -c "kill $_pid && wait $_pid || kill -9 $_pid" + done + exit +} + +# store enviroment variables +export > /etc/envvars + +PATH=/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin + +# run all scripts in the run_once folder +#/bin/run-parts /etc/run_once + +exec runsvdir -P /etc/service & + +RUNSVDIR=$! +echo "Started runsvdir, PID is $RUNSVDIR" +echo "wait for processes to start...." + +sleep 5 +for _srv in $(ls -1 /etc/service); do + sv status $_srv +done + +# catch shutdown signals +trap shutdown SIGTERM SIGHUP SIGQUIT SIGINT +wait $RUNSVDIR + +shutdown