readonly FTP_CHECK_DATA="${BACKGROUND_DATA}/ftp_check.data";
readonly FTP_CHECK_ERRORS="${BACKGROUND_DATA}/ftp_check.errors";

ftp_check_main(){
        local ftp_initial_status="$(/scripts/restartsrv_ftpd --status 2>&1)";
        declare -A ftp_data;
        local disabled="not configured | The FTP server is disabled.";
        local inactive="service is down";
        local active="is running";

        if [[ "$ftp_initial_status" =~ $active ]]; then
                ftp_data[service_status]="$SERVICE_ACTIVE";
        elif [[ $(grep -o "$ftp_initial_status" <<< "$disabled") ]]; then
                ftp_data[service_status]="$SERVICE_DISABLED";
        else
                /scripts/restartsrv_ftpd --start 1>/dev/null 2>&1;

                ftp_restart="$(/scripts/restartsrv_ftpd --status 2>&1)";

                if [[ "$ftp_restart" =~ "$inactive" ]]; then
                        ftp_data[service_status]="$SERVICE_DOWN";
                        ftp_data[auto_fix_status]="$AUTO_FIX_FAIL";
                else
                        ftp_data[service_status]="$SERVICE_ACTIVE";
                        ftp_data[auto_fix_status]="$AUTO_FIX_SUCCESS";
                fi;
        fi;

        bash_arr_to_json ftp_data "${!ftp_data[@]}" > "$FTP_CHECK_DATA";
}

ftp_check(){
        run_check_in_background "ftp_check_main" "$FTP_CHECK_DATA" "$FTP_CHECK_ERRORS"\
                "${CHECK_LOCKS_DIR}/${FUNCNAME}.lock";
}
