#!/usr/bin/php array( 'prefix' => '/home/armagetronad/arma-0.2.8-pig', 'data' => '/home/armagetronad/ctctf' ), 'styball' => array( 'prefix' => '/home/armagetronad/arma-0.2.8-pig', 'data' => '/home/armagetronad/styball' ), 'styball4t' => array( 'prefix' => '/home/armagetronad/arma-0.2.8-pig', 'data' => '/home/armagetronad/styball4t' ), 'ladle' => array( 'prefix' => '/home/armagetronad/arma-0.2.8-svn', 'data' => '/home/armagetronad/ladle' ), 'rtw' => array( 'prefix' => '/home/armagetronad/arma-trunk', 'data' => '/home/armagetronad/rtw' ), 'cafe' => array( 'prefix' => '/home/armagetronad/arma-0.2.8-svn', 'data' => '/home/armagetronad/cafe' ), 'bar' => array( 'prefix' => '/home/armagetronad/arma-0.2.8-svn', 'data' => '/home/armagetronad/bar' ), 'bistro' => array( 'prefix' => '/home/armagetronad/arma-0.2.8-svn', 'data' => '/home/armagetronad/bistro' ), 'teamsumo' => array( 'prefix' => '/home/armagetronad/arma-0.2.8-svn', 'data' => '/home/armagetronad/teamsumo' ) ); if(isset($servers[$argv[1]])) { /* Directory structure: PREFIX bin/armagetronad-dedicated required DATA config/ optional var/ auto-generated resource/ auto-generated data/ optional console_log.txt auto-generated console_input.txt optional */ $server = $servers[$argv[1]]; $do_input = is_file($server['data'] . '/console_input.txt'); $command = $server['prefix'] . '/bin/armagetronad-dedicated ' . '--userdatadir ' . $server['data'] . '/data ' . '--userconfigdir ' . $server['data'] . '/config ' . '--vardir ' . $server['data'] . '/var ' . '--autoresourcedir ' . $server['data'] . '/var/resource ' . ($do_input ? '' : '-d ') . '>>' . $server['data'] . '/console_log.txt'; if($do_input) { $command = 'tail -f ' . $server['data'] . '/console_input.txt | ' . $command; } echo('Command: ' . $command . "\n"); do { $lastrestart = time(); system($command, $retval); if($retval = 0) { system('echo -- --- Server ended regularily, restarting! >>' . $server['data'] . '/console_log.txt'); } else { system('echo -- --- Server died with return code ' . $retval . ', restarting! >>' . $server['data'] . '/console_log.txt'); } } while($lastrestart < time()-60); system('echo -- --- Server died with return code ' . $retval . ', not restarting! >>' . $server['data'] . '/console_log.txt'); echo '=== Too many restarts for server ' . $argv[1] . ', exiting!' . "\n"; } else { print('Usage: ' . $argv[0] . ' ' . implode('|', array_keys($servers)) . "\n"); } ?>