Advertisement
Black_Lava

php - samba

Mar 27th, 2021
552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.12 KB | None | 0 0
  1. <?php
  2. $smb = "/etc/samba/smb.conf";
  3. exec ("cat ".$smb, $config);
  4.  
  5. //Проверка наличия передачи данных формы методом POST и отстутствие данных переданных методом GET:
  6. if (!empty($_POST) and empty($_GET)) {
  7.         if (isset($_POST['name']) and isset($_POST['path'])) {
  8.             $z = count($config);
  9.             $config[$z] = "[".$_POST['name']."]";
  10.             $z++;
  11.             $config[$z] = "path = ".$_POST['path'];
  12.             $z++;
  13.             if ($_POST['rw'] == "on") {
  14.                 $config[$z] = "read only = no";
  15.                 $z++;
  16.                 $config[$z] = "writable = yes";
  17.                 $z++;
  18.                 }
  19.             else {
  20.                 $config[$z] = "read only = yes";
  21.                 $z++;
  22.                 $config[$z] = "writable = no";
  23.                 $z++;
  24.             }
  25.             $config[$z] = "hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/~*/";
  26.             $z++;
  27.             $config[$z] = "public = yes";
  28.             $i++;
  29.             $z++;
  30.         }
  31.         $c = 0;
  32.         exec ("sudo rm ".$smb);
  33.         while ($c < count($config)) {
  34.             $write[$c] = "echo '".$config[$c]."' | sudo tee -a ".$smb;
  35.             exec ($write[$c]);
  36.             $c++;
  37.         }
  38.         exec ("sudo systemctl restart smbd");
  39.         header('Location: /samba/');
  40.     }
  41.  
  42. //В случае наличия данных переданных методом POST и GET
  43. elseif (!empty($_POST) and !empty($_GET) and $_GET['edit'] == '1') {
  44.     $q = ((count($_POST)/3)-1);
  45.     $i = 0;
  46.     if (count($config)>19)  {
  47.         $z=0;
  48.         while ($z<20) {
  49.             $temp[$z] = $config[$z];
  50.             $z++;
  51.         }
  52.         while ($i <= $q) {
  53.                 if ($_POST['delshare'.$i] == "on") { $i++; }
  54.                 else if (isset($_POST['name'.$i]) and isset($_POST['path'.$i])) {
  55.                     $temp[$z] = "[".$_POST['name'.$i]."]";
  56.                     $z++;
  57.                     $temp[$z] = "path = ".$_POST['path'.$i];
  58.                     $z++;
  59.                     if ($_POST['rw'.$i] == "on") {
  60.                         $temp[$z] = "read only = no";
  61.                         $z++;
  62.                         $temp[$z] = "writable = yes";
  63.                         $z++;
  64.                     }
  65.                     else {
  66.                         $temp[$z] = "read only = yes";
  67.                         $z++;
  68.                         $temp[$z] = "writable = no";
  69.                         $z++;
  70.                     }
  71.                     $temp[$z] = "hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/~*/";
  72.                     $z++;
  73.                     $temp[$z] = "public = yes";
  74.                     $i++;
  75.                     $z++;
  76.                 }
  77.                 else { $i++; }
  78.             }
  79.             $c = 0;
  80.             exec ("sudo rm ".$smb);
  81.             while ($c < count($temp)) {
  82.                 $write[$c] = "echo '".$temp[$c]."' | sudo tee -a ".$smb;
  83.                 exec ($write[$c]);
  84.                 $c++;
  85.             }
  86.             exec ("sudo systemctl restart smbd");
  87.             header('Location: /samba/');
  88.         }
  89.         else {
  90.             $z=20;
  91.             while ($i <= $q) {
  92.                 $config[$z] = "[".$_POST['name'.$i]."]";
  93.                 $z++;
  94.                 $config[$z] = "path = ".$_POST['path'.$i];
  95.                 $z++;
  96.                 if ($_POST['rw'.$i] == "on") {
  97.                     $config[$z] = "read only = no";
  98.                     $z++;
  99.                     $config[$z] = "writable = yes";
  100.                     $z++;
  101.                 }
  102.                 else {
  103.                     $config[$z] = "read only = yes";
  104.                     $z++;
  105.                     $config[$z] = "writable = no";
  106.                     $z++;
  107.                 }
  108.                 $config[$z] = "hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/~*/";
  109.                 $z++;
  110.                 $config[$z] = "public = yes";
  111.                 $i++;
  112.                 $z++;
  113.             }
  114.             $c = 0;
  115.             exec ("sudo rm ".$smb);
  116.             while ($c < count($config)) {
  117.                 $write[$c] = "echo '".$config[$c]."' | sudo tee -a ".$smb;
  118.                 exec ($write[$c]);
  119.                 $c++;
  120.             }
  121.             exec ("sudo systemctl restart smbd");
  122.             header('Location: /samba/');
  123.         }
  124. }
  125.  
  126. //В случае наличия данных переданных методом GET и отсутствия данных переданных методом POST
  127. elseif (empty($_POST) and !empty($_GET) and $_GET['edit'] == '1') {
  128.     include '../nav.php';
  129.     include '../header.php';
  130.     include '../menu.php';
  131.     echo "<br>";
  132.         if (count($config)>19) {
  133.         $i=20;
  134.         $k=0;
  135.         while (count($config)>$i) {
  136.                 $share[$k] = $config[$i]."|";
  137.                 $i++;
  138.                 $share[$k] .= $config[$i]."|";
  139.                 $i++;
  140.                 $share[$k] .= $config[$i]."|";
  141.                 $i++;
  142.                 $share[$k] .= $config[$i]."|";
  143.                 $i++;
  144.                 $share[$k] .= $config[$i]."|";
  145.                 $i++;
  146.                 $share[$k] .= $config[$i];
  147.                 $i++;
  148.                 $k++;
  149.         }
  150.         echo "<table><tr class='center1'><td>Share name</td><td>Share path</td><td>Writable</td><td>Delete</td></tr>";
  151.         echo "<form method=post name=tableshare>";
  152.         foreach ($share as $key => $value) {
  153.             $temp = explode ("|", $value);
  154.             $name = str_replace("[", "", $temp[0]);
  155.             $name = str_replace("]", "", $name);
  156.             $path = explode (" = ", $temp[1]);
  157.             $path = $path[1];
  158.             if ($temp[2] == "read only = no" AND $temp[3] == "writable = yes") {
  159.                     $rw = "checked";
  160.             } else { $rw = ""; }
  161.             echo "<tr class='center2'><td width=150><input maxlength='20' size='20' name='name".$key."' value='".$name."' required></td><td width=200><input maxlength='25' size='25' name='path".$key."' value='".$path."' required></td><td><input type='checkbox' name='rw".$key."' ".$rw."></td><td><input type=checkbox name='delshare".$key."'></td></tr>";
  162.         }
  163.         echo "<tr><td colspan=4 align='left'><button>Сохранить изменения</button><input type='button' value='Отмена' onClick=location.href='/samba/'></td></tr></form>";
  164.         echo "</table>";
  165.     }
  166.     echo "</section></div></body></html>";
  167. }
  168.  
  169. //В случае отсутствия данных переданных методом POST и GET
  170. else {
  171.     include '../nav.php'; // php определение текущей страницы и тайтла для страницы
  172.     include '../header.php'; // html болванка со стилями
  173.     include '../menu.php'; // панель навигации
  174.     echo "<br>";
  175.         if (count($config)>19) {
  176.         $i=20;
  177.         $k=0;
  178.         while (count($config)>$i) {
  179.                 $share[$k] = $config[$i]."|";
  180.                 $i++;
  181.                 $share[$k] .= $config[$i]."|";
  182.                 $i++;
  183.                 $share[$k] .= $config[$i]."|";
  184.                 $i++;
  185.                 $share[$k] .= $config[$i]."|";
  186.                 $i++;
  187.                 $share[$k] .= $config[$i]."|";
  188.                 $i++;
  189.                 $share[$k] .= $config[$i];
  190.                 $i++;
  191.                 $k++;
  192.         }
  193.         echo "<table><tr class='center1'><td width=150>Share name</td><td width=200>Share path</td><td>Writable</td></tr>";
  194.         foreach ($share as $value) {
  195.             $temp = explode ("|", $value);
  196.             $name = str_replace("[", "", $temp[0]);
  197.             $name = str_replace("]", "", $name);
  198.             $path = explode (" = ", $temp[1]);
  199.             $path = $path[1];
  200.             if ($temp[2] == "read only = no" AND $temp[3] == "writable = yes") {
  201.                     $rw = "yes";
  202.             } else { $rw = "no"; }
  203.             echo "<tr class='center2'><td>".$name."</div></td><td>".$path."</td><td>".$rw."</td></tr>";
  204.         }
  205.         echo "<tr><td colspan=3><form name='edit'><button name=edit value=1>Изменить</button></form></td></tr></table>";
  206.     }
  207.     else { echo "<br>В данный момент не задано ни одной общей папки."; }
  208.         echo "<table>";
  209.             echo "<tr class='center1'>";
  210.                 echo "<td>Share name</td>";
  211.                 echo "<td>Share path</td>";
  212.                 echo "<td>Writable</td>";
  213.             echo "</tr>";
  214.             echo "<form method=post name=add_share>";
  215.                 echo "<tr class='center1'>";
  216.                     echo "<td width=150><input maxlength='20' size='20' name='name' required></td>";
  217.                     echo "<td width=200><input maxlength='25' size='25' name='path' required></td>";
  218.                     echo "<td><input type='checkbox' name='rw'></td>";
  219.                 echo "</tr>";
  220.                 echo "<tr>";
  221.                     echo "<td colspan=3><button>Добавить</button></td>";
  222.                 echo "</tr>";
  223.             echo "</form>";
  224.         echo "</table>";
  225.     echo "</section></div></body></html>";
  226. }
  227. ?>
  228.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement