Advertisement
Guest User

unzend.com_ioncube_decoder60

a guest
Apr 21st, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 58.67 KB | None | 0 0
  1. <?php
  2.  
  3. ioncube decoder https://www.unzend.com
  4. define("ADMINAREA", true);
  5. require("../init.php");
  6. if( $action == "singlesignon" && checkPermission("WHMCSConnect", true) )
  7. {
  8.     $aInt = new WHMCS\Admin("WHMCSConnect");
  9.     if( $whmcs->get_req_var("error") )
  10.     {
  11.         if( WHMCS\Session::get("ServerModuleCallError") )
  12.         {
  13.             echo WHMCS\View\Helper::applicationError(AdminLang::trans("global.erroroccurred"), WHMCS\Session::get("ServerModuleCallError"));
  14.         }
  15.         else
  16.         {
  17.             echo WHMCS\View\Helper::applicationError(AdminLang::trans("global.erroroccurred"));
  18.         }
  19.  
  20.         throw new WHMCS\Exception\ProgramExit();
  21.     }
  22.  
  23. }
  24. else
  25. {
  26.     $aInt = new WHMCS\Admin("Configure Servers");
  27. }
  28.  
  29. $aInt->title = "Servers";
  30. $aInt->sidebar = "config";
  31. $aInt->icon = "servers";
  32. $aInt->helplink = "Servers";
  33. $action = $whmcs->get_req_var("action");
  34. $id = (int) $whmcs->get_req_var("id");
  35. if( $action == "getmoduleinfo" )
  36. {
  37.     check_token("WHMCS.admin.default");
  38.     $moduleName = $whmcs->get_req_var("type");
  39.     $moduleInfo = getmoduleinfo($moduleName);
  40.     throw new WHMCS\Exception\ProgramExit(json_encode($moduleInfo));
  41. }
  42.  
  43. if( $action == "testconnection" )
  44. {
  45.     check_token("WHMCS.admin.default");
  46.     $moduleName = $whmcs->get_req_var("type");
  47.     $moduleInterface = new WHMCS\Module\Server();
  48.     if( !$moduleInterface->load($moduleName) )
  49.     {
  50.         throw new WHMCS\Exception\ProgramExit("Invalid Server Module Type");
  51.     }
  52.  
  53.     if( $moduleInterface->functionExists("TestConnection") )
  54.     {
  55.         $passwordToTest = WHMCS\Input\Sanitize::decode($whmcs->get_req_var("password"));
  56.         $serverId = $whmcs->get_req_var("serverid");
  57.         if( $serverId )
  58.         {
  59.             $storedPassword = get_query_val("tblservers", "password", array( "id" => $serverId ));
  60.             $storedPassword = decrypt($storedPassword);
  61.             if( !hasMaskedPasswordChanged($passwordToTest, $storedPassword) )
  62.             {
  63.                 $passwordToTest = $storedPassword;
  64.             }
  65.  
  66.         }
  67.  
  68.         $params = $moduleInterface->getServerParams($serverId, array( "ipaddress" => $whmcs->get_req_var("ipaddress"), "hostname" => $whmcs->get_req_var("hostname"), "username" => $whmcs->get_req_var("username"), "password" => encrypt($passwordToTest), "accesshash" => $whmcs->get_req_var("accesshash"), "secure" => $whmcs->get_req_var("secure"), "port" => $whmcs->get_req_var("port") ));
  69.         $connectionTestResult = $moduleInterface->call("TestConnection", $params);
  70.         if( array_key_exists("success", $connectionTestResult) && $connectionTestResult["success"] == true )
  71.         {
  72.             $htmlOutput = "<span style=\"padding:2px 10px;background-color:#5bb75b;color:#fff;font-weight:bold;\">" . $aInt->lang("configservers", "testconnectionsuccess") . "</div>";
  73.         }
  74.         else
  75.         {
  76.             $errorMsg = (array_key_exists("error", $connectionTestResult) ? $connectionTestResult["error"] : $aInt->lang("configservers", "testconnectionunknownerror"));
  77.             $htmlOutput = "<span style=\"padding:2px 10px;background-color:#cc0000;color:#fff;\"><strong>" . $aInt->lang("configservers", "testconnectionfailed") . ":</strong> " . WHMCS\Input\Sanitize::makeSafeForOutput($errorMsg) . "</div>";
  78.         }
  79.  
  80.         throw new WHMCS\Exception\ProgramExit($htmlOutput);
  81.     }
  82.  
  83.     throw new WHMCS\Exception\ProgramExit($aInt->lang("configservers", "testconnectionnotsupported"));
  84. }
  85.  
  86. if( $action == "singlesignon" )
  87. {
  88.     check_token("WHMCS.admin.default");
  89.     $serverId = (int) $whmcs->get_req_var("serverid");
  90.     $server = Illuminate\Database\Capsule\Manager::table("tblservers")->find($serverId);
  91.     $allowedRoleIds = Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->where("server_id", "=", $serverId)->pluck("role_id");
  92.     if( count($allowedRoleIds) == 0 )
  93.     {
  94.         $allowAccess = true;
  95.     }
  96.     else
  97.     {
  98.         $allowAccess = false;
  99.         $adminAuth = new WHMCS\Auth();
  100.         $adminAuth->getInfobyID(WHMCS\Session::get("adminid"));
  101.         $adminRoleId = $adminAuth->getAdminRoleId();
  102.         if( in_array($adminRoleId, $allowedRoleIds) )
  103.         {
  104.             $allowAccess = true;
  105.         }
  106.  
  107.     }
  108.  
  109.     if( !$allowAccess )
  110.     {
  111.         $session = new WHMCS\Session();
  112.         $session->create($whmcs->getWHMCSInstanceID());
  113.         logAdminActivity("Single Sign-on Access Denied: '" . $server->name . "' - Server ID: " . $serverId);
  114.         WHMCS\Session::set("ServerModuleCallError", "You do not have permisson to sign-in to this server. If you feel this message to be an error, please contact the system administrator.");
  115.         redir("action=singlesignon&error=1");
  116.     }
  117.  
  118.     try
  119.     {
  120.         $moduleInterface = new WHMCS\Module\Server();
  121.         $redirectUrl = $moduleInterface->getSingleSignOnUrlForAdmin($serverId);
  122.         logAdminActivity("Single Sign-on Completed: '" . $server->name . "' - Server ID: " . $serverId);
  123.     }
  124.     catch( WHMCS\Exception\Module\SingleSignOnError $e )
  125.     {
  126.         $session = new WHMCS\Session();
  127.         $session->create($whmcs->getWHMCSInstanceID());
  128.         WHMCS\Session::set("ServerModuleCallError", $e->getMessage());
  129.         redir("action=singlesignon&error=1");
  130.     }
  131.     catch( Exception $e )
  132.     {
  133.         logActivity("Single Sign-On Request Failed with a Fatal Error: " . $e->getMessage());
  134.         $session = new WHMCS\Session();
  135.         $session->create($whmcs->getWHMCSInstanceID());
  136.         WHMCS\Session::set("ServerModuleCallError", "A fatal error occurred. Please see activity log for more details.");
  137.         redir("action=singlesignon&error=1");
  138.     }
  139.     header("Location: " . $redirectUrl);
  140.     throw new WHMCS\Exception\ProgramExit();
  141. }
  142.  
  143. if( $action == "delete" )
  144. {
  145.     check_token("WHMCS.admin.default");
  146.     $numaccounts = get_query_val("tblhosting", "COUNT(*)", array( "server" => $id ));
  147.     if( 0 < $numaccounts )
  148.     {
  149.         redir("deleteerror=true");
  150.     }
  151.     else
  152.     {
  153.         run_hook("ServerDelete", array( "serverid" => $id ));
  154.         $server = Illuminate\Database\Capsule\Manager::table("tblservers")->find($id);
  155.         logAdminActivity("Server Deleted: '" . $server->name . "' - Server ID: " . $id);
  156.         delete_query("tblservers", array( "id" => $id ));
  157.         redir("deletesuccess=true");
  158.     }
  159.  
  160. }
  161.  
  162. if( $action == "deletegroup" )
  163. {
  164.     check_token("WHMCS.admin.default");
  165.     $serverGroup = Illuminate\Database\Capsule\Manager::table("tblservergroups")->find($id);
  166.     logAdminActivity("Server Group Deleted: '" . $serverGroup->name . "' - Server Group ID: " . $id);
  167.     delete_query("tblservergroups", array( "id" => $id ));
  168.     delete_query("tblservergroupsrel", array( "serverid" => $id ));
  169.     redir("deletegroupsuccess=true");
  170. }
  171.  
  172. if( $action == "save" )
  173. {
  174.     check_token("WHMCS.admin.default");
  175.     $name = $whmcs->get_req_var("name");
  176.     $hostname = $whmcs->get_req_var("hostname");
  177.     $ipaddress = $whmcs->get_req_var("ipaddress");
  178.     $assignedips = $whmcs->get_req_var("assignedips");
  179.     $monthlycost = (double) $whmcs->get_req_var("monthlycost");
  180.     $noc = $whmcs->get_req_var("noc");
  181.     $maxaccounts = (int) $whmcs->get_req_var("maxaccounts");
  182.     $statusaddress = $whmcs->get_req_var("statusaddress");
  183.     $disabled = (int) (bool) $whmcs->get_req_var("disabled");
  184.     $nameserver1 = $whmcs->get_req_var("nameserver1");
  185.     $nameserver1ip = $whmcs->get_req_var("nameserver1ip");
  186.     $nameserver2 = $whmcs->get_req_var("nameserver2");
  187.     $nameserver2ip = $whmcs->get_req_var("nameserver2ip");
  188.     $nameserver3 = $whmcs->get_req_var("nameserver3");
  189.     $nameserver3ip = $whmcs->get_req_var("nameserver3ip");
  190.     $nameserver4 = $whmcs->get_req_var("nameserver4");
  191.     $nameserver4ip = $whmcs->get_req_var("nameserver4ip");
  192.     $nameserver5 = $whmcs->get_req_var("nameserver5");
  193.     $nameserver5ip = $whmcs->get_req_var("nameserver5ip");
  194.     $type = $whmcs->get_req_var("type");
  195.     $username = $whmcs->get_req_var("username");
  196.     $password = $whmcs->get_req_var("password");
  197.     $accesshash = $whmcs->get_req_var("accesshash");
  198.     $secure = $whmcs->get_req_var("secure");
  199.     $port = $whmcs->get_req_var("port");
  200.     $restrictsso = (int) $whmcs->get_req_var("restrictsso");
  201.     $moduleInfo = getmoduleinfo($type);
  202.     $defaultPort = $moduleInfo["default" . (($secure ? "" : "non")) . "sslport"];
  203.     if( !$port || $port == $defaultPort )
  204.     {
  205.         $port = "NULL";
  206.     }
  207.  
  208.     if( $id )
  209.     {
  210.         $changes = array(  );
  211.         $server = Illuminate\Database\Capsule\Manager::table("tblservers")->find($id);
  212.         $active = ($type == $server->type ? $server->active : "");
  213.         if( $name != $server->name )
  214.         {
  215.             $changes[] = "Name Modified: '" . $server->name . "' to '" . $name . "'";
  216.         }
  217.  
  218.         if( $hostname != $server->hostname )
  219.         {
  220.             $changes[] = "Hostname Modified: '" . $server->hostname . "' to '" . $hostname . "'";
  221.         }
  222.  
  223.         if( $ipaddress != $server->ipaddress )
  224.         {
  225.             $changes[] = "IP Address Modified: '" . $server->ipaddress . "' to '" . $ipaddress . "'";
  226.         }
  227.  
  228.         if( $assignedips != $server->assignedips )
  229.         {
  230.             $changes[] = "Assigned IP Addresses Modified";
  231.         }
  232.  
  233.         if( $monthlycost != $server->monthlycost )
  234.         {
  235.             $changes[] = "Monthly Cost Modified: '" . $server->monthlycost . "' to '" . $monthlycost . "'";
  236.         }
  237.  
  238.         if( $noc != $server->noc )
  239.         {
  240.             $changes[] = "Datacenter/NOC Modified: '" . $server->noc . "' to '" . $noc . "'";
  241.         }
  242.  
  243.         if( $maxaccounts != $server->maxaccounts )
  244.         {
  245.             $changes[] = "Maximum No. of Accounts Modified: '" . $server->maxaccounts . "' to '" . $maxaccounts . "'";
  246.         }
  247.  
  248.         if( $statusaddress != $server->statusaddress )
  249.         {
  250.             $changes[] = "Server Status Address Modified: '" . $server->statusaddress . "' to '" . $statusaddress . "'";
  251.         }
  252.  
  253.         if( $disabled != $server->disabled )
  254.         {
  255.             if( $disabled )
  256.             {
  257.                 $changes[] = "Server Disabled";
  258.             }
  259.             else
  260.             {
  261.                 $changes[] = "Server Enabled";
  262.             }
  263.  
  264.         }
  265.  
  266.         if( $nameserver1 != $server->nameserver1 )
  267.         {
  268.             $changes[] = "Primary Nameserver Modified: '" . $server->nameserver1 . "' to '" . $nameserver1 . "'";
  269.         }
  270.  
  271.         if( $nameserver1ip != $server->nameserver1ip )
  272.         {
  273.             $changes[] = "Primary Nameserver IP Modified: '" . $server->nameserver1ip . "' to '" . $nameserver1ip . "'";
  274.         }
  275.  
  276.         if( $nameserver2 != $server->nameserver2 )
  277.         {
  278.             $changes[] = "Secondary Nameserver Modified: '" . $server->nameserver2 . "' to '" . $nameserver2 . "'";
  279.         }
  280.  
  281.         if( $nameserver2ip != $server->nameserver2ip )
  282.         {
  283.             $changes[] = "Secondary Nameserver IP Modified: '" . $server->nameserver2ip . "' to '" . $nameserver2ip . "'";
  284.         }
  285.  
  286.         if( $nameserver3 != $server->nameserver3 )
  287.         {
  288.             $changes[] = "Third Nameserver Modified: '" . $server->nameserver3 . "' to '" . $nameserver3 . "'";
  289.         }
  290.  
  291.         if( $nameserver3ip != $server->nameserver3ip )
  292.         {
  293.             $changes[] = "Third Nameserver IP Modified: '" . $server->nameserver3ip . "' to '" . $nameserver3ip . "'";
  294.         }
  295.  
  296.         if( $nameserver4 != $server->nameserver4 )
  297.         {
  298.             $changes[] = "Fourth Nameserver Modified: '" . $server->nameserver4 . "' to '" . $nameserver4 . "'";
  299.         }
  300.  
  301.         if( $nameserver4ip != $server->nameserver4ip )
  302.         {
  303.             $changes[] = "Fourth Nameserver IP Modified: '" . $server->nameserver4ip . "' to '" . $nameserver4ip . "'";
  304.         }
  305.  
  306.         if( $nameserver5 != $server->nameserver5 )
  307.         {
  308.             $changes[] = "Fifth Nameserver Modified: '" . $server->nameserver5 . "' to '" . $nameserver5 . "'";
  309.         }
  310.  
  311.         if( $nameserver5ip != $server->nameserver5ip )
  312.         {
  313.             $changes[] = "Fifth Nameserver IP Modified: '" . $server->nameserver5ip . "' to '" . $nameserver5ip . "'";
  314.         }
  315.  
  316.         if( $type != $server->type )
  317.         {
  318.             $changes[] = "Type Modified: '" . $server->type . "' to '" . $type . "'";
  319.         }
  320.  
  321.         if( $username != $server->username )
  322.         {
  323.             $changes[] = "Username Modified: '" . $server->username . "' to '" . $username . "'";
  324.         }
  325.  
  326.         if( $accesshash != $server->accesshash )
  327.         {
  328.             $changes[] = "Access Hash Modified: '" . $server->accesshash . "' to '" . $accesshash . "'";
  329.         }
  330.  
  331.         if( $secure != $server->secure )
  332.         {
  333.             if( $secure )
  334.             {
  335.                 $changes[] = "Secure Connection Enabled";
  336.             }
  337.             else
  338.             {
  339.                 $changes[] = "Secure Connection Disabled";
  340.             }
  341.  
  342.         }
  343.  
  344.         if( $port != $server->port && $port != "NULL" )
  345.         {
  346.             $changes[] = "Port Modified: '" . $server->port . "' to '" . $port . "'";
  347.         }
  348.  
  349.         $saveData = array( "name" => $name, "type" => $type, "ipaddress" => trim($ipaddress), "assignedips" => trim($assignedips), "hostname" => trim($hostname), "monthlycost" => trim($monthlycost), "noc" => $noc, "statusaddress" => trim($statusaddress), "nameserver1" => trim($nameserver1), "nameserver1ip" => trim($nameserver1ip), "nameserver2" => trim($nameserver2), "nameserver2ip" => trim($nameserver2ip), "nameserver3" => trim($nameserver3), "nameserver3ip" => trim($nameserver3ip), "nameserver4" => trim($nameserver4), "nameserver4ip" => trim($nameserver4ip), "nameserver5" => trim($nameserver5), "nameserver5ip" => trim($nameserver5ip), "maxaccounts" => trim($maxaccounts), "username" => trim($username), "accesshash" => trim($accesshash), "secure" => $secure, "port" => $port, "disabled" => $disabled, "active" => $active );
  350.         $newPassword = trim($whmcs->get_req_var("password"));
  351.         $originalPassword = decrypt(get_query_val("tblservers", "password", array( "id" => $id )));
  352.         $valueToStore = interpretMaskedPasswordChangeForStorage($newPassword, $originalPassword);
  353.         if( $valueToStore !== false )
  354.         {
  355.             $saveData["password"] = $valueToStore;
  356.             if( $newPassword != $originalPassword )
  357.             {
  358.                 $changes[] = "Password Modified";
  359.             }
  360.  
  361.         }
  362.  
  363.         update_query("tblservers", $saveData, array( "id" => $id ));
  364.         if( $restrictsso )
  365.         {
  366.             $newSsoRoleRestrictions = $whmcs->get_req_var("restrictssoroles");
  367.             if( !is_array($newSsoRoleRestrictions) )
  368.             {
  369.                 $newSsoRoleRestrictions = array(  );
  370.             }
  371.  
  372.             $adminRoleNames = $changedPermissions = array(  );
  373.             $newSsoRoleRestrictions[] = "0";
  374.             $existingAccesses = Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->where("server_id", "=", $id)->get();
  375.             if( !$existingAccesses )
  376.             {
  377.                 $changes[] = "Access Control Enabled";
  378.             }
  379.  
  380.             Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->whereNotIn("role_id", $newSsoRoleRestrictions)->where("server_id", "=", $id)->delete();
  381.             $currentSsoRoleRestrictions = Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->where("server_id", "=", $id)->pluck("role_id");
  382.             foreach( $newSsoRoleRestrictions as $roleId )
  383.             {
  384.                 if( !in_array($roleId, $currentSsoRoleRestrictions) )
  385.                 {
  386.                     if( !isset($adminRoleNames[$roleId]) )
  387.                     {
  388.                         $adminRoleNames[$roleId] = Illuminate\Database\Capsule\Manager::table("tbladminroles")->find($roleId, array( "name" ))->name;
  389.                     }
  390.  
  391.                     Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->insert(array( "server_id" => $id, "role_id" => $roleId ));
  392.                     $changedPermissions["added"][] = $adminRoleNames[$roleId];
  393.                 }
  394.  
  395.             }
  396.             foreach( $existingAccesses as $existingAccess )
  397.             {
  398.                 if( !in_array($existingAccess->role_id, $newSsoRoleRestrictions) )
  399.                 {
  400.                     if( !isset($adminRoleNames[$existingAccess->role_id]) )
  401.                     {
  402.                         $adminRoleNames[$existingAccess->role_id] = Illuminate\Database\Capsule\Manager::table("tbladminroles")->find($existingAccess->role_id, array( "name" ))->name;
  403.                     }
  404.  
  405.                     $changedPermissions["removed"][] = $adminRoleNames[$existingAccess->role_id];
  406.                 }
  407.  
  408.             }
  409.             if( $changedPermissions )
  410.             {
  411.                 if( array_filter($changedPermissions["added"]) )
  412.                 {
  413.                     $changes[] = "Added Access Control Group(s): " . implode(", ", $changedPermissions["added"]);
  414.                 }
  415.  
  416.                 if( array_filter($changedPermissions["removed"]) )
  417.                 {
  418.                     $changes[] = "Removed Access Control Group(s): " . implode(", ", $changedPermissions["removed"]);
  419.                 }
  420.  
  421.             }
  422.  
  423.         }
  424.         else
  425.         {
  426.             $deletedRows = Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->where("server_id", "=", $id)->delete();
  427.             if( $deletedRows )
  428.             {
  429.                 $changes[] = "Access Control Disabled";
  430.             }
  431.  
  432.         }
  433.  
  434.         if( $changes )
  435.         {
  436.             logAdminActivity("Server Modified: '" . $name . "' - Changes: " . implode(". ", $changes) . " - Server ID: " . $id);
  437.         }
  438.  
  439.         run_hook("ServerEdit", array( "serverid" => $id ));
  440.         redir("savesuccess=true");
  441.     }
  442.     else
  443.     {
  444.         $server = new WHMCS\Admin\Setup\Servers();
  445.         $server->add($name, $type, $ipaddress, $assignedips, $hostname, $monthlycost, $noc, $statusaddress, $nameserver1, $nameserver1ip, $nameserver2, $nameserver2ip, $nameserver3, $nameserver3ip, $nameserver4, $nameserver4ip, $nameserver5, $nameserver5ip, $maxaccounts, $username, $password, $accesshash, $secure, $port, ($restrictsso ? $restrictssoroles : array(  )), $disabled);
  446.         redir("createsuccess=true");
  447.     }
  448.  
  449. }
  450.  
  451. if( $action == "savegroup" )
  452. {
  453.     check_token("WHMCS.admin.default");
  454.     $name = $whmcs->get_req_var("name");
  455.     $filltype = (int) $whmcs->get_req_var("filltype");
  456.     $selectedservers = ($whmcs->get_req_var("selectedservers") ?: array(  ));
  457.     $changes = $serverList = array(  );
  458.     $serverUpdated = false;
  459.     if( $id )
  460.     {
  461.         $serverGroup = Illuminate\Database\Capsule\Manager::table("tblservergroups")->find($id);
  462.         if( $name != $serverGroup->name )
  463.         {
  464.             $changes[] = "Name Modified: '" . $serverGroup->name . "' to '" . $name . "'";
  465.         }
  466.  
  467.         if( $filltype != $serverGroup->filltype )
  468.         {
  469.             if( $filltype == 1 )
  470.             {
  471.                 $changes[] = "Fill Type Modified: Add to the least full server";
  472.             }
  473.             else
  474.             {
  475.                 $changes[] = "Fill Type Modified: Fill active server until full then switch to next least used";
  476.             }
  477.  
  478.         }
  479.  
  480.         $serverUpdated = true;
  481.         update_query("tblservergroups", array( "name" => $name, "filltype" => $filltype ), array( "id" => $id ));
  482.         $existingServers = Illuminate\Database\Capsule\Manager::table("tblservergroupsrel")->where("groupid", "=", $id)->get();
  483.         foreach( $existingServers as $existingServer )
  484.         {
  485.             $serverList[] = $existingServer->serverid;
  486.         }
  487.         delete_query("tblservergroupsrel", array( "groupid" => $id ));
  488.     }
  489.     else
  490.     {
  491.         $id = insert_query("tblservergroups", array( "name" => $name, "filltype" => $filltype ));
  492.         logAdminActivity("Server Group Created: '" . $name . "' - Server Group ID: " . $id);
  493.     }
  494.  
  495.     if( $selectedservers )
  496.     {
  497.         $allocated = false;
  498.         foreach( $selectedservers as $serverid )
  499.         {
  500.             insert_query("tblservergroupsrel", array( "groupid" => $id, "serverid" => $serverid ));
  501.             if( !in_array($serverid, $serverList) && $allocated === false )
  502.             {
  503.                 $changes[] = "Server(s) Added to Group";
  504.                 $allocated = true;
  505.             }
  506.  
  507.         }
  508.         foreach( $serverList as $serverId )
  509.         {
  510.             if( !in_array($serverId, $selectedservers) )
  511.             {
  512.                 $changes[] = "Server(s) Removed from Group";
  513.                 break;
  514.             }
  515.  
  516.         }
  517.     }
  518.     else
  519.     {
  520.         if( !$selectedservers && $serverList )
  521.         {
  522.             $changes[] = "All Servers Removed from Group";
  523.         }
  524.  
  525.     }
  526.  
  527.     if( $serverUpdated && $changes )
  528.     {
  529.         logAdminActivity("Server Group Modified: '" . $name . "' - Changes: " . implode(". ", $changes) . " - Server Group ID: " . $id);
  530.     }
  531.  
  532.     redir("savesuccess=1");
  533. }
  534.  
  535. if( $action == "enable" )
  536. {
  537.     check_token("WHMCS.admin.default");
  538.     $server = Illuminate\Database\Capsule\Manager::table("tblservers")->find($id);
  539.     if( $server->disabled )
  540.     {
  541.         logAdminActivity("Server Enabled: '" . $server->name . "' - Server ID: " . $id);
  542.         update_query("tblservers", array( "disabled" => "0" ), array( "id" => $id ));
  543.     }
  544.  
  545.     redir("enablesuccess=1");
  546. }
  547.  
  548. if( $action == "disable" )
  549. {
  550.     check_token("WHMCS.admin.default");
  551.     $server = Illuminate\Database\Capsule\Manager::table("tblservers")->find($id);
  552.     if( !$server->disabled )
  553.     {
  554.         logAdminActivity("Server Disabled: '" . $server->name . "' - Server ID: " . $id);
  555.         update_query("tblservers", array( "disabled" => "1" ), array( "id" => $id ));
  556.     }
  557.  
  558.     redir("disablesuccess=1");
  559. }
  560.  
  561. if( $action == "makedefault" )
  562. {
  563.     check_token("WHMCS.admin.default");
  564.     $result = select_query("tblservers", "", array( "id" => $id ));
  565.     $data = mysql_fetch_array($result);
  566.     $type = $data["type"];
  567.     if( !$data["active"] )
  568.     {
  569.         logAdminActivity("Server Set to Default: '" . $data["name"] . "' - Server ID: " . $id);
  570.         update_query("tblservers", array( "active" => "" ), array( "type" => $type ));
  571.         update_query("tblservers", array( "active" => "1" ), array( "id" => $id ));
  572.     }
  573.  
  574.     redir("makedefault=1");
  575. }
  576.  
  577. ob_start();
  578. if( $action == "" )
  579. {
  580.     if( $createsuccess )
  581.     {
  582.         infoBox($aInt->lang("configservers", "addedsuccessful"), $aInt->lang("configservers", "addedsuccessfuldesc"));
  583.     }
  584.  
  585.     if( $deletesuccess )
  586.     {
  587.         infoBox($aInt->lang("configservers", "delsuccessful"), $aInt->lang("configservers", "delsuccessfuldesc"));
  588.     }
  589.  
  590.     if( $deletegroupsuccess )
  591.     {
  592.         infoBox($aInt->lang("configservers", "groupdelsuccessful"), $aInt->lang("configservers", "groupdelsuccessfuldesc"));
  593.     }
  594.  
  595.     if( $deleteerror )
  596.     {
  597.         infoBox($aInt->lang("configservers", "error"), $aInt->lang("configservers", "errordesc"));
  598.     }
  599.  
  600.     if( $savesuccess )
  601.     {
  602.         infoBox($aInt->lang("global", "changesuccess"), $aInt->lang("configservers", "changesuccessdesc"));
  603.     }
  604.  
  605.     if( $enablesuccess )
  606.     {
  607.         infoBox($aInt->lang("configservers", "enabled"), $aInt->lang("configservers", "enableddesc"));
  608.     }
  609.  
  610.     if( $disablesuccess )
  611.     {
  612.         infoBox($aInt->lang("configservers", "disabled"), $aInt->lang("configservers", "disableddesc"));
  613.     }
  614.  
  615.     if( $makedefault )
  616.     {
  617.         infoBox($aInt->lang("configservers", "defaultchange"), $aInt->lang("configservers", "defaultchangedesc"));
  618.     }
  619.  
  620.     if( $whmcs->get_req_var("error") && WHMCS\Session::get("ServerModuleCallError") )
  621.     {
  622.         infoBox($aInt->lang("global", "erroroccurred"), WHMCS\Session::get("ServerModuleCallError"));
  623.         WHMCS\Session::delete("ServerModuleCallError");
  624.     }
  625.  
  626.     echo $infobox;
  627.     $aInt->deleteJSConfirm("doDelete", "configservers", "delserverconfirm", "?action=delete&id=");
  628.     $aInt->deleteJSConfirm("doDeleteGroup", "configservers", "delgroupconfirm", "?action=deletegroup&id=");
  629.     echo "\n<p>";
  630.     echo $aInt->lang("configservers", "pagedesc");
  631.     echo "</p>\n\n<p>\n    <div class=\"btn-group\" role=\"group\">\n        <a href=\"";
  632.     echo $whmcs->getPhpSelf();
  633.     echo "?action=manage\" class=\"btn btn-default\"><i class=\"fas fa-plus\"></i> ";
  634.     echo $aInt->lang("configservers", "addnewserver");
  635.     echo "</a>\n        <a href=\"";
  636.     echo $whmcs->getPhpSelf();
  637.     echo "?action=managegroup\" class=\"btn btn-default\"><i class=\"fas fa-plus-square\"></i> ";
  638.     echo $aInt->lang("configservers", "createnewgroup");
  639.     echo "</a>\n    </div>\n</p>\n\n";
  640.     $adminAuth = new WHMCS\Auth();
  641.     $adminAuth->getInfobyID(WHMCS\Session::get("adminid"));
  642.     $adminRoleId = $adminAuth->getAdminRoleId();
  643.     $server = new WHMCS\Module\Server();
  644.     $modulesarray = $server->getList();
  645.     $aInt->sortableTableInit("nopagination");
  646.     $result3 = select_query("tblservers", "DISTINCT type", "", "type", "ASC");
  647.     while( $data = mysql_fetch_array($result3) )
  648.     {
  649.         $moduleName = $data["type"];
  650.         $module = new WHMCS\Module\Server();
  651.         $module->load($moduleName);
  652.         $moduleDisplayName = $module->getDisplayName();
  653.         $tabledata[] = array( "dividingline", $moduleDisplayName );
  654.         $disableddata = array(  );
  655.         $result = select_query("tblservers", "", array( "type" => $moduleName ), "name", "ASC");
  656.         while( $data = mysql_fetch_array($result) )
  657.         {
  658.             $id = (int) $data["id"];
  659.             $name = $data["name"];
  660.             $ipaddress = $data["ipaddress"];
  661.             $hostname = $data["hostname"];
  662.             $maxaccounts = $data["maxaccounts"];
  663.             $username = $data["username"];
  664.             $password = decrypt($data["password"]);
  665.             $accesshash = $data["accesshash"];
  666.             $secure = $data["secure"];
  667.             $active = $data["active"];
  668.             $type = $data["type"];
  669.             $disabled = $data["disabled"];
  670.             $active = ($active ? "*" : "");
  671.             $numaccounts = get_query_val("tblhosting", "COUNT(id)", "server='" . $id . "' AND (domainstatus='Active' OR domainstatus='Suspended')");
  672.             $percentuse = @round($numaccounts / $maxaccounts * 100, 0);
  673.             if( in_array($type, $modulesarray) )
  674.             {
  675.                 $server->load($type);
  676.                 $params = $server->getServerParams($id, $data);
  677.                 if( $server->functionExists("AdminSingleSignOn") )
  678.                 {
  679.                     $btnLabel = $server->getMetaDataValue("AdminSingleSignOnLabel");
  680.                     $ssoRoleRestrictions = Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->where("server_id", "=", $id)->pluck("role_id");
  681.                     $adminlogincode = sprintf("<form action=\"configservers.php\" method=\"post\" target=\"_blank\">" . "<input type=\"hidden\" name=\"action\" value=\"%s\" />" . "<input type=\"hidden\" name=\"serverid\" value=\"%s\" />" . "<input type=\"submit\" value=\"%s\"%s class=\"btn btn-sm%s\" />" . "</form>", "singlesignon", $id, ($btnLabel ? $btnLabel : $aInt->lang("sso", "adminlogin")), (0 < count($ssoRoleRestrictions) && !in_array($adminRoleId, $ssoRoleRestrictions) ? " disabled=\"disabled\"" : ""), (0 < count($ssoRoleRestrictions) && !in_array($adminRoleId, $ssoRoleRestrictions) ? " btn-disabled\"" : " btn-default"));
  682.                 }
  683.                 else
  684.                 {
  685.                     if( $server->functionExists("AdminLink") )
  686.                     {
  687.                         $adminlogincode = $server->call("AdminLink", $params);
  688.                         $adminlogincode = str_replace("input type=\"submit\"", "input type=\"submit\" class=\"btn btn-sm btn-default\"", $adminlogincode);
  689.                     }
  690.                     else
  691.                     {
  692.                         $adminlogincode = "-";
  693.                     }
  694.  
  695.                 }
  696.  
  697.             }
  698.             else
  699.             {
  700.                 $adminlogincode = $aInt->lang("global", "modulefilemissing");
  701.             }
  702.  
  703.             if( $disabled )
  704.             {
  705.                 $disableddata[] = array( "<i>" . $name . " (" . $aInt->lang("emailtpls", "disabled") . ")</i>", "<i>" . $ipaddress . "</i>", "<i>" . $numaccounts . "/" . $maxaccounts . "</i>", "<i>" . $percentuse . "%</i>", $adminlogincode, "<div align=\"center\"><a href=\"?action=enable&id=" . $id . generate_token("link") . "\" title=\"" . $aInt->lang("configservers", "enableserver") . "\"><img src=\"images/icons/disabled.png\"></a></div>", "<a href=\"?action=manage&id=" . $id . "\" title=\"" . $aInt->lang("global", "edit") . "\"><img src=\"images/edit.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"Edit\"></a>", "<a href=\"#\" onClick=\"doDelete('" . $id . "');return false\" title=\"" . $aInt->lang("global", "delete") . "\"><img src=\"images/delete.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"" . $aInt->lang("global", "delete") . "\"></a>" );
  706.             }
  707.             else
  708.             {
  709.                 $tabledata[] = array( "<a href=\"?action=makedefault&id=" . $id . generate_token("link") . "\" title=\"" . $aInt->lang("configservers", "defaultsignups") . "\">" . $name . "</a> " . $active, $ipaddress, (string) $numaccounts . "/" . $maxaccounts, (string) $percentuse . "%", $adminlogincode, "<div align=\"center\"><a href=\"?action=disable&id=" . $id . generate_token("link") . "\" title=\"" . $aInt->lang("configservers", "disableserverclick") . "\"><img src=\"images/icons/tick.png\"></a></div>", "<a href=\"?action=manage&id=" . $id . "\" title=\"" . $aInt->lang("global", "edit") . "\">\n                <img src=\"images/edit.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"" . $aInt->lang("global", "edit") . "\"></a>", "<a href=\"#\" onClick=\"doDelete('" . $id . "');return false\" title=\"" . $aInt->lang("global", "delete") . "\">\n            <img src=\"images/delete.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"" . $aInt->lang("global", "delete") . "\"></a>" );
  710.             }
  711.  
  712.         }
  713.         foreach( $disableddata as $data )
  714.         {
  715.             $tabledata[] = $data;
  716.         }
  717.     }
  718.     echo $aInt->sortableTable(array( $aInt->lang("configservers", "servername"), $aInt->lang("fields", "ipaddress"), $aInt->lang("configservers", "activeaccounts"), $aInt->lang("configservers", "usage"), " ", $aInt->lang("fields", "status"), "", "" ), $tabledata);
  719.     echo "\n<h2>";
  720.     echo $aInt->lang("configservers", "groups");
  721.     echo "</h2>\n\n<p>";
  722.     echo $aInt->lang("configservers", "groupsdesc");
  723.     echo "</p>\n\n";
  724.     $tabledata = array(  );
  725.     $result = select_query("tblservergroups", "", "", "name", "ASC");
  726.     while( $data = mysql_fetch_array($result) )
  727.     {
  728.         $id = $data["id"];
  729.         $name = $data["name"];
  730.         $filltype = $data["filltype"];
  731.         if( $filltype == 1 )
  732.         {
  733.             $filltype = $aInt->lang("configservers", "addleast");
  734.         }
  735.         else
  736.         {
  737.             if( $filltype == 2 )
  738.             {
  739.                 $filltype = $aInt->lang("configservers", "fillactive");
  740.             }
  741.  
  742.         }
  743.  
  744.         $servers = "";
  745.         $result2 = select_query("tblservergroupsrel", "tblservers.name", array( "groupid" => $id ), "name", "ASC", "", "tblservers ON tblservers.id=tblservergroupsrel.serverid");
  746.         while( $data = mysql_fetch_array($result2) )
  747.         {
  748.             $servers .= $data["name"] . ", ";
  749.         }
  750.         $servers = substr($servers, 0, -2);
  751.         $tabledata[] = array( $name, $filltype, $servers, "<a href=\"?action=managegroup&id=" . $id . "\"><img src=\"images/edit.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"" . $aInt->lang("global", "edit") . "\"></a>", "<a href=\"#\" onClick=\"doDeleteGroup('" . $id . "');return false\"><img src=\"images/delete.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"" . $aInt->lang("global", "delete") . "\"></a>" );
  752.     }
  753.     echo $aInt->sortableTable(array( $aInt->lang("configservers", "groupname"), $aInt->lang("fields", "filltype"), $aInt->lang("setup", "servers"), "", "" ), $tabledata);
  754. }
  755. else
  756. {
  757.     if( $action == "manage" )
  758.     {
  759.         if( $id )
  760.         {
  761.             $result = select_query("tblservers", "", array( "id" => $id ));
  762.             $data = mysql_fetch_array($result);
  763.             $id = $data["id"];
  764.             $type = $data["type"];
  765.             $name = $data["name"];
  766.             $ipaddress = $data["ipaddress"];
  767.             $assignedips = $data["assignedips"];
  768.             $hostname = $data["hostname"];
  769.             $monthlycost = $data["monthlycost"];
  770.             $noc = $data["noc"];
  771.             $statusaddress = $data["statusaddress"];
  772.             $nameserver1 = $data["nameserver1"];
  773.             $nameserver1ip = $data["nameserver1ip"];
  774.             $nameserver2 = $data["nameserver2"];
  775.             $nameserver2ip = $data["nameserver2ip"];
  776.             $nameserver3 = $data["nameserver3"];
  777.             $nameserver3ip = $data["nameserver3ip"];
  778.             $nameserver4 = $data["nameserver4"];
  779.             $nameserver4ip = $data["nameserver4ip"];
  780.             $nameserver5 = $data["nameserver5"];
  781.             $nameserver5ip = $data["nameserver5ip"];
  782.             $maxaccounts = $data["maxaccounts"];
  783.             $username = $data["username"];
  784.             $password = decrypt($data["password"]);
  785.             $accesshash = $data["accesshash"];
  786.             $secure = $data["secure"];
  787.             $port = $data["port"];
  788.             $active = $data["active"];
  789.             $disabled = $data["disabled"];
  790.             $managetitle = $aInt->lang("configservers", "editserver");
  791.             $isSsoRestricted = Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->where("server_id", "=", $id)->count();
  792.             $currentSsoRoleRestrictions = Illuminate\Database\Capsule\Manager::table("tblserversssoperms")->where("server_id", "=", $id)->pluck("role_id");
  793.         }
  794.         else
  795.         {
  796.             $managetitle = $aInt->lang("configservers", "addserver");
  797.             if( !$maxaccounts )
  798.             {
  799.                 $maxaccounts = "200";
  800.             }
  801.  
  802.             $id = "";
  803.             $type = "";
  804.             $secure = "on";
  805.             $port = "";
  806.         }
  807.  
  808.         $moduleInfo = getmoduleinfo($type);
  809.         $defaultPort = $moduleInfo["default" . (($secure ? "" : "non")) . "sslport"];
  810.         $serverModuleDropdownHtml = "";
  811.         $server = new WHMCS\Module\Server();
  812.         foreach( $server->getList() as $moduleName )
  813.         {
  814.             $server->load($moduleName);
  815.             if( $server->getMetaDataValue("RequiresServer") !== false )
  816.             {
  817.                 $serverModuleDropdownHtml .= "<option value=\"" . $moduleName . "\"" . (($moduleName == $type ? " selected" : "")) . ">" . $server->getDisplayName() . "</option>";
  818.             }
  819.  
  820.         }
  821.         echo "<h2>" . $managetitle . "</h2>";
  822.         echo "\n<form method=\"post\" action=\"";
  823.         echo $_SERVER["PHP_SELF"];
  824.         echo "?action=save";
  825.         if( $id )
  826.         {
  827.             echo "&id=" . $id;
  828.         }
  829.  
  830.         echo "\" id=\"frmServerConfig\">\n<input type=\"hidden\" name=\"serverid\" value=\"";
  831.         echo $id;
  832.         echo "\" />\n    <table class=\"form\" width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"3\">\n        <tr>\n            <td width=\"23%\" class=\"fieldlabel\">\n                ";
  833.         echo $aInt->lang("fields", "name");
  834.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"name\" size=\"30\" value=\"";
  835.         echo $name;
  836.         echo "\" class=\"form-control input-200\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  837.         echo $aInt->lang("fields", "hostname");
  838.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"hostname\" size=\"40\" value=\"";
  839.         echo $hostname;
  840.         echo "\" class=\"form-control input-200\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  841.         echo $aInt->lang("fields", "ipaddress");
  842.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"ipaddress\" size=\"20\" value=\"";
  843.         echo $ipaddress;
  844.         echo "\" class=\"form-control input-200\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  845.         echo $aInt->lang("configservers", "assignedips");
  846.         echo "<br/>\n                ";
  847.         echo $aInt->lang("configservers", "assignedipsdesc");
  848.         echo "            </td>\n            <td class=\"fieldarea\">\n                <textarea name=\"assignedips\" cols=\"60\" rows=\"8\" class=\"form-control input-400\">";
  849.         echo $assignedips;
  850.         echo "</textarea>\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  851.         echo $aInt->lang("configservers", "monthlycost");
  852.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"monthlycost\" size=\"10\" value=\"";
  853.         echo $monthlycost;
  854.         echo "\" class=\"form-control input-100\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  855.         echo $aInt->lang("configservers", "datacenter");
  856.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"noc\" size=\"30\" value=\"";
  857.         echo $noc;
  858.         echo "\" class=\"form-control input-200\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  859.         echo $aInt->lang("configservers", "maxaccounts");
  860.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"maxaccounts\" size=\"6\" value=\"";
  861.         echo $maxaccounts;
  862.         echo "\" class=\"form-control input-200\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  863.         echo $aInt->lang("configservers", "statusaddress");
  864.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"statusaddress\" size=\"60\" value=\"";
  865.         echo $statusaddress;
  866.         echo "\" class=\"form-control input-400\" />\n                ";
  867.         echo $aInt->lang("configservers", "statusaddressdesc");
  868.         echo "            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  869.         echo $aInt->lang("general", "enabledisable");
  870.         echo "            </td>\n            <td class=\"fieldarea\">\n                <label class=\"checkbox-inline\">\n                    <input type=\"checkbox\" name=\"disabled\" value=\"1\" class=\"checkbox\" ";
  871.         if( $disabled )
  872.         {
  873.             echo "checked ";
  874.         }
  875.  
  876.         echo "/>\n                    ";
  877.         echo $aInt->lang("configservers", "disableserver");
  878.         echo "                </label>\n            </td>\n        </tr>\n    </table>\n    <p>\n        <b>\n            ";
  879.         echo $aInt->lang("configservers", "nameservers");
  880.         echo "        </b>\n    </p>\n    <table class=\"form\" width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"3\">\n        <tr>\n            <td width=\"23%\" class=\"fieldlabel\">\n                ";
  881.         echo $aInt->lang("configservers", "primarynameserver");
  882.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"nameserver1\" size=\"40\" value=\"";
  883.         echo $nameserver1;
  884.         echo "\" class=\"form-control input-200 input-inline\" />\n                ";
  885.         echo $aInt->lang("fields", "ipaddress");
  886.         echo ": <input type=\"text\" name=\"nameserver1ip\" size=\"25\" value=\"";
  887.         echo $nameserver1ip;
  888.         echo "\" class=\"form-control input-200 input-inline\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  889.         echo $aInt->lang("configservers", "secondarynameserver");
  890.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"nameserver2\" size=\"40\" value=\"";
  891.         echo $nameserver2;
  892.         echo "\" class=\"form-control input-200 input-inline\" />\n                ";
  893.         echo $aInt->lang("fields", "ipaddress");
  894.         echo ": <input type=\"text\" name=\"nameserver2ip\" size=\"25\" value=\"";
  895.         echo $nameserver2ip;
  896.         echo "\" class=\"form-control input-200 input-inline\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  897.         echo $aInt->lang("configservers", "thirdnameserver");
  898.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"nameserver3\" size=\"40\" value=\"";
  899.         echo $nameserver3;
  900.         echo "\" class=\"form-control input-200 input-inline\" />\n                ";
  901.         echo $aInt->lang("fields", "ipaddress");
  902.         echo ": <input type=\"text\" name=\"nameserver3ip\" size=\"25\" value=\"";
  903.         echo $nameserver3ip;
  904.         echo "\" class=\"form-control input-200 input-inline\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  905.         echo $aInt->lang("configservers", "fourthnameserver");
  906.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"nameserver4\" size=\"40\" value=\"";
  907.         echo $nameserver4;
  908.         echo "\" class=\"form-control input-200 input-inline\" />\n                ";
  909.         echo $aInt->lang("fields", "ipaddress");
  910.         echo ": <input type=\"text\" name=\"nameserver4ip\" size=\"25\" value=\"";
  911.         echo $nameserver4ip;
  912.         echo "\" class=\"form-control input-200 input-inline\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  913.         echo $aInt->lang("configservers", "fifthnameserver");
  914.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"nameserver5\" size=\"40\" value=\"";
  915.         echo $nameserver5;
  916.         echo "\" class=\"form-control input-200 input-inline\" />\n                ";
  917.         echo $aInt->lang("fields", "ipaddress");
  918.         echo ": <input type=\"text\" name=\"nameserver5ip\" size=\"25\" value=\"";
  919.         echo $nameserver5ip;
  920.         echo "\" class=\"form-control input-200 input-inline\" />\n            </td>\n        </tr>\n    </table>\n    <p>\n        <b>\n            ";
  921.         echo $aInt->lang("configservers", "serverdetails");
  922.         echo "        </b>\n    </p>\n    <table class=\"form\" width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"3\">\n        <tr>\n            <td width=\"23%\" class=\"fieldlabel\">\n                ";
  923.         echo $aInt->lang("fields", "type");
  924.         echo "            </td>\n            <td class=\"fieldarea\">\n                <select name=\"type\" id=\"inputServerType\">";
  925.         echo $serverModuleDropdownHtml;
  926.         echo "</select>\n                <input type=\"button\" value=\"";
  927.         echo $aInt->lang("configservers", "testconnection");
  928.         echo "\" id=\"connectionTestBtn\" class=\"btn btn-danger btn-xs\"";
  929.         echo ($moduleInfo["cantestconnection"] ? "" : " style=\"display:none;\"");
  930.         echo " />\n                <span id=\"connectionTestResult\"></span>\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  931.         echo $aInt->lang("fields", "username");
  932.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"username\" size=\"25\" value=\"";
  933.         echo $username;
  934.         echo "\" autocomplete=\"off\" class=\"form-control input-200\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  935.         echo $aInt->lang("fields", "password");
  936.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"password\" name=\"password\" size=\"25\" value=\"";
  937.         echo replacePasswordWithMasks($password);
  938.         echo "\" autocomplete=\"off\" class=\"form-control input-200\" />\n            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  939.         $apiTokenClass = " hidden";
  940.         $accessHashClass = "";
  941.         if( $type == "cpanel" )
  942.         {
  943.             $apiTokenClass = "";
  944.             $accessHashClass = " hidden";
  945.         }
  946.  
  947.         echo "<span class=\"access-hash" . $accessHashClass . "\">\n    " . $aInt->lang("configservers", "accesshash") . "<br />\n    " . $aInt->lang("configservers", "accesshashdesc") . "\n</span>\n<span class=\"api-key" . $apiTokenClass . "\">\n    " . $aInt->lang("configservers", "apiToken") . "\n</span>";
  948.         echo "            </td>\n            <td class=\"fieldarea\">\n                ";
  949.         $apiTokenDisabled = " disabled=\"disabled\"";
  950.         $apiTokenClass = " hidden";
  951.         $accessHashDisabled = "";
  952.         $accessHashClass = "";
  953.         $toolTip = AdminLang::trans("configservers.apiTokenInfo");
  954.         if( $type == "cpanel" && (!$accesshash || $accesshash && !stristr($accesshash, "\r\n")) )
  955.         {
  956.             $apiTokenDisabled = "";
  957.             $apiTokenClass = "";
  958.             $accessHashDisabled = " disabled=\"disabled\"";
  959.             $accessHashClass = " hidden";
  960.         }
  961.  
  962.         echo "<input id=\"apiToken\" name=\"accesshash\" class=\"form-control input-500" . $apiTokenClass . "\"" . $apiTokenDisabled . " value=\"" . $accesshash . "\" data-toggle=\"tooltip\" data-placement=\"auto right\" data-trigger=\"focus\" title=\"" . $toolTip . "\"/>\n<textarea id=\"serverHash\" name=\"accesshash\" rows=\"8\" class=\"form-control input-500" . $accessHashClass . "\"" . $accessHashDisabled . ">" . $accesshash . "</textarea>";
  963.         echo "            </td>\n        </tr>\n        <tr>\n            <td class=\"fieldlabel\">\n                ";
  964.         echo $aInt->lang("configservers", "secure");
  965.         echo "            </td>\n            <td class=\"fieldarea\">\n                <label class=\"checkbox-inline\">\n                    <input type=\"checkbox\" name=\"secure\" id=\"inputSecure\"";
  966.         if( $secure )
  967.         {
  968.             echo " checked";
  969.         }
  970.  
  971.         echo " class=\"checkbox\"/>\n                    ";
  972.         echo $aInt->lang("configservers", "usessl");
  973.         echo "                </label>\n            </td>\n        </tr>\n        <tr id=\"trPort\"";
  974.         if( !$moduleInfo["defaultsslport"] && !$moduleInfo["defaultnonsslport"] )
  975.         {
  976.             echo " style=\"display:none;\"";
  977.         }
  978.  
  979.         echo ">\n            <td class=\"fieldlabel\">\n                ";
  980.         echo $aInt->lang("configservers", "port");
  981.         echo "            </td>\n            <td class=\"fieldarea\">\n                <input type=\"text\" name=\"port\" id=\"inputPort\" class=\"form-control input-75 input-inline\" value=\"";
  982.         echo ($port ? $port : $defaultPort);
  983.         echo "\" size=\"8\"";
  984.         if( !$port )
  985.         {
  986.             echo " disabled=\"disabled\"";
  987.         }
  988.  
  989.         echo " />\n                <label class=\"checkbox-inline\">\n                    <input type=\"checkbox\" id=\"inputOverridePort\"";
  990.         if( $port )
  991.         {
  992.             echo " checked";
  993.         }
  994.  
  995.         echo " />\n                    ";
  996.         echo $aInt->lang("configservers", "portoverride");
  997.         echo "                </label>\n            </td>\n        </tr>\n    </table>\n\n<div id=\"containerAccessControl\"";
  998.         if( !$moduleInfo["supportsadminsso"] )
  999.         {
  1000.             echo " style=\"display:none;\"";
  1001.         }
  1002.  
  1003.         echo ">\n\n<p><b>SSO Access Control</b></p>\n<p>This server module supports Single Sign-On for admin users. Below you can configure access permissions for this.</p>\n<table class=\"form\" width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"3\">\n<tr><td width=\"23%\" class=\"fieldlabel\">Access Control</td><td class=\"fieldarea\">\n<label class=\"radio-inline\"><input type=\"radio\" name=\"restrictsso\" value=\"0\" onclick=\"hideAccessControl()\"";
  1004.         if( !$isSsoRestricted )
  1005.         {
  1006.             echo " checked";
  1007.         }
  1008.  
  1009.         echo "> Unrestricted - Allow all admin users to connect to this server</label><br />\n<label class=\"radio-inline\"><input type=\"radio\" name=\"restrictsso\" value=\"1\" onclick=\"showAccessControl()\"";
  1010.         if( $isSsoRestricted )
  1011.         {
  1012.             echo " checked";
  1013.         }
  1014.  
  1015.         echo "> Restricted - Only allow access to select admin role groups and/or users</label><br />\n</td></tr>\n<tr class=\"trAccessControl\"";
  1016.         if( !$isSsoRestricted )
  1017.         {
  1018.             echo " style=\"display:none;\"";
  1019.         }
  1020.  
  1021.         echo "><td width=\"23%\" class=\"fieldlabel\">Admin Role Groups</td><td class=\"fieldarea\">\nAllow access to any admin users in the following admin role groups:<br />\n";
  1022.         $adminRoles = Illuminate\Database\Capsule\Manager::table("tbladminroles")->orderBy("name", "asc")->pluck("name", "id");
  1023.         foreach( $adminRoles as $id => $name )
  1024.         {
  1025.             echo sprintf("<label class=\"checkbox-inline\"><input type=\"checkbox\" name=\"restrictssoroles[]\" value=\"%s\"%s />%s</label>", $id, (in_array($id, $currentSsoRoleRestrictions) ? " checked" : ""), $name);
  1026.         }
  1027.         echo "</td></tr>\n</table>\n\n</div>\n\n<div class=\"btn-container\">\n    <input type=\"submit\" value=\"";
  1028.         echo $aInt->lang("global", "savechanges");
  1029.         echo "\" class=\"button btn btn-primary\">\n    <input type=\"button\" value=\"";
  1030.         echo $aInt->lang("global", "cancelchanges");
  1031.         echo "\" class=\"btn btn-default\" onclick=\"window.location='configservers.php'\" />\n</div>\n\n</form>\n\n";
  1032.         $accessControlJSCode = "\nfunction hideAccessControl() {\n    \$(\".trAccessControl\").fadeOut();\n}\nfunction showAccessControl() {\n    \$(\".trAccessControl\").fadeIn();\n}\n";
  1033.         $aInt->addHeadJsCode($accessControlJSCode);
  1034.         $connectionTestJSCode = "\n\nvar defaultSSLPort = \"" . $moduleInfo["defaultsslport"] . "\";\nvar defaultNonSSLPort = \"" . $moduleInfo["defaultnonsslport"] . "\";\n\n\$(\"#inputOverridePort\").click(function() {\n    if (\$(\"#inputOverridePort\").prop(\"checked\")) {\n        \$(\"#inputPort\").prop(\"disabled\", false);\n    } else {\n        \$(\"#inputPort\").prop(\"disabled\", true);\n        if (\$(\"#inputSecure\").prop(\"checked\")) {\n            \$(\"#inputPort\").val(defaultSSLPort);\n        } else {\n            \$(\"#inputPort\").val(defaultNonSSLPort);\n        }\n    }\n});\n\n\$(\"#inputSecure\").click(function() {\n    if (!\$(\"#inputOverridePort\").prop(\"checked\")) {\n        if (\$(\"#inputSecure\").prop(\"checked\")) {\n            \$(\"#inputPort\").val(defaultSSLPort);\n        } else {\n            \$(\"#inputPort\").val(defaultNonSSLPort);\n        }\n    }\n});\n\n\$(\"#inputServerType\").change(function() {\n    WHMCS.http.jqClient.post(\"configservers.php\", 'token=" . generate_token("plain") . "&action=getmoduleinfo&type=' + \$(\"#inputServerType\").val(),\n    function(data) {\n        \$(\"#connectionTestResult\").fadeOut();\n        if (data.cantestconnection==\"1\") {\n            \$(\"#connectionTestBtn\").fadeIn();\n        } else {\n            \$(\"#connectionTestBtn\").fadeOut();\n        }\n        if (data.supportsadminsso==\"1\") {\n            \$(\"#containerAccessControl\").fadeIn();\n        } else {\n            \$(\"#containerAccessControl\").fadeOut();\n        }\n        defaultSSLPort = data.defaultsslport;\n        defaultNonSSLPort = data.defaultnonsslport;\n        if (!defaultSSLPort && !defaultNonSSLPort) {\n            \$(\"#trPort\").fadeOut();\n        } else {\n            \$(\"#trPort\").fadeIn();\n        }\n        if (!\$(\"#inputOverridePort\").prop(\"checked\")) {\n            if (\$(\"#inputSecure\").prop(\"checked\")) {\n                \$(\"#inputPort\").val(defaultSSLPort);\n            } else {\n                \$(\"#inputPort\").val(defaultNonSSLPort);\n            }\n        }\n        var accessHash = \$(\"#serverHash\"),\n            apiToken = \$(\"#apiToken\");\n        if (typeof data.apiTokens !== \"undefined\" && data.apiTokens === true) {\n            var currentAccessHash = accessHash.val();\n            if (accessHash.hasClass('hidden') === false && (!currentAccessHash || currentAccessHash.indexOf(\"\\n\") < 0)) {\n                apiToken.removeClass('hidden').prop('disabled', false);\n                apiToken.val(currentAccessHash);\n                accessHash.addClass('hidden').prop('disabled', true);\n                \$(\"span.access-hash\").hide('fast', function(){\n                    \$(\"span.api-key\").hide().removeClass('hidden').show();\n                });\n            }\n        } else {\n            if (accessHash.hasClass('hidden')) {\n                var currentApiToken = apiToken.val();\n                accessHash.removeClass('hidden').prop('disabled', false);\n                accessHash.text(currentApiToken);\n                apiToken.addClass('hidden').prop('disabled', true);\n                \$(\"span.api-key\").hide('fast', function(){\n                    \$(\"span.access-hash\").hide().removeClass('hidden').show();\n                });\n            }\n        }\n    }, \"json\");\n});\n\n\$(\"#connectionTestBtn\").click(function() {\n    \$(\"#connectionTestResult\").html(\"<img src=\\\"images/loading.gif\\\" align=\\\"absmiddle\\\" /> " . addslashes($aInt->lang("configservers", "testconnectionloading")) . "\");\n    \$(\"#connectionTestResult\").show();\n    WHMCS.http.jqClient.post(\"configservers.php\", \$(\"#frmServerConfig\").serialize() + '&action=testconnection',\n    function(data) {\n        \$(\"#connectionTestResult\").html(data);\n    });\n});\n\n";
  1035.         $aInt->addInternalJQueryCode($connectionTestJSCode);
  1036.     }
  1037.     else
  1038.     {
  1039.         if( $action == "managegroup" )
  1040.         {
  1041.             if( $id )
  1042.             {
  1043.                 $managetitle = $aInt->lang("configservers", "editgroup");
  1044.                 $result = select_query("tblservergroups", "", array( "id" => $id ));
  1045.                 $data = mysql_fetch_array($result);
  1046.                 $id = $data["id"];
  1047.                 $name = $data["name"];
  1048.                 $filltype = $data["filltype"];
  1049.             }
  1050.             else
  1051.             {
  1052.                 $managetitle = $aInt->lang("configservers", "newgroup");
  1053.                 $filltype = "1";
  1054.             }
  1055.  
  1056.             echo "<h2>" . $managetitle . "</h2>";
  1057.             $jquerycode = "\$(\"#serveradd\").click(function () {\n  \$(\"#serverslist option:selected\").appendTo(\"#selectedservers\");\n  return false;\n});\n\$(\"#serverrem\").click(function () {\n  \$(\"#selectedservers option:selected\").appendTo(\"#serverslist\");\n  return false;\n});";
  1058.             echo "\n<form method=\"post\" action=\"";
  1059.             echo $_SERVER["PHP_SELF"];
  1060.             echo "?action=savegroup&id=";
  1061.             echo $id;
  1062.             echo "\">\n<table class=\"form\" width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"3\">\n<tr><td width=\"15%\" class=\"fieldlabel\">";
  1063.             echo $aInt->lang("fields", "name");
  1064.             echo "</td><td class=\"fieldarea\"><input type=\"text\" name=\"name\" size=\"40\" value=\"";
  1065.             echo $name;
  1066.             echo "\"></td></tr>\n<tr><td class=\"fieldlabel\">";
  1067.             echo $aInt->lang("fields", "filltype");
  1068.             echo "</td><td class=\"fieldarea\"><input type=\"radio\" name=\"filltype\" value=\"1\"";
  1069.             if( $filltype == 1 )
  1070.             {
  1071.                 echo " checked";
  1072.             }
  1073.  
  1074.             echo "> ";
  1075.             echo $aInt->lang("configservers", "addleast");
  1076.             echo "<br /><input type=\"radio\" name=\"filltype\" value=\"2\"";
  1077.             if( $filltype == 2 )
  1078.             {
  1079.                 echo " checked";
  1080.             }
  1081.  
  1082.             echo "> ";
  1083.             echo $aInt->lang("configservers", "fillactive");
  1084.             echo "</td></tr>\n<tr><td class=\"fieldlabel\">";
  1085.             echo $aInt->lang("fields", "selectedservers");
  1086.             echo "</td><td class=\"fieldarea\"><table><td><td><select size=\"10\" multiple=\"multiple\" id=\"serverslist\" style=\"width:200px;\">";
  1087.             $selectedservers = array(  );
  1088.             $result = select_query("tblservergroupsrel", "tblservers.id,tblservers.name,tblservers.disabled", array( "groupid" => $id ), "name", "ASC", "", "tblservers ON tblservers.id=tblservergroupsrel.serverid");
  1089.             while( $data = mysql_fetch_array($result) )
  1090.             {
  1091.                 $id = $data["id"];
  1092.                 $name = $data["name"];
  1093.                 $disabled = $data["disabled"];
  1094.                 if( $disabled )
  1095.                 {
  1096.                     $name .= " (" . $aInt->lang("emailtpls", "disabled") . ")";
  1097.                 }
  1098.  
  1099.                 $selectedservers[$id] = $name;
  1100.             }
  1101.             $result = select_query("tblservers", "", "", "name", "ASC");
  1102.             while( $data = mysql_fetch_array($result) )
  1103.             {
  1104.                 $id = $data["id"];
  1105.                 $name = $data["name"];
  1106.                 $disabled = $data["disabled"];
  1107.                 if( $disabled )
  1108.                 {
  1109.                     $name .= " (Disabled)";
  1110.                 }
  1111.  
  1112.                 if( !array_key_exists($id, $selectedservers) )
  1113.                 {
  1114.                     echo "<option value=\"" . $id . "\">" . $name . "</option>";
  1115.                 }
  1116.  
  1117.             }
  1118.             echo "</select></td><td align=\"center\"><input type=\"button\" id=\"serveradd\" value=\"";
  1119.             echo $aInt->lang("global", "add");
  1120.             echo " &raquo;\" class=\"btn btn-sm\" /><br /><br /><input type=\"button\" id=\"serverrem\" value=\"&laquo; ";
  1121.             echo $aInt->lang("global", "remove");
  1122.             echo "\" class=\"btn btn-sm\" /></td><td><select size=\"10\" multiple=\"multiple\" id=\"selectedservers\" name=\"selectedservers[]\" style=\"width:200px;\">";
  1123.             foreach( $selectedservers as $id => $name )
  1124.             {
  1125.                 echo "<option value=\"" . $id . "\">" . $name . "</option>";
  1126.             }
  1127.             echo "</select></td></td></table></td></tr>\n</table>\n<div class=\"btn-container\">\n    <input type=\"submit\" value=\"";
  1128.             echo $aInt->lang("global", "savechanges");
  1129.             echo "\" onclick=\"\$('#selectedservers *').attr('selected','selected')\" class=\"btn btn-primary\">\n    <input type=\"button\" value=\"";
  1130.             echo $aInt->lang("global", "cancelchanges");
  1131.             echo "\" class=\"btn btn-default\" onclick=\"window.location='configservers.php'\" />\n</div>\n</form>\n\n";
  1132.         }
  1133.  
  1134.     }
  1135.  
  1136. }
  1137.  
  1138. $content = ob_get_contents();
  1139. ob_end_clean();
  1140. $aInt->content = $content;
  1141. $aInt->jscode = $jscode;
  1142. $aInt->jquerycode = $jquerycode;
  1143. $aInt->display();
  1144. function getModuleInfo($moduleName)
  1145. {
  1146.     $returnData = array( "cantestconnection" => false, "supportsadminsso" => false, "defaultsslport" => "", "defaultnonsslport" => "" );
  1147.     $moduleInterface = new WHMCS\Module\Server();
  1148.     if( $moduleInterface->load($moduleName) )
  1149.     {
  1150.         if( $moduleInterface->functionExists("TestConnection") )
  1151.         {
  1152.             $returnData["cantestconnection"] = true;
  1153.         }
  1154.  
  1155.         if( $moduleInterface->functionExists("AdminSingleSignOn") )
  1156.         {
  1157.             $returnData["supportsadminsso"] = true;
  1158.         }
  1159.  
  1160.         $returnData["defaultsslport"] = $moduleInterface->getMetaDataValue("DefaultSSLPort");
  1161.         $returnData["defaultnonsslport"] = $moduleInterface->getMetaDataValue("DefaultNonSSLPort");
  1162.     }
  1163.  
  1164.     if( $moduleName == "cpanel" )
  1165.     {
  1166.         $returnData["apiTokens"] = true;
  1167.     }
  1168.  
  1169.     return $returnData;
  1170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement