Fix select router

This commit is contained in:
Ibnu Maksum 2023-10-12 13:32:45 +07:00
parent 5024df9c0b
commit 77f21ece61
No known key found for this signature in database
GPG Key ID: 7FC82848810579E5
2 changed files with 67 additions and 159 deletions

View File

@ -68,74 +68,18 @@ class Radius
return $n->save(); return $n->save();
} }
public static function planAdd($plan_id, $rate, $pool = null) public static function planUpSert($plan_id, $rate, $pool = null)
{ {
$rates = explode('/', $rate); $rates = explode('/', $rate);
$r = Radius::getTablePackage()->create(); Radius::upsertPackage($plan_id, 'Ascend-Data-Rate', $rates[1], ':=');
$r->groupname = "plan_".$plan_id; Radius::upsertPackage($plan_id, 'Ascend-Xmit-Rate', $rates[0], ':=');
$r->attribute = 'Ascend-Data-Rate';
$r->op = ':=';
$r->value = $rates[1];
$r->plan_id = $plan_id;
if ($r->save()) {
$r = Radius::getTablePackage()->create();
$r->groupname = "plan_".$plan_id;
$r->attribute = 'Ascend-Xmit-Rate';
$r->op = ':=';
$r->value = $rates[0];
$r->plan_id = $plan_id;
if ($r->save()) {
if ($pool != null) { if ($pool != null) {
$r = Radius::getTablePackage()->create(); Radius::upsertPackage($plan_id, 'Framed-Pool', $pool, ':=');
$r->groupname = "plan_".$plan_id;
$r->attribute = 'Framed-Pool';
$r->op = ':=';
$r->value = $pool;
$r->plan_id = $plan_id;
if ($r->save()) {
return true;
} }
} else {
return true;
}
}
}
return false;
} }
public static function planUpdate($plan_id, $rate, $pool = null) public static function planDelete($plan_id)
{ {
$rates = explode('/', $rate);
if (Radius::getTablePackage()->where_equal('plan_id', $plan_id)->find_one()) {
$r = Radius::getTablePackage()->where_equal('plan_id', $plan_id)->whereEqual('attribute', 'Ascend-Data-Rate')->findOne();
$r->groupname = "plan_".$plan_id;
$r->value = $rates[1];
if ($r->save()) {
$r = Radius::getTablePackage()->where_equal('plan_id', $plan_id)->whereEqual('attribute', 'Ascend-Xmit-Rate')->findOne();
$r->groupname = "plan_".$plan_id;
$r->value = $rates[0];
if ($r->save()) {
if ($pool != null) {
$r = Radius::getTablePackage()->where_equal('plan_id', $plan_id)->whereEqual('attribute', 'Framed-Pool')->findOne();
$r->groupname = "plan_".$plan_id;
$r->value = $pool;
if ($r->save()) {
return true;
}
} else {
return true;
}
}
}
} else {
if (!empty($plan_id)) {
return Radius::planAdd($plan_id, $rate, $pool);
}
}
return false;
}
public static function planDelete($plan_id){
// Delete Plan // Delete Plan
Radius::getTablePackage()->where_equal('plan_id', "plan_" . $plan_id)->delete_many(); Radius::getTablePackage()->where_equal('plan_id', "plan_" . $plan_id)->delete_many();
// Reset User Plan // Reset User Plan
@ -148,7 +92,9 @@ class Radius
} }
} }
public static function customerChangeUsername($from, $to){
public static function customerChangeUsername($from, $to)
{
$c = Radius::getTableCustomer()->where_equal('username', $from)->findMany(); $c = Radius::getTableCustomer()->where_equal('username', $from)->findMany();
if ($c) { if ($c) {
foreach ($c as $u) { foreach ($c as $u) {
@ -165,7 +111,8 @@ class Radius
} }
} }
public static function customerDeactivate($username){ public static function customerDeactivate($username)
{
global $radius_pass; global $radius_pass;
$r = Radius::getTableCustomer()->where_equal('username', $username)->whereEqual('attribute', 'Cleartext-Password')->findOne(); $r = Radius::getTableCustomer()->where_equal('username', $username)->whereEqual('attribute', 'Cleartext-Password')->findOne();
if ($r) { if ($r) {
@ -176,7 +123,8 @@ class Radius
} }
} }
public static function customerDelete($username){ public static function customerDelete($username)
{
Radius::getTableCustomer()->where_equal('username', $username)->delete_many(); Radius::getTableCustomer()->where_equal('username', $username)->delete_many();
Radius::getTableUserPackage()->where_equal('username', $username)->delete_many(); Radius::getTableUserPackage()->where_equal('username', $username)->delete_many();
} }
@ -184,8 +132,9 @@ class Radius
/** /**
* When add a plan to Customer, use this * When add a plan to Customer, use this
*/ */
public static function customerAddPlan($customer, $plan){ public static function customerAddPlan($customer, $plan)
if(Radius::customerAdd($customer, $plan)){ {
if (Radius::customerUpsert($customer, $plan)) {
$p = Radius::getTableUserPackage()->where_equal('username', $customer['username'])->findOne(); $p = Radius::getTableUserPackage()->where_equal('username', $customer['username'])->findOne();
if ($p) { if ($p) {
// if exists // if exists
@ -202,88 +151,47 @@ class Radius
return false; return false;
} }
public static function customerAdd($customer, $plan) public static function customerUpsert($customer, $plan)
{ {
if (Radius::getTableCustomer()->where_equal('username', $customer['username'])->findOne()) {
// Edit if exists
$r = Radius::getTableCustomer()->where_equal('username', $customer['username'])->whereEqual('attribute', 'Cleartext-Password')->findOne();
if($r){
if ($plan['type'] == 'PPPOE') { if ($plan['type'] == 'PPPOE') {
if(empty($customer['pppoe_password'])){ Radius::upsertCustomer($customer['username'], 'Cleartext-Password', (empty($customer['pppoe_password'])) ? $customer['password'] : $customer['pppoe_password']);
$r->value = $customer['password'];
} else { } else {
$r->value = $customer['pppoe_password']; Radius::upsertCustomer($customer['username'], 'Cleartext-Password', $customer['password']);
}
}else{
$r->value = $customer['password'];
}
$r->save();
}else{
$r = Radius::getTableCustomer()->create();
$r->username = $customer['username'];
$r->attribute = 'Cleartext-Password';
$r->op = ':=';
if($plan['type']=='PPPOE'){
if(empty($customer['pppoe_password'])){
$r->value = $customer['password'];
}else{
$r->value = $customer['pppoe_password'];
}
}else{
$r->value = $customer['password'];
}
$r->save();
}
$r = Radius::getTableCustomer()->where_equal('username', $customer['username'])->whereEqual('attribute', 'Simultaneous-Use')->findOne();
if($r){
if($plan['type']=='PPPOE'){
$r->value = 1;
}else{
$r->value = $plan['shared_users'];
}
$r->save();
}else{
$r = Radius::getTableCustomer()->create();
$r->username = $customer['username'];
$r->attribute = 'Simultaneous-Use';
$r->op = ':=';
if($plan['type']=='PPPOE'){
$r->value = 1;
}else{
$r->value = $plan['shared_users'];
}
$r->save();
}
return true;
} else {
// add if not exists
$r = Radius::getTableCustomer()->create();
$r->username = $customer['username'];
$r->attribute = 'Cleartext-Password';
$r->op = ':=';
if($plan['type']=='PPPOE'){
if(empty($customer['pppoe_password'])){
$r->value = $customer['password'];
}else{
$r->value = $customer['pppoe_password'];
}
}else{
$r->value = $customer['password'];
}
if ($r->save()) {
$r = Radius::getTableCustomer()->create();
$r->username = $customer['username'];
$r->attribute = 'Simultaneous-Use';
$r->op = ':=';
if($plan['type']=='PPPOE'){
$r->value = 1;
}else{
$r->value = $plan['shared_users'];
}
$r->save();
return true;
}
} }
Radius::upsertCustomer($customer['username'], 'Simultaneous-Use', ($plan['type'] == 'PPPOE')? 1: $plan['shared_users'] );
return false; return false;
} }
/**
* To insert or update existing plan
*/
private static function upsertPackage($plan_id, $attr, $value, $op = ':=')
{
$r = Radius::getTablePackage()->where_equal('plan_id', $plan_id)->whereEqual('attribute', $attr)->find_one();
if (!$r) {
$r = Radius::getTablePackage()->create();
$r->groupname = "plan_" . $plan_id;
$r->plan_id = $plan_id;
}
$r->attribute = $attr;
$r->op = $op;
$r->value = $value;
return $r->save();
}
/**
* To insert or update existing customer
*/
private static function upsertCustomer($username, $attr, $value, $op = ':=')
{
$r = Radius::getTableCustomer()->where_equal('username', $username)->whereEqual('attribute', $attr)->find_one();
if (!$r) {
$r = Radius::getTableCustomer()->create();
$r->username = $username;
}
$r->attribute = $attr;
$r->op = $op;
$r->value = $value;
return $r->save();
}
} }

View File

@ -1,7 +1,7 @@
<option value=''>{$_L['Select_Routers']}</option> <option value=''>{$_L['Select_Routers']}</option>
{foreach $d as $ds}
{if $_c['radius_enable']} {if $_c['radius_enable']}
<option value="radius">Radius</option> <option value="radius">Radius</option>
{/if} {/if}
{foreach $d as $ds}
<option value="{$ds['name']}">{$ds['name']}</option> <option value="{$ds['name']}">{$ds['name']}</option>
{/foreach} {/foreach}