1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

root/trunk/upload/modules/gamemanager/restart_server.php @ 1769

Revision 1769, 7.5 KB (checked in by supernovalite, 14 months ago)

50% done game_manager module translation.

Line 
1<?php
2/*
3 *
4 * OGP - Open Game Panel
5 * Copyright (C) Copyright (C) 2008 - 2012 The OGP Development Team
6 *
7 * http://www.opengamepanel.org/
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 *
23 */
24
25require_once('home_handling_functions.php');
26require_once("modules/config_games/server_config_parser.php");
27
28function exec_ogp_module() {
29
30    global $view,$db;
31
32   
33    $ip = $_REQUEST['ip'];
34    $port = $_REQUEST['port'];
35    $home_id = $_REQUEST['home_id'];
36    $user_id = $_SESSION['user_id'];
37
38    $home_info = $db->getUserGameHome($user_id, $home_id);
39       
40        require_once('includes/lib_remote.php');
41        $remote = new OGPRemoteLibrary($home_info['agent_ip'],$home_info['agent_port'],$home_info['encryption_key']);
42       
43        $mod_id = $_REQUEST['mod_id'];
44
45    if ( $home_info === FALSE )
46    {
47        print_failure(get_lang('no_rights_to_stop_server'));
48        return;
49    }
50
51    echo "<h2>".$home_info['home_name']."</h2>";
52
53    $server_xml = read_server_config(SERVER_CONFIG_LOCATION."/".$home_info['home_cfg_file']);
54
55    if ( !$server_xml )
56    {
57        echo create_back_button("gamemanager","game_monitor");
58        return;
59    }
60
61    $rserver = $db->getRemoteServerById($home_info['remote_server_id']);
62
63    if ( empty($rserver) )
64    {
65        print_failure("".get_lang('not_found_server')." ".$home_info['remote_server_id'].".");
66    }
67    else
68    {
69                if (isset($_REQUEST['refresh']))
70                {                       
71                        $home_log = "";
72                        $log_retval = $remote->get_log(OGP_SCREEN_TYPE_HOME,$home_info['home_id'],
73                                clean_path($home_info['home_path']."/".$server_xml->exe_location),
74                                $home_log);
75
76                        if ($log_retval > 0)
77                        {
78                                if ( $log_retval == 2 )
79                                        print_failure(get_lang('server_not_running_log_found'));
80                                echo "<pre class='log'>".$home_log."</pre>";
81
82                                if ($log_retval == 2)
83                                        return;
84                        }
85                        else
86                        {
87                                print_failure(get_lang_f('unable_to_get_log',$log_retval));
88                        }
89
90                        // If game is not supported by lgsl we skip the lgsl checks and
91                        // assume successfull start.
92                        if ( $server_xml->lgsl_query_name )
93        {
94                        require('protocol/lgsl/lgsl_protocol.php');
95            $get_q_and_s = lgsl_port_conversion((string)$server_xml->lgsl_query_name, $port, "", "");
96
97                        //Connection port
98                        $c_port = $get_q_and_s['0'];
99                        //query port
100                        $q_port = $get_q_and_s['1'];
101                        //software port
102                        $s_port = $get_q_and_s['2'];
103                       
104            $data = lgsl_query_live((string)$server_xml->lgsl_query_name,$ip,$c_port,$q_port,$s_port, "sa");
105                       
106
107                        if( $data['b']['status'] == "0" AND isset( $_GET['retry'] ) AND $_GET['retry'] >= 4 )
108                                $data = lgsl_query_live((string)$server_xml->lgsl_query_name, $home_info['agent_ip'], $c_port, $q_port, $s_port, "sa");
109
110
111            if ( $data['b']['status'] == "0"  )
112            {
113                                if (!isset($_GET['retry']))
114                                        $retry = 0;
115                                else
116                                        $retry = $_GET['retry'];
117                                if ($retry >= 5)
118                                {
119                                        echo "<p>".get_lang('server_running_not_responding')."
120                                        <a href=?m=gamemanager&amp;p=stop&amp;home_id=".$home_info['home_id'].
121                                        "&amp;ip=".$ip."&amp;port=".
122                                        $port.">".get_lang('already_running_stop_server')."</a></p>";
123                                }
124                                echo "</b>".get_lang('retry')." #".$retry.".</b>";
125                                $retry++;
126                print("<p class='note'>".get_lang('starting_server')."</p>");
127                $view->refresh("?m=gamemanager&amp;p=restart&amp;refresh&amp;ip=$ip&amp;port=$port&amp;home_id=$home_id&amp;mod_id=$mod_id&amp;retry=".$retry,3);
128                return;
129            }
130        }
131                elseif ( $server_xml->gameq_query_name )
132                {
133                        require('protocol/GameQ/GameQ.php');
134                        $qport = get_query_port($server_xml, $port);
135                                                        $qport = get_query_port($server_xml, $port);
136                        $servers['server'] = array((string)$server_xml->gameq_query_name,$ip, $port);
137                        $gq = new GameQ();
138                        $gq->addServers($servers);
139                        $gq->setOption('timeout', 200);
140                        $gq->setFilter('normalise');
141                        $gq->setFilter('sortplayers', 'gq_ping');
142                        $game = $gq->requestData();
143                       
144                        if ( !$game['server']['gq_online'] AND isset( $_GET['retry'] ) AND $_GET['retry'] >= 4  )
145                        {
146                                $servers['server'] = array((string)$server_xml->gameq_query_name, $home_info['agent_ip'], $port);
147                                $gq = new GameQ();
148                                $gq->addServers($servers);
149                                $gq->setOption('timeout', 200);
150                                $gq->setFilter('normalise');
151                                $gq->setFilter('sortplayers', 'gq_ping');
152                                $game = $gq->requestData();
153                        }
154
155                        if ( !$game['server']['gq_online'] )
156                        {
157                                if (!isset($_GET['retry']))
158                                        $retry = 0;
159                                else
160                                        $retry = $_GET['retry'];
161                                if ($retry >= 5)
162                                {
163                                        echo "<p>".get_lang('server_running_not_responding')."
164                                        <a href=?m=gamemanager&amp;p=stop&amp;home_id=".$home_info['home_id'].
165                                        "&amp;ip=".$ip."&amp;port=".
166                                        $port.">".get_lang('already_running_stop_server')."</a></p>";
167                                }
168                                echo "</b>".get_lang('retry')." #".$retry.".</b>";
169                                $retry++;
170                                print("<p class='note'>".get_lang('starting_server')."</p>");
171                                $view->refresh("?m=gamemanager&amp;p=restart&amp;refresh&amp;ip=$ip&amp;port=$port&amp;home_id=$home_id&amp;mod_id=$mod_id&amp;retry=".$retry,3);
172                                return;
173                        }
174                }
175                        print_success(get_lang_f('server_restarted',$home_info['home_name']));
176                        $view->refresh("?m=gamemanager&amp;p=game_monitor&amp;home_id=".$home_info['home_id']);
177                        echo "<p>".get_lang('follow_server_status')." <a href='?m=gamemanager&amp;p=game_monitor&amp;home_id=".
178                                $home_info['home_id']."'>".get_lang('game_monitor')."</a> ".get_lang('page').".</p>";
179
180                        return;
181                }
182                else
183                {                               
184                        if(isset($server_xml->control_protocol_type))$control_type = $server_xml->control_protocol_type; else $control_type = "";
185                       
186                        $remote_retval = $remote->remote_restart_server($home_info['home_id'],
187                                $ip, $port, $server_xml->control_protocol,
188                                $home_info['control_password'],$control_type);
189                               
190                        if ( $remote_retval === 1 )
191                        {
192                print("<p class='note'>".get_lang('restarting_server')."</p>");
193                $view->refresh("?m=gamemanager&amp;p=restart&amp;refresh&amp;ip=$ip&amp;port=$port&amp;home_id=$home_id&amp;mod_id=$mod_id",3);
194                return;
195            }
196                        else if ( $remote_retval === -1 )
197                        {
198                                print_failure(get_lang('server_cant_start'));
199                                $view->refresh("?m=gamemanager&amp;p=game_monitor&amp;home_id=".$home_info['home_id'],3);
200                        }
201                        else if ( $remote_retval === -2 )
202                        {
203                                print_failure(get_lang('server_cant_stop'));
204                                $view->refresh("?m=gamemanager&amp;p=game_monitor&amp;home_id=".$home_info['home_id'],3);
205                        }
206                        else
207                        {
208                                $screen_running = $remote->is_screen_running(OGP_SCREEN_TYPE_HOME,$home_info['home_id']);
209                                if ( $screen_running == 1 )
210                                {
211                                        print("<p class='note'>".get_lang('restarting_server')."</p>");
212                                        $view->refresh("?m=gamemanager&amp;p=restart&amp;refresh&amp;ip=$ip&amp;port=$port&amp;home_id=$home_id&amp;mod_id=$mod_id",3);
213                                        return;
214                                }
215                                else
216                                {
217                                        print_failure("".get_lang('error_occured_remote_host').".$remote_retval");
218                                        $view->refresh("?m=gamemanager&amp;p=game_monitor&amp;home_id=".$home_info['home_id'],3);
219                                }
220                        }
221                }
222    }
223}
224?>
Note: See TracBrowser for help on using the browser.