PageRenderTime 42ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/ftp_management/code/filezilla.php

https://github.com/raiman264/zpanelx
PHP | 129 lines | 88 code | 6 blank | 35 comment | 11 complexity | b314d81f9999f27f24752a5326b75624 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-3.0, LGPL-2.1, CC-BY-SA-4.0, GPL-3.0
  1. <?php
  2. /**
  3. *
  4. * ZPanel - A Cross-Platform Open-Source Web Hosting Control panel.
  5. *
  6. * @package ZPanel
  7. * @version $Id$
  8. * @author Bobby Allen - ballen@bobbyallen.me
  9. * @copyright (c) 2008-2014 ZPanel Group - http://www.zpanelcp.com/
  10. * @license http://opensource.org/licenses/gpl-3.0.html GNU Public License v3
  11. *
  12. * This program (ZPanel) is free software: you can redistribute it and/or modify
  13. * it under the terms of the GNU General Public License as published by
  14. * the Free Software Foundation, either version 3 of the License, or
  15. * (at your option) any later version.
  16. *
  17. * This program is distributed in the hope that it will be useful,
  18. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. * GNU General Public License for more details.
  21. *
  22. * You should have received a copy of the GNU General Public License
  23. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  24. *
  25. */
  26. // Set some variables for filezilla from the x_ftp_settings database table...
  27. $ftp_reload = "\"" . ctrl_options::GetSystemOption('ftp_service_root') . ctrl_options::GetSystemOption('ftp_service') . "\" /reload-config";
  28. $ftpconfigfile = ctrl_options::GetSystemOption('ftp_config_file');
  29. $getftpconfigfile = file_get_contents($ftpconfigfile);
  30. $ftpsettings = '/<Settings>(.*)<\/Settings>/msU';
  31. // Included after acount has been created, deleted, or reset...
  32. if (!fs_director::CheckForEmptyValue(self::$create) ||
  33. !fs_director::CheckForEmptyValue(self::$delete) ||
  34. !fs_director::CheckForEmptyValue(self::$reset)) {
  35. $matchresult = preg_match_all($ftpsettings, $getftpconfigfile, $matches);
  36. if (!empty($matchresult)) {
  37. // First grab the filezilla setting so we can add it back in when we write the config file...
  38. $line = "<FileZillaServer>" . fs_filehandler::NewLine();
  39. $line .= $matches[0][0] . fs_filehandler::NewLine();
  40. $line .= "<Groups />" . fs_filehandler::NewLine();
  41. $line .= "<Users>" . fs_filehandler::NewLine();
  42. // Get a list of all the accounts...
  43. $sql = $zdbh->prepare("SELECT * FROM x_ftpaccounts WHERE ft_deleted_ts IS NULL ORDER BY ft_user_vc ASC");
  44. $sql->execute();
  45. while ($rowftpaccounts = $sql->fetch()) {
  46. $ftpuser = ctrl_users::GetUserDetail($rowftpaccounts['ft_acc_fk']);
  47. //Only add the user if they are not disabled...
  48. if ($ftpuser['enabled'] <> 0) {
  49. // begin user loop
  50. $line .= "<User Name=\"" . $rowftpaccounts['ft_user_vc'] . "\">" . fs_filehandler::NewLine();
  51. $line .= "<Option Name=\"Pass\">" . md5($rowftpaccounts['ft_password_vc']) . "</Option>" . fs_filehandler::NewLine();
  52. $line .= "<Option Name=\"Group\"/>" . fs_filehandler::NewLine();
  53. $line .= "<Option Name=\"Bypass server userlimit\">0</Option>" . fs_filehandler::NewLine();
  54. $line .= "<Option Name=\"User Limit\">0</Option>" . fs_filehandler::NewLine();
  55. $line .= "<Option Name=\"IP Limit\">0</Option>" . fs_filehandler::NewLine();
  56. $line .= "<Option Name=\"Enabled\">1</Option>" . fs_filehandler::NewLine();
  57. $line .= "<Option Name=\"Comments\">Auto account generated by ZPanel (v. " . ctrl_options::GetSystemOption('dbversion') . ")</Option>" . fs_filehandler::NewLine();
  58. $line .= "<Option Name=\"ForceSsl\">0</Option>" . fs_filehandler::NewLine();
  59. $line .= "<IpFilter>" . fs_filehandler::NewLine();
  60. $line .= "<Disallowed/>" . fs_filehandler::NewLine();
  61. $line .= "<Allowed/>" . fs_filehandler::NewLine();
  62. $line .= "</IpFilter>" . fs_filehandler::NewLine();
  63. $line .= "<Permissions>" . fs_filehandler::NewLine();
  64. $line .= "<Permission Dir=\"" . ctrl_options::GetSystemOption('hosted_dir') . $ftpuser['username'] . $rowftpaccounts['ft_directory_vc'] . "\">" . fs_filehandler::NewLine();
  65. // If read only...
  66. $accessmode = "Read List";
  67. if ($rowftpaccounts['ft_access_vc'] == 'RO') {
  68. $permissionset = "<Option Name=\"FileRead\">1</Option>" . fs_filehandler::NewLine();
  69. $permissionset .= "<Option Name=\"FileWrite\">0</Option>" . fs_filehandler::NewLine();
  70. $permissionset .= "<Option Name=\"FileDelete\">0</Option>" . fs_filehandler::NewLine();
  71. $permissionset .= "<Option Name=\"FileAppend\">0</Option>" . fs_filehandler::NewLine();
  72. $permissionset .= "<Option Name=\"DirCreate\">0</Option>" . fs_filehandler::NewLine();
  73. $permissionset .= "<Option Name=\"DirDelete\">0</Option>" . fs_filehandler::NewLine();
  74. $permissionset .= "<Option Name=\"DirList\">1</Option>" . fs_filehandler::NewLine();
  75. $permissionset .= "<Option Name=\"DirSubdirs\">1</Option>" . fs_filehandler::NewLine();
  76. $accessmode = "Read access";
  77. }
  78. // If write only...
  79. if ($rowftpaccounts['ft_access_vc'] == 'WO') {
  80. $permissionset = "<Option Name=\"FileRead\">0</Option>" . fs_filehandler::NewLine();
  81. $permissionset .= "<Option Name=\"FileWrite\">1</Option>" . fs_filehandler::NewLine();
  82. $permissionset .= "<Option Name=\"FileDelete\">0</Option>" . fs_filehandler::NewLine();
  83. $permissionset .= "<Option Name=\"FileAppend\">0</Option>" . fs_filehandler::NewLine();
  84. $permissionset .= "<Option Name=\"DirCreate\">1</Option>" . fs_filehandler::NewLine();
  85. $permissionset .= "<Option Name=\"DirDelete\">0</Option>" . fs_filehandler::NewLine();
  86. $permissionset .= "<Option Name=\"DirList\">0</Option>" . fs_filehandler::NewLine();
  87. $permissionset .= "<Option Name=\"DirSubdirs\"0</Option>" . fs_filehandler::NewLine();
  88. $accessmode = "Write access";
  89. }
  90. // If read and write...
  91. if ($rowftpaccounts['ft_access_vc'] == 'RW') {
  92. $permissionset = "<Option Name=\"FileRead\">1</Option>" . fs_filehandler::NewLine();
  93. $permissionset .= "<Option Name=\"FileWrite\">1</Option>" . fs_filehandler::NewLine();
  94. $permissionset .= "<Option Name=\"FileDelete\">1</Option>" . fs_filehandler::NewLine();
  95. $permissionset .= "<Option Name=\"FileAppend\">1</Option>" . fs_filehandler::NewLine();
  96. $permissionset .= "<Option Name=\"DirCreate\">1</Option>" . fs_filehandler::NewLine();
  97. $permissionset .= "<Option Name=\"DirDelete\">1</Option>" . fs_filehandler::NewLine();
  98. $permissionset .= "<Option Name=\"DirList\">1</Option>" . fs_filehandler::NewLine();
  99. $permissionset .= "<Option Name=\"DirSubdirs\">1</Option>" . fs_filehandler::NewLine();
  100. $accessmode = "Full access";
  101. }
  102. $line .= $permissionset;
  103. $line .= "<Option Name=\"IsHome\">1</Option>" . fs_filehandler::NewLine();
  104. $line .= "<Option Name=\"AutoCreate\">0</Option>" . fs_filehandler::NewLine();
  105. $line .= "</Permission>" . fs_filehandler::NewLine();
  106. $line .= "</Permissions>" . fs_filehandler::NewLine();
  107. $line .= "<SpeedLimits DlType=\"0\" DlLimit=\"10\" ServerDlLimitBypass=\"0\" UlType=\"0\" UlLimit=\"10\" ServerUlLimitBypass=\"0\">" . fs_filehandler::NewLine();
  108. $line .= "<Download/>" . fs_filehandler::NewLine();
  109. $line .= "<Upload/>" . fs_filehandler::NewLine();
  110. $line .= "</SpeedLimits>" . fs_filehandler::NewLine();
  111. $line .= "</User>" . fs_filehandler::NewLine();
  112. // end user loop
  113. }
  114. }
  115. $line .= "</Users>" . fs_filehandler::NewLine();
  116. $line .= "</FileZillaServer>";
  117. // Write the Filezilla config file
  118. if (fs_filehandler::UpdateFile($ftpconfigfile, 0777, $line)) {
  119. exec($ftp_reload);
  120. }
  121. }
  122. }
  123. ?>