[PHP] MobilniPlatby.cz [1.0.0-beta2]

Message
Autor
LukixCZ
Příspěvky: 234
Věk: 23
Registrován: 10 lis 2013, 07:55
Reputation: 0

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#171 Příspěvekod LukixCZ » 14 pro 2016, 06:47

Super! Ale script pro slováky by být nemohl ? :(
Bylo by to ještě lepší! Protože za slováky vyhazuju peníze oknem.
Připoj se k nám play.southcraft.eu
Zvednutí karmy za spokojenost nic nestojí :)

Uživatelský avatar
Mysteria
Příspěvky: 9122
Registrován: 26 pro 2009, 15:40
Reputation: 7
Bydliště: Česká republika
Kontaktovat uživatele:

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#172 Příspěvekod Mysteria » 14 pro 2016, 15:18

Mohl, ale já to tam už přidělávat nebudu. Samozřejmě nikomu nebráním vzít tenhle projekt a přidělat to do něj. :) Pro někoho, kdo tomu rozumí to je otázka tak hodinky maximálně.

LukixCZ
Příspěvky: 234
Věk: 23
Registrován: 10 lis 2013, 07:55
Reputation: 0

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#173 Příspěvekod LukixCZ » 14 pro 2016, 15:35

No právě já bych si toho moc cenil. Vím, že je to blbá platba, ale třeba 300kč přes PSC by nepomohlo ?
Připoj se k nám play.southcraft.eu
Zvednutí karmy za spokojenost nic nestojí :)

Uživatelský avatar
Mysteria
Příspěvky: 9122
Registrován: 26 pro 2009, 15:40
Reputation: 7
Bydliště: Česká republika
Kontaktovat uživatele:

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#174 Příspěvekod Mysteria » 14 pro 2016, 17:59

Ne, budeš to muset nabídnout někomu jinému, tenhle projekt už nehodlám rozšiřovat.

Spells69
Příspěvky: 6
Registrován: 03 led 2018, 18:19
Reputation: 0

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#175 Příspěvekod Spells69 » 04 led 2018, 18:34

Zdravím.
Chcem sa spýtať 2 otázky.
1. v mobilni-platby.php ako mám zadať port tak tam mám zadať
query.port, rcon.port alebo server-port lebo každý je iný.

2.Na mobilní platby treba niečo aktivovať ? napríklad tie brány alebo dačo ?
Ked dám emulátor tak mi to skočí dozelena takže by to asi malo ísť.

Ked skusím poslať tú správu normálne z mobilu tak nič sa nedeje.

vojtamaniak
Příspěvky: 3512
Věk: 25
Registrován: 18 úno 2012, 21:02
Reputation: 11

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#176 Příspěvekod vojtamaniak » 04 led 2018, 19:29

Zadáváš tam RCOn port.

Spells69
Příspěvky: 6
Registrován: 03 led 2018, 18:19
Reputation: 0

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#177 Příspěvekod Spells69 » 04 led 2018, 20:48

Ďakujem. a ešte by som poprosil niekoho k tomu druhému bodu.

LukixCZ
Příspěvky: 234
Věk: 23
Registrován: 10 lis 2013, 07:55
Reputation: 0

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#178 Příspěvekod LukixCZ » 03 bře 2018, 18:02

Zdravím, ani ne před týdnem tenhle script vždy šlapal, jak má. Ovšem už asi 2 týdny mi nefunguje. Ať dělám co dělám, prostě nefunguje. Když změním RCON host na jiný, než který mám, tak to napíše jenom chybu, že se nemůže připojit k RCON. To je v pořádku. Ovšem, když nastavím přesné údaje RCONU do scriptu, tak ne jako dřív, že by se vykonali příkazy, ale bohužel to napíše chybu. Chyba z testovacího emulátoru:
Spoiler: zobrazit
Váš skript neodpovídá dle specifikace
Očekávaný HTTP status 200. Navrácený HTTP status 500!
Testovaná URL: http://southcraft.cz/SMS/CZ/mobilni-pla ... att=1&id=1
Hlavička: Content-length: 0
Skutečná délka odpovědi: 0


Já už jsem opravdu z toho v háji, vše jsem kontroloval x krát. Nic jsem neměnil. Přestal fungovat z hodiny na hodinu.
Připoj se k nám play.southcraft.eu
Zvednutí karmy za spokojenost nic nestojí :)

Weizen
Příspěvky: 1429
Registrován: 19 úno 2014, 19:56
Reputation: 0
Kontaktovat uživatele:

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#179 Příspěvekod Weizen » 08 bře 2018, 01:31

