public function getIndex() { $limit = 100; $chat = $this->chat->leftJoin('tbl_server', 'tbl_chatlog.ServerID', '=', 'tbl_server.ServerID')->select('tbl_chatlog.*', 'tbl_server.ServerName')->orderBy('logDate', 'desc'); if (Input::has('limit') && in_array(Input::get('limit'), range(10, 100, 10))) { $limit = Input::get('limit'); } if (Input::has('nospam') && Input::get('nospam') == 1) { $chat = $chat->excludeSpam(); } if (Input::has('between')) { $between = explode(',', Input::get('between')); $startDate = Carbon::createFromFormat('Y-m-d H:i:s', $between[0]); if (count($between) == 1) { $endDate = Carbon::now(); } else { $endDate = Carbon::createFromFormat('Y-m-d H:i:s', $between[1]); } if ($startDate->gte($endDate)) { return MainHelper::response(null, sprintf("%s is greater than %s. Please adjust your dates.", $startDate->toDateTimeString(), $endDate->toDateTimeString()), 'error', null, false, true); } $chat = $chat->whereBetween('logDate', [$startDate->toDateTimeString(), $endDate->toDateTimeString()])->paginate($limit); } else { $chat = $chat->simplePaginate($limit); } return MainHelper::response($chat, null, null, null, false, true); }
public function update($id) { try { $groups = Cache::get('admin.adkats.special.groups'); $player = Special::findOrFail($id); foreach ($groups as $group) { if ($group['group_key'] == Input::get('group')) { $newGroup = $group['group_name']; break; } } $player->player_group = Input::get('group'); $player->save(); if (is_null($player->player)) { $soldierName = $player->player_identifier; } else { $soldierName = $player->player->SoldierName; } $message = sprintf('%s group has been changed to %s.', $soldierName, $newGroup); return MainHelper::response(null, $message); } catch (ModelNotFoundException $e) { $message = sprintf('No player found with special id of %u', $id); return MainHelper::response(null, $message, 'error', 404); } catch (Exception $e) { return MainHelper::response($e, $e->getMessage(), 'error', 500); } }
public function putIndex() { if (!$this->isLoggedIn || !$this->user->ability(null, 'admin.adkats.reports.edit')) { throw new AccessDeniedHttpException('Authorization Denied!'); } $r = App::make('BFACP\\Repositories\\ReportRepository'); $v = Validator::make(Input::all(), ['id' => 'required|numeric|exists:adkats_records_main,record_id', 'action' => 'required|numeric|in:' . implode(',', $r::$allowedCommands), 'reason' => 'required|string|between:3,500', 'extras.tban.duration' => 'required_if:action,7|numeric|between:1,525960'], ['extras.tban.duration.required_if' => 'The duration is required for temp bans.', 'extras.tban.duration.between' => 'The duration must be between :min minute and :max minutes.']); if ($v->fails()) { throw new ResourceException(null, $v->errors()); } try { $record = $r->getReportById(Input::get('id')); if (!in_array($record->command_action, [18, 20])) { throw new UpdateResourceFailedException('Unable to complete action. Report has already been acted on.'); } // If the action is {Accept, Deny, Ignore} Round Report then we just need to update the existing record. if (in_array(Input::get('action'), [40, 41, 61])) { $record->command_action = Input::get('action'); $record->save(); } else { $newRecord = $record->replicate(); $newRecord->command_type = Input::get('action'); $newRecord->command_action = Input::get('action'); if (Input::get('action') == 7) { $maxDuration = Setting::where('setting_name', 'Maximum Temp-Ban Duration Minutes')->where('server_id', 1)->pluck('setting_value'); $duration = Input::get('extras.tban.duration', $maxDuration); $commandNumeric = (int) $duration > (int) $maxDuration ? $maxDuration : $duration; } else { $commandNumeric = 0; } $newRecord->command_numeric = $commandNumeric; $newMessage = trim(Input::get('reason', $newRecord->record_message)); $oldMessage = trim($newRecord->record_message); if ($newMessage != $oldMessage && !empty($newMessage)) { $newRecord->record_message = $newMessage; } $source = MainHelper::getAdminPlayer($this->user, $newRecord->server->game->GameID); if (!is_null($source)) { $newRecord->source_id = $source->PlayerID; $newRecord->source_name = $source->SoldierName; } else { $newRecord->source_id = null; $newRecord->source_name = $this->user->username; } $newRecord->record_time = Carbon::now(); $newRecord->adkats_read = 'N'; $newRecord->save(); $record->command_action = 40; $record->save(); } return MainHelper::response(['old' => $record, 'new' => isset($newRecord) ? $newRecord : null], 'Report updated', null, null, false, true); } catch (ModelNotFoundException $e) { return MainHelper::response(null, 'Report was not found. Aborting!', 'error', null, false, true); } }
public function stats() { $yesterdaysBans = Cache::remember('bans.stats.yesterday', 120, function () { return Ban::yesterday()->count(); }); $avgBansPerDay = Cache::remember('bans.stats.average', 180, function () { $result = head(DB::select(File::get(storage_path() . '/sql/avgBansPerDay.sql'))); return intval($result->total); }); return MainHelper::response(['bans' => ['yesterday' => $yesterdaysBans, 'average' => $avgBansPerDay]], null, null, null, false, true); }
public function onlineAdmins() { $admins = DB::table('tbl_currentplayers')->select('SoldierName', 'ServerName', 'tbl_currentplayers.ServerID', 'PlayerJoined')->join('tbl_server', 'tbl_currentplayers.ServerID', '=', 'tbl_server.ServerID')->whereIn('EA_GUID', function ($query) { $query->from('adkats_usersoldiers')->select('EAGUID')->join('adkats_users', 'adkats_usersoldiers.user_id', '=', 'adkats_users.user_id')->join('adkats_roles', 'adkats_users.user_role', '=', 'adkats_roles.role_id')->join('tbl_playerdata', 'adkats_usersoldiers.player_id', '=', 'tbl_playerdata.PlayerID')->groupBy('EAGUID')->whereExists(function ($query2) { $query2->select('adkats_rolecommands.role_id')->from('adkats_rolecommands')->join('adkats_commands', 'adkats_rolecommands.command_id', '=', 'adkats_commands.command_id')->where('command_playerInteraction', 1)->whereRaw('adkats_rolecommands.role_id = adkats_users.user_role')->groupBy('adkats_rolecommands.role_id'); }); })->get(); foreach ($admins as $key => $admin) { $admins[$key]->stamp = Carbon::parse($admin->PlayerJoined, 'UTC')->toIso8601String(); } return MainHelper::response($admins, null, null, null, false, true); }
/** * Unbans the player * * @param integer $id Ban ID * * @return \Illuminate\Support\Facades\Response */ public function destroy($id) { try { // Fetch the ban $ban = $this->repository->getBanById($id); $bfacp = App::make('bfadmincp'); $oldRecord = $ban->record; $admin = MainHelper::getAdminPlayer($bfacp->user, $ban->player->game->GameID); // Only modify the old record if the command action is a temp or perma ban. if (in_array((int) $oldRecord->command_action, [7, 8])) { // 72 => Previous Temp Ban // 73 => Previous Perm Ban $oldRecord->command_action = $oldRecord->command_action == 8 ? 73 : 72; $oldRecord->save(); } // Duplicate the record and save the changes $record = $ban->record->replicate(); $record->command_type = 37; $record->command_action = 37; $record->source_id = is_null($admin) ? null : $admin->PlayerID; $record->source_name = is_null($admin) ? Auth::user()->username : $admin->SoldierName; $record->record_message = Input::get('message', 'Unbanned'); $record->record_time = Carbon::now(); $record->adkats_web = true; $record->save(); // Update the ban record and save the changes $ban->record()->associate($record); $ban->ban_status = 'Disabled'; if (!is_null(Input::get('notes', null))) { $ban->ban_notes = Input::get('notes', 'NoNotes'); } $ban->save(); try { if (!is_null($this->metabans)) { $this->metabans->assess($ban->player->game->Name, $ban->player->EAGUID, 'None', Input::get('message', 'Unbanned')); } } catch (MetabansException $e) { } // Purge the cache for the player Cache::forget(sprintf('api.player.%u', $ban->player_id)); Cache::forget(sprintf('player.%u', $ban->player_id)); return MainHelper::response(); } catch (ModelNotFoundException $e) { return MainHelper::response(null, $e->getMessage(), 'error', 404); } catch (\Exception $e) { return MainHelper::response(null, $e->getMessage(), 'error', 500); } }
/** * Delete user * * @param integer $id User ID * * @return \Illuminate\Support\Facades\Response */ public function destroy($id) { try { $user = User::findOrFail($id); $username = $user->user_name; $user->delete(); return MainHelper::response(['url' => route('admin.adkats.users.index')], sprintf('%s was deleted', $username)); } catch (ModelNotFoundException $e) { return Redirect::route('admin.adkats.users.index')->withErrors([sprintf('User #%u doesn\'t exist.', $id)]); } }
public function getAssessments() { $assessments = $this->metabans->assessments(); return MainHelper::response($assessments, null, null, null, false, true); }
/** * Delete user * * @param integer $id User ID * * @return \Illuminate\Support\Facades\Response */ public function destroy($id) { try { $user = User::findOrFail($id); $username = $user->username; $user->delete(); return MainHelper::response(['url' => route('admin.site.users.index')], Lang::get('alerts.user.deleted', compact('username'))); } catch (ModelNotFoundException $e) { $this->messages[] = Lang::get('alerts.user.invlid', ['userid' => $id]); return Redirect::route('admin.site.users.index')->withErrors($this->messages); } }
/** * Gets the players sessions * * @param integer $id * * @return \Illuminate\Support\Facades\Response */ public function showSessions($id) { $sessions = $this->repository->getPlayerSessions($id); return MainHelper::response($sessions, null, null, null, false, true); }
/** * @param Player $player * * @return mixed */ public function getCheatDetection(Player $player) { $acs = new AntiCheat($player); $data = $acs->parse($acs->battlelog->getWeaponStats())->get(); return MainHelper::response($data, null, null, null, false, true); }
public function scoreboardAdmin() { try { $id = Input::get('server_id'); if (!is_numeric($id) || $id <= 0) { throw new NotFoundHttpException('Invalid Server ID'); } $allowedMethods = ['yell', 'say', 'kill', 'move', 'kick', 'punish']; $permissions = Cache::get('admin.perm.list'); if (!Input::has('method') || !in_array(Input::get('method'), $allowedMethods)) { throw new NotFoundHttpException(); } if (!$this->isLoggedIn || !$this->user->ability(null, $permissions['scoreboard'])) { throw new AccessDeniedHttpException(); } $scoreboard = new LiveServerRepository(Server::findOrFail($id)); if ($scoreboard->attempt()->check()) { $players = []; if (Input::has('players')) { $players = explode(',', Input::get('players')); } switch (Input::get('method')) { case 'yell': $this->hasPermission('admin.scoreboard.yell'); if (Input::get('type') == 'Player' && Input::has('players')) { foreach ($players as $player) { $scoreboard->adminYell(Input::get('message', null), $player, null, Input::get('duration', 5), 'Player'); } } else { $scoreboard->adminYell(Input::get('message', null), Input::get('player', null), Input::get('team', null), Input::get('duration', 5), Input::get('type', 'All')); } break; case 'say': $this->hasPermission('admin.scoreboard.say'); if (Input::get('type') == 'Player' && Input::has('players')) { foreach ($players as $player) { $scoreboard->adminSay(Input::get('message', null), $player, null, 'Player'); } } else { $scoreboard->adminSay(Input::get('message', null), Input::get('player', null), Input::get('team', null), Input::get('type', 'All')); } break; case 'kill': $this->hasPermission('admin.scoreboard.kill'); if (Input::has('players')) { $unkilled = []; foreach ($players as $player) { try { $scoreboard->adminKill($player, Input::get('message', null)); } catch (PlayerNotFoundException $e) { $unkilled[] = ['name' => $player, 'reason' => $e->getMessage()]; } } if (!empty($unkilled)) { $data = $unkilled; } } else { throw new RconException(400, 'No players selected.'); } break; case 'kick': $this->hasPermission('admin.scoreboard.kick'); if (Input::has('players')) { $unkicked = []; foreach ($players as $player) { try { $scoreboard->adminKick($player, Input::get('message', null)); } catch (PlayerNotFoundException $e) { $unkicked[] = ['name' => $player, 'reason' => $e->getMessage()]; } } if (!empty($unkicked)) { $data = $unkicked; } } else { throw new RconException(400, 'No player selected.'); } break; case 'move': $this->hasPermission('admin.scoreboard.teamswitch'); if (Input::has('players')) { $unmoved = []; foreach ($players as $player) { try { $scoreboard->adminMovePlayer($player, Input::get('team', null), Input::get('squad', null)); } catch (PlayerNotFoundException $e) { $unmoved[] = ['name' => $player, 'reason' => $e->getMessage()]; } catch (RconException $e) { $unmoved[] = ['name' => $player, 'reason' => $e->getMessage()]; } } if (!empty($unmoved)) { $data = $unmoved; } } else { throw new RconException(400, 'No player selected.'); } break; case 'punish': $this->hasPermission('admin.scoreboard.punish'); if (Input::has('players')) { foreach ($players as $player) { $data[] = $scoreboard->adminPunish($player, Input::get('message')); } } else { throw new RconException(400, 'No player selected.'); } break; case 'forgive': $this->hasPermission('admin.scoreboard.forgive'); if (Input::has('players')) { foreach ($players as $player) { $scoreboard->adminForgive($player, Input::get('message')); } } else { throw new RconException(400, 'No player selected.'); } break; default: throw new NotFoundHttpException(); } if (!isset($data)) { $data = []; } return MainHelper::response($data, null, null, null, false, true); } } catch (PlayerNotFoundException $e) { return MainHelper::response(null, $e->getMessage(), 'error', null, false, true); } catch (ModelNotFoundException $e) { throw new NotFoundHttpException(sprintf('No server found with id %s', $id)); } catch (Exception $e) { throw $e; } }
public function destroy($id) { try { // Disable rules on model Role::$rules = []; // Get role $role = Role::findOrFail($id); if (in_array($role->id, [1, 2])) { return MainHelper::response(null, sprintf('You can\'t delete the %s role.', $role->name), 'error'); } // Save role name $roleName = $role->name; foreach ($role->users as $user) { $user->roles()->detach($id); $user->roles()->attach(2); } $role->delete(); return MainHelper::response(['url' => route('admin.site.roles.index')], sprintf('%s was deleted', $roleName)); } catch (ModelNotFoundException $e) { return Redirect::route('admin.site.roles.index')->withErrors([sprintf('Role #%u doesn\'t exist.', $id)]); } }
/** * Search for playeers * * @param string $phrase * * @return \Illuminate\Support\Facades\Response */ public function search($phrase = '') { $rules = ['phrase' => 'required']; $data = ['phrase' => trim($phrase)]; if (!$this->validate($data, $rules)) { return MainHelper::response($this->getErrors(), 'Validation failed.', 'error', 400); } $matches = new Collection($this->request(['mbo_search' => $data])['matches']); return MainHelper::response($matches); }
/** * Wrapper for \BFACP\Facades\Main * * @param array $data * @param string $message * @param string $type * * @return MainHelper */ private function _response($data = null, $message = null, $type = null) { $data = ['failed' => $this->errors, 'passed' => $this->data, 'other' => $data]; if (!empty($this->errors)) { $message = self::COMPLETE_WITH_ERRORS; } return MainHelper::response($data, $message, $type, null, false, true); }
public function destroy($id) { try { // Get role $role = Role::findOrFail($id); if ($role->role_id == 1) { return MainHelper::response(null, sprintf('You can\'t delete the %s role.', $role->role_name), 'error'); } // Save role name $roleName = $role->role_name; $guestRole = Role::findOrFail(1); foreach ($role->users as $user) { $user->role()->associate($guestRole)->save(); } $role->delete(); return MainHelper::response(['url' => route('admin.adkats.roles.index')], sprintf('%s was deleted', $roleName)); } catch (ModelNotFoundException $e) { return Redirect::route('admin.adkats.roles.index')->withErrors([sprintf('Role #%u doesn\'t exist.', $id)]); } }