Forked from
smradius / smradius
755 commits behind the upstream repository.
-
Robert Anderson authoredRobert Anderson authored
wisp-multiuser-add.php 6.71 KiB
<?php
# Policy add
# Copyright (C) 2008, LinuxRulz
#
# 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.
include_once("includes/header.php");
include_once("includes/footer.php");
include_once("includes/db.php");
$db = connect_db();
printHeader(array(
));
if (!isset($_POST['frmaction'])) {
?>
<p class="pageheader">Add WiSP Users</p>
<!-- Add user input fields -->
<form method="post" action="wisp-multiuser-add.php">
<div>
<input type="hidden" name="frmaction" value="insert" />
</div>
<table class="entry">
<tr>
<td class="textcenter" colspan="2">Add multiple users</td>
</tr>
<tr>
<td><div></div><td>
</tr>
<tr>
<td class="entrytitle">Number of users</td>
<td><input type="text" name="num_users" /></td>
</tr>
<tr>
<td class="entrytitle">Login Prefix</td>
<td><input type="text" name="login_prefix" /></td>
</tr>
<tr>
<td class="entrytitle">Uptime Limit</td>
<td><input type="text" name="session_timeout" /></td>
</tr>
<tr>
<td class="entrytitle">Data Limit</td>
<td><input type="text" name="data_limit" /></td>
</tr>
<tr>
<td class="entrytitle">Time Limit</td>
<td><input type="text" name="time_limit" /></td>
</tr>
<tr>
<td class="textcenter" colspan="2"><input type="submit" value="Submit" /></td>
</tr>
</table>
</form>
<?php
}
if (isset($_POST['frmaction']) && $_POST['frmaction'] == "insert") {
?>
<p class="pageheader">Add WiSP Users</p>
<?php
#FIXME
# Perform checks on input
if (!empty($_POST['num_users']) && !empty($_POST['session_timeout']) && !empty($_POST['data_limit']) && !empty($_POST['time_limit'])) {
$db->beginTransaction();
$numberOfUsers = (int)$_POST['num_users'];
$sessionTimeout = (int)$_POST['session_timeout'];
$dataLimit = (int)$_POST['data_limit'];
$timeLimit = (int)$_POST['time_limit'];
$loginNamePrefix = $_POST['login_prefix'];
for ($counter = 0; $counter <= $numberOfUsers; $counter += 1) {
# Check if user already exists
$checkUsernameDuplicates = 0;
do {
# Generate random username
$randomString = chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122));
# If there is no login name prefix
if (empty($loginNamePrefix)) {
$userName = $randomString;
$lookForUser = $db->query("SELECT ID FROM ${DB_TABLE_PREFIX}users WHERE Username LIKE '%$userName%'");
# If the user was found
if ($lookForUser->rowCount() > 0) {
$checkUsernameDuplicates = 1;
} else {
$checkUsernameDuplicates = 0;
}
# If there is a login name prefix
} else {
$userName = $loginNamePrefix."_".$randomString;
$lookForUser = $db->query("SELECT ID FROM ${DB_TABLE_PREFIX}users WHERE Username LIKE '%$userName%'");
# If the user was found
if ($lookForUser->rowCount() > 0) {
$checkUsernameDuplicates = 1;
} else {
$checkUsernameDuplicates = 0;
}
}
} while ($checkUsernameDuplicates > 0);
#Insert user into users table
$userInsert = $db->prepare("INSERT INTO
${DB_TABLE_PREFIX}users (Username)
VALUES
(?)
");
$userInsertExec = $userInsert->execute(array($userName));
$failed = 0;
# After a user add is successful, continue with inserting the other data
if ($userInsertExec) {
# Get user ID to insert into other tables
$getUserID = $db->query("SELECT ID FROM ${DB_TABLE_PREFIX}users WHERE Username = '$userName'");
$resultRow = $getUserID->fetchObject();
$userID = $resultRow->id;
# Inset UserID into userdata table
$userDataStatement = $db->prepare(" INSERT INTO
${DB_TABLE_PREFIX}userdata (UserID)
VALUES
(?)
");
$userDataResult = $userDataStatement->execute(array($userID));
# Generate a password
$userPassword = chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122)).
chr(rand(97,122));
# Insert password into user_attributes table
$userPasswordStatement = $db->prepare(" INSERT INTO
${DB_TABLE_PREFIX}user_attributes (UserID,Name,Operator,Value)
VALUES
($userID,'User-Password','==',?)
");
$userPasswordResult = $userPasswordStatement->execute(array($userPassword));
# Insert data limit into user_attributes table
$userDataLimitStatement = $db->prepare("INSERT INTO
${DB_TABLE_PREFIX}user_attributes (UserID,Name,Operator,Value)
VALUES
($userID,'SMRadius-Capping-Traffic-Limit',':=',?)
");
$userDataLimitResult = $userDataLimitStatement->execute(array($dataLimit,));
# Insert time limit into user_attributes table
$userTimeStatement = $db->prepare(" INSERT INTO
${DB_TABLE_PREFIX}user_attributes (UserID,Name,Operator,Value)
VALUES
($userID,'SMRadius-Capping-Time-Limit',':=',?)
");
$userTimeResult = $userTimeStatement->execute(array($timeLimit,));
# Insert timeout into user_attributes table
$userTimeOutStatement = $db->prepare(" INSERT INTO
${DB_TABLE_PREFIX}user_attributes (UserID,Name,Operator,Value)
VALUES
($userID,'Session-Timeout','+=',?)
");
$userTimeOutResult = $userTimeOutStatement->execute(array($sessionTimeout,));
if ($userTimeOutResult && $userTimeResult && $userDataResult && $userPasswordResult && $userDataLimitResult) {
$failed = 0;
} else {
$failed = 1;
}
# If one was not successful, rollback
} else {
print_r($db->errorInfo());
$db->rollback;
$failed = 1;
break;
}
}
if ($failed == 0) {
$db->commit();
?>
<div class="notice">Users added</div>
<?php
}
} else {
?>
<div class="warning">One or more fields have been left empty</div>
<?php
}
}
printFooter();
# vim: ts=4
?>