* @date 2022 * @name index.php */ # require functions require_once './functions.php'; # predefined links $middlewareLink = 'http://65.21.137.7:23478'; $uploadCenter = 'http://138.201.92.87'; # retrieve uri $uri = (filter_input(INPUT_SERVER,'HTTP_X_REWRITE_URL') != null) ? ltrim(filter_input(INPUT_SERVER, 'HTTP_X_REWRITE_URL'),'/') : ltrim(filter_input(INPUT_SERVER,'REQUEST_URI'),'/'); # check if link is an image checkImage($uri,$uploadCenter,$middlewareLink); # check if url contains fragment ?> parameters not found !'); # check for ids if($parameters['process-id'] == 0 && $parameters['offer-id'] == 0) die('
offer not found !'); # extract client ip and agent $ip = filter_input(INPUT_SERVER,'HTTP_CLIENT_IP') != null && filter_var($_SERVER['HTTP_CLIENT_IP'],FILTER_VALIDATE_IP) ? $_SERVER['HTTP_CLIENT_IP'] : (filter_input(INPUT_SERVER,'HTTP_X_FORWARDED_FOR') != null && filter_var($_SERVER['HTTP_X_FORWARDED_FOR'],FILTER_VALIDATE_IP) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']); $agent = (filter_input(INPUT_SERVER,'HTTP_USER_AGENT') != null) ? filter_input(INPUT_SERVER,'HTTP_USER_AGENT') : ''; # preparing payload $payload = ['action-id' => 0,'action' => $parameters['act'],'process-id' => $parameters['process-id'],'process-type' => $parameters['process-type'], 'user-id' => $parameters['user-id'],'vmta-id' => $parameters['vmta-id'],'list-id' => $parameters['list-id'],'client-id' => $parameters['client-id'], 'offer-id' => $parameters['offer-id'],'ip' => $ip,'agent' => $agent]; # optout case if($parameters['act'] == 'oop') { # handle optout process if(count($_POST)) { # retrieve email $email = filter_input(INPUT_POST,'email') != null ? strtolower(filter_input(INPUT_POST,'email')) : ''; # check if email is valid if(!filter_var($email,FILTER_VALIDATE_EMAIL)) $message = " "; else { # initialize headers $headers = ['Content-Type: application/json']; # initialize enpoint $endpoint = 'api/v1/tracking/check-email'; # check email if it's on our db $response = json_decode(executeRequest($middlewareLink . '/' . $endpoint,'POST',json_encode(['email' => $email,'list-id' => $parameters['list-id'],'client-id' => $parameters['client-id']]),$headers,20),true); # check if response is valid if(!is_array($response) || count($response) == 0 || !key_exists('httpStatus',$response)) $message = " "; else { # check response error if(intval($response['httpStatus']) !== 200) $message = " "; else { # initialize enpoint $endpoint = 'api/v1/tracking/proceed-tracking'; # execute request exec('nohup php ' . __DIR__ . '/async.php ' . base64_encode($middlewareLink . '/' . $endpoint) . ' ' . base64_encode(json_encode($payload)) . ' &'); $message = " "; } } } } # include optout form include_once './optout.php'; } else { # initialize headers $headers = ['Content-Type: application/json']; # initialize enpoint $endpoint = 'api/v1/tracking/retrieve-link'; # initialize offer link $offerLink = ''; # check if action is valid if(in_array($parameters['act'],['cl','un'])) { # retrieve offer link $response = json_decode(executeRequest($middlewareLink . '/' . $endpoint,'POST',json_encode($payload),$headers,20),true); # check if response is valid if(!is_array($response) || count($response) == 0 || !key_exists('httpStatus',$response)) die('
invalid response !'); # check response error if(intval($response['httpStatus']) !== 200) die('
' . $response['message'] . ''); # retrieve response data $response = key_exists('data',$response) && is_array($response['data']) && count($response['data']) ? $response['data'] : []; # check if response data is retrieved if(count($response) == 0) die('
invalid response data !'); # retrieve offer link $offerLink = key_exists('link',$response) && filter_var($response['link'],FILTER_VALIDATE_URL) ? $response['link'] : ''; # check if link is correct if(!filter_var($offerLink,FILTER_VALIDATE_URL)) die('
invalid offer link !'); # update payload with client info and action id $payload['info'] = $response['info']; $payload['action-id'] = intval($response['action-id']); } # send tracking information if(in_array($parameters['act'],['op','cl','un']) && $parameters['process-id'] > 0) { # initialize enpoint $endpoint = 'api/v1/tracking/proceed-tracking'; # execute request exec('nohup php ' . __DIR__ . '/async.php ' . base64_encode($middlewareLink . '/' . $endpoint) . ' ' . base64_encode(json_encode($payload)) . ' &'); } # redirect to offer link header('Location: ' . $offerLink); die(); }