예제 #1
0
 public static function find_one($parameters = array())
 {
     $results = Server::find($parameters, 1);
     if (!sizeof($results)) {
         return;
     }
     return $results[0];
 }
예제 #2
0
 public function get_delete($id = NULL)
 {
     $server = Server::find($id);
     if (is_null($server)) {
         return View::make('msg.error')->with('error', 'Server doesn\'t exist.');
     }
     $server->delete();
     return Redirect::to('/admin/server/overview');
 }
 public function pingServer()
 {
     $id = intval(Input::get('id'));
     $server = Server::find($id);
     if ($id && $server && Auth::user()->pj_is_mine($server->project_id)) {
         return Response::json(Task::pingRsyncServer($server->ip));
     }
     return Response::json(false);
 }
예제 #4
0
 public function getServer($id)
 {
     $players_array = [];
     $mods_array = [];
     $server = Server::find($id);
     if (!$server) {
         return Response::json(['error' => 'No mod with that ID found.']);
     }
     $server_status = ServerStatus::where('server_id', $id)->first();
     if (!$server->player_list_hide) {
         $raw_players = json_decode($server_status->players);
         if ($raw_players) {
             foreach ($raw_players as $player) {
                 $players_array[] = ['name' => preg_replace('/\\x{00A7}.{1}/u', '', $player->name)];
             }
         }
     }
     if ($server_status->mods) {
         $raw_mods = json_decode($server_status->mods);
         foreach ($raw_mods->modList as $mod) {
             $mods_array[] = ['name' => htmlspecialchars($mod->modid), 'version' => $mod->version];
         }
     }
     if ($server->server_address_hide) {
         $server_address = 'Hidden';
     } else {
         $server_address = $server->ip_host . ':' . $server->port;
     }
     $result = ['id' => $server->id, 'modpack_id' => $server->modpack_id, 'name' => $server->name, 'short_description' => $server->deck, 'server_address' => $server_address, 'country' => $server->country, 'permissions' => $server->permissions, 'website' => $server->wiki_link, 'application_url' => $server->description, 'description' => $server->slug, 'players' => $players_array, 'mods' => $mods_array, 'server_address_hide' => $server->server_address_hide, 'player_list_hide' => $server->player_list_hide, 'slug' => $server->slug, 'last_world_reset' => $server->last_world_reset, 'next_world_reset' => $server->next_world_reset, 'created_at' => $server->created_at, 'updated_at' => $server->updated_at];
     return Response::json($result);
 }
예제 #5
0
 /**
  * 
  * 针对一个服务器,调用Rsync将项目发布到线上,然后回写Server的版本和更新结果
  * @link http://www.cnblogs.com/mchina/p/2829944.html Rsync的配置
  */
 private function _runRsync($task)
 {
     $current_dir = getcwd();
     $server = \Server::find($task->server_id);
     $pj_dir = \Project::getTempDir($server->project_id);
     chdir($pj_dir);
     $excludes = '';
     $exclude_files = explode("\n", $server->project->ignore_files);
     foreach ($exclude_files as $_file) {
         $_file = trim($_file);
         if ($_file) {
             $excludes .= ' --exclude ' . escapeshellarg($_file);
         }
     }
     $rsync_cmd = sprintf("rsync -azc --delete %s . %s::%s", $excludes, $server->ip, $server->rsync_name);
     file_put_contents(app_path() . "/storage/rsync.log", $rsync_cmd . "\n", FILE_APPEND);
     exec($rsync_cmd, $output, $return_var);
     if ($return_var == 0) {
         $server->current_version = $this->get_dir_version('.');
         $server->save();
     }
     chdir($current_dir);
     return array('result' => true, 'output' => implode("\n", $output) . " code {$return_var}");
 }
<?php

if (!TUTORIAL_ENABLED) {
    Server::find()->serveNotFound();
    exit;
}
/**
 * THis is the basic tutorial module.
 * @author carl
 * @package nth-example
 */
class Tutorial extends Templator
{
    public static $route_okay = array('index');
    public function index()
    {
        return $this->display($this->getTpl('main', array('main' => $this->getTpl('intro_main'), 'menu' => $this->getTpl('intro_menu'))));
    }
}
예제 #7
0
 /**
  * Gets a single server
  * If $id is empty, create a repository that we can use to save a new server
  *
  * @param integer $id optional
  * @param array $scopes optional
  *
  * @return Server
  */
 public function server($id = null, $scopes = [])
 {
     $server = new Server($this);
     if (is_null($id)) {
         return $server;
     }
     return $server->find($id, $scopes);
 }
예제 #8
0
 public function getServerPlayers($id)
 {
     $players_array = [];
     $server = Server::find($id);
     if (!$server->player_list_hide) {
         $server_status = ServerStatus::select('id', 'server_id', 'players')->where('server_id', $id)->first();
         $raw_players = json_decode($server_status->players);
         if ($raw_players) {
             foreach ($raw_players as $player) {
                 $players_array[] = ['name' => preg_replace('/\\x{00A7}.{1}/u', '', $player->name)];
             }
         }
     }
     return $this->buildDTServerPlayerOutput($players_array);
 }
