This commit is contained in:
2019-02-06 00:49:12 +03:00
commit 8dbb1bb605
4796 changed files with 506072 additions and 0 deletions

305
local/htdocs/lj-gate/index.bml Executable file
View File

@@ -0,0 +1,305 @@
<?page
title=>LJR::Gate
body<=
<?_code
LJ::set_active_crumb('export_live');
return;
_code?>
<?_code
{
use strict;
use vars qw(%POST %GET);
use LJR::Gate;
use LJR::Distributed;
use GD::Simple;
my @font_names = ('Tiny', 'Small', 'MediumBold', 'Large', 'Giant');
my @color_names = GD::Simple->color_names;
my $err = sub {
my $txt = shift;
return "<?inerr " . $txt . " inerr?><br/>";
};
my $update_export_settings = sub {
my ($iremote) = @_;
my $ret;
my $e;
my $dbh = LJ::get_db_writer();
if (!$dbh) {
return $err->("Can't get database writer!");
}
my $dbr = LJ::get_db_reader();
if (!$dbr) {
return $err->("Can't get database reader!");
}
my $iserver;
if ($POST{'server'} eq "lj") {
$iserver = "www.livejournal.com";
}
# elsif ($POST{'server'} eq "gj") {
# $iserver = "www.greatestjournal.com";
# }
else {
$ret .= $err->("Invalid server specified!");
$e = 1;
}
my $iuser = LJ::canonical_username($POST{'username'});
if (!$iuser) {
$ret .= $err->("Invalid user name!");
$e = 1;
}
my $ipassword = $POST{'password'};
unless (LJ::is_ascii($ipassword) && $ipassword ne "") {
$ret .= $err->("Invalid password!");
$e = 1;
}
return $ret if $e;
my $xmlrpc = LJR::Gate::Authenticate ($iserver, $iuser, $ipassword);
print STDERR
"Error in LJR::Gate::Authenticate for user " . $iuser . "\n" . $xmlrpc->{'err_text'} . "\n"
if $xmlrpc->{'err_text'};
return $err->($xmlrpc->{'err_text'}) if $xmlrpc->{'err_text'};
my $ru = LJR::Distributed::get_remote_server($iserver);
return $err->($ru->{"errtext"}) if $ru->{"err"};
$ru->{'username'} = $iuser;
$ru = LJR::Distributed::get_cached_user($ru);
return $err->($ru->{"errtext"}) if $ru->{"err"};
my $r = LJR::Distributed::update_export_settings($iremote, $ru->{'ru_id'}, $ipassword);
return $r->{'errtext'} if $r->{'err'};
my $cu = LJ::load_user($iremote, 1);
return $err->("Error logging export modification for [$iremote]!") unless $cu;
$cu->log_event('ljr_export_configured', {
remote => $cu,
actiontarget => $ru->{'ru_id'},
method => 'web',
});
return;
};
my $cancel_export = sub {
my ($iremote) = @_;
my $dbr = LJ::get_db_reader();
return $err->("Can't get database reader!") unless $dbr;
my $dbh = LJ::get_db_writer();
return $err->("Can't get database writer!") unless $dbh;
my $sth1;
$sth1 = $dbr->prepare("SELECT * FROM ljr_export_settings WHERE user=?");
$sth1->execute($iremote);
my $r = $sth1->fetchrow_hashref;
$sth1 = $dbr->prepare("DELETE FROM ljr_export_settings WHERE user=?");
$sth1->execute($iremote);
$sth1->finish;
my $cu = LJ::load_user($iremote, 1);
return $err->("Error logging export modification for [$iremote]!") unless $cu;
$cu->log_event('ljr_export_unconfigured', {
remote => $cu,
actiontarget => $r->{'ru_id'},
method => 'web',
});
return;
};
my $export_options = sub {
my ($iremote) = @_;
my %h_font_names;
@h_font_names{map {"gd" . $_ . "Font"} @font_names} = ();
if (! exists $h_font_names{$POST{'font_name'}}) {
return $err->("Invalid font name: " . $POST{'font_name'});
}
my %h_color_names;
@h_color_names{@color_names} = ();
if (! exists $h_color_names{$POST{'font_color'}}) {
return $err->("Invalid color name: " . $POST{'font_color'});
}
my $dbh = LJ::get_db_writer();
return $err->("Can't get database writer!") unless $dbh;
my $sth1;
$sth1 = $dbh->prepare("UPDATE ljr_export_settings SET update_time=NOW(), last_status='OK: updated options', font_name=?, font_color=? WHERE user=?");
$sth1->execute($POST{'font_name'}, $POST{'font_color'}, $iremote);
$sth1->finish;
return;
};
return LJ::server_down_html() if $LJ::SERVER_DOWN;
my $remote = LJ::get_remote();
return LJ::bad_input("You must be logged in to access this page.")
unless $remote;
my $authas = $GET{'authas'} || $remote->{'user'};
my $u = LJ::get_authas_user($authas);
return LJ::bad_input("You could not be authenticated as the specified user.")
unless $u;
my $iremote = $remote->{'user'};
return $LJ::MSG_READONLY_USER if $u->readonly;
my $ret;
$ret = "<?h1 Настройки гэйта пользователя " . $remote->{'user'} . " h1?>\n<br>";
my $iremote_is_protected = 0;
foreach (@LJ::PROTECTED_USERNAMES) {
if ($iremote =~ $_) {
$iremote_is_protected = 1;
}
}
if ($iremote_is_protected) {
$ret .= $err->("Invalid local user: export not allowed!");
return $ret;
}
if (LJ::did_post()) {
if ($POST{'cancel_export'}) {
$ret .= $cancel_export->($iremote);
return BML::redirect("index.bml");
}
elsif ($POST{'export_options'}) {
$ret .= $export_options->($iremote);
return BML::redirect("index.bml") unless $ret;
}
else {
$ret .= $update_export_settings->($iremote);
}
}
my $dbh = LJ::get_db_writer();
if (!$dbh) {
return $err->("Can't get database writer!");
}
my $dbr = LJ::get_db_reader();
if (!$dbr) {
return $err->("Can't get database reader!");
}
my $sth1;
$sth1 = $dbr->prepare("SELECT * FROM ljr_export_settings WHERE user=?");
$sth1->execute($iremote);
my $r = $sth1->fetchrow_hashref;
$sth1->finish;
if (! $r->{'enabled'}) {
$ret .= "<form action='index.bml' method='post'>";
$ret .= "<table border=0><tr valign='top'><td>Гэйтовать журнал на сервер:</td><td>";
$ret .= "<select name='server' id='server'>";
$ret .= "<option value='lj' id='lj'>http://www.livejournal.com</option>";
# $ret .= "<option value='gj' id='gj'>http://www.greatestjournal.com</option>";
$ret .= "</select>";
$ret .= "<br/><br/></td></tr>";
$ret .= "<tr valign='top'><td>Имя пользователя:</td><td>";
$ret .= LJ::html_text({
'name' => 'username',
'value' => $POST{'username'},
'size' => '15',
'maxlength' => '15',
});
$ret .= "<br/><br/></td></tr>";
$ret .= "<tr valign='top'><td>Пароль:</td><td>";
$ret .= LJ::html_text({
'name' => 'password',
'value' => $POST{'password'},
'size' => '31',
'maxlength' => '31',
'type' => 'password',
});
$ret .= "<br/><br/></td></tr>";
$ret .= "<tr><td>Статус (" . $r->{'update_time'} .")</td><td>" . $r->{'last_status'} . "</td></tr>";
$ret .= "<tr><td><br/></td></tr>";
$ret .= "</table>";
$ret .= "<input type=submit value='&nbsp;Начать гэйтование&nbsp;'>";
}
else {
my $ru;
$ru = LJR::Distributed::get_cached_user({ 'ru_id' => $r->{'ru_id'}});
$ru = LJR::Distributed::get_remote_server_byid($ru);
$ret .=
"<br/>Ваш журнал в данный момент гэйтуется в <a href=" .
$ru->{'servername'} . "/users/" . $ru->{'username'} .
">" . $ru->{'username'} . "</a>"
;
$ret .= "<br/><br/><table border=0>";
$ret .= "<tr><td>Статус (" . $r->{'update_time'} .")</td><td>" . $r->{'last_status'} . "</td></tr>";
$ret .= "<tr><td><br/></td></tr>";
$ret .= "<tr><td><form action='index.bml' method='get'><input type=submit value='&nbsp;Обновить&nbsp;'></form></td>";
$ret .= "<td valign=top><form action='index.bml' method='post'>";
$ret .= "<input type=submit value='&nbsp;Прекратить гэйтование&nbsp;'>";
$ret .= "<input type=hidden name='cancel_export' value='true'>";
$ret .= "</td></tr></table>";
}
$ret .= "</form>";
my $dbr = LJ::get_db_reader();
return $err->("Can't get database reader!") unless $dbr;
my $sth1;
$sth1 = $dbr->prepare("SELECT font_name, font_color FROM ljr_export_settings WHERE user=?");
$sth1->execute($iremote);
my ($cname, $ccolor) = $sth1->fetchrow_array;
$sth1->finish;
$ret .= "<form action='index.bml' method='post'><input type=hidden name='export_options' value='true'><table>";
$ret .= "<tr><td colspan=2><strong>Количество комментариев</strong></td></tr>";
$ret .= "<tr><td>Размер шрифта:</td><td><select name='font_name'>";
foreach my $f (@font_names) {
$ret .= "<option value='gd${f}Font' " . ("gd${f}Font" eq $cname ? "selected='yes'" : "") .">$f</option>";
}
$ret .= "</select></td></tr>";
$ret .= "<tr><td>Цвет шрифта:</td><td><select name='font_color'>";
foreach my $c (@color_names) {
if ($c !~ /^gradient/) {
$ret .= "<option value='$c' " . ($c eq $ccolor ? "selected='yes'" : "") . ">$c</option>";
}
}
$ret .= "</select></td></tr>";
$ret .= "<tr><td colspan=2><input type=submit value='Сохранить'></td></tr>";
$ret .= "</table></form><br/>";
$ret .= "См также: <a href=lj-gate-faq.bml>Частые вопросы про гейт</a>";
return $ret;
}
_code?>
<=body
page?>

