diff --git a/assigner.php b/assigner.php new file mode 100644 index 0000000..77b1cd4 --- /dev/null +++ b/assigner.php @@ -0,0 +1,211 @@ +"; + + $clients = $tsAdmin->clientList(["connection_client_ip" => $userip]); + $servergroups = $tsAdmin->serverGroupList(); + + if(!empty($clients)) { + $client = array_values($clients)[0]; + $clientgroups = explode(",", $client["client_servergroups"]); + } + + if(isset($client)) { + $cacheutils = new CacheUtils('logincodes-' . $client["client_database_id"]); + + if(empty($_SESSION["loggedin"])) { + if($cacheutils->isExpired()) { + $logincode = mt_rand(100000, 999999); + $client->poke(translate($lang["groupassigner"]["codepoke"], [$logincode])); + $cacheutils->setValue($logincode, 120); + } else { + $logincode = $cacheutils->getValue(); + } + + if(!empty($_POST["logincode"])) { + if($logincode === (int)$_POST["logincode"]) { + $cacheutils->remove(); + $_SESSION["loggedin"] = true; + } else { + $failedlogin = true; + } + } + } + + if(!empty($_POST["submitted"]) && !empty($_SESSION["loggedin"])) { + $allgroups = []; + + foreach ($assignerconfig as $item) { + foreach ($item["sgids"] as $sgid) { + if(!in_array($sgid, $allgroups)) + $allgroups[] = (int)$sgid; + } + } + + $submittedgroups = []; + + if(!empty($_POST["sgs"]) && is_array($_POST["sgs"])) { + foreach ($_POST["sgs"] as $sg) { + $submittedgroups[] = (int)$sg; + } + } + + $groupsremove = array_diff($allgroups, $submittedgroups); + + foreach ($groupsremove as $grid) { + try { + $client->remServerGroup((int)$grid); + } catch (Exception $e) {} + } + + foreach ($submittedgroups as $gaid) { + try { + if(in_array($gaid, $allgroups)) { + $client->addServerGroup((int)$gaid); + } + } catch (Exception $e) {} + } + + $client = $tsAdmin->clientGetByDbid($client["client_database_id"]); // refresh + $clientgroups = explode(",", $client["client_servergroups"]); + + $success = true; + } + } +} catch (Exception $e) { + echo "Connection failed! $e"; +} +?> + + + +