Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
cesa.co.za /
php /
includes /
Delete
Unzip
Name
Size
Permission
Date
Action
error_handling
[ DIR ]
drwxr-sr-x
2025-07-07 15:54
mail
[ DIR ]
drwxr-sr-x
2025-06-14 11:17
ADQAnswers.php
3.16
KB
-rw-r--r--
2026-06-03 05:55
ADQAudit.php
6.51
KB
-rw-r--r--
2026-06-03 05:55
ADQAuditAnswers.php
1.21
KB
-rw-r--r--
2026-06-03 05:55
ADQFirms.php
18.41
KB
-rw-r--r--
2025-12-31 10:56
ADQuestionnairesAnswers.php
1.05
KB
-rw-r--r--
2026-06-03 05:55
ADQuestionnairesAudit.php
2.01
KB
-rw-r--r--
2026-06-03 05:55
ADecQuestionnaires.php
3.31
KB
-rw-r--r--
2026-06-03 05:55
ADecQuestions.php
541
B
-rw-r--r--
2026-06-03 05:55
ADec_Contacts.php
1.61
KB
-rw-r--r--
2026-06-03 05:55
ADec_OfficeContacts.php
7.43
KB
-rw-r--r--
2026-06-03 05:55
ADec_PIUnderwriters.php
742
B
-rw-r--r--
2026-06-03 05:55
ADec_Transformation.php
817
B
-rw-r--r--
2026-06-03 05:55
ADec_tblMemberFirmOffices.php
1.49
KB
-rw-r--r--
2026-06-03 05:55
ADec_tblMemberFirmSkills.php
2.38
KB
-rw-r--r--
2026-06-03 05:55
ADec_tblMemberFirms.php
19.37
KB
-rw-r--r--
2026-06-03 05:55
AnonRespondees.php
4.25
KB
-rw-r--r--
2026-06-05 11:41
AwardsEntries.php
2.4
KB
-rw-r--r--
2026-06-06 10:48
BaseTableClass.php
950
B
-rw-r--r--
2026-04-26 08:24
BatchJob.php
4.46
KB
-rw-r--r--
2026-06-03 05:55
BceAssignmentFeedbackFormsReportService.php
6.77
KB
-rw-r--r--
2026-05-25 13:06
CCEAssignment.php
12.44
KB
-rw-r--r--
2026-05-26 14:26
CCEAssignmentMarking.php
26.26
KB
-rw-r--r--
2026-08-14 12:06
CCEBooks.php
524
B
-rw-r--r--
2026-06-03 05:55
CCEConvenorAuth.php
3.06
KB
-rw-r--r--
2026-08-19 11:18
CCECourseSchedules.php
579
B
-rw-r--r--
2026-06-03 05:55
CCEDocCategories.php
529
B
-rw-r--r--
2026-06-03 05:55
CCEDocuments.php
8.15
KB
-rw-r--r--
2026-08-20 12:16
CCEExam.php
15.87
KB
-rw-r--r--
2026-06-03 06:35
CCEExamQuestion.php
1.76
KB
-rw-r--r--
2026-06-03 05:55
CCEFacilitatorUser.php
931
B
-rw-r--r--
2026-06-03 05:55
CCEMessageLog.php
951
B
-rw-r--r--
2026-06-03 05:55
CCEMessages.php
8.88
KB
-rw-r--r--
2026-07-01 13:20
CCEModuleMarksService.php
7.16
KB
-rw-r--r--
2026-05-26 10:30
CCEModules.php
1.16
KB
-rw-r--r--
2026-06-03 05:55
CCEResourceGroups.php
591
B
-rw-r--r--
2026-06-03 05:55
CCEResources.php
896
B
-rw-r--r--
2026-06-03 05:55
CCESetup.php
256
B
-rw-r--r--
2026-02-09 16:20
CCEStAssigExtension.php
2.07
KB
-rw-r--r--
2026-06-03 05:55
CCEStAssigExtensionRequest.php
6.65
KB
-rw-r--r--
2026-06-03 05:55
CCEStudentAssignment.php
16.61
KB
-rw-r--r--
2026-07-15 14:44
CCEStudentCourses.php
611
B
-rw-r--r--
2026-06-03 05:55
CCEStudentDisplayOrder.php
4.96
KB
-rw-r--r--
2026-05-26 09:32
CCEStudents.php
8.4
KB
-rw-r--r--
2026-08-19 11:18
CCETemplates.php
896
B
-rw-r--r--
2026-06-03 05:55
CCEWeeklySessions.php
2.27
KB
-rw-r--r--
2026-02-09 16:25
CPDSPReview.php
624
B
-rw-r--r--
2026-06-03 05:55
CPDServiceProvider.php
4.57
KB
-rw-r--r--
2026-06-12 11:48
CPDTrainingMaterial.php
3.96
KB
-rw-r--r--
2026-06-12 11:48
CceUploadedFileService.php
34.9
KB
-rw-r--r--
2026-06-24 12:03
Certificates.php
8.93
KB
-rw-r--r--
2026-08-18 15:42
Contact.php
690
B
-rw-r--r--
2026-06-03 05:55
ErrorLog.php
1.22
KB
-rw-r--r--
2026-08-24 10:12
EventSchedules.php
5.39
KB
-rw-r--r--
2025-12-20 10:03
FileUploads.php
2.1
KB
-rw-r--r--
2026-06-03 05:55
HTMLHelper.php
17.2
KB
-rw-r--r--
2026-06-03 05:55
KeyValue.php
4.9
KB
-rw-r--r--
2026-04-25 09:34
Mailer.php
12.78
KB
-rw-r--r--
2026-07-15 09:50
MarketingAttendees.php
36.87
KB
-rw-r--r--
2026-08-14 12:06
MarketingPayments.php
2.52
KB
-rw-r--r--
2026-06-03 05:55
MemberContact.php
1.04
KB
-rw-r--r--
2026-06-03 05:55
MemberFirm.php
17.71
KB
-rw-r--r--
2026-06-03 05:55
MemberFirmOffices.php
752
B
-rw-r--r--
2026-06-03 05:55
MemberFirmSkill.php
18.04
KB
-rw-r--r--
2026-06-03 05:55
MemberPortalTransformationProxy.php
4.44
KB
-rw-r--r--
2026-05-20 09:08
MemberPortalUrls.php
1.82
KB
-rw-r--r--
2026-05-20 09:53
MsgAttachFileService.php
4.92
KB
-rw-r--r--
2026-06-22 08:37
OfficeContact.php
1.01
KB
-rw-r--r--
2026-06-03 05:55
Picklists.php
539
B
-rw-r--r--
2026-06-03 05:55
Questionnaires.php
849
B
-rw-r--r--
2026-01-23 12:39
SchoolAttendeeBulkMailerService.php
34.26
KB
-rw-r--r--
2026-08-11 10:45
SchoolAttendees.php
73.21
KB
-rw-r--r--
2026-08-11 10:45
SchoolCourses.php
7.98
KB
-rw-r--r--
2026-08-19 11:59
SchoolEvents.php
45.54
KB
-rw-r--r--
2026-08-18 15:42
SchoolPayments.php
4.48
KB
-rw-r--r--
2026-04-13 09:33
SchoolPresenters.php
1.86
KB
-rw-r--r--
2026-01-23 12:43
SchoolWeeksCoursesDashboardProxy.php
10.69
KB
-rw-r--r--
2026-08-14 12:32
TrainingProvider.php
8.06
KB
-rw-r--r--
2026-01-23 12:43
TrainingProviderDoc.php
554
B
-rw-r--r--
2026-06-03 05:55
Transformation.php
10.87
KB
-rw-r--r--
2026-05-13 09:36
UnempPractitioners.php
1.43
KB
-rw-r--r--
2026-06-03 05:55
Utils.php
13.72
KB
-rw-r--r--
2026-07-23 07:28
WeeklySessionsParser.php
7.87
KB
-rw-r--r--
2026-02-09 16:20
cceMessageAttachmentUpload.inc.php
5.12
KB
-rw-r--r--
2026-06-03 05:55
cceMessageEditor.inc.php
9.26
KB
-rw-r--r--
2026-07-01 13:20
cce_file_download_endpoint.php
1.75
KB
-rw-r--r--
2026-06-24 08:38
cstUnreadMessages.php
2.1
KB
-rw-r--r--
2026-07-01 13:20
cstWeeksCourses.php
1.84
KB
-rw-r--r--
2026-08-14 12:06
load_phpmailer.php
742
B
-rw-r--r--
2026-07-17 14:57
maill.php
19.45
KB
-rw-r--r--
2026-08-19 12:23
require_ewmysql.php
1.2
KB
-rw-r--r--
2026-08-24 10:12
sqlFunctions.php
10.48
KB
-rw-r--r--
2026-08-24 10:12
Save
Rename
<?php function getBaseURL($https = true) { $base = 'http'; if (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443) && $https) { $base .= 's'; } $base .= '://' . $_SERVER["HTTP_HOST"]; return $base; } function getRequestVar($varName, $default) { if (isset($_REQUEST[$varName])) { return $_REQUEST[$varName]; } return $default; } function getSessionVar($varName, $default = null) { if (isset($_SESSION[$varName])) { return $_SESSION[$varName]; } return $default; } function setSessionVar($varName, $value = null) { if (is_null($value)) { $value = getSessionVar($varName, $value); } $_SESSION[$varName] = $value; return $value; } function formatNumber($number, $decimals = 0) { return number_format($number, $decimals, '.', ' '); } function strip_chars($val) { return str_replace(" ", " ", str_replace("\r", " ", str_replace("\n", " ", str_replace("\r\n", " ", str_replace(",", " ", str_replace("\"", "", $val)))))); } function stringToFile($filePath, $fileData) { $file_handle = fopen($filePath, 'w'); fwrite($file_handle, $fileData); fclose($file_handle); } function isValidDate($dateString, $format = null) { // If no format specified, try common formats if ($format === null) { $formats = ['Y-m-d', 'd/m/Y', 'm/d/Y', 'Y-m-d H:i:s', 'd/m/Y H:i']; foreach ($formats as $fmt) { $date = DateTime::createFromFormat($fmt, $dateString); if ($date !== false && $date->format($fmt) === $dateString) { return true; } } return false; } // Check with specific format $date = DateTime::createFromFormat($format, $dateString); return $date !== false && $date->format($format) === $dateString; } /** * Remove stylesheet/script blocks and related markup from HTML message bodies. */ function sanitizeCceMessageHtml($textIn) { if ($textIn === null || $textIn === '') { return ''; } return stripInlineStyleTags($textIn); } /** * Convert message HTML to plain text (notifications, quoted replies). * Strips style/script/head blocks before strip_tags so CSS is not left as visible text. */ function cleanHTMLMessageText($textIn) { if ($textIn === null || $textIn === '') { return ''; } $textOut = sanitizeCceMessageHtml($textIn); // Preserve visual line breaks before tags are removed $textOut = preg_replace('/<br\s*\/?>/i', "\r\n", $textOut); $textOut = preg_replace('/<hr\s*\/?>/i', "\r\n", $textOut); $textOut = preg_replace('/<\/(p|div|h[1-6]|li|tr|blockquote)\s*>/i', "\r\n", $textOut); $textOut = preg_replace('/<(p|div|h[1-6]|li|tr|blockquote)\b[^>]*>/i', '', $textOut); $textOut = html_entity_decode($textOut, ENT_QUOTES | ENT_HTML5, 'UTF-8'); $textOut = strip_tags($textOut); $textOut = str_replace("\xC2\xA0", ' ', $textOut); // UTF-8 nbsp after decode $textOut = str_replace(' ', ' ', $textOut); $textOut = preg_replace("/[ \t]+\r?\n/", "\r\n", $textOut); $textOut = preg_replace("/(\r\n){3,}/", "\r\n\r\n", $textOut); return trim($textOut); } function cceMessageLooksLikeHtml($textIn) { if ($textIn === null || $textIn === '') { return false; } return (bool) preg_match('/<\s*(p|div|br|table|ul|ol|li|h[1-6]|b|strong|i|em|u|a|img|blockquote)\b/i', $textIn); } /** * Render CCE message body for read views (CESANet / convenors). */ function formatCceMessageForDisplay($textIn) { static $cceMessageFormatter = null; if ($cceMessageFormatter === null) { include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/CCEMessages.php'); global $sqlf; $cceMessageFormatter = new CCEMessages($sqlf); } return $cceMessageFormatter->formatForDisplay($textIn); } /** * Plain-text body for reply/forward quote blocks. */ function quoteCceMessageText($textIn) { return cleanHTMLMessageText($textIn); } /** * HTML quote block for reply/forward in CKEditor compose forms. */ function quoteCceMessageHtmlForEditor($messageText, $sentDateTime, $sentByName) { static $cceMessageFormatter = null; if ($cceMessageFormatter === null) { include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/CCEMessages.php'); global $sqlf; $cceMessageFormatter = new CCEMessages($sqlf); } return $cceMessageFormatter->formatQuotedReplyForEditor($messageText, $sentDateTime, $sentByName); } /** * Render CESAnet / CCE send-message success or failure feedback. * * @param array{ok?:bool,message?:string}|null $result * @param bool $useBootstrap Use Bootstrap alert markup (cesanet) * @return string */ function renderCceMessageSendFeedback($result, $useBootstrap = false) { if (!is_array($result) || empty($result['message'])) { return ''; } $message = htmlspecialchars((string) $result['message'], ENT_QUOTES, 'UTF-8'); $isSuccess = !empty($result['ok']); if ($useBootstrap) { $class = $isSuccess ? 'alert alert-success' : 'alert alert-danger'; return '<div class="' . $class . '" role="alert">' . $message . '</div>'; } $color = $isSuccess ? 'green' : 'red'; return '<p><b><span style="color:' . $color . ';">' . $message . '</span></b></p>'; } function prepSQLValue($value) { global $conni; // if (!isset($conni) || !is_object($conni)) { // return str_replace("'", "\\'", $value); // } return mysql_real_escape_string($value); } function stripInlineStyleTags($text) { $return = preg_replace('/<head[^>]*>.*?<\/head>/is', '', $text); $return = preg_replace('/<style[^>]*>.*?<\/style>/is', '', $return); $return = preg_replace('/<script[^>]*>.*?<\/script>/is', '', $return); // Strip out font-family style attributes in elements $return = preg_replace('/font-family="[^"]*"/s', '', $return); // Strip out font-size style attributes in elements $return = preg_replace('/font-size="[^"]*"/s', '', $return); // Strip these inline styles as well: // font-size:10.0pt;line-height:115%;font-family:"Arial",sans-serif;mso-ascii-theme-font:minor-bidi;mso-hansi-theme-font:minor-bidi; // mso-bidi-theme-font:minor-bidi;mso-ansi-language:EN-ZA $return = preg_replace('/font-size:[^;]*;/s', '', $return); $return = preg_replace('/line-height:[^;]*;/s', '', $return); $return = preg_replace('/font-family:[^;]*;/s', '', $return); $return = preg_replace('/mso-ascii-theme-font:[^;]*;/s', '', $return); // $return = preg_replace('/mso-hansi-theme-font:[^;]*;/s', '', $return); // $return = preg_replace('/mso-bidi-theme-font:[^;]*;/s', '', $return); // $return = preg_replace('/mso-ansi-language:[^;]*;/s', '', $return); return $return; } class Utils { /** * Lightweight cURL wrapper for JSON and form-based HTTP calls. * * @param string $url * @param string $method * @param mixed $body Array|string|null * @param array $headers * @param int $connectTimeout * @param int $timeout * @return array{ok:bool,http_code:int,response:string,error:string} */ public static function curlRequest($url, $method = 'GET', $body = null, $headers = array(), $connectTimeout = 10, $timeout = 20) { if (!function_exists('curl_init')) { return array( 'ok' => false, 'http_code' => 0, 'response' => '', 'error' => 'curl_init is unavailable' ); } $ch = curl_init($url); $method = strtoupper(trim((string) $method)); if ($method === '') { $method = 'GET'; } $requestHeaders = is_array($headers) ? $headers : array(); $payload = null; if ($body !== null) { if (is_array($body)) { $payload = json_encode($body); if ($payload === false) { return array( 'ok' => false, 'http_code' => 0, 'response' => '', 'error' => 'Unable to encode request body as JSON' ); } $hasContentType = false; foreach ($requestHeaders as $header) { if (stripos((string) $header, 'Content-Type:') === 0) { $hasContentType = true; break; } } if (!$hasContentType) { $requestHeaders[] = 'Content-Type: application/json'; } } else { $payload = (string) $body; } } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, intval($connectTimeout)); curl_setopt($ch, CURLOPT_TIMEOUT, intval($timeout)); if ($payload !== null) { curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); } if (is_array($requestHeaders) && count($requestHeaders) > 0) { curl_setopt($ch, CURLOPT_HTTPHEADER, $requestHeaders); } $responseBody = curl_exec($ch); $httpCode = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE)); $curlError = curl_error($ch); curl_close($ch); if ($responseBody === false) { $responseBody = ''; } return array( 'ok' => (empty($curlError) && $httpCode >= 200 && $httpCode < 300), 'http_code' => $httpCode, 'response' => (string) $responseBody, 'error' => (string) $curlError ); } /** * Extract date from Excel cell * Handles both Excel serial numbers and formatted date strings * * @param \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $worksheet The worksheet object * @param string $cellAddress The cell address (e.g., 'A1') * @return \DateTime|null The DateTime object or null if parsing fails */ public static function extractExcelDate($worksheet, $cellAddress) { // Check if PhpSpreadsheet Date class is available if (!class_exists('PhpOffice\PhpSpreadsheet\Shared\Date')) { return null; } $cell = $worksheet->getCell($cellAddress); $value = $cell->getValue(); // If it's a numeric value, it might be an Excel date serial number if (is_numeric($value) && $value > 0) { try { // Try to convert Excel serial number to DateTime $dateTime = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value); return $dateTime; } catch (Exception $e) { // If conversion fails, treat as regular number } } // Try to get formatted value (might be a date string) $formattedValue = $cell->getFormattedValue(); if (!empty($formattedValue)) { // Try various date formats $formats = ['Y-m-d', 'd/m/Y', 'm/d/Y', 'd-m-Y', 'Y/m/d', 'd.m.Y']; foreach ($formats as $format) { $date = DateTime::createFromFormat($format, trim($formattedValue)); if ($date !== false) { return $date; } } } // If all else fails, try parsing the raw value as a string if (!empty($value)) { $formats = ['Y-m-d', 'd/m/Y', 'm/d/Y', 'd-m-Y', 'Y/m/d', 'd.m.Y']; foreach ($formats as $format) { $date = DateTime::createFromFormat($format, trim($value)); if ($date !== false) { return $date; } } } return null; } /** * SQL-safe value for a PHPMaker table field (lookup filter helper). * Resolves the same field values PHPMaker uses on list/add screens: * CurrentValue, then FormValue (post-back), then session (master filter), then query string. * Returns ew_AdjustSql() value, or SQL NULL when empty/missing. * * @param string $fieldName * @param object|null $table PHPMaker table object (defaults to global $SchoolPayments) * @return string */ public static function currentValue($fieldName, $table = null) { if ($table === null) { global $SchoolPayments; $table = isset($SchoolPayments) ? $SchoolPayments : null; } if (!is_object($table) || !isset($table->$fieldName) || !is_object($table->$fieldName)) { return 'NULL'; } $field = $table->$fieldName; $value = isset($field->CurrentValue) ? $field->CurrentValue : null; if ($value === null || strval($value) === '') { if (isset($field->FormValue) && strval($field->FormValue) !== '') { $value = $field->FormValue; } elseif (method_exists($field, 'getSessionValue') && strval($field->getSessionValue()) !== '') { // Same EventID as SchoolPayments list master/detail filter (SchoolEvents). $value = $field->getSessionValue(); } elseif (isset($field->QueryStringValue) && strval($field->QueryStringValue) !== '') { $value = $field->QueryStringValue; } } if ($value === null || strval($value) === '') { return 'NULL'; } if (function_exists('ew_AdjustSql')) { return ew_AdjustSql($value); } return "'" . addslashes((string) $value) . "'"; } } if (!function_exists('CurrentValue')) { /** * Global wrapper for PHPMaker custom lookup filters (e.g. SchoolPayments AttendeeID). */ function CurrentValue($fieldName) { return Utils::currentValue($fieldName); } }