Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
 /**
  * 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);
     }
 }
Exemplo n.º 7
0
 /**
  * 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)]);
     }
 }
Exemplo n.º 8
0
 public function getAssessments()
 {
     $assessments = $this->metabans->assessments();
     return MainHelper::response($assessments, null, null, null, false, true);
 }
Exemplo n.º 9
0
 /**
  * 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);
     }
 }
Exemplo n.º 10
0
 /**
  * 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);
 }
Exemplo n.º 11
0
 /**
  * @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);
 }
Exemplo n.º 12
0
 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;
     }
 }
Exemplo n.º 13
0
 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)]);
     }
 }
Exemplo n.º 14
0
 /**
  * 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);
 }
Exemplo n.º 15
0
 /**
  * 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);
 }
Exemplo n.º 16
0
 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)]);
     }
 }