501 lines
19 KiB
PHP
501 lines
19 KiB
PHP
<?php
|
|
require_once "inc/prerequisites.inc.php";
|
|
|
|
if ($_SESSION['mailcow_cc_role'] == "admin" || $_SESSION['mailcow_cc_role'] == "domainadmin") {
|
|
require_once "inc/header.inc.php";
|
|
$_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
|
|
?>
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title"><?=$lang['mailbox']['domains'];?> <span class="badge" id="numRowsDomain"></span></h3>
|
|
<div class="pull-right">
|
|
<span class="clickable filter" data-toggle="tooltip" title="<?=$lang['mailbox']['filter_table'];?>" data-container="body">
|
|
<i class="glyphicon glyphicon-filter"></i>
|
|
</span>
|
|
<?php
|
|
if ($_SESSION['mailcow_cc_role'] == "admin"):
|
|
?>
|
|
<a href="/add.php?domain"><span class="glyphicon glyphicon-plus"></span></a>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</div>
|
|
</div>
|
|
<div class="panel-body">
|
|
<input type="text" class="form-control" id="domaintable-filter" data-action="filter" data-filters="#domaintable" placeholder="Filter" />
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-striped sortable-theme-bootstrap" data-sortable id="domaintable">
|
|
<thead>
|
|
<tr>
|
|
<th class="sort-table" style="min-width: 86px;"><?=$lang['mailbox']['domain'];?></th>
|
|
<th class="sort-table" style="min-width: 81px;"><?=$lang['mailbox']['aliases'];?></th>
|
|
<th class="sort-table" style="min-width: 99px;"><?=$lang['mailbox']['mailboxes'];?></th>
|
|
<th class="sort-table" style="min-width: 172px;"><?=$lang['mailbox']['mailbox_quota'];?></th>
|
|
<th class="sort-table" style="min-width: 117px;"><?=$lang['mailbox']['domain_quota'];?></th>
|
|
<?php
|
|
if ($_SESSION['mailcow_cc_role'] == "admin"):
|
|
?>
|
|
<th class="sort-table" style="min-width: 105px;"><?=$lang['mailbox']['backup_mx'];?></th>
|
|
<?php
|
|
endif;
|
|
?>
|
|
<th class="sort-table" style="min-width: 76px;"><?=$lang['mailbox']['active'];?></th>
|
|
<th style="text-align: right; min-width: 200px;" data-sortable="false"><?=$lang['mailbox']['action'];?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
try {
|
|
$stmt = $pdo->prepare("SELECT
|
|
`domain`,
|
|
`aliases`,
|
|
`mailboxes`,
|
|
`maxquota` * 1048576 AS `maxquota`,
|
|
`quota` * 1048576 AS `quota`,
|
|
CASE `backupmx` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `backupmx`,
|
|
CASE `active` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `active`
|
|
FROM `domain` WHERE
|
|
`domain` IN (
|
|
SELECT `domain` FROM `domain_admins` WHERE `username`= :username AND `active`='1'
|
|
)
|
|
OR 'admin'= :admin");
|
|
$stmt->execute(array(
|
|
':username' => $_SESSION['mailcow_cc_username'],
|
|
':admin' => $_SESSION['mailcow_cc_role'],
|
|
));
|
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
catch (PDOException $e) {
|
|
$_SESSION['return'] = array(
|
|
'type' => 'danger',
|
|
'msg' => 'MySQL: '.$e
|
|
);
|
|
return false;
|
|
}
|
|
if(!empty($rows)):
|
|
while($row = array_shift($rows)):
|
|
try {
|
|
$stmt = $pdo->prepare("SELECT COUNT(*) AS `count` FROM `alias`
|
|
WHERE `domain`= :domain
|
|
AND `address` NOT IN (
|
|
SELECT `username` FROM `mailbox`)");
|
|
$stmt->execute(array(':domain' => $row['domain']));
|
|
$AliasData = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
$stmt = $pdo->prepare("SELECT
|
|
COUNT(*) AS `count`,
|
|
COALESCE(SUM(`quota`), '0') AS `quota`
|
|
FROM `mailbox`
|
|
WHERE `domain` = :domain");
|
|
$stmt->execute(array(':domain' => $row['domain']));
|
|
$MailboxData = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
}
|
|
catch (PDOException $e) {
|
|
$_SESSION['return'] = array(
|
|
'type' => 'danger',
|
|
'msg' => 'MySQL: '.$e
|
|
);
|
|
return false;
|
|
}
|
|
?>
|
|
<tr id="data">
|
|
<td><?=htmlspecialchars($row['domain']);?></td>
|
|
<td><?=intval($AliasData['count']);?> / <?=intval($row['aliases']);?></td>
|
|
<td><?=$MailboxData['count'];?> / <?=$row['mailboxes'];?></td>
|
|
<td><?=formatBytes(intval($row['maxquota']), 2);?></td>
|
|
<td><?=formatBytes(intval($MailboxData['quota']), 2);?> / <?=formatBytes(intval($row['quota']));?></td>
|
|
<?php
|
|
if ($_SESSION['mailcow_cc_role'] == "admin"):
|
|
?>
|
|
<td><?=$row['backupmx'];?></td>
|
|
<?php
|
|
endif;
|
|
?>
|
|
<td><?=$row['active'];?></td>
|
|
<?php
|
|
if ($_SESSION['mailcow_cc_role'] == "admin"):
|
|
?>
|
|
<td style="text-align: right;">
|
|
<div class="btn-group">
|
|
<a href="/edit.php?domain=<?=urlencode($row['domain']);?>" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-pencil"></span> <?=$lang['mailbox']['edit'];?></a>
|
|
<a href="/delete.php?domain=<?=urlencode($row['domain']);?>" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash"></span> <?=$lang['mailbox']['remove'];?></a>
|
|
</div>
|
|
</td>
|
|
<?php
|
|
else:
|
|
?>
|
|
<td style="text-align: right;">
|
|
<div class="btn-group">
|
|
<a href="/edit.php?domain=<?=urlencode($row['domain']);?>" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-pencil"></span> <?=$lang['mailbox']['edit'];?></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
endif;
|
|
endwhile;
|
|
else:
|
|
?>
|
|
<tr id="no-data"><td colspan="8" style="text-align: center; font-style: italic;"><?=$lang['mailbox']['no_record'];?></td></tr>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</tbody>
|
|
<?php
|
|
if ($_SESSION['mailcow_cc_role'] == "admin"):
|
|
?>
|
|
<tfoot>
|
|
<tr id="no-data">
|
|
<td colspan="8" style="text-align: center; font-style: normal; border-top: 1px solid #e7e7e7;">
|
|
<a href="/add.php?domain" class="btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus"></span> <?=$lang['mailbox']['add_domain'];?></a>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title"><?=$lang['mailbox']['domain_aliases'];?> <span class="badge" id="numRowsDomainAlias"></span></h3>
|
|
<div class="pull-right">
|
|
<span class="clickable filter" data-toggle="tooltip" title="<?=$lang['mailbox']['filter_table'];?>" data-container="body">
|
|
<i class="glyphicon glyphicon-filter"></i>
|
|
</span>
|
|
<a href="/add.php?aliasdomain"><span class="glyphicon glyphicon-plus"></span></a>
|
|
</div>
|
|
</div>
|
|
<div class="panel-body">
|
|
<input type="text" class="form-control" id="domainaliastable-filter" data-action="filter" data-filters="#domainaliastable" placeholder="Filter" />
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-striped sortable-theme-bootstrap" data-sortable id="domainaliastable">
|
|
<thead>
|
|
<tr>
|
|
<th class="sort-table" style="min-width: 67px;"><?=$lang['mailbox']['alias'];?></th>
|
|
<th class="sort-table" style="min-width: 127px;"><?=$lang['mailbox']['target_domain'];?></th>
|
|
<th class="sort-table" style="min-width: 76px;"><?=$lang['mailbox']['active'];?></th>
|
|
<th style="text-align: right; min-width: 200px;" data-sortable="false"><?=$lang['mailbox']['action'];?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
try {
|
|
$stmt = $pdo->prepare("SELECT
|
|
`alias_domain`,
|
|
`target_domain`,
|
|
CASE `active` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `active`
|
|
FROM `alias_domain`
|
|
WHERE `target_domain` IN (
|
|
SELECT `domain` FROM `domain_admins`
|
|
WHERE `username`= :username
|
|
AND `active`='1'
|
|
)
|
|
OR 'admin' = :admin");
|
|
$stmt->execute(array(
|
|
':username' => $_SESSION['mailcow_cc_username'],
|
|
':admin' => $_SESSION['mailcow_cc_role'],
|
|
));
|
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
} catch(PDOException $e) {
|
|
$_SESSION['return'] = array(
|
|
'type' => 'danger',
|
|
'msg' => 'MySQL: '.$e
|
|
);
|
|
}
|
|
if(!empty($rows)):
|
|
while($row = array_shift($rows)):
|
|
?>
|
|
<tr id="data">
|
|
<td><?=htmlspecialchars($row['alias_domain']);?></td>
|
|
<td><?=htmlspecialchars($row['target_domain']);?></td>
|
|
<td><?=$row['active'];?></td>
|
|
<td style="text-align: right;">
|
|
<div class="btn-group">
|
|
<a href="/edit.php?aliasdomain=<?=urlencode($row['alias_domain']);?>" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-pencil"></span> <?=$lang['mailbox']['edit'];?></a>
|
|
<a href="/delete.php?aliasdomain=<?=urlencode($row['alias_domain']);?>" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash"></span> <?=$lang['mailbox']['remove'];?></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
endwhile;
|
|
else:
|
|
?>
|
|
<tr id="no-data"><td colspan="4" style="text-align: center; font-style: italic;"><?=$lang['mailbox']['no_record'];?></td></tr>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr id="no-data">
|
|
<td colspan="8" style="text-align: center; border-top: 1px solid #e7e7e7;">
|
|
<a href="/add.php?aliasdomain" class="btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus"></span> <?=$lang['mailbox']['add_domain_alias'];?></a>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title"><?=$lang['mailbox']['mailboxes'];?> <span class="badge" id="numRowsMailbox"></span></h3>
|
|
<div class="pull-right">
|
|
<span class="clickable filter" data-toggle="tooltip" title="<?=$lang['mailbox']['filter_table'];?>" data-container="body">
|
|
<i class="glyphicon glyphicon-filter"></i>
|
|
</span>
|
|
<a href="/add.php?mailbox"><span class="glyphicon glyphicon-plus"></span></a>
|
|
</div>
|
|
</div>
|
|
<div class="panel-body">
|
|
<input type="text" class="form-control" id="mailboxtable-filter" data-action="filter" data-filters="#mailboxtable" placeholder="Filter" />
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-striped sortable-theme-bootstrap" data-sortable id="mailboxtable">
|
|
<thead>
|
|
<tr>
|
|
<th class="sort-table" style="min-width: 100px;"><?=$lang['mailbox']['username'];?></th>
|
|
<th class="sort-table" style="min-width: 98px;"><?=$lang['mailbox']['fname'];?></th>
|
|
<th class="sort-table" style="min-width: 86px;"><?=$lang['mailbox']['domain'];?></th>
|
|
<th class="sort-table" style="min-width: 75px;"><?=$lang['mailbox']['quota'];?></th>
|
|
<th class="sort-table" style="min-width: 99px;"><?=$lang['mailbox']['in_use'];?></th>
|
|
<th class="sort-table" style="min-width: 100px;"><?=$lang['mailbox']['msg_num'];?></th>
|
|
<th class="sort-table" style="min-width: 76px;"><?=$lang['mailbox']['active'];?></th>
|
|
<th style="text-align: right; min-width: 200px;" data-sortable="false"><?=$lang['mailbox']['action'];?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
try {
|
|
$stmt = $pdo->prepare("SELECT
|
|
`domain`.`backupmx`,
|
|
`mailbox`.`username`,
|
|
`mailbox`.`name`,
|
|
CASE `mailbox`.`active` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `active`,
|
|
`mailbox`.`domain`,
|
|
`mailbox`.`quota`,
|
|
`quota2`.`bytes`,
|
|
`quota2`.`messages`
|
|
FROM `mailbox`, `quota2`, `domain`
|
|
WHERE (`mailbox`.`username` = `quota2`.`username`)
|
|
AND (`domain`.`domain` = `mailbox`.`domain`)
|
|
AND (`mailbox`.`domain` IN (
|
|
SELECT `domain` FROM `domain_admins`
|
|
WHERE `username`= :username
|
|
AND `active`='1'
|
|
)
|
|
OR 'admin' = :admin)");
|
|
$stmt->execute(array(
|
|
':username' => $_SESSION['mailcow_cc_username'],
|
|
':admin' => $_SESSION['mailcow_cc_role'],
|
|
));
|
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
catch (PDOException $e) {
|
|
$_SESSION['return'] = array(
|
|
'type' => 'danger',
|
|
'msg' => 'MySQL: '.$e
|
|
);
|
|
return false;
|
|
}
|
|
if(!empty($rows)):
|
|
while($row = array_shift($rows)):
|
|
?>
|
|
<tr id="data">
|
|
<?php
|
|
if ($row['backupmx'] == "0"):
|
|
?>
|
|
<td><?=htmlspecialchars($row['username']);?></td>
|
|
<?php
|
|
else:
|
|
?>
|
|
<td><span data-toggle="tooltip" title="Relayed"><i class="glyphicon glyphicon-forward"></i> <?=htmlspecialchars($row['username']);?></span></td>
|
|
<?php
|
|
endif;
|
|
?>
|
|
<td><?=htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8');?></td>
|
|
<td><?=htmlspecialchars($row['domain']);?></td>
|
|
<td><?=formatBytes(intval($row['bytes']), 2);?> / <?=formatBytes(intval($row['quota']), 2);?></td>
|
|
<td style="min-width:120px;">
|
|
<?php
|
|
$percentInUse = round((intval($row['bytes']) / intval($row['quota'])) * 100);
|
|
if ($percentInUse >= 90) {
|
|
$pbar = "progress-bar-danger";
|
|
}
|
|
elseif ($percentInUse >= 75) {
|
|
$pbar = "progress-bar-warning";
|
|
}
|
|
else {
|
|
$pbar = "progress-bar-success";
|
|
}
|
|
?>
|
|
<div class="progress">
|
|
<div class="progress-bar <?=$pbar;?>" role="progressbar" aria-valuenow="<?=$percentInUse;?>" aria-valuemin="0" aria-valuemax="100" style="min-width:2em;width: <?=$percentInUse;?>%;">
|
|
<?=$percentInUse;?>%
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td><?=$row['messages'];?></td>
|
|
<td><?=$row['active'];?></td>
|
|
<td style="text-align: right;">
|
|
<div class="btn-group">
|
|
<a href="/edit.php?mailbox=<?=urlencode($row['username']);?>" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-pencil"></span> <?=$lang['mailbox']['edit'];?></a>
|
|
<a href="/delete.php?mailbox=<?=urlencode($row['username']);?>" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash"></span> <?=$lang['mailbox']['remove'];?></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
endwhile;
|
|
else:
|
|
?>
|
|
<tr id="no-data"><td colspan="8" style="text-align: center; font-style: italic;"><?=$lang['mailbox']['no_record'];?></td></tr>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr id="no-data">
|
|
<td colspan="8" style="text-align: center; border-top: 1px solid #e7e7e7;">
|
|
<a href="/add.php?mailbox" class="btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus"></span> <?=$lang['mailbox']['add_mailbox'];?></a>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title"><?=$lang['mailbox']['aliases'];?> <span class="badge" id="numRowsAlias"></span></h3>
|
|
<div class="pull-right">
|
|
<span class="clickable filter" data-toggle="tooltip" title="<?=$lang['mailbox']['filter_table'];?>" data-container="body">
|
|
<i class="glyphicon glyphicon-filter"></i>
|
|
</span>
|
|
<a href="/add.php?alias"><span class="glyphicon glyphicon-plus"></span></a>
|
|
</div>
|
|
</div>
|
|
<div class="panel-body">
|
|
<input type="text" class="form-control" id="aliastable-filter" data-action="filter" data-filters="#aliastable" placeholder="Filter" />
|
|
</div>
|
|
<div class="table-responsive">
|
|
<table class="table table-striped sortable-theme-bootstrap" data-sortable id="aliastable">
|
|
<thead>
|
|
<tr>
|
|
<th class="sort-table" style="min-width: 67px;"><?=$lang['mailbox']['alias'];?></th>
|
|
<th class="sort-table" style="min-width: 119px;"><?=$lang['mailbox']['target_address'];?></th>
|
|
<th class="sort-table" style="min-width: 86px;"><?=$lang['mailbox']['domain'];?></th>
|
|
<th class="sort-table" style="min-width: 76px;"><?=$lang['mailbox']['active'];?></th>
|
|
<th style="text-align: right; min-width: 200px;" data-sortable="false"><?=$lang['mailbox']['action'];?></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
try {
|
|
$stmt = $pdo->prepare("SELECT
|
|
`address`,
|
|
`goto`,
|
|
`domain`,
|
|
CASE `active` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `active`
|
|
FROM alias
|
|
WHERE (
|
|
`address` NOT IN (
|
|
SELECT `username` FROM `mailbox`
|
|
)
|
|
AND `address` != `goto`
|
|
) AND (`domain` IN (
|
|
SELECT `domain` FROM `domain_admins`
|
|
WHERE `username` = :username
|
|
AND active='1'
|
|
)
|
|
OR 'admin' = :admin)");
|
|
$stmt->execute(array(
|
|
':username' => $_SESSION['mailcow_cc_username'],
|
|
':admin' => $_SESSION['mailcow_cc_role'],
|
|
));
|
|
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
catch (PDOException $e) {
|
|
$_SESSION['return'] = array(
|
|
'type' => 'danger',
|
|
'msg' => 'MySQL: '.$e
|
|
);
|
|
return false;
|
|
}
|
|
if(!empty($rows)):
|
|
while($row = array_shift($rows)):
|
|
?>
|
|
<tr id="data">
|
|
<td>
|
|
<?php
|
|
if(!filter_var($row['address'], FILTER_VALIDATE_EMAIL)):
|
|
?>
|
|
<span class="glyphicon glyphicon-pushpin" aria-hidden="true"></span> Catch-all @<?=htmlspecialchars($row['domain']);?>
|
|
<?php
|
|
else:
|
|
echo htmlspecialchars($row['address']);
|
|
endif;
|
|
?>
|
|
</td>
|
|
<td>
|
|
<?php
|
|
foreach(explode(",", $row['goto']) as $goto) {
|
|
echo nl2br(htmlspecialchars($goto.PHP_EOL));
|
|
}
|
|
?>
|
|
</td>
|
|
<td><?=htmlspecialchars($row['domain']);?></td>
|
|
<td><?=$row['active'];?></td>
|
|
<td style="text-align: right;">
|
|
<div class="btn-group">
|
|
<a href="/edit.php?alias=<?=urlencode($row['address']);?>" class="btn btn-xs btn-default"><span class="glyphicon glyphicon-pencil"></span> <?=$lang['mailbox']['edit'];?></a>
|
|
<a href="/delete.php?alias=<?=urlencode($row['address']);?>" class="btn btn-xs btn-danger"><span class="glyphicon glyphicon-trash"></span> <?=$lang['mailbox']['remove'];?></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
endwhile;
|
|
else:
|
|
?>
|
|
<tr id="no-data"><td colspan="5" style="text-align: center; font-style: italic;"><?=$lang['mailbox']['no_record'];?></td></tr>
|
|
<?php
|
|
endif;
|
|
?>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr id="no-data">
|
|
<td colspan="8" style="text-align: center; border-top: 1px solid #e7e7e7;">
|
|
<a href="/add.php?alias" class="btn btn-xs btn-primary"><span class="glyphicon glyphicon-plus"></span> <?=$lang['mailbox']['add_alias'];?></a>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div> <!-- /container -->
|
|
<script src="js/sorttable.js"></script>
|
|
<script src="js/mailbox.js"></script>
|
|
<?php
|
|
require_once("inc/footer.inc.php");
|
|
} else {
|
|
header('Location: /');
|
|
exit();
|
|
}
|
|
?>
|