AirNew

HELP ME WITH CALLREMOTE AND PHP

Recommended Posts

 

I need help to send an email to the player using callRemote, my site is bvbserver.com I already have some more php files I do not know where it is wrong!

 

RESOURCE ( X )

V - client.lua - V

to = "playermail@gmail.com"
from = "nao-responder@bvbserver.com"
title = "TEST"
body = "TESTMESSAGE"
triggerServerEvent("sendMessage", getLocalPlayer(), to, from, title, body )

V - server.lua - V

addEvent("sendMessage", true)
addEventHandler("sendMessage", getRootElement(),
function ( to, from, title, body )

  local function callbackfnc(result, msg)
    outputDebugString("callbackfnc: " .. result .. " (" .. msg .. ")")
  end
  
  outputChatBox ( ""..to.." : "..from.." : "..title.." : "..body.."!", root )
  callRemote("https://bvbserver.com/MTA/file.php", callbackfnc, to, from, title, body)
end)

 

--------------------------------- // --------------------------------- --------------------------------- // --------------------------------- --------------------------------- // --------------------------------- --------------------------------- // ---------------------------------

 

V - file.php - V (bvbserver.com/MTA/file.php)

<?php
  include("mta_sdk.php");

  if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']) {
    mta::doReturn(-1, "Remote access not allowed");
    exit;
  }

  $input = mta::getInput();
  if ( isset($input[0]) &&
       isset($input[1]) &&
       isset($input[2]) &&
       isset($input[3])    )
  {
    $to = $input[0];
    $from = $input[1];
    $subject = $input[2];
    $message = $input[3];
    $headers = "From: " . $input[1];
    mail($to, $subject, $message, $headers);
    mta::doReturn(0, "Success");
  }
  else
  {
    mta::doReturn(-1, "Invalid input");
  }
?>

 

V - mta_sdk.php - V (bvbserver.com/MTA/mta_sdk.php)

<?php
/**
************************************
* MTA PHP SDK
************************************
*
* @copyright	Copyright (C) 2010, Multi Theft Auto
* @author		JackC, eAi, Sebas
* @link			http://www.mtasa.com
* @version		0.4
*/

class mta
{
	private $useCurl = false;
	private $sockTimeout = 6; // seconds
	
	public $http_username = '';
	public $http_password = '';
	
	public $host = '';
	public $port = '';
	
	private $resources = array();
	
	public function __construct( $host, $port, $username = "", $pass = "" )
	{
		$this->host = $host;
		$this->port = $port;
		$this->http_username = $username;
		$this->http_password = $pass;
	}
	
	public function getResource ( $resourceName )
	{
		foreach ( $this->resources as $resource )
		{
			if ( $resource->getName == $resourceName )
				return $resource;
		}
		
		$res = new Resource ( $resourceName, $this );
		$this->resources[] = $res;
		return $res;
	}
	
	public static function getInput()
	{
		$out = mta::convertToObjects( json_decode( file_get_contents('php://input'), true ) );
		return (is_array($out)) ? $out : false;
	}
	
	public static function doReturn()
	{
		$val = array();
		
		for ( $i = 0; $i < func_num_args(); $i++ )
		{
			$val[$i] = func_get_arg($i);
	    }
		
		$val = mta::convertFromObjects($val);
		$json_output = json_encode($val);
		echo $json_output;
	}
	
	public function callFunction( $resourceName, $function, $args )
	{
		if ( $args != null )
		{
			$args = mta::convertFromObjects($args);
			$json_output = json_encode($args);
		}
		else
		{
			$json_output = "";
		}
		$path = "/" . $resourceName . "/call/" . $function;
		$result = $this->do_post_request( $this->host, $this->port, $path, $json_output );
		echo $json_output;
		$out = mta::convertToObjects( json_decode( $result, true ) );
		
		return (is_array($out)) ? $out : false;
	}
	
	public static function convertToObjects( $item )
	{
		if ( is_array($item) )
		{
			foreach ( $item as &$value ) 
			{
				$value = mta::convertToObjects( $value );
			}
		}
		else if ( is_string($item) )
		{	
			if ( substr( $item, 0, 3 ) == "^E^" )
			{
				$item = new Element( substr( $item, 3 ) );
			}
			elseif ( substr( $item, 0, 3 ) == "^R^" )
			{
				$item = $this->getResource( substr( $item, 3 ) );
			}
		}
		
		return $item;
	}
	
	public static function convertFromObjects( $item )
	{
		if ( is_array($item) )
		{
			foreach ( $item as &$value ) 
			{
				$value = mta::convertFromObjects($value);
			}
		}
		elseif ( is_object($item) )
		{	
			if ( get_class($item) == "Element" || get_class($item) == "Resource" )
			{
				$item = $item->toString();
			}
		}
		
		return $item;
	}
	