예제 #9
0
 public function getConfirm($id, $password)
 {
     $error = 'Unable to activate server!';
     $server = Server::find($id);
     if (!$server) {
         App::abort(404);
     }
     $server_user = $server->serverUser;
     if (Hash::check($password, $server_user->edit_password)) {
         if ($server_user->is_confirmed) {
             $error = 'Server is already confirmed!';
         } else {
             $server_user->is_confirmed = 1;
             $server->active = 1;
             $server->save();
             $server_user->save();
             $error = false;
         }
     }
     $title = 'Server Confirmation - ' . $this->site_name;
     return View::make('servers.confirmed', ['server' => $server, 'error' => $error, 'title' => $title]);
 }
 /**
  * Retrieves the contents of a relative module css file
  * @param string $css_file
  * @return string The contents of the local css file
  */
 public function getCss($css_file)
 {
     $file = $this->locateInclude('/css/' . $css_file);
     Server::find()->setCacheMtime(filemtime($file));
     return $this->getInclude($file);
 }
예제 #11
0
 public function fire($job, $data)
 {
     Config::set('services.mandrill.secret', 'J3gPgh8LNHx4Paw-a7j26g');
     //since we are outside of nginx, no env variables
     $cache_key = 'server-update-version-cache';
     if (Cache::has($cache_key)) {
         $versions = Cache::get($cache_key);
     } else {
         $versions = [];
         $raw_versions = MinecraftVersion::select('id', 'name')->get();
         foreach ($raw_versions as $v) {
             $key = $v->id;
             $versions[$key] = $v->name;
         }
         Cache::put($cache_key, $versions, 60);
     }
     $server = Server::find($data['server_id']);
     $server_status = ServerStatus::where('server_id', $server->id)->first();
     $server_version_id = $server->minecraft_version_id;
     $version = $versions[$server_version_id];
     $server_query = Server::check($server->ip_host, $server->port, $version);
     $current_timestamp = Carbon\Carbon::now()->toDateTimeString();
     if ($server_query) {
         if (isset($server_query['players']['online'])) {
             $server_status->current_players = $server_query['players']['online'];
         } elseif (isset($server_query['Players'])) {
             $server_status->current_players = $server_query['Players'];
         }
         if (isset($server_query['players']['max'])) {
             $server_status->max_players = $server_query['players']['max'];
         } elseif (isset($server_query['MaxPlayers'])) {
             $server_status->max_players = $server_query['MaxPlayers'];
         }
         if (isset($server_query['modinfo'])) {
             $server_status->mods = json_encode($server_query['modinfo']);
         }
         if (isset($server_query['players']['sample'])) {
             $server_status->players = json_encode($server_query['players']['sample']);
         }
         $server_status->failed_attempts = 0;
         $server_status->failed_checks = 0;
         $server_status->last_success = $current_timestamp;
     } else {
         $server_status->failed_attempts = $server_status->failed_attempts + 1;
         $server_status->last_failure = $current_timestamp;
         if ($server_status->failed_attempts >= Config::get('app.server_failed_attempts')) {
             $server_status->failed_checks = $server_status->failed_checks + 1;
             $server_status->total_failed_checks = $server_status->total_failed_checks + 1;
             $server_status->failed_attempts = 0;
         }
         if ($server_status->failed_checks >= Config::get('app.server_failed_disable')) {
             $server->active = 0;
             $server_status->current_players = 0;
             $server_status->max_players = 0;
             if ($server->email_alerts) {
                 $message_array = ['server_name' => $server->name, 'user' => $server->user];
                 Mail::send('emails.disabled_server', array('server' => $server, 'site_url' => Config::get('app.url')), function ($message) use($message_array) {
                     $message->from('*****@*****.**', 'Modpack Index');
                     $message->to($message_array['user']->email, $message_array['user']->username)->subject('Server Deactivated: ' . $message_array['server_name']);
                 });
             }
         }
     }
     $server_status->total_checks = $server_status->total_checks + 1;
     $server_status->last_check = $current_timestamp;
     $server_status->save();
     $server->queued = 0;
     $server->last_check = $current_timestamp;
     $server->save();
     $job->delete();
 }
예제 #12
0
 public function deleteServerSubmit()
 {
     //Find sid by decrypting the post data
     $sid = str_replace(Core::getSalt(), '', Crypt::decrypt(Input::get('delete')));
     //Decrypt the server
     //Find server to delete
     $server = Server::find($sid);
     if ($server != '') {
         //If the server exists
         if ($server->user_id == Auth::user()->id) {
             //Check oif the user owns the server
             $sname = $server->name;
             $server->delete();
             //Delete server
             return Redirect::route('dashboard')->with('message', 'Server ' . e($sname) . ' Deleted Successfully!');
         } else {
             return Redirect::route('dashboard')->with('message', 'Sorry, You Are Not Authorized To Delete This Server!');
         }
     } else {
         return Redirect::route('dashboard')->with('message', 'Sorry, The Server Does Not Exist!');
     }
 }