diff --git a/overlay/opt/emcomm-tools/bin/et-chattervox b/overlay/opt/emcomm-tools/bin/et-chattervox index c8f3175..d2c6886 100755 --- a/overlay/opt/emcomm-tools/bin/et-chattervox +++ b/overlay/opt/emcomm-tools/bin/et-chattervox @@ -11,7 +11,7 @@ # # Postconditions: # 1. On first start, configuration is created and signing key is generated. -# 2. chattervox is started +# 2. chattervox is started in chat mode CHATTERVOX_CONF_DIR=${HOME}/.chattervox CHATTERVOX_CONF_FILE=${CHATTERVOX_CONF_DIR}/config.json @@ -36,6 +36,52 @@ notify_user() { "$1" } +generate_config() { + + CALLSIGN=$(cat ${ET_USER_CONFIG} | jq -r .callsign) + +cat < "${CHATTERVOX_CONF_FILE}" +{ + "version": 3, + "callsign": "${CALLSIGN}", + "ssid": 0, + "keystoreFile": "${HOME}/.chattervox/keystore.json", + "kissPort": "kiss://localhost:8001", + "kissBaud": 9600, + "feedbackDebounce": 20000 +} +EOF + + # Generate keystore file if it does not exist + if [ ! -e ${CHATTERVOX_KEYSTORE_FILE} ]; then + chattervox genkey + fi + + # Grab existing or newly generated signing key if available + SIGNING_KEY=$(cat ${CHATTERVOX_KEYSTORE_FILE} | jq -e -r .${CALLSIGN}[0].public) + if [ $? -ne 0 ]; then + et-log "Generating signing key for ${CALLSIGN}..." + chattervox genkey + SIGNING_KEY=$(cat ${CHATTERVOX_KEYSTORE_FILE} | jq -e -r .${CALLSIGN}[0].public) + else + et-log "Signing key already exits for ${CALLSIGN}." + fi + + +cat < "${CHATTERVOX_CONF_FILE}" +{ + "version": 3, + "callsign": "${CALLSIGN}", + "ssid": 0, + "keystoreFile": "${HOME}/.chattervox/keystore.json", + "kissPort": "kiss://localhost:8001", + "kissBaud": 9600, + "feedbackDebounce": 20000, + "signingKey": "${SIGNING_KEY}" +} +EOF +} + start() { update-config @@ -76,39 +122,7 @@ update-config () { if [ ! -e ${CHATTERVOX_CONF_FILE} ]; then et-log "chattervox configuration does not exist creating: ${CHATTERVOX_CONF_FILE}..." - -cat < "${CHATTERVOX_CONF_FILE}" -{ - "version": 3, - "callsign": "${CALLSIGN}", - "ssid": 0, - "keystoreFile": "${HOME}/.chattervox/keystore.json", - "kissPort": "kiss://localhost:8001", - "kissBaud": 9600, - "feedbackDebounce": 20000 -} -EOF - - et-log "Generating signing key..." - chattervox genkey - - SIGNING_KEY=$(cat ${CHATTERVOX_KEYSTORE_FILE} | jq -e -r .${CALLSIGN}[0].public) - if [ $? -eq 0 ]; then - et-log "Adding signing key configuration..." - -cat < "${CHATTERVOX_CONF_FILE}" -{ - "version": 3, - "callsign": "${CALLSIGN}", - "ssid": 0, - "keystoreFile": "${HOME}/.chattervox/keystore.json", - "kissPort": "kiss://localhost:8001", - "kissBaud": 9600, - "feedbackDebounce": 20000, - "signingKey": "${SIGNING_KEY}" -} -EOF - fi + generate_config else et-log "Chattervox configuration already exists, checking for change in et-user..." @@ -118,6 +132,7 @@ EOF if [ "${CUR_CALLSIGN}" != "${CONFIGURED_CALLSIGN}" ]; then et-log "User callsign has changed from ${CUR_CALLSIGN} to ${CONFIGURED_CALLSIGN}" + generate_config fi fi