View File

@@ -0,0 +1,102 @@
<?page
title=><?_ml .title _ml?>
body<=
<?_code
use strict;
use vars qw(%GET %POST);
my $ret;
$ret .= <<'$LJR$FAQ';
<?h1 Часто задаваемые вопросы про гейт h1?>
<?h2 1) Что такое гейт?</strong> h2?>
<p>
Гейт &#151; это программа, шлюз между lj.rossia.org и Живым Журналом,
автоматически копирующая ваши записи из дневника на LJR
в дневник на www.livejournal.com. Копироваться будут только те записи,
которые вы сделали после того, как настроили гейтование своего дневника.
Старые записи будут копироваться, только если вы их отредактируете
(с установленным атрибутом backdated).
</p><br/>
<?h2 2) Зачем это нужно? h2?>
<p>
Гейт можно использовать, если вы не хотите пользоваться
дневником на www.livejournal.com, но также не хотите,
чтобы ваши друзья теряли с вами связь. Гейт позволяет
удовлетворить обе эти потребности одновременно.
</p><br/>
<?h2 3) Как настроить гейтование своего журнала? h2?>
<p>
Нужно перейти на <a href=/lj-gate/>страницу настройки гейта</a>,
ввести ваше имя пользователя livejournal.com и пароль
и нажать на кнопку "Начать гейтование".
На этой же страничке вы можете настроить размер и цвет
изображения с количеством комментариев (из технических соображений
количество комментариев в записи на livejournal.com реализовано
в виде изображения).
</p><br/>
<?h2 3) Не воспользуетесь ли вы моим паролем к LiveJournal.com? h2?>
<p>
Мы не воспользуемся Вашим паролем.
<br/><br/>
Мы (администрация LJR) обязуемся сохранять в секрете
всю частную информацию, хранящуюся на нашем сервере, кроме
случаев, предусмотренных законом РФ. За выполнением
администрацией ее обязательств наблюдает <A HREF="http://lj.rossia.org/userinfo.bml?user=ljr_popechiteli"> Попечительский
Совет, </a> состоящий из известных деятелей
русской Сети. С жалобами и подозрениями в отношении
администрации Вы можете обращаться в <a href=http://lj.rossia.org/community/ljr_zhaloby/>соответствующее сообщество</a>,
либо лично к участникам <A HREF="http://lj.rossia.org/userinfo.bml?user=ljr_popechiteli">Попечительского Совета</a>.
</p><br/>
<?h2 4) Как гейтуются подзамочные и приватные записи? h2?>
<p>
При передаче записи на сервер livejournal.com сохраняются
практически все атрибуты записи: уровень безопасности,
время, current music, current mood, теги, иконка пользователя
(на livejournal у вас должна существовать иконка пользователя
с таким же именем, как и на LJR).
</p><br/>
<?h2 5) Как записи появляются в ЖЖ? h2?>
<p>
Если никакой ошибки в процессе гейтования не произошло,
запись в ЖЖ должна появиться сразу же. Если же произошла
какая-то ошибка и запись появилась в LJR, но не появилась в ЖЖ,
то узнать об ошибке можно на <a href=/lj-gate/>странице настроек гейта</a>
в поле "Статус". В этом же поле выводится информация
и об успешно проведенном гейтовании.
</p>
<?h2 6) Как мои друзья смогут оставлять мне комментарии? h2?>
<p>
Во-первых, вы можете предложить вашим друзьям зарегистрироваться на LJR
и оставлять вам комментарии под логином LJR (никто не заставляет их
вести дневник на LJR!).<br/>
<br/>
Во-вторых, они могут воспользоваться технологией OpenID:
при оставлении комментария в LJR ваш друг может подписаться
своим именем пользователя с livejournal.com (для этого
он должен быть залогиненным на livejournal.com).
</p>
<?h2 7) Как можно разрешить комментарии к гейтованным записям в ЖЖ? h2?>
<p>
Можно отредактировать запись в ЖЖ, изменив поле "Настройки комментариев"
с "Отключены" на "Как во всём журнале".
</p>
$LJR$FAQ
return $ret;
_code?>
<=body
page?>