Zdravíčko mám problém,
Změnil jsem server...
Z ničeho nic mi přestal fungovat tento skript (píše to že nebylo spojení RCON)
I když v properties mam rcon-true i heslo a rcon port je správně !
Zde je skript:

Kód: Vybrat vše

<?php
/**
 * Název: MobilniPlatby.cz - PHP script pro zaslání RCON příkazů na MineCraft server po odeslání prémiové SMS
 * Autor: Mysteria - http://www.mysty.cz
 * Verze: 1.0.0-beta2
 * Poslední update: 27. 7. 2014
 * Více informací & download: http://forum.fakaheda.eu/viewtopic.php?f=85&t=20682#p134652
 */

$settings = (object)[ // Nastavení serverového RCONu
      'ip'       => '82.208.17.75',
      'port'       => 27780,
      'password'    => '*********'
];

$messages = (object)[ // Nastavení chybových SMS zpráv
      'sms_bad_price'    => 'Litujeme, ale poslali jste SMS za :REALPRICE: Kc misto SMS za :PRICE: Kc.',
      'sms_not_found'    => 'Litujeme, ale poslali jste špatnou sms, prosíme zkontrolujte si tvar sms a cenu.'
];

$levels = [ // Nastavení SMS levelů
   [
        'price' => 79, // Cena SMSky
        'text' => 'PM CRSR IVIP :NICK:', // Text SMSky, :NICK: bude nahrazen skutečným nickem uvedeným v SMS, musí být unikátní v rámci všech platebních levelů
        'answer' => 'Dekujeme za zakoupeni IronVIP za 79 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.', // Odpověď na správně zaslanou SMS
        'commands' => [ // RCON příkazy vykonané po úspěšném zpracování SMSky, :NICK: bude nahrazen skutečným nickem uvedeným v SMS
            'pex user :NICK: group set VIP1',
            'broadcast &d&lHráč &c&l:NICK: &d&lsi zakoupil &7&lIronVIP&d&l, Děkujeme',
         'case givekey :NICK: VIP 1',
         'eco give :NICK: 25000',
         'eco give :NICK: 10000'
        ]
    ], [
        'price' => 30,
        'text' => 'PM CRSR M25 :NICK:',
        'answer' => 'Dekujeme za zakoupeni penez za 30 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk',
        'commands' => [
         'eco give :NICK: 25000'
        ]
    ], [
        'price' => 299,
        'text' => 'PM CRSR SP299 :NICK:',
        'answer' => 'Dekujeme za podporu 299 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group set VIP4',
            'broadcast &d&lHráč &c&l:NICK: &d&lpodporil server a my mu moc dekujeme!',
         'eco give :NICK: 85000',
         'eco give :NICK: 100000'
        ]
    ], [
        'price' => 399,
        'text' => 'PM CRSR SP399 :NICK:',
        'answer' => 'Dekujeme za podporu 399 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group set VIP4',
            'broadcast &d&lHráč &c&l:NICK: &d&lpodporil server a my mu moc dekujeme!',
         'eco give :NICK: 85000',
         'eco give :NICK: 100000'
        ]
    ], [
        'price' => 499,
        'text' => 'PM CRSR SP499 :NICK:',
        'answer' => 'Dekujeme za podporu 499 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group set VIP4',
            'broadcast &d&lHráč &c&l:NICK: &d&lpodporil server a my mu moc dekujeme!',
         'eco give :NICK: 85000',
         'eco give :NICK: 100000'
        ]
    ], [
        'price' => 50,
        'text' => 'PM CRSR M50 :NICK:',
        'answer' => 'Dekujeme za zakoupeni penez za 50 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk',
        'commands' => [
         'eco give :NICK: 55000'
        ]
    ], [
        'price' => 79,
        'text' => 'PM CRSR M75 :NICK:',
        'answer' => 'Dekujeme za zakoupeni penez za 79 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk',
        'commands' => [
         'eco give :NICK: 85000'
        ]
   ], [
        'price' => 50,
        'text' => 'PM CRSR SPAWNER :NICK:',
        'answer' => 'Dekujeme za zakoupeni spawneru. Tve vyhody budou brzo aktivovany s pozdravem Terranet.sk',
        'commands' => [
            'give :NICK: spawner 6',
            'broadcast &d&lHráč &3&l:NICK: &d&lsi zakoupil Spawnery, Děkujeme'
        ]
    ], [
        'price' => 50,
        'text' => 'PM CRSR MIVIP :NICK:',
        'answer' => 'Dekujeme za zakoupeni IronVIP za 50 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group add VIP1 "" 2628000',
            'broadcast &d&lHráč &c&l:NICK: &d&lsi zakoupil &6&lIronVIP&d&l na měsíc, Děkujeme',
         'case givekey :NICK: VIP 1',
         'eco give :NICK: 25000',
         'eco give :NICK: 10000'
        ]
    ], [
        'price' => 79,
        'text' => 'PM CRSR MGVIP :NICK:',
        'answer' => 'Dekujeme za zakoupeni GoldVIP za 79 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group add VIP2 "" 2628000',
            'broadcast &d&lHráč &c&l:NICK: &d&lsi zakoupil &6&lGoldVIP&d&l na měsíc, Děkujeme',
         'case givekey :NICK: VIP 1',
         'eco give :NICK: 55000',
         'eco give :NICK: 25000'
        ]
    ], [
        'price' => 99,
        'text' => 'PM CRSR MDVIP :NICK:',
        'answer' => 'Dekujeme za zakoupeni DiamondVIP za 99 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk,Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group add VIP3 "" 2628000',
            'broadcast &d&lHráč &c&l:NICK: &d&lsi zakoupil &b&lDiamondVIP&d&l na měsíc, Děkujeme',
         'case givekey :NICK: VIP 1',
         'eco give :NICK: 85000',
         'eco give :NICK: 25000'
        ]
    ], [
        'price' => 149,
        'text' => 'PM CRSR GVIP :NICK:',
        'answer' => 'Dekujeme za zakoupeni GoldVIP za 149 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group set VIP2',
            'broadcast &d&lHráč &c&l:NICK: &d&lsi zakoupil &6&lGoldVIP&d&l, Děkujeme',
         'case givekey :NICK: VIP 1',
         'eco give :NICK: 55000',
         'eco give :NICK: 25000'
        ]
    ], [
        'price' => 199,
        'text' => 'PM CRSR DVIP :NICK:',
        'answer' => 'Dekujeme za zakoupeni DiamondVIP za 199 Kc, Tve vyhody budou automaticky aktivovany do 5 min. s pozdravem Terranet.sk, Pro aktivovani VIP na TS napis majiteli na email nebo ve hre.',
        'commands' => [
            'pex user :NICK: group set VIP3',
            'broadcast &d&lHráč &c&l:NICK: &d&lsi zakoupil &b&lDiamondVIP&d&l, Děkujeme',
         'case givekey :NICK: VIP 1',
         'eco give :NICK: 85000',
         'eco give :NICK: 50000'
        ]
    ]
];

