4

私がやろうとしているのは、私のWebサイトにVotifierプラグインのサポートを追加することです。

Minecraftサーバーの正しいポートを転送し、テストして、それらが開いていることを確認しました。また、 Minestatusを使用して、Votifierプラグインが正しく機能していることを確認しました。

ただし、サーバーに接続するために見つけたPHPスクリプトを使用しようとすると、接続が拒否されるだけです。

<?php

error_reporting(E_ALL);

// Details of the vote.
$str = "VOTE\n" .
       "TopHCSMP\n" .
       "SlickTheNick666\n" .
       "50.98.149.40\n" .
       time()."\n";

// Fill in empty space to make the encrypted block 256 bytes.
$leftover = (256 - strlen($str)) / 2;

while ($leftover > 0) {
    $str .= "\x0";
    $leftover--;
}

// The public key, this is an example.
$key =             "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkFywgrx2fPXL/CPS1Gi5/a7zoTfWV9fqrhsJMzPqqC0CnLBBkg8VUiwnBVsMvhJrUT1mLvyHx5H9dobTVlE+aoxcsDRa1Yc9OAUKHspxrPswRW6/Yn85YAghOSBZfgPoXD3Q0Ng5jkJUoBUHOBtFHDUeAHi5av36iJ8dTQTSaOyAXKGdB88TOzre5cpnj5oDi/JSJ0bCJx7cgcBAO1TvOVuFMTXhygDyEVh6 o2nn8+qdDlEPXf+m+dxdkH3zWkkWjY4OittIpaHj2n8ihgPqwMPZFH1CXkoTjoSh4Fo7KtUAaAa4gt5w/thauozG25G    1s2XSigNgCDDvg4S8awmtewIDAQAB";
$key = wordwrap($key, 65, "\n", true);
$key = <<<EOF
-----BEGIN PUBLIC KEY-----
$key
-----END PUBLIC KEY-----
EOF;

// Encrypt the string.
openssl_public_encrypt($str, $encrypted, $key);

// Establish a connection to Votifier.
$socket = fsockopen("50.98.149.40", "8192", $errno, $errstr, 2);

if (!$socket) {
    die("Failed to connect to Votifier.");
}

// Send the contents of the encrypted block to Votifier.
fwrite($socket, $encrypted);
?>

おそらく暗号化が正しくないために、Votifierが接続を切断しているようです。

4

1 に答える 1

0

表示されるエラーは ですconnection refused。これは、IP アドレスまたはポートが正しくないことを意味します。これらが正しいことを確認する必要があります。ポートを転送したと述べたので、コードが機能しない別の理由は、同じルーターの背後でスクリプトと minecraft サーバーを実行していて、ルーターがNAT ループバックをサポートしていないことです。スクリプトに何か問題がありますが、ルーターには機能がありません。

コードにはさらにエラーがあります。残りを計算するときは、量を 2 で割るべきではなく、代わりに計算して$leftover = (256 - strlen($str));、出力ブロックが 256 よりも小さくなり、Votifer プロトコルの一部の実装にバグが発生するのを防ぎます。デフォルトの Votifer プラグインはそうではありません。入力に対するすべてのプロトコル制限をチェックします。

于 2016-01-25T09:42:30.953 に答える