Jump to content

HELP ME WITH CALLREMOTE AND PHP


AirNew

Recommended Posts

Posted

 

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 = "[email protected]"
from = "[email protected]"
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

Posted
27 minutes ago, AirNewSCR said:

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

maybe the message is in spam?

  • Like 1
Posted
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!

Posted
4 minutes ago, AirNew said:

 

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

check if the php function is called - email

  • Like 1
Posted
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

Posted
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
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
Posted
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
Posted
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

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.
×
×
  • Create New...