	function do_post_request( $host, $port, $path, $json_data )
	{
		if ( $this->useCurl )
		{
			$ch = curl_init();   
			curl_setopt( $ch, CURLOPT_URL, "http://{$host}:{$port}{$path}" ); 
			curl_setopt( $ch, CURLOPT_POST, 1 );
			curl_setopt( $ch, CURLOPT_POSTFIELDS, $json_data );
			$result = curl_exec($ch);    
			curl_close($ch); 
			return $result;
		}
		else
		{
			if ( !$fp = @fsockopen( $host, $port, $errno, $errstr, $this->sockTimeout ) )
			{
				throw new Exception( "Could not connect to {$host}:{$port}" );
			}

			$out = "POST {$path} HTTP/1.0\r\n";
			$out .= "Host: {$host}:{$port}\r\n";
			
			if ( $this->http_username && $this->http_password )
			{
				$out .= "Authorization: Basic " . base64_encode( "{$this->http_username}:{$this->http_password}" ) . "\r\n";
			}
			
			$out .= "Content-Length: " . strlen($json_data) . "\r\n";
			$out .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
			//$out .= "Connection: close\r\n\r\n";
			$out .= $json_data . "\r\n\r\n";
			
			if ( !fputs( $fp, $out ) )
			{
				throw new Exception( "Unable to send request to {$host}:{$port}" );
			}
			
			@stream_set_timeout( $fp, $this->sockTimeout );
			$status = @socket_get_status($fp);
			
			$response = '';
			
			while ( !feof($fp) && !$status['timed_out'] )
			{
				$response .= fgets( $fp, 128 );
				$status = socket_get_status($fp);
			}
			
			fclose( $fp );
			
			$tmp = explode( "\r\n\r\n", $response, 2 );
			$headers = $tmp[0];
       		$response = trim($tmp[1]);
       		
       		preg_match( "/HTTP\/1.(?:0|1)\s*([0-9]{3})/", $headers, $matches );
       		$statusCode = intval($matches[1]);
       		
       		if ( $statusCode != 200 )
       		{
       			switch( $statusCode )
       			{
       				case 401:
       					throw new Exception( "Access Denied. This server requires authentication. Please ensure that a valid username and password combination is provided." );
       				break;
       				
       				case 404:
       					throw new Exception( "There was a problem with the request. Ensure that the resource exists and that the name is spelled correctly." );
       				break;
       			}
       		}
       		
       		if ( preg_match( "/^error/i", $response ) )
       		{
       			throw new Exception( ucwords( preg_replace("/^error:?\s*/i", "", $response ) ) );
       		}
			
			return $response;
		}
	}
}

class Element
{
	var $id;

	function Element($id)
	{
		$this->id = $id;
	}

	function toString()
	{
		return "^E^" . $this->id;
	}
}


class Resource
{
	var $name;
	private $server;

	function Resource($name, $server)
	{
		$this->name = $name;
		$this->server = $server;
	}

	function toString()
	{
		return "^R^" . $this->name;
	}
	
	public function getName()
	{
		return $this->name;
	}
	
	function call ( $function )
	{
		
		$val = array();
		
		for ( $i = 1; $i < func_num_args(); $i++ )
		{
			$val[$i-1] = func_get_arg($i);
	    }
		return $this->server->callFunction ( $this->name, $function, $val );
	}
}
?>

 

HELP ME PLEASE, I NEED SEND A MESSAGE TO PLAYER MAIL

Share this post


Link to post
27 minutes ago, AirNewSCR said:

Я пытаюсь этот ресурс, но не работает :(

maybe the message is in spam?

  • Like 1

Share this post


Link to post
7 minutes ago, XaskeL said:

maybe the message is in spam?

 

I looked everywhere in the email, even in the session "All emails" but I did not find anything!

Share this post


Link to post
4 minutes ago, AirNew said:

 

Я посмотрел везде в электронном письме, даже в сеансе «Все электронные письма», но ничего не нашел!

check if the php function is called - email

  • Like 1

Share this post


Link to post
2 minutes ago, XaskeL said:

check if the php function is called - email

RD4vorV.png

callRemote("https://bvbserver.com/MTA/file.php", callbackfnc, to, from, title, body)

 

Wait, HTTPS://, WAIT WAIT WAIT

Share this post


Link to post
5 minutes ago, AirNew said:

RD4vorV.png


callRemote("https://bvbserver.com/MTA/file.php", callbackfnc, to, from, title, body)

 

Wait, HTTPS://, WAIT WAIT WAIT

do you have a discord?

  • Like 1

Share this post


Link to post
Posted (edited)
1 minute ago, XaskeL said:

do you have a discord?

i'm from BRAZIL, and not speak english :( (just write)

Edited by AirNew

Share this post


Link to post
Just now, AirNew said:

Я из Бразилии, и не говорю по-английски :( (просто напишите)

what letter do you need to send? It is possible that your Hosting is blocking outgoing fetchRemote, or you forgot to issue admin rights to the resource to call fetchRemote

  • Like 1

Share this post


Link to post
39 minutes ago, XaskeL said:

what letter do you need to send? It is possible that your Hosting is blocking outgoing fetchRemote, or you forgot to issue admin rights to the resource to call fetchRemote

Solved! thanks @XaskeL

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.