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.
[PHP] MobilniPlatby.cz [1.0.0-beta2]
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
Připoj se k nám play.southcraft.eu
Zvednutí karmy za spokojenost nic nestojí
Zvednutí karmy za spokojenost nic nestojí
- 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]
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ě.
Výběr z vlastních projektů: MinecraftServerList.cz ✔ Minecraft Extended Punishment List ✔ Killing Floor2 servery ✔
Spoiler: zobrazit
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
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í
Zvednutí karmy za spokojenost nic nestojí
- 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]
Ne, budeš to muset nabídnout někomu jinému, tenhle projekt už nehodlám rozšiřovat.
Výběr z vlastních projektů: MinecraftServerList.cz ✔ Minecraft Extended Punishment List ✔ Killing Floor2 servery ✔
Spoiler: zobrazit
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
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.
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.
-
- Příspěvky: 3512
- Věk: 25
- Registrován: 18 úno 2012, 21:02
- Reputation: 11
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
Zadáváš tam RCOn port.
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
Ďakujem. a ešte by som poprosil niekoho k tomu druhému bodu.
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
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:
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.
Spoiler: zobrazit
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í
Zvednutí karmy za spokojenost nic nestojí
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
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:
Toto píše na webu:
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.
Re: [PHP] MobilniPlatby.cz [1.0.0-beta2]
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ť ?
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 33 hostů