Advertisement
Guest User

Untitled

a guest
May 31st, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 15.94 KB | None | 0 0
  1. <?php
  2. date_default_timezone_set('Europe/Paris');
  3. session_start();
  4. require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/user.sql.php');
  5. require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/OVH.class.php');
  6. require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/libraries/TeamSpeak3/TeamSpeak3.php');
  7.  
  8. function get_expiration($expiration)
  9. {
  10.         $start = new DateTime(gmdate("d.m.Y  H:i:s ", time()));
  11.         $stop = new DateTime(gmdate("d.m.Y  H:i:s ", $expiration));
  12.         $end = $start->diff($stop);
  13.         if($end->days >= "1")
  14.         {
  15.             $mode = "Jours";
  16.             $restant = $end->days;
  17.         }elseif($end->days < "1")
  18.         {
  19.             $mode = "Heures";
  20.             $restant = $end->h;
  21.         }
  22.         if(time() > $expiration) { $status = "erreur"; } else { $status = "good"; }
  23.         return  array('mode' => $mode, 'restant' => $restant, 'status' => $status);
  24.  
  25. }
  26.  
  27. if(isset($_GET['action']))
  28. {
  29.     $action = htmlentities(trim($_GET['action']));
  30.     $id = htmlentities(trim($_GET['id']));
  31.     if($action&&$id)
  32.     {
  33.         $reqinfo = $bdd->prepare("SELECT * FROM ts3_server WHERE id = :id AND user = :user");
  34.         $reqinfo->execute(array(':id' => $id, ':user' => $user->id));
  35.         $TS3 = $reqinfo->fetch(PDO::FETCH_OBJ);
  36.         if($TS3 == null)
  37.         {
  38.             $return = array('action' => 'redirect');
  39.             die(json_encode($return));
  40.         }
  41.         $reqapi = $bdd->prepare("SELECT * FROM ts3_api WHERE id = :id");
  42.         $reqapi->execute(array(':id' => $TS3->api));
  43.         $API = $reqapi->fetch(PDO::FETCH_OBJ);
  44.  
  45.         try {
  46.             $Ts3Instance = TeamSpeak3::factory("serverquery://".$API->login.":".$API->password."@".$API->adresse.":".$API->port."/");
  47.  
  48.             try {
  49.                 $ts3Server = TeamSpeak3::factory("serverquery://".$API->login.":".$API->password."@".$API->adresse.":".$API->port."/?server_port=".$TS3->port."&nickname=Odedi.fr#no_query_clients");
  50.             } catch(Exception $e)  {}
  51.         } catch(Exception $e){}
  52.        
  53.         if(isset($ts3Server) && $ts3Server != NULL) {
  54.             $status = "1";
  55.  
  56.             $servername = $ts3Server->getProperty("virtualserver_name");
  57.             $clientsonline = $ts3Server->getProperty("virtualserver_clientsonline")-1;
  58.             $ts3flagpassword = $ts3Server->getProperty("virtualserver_flag_password");
  59.             $uptime = $ts3Server->getProperty("virtualserver_uptime");
  60.  
  61.             $ts3_uptime_jour=floor($uptime/86400);
  62.             $ts3_uptime_reste=$uptime%86400;
  63.             $ts3_uptime_heures=floor($ts3_uptime_reste/3600);
  64.             $ts3_uptime_reste=$ts3_uptime_reste%3600;
  65.             $ts3_uptime_minutes=floor($ts3_uptime_reste/60);
  66.             $ts3_uptime_secondes=$ts3_uptime_reste%60;
  67.  
  68.             if($ts3_uptime_minutes < "1"){
  69.                 $ts3_uptime = $ts3_uptime_secondes." sec";
  70.             }
  71.             if($ts3_uptime_minutes >= "1" && $ts3_uptime_heures < "1" ){
  72.                 $ts3_uptime = $ts3_uptime_minutes." min";
  73.             }
  74.             if($ts3_uptime_heures >= "1" && $ts3_uptime_heures < "24" ){
  75.                 $ts3_uptime = $ts3_uptime_heures." heures, ".$ts3_uptime_minutes." minutes";
  76.             }
  77.             if($ts3_uptime_heures >= "24"){
  78.                 $ts3_uptime = $ts3_uptime_jour."Jour(s), ".$ts3_uptime_heures." heures";
  79.             }
  80.         }
  81.         else {
  82.             $status = "0";
  83.  
  84.             $servername = "Hors Ligne";
  85.             $clientsonline = "0";
  86.             $ts3_uptime = "hors ligne";
  87.             $ts3flagpassword = "0";
  88.         }
  89.  
  90.         if($action == "getinfo")
  91.         {
  92.             if($TS3->srv) { $TS3srv = " / ".$TS3->srv; } else { $TS3srv = ""; }
  93.             if($TS3->type == "1") { $TS3offre = "TeamSpeak 3 Gratuit"; } elseif($TS3->type == "2") { $TS3offre = "TeamSpeak 3"; }
  94.             if($API->antiddos == "0") { $antiddos = "Non protégé"; } elseif($API->antiddos == "1") { $antiddos = "Protégé / Migrations permanentes"; }
  95.             $expiration = date('d/m/Y à H:i', $TS3->expiration);
  96.  
  97.             $result = array('localisation' => $API->pays." (".$API->ville.")",
  98.                             'ville' => $API->ville,
  99.                             'addr' => $API->dns.":".$TS3->port.$TS3srv,
  100.                             'addrip' => $API->adresse.":".$TS3->port,
  101.                             'offre' => $TS3offre,
  102.                             'uptime' => $ts3_uptime,
  103.                             'queryport' => $API->port,
  104.                             'usersonline' => $clientsonline."/".$TS3->slots,
  105.                             'antiddos' => $antiddos,
  106.                             'status' => $status,
  107.                             'privilegekey' => $TS3->privilegekey,
  108.                             'expiration' => $expiration,
  109.                             'type' => $TS3->type,
  110.                             'timetoend' => get_expiration($TS3->expiration)
  111.                             );
  112.  
  113.             echo json_encode($result);
  114.         }
  115.         elseif($action == "stop"){
  116.             if($status == "0"){
  117.                 $return = array('status' => 'error', 'msg' => 'Ce serveur TeamSpeak 3 est déjà arrêté.');
  118.                 echo json_encode($return);
  119.             }
  120.             elseif($status == "1"){
  121.                 $Ts3Instance->ServerStop($TS3->sid);
  122.                 $return = array('status' => 'success', 'msg' => 'Votre serveur TeamSpeak 3 est maintenant arrêté.');
  123.                 echo json_encode($return);
  124.             }
  125.         }
  126.         elseif($action == "start"){
  127.             if($status == "1"){
  128.                 $return = array('status' => 'error', 'msg' => 'Ce serveur TeamSpeak 3 est déjà en ligne.');
  129.                 echo json_encode($return);
  130.             }
  131.             elseif($status == "0"){
  132.                 $Ts3Instance->ServerStart($TS3->sid);
  133.                 $return = array('status' => 'success', 'msg' => 'Votre serveur TeamSpeak 3 est maintenant en ligne.');
  134.                 echo json_encode($return);
  135.             }
  136.         }
  137.         elseif($action == "setSRV")
  138.         {
  139.             $prefix = htmlentities(trim($_GET['prefix']));
  140.             $domaine = htmlentities(trim($_GET['domaine']));
  141.             echo ts3_srv_setup($TS3, $prefix, $domaine, $bdd);
  142.         }
  143.         elseif($action == "InstallServer")
  144.         {
  145.             if ($TS3->type == "1") {
  146.                 $hostname = "TeamSpeak 3 Gratuit par Odedi.fr";
  147.             }else{
  148.                 $hostname = "TeamSpeak 3 par Odedi.fr";
  149.             }
  150.             $ts3Server->modify(
  151.                             array(
  152.                                  "virtualserver_name"               => $hostname,
  153.                                  "virtualserver_maxclients"         => $TS3->slots,
  154.                                  "virtualserver_log_client"         => "1",
  155.                                  "virtualserver_log_channel"        => "1",
  156.                                  "virtualserver_log_permissions"    => "1",
  157.                                  "virtualserver_log_server"         => "1",
  158.                                  "virtualserver_log_filetransfer"   => "1",
  159.                                  "virtualserver_hostbanner_gfx_url" => "https://odedi.fr/img/logo.png",
  160.                                  "virtualserver_hostbanner_url"     => "https://odedi.fr"
  161.                                 ));
  162.  
  163.             $ts3_ServerGroup = $ts3Server->serverGroupIdentify();
  164.             $ts3_ServerGroup->permRemove("b_virtualserver_modify_maxclients");
  165.             $ts3_ServerGroup->permRemove("i_needed_modify_power_virtualserver_modify_maxclients");  
  166.             $return = array('status' => 'success', 'id' => $TS3->id);
  167.             echo json_encode($return);
  168.  
  169.         }
  170.         elseif($action == "privilegeKeyList")
  171.         {
  172.             $grouplist = $ts3Server->serverGroupList();
  173.             $items = array();
  174.             foreach ($grouplist as $value) {
  175.                 if($value['sgid'] > "5")
  176.                 {
  177.  
  178.                     $group = $ts3Server->serverGroupGetById($value['sgid']);
  179.                     try {
  180.                             $perm = $group->privilegeKeyList();
  181.                             foreach($perm as $k => $v)
  182.                             {
  183.                                  if(!in_array($k, $items))
  184.                                  {
  185.                                     if($v['token_description']){
  186.                                         $desc = $v['token_description']->toString();  
  187.                                     }
  188.                                     else{
  189.                                         $desc = "";
  190.                                     }
  191.                                     $token_created = date('d/m/Y à H:i', $v['token_created']);
  192.                                     $items[$k]['token'] = $k;
  193.                                     $items[$k]['token_type'] = $v['token_type'];
  194.                                     $items[$k]['token_id1'] = $v['token_id1'];
  195.                                     $items[$k]['token_id2'] = $v['token_id2'];
  196.                                     $items[$k]['ts3id'] = $TS3->id;
  197.                                     $items[$k]['token_created'] = $token_created;
  198.                                     $items[$k]['desc'] = $desc;
  199.                                     if($v['token_id2'] != "0")
  200.                                     {
  201.                                         $items[$k]['channame'] = str_replace(array("[cspacer]","[rspacer]","[spacer]","[*spacer]"), "", $ts3Server->channelGetById($v['token_id2'])->getProperty('channel_name')->toString());
  202.                                     }
  203.                                     elseif($v['token_id2'] != "0")
  204.                                     {
  205.                                         $items[$k]['channame'] = "";
  206.                                     }
  207.                                  }
  208.                             }
  209.                         }
  210.                     catch (Exception $e) {}
  211.                 }
  212.             }
  213.             foreach ($items as $a => $b)
  214.             {
  215.                 if($b['token_id2'] == "0"){
  216.                     $n = $ts3Server->serverGroupGetById($b['token_id1']);
  217.                 }else{
  218.                     $n = $ts3Server->channelGroupGetById($b['token_id1']);
  219.                 }
  220.                 $items[$b['token']]['groupname'] = $n['name']->toString();
  221.             }
  222.             echo json_encode($items);
  223.         }
  224.         elseif ($action == "privilegeKeyDelete") {
  225.             $pkey = htmlentities(trim($_GET['pkey']));
  226.             if($pkey)
  227.             {
  228.                 if($status == "1"){
  229.                     $ts3Server->privilegeKeyDelete($pkey);
  230.                     $return = array('status' => 'success', 'msg' => 'La Privilige Key a été supprimé.');
  231.                 }else{
  232.                     $return = array('status' => 'error', 'msg' => 'Nous ne pouvons pas supprimer la clé si le TeamSpeak 3 est hors ligne');
  233.                 }
  234.             }
  235.             else
  236.             {
  237.                 $return = array('status' => 'error', 'msg' => 'La Privilige Key est pas valide.');
  238.             }
  239.             echo json_encode($return);
  240.         }
  241.         elseif($action == "restart"){
  242.             if($status == "1"){
  243.                 $Ts3Instance->ServerStop($TS3->sid);
  244.                 $Ts3Instance->ServerStart($TS3->sid);
  245.                 $return = array('status' => 'success', 'msg' => 'Ce serveur TeamSpeak 3 vient de redémarrer.');
  246.                 echo json_encode($return);
  247.             }
  248.             elseif($status == "0"){
  249.                 $Ts3Instance->ServerStart($TS3->sid);
  250.                 $return = array('status' => 'success', 'msg' => 'Votre serveur TeamSpeak 3 vient d\'être démarrer.');
  251.                 echo json_encode($return);
  252.             }
  253.         }
  254.         elseif($action == "getbackup"){
  255.  
  256.                 $getbackuplist = $bdd->prepare("SELECT * FROM ts3_save WHERE ts3 = :ts3id");
  257.                 $getbackuplist->execute(array(":ts3id" => $TS3->id));
  258.                 while ($blackups = $getbackuplist->fetch(PDO::FETCH_ASSOC)) {
  259.                 $arr[] = $blackups;
  260.                 }
  261.  
  262.                 echo json_encode($arr);
  263.         }
  264.         elseif($action == "snapdelete"){
  265.  
  266.                 $snapid = htmlentities(trim($_GET['snapid']));
  267.  
  268.                 $getsnapinfo = $bdd->prepare("SELECT * FROM ts3_save WHERE ts3 = :ts3id AND save_file = :save_file OR save_file = :save_file2 ");
  269.                 $getsnapinfo->execute(array(":ts3id" => $TS3->id, ':save_file' => $snapid.".init", ':save_file2' => $snapid.".save"));
  270.                 $snapinfo = $getsnapinfo->fetch(PDO::FETCH_OBJ);
  271.                 $checkername = explode(".", $snapinfo->save_file);
  272.                 if(md5($TS3->port.$snapinfo->save_date) == $checkername['0'])
  273.                 {
  274.                     unlink($_SERVER['DOCUMENT_ROOT'] . '/manager/app/php/ts3snaps/'.$snapinfo->save_file);
  275.                     $snapdel = $bdd->prepare("DELETE FROM ts3_save WHERE id = :id");
  276.                     $snapdel->execute(array(':id' => $snapinfo->id));
  277.                     $return = array('status' => 'success', 'msg' => 'La sauvegarde a étè supprimer.');
  278.  
  279.                 }else{
  280.                     $return = array('status' => 'error', 'msg' => 'Erreur lors du traitement de votre requête');
  281.                 }
  282.  
  283.                 echo json_encode($return);
  284.         }
  285.         elseif ($action == "loadservergroupTS") {
  286.             if($status == "1")
  287.             {
  288.                 $group = $ts3Server->serverGroupList();
  289.                 $items = array();
  290.                 foreach ($group as $k => $v) {
  291.                     if($v['sgid'] > "5")
  292.                     {
  293.                         $ssgid = $v['sgid'];
  294.                         $items[$ssgid]['name'] = $v->toString();
  295.                         $items[$ssgid]['sgid'] = $ssgid;
  296.                     }
  297.                 }
  298.             }
  299.             echo json_encode($items);
  300.         }
  301.         elseif ($action == "loadchannelsgroupTS") {
  302.             if($status == "1")
  303.             {
  304.                 $groups = $ts3Server->channelGroupList();
  305.                 $items = array();
  306.                 foreach ($groups as $k => $v) {
  307.                     if($v['cgid'] > "5")
  308.                     {
  309.                         $cgid = $v['cgid'];
  310.                         $items[$cgid]['name'] = $v->toString();
  311.                         $items[$cgid]['cgid'] = $cgid;
  312.                     }
  313.                 }
  314.             }
  315.             echo json_encode($items);
  316.         }
  317.         elseif ($action == "privilegekeysCreate") {
  318.             $type = htmlentities(trim($_GET['type']));
  319.             $id1 = htmlentities(trim($_GET['id1']));
  320.             $id2 = htmlentities(trim($_GET['id2']));
  321.             $description = htmlentities(trim($_GET['description']));
  322.  
  323.             if($type == "1")
  324.             {
  325.                 if($id1 > "5"){
  326.                     $group = $ts3Server->channelGroupGetById($id1);
  327.                     $group->privilegeKeyCreate($id2, $description);
  328.                     $return = array('status' => 'success', 'msg' => 'Good');
  329.                 }else{
  330.                     $return = array('status' => 'error', 'msg' => 'erreur');
  331.                 }  
  332.             }elseif($type == "0")
  333.             {
  334.                 if($id1 > "5"){
  335.                     $group = $ts3Server->serverGroupGetById($id1);
  336.                     $group->privilegeKeyCreate($description);
  337.                     $return = array('status' => 'success', 'msg' => 'Good');
  338.                 }else{
  339.                     $return = array('status' => 'error', 'msg' => 'erreur');
  340.                 }  
  341.             }          
  342.             echo json_encode($return);
  343.  
  344.         }
  345.         elseif ($action == "loadchannelTS") {
  346.             if($status == "1")
  347.             {
  348.                 $channels = $ts3Server->channelList();
  349.                 $items = array();
  350.                 foreach ($channels as $k => $v)
  351.                 {              
  352.                         $cid = $v['cid'];
  353.                         $cname = $v['channel_name'];
  354.                         $items[$cid]['cid'] = $cid;
  355.                         $items[$cid]['name'] = $cname->toString();
  356.                 }
  357.             }
  358.             echo json_encode($items);
  359.         }
  360.         elseif($action == "snapinit"){
  361.  
  362.                 $snapid = htmlentities(trim($_GET['snapid']));
  363.  
  364.                 $getsnapinfo = $bdd->prepare("SELECT * FROM ts3_save WHERE ts3 = :ts3id AND save_file = :save_file OR save_file = :save_file2 ");
  365.                 $getsnapinfo->execute(array(":ts3id" => $TS3->id, ':save_file' => $snapid.".init", ':save_file2' => $snapid.".save"));
  366.                 $snapinfo = $getsnapinfo->fetch(PDO::FETCH_OBJ);
  367.                 $checkername = explode(".", $snapinfo->save_file);
  368.                 if(md5($TS3->port.$snapinfo->save_date) == $checkername['0']){
  369.                     if($status == "1"){
  370.                         if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/manager/app/php/ts3snaps/'.$snapinfo->save_file)) {   
  371.                             $backupcontent = @file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/manager/app/php/ts3snaps/'.$snapinfo->save_file);
  372.                             if($snapinfo->save_crypt == "1"){
  373.                                 $ts3Server->snapshotDeploy($backupcontent, TeamSpeak3::SNAPSHOT_BASE64);
  374.                             }else{
  375.                                 $ts3Server->snapshotDeploy($backupcontent, TeamSpeak3::SNAPSHOT_STRING);
  376.                             }
  377.                             $return = array('status' => 'success', 'msg' => 'Votre TeamSpeak 3 a été restaurer a la date du: '.$snapinfo->save_date);
  378.                         }else{
  379.                             $return = array('status' => 'error', 'msg' => 'Le fichier sauvegarde n\'existe pas..');
  380.                         }
  381.                     }else{
  382.                         $return = array('status' => 'error', 'msg' => 'Nous ne pouvons pas faire la restauration si le TeamSpeak 3 est hors ligne');
  383.                     }
  384.                 }else{
  385.                     $return = array('status' => 'error', 'msg' => 'Erreur lors du traitement de votre requête');
  386.                 }
  387.                 echo json_encode($return);
  388.         }
  389.         elseif($action == "newbackup")
  390.         {
  391.             if ($status == "1") {
  392.                
  393.                 $timenow = date("d/m/Y - H:i:s");
  394.                 $name = htmlentities(trim($_GET['name']));
  395.                 $isdownload = htmlentities(trim($_GET['isdownload']));
  396.                 $iscrypt = htmlentities(trim($_GET['iscrypt']));
  397.                 $isrestor = htmlentities(trim($_GET['isrestor']));
  398.  
  399.                 if($isdownload){
  400.                     $snapname = md5($TS3->port.$timenow).".save";
  401.                 }else{
  402.                     $snapname = md5($TS3->port.$timenow).".init";
  403.                 }
  404.  
  405.  
  406.                 if($iscrypt){
  407.                     $datasnapshot = $ts3Server->snapshotCreate(TeamSpeak3::SNAPSHOT_BASE64);
  408.                 }else{
  409.                     $datasnapshot = $ts3Server->snapshotCreate(TeamSpeak3::SNAPSHOT_STRING);
  410.                 }
  411.                
  412.                 $savesnap = $bdd->prepare("INSERT INTO ts3_save SET ts3 = :ts3, nom = :nom, save_date = :save_date, save_file = :save_file, save_download = :save_download, save_restore = :save_restore, save_crypt = :save_crypt");
  413.                 $savesnap->execute(array(':ts3' => $TS3->id, ':nom' => $name, ':save_date' => $timenow, ':save_file' => $snapname, ':save_download' => $isdownload, ':save_restore' => $isrestor, ':save_crypt' => $iscrypt));
  414.                
  415.                 file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/manager/app/php/ts3snaps/'.$snapname, $datasnapshot);
  416.                 $return = array('status' => 'success', 'msg' => 'Nous avez créé une sauvegarde de votre TeamSpeak 3');
  417.             }
  418.             else
  419.             {
  420.                 $return = array('status' => 'error', 'msg' => 'Nous ne pouvez pas faire la sauvegarde d\'un TeamSpeak 3 hors ligne');
  421.             }
  422.             echo json_encode($return);
  423.         }
  424.         elseif($action == "enableviewer")
  425.         {
  426.             if ($status == "1") {
  427.                 $guestgroup = $ts3Server->getProperty("virtualserver_default_server_group");
  428.                 $grouptoassign = $ts3Server->serverGroupGetById($guestgroup);  
  429.                 $grouptoassign->permAssignByName("b_virtualserver_info_view", "1");
  430.                 $grouptoassign->permAssignByName("b_virtualserver_channel_list", "1");
  431.                 $grouptoassign->permAssignByName("b_virtualserver_client_list", "1");
  432.                
  433.                 $return = array('status' => 'success', 'msg' => 'Le viewer est maintenant activer');
  434.             }
  435.             else
  436.             {
  437.                 $return = array('status' => 'error', 'msg' => 'Cette action est impossible. Votre Serveur est hors ligne ');
  438.             }
  439.             echo json_encode($return);
  440.         }
  441.     }
  442. }
  443. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement