Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • smradius/smradius
  • centiva-shail/smradius
  • nkukard/smradius
3 results
Show changes
Showing
with 0 additions and 2940 deletions
<?php
# Mailbox stuff
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Soap functions
require_once("php/soapfuncs.php");
# Javascript stuff
include("js.getRandomPass");
?>
<a href=".">Home</a><br><br>
<a href="mailTransports.php">Back to mail transport search</a><br><br>
<a href="mailTransports.php?search=1">Back to mail transports</a><br><br>
<?php
# Actual form action to add mailbox
function actionAdd() {
global $soap;
global $transportID;
$mailboxInfo = NULL;
# Verify data
if ($_POST["address"] != "") {
$mailboxInfo["Address"] = $_POST["address"];
} else {
echo "Address must be specified!<br>";
return;
}
if ($_POST["password"] != "") {
$mailboxInfo["Password"] = $_POST["password"];
} else {
echo "Password must be specified!<br>";
return;
}
# Check optional data
if ($_POST["quota"] != "") {
$mailboxInfo["Quota"] = $_POST["quota"];
} else {
echo "Quota must be defined!, you probably want to choose 5 for a 5Mb mailbox.<br>";
return;
}
if ($_POST["policyID"] != "") {
$mailboxInfo["PolicyID"] = $_POST["policyID"];
}
if ($_POST["name"] != "") {
$mailboxInfo["Name"] = $_POST["name"];
}
if ($_POST["agentRef"] != "") {
$mailboxInfo["AgentRef"] = $_POST["agentRef"];
}
if ($_POST["premiumSMTP"] != "") {
$mailboxInfo["PremiumSMTP"] = $_POST["premiumSMTP"];
}
if ($_POST["premiumPolicy"] != "") {
$mailboxInfo["PremiumPolicy"] = $_POST["premiumPolicy"];
}
if ($_POST["agentDisabled"] != "") {
$mailboxInfo["AgentDisabled"] = $_POST["agentDisabled"];
}
# Create mailbox and check for error
$res = $soap->createMailbox($transportID,$mailboxInfo);
if ($res > 0) {
echo "Added mailbox<br>\n";
} else {
echo "Error creating mailbox: ".strSoapError($res);
}
}
# Actual form action to update mailbox
function actionUpdate() {
global $soap;
global $mailboxID;
# Create update hash
$update = NULL;
if ($_POST["password"] != "") {
$update["Password"] = $_POST["password"];
}
if ($_POST["quota"] != "") {
$update["Quota"] = $_POST["quota"];
}
if ($_POST["policyID"] != "nochange") {
$update["PolicyID"] = $_POST["policyID"];
}
if ($_POST["name"] != "") {
$update["Name"] = $_POST["name"];
}
if ($_POST["agentRef"] != "") {
$update["AgentRef"] = $_POST["agentRef"];
}
if ($_POST["premiumSMTP"] != "") {
$update["PremiumSMTP"] = $_POST["premiumSMTP"];
}
if ($_POST["premiumPolicy"] != "") {
$update["PremiumPolicy"] = $_POST["premiumPolicy"];
}
if ($_POST["agentDisabled"] != "") {
$update["AgentDisabled"] = $_POST["agentDisabled"];
}
# If there are still updates to be done, do them
if ($update != NULL) {
$update["ID"] = $mailboxID;
$res = $soap->updateMailbox($update);
if ($res == 0) {
echo "Updated mailbox<br>\n";
} else {
echo "Error updating mailbox: ".strSoapError($res);
}
# Or report no updates to be made
} else {
echo "No updates to be made!\n";
}
}
# Actual form action to remove a mailbox
function actionRemove() {
global $soap;
global $mailboxID;
$res = $soap->removeMailbox($mailboxID);
if ($res == 0) {
echo "Removed mailbox\n";
} else {
echo "Error removing mailbox: ".strSoapError($res);
}
}
# Display edit screen
function screenEdit() {
global $soap;
global $transportID;
global $mailboxID;
$transportInfo = $soap->getMailTransportInfo($transportID);
if (!is_object($transportInfo)) {
echo "getMailTransportInfo: ".strSoapError($transportInfo);
return;
}
$mailboxInfo = $soap->getMailboxInfo($mailboxID);
if (!is_object($mailboxInfo)) {
echo "getMailboxInfo: ".strSoapError($mailboxInfo);
return;
}
$mailPolicies = $soap->getMailPolicies();
if (!is_array($mailPolicies)) {
echo "getMailPolicies: ".strSoapError($mailPolicies);
return;
}
?>
<form action="mailboxes.php?transportID=<?php echo $transportID; ?>&mailboxID=<?php echo $mailboxID; ?>" method="POST">
<input type="hidden" name="action" value="update">
<table border="1">
<tr>
<td colspan="3" align="center">
Mailbox: <?php printf("%s@%s",$mailboxInfo->Address,$transportInfo->DomainName); ?>
</td>
</tr>
<tr>
<td>Attribute</td>
<td>Value</td>
<td>New Value</td>
</tr>
<tr>
<td>Quota (in Mbyte)</td>
<td><?php echo $mailboxInfo->Quota; ?></td>
<td><input type="text" name="quota"></td>
</tr>
<tr>
<td>Password</td>
<td>*encrypted*</td>
<td>
<input type="text" name="password">
<input type="button" value="generate" onClick="this.form.password.value=getRandomPass(8)">
</td>
</tr>
<?php
$policyName = "";
foreach ($mailPolicies as $policy) {
if ($mailboxInfo->PolicyID == $policy->ID) {
$policyName = $policy->PolicyName;
}
}
?>
<tr>
<td>Policy</td>
<td><?php echo $policyName ? $policyName : "default"; ?></td>
<td>
<select name="policyID">
<option value="nochange"></option>
<option value="">Default</option>
<?php
foreach ($mailPolicies as $policy) {
printf("<option value=\"%s\">%s</option>",$policy->ID,$policy->PolicyName);
}
?>
</select>
</td>
</tr>
<tr>
<td>Name</td>
<td><?php echo $mailboxInfo->Name; ?></td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>AgentRef</td>
<td><?php echo $mailboxInfo->AgentRef; ?></td>
<td><input type="text" name="agentRef"></td>
</tr>
<tr>
<td>Premium SMTP</td>
<td><?php echo $mailboxInfo->PremiumSMTP ? "yes" : "no"; ?></td>
<td>
<select name="premiumSMTP">
<option value="0" <?php if (!$mailboxInfo->PremiumSMTP) { echo "selected"; } ?>>no</option>
<option value="1" <?php if ($mailboxInfo->PremiumSMTP) { echo "selected"; } ?>>yes</option>
</select>
</td>
</tr>
<tr>
<td>Premium Policy</td>
<td><?php echo $mailboxInfo->PremiumPolicy ? "yes" : "no"; ?></td>
<td>
<select name="premiumPolicy">
<option value="0" <?php if (!$mailboxInfo->PremiumPolicy) { echo "selected"; } ?>>no</option>
<option value="1" <?php if ($mailboxInfo->PremiumPolicy) { echo "selected"; } ?>>yes</option>
</select>
</td>
</tr>
<tr>
<td>Disabled</td>
<td><?php echo $mailboxInfo->AgentDisabled ? "yes" : "no"; ?></td>
<td>
<select name="agentDisabled">
<option value="0" <?php if (!$mailboxInfo->AgentDisabled) { echo "selected"; } ?>>no</option>
<option value="1" <?php if ($mailboxInfo->AgentDisabled) { echo "selected"; } ?>>yes</option>
</select>
</td>
</tr>
<tr>
<td align="center" colspan="3">
<input type="submit" value="Update">
</td>
</tr>
</table>
</form>
<br>
<font size="-1">
Note:
<li>To enable clients to log in an change their anti-virus/spam settings, set [Policy] to "Client - Premium Service" and [Premium Policy] to "yes"
</font>
<?php
}
# Remove screen
function screenRemove() {
global $soap;
global $transportID;
global $mailboxID;
$transportInfo = $soap->getMailTransportInfo($transportID);
if (!is_object($transportInfo)) {
echo "getMailTransportInfo: ".strSoapError($transportInfo);
return;
}
$mailboxInfo = $soap->getMailboxInfo($mailboxID);
if (!is_object($mailboxInfo)) {
echo "getMailboxInfo: ".strSoapError($mailboxInfo);
return;
}
?>
<form action="mailboxes.php?transportID=<?php echo $transportID ?>&mailboxID=<?php echo $mailboxID ?>" method="POST">
<input type="hidden" name="action" value="remove">
Are you very sure you wish to remove mailbox <?php printf("%s@%s",$mailboxInfo->Address,$transportInfo->DomainName) ?>?
<br>
<input type="submit" value="Yes">
</form>
<br
<?php
}
# Add screen
function screenAdd() {
global $soap;
global $transportID;
global $mailboxID;
$transportInfo = $soap->getMailTransportInfo($transportID);
if (!is_object($transportInfo)) {
echo "getMailTransportInfo: ".strSoapError($transportInfo);
return;
}
?>
<form action="mailboxes.php?transportID=<?php echo $transportID ?>&action=add" method="POST">
<input type="hidden" name="action" value="add">
<table border="1">
<tr>
<td>Attribute</td>
<td>Value</td>
</tr>
<tr>
<td>Address (@<?php echo $transportInfo->DomainName ?>)</td>
<td><input type="text" name="address"></td>
</tr>
<tr>
<td>Password</td>
<td>
<input type="text" name="password">
<input type="button" value="generate" onClick="this.form.password.value=getRandomPass(8)">
</td>
</tr>
<tr>
<td>Quota (in Mbyte)</td>
<td><input type="text" name="quota"></td>
</tr>
<tr>
<td>Name</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>AgentRef</td>
<td><input type="text" name="agentRef"></td>
</tr>
<tr>
<td>Premium SMTP</td>
<td>
<select name="premiumSMTP">
<option value="0" selected>no</option>
<option value="1">yes</option>
</select>
</td>
</tr>
<tr>
<td>Premium Policy</td>
<td>
<select name="premiumPolicy">
<option value="0" selected>no</option>
<option value="1">yes</option>
</select>
</td>
</tr>
<tr>
<td>Disabled</td>
<td>
<select name="agentDisabled">
<option value="0" selected>no</option>
<option value="1">yes</option>
</select>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="Add">
</td>
</tr>
</table>
</form>
<br>
<?php
}
# List mailboxes
function mailboxList($searchOptions) {
global $soap;
global $transportID;
$transportInfo = $soap->getMailTransportInfo($transportID);
if (!is_object($transportInfo)) {
echo "getMailTransportInfo: ".strSoapError($transportInfo);
return;
}
?>
<table border="1">
<tr>
<td colspan="7" align="center">Search Results for Mailboxes on <?php echo $transportInfo->DomainName; ?></td>
</tr>
<tr>
<td rowspan="2" align="center">Mailbox</td>
<td rowspan="2" align="center">Quota</td>
<td rowspan="2" align="center">AgentRef</td>
<td colspan="3" align="center">Disable</td>
<td rowspan="2"></td>
</tr>
<tr>
<td>Agent</td>
<td>Login</td>
<td>Delivery</td>
</tr>
<?php
$mailboxes = $soap->getMailboxes($transportID,$searchOptions);
if (is_array($mailboxes)) {
if (count($mailboxes)) {
?>
<tr>
<td colspan="7" align="center">
<a href="mailboxes.php?transportID=<?php echo $transportID ?>&screen=add">Add Mailbox</a>
</td>
</tr>
<?php
}
foreach ($mailboxes as $item) {
?>
<tr>
<td><?php echo $item->Address; ?></td>
<td><?php echo $item->Quota; ?>Mb</td>
<td><?php echo $item->AgentRef; ?></td>
<td align="center"><?php echo $item->AgentDisabled ? "yes" : "no"; ?></td>
<td align="center"><?php echo $item->DisableLogin ? "yes" : "no"; ?></td>
<td align="center"><?php echo $item->DisableDelivery ? "yes" : "no"; ?></td>
<td>
<a href="mailboxes.php?transportID=<?php echo $transportID; ?>&mailboxID=<?php echo $item->ID; ?>&screen=edit">Edit</a>
| <a href="mailboxes.php?transportID=<?php echo $transportID; ?>&mailboxID=<?php echo $item->ID; ?>&screen=remove">Remove</a>
</td>
</tr>
<?php
}
?>
<tr>
<td colspan="7" align="center">
<a href="mailboxes.php?transportID=<?php echo $transportID ?>&screen=add">Add Mailbox</a>
</td>
</tr>
<?php
} else {
?>
<tr>
<td colspan="5">
<?php
echo "getMailboxes: ".strSoapError($mailboxes);
?>
</td>
</tr>
<?php
}
?>
</table>
<?php
}
# Display search box
function searchBox()
{
global $transportID;
?>
<form action="mailboxes.php" method="GET">
<input type="hidden" name="transportID" value="<?php echo $transportID ?>">
<input type="hidden" name="search" value="1">
<table border="1">
<tr>
<td colspan="3" align="center">Search Mailboxes</td>
</tr>
<tr>
<td colspan="2"></td>
<td align="center">Order by</td>
</tr>
<tr>
<td>Address</td>
<td>
<input type="text" name="searchAddress" value="<?php
echo $_SESSION['mailbox_searchAddress']
?>">
</td>
<td align="center">
<input type="radio" name="searchOrderBy" value="Address" <?php
if ($_SESSION['mailbox_searchOrderBy'] == ""
|| $_SESSION['mailbox_searchOrderBy'] == "Address") {
echo "checked";
}
?>>
</td>
</tr>
<tr>
<td>Agent Ref</td>
<td>
<input type="text" name="searchAgentRef" value="<?php
echo $_SESSION['mailbox_searchAgentRef']
?>">
</td>
<td align="center"><input type="radio" name="searchOrderBy" value="AgentRef" <?php
if ($_SESSION['mailbox_searchOrderBy'] == "AgentRef") {
echo "checked";
}
?>>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"></td>
</tr>
</table>
</form>
Note On Searching:
<li>Wildcards can be specified with *'s. For example: *.com
<li>Blank search criteria matches everything
<?php
}
# Check if we have a transport
if ($_REQUEST['transportID'] > 0) {
$transportID = $_REQUEST['transportID'];
$transportInfo = $soap->getMailTransportInfo($transportID);
# Check if we have a mailbox ID, pull in the relevant stuff
if ($_REQUEST['mailboxID'] > 0) {
$mailboxID = $_REQUEST['mailboxID'];
printf("<a href=\"mailboxes.php?transportID=%s\">Back to mailbox search</a><br><br>",$transportID);
printf("<a href=\"mailboxes.php?transportID=%s&search=1\">Back to mailboxes</a><br><br>",$transportID);
# Check if we have a special action to perform
if ($_POST["action"] == "update") {
actionUpdate();
# Actual remove action
} elseif ($_POST["action"] == "remove") {
actionRemove();
# Edit screen
} elseif ($_REQUEST["screen"] == "edit") {
screenEdit();
# Remove screen
} elseif ($_REQUEST["screen"] == "remove") {
screenRemove();
}
} else {
# Check if we have a special action to perform
if ($_REQUEST["screen"] == "add") {
printf("<a href=\"mailboxes.php?transportID=%s\">Back to mailbox search</a><br><br>",$transportID);
printf("<a href=\"mailboxes.php?transportID=%s&search=1\">Back to mailboxes</a><br><br>",$transportID);
screenAdd();
} elseif ($_POST["action"] == "add") {
printf("<a href=\"mailboxes.php?transportID=%s\">Back to mailbox search</a><br><br>",$transportID);
printf("<a href=\"mailboxes.php?transportID=%s&search=1\">Back to mailboxes</a><br><br>",$transportID);
actionAdd();
# We came from search screen
} elseif ($_REQUEST['search'] == 1) {
printf("<a href=\"mailboxes.php?transportID=%s\">Back to mailbox search</a><br><br>",$transportID);
# Process search options
if (isset($_REQUEST['searchAddress'])) {
$_SESSION['mailbox_searchAddress'] = $_REQUEST['searchAddress'];
}
if (isset($_REQUEST['searchAgentRef'])) {
$_SESSION['mailbox_searchAgentRef'] = $_REQUEST['searchAgentRef'];
}
if (isset($_REQUEST['searchOrderBy'])) {
$_SESSION['mailbox_searchOrderBy'] = $_REQUEST['searchOrderBy'];
}
# Setup search
$searchOptions->searchAddress = $_SESSION['mailbox_searchAddress'];
$searchOptions->searchAgentRef = $_SESSION['mailbox_searchAgentRef'];
$searchOptions->searchOrderBy = $_SESSION['mailbox_searchOrderBy'];
mailboxList($searchOptions);
# We need to search
} else {
searchBox();
}
}
} else {
echo "You cannot call this module directly.";
}
# Footer
include("include/footer.php");
?>
<?php
# Radius user add
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
function displayAdd()
{
global $soap;
$radiusClasses = $soap->getRadiusClasses();
if (!is_array($radiusClasses)) {
displayError("getRadiusClasses: ".strSoapError($radiusClasses));
return;
}
?>
<script src="static/js.getRandomPass" type="text/javascript"></script>
<div class="sectiontitle">Add Radius User</div>
<p />
<form action="radius-user-add.php" method="post">
<div>
<input type="hidden" name="frmaction" value="add_final">
</div>
<table class="entrytable">
<tr>
<td class="title">Username</td>
<td class="entry"><input type="text" name="username" /></td>
</tr>
<tr>
<td class="title">Password</td>
<td class="entry">
<input type="text" name="password" />
<input type="button" value="generate" onClick="this.form.password.value=getRandomPass(8)" />
</td>
</tr>
<tr>
<td class="title">Class</td>
<td class="entry">
<select name="classID">
<?php
foreach ($radiusClasses as $class) {
printf("<option value=\"%s\">%s</option>",$class->ID,$class->Service);
}
?>
</select>
</td>
</tr>
<tr>
<td class="title">Usage Cap</td>
<td class="entry"><input type="text" name="usageCap" /></td>
</tr>
<tr>
<td class="title">Notify Email</td>
<td class="entry"><input type="text" name="notifyMethodEmail" /></td>
</tr>
<tr>
<td class="title">Notify Cell #</td>
<td class="entry"><input type="text" name="notifyMethodCell" /></td>
</tr>
<tr>
<td class="title">AgentRef</td>
<td class="entry"><input type="text" name="agentRef" /></td>
</tr>
<tr>
<td class="title">Disabled</td>
<td class="entry">
<select name="agentDisabled">
<option value="0" selected>no</option>
<option value="1">yes</option>
</select>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="Add" />
</td>
</tr>
</table>
</form>
<?php
}
function doAdd()
{
global $soap;
$userInfo = NULL;
# Verify data
if ($_POST["username"] != "") {
$userInfo["Username"] = $_POST["username"];
} else {
displayError("Username must be specified!");
return;
}
if ($_POST["password"] != "") {
$userInfo["Password"] = $_POST["password"];
} else {
displayError("Password must be specified!");
return;
}
if ($_POST["username"] == $_POST["password"]) {
displayError("Password must be specified!");
return;
}
if ($_POST["classID"] != "") {
$userInfo["ClassID"] = $_POST["classID"];
} else {
displayError("Class must be specified!");
return;
}
# Check optional data
if ($_POST["usageCap"] != "") {
$userInfo["UsageCap"] = $_POST["usageCap"];
}
if ($_POST["notifyMethodCell"] != "") {
$userInfo["NotifyMethodCell"] = $_POST["notifyMethodCell"];
}
if ($_POST["notifyMethodEmail"] != "") {
$userInfo["NotifyMethodEmail"] = $_POST["notifyMethodEmail"];
}
if ($_POST["agentRef"] != "") {
$userInfo["AgentRef"] = $_POST["agentRef"];
}
if ($_POST["agentDisabled"] != "") {
$userInfo["AgentDisabled"] = $_POST["agentDisabled"];
}
# Create radius user and check for error
$res = $soap->createRadiusUser($userInfo);
if ($res > 0) {
displaySuccess("Added radius user");
} else {
displayError("Error creating radius user: ".strSoapError($res));
}
}
# Check if we have an action
if (!isset($_POST['frmaction'])) {
displayAdd();
} elseif ($_POST['frmaction'] == "add_main") {
displayAdd();
} elseif ($_POST['frmaction'] == "add_final") {
doAdd();
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user change
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
function displayChange($userID)
{
global $soap;
# Grab user info
$userInfo = $soap->getRadiusUser($userID);
if (!is_object($userInfo)) {
displayError("getRadiusUser: ".strSoapError($userInfo));
return;
}
# check if we dialup or not
$isDialup = preg_match('/dialup/i',$userInfo->Service);
?>
<script src="static/js.getRandomPass" type="text/javascript"></script>
<div class="sectiontitle">Change Radius User</div>
<p />
<form action="radius-user-change.php" method="post">
<div>
<input type="hidden" name="user_id" value="<?php echo $userID; ?>" />
<input type="hidden" name="frmaction" value="change_final" />
</div>
<table class="entrytable">
<tr>
<td class="title">Attribute</td>
<td class="title">Value</td>
<td class="title">New Value</td>
</tr>
<tr>
<td class="title2">Service</td>
<td class="oldvalue"><?php echo $userInfo->Service; ?></td>
<td></td>
</tr>
<tr>
<td class="title2">UsageCap</td>
<td class="oldvalue"><?php echo $userInfo->UsageCap; ?></td>
<td class="entry"><input type="text" name="usageCap" /></td>
</tr>
<tr>
<td class="title2">Password</td>
<td class="oldvalue">*encrypted*</td>
<td class="entry">
<input type="text" name="password" />
<input type="button" value="generate" onclick="this.form.password.value=getRandomPass(8)" />
</td>
</tr>
<?php
# DSL USER ONLY
if (!$isDialup) {
?>
<tr>
<td class="title2">Notify Email</td>
<td class="oldvalue"><?php echo $userInfo->NotifyMethodEmail ?></td>
<td class="entry"><input type="text" name="notifyMethodEmail" /></td>
</tr>
<tr>
<td class="title2">Notify Cell #</td>
<td class="oldvalue"><?php echo $userInfo->NotifyMethodCell ?></td>
<td class="entry"><input type="text" name="notifyMethodCell" /></td>
</tr>
<?php
}
?>
<tr>
<td class="title2">AgentRef</td>
<td class="oldvalue"><?php echo $userInfo->AgentRef; ?></td>
<td class="entry"><input type="text" name="agentRef" /></td>
</tr>
<tr>
<td class="title2">Disabled</td>
<td class="oldvalue"><?php echo $userInfo->AgentDisabled ? "yes" : "no"; ?></td>
<td class="entry">
<select name="agentDisabled">
<option value="">-</option>
<option value="0">no</option>
<option value="1">yes</option>
</select>
</td>
<td></td>
</tr>
</table>
<div class="text-center">
<input type="submit" value="Update" />
</div>
</form>
<?php
}
# Actual form action to update radius user
function doUpdate($userID) {
global $soap;
# Create update hash
$update = NULL;
if ($_POST["password"] != "") {
$update["Password"] = $_POST["password"];
}
if ($_POST["usageCap"] != "") {
$update["UsageCap"] = $_POST["usageCap"];
}
if ($_POST["notifyMethodCell"] != "") {
$update["NotifyMethodCell"] = $_POST["notifyMethodCell"];
}
if ($_POST["notifyMethodEmail"] != "") {
$update["NotifyMethodEmail"] = $_POST["notifyMethodEmail"];
}
if ($_POST["agentRef"] != "") {
$update["AgentRef"] = $_POST["agentRef"];
}
if ($_POST["agentDisabled"] != "") {
$update["AgentDisabled"] = $_POST["agentDisabled"];
}
# If there are still updates to be done, do them
if ($update != NULL) {
$update["ID"] = $userID;
$res = $soap->updateRadiusUser($update);
if ($res == 0) {
displaySuccess("Radius user updated");
} else {
displayError("Error updating radius user($res): ".strSoapError($res));
}
# Or report no updates to be made
} else {
displaySuccess("No updates to be made!");
}
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME : redirect
} elseif ($_REQUEST['frmaction'] == "change_main") {
displayChange($_REQUEST['user_id']);
} elseif ($_REQUEST['frmaction'] == "change_final") {
doUpdate($_REQUEST['user_id']);
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user delete
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
# Remove screen
function displayDelete($userID) {
global $soap;
$userInfo = $soap->getRadiusUser($userID);
if (!is_object($userInfo)) {
displayError("getRadiusUser: ".strSoapError($userInfo));
return;
}
?>
<div class="sectiontitle">Radius User Search Results</div>
<p />
<div class="text-center">
<form action="radius-user-delete.php" method="post">
<div>
<input type="hidden" name="frmaction" value="delete_final" />
<input type="hidden" name="user_id" value="<?php echo $userID ?>" />
Are you very sure you wish to remove radius user <?php echo $userInfo->Username; ?>?<p />
<input type="submit" name="delete_confirm" value="Yes" />
<input type="submit" name="delete_confirm" value="No" />
</div>
</form>
</div>
<?php
}
# Actual form action to remove a mailbox
function doDelete($userID) {
global $soap;
$res = $soap->removeRadiusUser($userID);
if ($res == 0) {
displaySuccess("Removed radius user");
} else {
displayError("Error removing radius user: ".strSoapError($res));
}
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME : redirect
} elseif ($_REQUEST['frmaction'] == "delete_main") {
# Else no confirmation, display confirm dialog
displayDelete($_REQUEST['user_id']);
} elseif ($_REQUEST['frmaction'] == "delete_final") {
# If confirmed delete
if ($_REQUEST['delete_confirm'] == "Yes") {
doDelete($_REQUEST['user_id']);
} else {
# FIXME - redirect to main
}
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user info
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("soapfuncs.php");
function display($userID)
{
global $soap;
$userInfo = $soap->getRadiusUser($userID);
if (!is_object($userInfo)) {
echo "getRadiusUser: ".strSoapError($userInfo);
return;
}
$isDialup = preg_match('/dialup/i',$userInfo->Service);
# DSL USER ONLY INFO
if (!$isDialup) {
$topups = $soap->getRadiusUserCurrentTopups($userID);
$currentUsage = $soap->getRadiusUserCurrentUsage($userID);
?>
<div class="sectiontitle">User Information</div>
<p />
<table class="entrytable">
<tr>
<td class="title text-right">Usage cap</td>
<td class="value text-right" style="width: 50px;"><?php echo $userInfo->UsageCap ?></td>
</tr>
<tr>
<td class="title text-right">+ Current topups</td>
<td class="value text-right"><?php echo $topups ?></td>
</tr>
<tr>
<td class="title text-right">Total usage allowed</td>
<td class="value text-right" style="border-top: 2px solid black;"><?php echo $userInfo->UsageCap + $topups ?></td>
</tr>
<tr>
<td class="title text-right">Current usage</td>
<td class="value text-right" style="border-top: 2px solid black;"><?php echo $currentUsage ?></td>
</tr>
</table>
<p />
<?php
}
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME - redirect to main page
} elseif ($_REQUEST['frmaction'] == "info_main") {
display($_REQUEST['user_id']);
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user logs
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
function displaySearch($userID)
{
?>
<div class="sectiontitle">Search Radious Logs</div>
<p />
<form action="radius-user-logs.php" method="post">
<div>
<input type="hidden" name="user_id" value="<?php echo $userID ?>" />
<input type="hidden" name="frmaction" value="logs_final" />
</div>
<table class="entrytable">
<tr>
<td class="title">From</td>
<td class="entry">
<input type="text" name="searchLogsFrom" value="<?php
if (isset($_SESSION['radiusUserLogs_searchFrom'])) {
echo $_SESSION['radiusUserLogs_searchFrom'];
}
?>" />
</td>
</tr>
<tr>
<td class="title">To</td>
<td class="entry">
<input type="text" name="searchLogsTo" value="<?php
if (isset($_SESSION['radiusUserLogs_searchTo'])) {
echo $_SESSION['radiusUserLogs_searchTo'];
}
?>" />
</td>
</tr>
<tr>
<td class="title">Order By</td>
<td class="entry" colspan="2">
<input type="radio" name="searchLogsOrderBy" value="date" checked="checked" /> Date
</td>
</tr>
</table>
<div class="text-center">
<input type="submit" />
</div>
</form>
Note On Searching:
<ul>
<li>Dates are in the format of YYYY-MM-DD</li>
<li>Blank search criteria matches last 50 logs</li>
</ul>
<?php
}
# Display radius user logs
function displayLogs($userID,$searchOptions) {
global $soap;
# Radius functions
require_once("radiuscodes.php");
$userInfo = $soap->getRadiusUser($userID);
$isDialup = preg_match('/dialup/i',$userInfo->Service);
$userLogs = $soap->getRadiusUserLogs($userID,$searchOptions);
if (is_array($userLogs)) {
?>
<div class="sectiontitle">Radius User Logs</div>
<br />
<table class="resulttable">
<tr>
<td class="title">Timestamp</td>
<td class="title">Session ID</td>
<td class="title">Session Time</td>
<?php
# Calling/Called station only for dialups
if ($isDialup) {
?>
<td class="title">Station</td>
<?php
} else {
?>
<td class="title">NAS Port</td>
<?php
}
?>
<td class="title">Port Rate</td>
<td class="title">IP Address</td>
<td class="title">Uploaded Mb</td>
<td class="title">Downloaded Mb</td>
<td class="title">Last Update</td>
<td class="title">Status</td>
<td class="title">Term Reason</td>
</tr>
<?php
$totalIn = 0;
$totalOut = 0;
$totalTime = 0;
foreach ($userLogs as $entry) {
$inputMBytes = $entry->AcctInputOctets > 0 ? $entry->AcctInputOctets / 1024 / 1024 : 0;
$outputMBytes = $entry->AcctOutputOctets > 0 ? $entry->AcctOutputOctets / 1024 / 1024 : 0;
$inputMBytes += $entry->AcctInputGigawords * 4096;
$outputMBytes += $entry->AcctOutputGigawords * 4096;
?>
<tr>
<td><?php echo $entry->Timestamp; ?></td>
<td><?php echo $entry->AcctSessionID; ?></td>
<td class="text-right"><?php echo $entry->AcctSessionTime; ?></td>
<?php
# Calling/Called station only for dialups
if ($isDialup) {
?>
<td><?php echo $entry->CallingStationID."/".$entry->CalledStationID; ?></td>
<?php
} else {
?>
<td><?php echo $entry->NASPort; ?></td>
<?php
}
?>
<td><?php echo $entry->NASTransmitRate ."/". $entry->NASReceiveRate; ?></td>
<td><?php echo $entry->FramedIPAddress; ?></td>
<td><?php echo sprintf('%.2f',$inputMBytes); ?></td>
<td><?php echo sprintf('%.2f',$outputMBytes); ?></td>
<td><?php echo $entry->LastAcctUpdate; ?></td>
<td><?php echo $entry->Status; ?></td>
<td><?php echo strRadiusTermCode($entry->ConnectTermReason); ?></td>
</tr>
<?php
$totalIn += $inputMBytes;
$totalOut += $outputMBytes;
$totalTime += $entry->AcctSessionTime;
}
?>
<tr>
<td class="title text-center" colspan="12">Totals</td>
</tr>
<tr>
<td></td>
<td></td>
<td class="title2 text-right"><?php echo $totalTime; ?></td>
<td></td>
<td></td>
<td></td>
<td class="title2 text-right"><?php echo sprintf('%.2f',$totalIn); ?></td>
<td class="title2 text-right"><?php echo sprintf('%.2f',$totalOut); ?></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="title2 text-center" colspan="2"><?php echo sprintf('%.2f',$totalIn + $totalOut); ?></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<br />
<?php
} else {
echo "getRadiusUserLogs: ".strSoapError($userLogs);
}
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME : redirect
} elseif ($_REQUEST['frmaction'] == "logs_main") {
displaySearch($_REQUEST['user_id']);
} elseif ($_REQUEST['frmaction'] == "logs_final") {
# Process search options
if (isset($_REQUEST['searchLogsFrom'])) {
$_SESSION['radiusUserLogs_searchFrom'] = $_REQUEST['searchLogsFrom'];
}
if (isset($_REQUEST['searchLogsTo'])) {
$_SESSION['radiusUserLogs_searchTo'] = $_REQUEST['searchLogsTo'];
}
if (isset($_REQUEST['searchLogsOrderBy'])) {
$_SESSION['radiusUserLogs_searchOrderBy'] = $_REQUEST['searchLogsOrderBy'];
}
# Setup search
$searchOptions->searchFrom = isset($_SESSION['radiusUserLogs_searchFrom']) ? $_SESSION['radiusUserLogs_searchFrom'] : NULL;
$searchOptions->searchTo = isset($_SESSION['radiusUserLogs_searchTo']) ? $_SESSION['radiusUserLogs_searchTo'] : NULL;
$searchOptions->searchOrderBy = isset($_SESSION['radiusUserLogs_searchOrderBy']) ? $_SESSION['radiusUserLogs_searchOrderBy'] : NULL;
displayLogs($_REQUEST['user_id'],$searchOptions);
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user search
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
# Include databae functionality
include_once("include/db.php");
$db = connect_db();
# Function to display search box
function displaySearch() {
?>
<div class="sectiontitle">Search Radius Users</div>
<p />
<form action="radius-user-main.php" method="post">
<div>
<input type="hidden" name="frmaction" value="search_main" />
</div>
<table class="entrytable">
<tr>
<td colspan="2"></td>
<td class="textcenter">Order by</td>
</tr>
<tr>
<td class="title">Username</td>
<td class="entry">
<input type="text" name="searchUsername" class="entry" value="<?php
if (isset($_SESSION['radiusUser_searchUsername'])) {
echo $_SESSION['radiusUser_searchUsername'];
}
?>" />
</td>
<td align="center">
<input type="radio" name="searchOrderBy" value="Username" <?php
if (
isset($_SESSION['radiusUser_searchOrderBy']) && (
$_SESSION['radiusUser_searchOrderBy'] == "" ||
$_SESSION['radiusUser_searchOrderBy'] == "Username"
)
) {
echo "checked";
}
?> />
</td>
</tr>
</table>
<div class="text-center">
<input type="submit" />
</div>
</form>
Note On Searching:
<ul>
<li>Wildcards can be specified with *'s. For example: *@realm</li>
<li>Blank search criteria matches everything</li>
<li>Results limited to 100</li>
</ul>
<?php
}
function displaySearchResults($searchOptions)
{
global $soap;
global $userID;
?>
<div class="sectiontitle">Radius User Search Results</div>
<p />
<form id="main_form" action="radius-user-main.php" method="post">
<div class="text-center">
Action
<select id="main_form_action" name="frmaction"
onchange="
var myform = document.getElementById('main_form');
var myobj = document.getElementById('main_form_action');
if (myobj.selectedIndex == 2) {
myform.action = 'radius-user-change.php';
} else if (myobj.selectedIndex == 3) {
myform.action = 'radius-user-delete.php';
} else if (myobj.selectedIndex == 4) {
myform.action = 'radius-user-info.php';
} else if (myobj.selectedIndex == 5) {
myform.action = 'radius-user-logs.php';
} else if (myobj.selectedIndex == 6) {
myform.action = 'radius-user-topup-add.php';
} else if (myobj.selectedIndex == 7) {
myform.action = 'radius-user-topup-main.php';
} else if (myobj.selectedIndex == 8) {
myform.action = 'radius-user-portlock-main.php';
} else if (myobj.selectedIndex == 10) {
myform.action = 'radius-user-add.php';
}
myform.submit();
">
<option selected="selected">select action</option>
<option disabled="disabled"> - T H I S - U S E R - </option>
<option value="change_main">Change</option>
<option value="delete_main">Delete</option>
<option value="info_main">Info</option>
<option value="logs_main">Logs</option>
<option value="topups_add_main">Topups: Add</option>
<option value="topups_main">Topups: Search</option>
<option value="portlocks_main">Port Locking</option>
<option disabled="disabled"> - - - - - - - - - - - </option>
<option value="add_main">Add User</option>
</select>
</div>
<table class="resulttable">
<tr>
<td></td>
<td class="title">Username</td>
<td class="title">Service Class</td>
<td class="title">UsageCap</td>
<td class="title">AgentRef</td>
<td class="title">Disabled</td>
</tr>
<?php
$sql = "SELECT ID, Username, Disabled FROM ${DB_TABLE_PREFIX}users ORDER BY ID ASC";
$res = $db->query($sql);
while ($row = $res->fetchObject()) {
?>
<tr>
<td><input type="radio" name="user_id" value="<?php echo $row->id; ?>" /></td>
<td><?php echo $row->username; ?></td>
<td align="center"><?php echo $row->disabled ? "yes" : "no"; ?></td>
</tr>
<?php
}
$res->closeCursor();
?>
</table>
</form>
<?php
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user, add port locking
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
function displayForm($userID)
{
global $soap;
?>
<form action="radius-user-portlock-add.php" method="post">
<div>
<input type="hidden" name="user_id" value="<?php echo $userID; ?>" />
<input type="hidden" name="frmaction" value="portlocks_add_final" />
</div>
<table class="entrytable">
<tr>
<td class="title">Port</td>
<td class="entry"><input type="text" name="portlock_port" /></td>
</tr>
</table>
<div class="text-center">
<input type="submit" value="Add" />
</div>
</form>
<p />
Note On Searching:
<ul>
<li>Dates are in the format of YYYY-MM-DD</li>
<li>ValidTo is ALWAYS the first day of the next month</li>
</ul>
<?php
}
function doAdd($userID)
{
global $soap;
$lockInfo = NULL;
$lockInfo["UserID"] = $userID;
# Verify data
if (isset($_REQUEST["portlock_port"])) {
$lockInfo["Port"] = $_REQUEST["portlock_port"];
} else {
displayError("Port must be specified!");
return;
}
# Create radius user and check for error
$res = $soap->createRadiusUserPortLock($lockInfo);
if ($res > 0) {
displaySuccess("Added port lock to user");
} else {
displayError("Error creating port lock: ".strSoapError($res));
}
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME : redirect
} elseif ($_REQUEST['frmaction'] == "portlocks_add_main") {
displayForm($_REQUEST['user_id']);
} elseif ($_REQUEST['frmaction'] == "portlocks_add_final") {
doAdd($_REQUEST['user_id']);
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user port locking
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
function displayList($userID)
{
global $soap;
$userInfo = $soap->getRadiusUser($userID);
if (!is_object($userInfo)) {
displayError("getRadiusUser: ".strSoapError($userInfo));
return;
}
$portlocks = $soap->getRadiusUserPortLocks($userID);
if (!is_array($portlocks)) {
displayError("getRadiusUserLocks: ".strSoapError($portlocks));
return;
}
?>
<div class="sectiontitle">Radius User Port Locks</div>
<p />
<form id="main_form" action="radius-user-portlock-main.php" method="post">
<div>
<input type="hidden" name="user_id" value="<?php echo $userID; ?>" />
</div>
<div class="text-center">
Action
<select id="main_form_action" name="frmaction"
onchange="
var myform = document.getElementById('main_form');
var myobj = document.getElementById('main_form_action');
if (myobj.selectedIndex == 2) {
myform.action = 'radius-user-portlock-add.php';
} else if (myobj.selectedIndex == 3) {
myform.action = 'radius-user-portlock-remove.php';
}
myform.submit();
">
<option selected="selected">select action</option>
<option disabled="disabled"> - - - - - - - - - - - </option>
<option value="portlocks_add_main">Add</option>
<option value="portlocks_remove_main">Remove</option>
</select>
</div>
<table class="resulttable">
<tr>
<td></td>
<td class="title" style="width: 150px;">Port</td>
<td class="title">Disabled</td>
<td class="title">AgentRef</td>
</tr>
<?php
# If below one lock, display no locks
if (count($portlocks) < 1) {
?>
<tr>
<td colspan="4" align="center">No locking active</td>
</tr>
<?php
} else {
foreach ($portlocks as $portlock) {
?>
<tr>
<td><input type="radio" name="portlock_id" value="<?php echo $portlock->ID ?>" /></td>
<td><?php echo $portlock->Port; ?></td>
<td class="text-center"><?php echo $portlock->AgentDisabled ? "yes" : "no"; ?></td>
<td><?php echo $portlock->AgentRef; ?></td>
</tr>
<?php
}
}
?>
</table>
</form>
<?php
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME : redirect
} elseif ($_REQUEST['frmaction'] == "portlocks_main") {
displayList($_REQUEST['user_id']);
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user, add topups
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
# Add topup
function displayForm($userID) {
global $soap;
?>
<div class="sectiontitle">Add Topup</div>
<p />
<form action="radius-user-topup-add.php" method="post">
<div>
<input type="hidden" name="user_id" value="<?php echo $userID; ?>" />
<input type="hidden" name="frmaction" value="topups_add_final" />
</div>
<table class="entrytable">
<tr>
<td class="title">Bandwidth (Mbyte)</td>
<td class="entry"><input type="text" name="bandwidth" /></td>
</tr>
<tr>
<td class="title">Valid From</td>
<td class="entry"><input type="text" name="validFrom" /></td>
</tr>
<tr>
<td class="title">Valid To</td>
<td class="entry"><input type="text" name="validTo" /></td>
</tr>
<tr>
<td class="title">AgentRef</td>
<td class="entry"><input type="text" name="agentRef" /></td>
</tr>
</table>
<div class="text-center">
<input type="submit" value="Add" />
</div>
</form>
<p />
Note On Searching:
<ul>
<li>Dates are in the format of YYYY-MM-DD</li>
<li>ValidTo is ALWAYS the first day of the next month</li>
</ul>
<?php
}
function doAdd($userID)
{
global $soap;
$info = NULL;
# Verify data
if ($_REQUEST["user_id"] != "") {
$info["UserID"] = $_REQUEST["user_id"];
} else {
displayError("UserID must be specified");
return;
}
if ($_REQUEST["bandwidth"] != "") {
$info["Bandwidth"] = $_REQUEST["bandwidth"];
} else {
displayError("Bandwidth must be specified");
return;
}
if ($_REQUEST["validFrom"] != "") {
$info["ValidFrom"] = $_REQUEST["validFrom"];
} else {
displayError("ValidFrom must be specified");
return;
}
if ($_REQUEST["validTo"] != "") {
$info["ValidTo"] = $_REQUEST["validTo"];
} else {
displayError("ValidTo must be specified");
return;
}
# Check optional data
if ($_POST["agentRef"] != "") {
$userInfo["AgentRef"] = $_POST["agentRef"];
}
# Create radius user and check for error
$res = $soap->createRadiusUserTopup($info);
if ($res > 0) {
displaySuccess("Added radius topup");
} else {
displayError("Error creating radius topup: ".strSoapError($res));
}
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME : redirect
} elseif ($_REQUEST['frmaction'] == "topups_add_main") {
displayForm($_REQUEST['user_id']);
} elseif ($_REQUEST['frmaction'] == "topups_add_final") {
doAdd($_REQUEST['user_id']);
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user topups
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Functions we need
require_once("../shared-php/miscfuncs.php");
# Display radius user topups
function displayTopups($userID,$searchOptions) {
global $soap;
$userInfo = $soap->getRadiusUser($userID);
if (!is_object($userInfo)) {
displayError("getRadiusUser: ".strSoapError($userInfo));
return;
}
$userTopups = $soap->getRadiusUserTopups($userID,$searchOptions);
if (!is_array($userTopups)) {
displayError("getRadiusUserTopups: ".strSoapError($userTopups));
return;
}
?>
<div class="sectiontitle">Topup Search Results</div>
<p />
<table class="resulttable">
<tr>
<td class="title">Bandwidth</td>
<td class="title">Timestamp</td>
<td class="title">Valid From</td>
<td class="title">Valid To</td>
<td class="title">Agent Ref</td>
</tr>
<?php
foreach ($userTopups as $entry) {
?>
<tr>
<td class="text-right"><?php echo $entry->Bandwidth; ?></td>
<td><?php echo $entry->Timestamp; ?></td>
<td><?php echo $entry->ValidFrom; ?></td>
<td><?php echo $entry->ValidTo; ?></td>
<td><?php echo $entry->AgentRef; ?></td>
</tr>
<?php
}
?>
</table>
<?php
}
# Function to display topup search box
function displaySearchBox($userID) {
?>
<div class="sectiontitle">Topup Search</div>
<p />
<form action="radius-user-topup-main.php" method="post">
<div>
<input type="hidden" name="user_id" value="<?php echo $userID ?>" />
<input type="hidden" name="frmaction" value="topups_final" />
</div>
<table class="entrytable">
<tr>
<td class="title">From</td>
<td class="entry">
<input type="text" name="searchTopupsFrom" value="<?php
if (isset($_SESSION['radiusUserTopups_searchFrom'])) {
echo $_SESSION['radiusUserTopups_searchFrom'];
}
?>" />
</td>
</tr>
<tr>
<td class="title">To</td>
<td class="entry">
<input type="text" name="searchTopupsTo" value="<?php
if (isset($_SESSION['radiusUserTopups_searchTo'])) {
echo $_SESSION['radiusUserTopups_searchTo'];
}
?>" />
</td>
</tr>
<tr>
<td class="title">Order By</td>
<td class="entry" colspan="2">
<input type="radio" name="searchTopupsOrderBy" value="date" checked="checked" /> Date
</td>
</tr>
</table>
<div class="text-center">
<input type="submit" />
</div>
</form>
Note On Searching:
<ul>
<li>Dates are in the format of YYYY-MM-DD</li>
<li>Blank search criteria matches last 50 topups</li>
</ul>
<?php
}
# Check if we have an action
if (!isset($_REQUEST['frmaction'])) {
# FIXME : redirect
} elseif ($_REQUEST['frmaction'] == "topups_main") {
displaySearchBox($_REQUEST['user_id']);
} elseif ($_REQUEST['frmaction'] == "topups_final") {
# Process search options
if (isset($_REQUEST['searchTopupsFrom'])) {
$_SESSION['radiusUserTopups_searchFrom'] = $_REQUEST['searchTopupsFrom'];
}
if (isset($_REQUEST['searchTopupsTo'])) {
$_SESSION['radiusUserTopups_searchTo'] = $_REQUEST['searchTopupsTo'];
}
if (isset($_REQUEST['searchTopupsOrderBy'])) {
$_SESSION['radiusUserTopups_searchOrderBy'] = $_REQUEST['searchTopupsOrderBy'];
}
# Setup search
$searchOptions->searchFrom = $_SESSION['radiusUserTopups_searchFrom'];
$searchOptions->searchTo = $_SESSION['radiusUserTopups_searchTo'];
$searchOptions->searchOrderBy = $_SESSION['radiusUserTopups_searchOrderBy'];
displayTopups($_REQUEST['user_id'],$searchOptions);
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
# vim: ts=4
?>
<?php
# Radius user stuff
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# Menu header
include("../shared-php/menu-header.php");
# Soap functions
require_once("soapfuncs.php");
?>
<a href=".">Home</a><br><br>
<?php
# Quicklink functions...
if (!empty($_REQUEST['quicklink']) && $_REQUEST['quicklink'] == "logs") {
$username = $_REQUEST['username'];
$userInfo = $soap->getRadiusUserByUsername($username);
if (!$userInfo) {
?>
User info query returned no result.<br><br>
<?php
searchBox();
exit;
}
$_SESSION['radiusUser_searchUsername'] = $userInfo->Username;
$userID = $userInfo->ID;
searchLogsBox();
# Check if we have a user
} elseif ($_REQUEST['userID'] > 0) {
$userID = $_REQUEST['userID'];
$userInfo = $soap->getRadiusUser($userID);
?>
<a href="radiusUsers.php">Back to radius user search</a><br><br>
<?php
# Check if we have a special action to perform
if ($_POST["action"] == "update") {
actionUpdate();
# Actual remove action
} elseif ($_POST["action"] == "remove") {
actionRemove();
# Edit screen
} elseif ($_REQUEST["screen"] == "edit") {
screenEdit();
# Remove screen
} elseif ($_REQUEST["screen"] == "remove") {
screenRemove();
# Logs screen
} elseif ($_REQUEST["screen"] == "logs") {
# If we have searchLogs set, means we come from the searchLogs screen
if ($_REQUEST['searchLogs'] == 1) {
} else {
searchLogsBox();
}
# Add port lock
} elseif ($_REQUEST["screen"] == "addTopup") {
screenAddTopup();
} elseif ($_POST["action"] == "addTopup") {
actionAddTopup();
# Topups screen
} elseif ($_REQUEST["screen"] == "topups") {
# If we have searchTopups set, means we come from the searchTopups screen
if ($_REQUEST['searchTopups'] == 1) {
displayTopups($searchOptions);
} else {
searchTopupsBox();
}
# Add port lock
} elseif ($_POST["action"] == "addLock") {
actionAddPortLock();
# Remove port lock
} elseif ($_REQUEST["action"] == "removeLock") {
actionRemovePortLock();
# Port locks screen
} elseif ($_REQUEST["screen"] == "portlocks") {
displayPortLocks();
}
# We came from our search box
} elseif ($_REQUEST['search'] == 1) {
# Process search options
if (isset($_REQUEST['searchUsername'])) {
$_SESSION['radiusUser_searchUsername'] = $_REQUEST['searchUsername'];
}
if (isset($_REQUEST['searchAgentRef'])) {
$_SESSION['radiusUser_searchAgentRef'] = $_REQUEST['searchAgentRef'];
}
if (isset($_REQUEST['searchOrderBy'])) {
$_SESSION['radiusUser_searchOrderBy'] = $_REQUEST['searchOrderBy'];
}
# Setup search
$searchOptions->searchUsername = $_SESSION['radiusUser_searchUsername'];
$searchOptions->searchAgentRef = $_SESSION['radiusUser_searchAgentRef'];
$searchOptions->searchOrderBy = $_SESSION['radiusUser_searchOrderBy'];
userList($searchOptions);
# Add user screen
} elseif ($_REQUEST["screen"] == "add") {
echo("<a href=\"radiusUsers.php\">Back to radius user search</a><br><br>");
screenAdd();
# Add the user
} elseif ($_POST["action"] == "add") {
actionAdd();
# Anything else
} else {
searchBox();
}
# Menu footer
include("../shared-php/menu-footer.php");
# Footer
include("include/footer.php");
?>
<Files *>
Order Deny,Allow
Deny from all
</Files>
<?php
# Author: Nigel Kukard <nkukard@lbsd.net>
# Date: 2007-06-21
# Desc: This file takes care of authentication for us and gets the soap object
# License: GPL
ob_start();
require_once("auth.php");
require_once("miscfuncs.php");
# Main authentication object
$auth = new Auth('Radius');
# Check if we logged in and set SOAP object
$soap = NULL;
# First of all check if we in maintenance mode
if (file_exists("../maintmode")) {
include("header.php");
?>
<center>System unavailable due to maintenance, sorry for the inconvenience. Please try again in 5 minutes.</center>
<?php
include("include/footer.php");
exit;
}
# If not ... carry on
$auth->setLoginBoxUsername('Username');
# Check if we logged in
if (!$auth->loggedIn) {
$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
# If not, check credentials
if ($auth->checkLogin($username,$password) != 0) {
include("header.php");
$auth->displayLogin();
include("include/footer.php");
exit;
}
} else {
# Log client out
if (isset($_REQUEST['logout']) && $_REQUEST['logout'] == 1) {
$auth->logout("You have been logged out.");
require_once('HTTP.php');
HTTP::Redirect('.');
exit;
}
}
# This can log us out, if so set message
if (!($soap = $auth->connect())) {
$auth->logout("Session not active, please login.");
require_once('HTTP.php');
HTTP::Redirect('.');
exit;
}
?>
<?php
# Main control panel page
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# pre takes care of authentication and creates soap object we need
include("include/pre.php");
# Page header
include("include/header.php");
# NB: We will only end up here if we authenticated!
# Display details
function displayDetails() {
global $soap;
$userDetails = $soap->getRadiusUserDetails();
$isDialup = preg_match('/dialup/i',$userDetails->Service);
if (!$isDialup) {
$topups = $soap->getRadiusUserCurrentTopups();
$usage = $soap->getRadiusUserCurrentUsage();
}
?>
<table class="blockcenter">
<tr>
<td colspan="2" class="section">Account Information</td>
</tr>
<tr>
<td class="title">Username</td>
<td class="value"><?php echo $userDetails->Username ?></td>
</tr>
<tr>
<td class="title">Service</td>
<td class="value"><?php echo $userDetails->Service ?></td>
</tr>
<?php
# Only display cap for DSL users
if (!$isDialup) {
?>
<tr>
<td colspan="2" class="section">Usage Info &amp; Topups</td>
</tr>
<tr>
<td class="title">Bandwidth Cap</td>
<td class="value"><?php echo $userDetails->UsageCap ?>MB</td>
</tr>
<tr>
<td class="title">Topups</td>
<td class="value"><?php echo $topups; ?>MB</td>
</tr>
<tr>
<td class="title">Used This Month</td>
<td class="value"><?php echo ($usage >= 0) ? "${usage}MB" : "[data unavailable]"; ?></td>
</tr>
<tr>
<td colspan="2" class="section">Notifications</td>
</tr>
<form method="post">
<tr>
<td class="title">Email Address</td>
<td class="value">
<input type="text" name="notifyMethodEmail" value="<?php echo $userDetails->NotifyMethodEmail ?>"></input>
<input type="submit" name="notifyUpdate" value="update">
</td>
</tr>
<tr>
<td class="title">Cell Number</td>
<td class="value">
<input type="text" name="notifyMethodCell" value="<?php echo $userDetails->NotifyMethodCell ?>"></input>
<input type="submit" name="notifyUpdate" value="update">
</td>
</tr>
</form>
<?php
}
?>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="2" align="center">
<a href="logs.php">Usage Logs</a>
<?php
# Only display cap for DSL users
if (!$isDialup && 0) {
?>
| <a href="portlocks.php">Port Locking</a>
| <a href="topups.php">Topups</a>
<?php
}
?>
</td>
</tr>
</table>
<br><br>
<font size="-1">
Note:
<li>Please contact your ISP if you have any problem using this interface.
</font>
<?php
}
# If this is a post and we're updating then do it
if (isset($_POST['notifyUpdate']) && $_POST['notifyUpdate'] == "update") {
$i->NotifyMethodEmail = $_POST['notifyMethodEmail'];
$i->NotifyMethodCell = $_POST['notifyMethodCell'];
$res = $soap->updateRadiusUser($i);
if ($res == 0) {
echo "<center>Notification data updated</center>";
} else {
echo "<center>Error updating notification data, please contact your ISP. (Err: $res)</center>";
}
}
displayDetails();
# Footer
include("include/footer.php");
?>
<?php
# Menu footer
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
?>
</td>
</tr>
</table>
<?php
# Menu header
#
# Copyright (c) 2005-2008, AllWorldIT
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
?>
<table class="maintable">
<tr>
<td class="menubar">
<table class="menu"><tr><td>
<ul>
<li class="menutitle">Home</li>
<li class="menuitem"><a href=".">Summary</a></li>
</ul>
</td></tr></table>
<table class="menu"><tr><td>
<ul>
<li class="menutitle">Radius</li>
<li class="menuitem"><a href="radius-user-add.php">Add User</a></li>
<li class="menuitem"><a href="radius-user-main.php">Search User</a></li>
</ul>
</td></tr></table>
<br />
</td>
<td class="content">
<br />
/* Generate a random password */
function getRandomPass(len) {
var keylist="abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789"
var ret=''
for (i = 0; i < len; i++)
ret += keylist.charAt( Math.floor(Math.random() * keylist.length) )
return ret
}
/*
* Header of page
*
* Copyright (c) 2005-2008, AllWorldIT
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
.menubar {
width: 100px;
vertical-align: top;
}
.menu {
width: 100%;
border: 1px solid black;
margin-top: 5px;
}
.menu ul {
padding: 0px;
margin: 0px;
list-style-type: none;
}
.menu li {
text-align: center;
}
.menutitle {
background-color: #004D91;
color: #ffffff;
font-weight: bolder;
text-align: center;
}
.menu a {
background-color: #ffffdd;
display: block;
text-decoration: none;
}
.menu a:hover {
background-color: #eeeeee;
}
/* new */
/* Main page title */
div.pagetitle {
border-style: solid;
border-width: 1px;
border-color: #000000;
font-size: larger;
font-weight: bolder;
color: #ffffff;
background-color: #004d91;
text-align: center;
}
/* Main page table, splits off the menu and content */
.maintable {
width: 100%;
}
/* Content block */
.content {
padding-left: 10px;
padding-right: 10px;
vertical-align: top;
}
/* Content block title */
.sectiontitle {
width: 50%;
border: 1px solid black;
text-align: center;
background-color: #eeeeee;
display: block;
margin-left: auto;
margin-right: auto;
}
/* Generic result table */
.resulttable {
margin-left: auto;
margin-right: auto;
}
/* result table item title */
.resulttable td.title {
border: 1px solid black;
padding-left: 5px;
padding-right: 5px;
background-color: #004d91;
color: #ffffff;
text-align: center;
}
/* result table item title2 */
.resulttable td.title2 {
border: 1px solid black;
padding-left: 5px;
padding-right: 5px;
background-color: #eeeeee;
}
/* Generic entry table */
.entrytable {
margin-left: auto;
margin-right: auto;
}
/* entry table item title */
.entrytable td.title {
border: 1px solid black;
padding-left: 5px;
padding-right: 5px;
background-color: #004d91;
color: #ffffff;
}
/* entry table item title2 */
.entrytable td.title2 {
border: 1px solid black;
padding-left: 5px;
padding-right: 5px;
}
/* entry table old item */
.entrytable td.value {
padding-left: 5px;
padding-right: 5px;
background-color: #ffffdd;
}
/* entry table old item */
.entrytable td.oldvalue {
padding-left: 5px;
padding-right: 5px;
background-color: #eeeeee;
}
/* Error message */
.error {
width: 50%;
border: 1px solid black;
text-align: center;
background-color: #aa0000;
color: #ffffff;
display: block;
margin-left: auto;
margin-right: auto;
}
/* Success message */
.success {
width: 50%;
border: 1px solid black;
text-align: center;
background-color: #009900;
color: #ffffff;
display: block;
margin-left: auto;
margin-right: auto;
}
/* Text alignment */
.text-center {
text-align: center;
}
.text-right {
text-align: right;
}
.text-left {
text-align: left;
}
/* Block alignment */
.block-center {
margin-left: auto;
margin-right: auto;
}
/* Old */
div.smallinfo {
font-size: 10px;
text-align: center;
}
div.copyright {
border-style: solid;
border-width: 1px;
font-size: 10px;
text-align: center;
}
a, a:visited {
text-decoration: none;
color: black;
}
a:hover {
text-decoration: underline;
}