/* Do not make any changes below this line if you don't know what are you doing! */
$rcon = new Rcon($settings->ip, $settings->port, $settings->password, 3);
if (!$rcon->connect()) exit('Cannot connect to server RCON. Please check your settings.');
$url = (object)filter_input_array(INPUT_GET);
try {
   if (isset($url->shortcode)) {
      $url->sms = trim($url->sms);
      if (mb_strlen($url->shortcode) === 7) {
         $realPrice = (int)substr($url->shortcode, -2, 2);
         foreach ($levels as $level) {
            $level = (object)$level;
            if ($level->price >= 100) continue;
            $realNick = explode(' ', $url->sms)[array_search(':NICK:', explode(' ', $level->text))];
            if (strtolower($url->sms) === strtolower(str_replace(':NICK:', $realNick, $level->text))) {
               if ($realPrice === $level->price) {
                  foreach ($level->commands as $command) $rcon->send_command(str_replace(':NICK:', $realNick, $command));
                  File::write('./mobilni-platby.log', date('d. m. Y H:i:s', time()) . " => [SUCCESS] SMS zpráva s obsahem '$url->sms' s cenou {$realPrice}Kč byla úspěšně zpracována." . PHP_EOL);
                  header('Content-type:text/plain');
                  header('Content-length:' . mb_strlen($level->answer));
                  exit($level->answer);
               } else {
                  File::write('./mobilni-platby.log', date('d. m. Y H:i:s', time()) . " => [!ERROR!] SMS zpráva s obsahem '$url->sms' s cenou {$realPrice}Kč nebyla zpracována, protože měla mít cenu {$level->price}Kč." . PHP_EOL);
                  $answer = str_replace(':PRICE:', $level->price, str_replace(':REALPRICE:', $realPrice, $messages->sms_bad_price));
                  header('Content-type:text/plain');
                  header('Content-length:' . mb_strlen($answer));
                  exit($answer);
               }
            }
         }
         File::write('./mobilni-platby.log', date('d. m. Y H:i:s', time()) . " => [!ERROR!] SMS zpráva s obsahem '$url->sms' s cenou {$realPrice}Kč nebyla zpracována, protože nebyla rozpoznána." . PHP_EOL);
         header('Content-type:text/plain');
         header('Content-length:' . mb_strlen($messages->sms_not_found));
         exit($messages->sms_not_found);
      } else {
         foreach ($levels as $level) {
            $level = (object)$level;
            if ($level->price <= 99) continue;
            $realNick = explode(' ', $url->sms)[array_search(':NICK:', explode(' ', $level->text))];
            if (strtolower($url->sms) === strtolower(str_replace(':NICK:', $realNick, $level->text))) {
               $file = "./database/$url->id.txt";
               $commands = NULL;
               foreach ($level->commands as $command) $commands .= str_replace(':NICK:', $realNick, $command) . ';;;';
               File::write($file, $commands);
               $level->answer .= ";90333$level->price";
               File::write('./mobilni-platby.log', date('d. m. Y H:i:s', time()) . " => [SUCCESS] SMS zpráva ID $url->id s obsahem '$url->sms' s cenou {$level->price}Kč byla úspěšně zpracována." . PHP_EOL);
               header('Content-type:text/plain');
               header('Content-length:' . mb_strlen($level->answer));
               exit($level->answer);
            }
         }
         File::write('./mobilni-platby.log', date('d. m. Y H:i:s', time()) . " => [!ERROR!] SMS zpráva ID $url->id s obsahem '$url->sms' s cenou {$level->price}Kč nebyla zpracována, protože nebyla rozpoznána." . PHP_EOL);
         header('Content-type:text/plain');
         header('Content-length:' . mb_strlen($messages->sms_not_found));
         exit("$messages->sms_not_found;FREE90333199");
      }
   } elseif (isset($url->request)) {
      if ($url->status === 'DELIVERED') {
         $file = "./database/$url->request.txt";
         if (is_array($commands = explode(';;;', File::read($file)))) foreach ($commands as $command) $rcon->send_command($command);
         File::remove($file);
         File::write('./mobilni-platby.log', date('d. m. Y H:i:s', time()) . " => [SUCCESS] Doručenka SMS zprávy ID $url->request byla úspěšně zpracována." . PHP_EOL);
      } else File::write('./mobilni-platby.log', date('d. m. Y H:i:s', time()) . " => [!ERROR!] Doručenka SMS zprávy ID $url->request nebyla zpracována, protože přišla se statusem $url->status ($url->message)." . PHP_EOL);
      header('HTTP/1.1 204 No Content');
      exit;
   }
} catch (\FileException $e) { exit($e->getMessage()); }
class File {
   public static function read($source, $mode = 'r') {
      if (file_exists($source)) {
         if ($file = fopen($source, $mode)) {
            if ($content = fread($file, filesize($source))) {
               if (fclose($file)) {
                  return $content;
               } else throw new \FileException("Cannot close file $source.");
            } else throw new \FileException("Cannot read file $source.");
         } else throw new \FileException("Cannot open file $source.");
      } else throw new \FileException("Cannot find file $source.");
   }

