upgrade.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  1. <?php
  2. /* $Id: upgrade.php 2292 2007-01-20 18:22:34Z 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. // version
  16. if (is_file('version.php'))
  17. require_once('version.php');
  18. else
  19. die("Fatal Error. version.php is missing.");
  20. // install-functions
  21. if ((@is_file('inc/install/functions.install.php')) === true)
  22. require_once('inc/install/functions.install.php');
  23. else
  24. die("Fatal Error. inc/install/functions.install.php is missing.");
  25. // defines
  26. define('_NAME', 'torrentflux-b4rt');
  27. define('_UPGRADE_FROM', '2.2');
  28. define('_UPGRADE_TO', '1.0');
  29. define('_DEFAULT_PATH', '/usr/local/torrent/');
  30. define('_TITLE', _NAME.' '._VERSION.' - Upgrade '._UPGRADE_FROM.' to '._UPGRADE_TO);
  31. define('_DIR', dirname($_SERVER["SCRIPT_FILENAME"])."/");
  32. define('_FILE_DBCONF', 'inc/config/config.db.php');
  33. define('_FILE_THIS', $_SERVER['SCRIPT_NAME']);
  34. // Database-Types
  35. $databaseTypes = array();
  36. $databaseTypes['mysql'] = 'mysql_connect';
  37. $databaseTypes['postgres'] = 'pg_connect';
  38. // init queries
  39. initQueries("upgrade", _UPGRADE_FROM);
  40. // -----------------------------------------------------------------------------
  41. // Main
  42. // -----------------------------------------------------------------------------
  43. // ob-start
  44. if (@ob_get_level() == 0)
  45. @ob_start();
  46. if (isset($_REQUEST["1"])) { // 1 - Database
  47. sendHead(" - Database");
  48. send("<h1>"._TITLE."</h1>");
  49. send("<h2>Database</h2>");
  50. sendButton(11);
  51. } elseif (isset($_REQUEST["11"])) { // 11 - Database - type
  52. sendHead(" - Database");
  53. send("<h1>"._TITLE."</h1>");
  54. send("<h2>Database - Type</h2>");
  55. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  56. send('<select name="db_type">');
  57. foreach ($databaseTypes as $databaseTypeName => $databaseTypeFunction) {
  58. $option = '<option value="'.$databaseTypeName.'"';
  59. if ((isset($_REQUEST["db_type"])) && ($_REQUEST["db_type"] == $databaseTypeName))
  60. $option .= ' selected';
  61. $option .= '>'.$databaseTypeName.'</option>';
  62. $option .= '</option>';
  63. send($option);
  64. }
  65. send('</select>');
  66. send('<input type="Hidden" name="12" value="">');
  67. send('<input type="submit" value="Continue">');
  68. send('</form>');
  69. } elseif (isset($_REQUEST["12"])) { // 12 - Database - type check
  70. if ((isset($_REQUEST["db_type"])) && ($databaseTypes[$_REQUEST["db_type"]] != "")) {
  71. $type = $_REQUEST["db_type"];
  72. sendHead(" - Database");
  73. send("<h1>"._TITLE."</h1>");
  74. send("<h2>Database - Type Check</h2>");
  75. if (function_exists($databaseTypes[$type])) {
  76. send('<font color="green"><strong>Ok</strong></font><br>');
  77. send('This PHP does support <em>'.$type.'</em>.<p>');
  78. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  79. send('<input type="Hidden" name="db_type" value="'.$type.'">');
  80. send('<input type="Hidden" name="13" value="">');
  81. send('<input type="submit" value="Continue">');
  82. send('</form>');
  83. } else {
  84. send('<font color="red"><strong>Error</strong></font><br>');
  85. send('This PHP does not support <em>'.$type.'</em>.<p>');
  86. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  87. send('<input type="Hidden" name="11" value="">');
  88. send('<input type="submit" value="Back">');
  89. send('</form>');
  90. }
  91. } else {
  92. header("location: setup.php?11");
  93. exit();
  94. }
  95. } elseif (isset($_REQUEST["13"])) { // 13 - Database - config
  96. $type = $_REQUEST["db_type"];
  97. sendHead(" - Database");
  98. send("<h1>"._TITLE."</h1>");
  99. send("<h2>Database - Config - ".$type."</h2>");
  100. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  101. send('<table border="0">');
  102. // settings
  103. send('<tr><td colspan="2"><strong>Database Settings : </strong></td></tr>');
  104. // host
  105. $line = '<tr><td>Host : </td>';
  106. $line .= '<td><input name="db_host" type="Text" maxlength="254" size="40" value="';
  107. if (isset($_REQUEST["db_host"]))
  108. $line .= $_REQUEST["db_host"];
  109. else
  110. $line .= 'localhost';
  111. $line .= '"></td></tr>';
  112. send($line);
  113. // name
  114. $line = '<tr><td>Name : </td>';
  115. $line .= '<td><input name="db_name" type="Text" maxlength="254" size="40" value="';
  116. if (isset($_REQUEST["db_name"]))
  117. $line .= $_REQUEST["db_name"];
  118. else
  119. $line .= 'torrentflux';
  120. $line .= '"></td></tr>';
  121. send($line);
  122. // user
  123. $line = '<tr><td>Username : </td>';
  124. $line .= '<td><input name="db_user" type="Text" maxlength="254" size="40" value="';
  125. if (isset($_REQUEST["db_user"]))
  126. $line .= $_REQUEST["db_user"];
  127. else
  128. $line .= 'root';
  129. $line .= '"></td></tr>';
  130. send($line);
  131. // pass
  132. $line = '<tr><td>Password : </td>';
  133. $line .= '<td><input name="db_pass" type="Password" maxlength="254" size="40"';
  134. if (isset($_REQUEST["db_pass"]))
  135. $line .= ' value="'.$_REQUEST["db_pass"].'">';
  136. else
  137. $line .= '>';
  138. $line .= '</td></tr>';
  139. send($line);
  140. // pcon
  141. $line = '<tr><td colspan="2">Persistent Connection :';
  142. $line .= '<input name="db_pcon" type="Checkbox" value="true"';
  143. if (isset($_REQUEST["db_pcon"]))
  144. $line .= ' checked">';
  145. else
  146. $line .= '>';
  147. $line .= '</td></tr>';
  148. send($line);
  149. send('</table>');
  150. send('<input type="Hidden" name="db_type" value="'.$type.'">');
  151. send('<input type="Hidden" name="14" value="">');
  152. send('<input type="submit" value="Continue">');
  153. send('</form>');
  154. } elseif (isset($_REQUEST["14"])) { // 14 - Database - test
  155. $type = $_REQUEST["db_type"];
  156. sendHead(" - Database");
  157. send("<h1>"._TITLE."</h1>");
  158. send("<h2>Database - Test - ".$type."</h2>");
  159. $paramsOk = true;
  160. if (isset($_REQUEST["db_host"]))
  161. $host = $_REQUEST["db_host"];
  162. else
  163. $paramsOk = false;
  164. if (isset($_REQUEST["db_pcon"]))
  165. $pcon = "true";
  166. else
  167. $pcon = "false";
  168. if (isset($_REQUEST["db_name"]))
  169. $name = $_REQUEST["db_name"];
  170. else
  171. $paramsOk = false;
  172. if (isset($_REQUEST["db_user"]))
  173. $user = $_REQUEST["db_user"];
  174. else
  175. $paramsOk = false;
  176. if (isset($_REQUEST["db_pass"]))
  177. $pass = $_REQUEST["db_pass"];
  178. else
  179. $paramsOk = false;
  180. $databaseTestOk = false;
  181. $databaseError = "";
  182. // test
  183. if ($paramsOk) {
  184. $dbCon = getAdoConnection($type, $host, $user, $pass, $name);
  185. if (!$dbCon) {
  186. $databaseTestOk = false;
  187. $databaseError = "cannot connect to database.";
  188. } else {
  189. send('<ul>');
  190. $databaseTestCount = 0;
  191. foreach ($queries['test'][$type] as $databaseTypeName => $databaseQuery) {
  192. send('<li><em>'.$databaseQuery.'</em> : ');
  193. $dbCon->Execute($databaseQuery);
  194. if ($dbCon->ErrorNo() == 0) {
  195. send('<font color="green">Ok</font></li>');
  196. $databaseTestCount++;
  197. } else { // damn there was an error
  198. send('<font color="red">Error</font></li>');
  199. // close ado-connection
  200. $dbCon->Close();
  201. break;
  202. }
  203. }
  204. if ($databaseTestCount == count($queries['test'][$type])) {
  205. $databaseTestOk = true;
  206. } else {
  207. $databaseTestOk = false;
  208. }
  209. send('</ul>');
  210. }
  211. } else {
  212. $databaseTestOk = false;
  213. $databaseError = "config error.";
  214. }
  215. // output
  216. if ($databaseTestOk) {
  217. // load path
  218. $tf_settings = loadSettings("tf_settings");
  219. if ($tf_settings !== false) {
  220. $oldpath = $tf_settings["path"];
  221. if (((strlen($oldpath) > 0)) && (substr($oldpath, -1 ) != "/"))
  222. $oldpath .= "/";
  223. } else {
  224. $oldpath = _DEFAULT_PATH;
  225. }
  226. // close ado-connection
  227. $dbCon->Close();
  228. send('<font color="green"><strong>Ok</strong></font><br>');
  229. send("<h2>Next : Write Config File</h2>");
  230. send("Please ensure this script can write to the dir <em>"._DIR."inc/config/</em><p>");
  231. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  232. send('<input type="Hidden" name="oldpath" value="'.$oldpath.'">');
  233. send('<input type="Hidden" name="db_type" value="'.$type.'">');
  234. send('<input type="Hidden" name="db_host" value="'.$host.'">');
  235. send('<input type="Hidden" name="db_name" value="'.$name.'">');
  236. send('<input type="Hidden" name="db_user" value="'.$user.'">');
  237. send('<input type="Hidden" name="db_pass" value="'.$pass.'">');
  238. send('<input type="Hidden" name="db_pcon" value="'.$pcon.'">');
  239. send('<input type="Hidden" name="15" value="">');
  240. send('<input type="submit" value="Continue">');
  241. } else {
  242. send('<font color="red"><strong>Error</strong></font><br>');
  243. send($databaseError."<p>");
  244. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  245. send('<input type="Hidden" name="db_type" value="'.$type.'">');
  246. send('<input type="Hidden" name="13" value="">');
  247. if (isset($_REQUEST["db_name"]))
  248. send('<input type="Hidden" name="db_host" value="'.$_REQUEST["db_host"].'">');
  249. if (isset($_REQUEST["db_name"]))
  250. send('<input type="Hidden" name="db_name" value="'.$_REQUEST["db_name"].'">');
  251. if (isset($_REQUEST["db_user"]))
  252. send('<input type="Hidden" name="db_user" value="'.$_REQUEST["db_user"].'">');
  253. if (isset($_REQUEST["db_pass"]))
  254. send('<input type="Hidden" name="db_pass" value="'.$_REQUEST["db_pass"].'">');
  255. if (isset($_REQUEST["db_pcon"]))
  256. send('<input type="Hidden" name="db_pcon" value="'.$_REQUEST["db_pcon"].'">');
  257. send('<input type="submit" value="Back">');
  258. }
  259. send('</form>');
  260. } elseif (isset($_REQUEST["15"])) { // 15 - Database - config-file
  261. sendHead(" - Database");
  262. send("<h1>"._TITLE."</h1>");
  263. send("<h2>Database - Config-File</h2>");
  264. $oldpath = $_REQUEST["oldpath"];
  265. $type = $_REQUEST["db_type"];
  266. $host = $_REQUEST["db_host"];
  267. $name = $_REQUEST["db_name"];
  268. $user = $_REQUEST["db_user"];
  269. $pass = $_REQUEST["db_pass"];
  270. $pcon = $_REQUEST["db_pcon"];
  271. // write file
  272. $databaseConfWriteOk = false;
  273. $databaseConfWriteError = "";
  274. $databaseConfContent = "";
  275. writeDatabaseConfig($type, $host, $user, $pass, $name, $pcon);
  276. // output
  277. if ($databaseConfWriteOk) {
  278. send('<font color="green"><strong>Ok</strong></font><br>');
  279. send('database-config-file <em>'._DIR._FILE_DBCONF.'</em> written.');
  280. } else {
  281. send('<font color="red"><strong>Error</strong></font><br>');
  282. send($databaseConfWriteError."<p>");
  283. send('to perform this step manual paste the following content to the database-config-file <em>'._DIR._FILE_DBCONF.'</em> : <p>');
  284. send('<textarea cols="81" rows="33">'.$databaseConfContent.'</textarea>');
  285. send("<p>Note : You must write this file before you can continue !");
  286. }
  287. send("<h2>Next : Create/Alter Tables</h2>");
  288. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  289. send('<input type="Hidden" name="oldpath" value="'.$oldpath.'">');
  290. send('<input type="Hidden" name="16" value="">');
  291. send('<input type="submit" value="Continue">');
  292. send('</form>');
  293. } elseif (isset($_REQUEST["16"])) { // 16 - Database - table-creation
  294. sendHead(" - Database");
  295. send("<h1>"._TITLE."</h1>");
  296. send("<h2>Database - Create/Alter Tables</h2>");
  297. $oldpath = $_REQUEST["oldpath"];
  298. if (is_file(_FILE_DBCONF)) {
  299. require_once(_FILE_DBCONF);
  300. $databaseTableCreationCount = 0;
  301. $databaseTableCreation = false;
  302. $databaseError = "";
  303. $dbCon = getAdoConnection($cfg["db_type"], $cfg["db_host"], $cfg["db_user"], $cfg["db_pass"], $cfg["db_name"]);
  304. if (!$dbCon) {
  305. $databaseTableCreation = false;
  306. $databaseError = "cannot connect to database.";
  307. } else {
  308. send('<ul>');
  309. foreach ($queries['create'][$cfg["db_type"]] as $databaseTypeName => $databaseQuery) {
  310. send('<li><em>'.$databaseQuery.'</em> : ');
  311. $dbCon->Execute($databaseQuery);
  312. if ($dbCon->ErrorNo() == 0) {
  313. send('<font color="green">Ok</font></li>');
  314. $databaseTableCreationCount++;
  315. } else { // damn there was an error
  316. send('<font color="red">Error</font></li>');
  317. $databaseError = "error creating tables.";
  318. // close ado-connection
  319. $dbCon->Close();
  320. break;
  321. }
  322. }
  323. if ($databaseTableCreationCount == count($queries['create'][$cfg["db_type"]])) {
  324. // close ado-connection
  325. $dbCon->Close();
  326. $databaseTableCreation = true;
  327. } else {
  328. $databaseTableCreation = false;
  329. }
  330. send('</ul>');
  331. }
  332. if ($databaseTableCreation) {
  333. send('<font color="green"><strong>Ok</strong></font><br>');
  334. send($databaseTableCreationCount.' queries executed.');
  335. send("<h2>Next : Data</h2>");
  336. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  337. send('<input type="Hidden" name="oldpath" value="'.$oldpath.'">');
  338. send('<input type="Hidden" name="17" value="">');
  339. send('<input type="submit" value="Continue">');
  340. send('</form>');
  341. } else {
  342. send('<font color="red"><strong>Error</strong></font><br>');
  343. send($databaseError."<p>");
  344. }
  345. } else {
  346. send('<font color="red"><strong>Error</strong></font><br>');
  347. send('database-config-file <em>'._DIR._FILE_DBCONF.'</em> missing. setup cannot continue.');
  348. }
  349. } elseif (isset($_REQUEST["17"])) { // 17 - Database - data
  350. sendHead(" - Database");
  351. send("<h1>"._TITLE."</h1>");
  352. send("<h2>Database - Data</h2>");
  353. $oldpath = $_REQUEST["oldpath"];
  354. if (is_file(_FILE_DBCONF)) {
  355. require_once(_FILE_DBCONF);
  356. $databaseDataCount = 0;
  357. $databaseData = false;
  358. $databaseError = "";
  359. $dbCon = getAdoConnection($cfg["db_type"], $cfg["db_host"], $cfg["db_user"], $cfg["db_pass"], $cfg["db_name"]);
  360. if (!$dbCon) {
  361. $databaseData = false;
  362. $databaseError = "cannot connect to database.";
  363. } else {
  364. send('<ul>');
  365. // add path
  366. array_unshift($queries['data'][$cfg["db_type"]], "INSERT INTO tf_settings VALUES ('path','".$oldpath."')");
  367. // add delete-state
  368. array_unshift($queries['data'][$cfg["db_type"]], "DELETE FROM tf_settings");
  369. // exec
  370. foreach ($queries['data'][$cfg["db_type"]] as $databaseTypeName => $databaseQuery) {
  371. send('<li><em>'.$databaseQuery.'</em> : ');
  372. $dbCon->Execute($databaseQuery);
  373. if ($dbCon->ErrorNo() == 0) {
  374. send('<font color="green">Ok</font></li>');
  375. $databaseDataCount++;
  376. } else { // damn there was an error
  377. send('<font color="red">Error</font></li>');
  378. $databaseError = "error importing data.";
  379. // close ado-connection
  380. $dbCon->Close();
  381. break;
  382. }
  383. }
  384. if ($databaseDataCount == count($queries['data'][$cfg["db_type"]])) {
  385. // close ado-connection
  386. $dbCon->Close();
  387. $databaseData = true;
  388. } else {
  389. $databaseData = false;
  390. }
  391. send('</ul>');
  392. }
  393. if ($databaseData) {
  394. send('<font color="green"><strong>Ok</strong></font><br>');
  395. send($databaseDataCount.' queries executed.');
  396. send("<h2>Next : Configuration</h2>");
  397. sendButton(2);
  398. } else {
  399. send('<font color="red"><strong>Error</strong></font><br>');
  400. send($databaseError."<p>");
  401. }
  402. } else {
  403. send('<font color="red"><strong>Error</strong></font><br>');
  404. send('database-config-file <em>'._DIR._FILE_DBCONF.'</em> missing. setup cannot continue.');
  405. }
  406. } elseif (isset($_REQUEST["2"])) { // 2 - Configuration
  407. sendHead(" - Configuration");
  408. send("<h1>"._TITLE."</h1>");
  409. send("<h2>Configuration</h2>");
  410. send("<h2>Next : Server Settings</h2>");
  411. sendButton(21);
  412. send('</form>');
  413. } elseif (isset($_REQUEST["21"])) { // 21 - Configuration - Server Settings input
  414. sendHead(" - Configuration");
  415. send("<h1>"._TITLE."</h1>");
  416. send("<h2>Configuration - Server Settings</h2>");
  417. if (is_file(_FILE_DBCONF)) {
  418. require_once(_FILE_DBCONF);
  419. $dbCon = getAdoConnection($cfg["db_type"], $cfg["db_host"], $cfg["db_user"], $cfg["db_pass"], $cfg["db_name"]);
  420. if (!$dbCon) {
  421. send('<font color="red"><strong>Error</strong></font><br>');
  422. send("cannot connect to database.<p>");
  423. } else {
  424. $tf_settings = loadSettings("tf_settings");
  425. // close ado-connection
  426. $dbCon->Close();
  427. if ($tf_settings !== false) {
  428. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  429. send('<table border="0">');
  430. // docroot
  431. /*
  432. $line = '<tr><td>docroot : </td>';
  433. $line .= '<td><input name="docroot" type="Text" maxlength="254" size="40" value="';
  434. if (isset($_REQUEST["docroot"]))
  435. $line .= $_REQUEST["docroot"];
  436. else
  437. $line .= _DIR;
  438. $line .= '"></td></tr>';
  439. send($line);
  440. */
  441. send('</table>');
  442. // docroot
  443. if (isset($_REQUEST["docroot"]))
  444. send('<input type="Hidden" name="docroot" value="'.$_REQUEST["docroot"].'">');
  445. else
  446. send('<input type="Hidden" name="docroot" value="'.getcwd().'">');
  447. send('<input type="Hidden" name="22" value="">');
  448. send('<input type="submit" value="Continue">');
  449. send('</form>');
  450. } else {
  451. send('<font color="red"><strong>Error</strong></font><br>');
  452. send("error loading settings.<p>");
  453. }
  454. }
  455. } else {
  456. send('<font color="red"><strong>Error</strong></font><br>');
  457. send('database-config-file <em>'._DIR._FILE_DBCONF.'</em> missing. setup cannot continue.');
  458. }
  459. } elseif (isset($_REQUEST["22"])) { // 22 - Configuration - Server Settings validate
  460. sendHead(" - Configuration");
  461. send("<h1>"._TITLE."</h1>");
  462. send("<h2>Configuration - Server Settings Validation</h2>");
  463. $docroot = $_REQUEST["docroot"];
  464. if (((strlen($docroot) > 0)) && (substr($docroot, -1 ) != "/"))
  465. $docroot .= "/";
  466. $serverSettingsTestCtr = 0;
  467. $serverSettingsTestError = "";
  468. // docroot
  469. if (is_file($docroot."version.php"))
  470. $serverSettingsTestCtr++;
  471. else
  472. $serverSettingsTestError .= "docroot <em>".$docroot."</em> is not valid.";
  473. // output
  474. if ($serverSettingsTestCtr == 1) {
  475. send('<font color="green"><strong>Ok</strong></font><br>');
  476. send("docroot : <em>".$docroot."</em><br>");
  477. send("<h2>Next : Save Server Settings</h2>");
  478. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  479. send('<input type="Hidden" name="docroot" value="'.$docroot.'">');
  480. send('<input type="Hidden" name="23" value="">');
  481. send('<input type="submit" value="Continue">');
  482. } else {
  483. send('<font color="red"><strong>Error</strong></font><br>');
  484. send($serverSettingsTestError."<p>");
  485. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  486. send('<input type="Hidden" name="docroot" value="'.$docroot.'">');
  487. send('<input type="Hidden" name="21" value="">');
  488. send('<input type="submit" value="Back">');
  489. }
  490. send('</form>');
  491. } elseif (isset($_REQUEST["23"])) { // 23 - Configuration - Server Settings save
  492. sendHead(" - Configuration");
  493. send("<h1>"._TITLE."</h1>");
  494. send("<h2>Configuration - Server Settings Save</h2>");
  495. $docroot = $_REQUEST["docroot"];
  496. if (is_file(_FILE_DBCONF)) {
  497. require_once(_FILE_DBCONF);
  498. $dbCon = getAdoConnection($cfg["db_type"], $cfg["db_host"], $cfg["db_user"], $cfg["db_pass"], $cfg["db_name"]);
  499. if (!$dbCon) {
  500. send('<font color="red"><strong>Error</strong></font><br>');
  501. send("cannot connect to database.<p>");
  502. } else {
  503. $settingsSaveCtr = 0;
  504. if (updateSetting("tf_settings", "docroot", $docroot) === true)
  505. $settingsSaveCtr++;
  506. if ($settingsSaveCtr == 1) {
  507. send('<font color="green"><strong>Ok</strong></font><br>');
  508. send('Server Settings saved.');
  509. send("<h2>Next : Rename Files and Dirs</h2>");
  510. sendButton(3);
  511. } else {
  512. send('<font color="red"><strong>Error</strong></font><br>');
  513. send('could not save Server Settings.');
  514. send('<form name="setup" action="' . _FILE_THIS . '" method="post">');
  515. send('<input type="Hidden" name="docroot" value="'.$docroot.'">');
  516. send('<input type="Hidden" name="21" value="">');
  517. send('<input type="submit" value="Back">');
  518. send('</form>');
  519. }
  520. // close ado-connection
  521. $dbCon->Close();
  522. }
  523. } else {
  524. send('<font color="red"><strong>Error</strong></font><br>');
  525. send('database-config-file <em>'._DIR._FILE_DBCONF.'</em> missing. setup cannot continue.');
  526. }
  527. } elseif (isset($_REQUEST["3"])) { // 3 - rename files and dirs
  528. sendHead(" - Rename Files and Dirs");
  529. send("<h1>"._TITLE."</h1>");
  530. send("<h2>Rename Files and Dirs</h2>");
  531. if (is_file(_FILE_DBCONF)) {
  532. require_once(_FILE_DBCONF);
  533. $dbCon = getAdoConnection($cfg["db_type"], $cfg["db_host"], $cfg["db_user"], $cfg["db_pass"], $cfg["db_name"]);
  534. if (!$dbCon) {
  535. send('<font color="red"><strong>Error</strong></font><br>');
  536. send("cannot connect to database.<p>");
  537. } else {
  538. $tf_settings = loadSettings("tf_settings");
  539. // close ado-connection
  540. $dbCon->Close();
  541. if ($tf_settings !== false) {
  542. $path = $tf_settings["path"];
  543. $pathExists = false;
  544. $renameOk = false;
  545. $allDone = true;
  546. if ((@is_dir($path) === true) && (@is_dir($path.".torrents") === true)) {
  547. $pathExists = true;
  548. send('<ul>');
  549. // transfers-dir
  550. send('<li><em>'.$path.".torrents -> ".$path.".transfers".'</em> : ');
  551. $renameOk = rename($path.".torrents", $path.".transfers");
  552. if ($renameOk === true) {
  553. send('<font color="green">Ok</font></li>');
  554. } else {
  555. $allDone = false;
  556. send('<font color="red">Error</font></li>');
  557. }
  558. // old queue-dir
  559. if ($renameOk) {
  560. if (@is_dir($path.".transfers/queue")) {
  561. $files = array();
  562. if ($dirHandle = opendir($path.".transfers/queue")) {
  563. while (false !== ($file = readdir($dirHandle))) {
  564. if ((strlen($file) > 4) && ((substr($file, -4)) == "stat"))
  565. array_push($files, $file);
  566. }
  567. closedir($dirHandle);
  568. }
  569. $filesCount = count($files);
  570. $filesCtr = 0;
  571. if ($filesCount > 0) {
  572. foreach ($files as $file) {
  573. $fileSource = $path.".transfers/queue/".$file;
  574. send('<li>delete : <em>'.$fileSource.'</em> : ');
  575. $fileUnlinkOk = @unlink($fileSource);
  576. if ($fileUnlinkOk === true) {
  577. $filesCtr++;
  578. send('<font color="green">Ok</font></li>');
  579. } else {
  580. send('<font color="red">Error</font></li>');
  581. }
  582. }
  583. if ($filesCount != $filesCtr)
  584. $allDone = false;
  585. }
  586. send('<li>delete : <em>'.$path.".transfers/queue".'</em> : ');
  587. $rmdirOk = @rmdir($path.".transfers/queue");
  588. if ($rmdirOk === true) {
  589. send('<font color="green">Ok</font></li>');
  590. } else {
  591. $allDone = false;
  592. send('<font color="red">Error</font></li>');
  593. }
  594. }
  595. }
  596. // stat-files
  597. if ($renameOk) {
  598. $files = array();
  599. if ($dirHandle = opendir($path.".transfers")) {
  600. while (false !== ($file = readdir($dirHandle))) {
  601. if ((strlen($file) > 7) && ((substr($file, -7)) == "torrent"))
  602. array_push($files, $file);
  603. }
  604. closedir($dirHandle);
  605. }
  606. $filesCount = count($files);
  607. $filesCtr = 0;
  608. if ($filesCount > 0) {
  609. foreach ($files as $file) {
  610. $fileNameSource = (strtolower(substr($file, 0, -7)))."stat";
  611. $fileSource = $path.".transfers/".$fileNameSource;
  612. $fileNameTarget = $file.".stat";
  613. $fileTarget = $path.".transfers/".$fileNameTarget;
  614. send('<li><em>'.$fileSource.' -> '.$fileTarget.'</em> : ');
  615. $fileRenameOk = rename($fileSource, $fileTarget);
  616. if ($fileRenameOk === true) {
  617. $filesCtr++;
  618. send('<font color="green">Ok</font></li>');
  619. } else {
  620. send('<font color="red">Error</font></li>');
  621. }
  622. }
  623. if ($filesCount != $filesCtr)
  624. $allDone = false;
  625. }
  626. }
  627. // prio-files
  628. if ($renameOk) {
  629. $files = array();
  630. if ($dirHandle = opendir($path.".transfers")) {
  631. while (false !== ($file = readdir($dirHandle))) {
  632. if ((strlen($file) > 4) && ((substr($file, -4)) == "prio"))
  633. array_push($files, $file);
  634. }
  635. closedir($dirHandle);
  636. }
  637. $filesCount = count($files);
  638. $filesCtr = 0;
  639. if ($filesCount > 0) {
  640. foreach ($files as $file) {
  641. $fileNameSource = $file;
  642. $fileSource = $path.".transfers/".$fileNameSource;
  643. $fileNameTarget = substr($file, 0, -4)."torrent.prio";
  644. $fileTarget = $path.".transfers/".$fileNameTarget;
  645. send('<li><em>'.$fileSource.' -> '.$fileTarget.'</em> : ');
  646. $fileRenameOk = rename($fileSource, $fileTarget);
  647. if ($fileRenameOk === true) {
  648. $filesCtr++;
  649. send('<font color="green">Ok</font></li>');
  650. } else {
  651. send('<font color="red">Error</font></li>');
  652. }
  653. }
  654. if ($filesCount != $filesCtr)
  655. $allDone = false;
  656. }
  657. }
  658. send('</ul>');
  659. if ($renameOk) {
  660. send('<font color="green"><strong>Ok</strong></font><br>');
  661. send('Files and Dirs renamed.');
  662. send("<h2>Next : End</h2>");
  663. sendButton(4);
  664. } else { // damn there was an error
  665. send('<font color="red">Error</font></li>');
  666. send("error renaming Files and Dirs. you have to re-inject all torrents.<p>");
  667. }
  668. } else {
  669. send('<font color="red">Error</font></li>');
  670. send("path <em>".$path.".torrents</em> does not exist. you have to re-inject all torrents.<p>");
  671. }
  672. } else {
  673. send('<font color="red"><strong>Error</strong></font><br>');
  674. send("error loading settings.<p>");
  675. }
  676. }
  677. } else {
  678. send('<font color="red"><strong>Error</strong></font><br>');
  679. send('database-config-file <em>'._DIR._FILE_DBCONF.'</em> missing. setup cannot continue.');
  680. }
  681. } elseif (isset($_REQUEST["4"])) { // 4 - End
  682. sendHead(" - End");
  683. send("<h1>"._TITLE."</h1>");
  684. send("<h2>End</h2>");
  685. send("<p>Upgrade completed.</p>");
  686. if ((substr(_VERSION, 0, 3)) != "svn") {
  687. $result = @unlink(__FILE__);
  688. if ($result !== true)
  689. send('<p><font color="red">Could not delete '.__FILE__.'</font><br>Please delete the file manual.</p>');
  690. else
  691. send('<p><font color="green">Deleted '.__FILE__.'</font></p>');
  692. } else {
  693. send('<p><font color="blue">This is a svn-version. '.__FILE__.' is untouched.</font></p>');
  694. }
  695. send("<h2>Next : Login</h2>");
  696. send('<form name="setup" action="login.php" method="post">');
  697. send('<input type="submit" value="Continue">');
  698. send('</form>');
  699. } else { // default
  700. sendHead();
  701. if (is_file(_FILE_DBCONF))
  702. send('<p><br><font color="red"><h1>db-config already exists ('._FILE_DBCONF.')</h1></font>Delete upgrade.php if you came here after finishing upgrade to proceed to login.</p><hr>');
  703. send("<h1>"._TITLE."</h1>");
  704. send("<p>This script will upgrade from TorrentFlux "._UPGRADE_FROM." to "._NAME." "._UPGRADE_TO."</p>");
  705. send("<h2>Next : Database</h2>");
  706. sendButton(1);
  707. }
  708. // foot
  709. sendFoot();
  710. // ob-end + exit
  711. @ob_end_flush();
  712. exit();
  713. ?>