Beispiel #1
0
 public function requestAPI($API = null, $username = null)
 {
     $data = array('API' => $API, 'IP' => $_SERVER['REMOTE_ADDR'], 'username' => $username, 'nounce' => gmdate(time()), 'DateTime' => new \MongoDate());
     $requests = Requests::find('first', array('conditions' => array('IP' => $_SERVER['REMOTE_ADDR'], 'API' => $API), 'order' => array('DateTime' => -1)));
     Requests::create()->save($data);
     if ($_SERVER['REMOTE_ADDR'] == '198.50.222.223') {
         return true;
     }
     if ($_SERVER['REMOTE_ADDR'] == '107.20.80.120') {
         return true;
     }
     if ($_SERVER['REMOTE_ADDR'] == '178.62.83.36') {
         return true;
     }
     //bittybot.co.uk
     if ($_SERVER['REMOTE_ADDR'] == '107.6.11.150') {
         return true;
     }
     //GreenCoinX.com
     if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
         return true;
     }
     //GreenCoinX.com
     if ($_SERVER['REMOTE_ADDR'] == '107.6.11.211') {
         return true;
     }
     //SiiCrypto.com
     if (in_array($username, array("SiiUserA", "SiiUserB"))) {
         return true;
     }
     if (gmdate(time()) - $requests['nounce'] <= 1000) {
         return false;
     }
     return true;
 }
 /**
  * Get the matching request for the given request id.
  *
  * @param  int  $id
  * @return Response
  */
 public function show($id)
 {
     //Unique namespace for request PMRequest.
     $request = PMRequest::find($id);
     //Not a valid request
     if (empty($request)) {
         return parent::InvalidRequestResponseHandler();
         exit;
     }
     $request_pickup_times = $request->requestPickupTimes->toArray();
     $request_pickup_times_array = array();
     foreach ($request_pickup_times as $index => $vArray) {
         $request_pickup_times_array[] = $vArray['pickup_timestamp'];
     }
     $request_pickup_times_hash = array_flip($request_pickup_times_array);
     $time_filtered_requests = RequestPickupTimes::getRequestWithMatchingPickup($request_pickup_times_array, $id, $request->requester_id);
     //No requests matched, you want to suggest somthing to the user here
     if (empty($time_filtered_requests)) {
         return parent::NoRequestMatchResponseHandler();
         exit;
     }
     $result = array();
     foreach ($time_filtered_requests as $index => $request_info) {
         if (!isset($result[$request_info->request_id])) {
             $result[$request_info->request_id] = array();
         }
         $result[$request_info->request_id]['pickup_time'][] = $request_info->pickup_timestamp;
     }
     $time_filtered_requests_ids = array_keys($result);
     //get source address for my request
     $source_address = $request->sourceAddress;
     //get destination address for my request.
     $destination_address = $request->destinationAddress;
     //Get spatial distance from MySQL for source address
     $requests_by_source_distance = EntityAddress::getDistanceAmongRequestsByTimeFilteredIds($time_filtered_requests_ids, $source_address->lat, $source_address->lng, "source_address_id", $request_pickup_times_hash);
     $requests_by_destination_distance = EntityAddress::getDistanceAmongRequestsByTimeFilteredIds($time_filtered_requests_ids, $destination_address->lat, $destination_address->lng, "destination_address_id", $request_pickup_times_hash);
     $gdm_request_source = EntityAddress::getCSVForLatLong($source_address);
     $gdm_request_destination = EntityAddress::getCSVForLatLong($destination_address);
     $gdm_request_potential_source_matches = EntityAddress::getCSVForLatLong($requests_by_source_distance);
     $gdm_request_potential_destination_matches = EntityAddress::getCSVForLatLong($requests_by_destination_distance);
     $gdm_request_potential_source_matches = GoogleDistanceMatrixManager::get_distance_matrix($gdm_request_source, $gdm_request_potential_source_matches, Config::get('pm_constants.formats.array'));
     $gdm_request_potential_destination_matches = GoogleDistanceMatrixManager::get_distance_matrix($gdm_request_destination, $gdm_request_potential_destination_matches, Config::get('pm_constants.formats.array'));
     $api_response = PMRequest::formatAPIResponse($request, $source_address, $destination_address, $requests_by_source_distance, $requests_by_destination_distance, $gdm_request_potential_source_matches, $gdm_request_potential_destination_matches);
     return parent::ValidResponseHandler($api_response);
 }
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Requests::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $dataProvider->setSort(['attributes' => ['id', 'userlogin' => ['asc' => ['users.login' => SORT_ASC], 'desc' => ['users.login' => SORT_DESC], 'label' => 'user', 'default' => SORT_ASC], 'tasktitle' => ['asc' => ['tasks.title' => SORT_ASC], 'desc' => ['tasks.title' => SORT_DESC], 'label' => 'task', 'default' => SORT_ASC], 'answer', 'created', 'result']]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'created' => $this->created, 'result' => $this->result]);
     $query->andFilterWhere(['like', 'answer', $this->answer]);
     $query->joinWith(["user" => function ($q) {
         $q->where("users.login LIKE '%" . $this->userlogin . "%'");
     }]);
     $query->joinWith(["task" => function ($q) {
         $q->where("tasks.title LIKE '%" . $this->tasktitle . "%'");
     }]);
     return $dataProvider;
 }
Beispiel #4
0
 public static function checkIfBruteforce($team, $task)
 {
     $model = Requests::find()->where(["user_id" => $team, "task_id" => $task])->andWhere('created > date_sub(now(), interval 5 second)')->one();
     if ($model) {
         return true;
     } else {
         return false;
     }
 }