Skip to content
Snippets Groups Projects
Unverified Commit 1d994359 authored by Bob Mottram's avatar Bob Mottram
Browse files

ipfs mesh implementation

parent 2f18dec9
No related branches found
No related tags found
No related merge requests found
......@@ -201,7 +201,74 @@ function configure_firewall_for_ipfs {
echo 'configure_firewall_for_ipfs' >> $COMPLETION_FILE
}
function mesh_install_ipfs_js {
if grep -Fxq "mesh_install_ipfs_js" $COMPLETION_FILE; then
return
fi
chroot ${rootdir} apt-get -y install npm
chroot ${rootdir} apt-get -y install libpam0g-dev fuse
chroot ${rootdir} npm cache clean -f
chroot ${rootdir} npm install -g n
chroot ${rootdir} n ${IPFS_NODE_VERSION}
chroot ${rootdir} npm install ronin@${IPFS_JS_RONIN_VERSION} --global
chroot ${rootdir} npm install ipfs@${IPFS_JS_VERSION} --global
IPFS_PATH=/usr/local/bin
if [ ! -f ${rootdir}$IPFS_PATH/jsipfs ]; then
exit 637292
fi
# directories to mount to
if [ ! -d ${rootdir}/ipfs ]; then
chroot ${rootdir} mkdir /ipfs
chroot ${rootdir} mkdir /ipns
chroot ${rootdir} chown $MY_USERNAME:$MY_USERNAME /ipfs
chroot ${rootdir} chown $MY_USERNAME:$MY_USERNAME /ipns
fi
if [ -f ${rootdir}/etc/fuse.conf ]; then
chroot ${rootdir} chown $MY_USERNAME:$MY_USERNAME /etc/fuse.conf
fi
if [ -f ${rootdir}/dev/fuse ]; then
chroot ${rootdir} chown $MY_USERNAME:$MY_USERNAME /dev/fuse
fi
IPFS_DAEMON_NAME=ipfs
IPFS_DAEMON_FILE=${rootdir}/etc/systemd/system/${IPFS_DAEMON_NAME}.service
echo '[Unit]' > $IPFS_DAEMON_FILE
echo 'Description=IPFS javascript daemon' >> $IPFS_DAEMON_FILE
echo 'After=syslog.target' >> $IPFS_DAEMON_FILE
echo 'After=network.target' >> $IPFS_DAEMON_FILE
echo '' >> $IPFS_DAEMON_FILE
echo '[Service]' >> $IPFS_DAEMON_FILE
echo 'Type=simple' >> $IPFS_DAEMON_FILE
echo "User=$MY_USERNAME" >> $IPFS_DAEMON_FILE
echo "Group=$MY_USERNAME" >> $IPFS_DAEMON_FILE
echo "WorkingDirectory=/home/$MY_USERNAME" >> $IPFS_DAEMON_FILE
echo "ExecStart=${IPFS_PATH}/jsipfs daemon --mount" >> $IPFS_DAEMON_FILE
echo 'Restart=on-failure' >> $IPFS_DAEMON_FILE
echo "Environment=\"USER=$MY_USERNAME\" \"HOME=/home/$MY_USERNAME\"" >> $IPFS_DAEMON_FILE
echo '' >> $IPFS_DAEMON_FILE
echo '[Install]' >> $IPFS_DAEMON_FILE
echo 'WantedBy=multi-user.target' >> $IPFS_DAEMON_FILE
chroot ${rootdir} systemctl enable ${IPFS_DAEMON_NAME}
chroot ${rootdir} systemctl daemon-reload
function_check create_avahi_service
create_avahi_service ipfs "ipfs" udp $IPFS_PORT "IPFS_PEER_ID"
echo 'mesh install_ipfs_js' >> $COMPLETION_FILE
}
function install_ipfs_js {
if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
mesh_install_ipfs_js
return
fi
if grep -Fxq "install_ipfs_js" $COMPLETION_FILE; then
return
fi
......
......@@ -550,6 +550,7 @@ initialise_mesh() {
install_tomb
install_tox
install_web_server
install_ipfs
if [ $ENABLE_ZERONET ]; then
install_zeronet
fi
......
......@@ -723,6 +723,36 @@ function setup_amnesic_data {
fi
}
function setup_ipfs {
IPFS_PATH=/usr/local/bin
IPFS_KEY_LENGTH=2048
su -c "$IPFS_PATH/jsipfs init -b $IPFS_KEY_LENGTH" - $MY_USERNAME
if [ ! -d ${rootdir}/home/$MY_USERNAME/.ipfs ]; then
echo "IPFS could not be initialised for user $MY_USERNAME" >> $INSTALL_LOG
exit 7358
fi
TEMP_IPFS_ID=/tmp/ipfsid
su -c "echo $($IPFS_PATH/jsipfs id | grep '\"ID\":' | awk -F '\"' '{print $4}') > $TEMP_IPFS_ID" - $MY_USERNAME
if [ ! -f $TEMP_IPFS_ID ]; then
echo 'No IPFS identity was created' >> $INSTALL_LOG
exit 37895
fi
IPFS_PEER_ID=$(cat $TEMP_IPFS_ID)
if [ ${#IPFS_PEER_ID} -lt 10 ]; then
echo 'Invalid IPFS peer ID' >> $INSTALL_LOG
echo "$IPFS_PEER_ID" >> $INSTALL_LOG
exit 74782
fi
# TODO in avahi service for ipfs replace IPFS_PEER_ID
rm $TEMP_IPFS_ID
echo 'IPFS installed with ID $IPFS_PEER_ID' >> $INSTALL_LOG
}
# whether to reset the identity
set_new_identity=
if [ $2 ]; then
......@@ -778,6 +808,7 @@ if [ -f $MESH_INSTALL_SETUP ]; then
fi
configure_toxcore
create_tox_user
setup_ipfs
mesh_amnesic
if [ ! -f $MESH_AMNESIC ]; then
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment