public function command($cmd, &$data) { $r = array(); $dis = Yii::t('mc', 'Function disabled in demo mode!'); $fail = false; $cmd = preg_replace('/^server [\\w\\d]+:/', '', $cmd); if ($cmd == 'get status') { $r[] = 'status :running :players :5 :maxPlayers :16'; } else { if ($cmd == 'get players') { $r[] = 'id :1 :name :Player1 :ip :10.0.0.2'; $r[] = 'id :2 :name :Player2 :ip :10.0.0.3'; $r[] = 'id :3 :name :Player3 :ip :10.0.0.4'; $r[] = 'id :4 :name :Player4 :ip :10.0.0.5'; $r[] = 'id :5 :name :Player5 :ip :10.0.0.6'; } else { if ($cmd == 'get chat') { $r[] = 'time :0 :name :Player1 :text :Hi All'; $r[] = 'time :2 :name :Player2 :text :Hey!'; } else { if ($cmd == 'get log') { $r[] = 'line :14.12 16:25:31 [SERVER] INFO Loading properties'; $r[] = 'line :14.12 16:25:31 [SERVER] INFO Starting Minecraft server on 0.0.0.0:25565'; $r[] = 'line :14.12 16:25:32 [STARTUP] Done! For help, type "help" or "?"'; } else { if ($cmd == 'refresh' || $cmd == 'reload player' || $cmd == 'reload command') { $r[] = ''; } else { if (preg_match('/updatejar/', $cmd)) { if (preg_match('/updatejar list/', $cmd)) { $r[] = 'name :Default Minecraft Server :jar :minecraft_server.jar'; $r[] = 'name :Mod: Craftbukkit :jar :craftbukkit.jar'; $r[] = 'name :Mod: Craftbukkit Beta :jar :craftbukkit_beta.jar'; $r[] = 'name :Optimized Minecraft Server :jar :minecraft_optimized.jar'; } else { $r[] = 'status :done :message :' . $dis; $fail = true; } } else { if (preg_match('/(deletejar|downloadjar)/', $cmd)) { $r[] = 'status :done :message :' . $dis; $fail = true; } else { if ($cmd == 'version') { $r[] = 'version :' . Yii::app()->controller->version . ' :remote :' . Yii::app()->controller->version . ' :time :' . time(); } else { if (preg_match('/backup/', $cmd)) { $fail = true; } else { if (preg_match('/server all:/', $cmd)) { $fail = true; } else { if (preg_match('/cfgfile check/', $cmd)) { $m = array(); if (preg_match('/cfgfile check:([-_.\\w\\d]+)/', $cmd, $m)) { $r[] = 'valid :True :ro :False :file :' . $m[1] . ' :dir :'; } } else { if ($m = preg_match('/cfgfile get/', $cmd)) { $m = preg_match('/cfgfile get:([-_.\\w\\d]+)/', $cmd); if (preg_match('/server.properties/', $cmd)) { $r[] = 'option :spawn-monsters :value :'; } else { $r[] = 'line :Player1'; } } else { if (preg_match('/cfgfile set/', $cmd)) { $r[] = 'accepted :False :message :' . $dis; $fail = true; } else { if (preg_match('/run_s:.*/', $cmd)) { $fail = true; } else { if (preg_match('/get resources/', $cmd)) { $r[] = 'pid :123 :cpu :15 :memory :45'; } else { if (preg_match('/plugin has/', $cmd)) { $r[] = 'has :1'; } else { if (preg_match('/plugin (add|remove)/', $cmd)) { $fail = true; } else { if (preg_match('/plugin list/', $cmd)) { $r[] = 'file :permissions.jar :desc :Permissions Plugin :status :installed'; $r[] = 'file :worldedit.jar :desc :WorldEdit Plugin :status :installed'; $r[] = 'file :lockedchests.jar :desc :Locked Chests Plugin :status :installed'; $r[] = 'file :lowgravity.jar :desc :Low Gravity Plugin :status :outdated'; $r[] = 'file :jail.jar :desc :Jail Plugin :status :none'; } else { if (in_array($cmd, array('start', 'stop', 'restart')) || preg_match('/mc:/', $cmd)) { $fail = true; } else { if (preg_match('/^(load|delinstance) /', $cmd)) { $r[] = ''; } else { die($dis . " |{$cmd}|"); } } } } } } } } } } } } } } } } } } } } if ($fail) { if (!count($r)) { $r[] = 'message :' . $dis; } $this->addError($dis); return false; } $data = McBridge::parse($r); return true; }
function command($cmd, &$data) { $cmd = str_replace("\n", " ", $cmd); if (!$this->send($cmd)) { return false; } $r = $this->recv(); if (!$r['ack']) { return false; } $data = McBridge::parse($r['data']); return true; }