transferSettings.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <?php
  2. /* $Id: transferSettings.php 2893 2007-04-14 13:20:30Z b4rt $ */
  3. /*******************************************************************************
  4. LICENSE
  5. This program is free software; you can redistribute it and/or
  6. modify it under the terms of the GNU General Public License (GPL)
  7. as published by the Free Software Foundation; either version 2
  8. of the License, or (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. To read the license please visit http://www.gnu.org/copyleft/gpl.html
  14. *******************************************************************************/
  15. // prevent direct invocation
  16. if ((!isset($cfg['user'])) || (isset($_REQUEST['cfg']))) {
  17. @ob_end_clean();
  18. @header("location: ../../index.php");
  19. exit();
  20. }
  21. /******************************************************************************/
  22. // common functions
  23. require_once('inc/functions/functions.common.php');
  24. // transfer functions
  25. require_once('inc/functions/functions.transfer.php');
  26. // init template-instance
  27. tmplInitializeInstance($cfg["theme"], "page.transferSettings.tmpl");
  28. // init transfer
  29. transfer_init();
  30. // request-vars
  31. $saveop = tfb_getRequestVar('save');
  32. $client = tfb_getRequestVar('client');
  33. $isSave = ($saveop == 1) ? true : false;
  34. // init ch-instance
  35. $ch = ($client == "")
  36. ? ClientHandler::getInstance(getTransferClient($transfer))
  37. : ClientHandler::getInstance($client);
  38. // customize-vars
  39. transfer_setCustomizeVars();
  40. // load settings, default if settings could not be loaded (fresh transfer)
  41. if ($ch->settingsLoad($transfer) !== true)
  42. $ch->settingsDefault();
  43. // set running-field
  44. $ch->running = isTransferRunning($transfer) ? 1 : 0;
  45. // save/display
  46. if ($isSave) { /* save */
  47. // set save-var
  48. $tmpl->setvar('isSave', 1);
  49. // send to client
  50. $doSend = ((isset($_REQUEST['sendbox'])) && ($ch->running == 1))
  51. ? true
  52. : false;
  53. // settings-keys
  54. $settingsKeys = array(
  55. 'savepath',
  56. 'max_upload_rate',
  57. 'max_download_rate',
  58. 'max_uploads',
  59. 'superseeder',
  60. 'die_when_done',
  61. 'sharekill',
  62. 'minport',
  63. 'maxport',
  64. 'maxcons',
  65. 'rerequest'
  66. );
  67. // settings-labels
  68. $settingsLabels = array(
  69. 'savepath' => 'Savepath',
  70. 'max_upload_rate' => 'Max Upload Rate',
  71. 'max_download_rate' => 'Max Download Rate',
  72. 'max_uploads' => 'Max Upload Connections',
  73. 'superseeder' => 'Superseeder',
  74. 'die_when_done' => 'Torrent Completion Activity',
  75. 'sharekill' => 'Percentage When Seeding should Stop',
  76. 'minport' => 'Min-Port',
  77. 'maxport' => 'Max-Port',
  78. 'maxcons' => 'Max Cons',
  79. 'rerequest' => 'Rerequest Interval'
  80. );
  81. // current settings
  82. $settingsCurrent = array();
  83. $settingsCurrent['savepath'] = $ch->savepath;
  84. $settingsCurrent['max_upload_rate'] = $ch->rate;
  85. $settingsCurrent['max_download_rate'] = $ch->drate;
  86. $settingsCurrent['max_uploads'] = $ch->maxuploads;
  87. $settingsCurrent['superseeder'] = $ch->superseeder;
  88. $settingsCurrent['die_when_done'] = $ch->runtime;
  89. $settingsCurrent['sharekill'] = $ch->sharekill;
  90. $settingsCurrent['minport'] = $ch->minport;
  91. $settingsCurrent['maxport'] = $ch->maxport;
  92. $settingsCurrent['maxcons'] = $ch->maxcons;
  93. $settingsCurrent['rerequest'] = $ch->rerequest;
  94. // new settings
  95. $settingsNew = array();
  96. foreach ($settingsKeys as $settingsKey) {
  97. $settingsNew[$settingsKey] = tfb_getRequestVar($settingsKey);
  98. if ($settingsNew[$settingsKey] == "")
  99. $settingsNew[$settingsKey] = $settingsCurrent[$settingsKey];
  100. }
  101. // customize settings
  102. if ($cfg['transfer_customize_settings'] == 2)
  103. $customize_settings = 1;
  104. elseif ($cfg['transfer_customize_settings'] == 1 && $cfg['isAdmin'])
  105. $customize_settings = 1;
  106. else
  107. $customize_settings = 0;
  108. // process changes
  109. $settingsChanged = array();
  110. foreach ($settingsKeys as $settingsKey) {
  111. if ($settingsNew[$settingsKey] != $settingsCurrent[$settingsKey]) {
  112. if (($settingsKey == 'savepath') || ($customize_settings == 1))
  113. array_push($settingsChanged, $settingsKey);
  114. }
  115. }
  116. if (empty($settingsChanged)) { /* no changes */
  117. // set message-var
  118. $tmpl->setvar('message', "no changes");
  119. } else { /* something changed */
  120. // fill lists
  121. $list_changes = array();
  122. $list_restart = array();
  123. $list_send = array();
  124. foreach ($settingsChanged as $settingsKey) {
  125. // value
  126. $valid = true;
  127. switch ($settingsKey) {
  128. case 'superseeder':
  129. $value = ($settingsNew[$settingsKey] == 1) ? "True" : "False";
  130. break;
  131. case 'die_when_done':
  132. $value = ($settingsNew[$settingsKey] == "True") ? "Die When Done" : "Keep Seeding";
  133. break;
  134. case 'savepath':
  135. if ($cfg["showdirtree"] == 1) {
  136. $value = checkDirPathString($settingsNew[$settingsKey]);
  137. // skip if invalid
  138. if ((@checkDirectory($value, 0777)) !== true)
  139. $valid = false;
  140. } else {
  141. AuditAction($cfg["constants"]["error"], $cfg["user"]." tried to change save-path-setting of ".$transfer." to ".$settingsNew[$settingsKey]);
  142. $valid = false;
  143. }
  144. break;
  145. default:
  146. $value = $settingsNew[$settingsKey];
  147. }
  148. // only valid
  149. if ($valid) {
  150. // list
  151. array_push($list_changes, array(
  152. 'lbl' => $settingsLabels[$settingsKey],
  153. 'val' => $value
  154. )
  155. );
  156. // send
  157. if (($ch->running == 1) && ($doSend)) {
  158. // runtime
  159. if ($cfg["runtimeMap"][$ch->client][$settingsKey] == 1)
  160. array_push($list_send, array(
  161. 'lbl' => $settingsLabels[$settingsKey],
  162. 'val' => $value
  163. )
  164. );
  165. // restart
  166. else
  167. array_push($list_restart, array(
  168. 'lbl' => $settingsLabels[$settingsKey],
  169. 'val' => $value
  170. )
  171. );
  172. }
  173. }
  174. }
  175. if (!empty($list_changes))
  176. $tmpl->setloop('list_changes', $list_changes);
  177. if (empty($list_send))
  178. $doSend = false;
  179. else
  180. $tmpl->setloop('list_send', $list_send);
  181. if (!empty($list_restart))
  182. $tmpl->setloop('list_restart', $list_restart);
  183. // save settings
  184. if ($cfg["showdirtree"] == 1) {
  185. $newSavepath = checkDirPathString($settingsNew['savepath']);
  186. if ($newSavepath != $settingsCurrent['savepath']) {
  187. if ((@checkDirectory($newSavepath, 0777)) !== true)
  188. $tmpl->setvar('error', "savepath ".$newSavepath." not valid and change not saved.");
  189. else
  190. $ch->savepath = $newSavepath;
  191. }
  192. }
  193. $ch->rate = $settingsNew['max_upload_rate'];
  194. $ch->drate = $settingsNew['max_download_rate'];
  195. $ch->maxuploads = $settingsNew['max_uploads'];
  196. $ch->superseeder = $settingsNew['superseeder'];
  197. $ch->runtime = $settingsNew['die_when_done'];
  198. $ch->sharekill = $settingsNew['sharekill'];
  199. $ch->minport = $settingsNew['minport'];
  200. $ch->maxport = $settingsNew['maxport'];
  201. $ch->maxcons = $settingsNew['maxcons'];
  202. $ch->rerequest = $settingsNew['rerequest'];
  203. $ch->settingsSave();
  204. if ($doSend) { /* send changes */
  205. // upload-rate
  206. if ($settingsNew['max_upload_rate'] != $settingsCurrent['max_upload_rate'])
  207. $ch->setRateUpload($transfer, $settingsNew['max_upload_rate']);
  208. // upload-rate
  209. if ($settingsNew['max_download_rate'] != $settingsCurrent['max_download_rate'])
  210. $ch->setRateDownload($transfer, $settingsNew['max_download_rate']);
  211. // runtime
  212. if ($settingsNew['die_when_done'] != $settingsCurrent['die_when_done'])
  213. $ch->setRuntime($transfer, $settingsNew['die_when_done']);
  214. // sharekill
  215. if ($settingsNew['sharekill'] != $settingsCurrent['sharekill'])
  216. $ch->setSharekill($transfer, $settingsNew['sharekill']);
  217. // send command-buffer to client
  218. CommandHandler::send($transfer);
  219. // set message-var
  220. $tmpl->setvar('message', "settings saved + changes sent to client");
  221. } else { /* don't send changes or no changes to send */
  222. // set message-var
  223. $tmpl->setvar('message', "settings saved");
  224. }
  225. }
  226. } else { /* display */
  227. // set save-var
  228. $tmpl->setvar('isSave', 0);
  229. // client-chooser
  230. if ($ch->type == "torrent") {
  231. $tmpl->setvar('enableClientChooser', 1);
  232. $tmpl->setvar('enableBtclientChooser', $cfg["enable_btclient_chooser"]);
  233. if ($cfg["enable_btclient_chooser"] != 0)
  234. tmplSetClientSelectForm($ch->client);
  235. else
  236. $tmpl->setvar('btclientDefault', $ch->client);
  237. } else {
  238. $tmpl->setvar('enableClientChooser', 0);
  239. }
  240. // set vars
  241. transfer_setProfiledVars();
  242. // dirtree
  243. if ($cfg["supportMap"][$ch->client]['savepath'] == 1) {
  244. $tmpl->setvar('showdirtree', $cfg["showdirtree"]);
  245. if ($cfg["showdirtree"] == 1)
  246. tmplSetDirTree($ch->savepath, $cfg["maxdepth"]);
  247. } else {
  248. $tmpl->setvar('showdirtree', 0);
  249. }
  250. // send-box
  251. $tmpl->setvar('sendboxShow', ($ch->type == "wget") ? 0 : 1);
  252. $tmpl->setvar('sendboxAttr', ($ch->running == 1) ? "checked" : "disabled");
  253. }
  254. // title + foot
  255. tmplSetFoot(false);
  256. tmplSetTitleBar($transferLabel." - Settings", false);
  257. // iid
  258. tmplSetIidVars();
  259. // parse template
  260. $tmpl->pparse();
  261. ?>