readonly CSF_CHECK_DATA="${BACKGROUND_DATA}/csf_check.data";
readonly CPU_CHECK_ERRORS="${BACKGROUND_DATA}/csf_check.errors";

csf_check_main(){
        declare -A csf_data;

        if [[ "$(csf -l)" =~ "filter table" ]]; then
                csf_data[service_status]="$SERVICE_ACTIVE";
        else
                csf -e 1>/dev/null 2>&1;

                if [[ "$(csf -l)" =~ "filter table" ]]; then
                        csf_data[auto_fix_status]="$AUTO_FIX_SUCCESS";
                        csf_data[service_status]="$SERVICE_ACTIVE";
                else
                        csf_data[auto_fix_status]="$AUTO_FIX_FAIL";
                        csf_data[service_status]="$SERVICE_DOWN";

                        # Add csf error log path in case csf.error exist
                        ls /etc/csf/csf.error 1>/dev/null 2>&1 && csf_data[csf_errors]+="/etc/csf/csf.error";
                fi;
        fi;

        bash_arr_to_json csf_data "${!csf_data[@]}" > "$CSF_CHECK_DATA";
}

csf_check(){
        run_check_in_background "csf_check_main" "$CSF_CHECK_DATA" "$CPU_CHECK_ERRORS"\
                "${CHECK_LOCKS_DIR}/${FUNCNAME}.lock";
}
