Changeset 31
- Timestamp:
- Jun 14, 2009, 12:34:03 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Readme.txt
r30 r31 4 4 1) Popis složek 5 5 6 www - webové administrační rozhraní v PHP 7 server - složka pro ukládání konfigurací a ladících záznamů vytvořených serverů 8 emulator - složka obsahující dostupné emulátory 9 database - složka obsahující zdrojové sql soubory pro nastavení databáze 10 wowclient - složka obsahující datové soubory pro jednotlivé verze herního klienta 11 temp - složka pro dočasné soubory 12 backup - složka pro uložení souborů záloh databází 6 www - Webové administrační rozhraní v PHP. 7 server - Složka pro ukládání konfigurací a ladících záznamů vytvořených serverů. 8 emulator - Složka obsahující dostupné emulátory. 9 database - Složka obsahující zdrojové sql soubory pro nastavení databáze. Soubory jsou získávány z adresy https://unifieddb.svn.sourceforge.net/svnroot/unifieddb/. 10 database/číslo/update - Složka obsahující rozdílové aktualizace databáze. 11 wowclient - Složka obsahující datové soubory pro jednotlivé verze herního klienta. 12 temp - Složka pro dočasné soubory. 13 backup - Složka pro uložení souborů záloh databází. 13 14 14 15 … … 16 17 17 18 Zkopírovat soubor www/config.sample.php na www/config.php a vyplnit údaje. 19 Uživatelský účet pro přístup do databáze MySQL musí mít plný přístup, aby mohl vytvářet databáze pro servery. 18 20 19 21 -
trunk/www/backup.php
r28 r31 18 18 function Restore() 19 19 { 20 $ServerId = $this->Backup['Server']; 20 21 $this->Task->Add('Obnovení databáze', array( 21 22 'mysql --silent --skip-column-names -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_mangos -e "show tables" | gawk \'{print "drop table " $1 ";"}\' | mysql -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_mangos', … … 24 25 'mysql --silent --skip-column-names -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_scriptdev2 -e "show tables" | gawk \'{print "drop table " $1 ";"}\' | mysql -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_scriptdev2', 25 26 'mkdir temp/wowhosting', 26 'tar -xjf backup/wowhosting-'.$ ServerId.'.tar.bz2 -C temp/wowhosting',27 'mysql --user server'.$ServerId.' --passwordserver'.$ServerId.' server'.$ServerId.'_characters < temp/wowhosting/characters.sql',28 'mysql --user server'.$ServerId.' --passwordserver'.$ServerId.' server'.$ServerId.'_realmd < temp/wowhosting/realmd.sql',29 'mysql --user server'.$ServerId.' --passwordserver'.$ServerId.' server'.$ServerId.'_mangos < temp/wowhosting/mangos.sql',30 'mysql --user server'.$ServerId.' --passwordserver'.$ServerId.' server'.$ServerId.'_scriptdev2 < temp/wowhosting/scriptdev2.sql',31 'rm - f temp/wowhosting',27 'tar -xjf backup/wowhosting-'.$this->Id.'.tar.bz2 -C temp', 28 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_characters < temp/wowhosting/characters.sql', 29 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_realmd < temp/wowhosting/realmd.sql', 30 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_mangos < temp/wowhosting/mangos.sql', 31 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_scriptdev2 < temp/wowhosting/scriptdev2.sql', 32 'rm -rf temp/wowhosting', 32 33 )); 34 return('Úloha obnovení databáze ze zálohy zařazena do fronty.'); 33 35 } 34 36 … … 49 51 'rm -rf wowhosting', 50 52 )); 51 return('Úloha zálohování byla zařazena do fronty ');53 return('Úloha zálohování byla zařazena do fronty.'); 52 54 } 53 55 } -
trunk/www/emulator.php
r24 r31 36 36 37 37 $this->Task->Add('Stažení emulátoru', array( 38 'mkdir '.$Config['BaseDir'].'emulator/'.$this->Id.'/', 38 39 'cd '.$Config['BaseDir'].'emulator/'.$this->Id.'/', 39 40 'git clone git://github.com/mangos/mangos.git source', -
trunk/www/index.php
r30 r31 72 72 } 73 73 74 function ShowEmulatorListOnRow($Row)75 {76 $Row['Name'] = '<a href="?Action=EmulatorShow&Id='.$Row['Id'].'">'.$Row['Name'].'</a>';77 return($Row);78 }79 80 74 function ShowEmulatorList() 81 75 { … … 84 78 $Output = '<h4>Seznam verzí emulátoru</h4>'; 85 79 $Table = new Table('EmulatorList'); 86 $Table-> OnRow = array($this, 'ShowEmulatorListOnRow');80 $Table->Definition['Items']['Id'] = array('Type' => 'Hidden', 'Caption' => '', 'Default' => ''); 87 81 $Table->LoadValuesFromDatabase($this->Database); 82 $Table->Definition['Items']['Actions'] = array('Type' => 'String', 'Caption' => '', 'Default' => ''); 83 foreach($Table->Values as $Index => $Item) 84 { 85 $Table->Values[$Index]['Actions'] = '<a href="?Action=EmulatorShow&Id='.$Item['Id'].'">Podprobnosti</a>'; 86 unset($Table->Values[$Index]['Id']); 87 } 88 88 $Output .= $Table->Show(); 89 89 if($this->System->Modules['User']->User['Role'] >= USER_ROLE_ADMINISTRATOR) … … 91 91 $Output .= '<br /><div style="text-align: center;"><a href="?Action=EmulatorAdd">Přidat emulátor</a></dev>'; 92 92 } 93 return($Output); 94 } 95 96 function ShowUpdateList($ServerId) 97 { 98 global $Config; 99 100 if($this->System->Modules['User']->User['Role'] >= USER_ROLE_USER) 101 { 102 $Server = new Server($this->Database, $_GET['Id']); 103 if(($this->System->Modules['User']->User['Id'] == $Server->Server['User']) or ($this->System->Modules['User']->User['Role'] >= USER_ROLE_ADMINISTRATOR)) 104 { 105 $Server = new Server($this->Database, $ServerId); 106 $Output = '<h4>Seznam dostupných aktulizací</h4>'; 107 $Output .= 'Před provedením aktualizace bude server zastaven a provedena záloha databáze.'; 108 $Table = new Table('EmulatorList'); 109 $Table->Definition['Table'] = substr($Table->Definition['Table'], 0, -1).' WHERE Revision > '.$Server->Server['Database']['Emulator']['Revision'].' ORDER BY Revision)'; 110 $Table->Definition['Items']['Id'] = array('Type' => 'Hidden', 'Caption' => '', 'Default' => ''); 111 $Table->LoadValuesFromDatabase($this->Database); 112 $Table->Definition['Items']['Actions'] = array('Type' => 'String', 'Caption' => '', 'Default' => ''); 113 foreach($Table->Values as $Index => $Item) 114 { 115 $Table->Values[$Index]['Actions'] = '<a href="?Action=EmulatorShow&Id='.$Item['Id'].'">Podprobnosti</a>'; 116 $Table->Values[$Index]['Actions'] .= ' <a href="?Action=Update&Server='.$ServerId.'&Update='.$Item['Id'].'">Aktualizovat</a>'; 117 unset($Table->Values[$Index]['Id']); 118 } 119 $Output .= $Table->Show(); 120 } else $this->SystemMessage('Dostupné aktualizace', 'Nemáte oprávnění'); 121 } else $Output .= USER_BAD_ROLE; 93 122 return($Output); 94 123 } … … 104 133 if($this->System->Modules['User']->User['Role'] >= USER_ROLE_ADMINISTRATOR) 105 134 { 135 $Output .= ' <a href="?Action=EmulatorDownload&Id='.$Id.'">Stáhnout</a>'; 106 136 $Output .= ' <a href="?Action=EmulatorCompile&Id='.$Id.'">Přeložit</a>'; 107 $Output .= ' <a href="?Action=EmulatorDownloadAndCompile&Id='.$Id.'">Stáhnout a přeložit</a>';108 137 } 109 138 $Output .= '</div>'; … … 136 165 { 137 166 $Table->Values[$Index]['Actions'] = '<a href="?Action=BackupDownload&Id='.$Value['Id'].'">Stáhnout</a>'; 167 $Table->Values[$Index]['Actions'] .= ' <a href="?Action=BackupRestore&Id='.$Value['Id'].'">Obnovit</a>'; 138 168 unset($Table->Values[$Index]['Id']); 139 169 } … … 178 208 $Output = '<h4>Fronta úloh</h4>'; 179 209 $Table = new Table('TaskList'); 180 $Table->Definition['Table'] = '(SELECT Time, Title, State FROM Task WHERE User='.$this->System->Modules['User']->User['Id'].' )';210 $Table->Definition['Table'] = '(SELECT Time, Title, State FROM Task WHERE User='.$this->System->Modules['User']->User['Id'].' ORDER BY Id DESC)'; 181 211 $Table->LoadValuesFromDatabase($this->Database); 182 212 $Output .= $Table->Show(); … … 256 286 $Output .= '<div><a href="?Action=BackupList&Id='.$Server['Id'].'">Zálohy</a></div>'; 257 287 $Output .= '<div><a href="?Action=TaskList">Fronta úloh</a></div>'; 288 $Output .= '<div><a href="?Action=UpdateList&Id='.$Server['Id'].'">Dostupné aktualizace</a></div>'; 258 289 } else $Output .= '<div><a href="?Action=ServerAdd">Vytvořit vlastní server</a></div>'; 259 290 if($this->System->Modules['User']->User['Role'] == USER_ROLE_ADMINISTRATOR) … … 284 315 '<li>Neomezený počet účtů a postav.</li>'. 285 316 '<li>Možnost stáhnout si celou databázi serveru a v případě zájmů hráčů tak přejít na vlastní výkonější vyhrazený server.</li>'. 317 '<li>Automatické restartování serveru při selhání a automatický záznam ladících informací o pádu.</li>'. 286 318 '</ul><br />'. 319 '<p>Vámi vytvořený server může být bez předchozího upozornění smazán, např. pokud nebude již využíván nebo bude potřeba snížit vytížení hostingu.</p>'. 287 320 'Technická podpora: '.$Config['Web']['AdminEmail']; 288 321 return($Output); … … 524 557 } else $Output .= $this->SystemMessage('Překlad emulátoru', 'Nebylo zadáno Id'); 525 558 } else 559 if($_GET['Action'] == 'EmulatorDownload') 560 { 561 if(array_key_exists('Id', $_GET)) 562 { 563 $Emulator = new Emulator($this->Database, $_GET['Id']); 564 $Emulator->Download(); 565 $Output .= $this->SystemMessage('Stažení emulátoru', 'Úloha zařazena do fronty'); 566 $Output .= $this->ShowTaskList(); 567 } else $Output .= $this->SystemMessage('Stažení emulátoru', 'Nebylo zadáno Id'); 568 } else 526 569 if($_GET['Action'] == 'ServerDebug') 527 570 { … … 548 591 { 549 592 $Output .= $this->ShowDebugList($_GET['Id']); 593 } else 594 if($_GET['Action'] == 'UpdateList') 595 { 596 $Output .= $this->ShowUpdateList($_GET['Id']); 550 597 } else 551 598 if($_GET['Action'] == 'GameAccountRegister') … … 583 630 } else $Output .= USER_BAD_ROLE; 584 631 } else 632 if($_GET['Action'] == 'BackupRestore') 633 { 634 if(!array_key_exists('Id', $_GET)) $Output .= $this->SystemMessage('Obnovení ze zálohy', 'Nebylo zadáno Id zálohy'); 635 else if($this->System->Modules['User']->User['Role'] >= USER_ROLE_USER) 636 { 637 $Backup = new Backup($this->Database, $_GET['Id']); 638 $Server = new Server($this->Database, $Backup->Backup['Server']); 639 if(($this->System->Modules['User']->User['Id'] == $Server->Server['User']) or ($this->System->Modules['User']->User['Role'] >= USER_ROLE_ADMINISTRATOR)) 640 { 641 $Output .= $this->SystemMessage('Obnovení ze zálohy', $Backup->Restore()); 642 $Output .= $this->ShowTaskList(); 643 } else $this->SystemMessage('Obnovení ze zálohy', 'Nemáte oprávnění'); 644 } else $Output .= USER_BAD_ROLE; 645 } else 585 646 if($_GET['Action'] == 'BackupDownload') 586 647 { … … 602 663 { 603 664 $Output .= $this->ShowTaskList(); 665 } else 666 if($_GET['Action'] == 'Update') 667 { 668 if(!array_key_exists('Server', $_GET)) $Output .= $this->SystemMessage('Aktualizace serveru', 'Nebylo zadáno Id serveru'); 669 else if(!array_key_exists('Update', $_GET)) $Output .= $this->SystemMessage('Aktualizace serveru', 'Nebylo zadáno Id aktualizace'); 670 else if($this->System->Modules['User']->User['Role'] >= USER_ROLE_USER) 671 { 672 $Server = new Server($this->Database, $_GET['Server']); 673 if(($this->System->Modules['User']->User['Id'] == $Server->Server['User']) or ($this->System->Modules['User']->User['Role'] >= USER_ROLE_ADMINISTRATOR)) 674 { 675 $Output .= $this->SystemMessage('Aktualizace serveru', $Server->Update($_GET['Update'])); 676 $Output .= $this->ShowTaskList(); 677 } else $this->SystemMessage('Aktualizace serveru', 'Nemáte oprávnění'); 678 } else $Output .= USER_BAD_ROLE; 604 679 } else 605 680 if($_GET['Action'] == 'Test') -
trunk/www/server.php
r30 r31 272 272 return($Output); 273 273 } 274 275 function Update($DatabaseId) 276 { 277 // Stop server before update 278 $Output = $this->Stop(); 279 280 // Backup current 281 $Backup = new Backup($this->Database, 0); 282 $Output .= '<br />'.$Backup->Create($this->Id); 283 284 // Do update 285 $Commands = array(); 286 $DbResult = $this->Database->query('SELECT `Revision` FROM `Database` WHERE `Id` = '.$this->Server['Database']['Id']); 287 $DbRow = $DbResult->fetch_assoc(); 288 $DatabaseRevisionStart = $DbRow['Revision']; 289 $DbResult = $this->Database->query('SELECT `Revision` FROM `Database` WHERE `Id` = '.$DatabaseId); 290 $DbRow = $DbResult->fetch_assoc(); 291 $DatabaseRevisionEnd = $DbRow['Revision']; 292 $DbResult = $this->Database->query('SELECT * FROM `DatabaseUpdate` WHERE (`Revision` > '.$DatabaseRevisionStart.') AND (`Revision` <= '.$DatabaseRevisionEnd.') ORDER BY `Revision`'); 293 while($DbRow = $DbResult->fetch_assoc()) 294 { 295 $Updates = explode("\n", $DbRow['Updates']); 296 foreach($Updates as $Update) 297 if($Update != '') 298 { 299 $Parts = explode('|', $Update); 300 $Command = 'mysql --user=server'.$this->Id.' --password=server'.$this->Id.' server'.$this->Id.'_'.$Parts[0].' < database/'.$DbRow['Database'].'/update/'.$Parts[1]; 301 $Commands[] = $Command; 302 } 303 } 304 $this->Task->Add('Aktualizace databáze', $Commands); 305 $Output .= '<br />Úloha aktualizace serveru byla přidána do fronty.'; 306 return($Output); 307 } 274 308 } 275 309 -
trunk/www/task.php
r29 r31 14 14 global $System; 15 15 16 $this->Database->insert('Task', array('User' => $System->Modules['User']->User['Id'], 'Title' => $Title, 'Time' => 'NOW()', 'CommandList' => implode("\n", $Task)."\n")); 16 $CommandList = implode("\n", $Task)."\n"; 17 $this->Database->insert('Task', array('User' => $System->Modules['User']->User['Id'], 'Title' => $Title, 'Time' => 'NOW()', 'CommandList' => $CommandList)); 17 18 } 18 19 … … 23 24 chdir($Config['BaseDir']); 24 25 $DbResult = $this->Database->query('SELECT * FROM Task WHERE State = 0 ORDER BY Id,Time ASC'); 26 $this->Database->query('UPDATE Task SET State=2 WHERE State=1'); // Change not finished running tasks to finished 25 27 while($Task = $DbResult->fetch_assoc()) 26 28 { 27 29 $this->Database->query('UPDATE Task SET State=1 WHERE Id='.$Task['Id']); 28 30 echo('Provádím úlohu '.$Task['Id'].': '.$Task['Title']."...\n"); 29 $Task['CommandList'] = "#!/bin/sh\n". $Task['CommandList'];31 $Task['CommandList'] = "#!/bin/sh\n".str_replace("\r", '', $Task['CommandList']); 30 32 file_put_contents($this->TempScript, $Task['CommandList']); 31 33 chmod($this->TempScript, 0755);
Note:
See TracChangeset
for help on using the changeset viewer.