<?php

if (! function_exists('get_current_ip')) {
    function get_current_ip()
    {
        $ip = null;

        if (app()->environment() == 'local') {
            return config('platform.general.dev_default_ip');
        }

        if (getenv('HTTP_CF_CONNECTING_IP')) {
            $ip = getenv('HTTP_CF_CONNECTING_IP');
        } elseif (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
            $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
        }

        if (! is_empty($ip)) {
            return $ip;
        }

        $ip_add_set = null;

        if (getenv('HTTP_CLIENT_IP')) {
            $ip_add_set = getenv('HTTP_CLIENT_IP');
        } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
            $ip_add_set = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('HTTP_X_FORWARDED')) {
            $ip_add_set = getenv('HTTP_X_FORWARDED');
        } elseif (getenv('HTTP_FORWARDED_FOR')) {
            $ip_add_set = getenv('HTTP_FORWARDED_FOR');
        } elseif (getenv('HTTP_FORWARDED')) {
            $ip_add_set = getenv('HTTP_FORWARDED');
        } elseif (getenv('REMOTE_ADDR')) {
            $ip_add_set = getenv('REMOTE_ADDR');
        } elseif (isset($_SERVER['REMOTE_ADDR'])) {
            $ip_add_set = $_SERVER['REMOTE_ADDR'];
        } else {
            $ip_add_set = '127.0.0.0';
        }

        $ip_add_set = explode(',', $ip_add_set);

        return $ip_add_set[0];
    }
}
