#!/bin/sh ################################################################################# # # Lynis # ------------------ # # Copyright 2007-2014, Michael Boelen (michael@cisofy.com) # Web site: http://cisofy.com # # Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are # welcome to redistribute it under the terms of the GNU General Public License. # See LICENSE file for usage of this software. # ################################################################################# # # Data upload # ################################################################################# # # logtextbreak PROGRAM_VERSION="101" LICENSE_SERVER="https://cisofy.com" if [ "${UPLOAD_URL}" = "" ]; then UPLOAD_URL="https://cisofy.com/upload/" fi logtext "Upload server: ${LICENSE_SERVER} (static)" logtext "URL to upload to: ${UPLOAD_URL}" # Additional options to curl CURL_OPTIONS="" SETTINGS_FILE="${PROFILE}" # Only output text to stdout if DEBUG mode is not used output() { if [ ${DEBUG} -eq 1 ]; then echo "$1"; fi } ##################################################################################### # # SYSTEM CHECKS # ##################################################################################### output "Lynis Enterprise data uploader starting" output "Settings file: ${SETTINGS_FILE}" # Check if we can find curl # Suggestion: If you want to keep the system hardened, copying the binary from a trusted source is a good alternative. # Restrict access to this binary to the user who is running this script. if [ "${CURLBINARY}" = "" ]; then echo "Fatal: can't find curl binary. Please install the related package or put the binary in the PATH. Quitting.." exit 1 fi # Extra the license key from the settings file if [ "${LICENSE_KEY}" = "" ]; then echo "Fatal: no license key found. Quitting.." exit 1 else output "License key = ${LICENSE_KEY}" fi ##################################################################################### # # JOB CONTROL # ##################################################################################### # Check report file if [ -f ${REPORTFILE} ]; then output "${WHITE}Report file found.${NORMAL} Starting with connectivity check.." # Quit if license is not valid, to reduce load on both client and server. UPLOAD=`${CURLBINARY} ${CURL_OPTIONS} -s -S --data-urlencode "licensekey=${LICENSE_KEY}" --data-urlencode "collector_version=${PROGRAM_VERSION}" ${LICENSE_SERVER}/license/` UPLOAD_CODE=`echo ${UPLOAD} | head -n 1 | awk '{ if ($1=="Response") { print $2 }}'` if [ "${UPLOAD_CODE}" = "100" ]; then output "${WHITE}License is valid${NORMAL}" logtext "Result: License is valid" else echo "${RED}Fatal error: ${WHITE}This license key can not be checked, or has been expired. Please contact support@cisofy.com.${NORMAL}" logtext "License check failed. This might have different causes:" logtext "- Connection with license server could not be established" logtext "- Collector version of Lynis version outdated" logtext "- License expired" logtext "- No credits left" output "Debug information: ${UPLOAD}" # Quit ExitClean fi # Extract the hostid from the parse file HOSTID=`cat ${REPORTFILE} | grep "^hostid=" | awk -F= '{ print $2 }'` if [ ! "${HOSTID}" = "" ]; then output "${WHITE}Found hostid: ${HOSTID}${NORMAL}" # Try to connect output "Uploading data.." UPLOAD=`${CURLBINARY} ${CURL_OPTIONS} -s -S --data-urlencode "data@${REPORTFILE}" --data-urlencode "licensekey=${LICENSE_KEY}" --data-urlencode "hostid=${HOSTID}" ${UPLOAD_URL}` UPLOAD_CODE=`echo ${UPLOAD} | head -n 1 | awk '{ print $2 }'` output "Output code from upload: ${UPLOAD_CODE}" if [ "${UPLOAD_CODE}" = "100" ]; then output "${GREEN}Data uploaded successfully${NORMAL}" else echo "${RED}Error occured, please check documentation for code ${UPLOAD_CODE}.${NORMAL}" output "Debug:" output ${UPLOAD} # Quit ExitClean fi else echo "${RED}Fatal error${NORMAL}: No hostid found in report file. Can not upload report file." # Quit ExitClean fi else output "${YELLOW}No report file found to upload.${NORMAL}" fi # #================================================================================ # Lynis - Copyright 2007-2014, Michael Boelen, CISOfy - https://cisofy.com