   public static function write($destination, $content, $mode = 'a') {
      if (!is_dir(dirname($destination))) if (!mkdir(dirname($destination), 0777, TRUE)) throw new \FileException("Cannot create path $destination.");
      if ($file = fopen($destination, $mode)) {
         if (fwrite($file, $content)) {
            if (fclose($file)) {
               return TRUE;
            } else throw new \FileException("Cannot close file $destination.");
         } else throw new \FileException("Cannot write file $destination.");
      } else throw new \FileException("Cannot find file $destination.");
   }

   public static function remove($source) {
      if (file_exists($source)) {
         if (unlink($source)) {
            return TRUE;
         } else throw new \FileException("Cannot remove file $source.");
      } else throw new \FileException("Cannot find file $source.");
   }
}
class FileException extends \Exception { }
class Rcon {
   private $host;
   private $port;
   private $password;
   private $timeout;
   private $socket;
   private $authorized;
   private $last_response;

   const PACKET_AUTHORIZE = 5;
   const PACKET_COMMAND = 6;
   const SERVERDATA_AUTH = 3;
   const SERVERDATA_AUTH_RESPONSE = 2;
   const SERVERDATA_EXECCOMMAND = 2;
   const SERVERDATA_RESPONSE_VALUE = 0;

   public function __construct($host, $port, $password, $timeout) {
      $this->host = $host;
      $this->port = $port;
      $this->password = $password;
      $this->timeout = $timeout;
   }