View File

@@ -0,0 +1,217 @@
<html>
<head>
<title>
Чаво по шлюзу из LJR в LJ (lj.rossia.org/lj-gate)
</title>
<body>
<h1>ЧаВо по шлюзу из LJR в LJ</h1>
<a href="#whatis">
<p><b>В.</b>Что такое lj-gate?</a>
<a href="#export">
<p><b>В.</b> О, значит, я смогу скопировать в ЖЖ всё, что успел наваять в LJR?</a>
<a href="#alien">
<p><b>В.</b> А могу ли я копировать в ЖЖ чей-либо журнал, кроме своего?</a>
<a href="#2journals">
<p><b>В.</b> А могу ли я гейтовать два дневника на LJR в один дневник на
LiveJournal.com (один дневник на LJR в два дневника на LiveJournal,
etc. etc.)?</a>
<a href="#gate">
<p><b>В.</b> Что мне надо сделать, чтобы мои записи автоматически копировались в
мой старый дневник на LiveJournal?</a>
<a href="#password">
<p><b>В.</b> А почему это я должен отдавать вам пароль от своего ЖЖ?</a>
<a href="#protected">
<p><b>В.</b> А как у lj-gate с поддержкой ограничения доступа? Не станут ли мои
подзамочные и приватные записи на LJR доступны в ЖЖ всем желающим?</a>
<a href="#fear">
<p><b>В.</b> Я ввела пароли от обоих дневников, нажала на кнопку, а теперь волнуюсь:
не произойдёт ли с моим ЖЖ что-нибудь страшное?</a>
<a href="#pause">
<p><b>В.</b> Я написал запись, а она не появилась в ЖЖ! Шлюз не работает!</a>
<a href="#problems">
<p><b>В.</b> Прошло уже полчаса, а запись по-прежнему не скопирована.</a>
<a href="#comments">
<p><b>В.</b> Ой! А в записях-копиях на ЖЖ запрещены комменты! Нельзя ли их разрешить?</a>
<a href="#openid">
<p><b>В.</b> А как же мои друзья из ЖЖ смогут оставлять комментарии под
собственным именем?</a>
<a href="#stop">
<p><b>В.</b> Гейт работал, а теперь вдруг перестал!</a>
<a href="#new_password">
<p><b>В.</b> А если я поменял пароль, что мне делать?</a>
<a href="#no_translation">
<p><b>В.</b> Я хочу временно прекратить трансляцию. Как это сделать?</a>
<a href="#editing">
<p><b>В.</b> Что делать, если сообщение не скопировалось? У меня нет возможности (или желания)
копировать его вручную.</a>
<a href="#community">
<p><b>В.</b> Можно ли копировать записи в комьюнити?</a>
<a href="#tos">
<p><b>В.</b> Как здорово! Значит, я могу копировать записи из дневника на LJR в
LJ, и мне за это ничего не будет?</a>
<a href="#other_sites">
<p><b>В.</b> А можно ли копировать записи на другой блог-сайт (НПЖ,
GreatestJournal, liveinternet.ru)?</a>
<hr>
<p><a name="whatis">
<p><b>В.</b>Что такое lj-gate?</a>
<p><b>О.</b> Это программа&nbsp;&mdash; шлюз между lj.rossia.org и Живым
Журналом, автоматически копирующая ваши записи на LJR в дневник на
сайте www.livejournal.com.
<p><a name="export">
<p><b>В.</b> О, значит, я смогу скопировать в ЖЖ всё, что успел наваять в LJR?</a>
<p><b>О.</b> К сожалению, нет: копироваться будут только те записи, которые вы
сделали после того, как вы настроили шлюзование своего дневника. А
старые постинги&nbsp;&mdash; только если вы их отредактируете (и с
атрибутом backdated, естественно).
<p>Мы планируем реализовать обратную возможность&nbsp;&mdash; импорт в
LJR ваших записей с LiveJournal.com.
<p><a name="alien">
<p><b>В.</b> А могу ли я копировать в ЖЖ чей-либо журнал, кроме своего?</a>
<p><b>О.</b> Нет. То есть, конечно, можете. Если знаете пароль от этого
журнала. И если хозяин журнала не против.
<p><a name="2journals">
<p><b>В.</b> А могу ли я гейтовать два дневника на LJR в один дневник на
LiveJournal.com (один дневник на LJR в два дневника на LiveJournal,
etc. etc.)?</a>
<p><b>О.</b> Нет. Если это окажется актуальным для многих пользователей, мы
попробуем добавить такую возможность.
<p><a name="gate">
<p><b>В.</b> Что мне надо сделать, чтобы мои записи автоматически копировались в
мой старый дневник на LiveJournal?</a>
<p><b>О.</b> Зайти на <a href="http://lj.rossia.org/lj-gate/rlj2lj.bml">эту<a>
страницу, в двух верхних полях ввести свой логин и пароль на LJR, в
двух нижних&nbsp;&mdash; логин и пароль от своего ЖЖ. Нажать на кнопку
"Submit" (или "Отправить запрос", или ещё как-нибудь&nbsp;&mdash; это
зависит от вашего браузера; в общем, кнопка там одна, разберётесь).
<p><a name="password">
<p><b>В.</b> А почему это я должен отдавать вам пароль от своего ЖЖ?</a>
<p><b>О.</b> Никто никому ничего не должен. Не доверяете нам&nbsp;&mdash; не
пользуйтесь lj-gate.
<p><a name="protected">
<p><b>В.</b> А как у lj-gate с поддержкой ограничения доступа? Не станут ли мои
подзамочные и приватные записи на LJR доступны в ЖЖ всем желающим?</a>
<p><b>О.</b> Уровни доступа "для друзей" и "для себя"
поддерживаются. Относительно записей, которые делаются для
определённых групп друзей, мы ничего обещать не можем.
<p><a name="fear">
<p><b>В.</b> Я ввела пароли от обоих дневников, нажала на кнопку, а теперь волнуюсь:
не произойдёт ли с моим ЖЖ что-нибудь страшное?</a>
<p><b>О.</b> Не должно. Записи, которые вы пишeте на LJR, будут теперь появляться
и в вашем ЖЖ, вот и всё.
<p><a name="pause">
<p><b>В.</b> Я написал запись, а она не появилась в ЖЖ! Шлюз не работает!</a>
<p><b>О.</b> Записи копируются с небольшой задержкой, до десяти минут. Если вы не
видите копию вашей записи в ЖЖ через минуту или две, начинать
паниковать ещё рано.
<p><a name="problems">
<p><b>В.</b> Прошло уже полчаса, а запись по-прежнему не скопирована.</a>
<p><b>О.</b> Если запись была подзамочной, проверьте, залогинены ли вы в ЖЖ. Если
залогинены, а записи всё-таки не видно, значит, она действительно не
была скопирована. К сожалению, такое случается, и не всегда по нашей
вине. Попробуйте написать ещё одну запись. Если не скопируется и она,
значит, шлюзование вашего дневника действительно не работает. В этом
случае напишите постинг в <lj comm="ljr_bugs" site="lj.rossia.org" />
и мы постараемся вам помочь.
<p><a name="comments">
<p><b>В.</b> Ой! А в записях-копиях на ЖЖ запрещены комменты! Нельзя ли их разрешить?</a>
<p><b>О.</b> Можно. Отредактировав запись в ЖЖ вручную. Но сначала подумайте:
нужно ли вам, чтобы обсуждение вашего постинга велось в двух никак не
связанных между собой местах?
<p>Впрочем, мы планируем добавить возможность включения комментариев в
записи-копии в качестве опции.
<p><a name="openid">
<p><b>В.</b> А как же мои друзья из ЖЖ смогут оставлять комментарии под
собственным именем?</a>
<p><b>О.</b> Вообще-то для этого существует штука под названием <a
href="http://openid.net/">OpenID</a>. Проблема в том, что она ещё
разрабатывается, и работает не всегда. В данный момент (02.08.2005)
пользователи всех блог-сайтов, поддерживающий OpenID (НПЖ,
GreatestJournal и другие сайты на этих движках достаточно свежих
версий) могут оставлять комментарии от своего имени. Кроме, увы,
пользователей самого LiveJournal.com. К сожалению, решение этой
проблемы зависит не от нас: у авторов LJ довольно экзотические
представления об обратной совместимости.
<p><a name="stop">
<p><b>В.</b> Гейт работал, а теперь вдруг перестал!</a>
<p><b>О.</b> А вы, случаем, не меняли пароль ни к одному из журналов? Если
нет&nbsp;&mdash; попробуйте написать ещё одну запись, вдруг проблемы
были временными и уже решены? Если опять ничего не
получится&nbsp;&mdash; напишите в <lj comm="ljr_bugs"
site="lj.rossia.org" />
постинг с описанием проблемы.
<p><a name="new_password">
<p><b>В.</b> А если я поменял пароль, что мне делать?</a>
<p><b>О.</b> Пока мы не перешли на более разумную версию гейта&nbsp;&mdash;
только удалить трансляцию <a href="
http://lj.rossia.org/lj-gate/rlj_delete.bml">здесь</a>, введя
(внимание!) <b>старый</b> пароль от вашего журнала, а потом добавив её
заново. Учтите, что после этого редактирование старых (то есть
скопированных до смены пароля) записей
поддерживаться не будет.
<p><a name="no_translation">
<p><b>В.</b> Я хочу временно прекратить трансляцию. Как это сделать?</a>
<p><b>О.</b> Только удалить её, а потом настроить заново. Извините.
<p>Скорее всего, в будущем мы добавим возможность прекращения трансляции без удаления пользователя.
<p><a name="editing">
<p><b>В.</b> Что делать, если сообщение не скопировалось? У меня нет возможности (или желания) копировать его вручную.</a>
<p><b>О.</b> Отредактируйте оригинал записи в LJR (ничего реально менять не надо,
достаточно зайти на страницу редактирования записи, а потом сохранить
эту запись). По идее, после этого запись должна скопироваться в ЖЖ.
<p><a name="community">
<p><b>В.</b> Можно ли копировать записи в комьюнити?</a>
<p><b>О.</b> Пока нет. Мы работаем над этим.
<p><a name="tos">
<p><b>В.</b> Как здорово! Значит, я могу копировать записи из дневника на LJR в
LJ, и мне за это ничего не будет?</a>
<p><b>О.</b> Не всё так радужно. <a href="http://www.livejournal.com/legal/tos.bml">ToS</a> (пользовательское соглашение) ЖЖ, в разделе
XVI, "Member conduct", содержит такой пункт:
<blockquote>
You agree to NOT use the Service to:<br>
&hellip;<br>
14.Use LiveJournal.com as a forwarding service to another website;
</blockquote>
<p>Кто их знает, мало ли что они имели в виду. Мы надеемся на вменяемость
администрации и Abuse Team ЖЖ (по факту на LiveJournal.com существует
масса гейтуемых дневников), но обещать вам ничего не можем.
<p><a name="other_sites">
<p><b>В.</b> А можно ли копировать записи на другой блог-сайт (НПЖ,
GreatestJournal, liveinternet.ru)?</a>
<p><b>О.</b> Нет. Если это окажется актуально большому количеству пользователей,
мы добавим такую возможность.
<p>Впрочем, возможно, вы сможете транслировать ваш дневник на другой сайт через RSS-поток, доступный по адресу http://lj.rossia.org/users/username/data/rss, где username&nbsp;&mdash; ваш ник на LJR.
</body>
</html>