cydrobolt / polr

:aerial_tramway: A modern, powerful, and robust URL shortener
https://polrproject.org
GNU General Public License v2.0
5k stars 889 forks source link

Map location is not working #507

Open Amar69 opened 5 years ago

Amar69 commented 5 years ago

I am not getting my Click Location in map and rest is working like a charm.

I am using php-fpm-7.0, Cloudlfare and Nginx web server. As I found out that Nginx hides native origin source IP. So I followed below links:

https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx-)

https://github.com/cydrobolt/polr/issues/491

I have modified /app/Helpers/ClickHelper.php file as suggested by above links

`<?php namespace App\Helpers; use App\Models\Click; use App\Models\Link; use Illuminate\Http\Request;

class` ClickHelper { static private function getCountry($ip) { $country_iso = geoip()->getLocation($ip)->iso_code; return $country_iso; }

static private function getHost($url) {
    // Return host given URL; NULL if host is
    // not found.
    return parse_url($url, PHP_URL_HOST);
}

static public function recordClick(Link $link, Request $request) {
    /**
     * Given a Link model instance and Request object, process post click operations.
     * @param Link model instance $link
     * @return boolean
     */

    $ip = $request->server('HTTP_X_FORWARDED_FOR');
    $referer = $request->server('HTTP_REFERER');

    $click = new Click;
    $click->link_id = $link->id;
    $click->ip = $ip;
    $click->country = self::getCountry($ip);
    $click->referer = $referer;
    $click->referer_host = ClickHelper::getHost($referer);
    $click->user_agent = $request->server('HTTP_USER_AGENT');
    $click->save();

    return true;
}

}`

please help me to resolve this issue. Thanks:)

jsbrain commented 5 years ago

+1

Tchekda commented 4 years ago

Hi, I know the topic is old but can you try with #569 ? It's made for Cloudflare but should work here too. Thank you