   public function get_response() {
      return $this->last_response;
   }

   public function connect() {

      $this->socket = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);

      if (!$this->socket) {
         $this->last_response = $errstr;
         return false;
      }

      //set timeout
      stream_set_timeout($this->socket, 3, 0);

      //authorize
      $auth = $this->authorize();

      if ($auth) {
         return true;
      }

      return false;
   }

   public function disconnect() {
      if ($this->socket) {
         fclose($this->socket);
      }
   }

   public function is_connected() {
      return $this->authorized;
   }

   public function send_command($command) {
      if (!$this->is_connected()) return false;

      // send command packet.
      $this->write_packet(Rcon::PACKET_COMMAND, Rcon::SERVERDATA_EXECCOMMAND, $command);

      // get response.
      $response_packet = $this->read_packet();
      if ($response_packet['id'] == Rcon::PACKET_COMMAND) {
         if ($response_packet['type'] == Rcon::SERVERDATA_RESPONSE_VALUE) {
            $this->last_response = $response_packet['body'];
            return $response_packet['body'];
         }
      }

      return false;
   }

   private function authorize() {
      $this->write_packet(Rcon::PACKET_AUTHORIZE, Rcon::SERVERDATA_AUTH, $this->password);
      $response_packet = $this->read_packet();

      if ($response_packet['type'] == Rcon::SERVERDATA_AUTH_RESPONSE) {
         if ($response_packet['id'] == Rcon::PACKET_AUTHORIZE) {
            $this->authorized = true;
            return true;
         }
      }

      $this->disconnect();
      return false;
   }

   /**
    * Writes a packet to the socket stream..
    */
   private function write_packet($packet_id, $packet_type, $packet_body) {
      /*
        Size         32-bit little-endian Signed Integer       Varies, see below.
        ID            32-bit little-endian Signed Integer      Varies, see below.
        Type         32-bit little-endian Signed Integer      Varies, see below.
        Body         Null-terminated ASCII String         Varies, see below.
        Empty String   Null-terminated ASCII String         0x00
       */

      //create packet
      $packet = pack("VV", $packet_id, $packet_type);
      $packet = $packet . $packet_body . "\x00";
      $packet = $packet . "\x00";

      // get packet size.
      $packet_size = strlen($packet);

      // attach size to packet.
      $packet = pack("V", $packet_size) . $packet;

      // write packet.
      fwrite($this->socket, $packet, strlen($packet));
   }

   private function read_packet() {
      //get packet size.
      $size_data = fread($this->socket, 4);
      $size_pack = unpack("V1size", $size_data);
      $size = $size_pack['size'];

      // if size is > 4096, the response will be in multiple packets.
      // this needs to be address. get more info about multi-packet responses
      // from the RCON protocol specification at
      // https://developer.valvesoftware.com/wiki/Source_RCON_Protocol
      // currently, this script does not support multi-packet responses.

      $packet_data = fread($this->socket, $size);
      $packet_pack = unpack("V1id/V1type/a*body", $packet_data);

      return $packet_pack;
   }
}


Toto píše na webu:

Kód: Vybrat vše

Warning: unpack(): Type V: not enough input, need 4, have 0 in /data/web/virtuals/178956/virtual/www/domains/terranet.sk/platbysiano/mobiliano.php on line 371

Warning: fread(): Length parameter must be greater than 0 in /data/web/virtuals/178956/virtual/www/domains/terranet.sk/platbysiano/mobiliano.php on line 380

Warning: unpack(): Type V: not enough input, need 4, have 0 in /data/web/virtuals/178956/virtual/www/domains/terranet.sk/platbysiano/mobiliano.php on line 381
Cannot connect to server RCON. Please check your settings.

Uživatelský avatar
Darex
Příspěvky: 2
Registrován: 28 dub 2018, 23:28
Reputation: 0
Kontaktovat uživatele:

Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]

#180 Příspěvekod Darex » 25 bře 2020, 16:17

Zdravím, mám taký problém, že už neposiela rcon command na server ak si niekto kúpi VIP nad 100Kč. je to možné kvôli tomu lebo shortcode pre 99kč a menej je iné ako pre 100 a vyšie. dalo by sa to nejak opraviť ?


Zpět na „Návody“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů