BlogCMS – Jak opravit XML RPC (Windows Live Writer)

Napsal dne Zář 2, 2007 na Blog, Security | 0 komentářů

Pokud používáte Blog CMS (či Nucleus CMS) a nefunguje vám XMLRPC (sloužící například ke vzdálenému publikování přes externí editory), pak mám pro vás návod na opravu.

Konkrétně Windows Live Writer hlásí při pokusu o připojení chybu:

Invalid server response – The response to the blogger.getUserBlogs method received from weblog server was invalid.

Když se kouknete do logů či paketů, pak zjistíte, že žádná data nebyla serverem přijata. Nejdřív jsem podezříval bug v PHP 4.2.2 ohledně $HTTP_RAW_POST_DATA, nicméně pokusy o opravu nepomohly. Nebudu vás dále napínat, zde je návod na opravu BlogCMS 4.2.1 (a starších) při neúspěšném pokusu o přístup k XMLRPC (přes /admin/xmlrpc/server.php):

1) zazálohujte si soubory (aspoň ty co přepisujete) a databázi
2) stáhněte si opravu na XMLRPC (přepište soubory xmlrpc.inc.php a xmlrpcs.inc.php v /admin/libs)
3) ve fixu je ještě jeden adresář, který tam přidejte

Pokud máte Live writera, pak je tu ještě jeden trik. Ono totiž když přidáte blog, tak se (bohužel správně 😉 identifikuje jako BlogCMS. Ale by to byl Movable type nebo metaWeblog, pak by uměl víc věci. Proto:

1) před přidáním nového blogu v Live Writeru přejmenujte adresář "admin" na například "admin-x"*
2) ve Writeru zadejte název stránky, login a heslo
3) Writer blog nedetekuje a vy ručně vyberte Movable Type
4) do URL zadejte ..vasi_cestu_k_server/admin/xmlrpc/server.php
5) před odesláním přejmenujte adresář "admin-x" zpět na původní název
6) dokončete průvodce a případně přidejte FTP nastavení na upload obrázků
*můžete přejmenovat i celou složku "www" na něco jiného. Hlavní je, aby Writer onu adresu při detekci nenašel.

Pokud chcete o problému vědět víc, zkuste následujících pár stránek.

Live Writer má další betu (nebo spíše verzi 2). Je pěkná a umí plno věcí. Jednou z vlastností je i padání při pokus o vložení obrázku:

Takže doporučuji zůstat u předchozí verze a nedostatky vyřešit doplněním přes pluginy. No, ale možná vám to chybu ani nehodí a vy budete moci vesele Writer2 používat.

Pokud vám nejde z adresy http://writer.live.com získat, pak si změňte jazyk v prohlížeči z CS na ENG (on Microsoft rád ukazuje každému něco jiného).

PS: Vypadá to, že problém s obrázky bude jen u mě, zkusím si s tím ještě trochu "pohrát".

Další problémy jsou řešeny zde.

Zkoušel jsem i další modifikace kódu. V mém případě sice nepomohly (chyba byla jinde). Ale pokud máte problém s PHP 5.2.2, zkuste následující triky:

/* ADDING FIX: see: http://bugs.php.net/bug.php?id=41293 */
if (!isset($HTTP_RAW_POST_DATA)){
$HTTP_RAW_POST_DATA = file_get_contents('php://input');
}

$GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents("php://input");
$HTTP_RAW_POST_DATA = file_get_contents('php://input');

if (!isset($GLOBALS['HTTP_RAW_POST_DATA'])){
$GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents('php://input');
}

if ( !isset( $HTTP_RAW_POST_DATA ) ) {
$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
}

// fix for mozBlog and other cases where '<?xml' isn't on the very first line
if ( isset($HTTP_RAW_POST_DATA) )
$HTTP_RAW_POST_DATA = trim($HTTP_RAW_POST_DATA);

//if (isset($HTTP_RAW_POST_DATA)) {
$data = $HTTP_RAW_POST_DATA;
} else {
$data = implode("\r\n", file('php://input'));
}

Zanachat odpověď