ftp_admin.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <script type="text/javascript" src="js/modules/ftp.js"></script>
  2. <?php
  3. /*
  4. *
  5. * OGP - Open Game Panel
  6. * Copyright (C) 2008 - 2013 The OGP Development Team
  7. *
  8. * http://www.opengamepanel.org/
  9. *
  10. * This program is free software; you can redistribute it and/or
  11. * modify it under the terms of the GNU General Public License
  12. * as published by the Free Software Foundation; either version 2
  13. * of the License, or any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, write to the Free Software
  22. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  23. *
  24. */
  25. function exec_ogp_module()
  26. {
  27. include('includes/lib_remote.php');
  28. global $db;
  29. global $view;
  30. if(isset($_POST['add_ftp_user']))
  31. {
  32. $server_row = $db->getRemoteServer($_POST['remote_server_id']);
  33. $remote = new OGPRemoteLibrary($server_row['agent_ip'],$server_row['agent_port'],$server_row['encryption_key'],$server_row['timeout']);
  34. $post_ftp_login = strip_real_escape_string($_POST['ftp_login']);
  35. $post_ftp_password = strip_real_escape_string($_POST['ftp_password']);
  36. $post_full_path = strip_real_escape_string($_POST['full_path']);
  37. $host_stat = $remote->status_chk();
  38. $ftp_accounts_list = $remote->ftp_mgr("list");
  39. $ftp_accounts = explode("\n",$ftp_accounts_list);
  40. $user_exists = FALSE;
  41. foreach($ftp_accounts as $ftp_account)
  42. {
  43. if( $ftp_account != "" )
  44. {
  45. list($ftp_login, $ftp_path) = explode("\t",$ftp_account);
  46. $ftp_login = trim($ftp_login);
  47. if ($ftp_login == $post_ftp_login)
  48. {
  49. $user_exists = TRUE;
  50. break;
  51. }
  52. }
  53. }
  54. if( $user_exists === TRUE )
  55. {
  56. print_failure( ftp_account_already_exists );
  57. }
  58. else
  59. {
  60. $remote->ftp_mgr("useradd", $post_ftp_login, $post_ftp_password, $post_full_path);
  61. }
  62. }
  63. if(isset($_POST['del_ftp_user_y']))
  64. {
  65. $ftp_login = strip_real_escape_string($_POST['ftp_login']);
  66. $server_row = $db->getRemoteServer($_POST['remote_server_id']);
  67. $remote = new OGPRemoteLibrary($server_row['agent_ip'],$server_row['agent_port'],$server_row['encryption_key'],$server_row['timeout']);
  68. $remote->ftp_mgr("userdel", $ftp_login);
  69. $home_info = $db->getHomeByFtpLogin($server_row['remote_server_id'], $ftp_login);
  70. $db->changeFtpStatus('disabled',$home_info['home_id']);
  71. }
  72. if(isset($_POST['edit_ftp_user']))
  73. {
  74. $server_row = $db->getRemoteServer($_POST['remote_server_id']);
  75. $remote = new OGPRemoteLibrary($server_row['agent_ip'],$server_row['agent_port'],$server_row['encryption_key'],$server_row['timeout']);
  76. $ftp_login = strip_real_escape_string($_POST['ftp_login']);
  77. $settings = "";
  78. foreach($_POST as $key => $value)
  79. {
  80. if ($key != "edit_ftp_user" and $key != "ftp_login" and $key != "remote_server_id")
  81. {
  82. $clean_value = strip_real_escape_string($value);
  83. $account_settings .= "$key\t$clean_value\n";
  84. }
  85. }
  86. $remote->ftp_mgr("usermod", $ftp_login, $account_settings );
  87. }
  88. echo "<h2>" . ftp_admin . "</h2>";
  89. $servers = $db->getRemoteServers();
  90. if ($servers !== false) {
  91. echo "<tr><td colspan='3' >
  92. <form method=POST >
  93. <table class='center' style='width:100%' ><tr>
  94. <td>". remote_server ." <select style='width:250px' name='remote_server_id' >";
  95. foreach ( $servers as $server_row )
  96. {
  97. $display_ip = checkDisplayPublicIP($server_row['display_public_ip'],$server_row['agent_ip']);
  98. echo "<option value='" . $server_row['remote_server_id'] . "' >" . $server_row['remote_server_name'] . " (" . $display_ip . ":" . $server_row['agent_port'] . ")</option>";
  99. }
  100. echo "</select>
  101. </td>
  102. <td>". login ."<input type=text name='ftp_login' /></td>
  103. <td>". password ."<input type=text name='ftp_password' /></td>
  104. <td>". full_path ."<input type=text name='full_path' /></td>
  105. </tr>
  106. <tr>
  107. <td colspan=4 ><input style='width:100%;' type=submit name='add_ftp_user' value='". add_ftp_account ."' /></td>
  108. </tr>
  109. </table>
  110. </form>
  111. </td></tr>";
  112. ?>
  113. <table id="servermonitor" class="tablesorter" data-sortlist='[[2,0]]'>
  114. <thead>
  115. <tr>
  116. <th class="header sorter-false"></th><th><?php print_lang('remote_server'); ?></th><th><?php print_lang('login'); ?></th><th><?php print_lang('server_name'); ?></th><th><?php print_lang('full_path'); ?></th>
  117. </tr>
  118. </thead>
  119. <tbody>
  120. <?php
  121. foreach ( $servers as $server_row )
  122. {
  123. $display_ip = checkDisplayPublicIP($server_row['display_public_ip'],$server_row['agent_ip']);
  124. $remote = new OGPRemoteLibrary($server_row['agent_ip'],$server_row['agent_port'],$server_row['encryption_key'],$server_row['timeout']);
  125. $host_stat = $remote->status_chk();
  126. $status = ( $host_stat === 0 or $host_stat === -1 ) ? "<span class='failure'>". offline ."</span>" : "<span class='success'>". online ."</span>";
  127. if( $host_stat === 1)
  128. {
  129. $ftp_accounts_list = $remote->ftp_mgr("list");
  130. $ftp_accounts = explode("\n", $ftp_accounts_list);
  131. foreach($ftp_accounts as $ftp_account)
  132. {
  133. if( !empty($ftp_account))
  134. {
  135. list($ftp_login, $ftp_path) = explode("\t", $ftp_account);
  136. $ftp_login = trim($ftp_login);
  137. $home_info = $db->getHomeByFtpLogin($server_row['remote_server_id'], $ftp_login);
  138. $expandme = ( ( isset($_POST['ftp_login']) and $ftp_login == strip_real_escape_string($_POST['ftp_login']) ) AND ( isset($_POST['remote_server_id']) and $home_info['remote_server_id'] == $_POST['remote_server_id'] ) ) ? "expandme" : "";
  139. $home_name = isset( $home_info['home_name'] ) ? $home_info['home_name'] : $ftp_path;
  140. echo "<tr class='maintr $expandme'><td class='collapsible' ></td><td>".$server_row['remote_server_name']." (".$display_ip.")</td><td><b class='failure' >$ftp_login</td><td>" . htmlentities($home_name) . "</td><td>$ftp_path</td></tr>
  141. <tr class='expand-child' ><td colspan='4' >
  142. <form method=POST >
  143. <table>";
  144. $account_details = $remote->ftp_mgr("show",$ftp_login);
  145. $ftp_account_detail_list = explode("\n",$account_details);
  146. foreach($ftp_account_detail_list as $detail_line)
  147. {
  148. if( !empty($detail_line))
  149. {
  150. list($key,$value) = explode(" : ",$detail_line);
  151. $key = trim($key);
  152. $value = trim($value);
  153. $blacklist = array("Login", "Password", "UID", "GID", "ftp_user_id", "username",
  154. "username_prefix", "password", "sys_userid", "sys_groupid",
  155. "sys_perm_user", "sys_perm_group", "sys_perm_other",
  156. "server_id", "parent_domain_id", "uid", "gid" );
  157. if( in_array($key, $blacklist) )
  158. continue;
  159. if(substr($value, -1) == ')')
  160. {
  161. $value_parts = explode(" ", $value);
  162. if(is_numeric($value_parts[0]))
  163. {
  164. if(count($value_parts) > 1)
  165. {
  166. $value = array_shift($value_parts);
  167. $advert = implode(" ", $value_parts);
  168. }
  169. }
  170. else
  171. {
  172. $first_pos = array_shift($value_parts);
  173. $parts = preg_split('/:|-/', $first_pos);
  174. if(count(array_filter($parts, 'is_numeric') === 2))
  175. {
  176. $value = $first_pos;
  177. $advert = implode(" ", $value_parts);
  178. }
  179. }
  180. }
  181. if ($key == "Allowed local IPs" or $key == "ul_ratio" or $key == "ForceSsl" or ( count($ftp_account_detail_list) == 4 and $key == "Directory" ) )
  182. echo "</table>\n</td><td>\n<table>\n";
  183. if ($key == "Directory" )
  184. $value = str_replace( "/./", "", $value );
  185. if($key == "Username")
  186. $readOnly = true;
  187. echo "<tr><td>$key</td><td>
  188. <input type=text name='$key' value='$value' ";
  189. if(isset($readOnly) && ($readOnly)){
  190. echo "readonly ";
  191. }
  192. if(isset($advert))
  193. echo "/>".
  194. "</td><td>$advert</td></tr>\n";
  195. else
  196. echo "/>".
  197. "</td></tr>\n";
  198. unset($readOnly, $key, $value, $advert);
  199. }
  200. }
  201. echo "<tr>
  202. <td colspan='2' >
  203. <center>
  204. <input type=hidden name='remote_server_id' value='".$server_row['remote_server_id']."'/>
  205. <input type=hidden name='ftp_login' value=\"" . str_replace('"', '&quot;', $ftp_login) . "\"/>
  206. <input type=submit name='edit_ftp_user' value='". change_account_details ."' />
  207. </center>
  208. </td>
  209. <td>
  210. <input type='image' name='del_ftp_user' onsubmit='submit-form();' src='modules/administration/images/remove.gif'>". remove_account ."</input>
  211. </td>
  212. </tr>
  213. </table>
  214. </form>
  215. </td>
  216. </tr>";
  217. }
  218. }
  219. } // end: host_stat === 1
  220. } // end: foreach $servers as $server_row
  221. } else {
  222. echo get_lang('no_remote_servers');
  223. }
  224. echo "</tbody>";
  225. echo "</table>\n";
  226. }