2012-01-28 4 views
4

내가하려는 것은 내 웹 사이트에 Votifier 플러그인에 대한 지원을 추가하는 것입니다.fsockopen을 사용하여 서버에 연결 - 연결이 거부되었습니다

나는 Minecraft 서버에 대해 올바른 포트를 전달하고 테스트를 거쳐 열려 있는지 확인합니다. 또한 Votifier 플러그인이 올바르게 작동하는지 확인하려면 Minestatus을 사용하십시오.

그러나 서버에 연결하기 위해 찾은 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가 연결을 끊는 것 같습니다.

+0

공유 호스팅을 사용하는 경우, 아웃 바운드 포트 8142가 차단 될 수 있습니다. 예를 들어, GoDaddy 공유 호스팅은 443과 80의 fsockopen 만 허용합니다. – Drakes

답변

0

오류는 connection refused이며 이는 ip 주소 또는 포트가 잘못되었음을 의미합니다. 이것들은 정확함을 확인해야합니다. 당신이 포트를 포워딩했다는 것을 말했기 때문에 코드가 작동하지 않는 또 다른 이유는 동일한 라우터 뒤에 스크립트와 미니 크래프트 서버를 실행하고 있고 라우터가 NAT Loopback을 지원하지 않는다는 것입니다. 스크립트에 문제가 있지만 라우터에 기능이 없습니다.

코드에 더 많은 오류가 있습니다. 남은 부분을 계산할 때 양을 2로 나누지 말고 대신에 $leftover = (256 - strlen($str));으로 계산하여 출력 블록이 256보다 작지 않도록하고 Votifer 프로토콜의 일부 구현을 기본 Votifer 플러그인은 입력에 대한 모든 프로토콜 제한을 검사하지 않습니다.