Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Портал > Установка

Ответ
 
Опции темы Опции просмотра
iltmpz вне форума iltmpz
Младший участник


| Цитировать Старый #1 10-04-2010, 04:31

Поставил версию 1.6.2 отсюда: http://www.runcms.ru/modules/files/showfile.php?lid=524
Кроме того, поставил модули:
photo: http://www.runcms.ru/modules/files/showfile.php?lid=477
myarticles: http://www.runcms.ru/modules/files/showfile.php?lid=460
запустил, стал тестировать. Оказалось, что практически каждый тестируемый элемент содержит ошибку. Не знаю, зачем настолько сырую версию выложили в общий доступ, но во всяком случае я взялся за исправление ошибок.
Мой фикс не содержит никаких "красивостей" - только исправление того, что работает не так, как предполагалось, плюс максимально доступное мне повышение безопасности.
Пишу на случай, если вдруг кто из новичков решит ставить систему "с нуля". Я потратил на это тестирование 2 месяца - может, кому-нибудь это поможет сэкономить время. Все исправления - в одном месте.
Выложу список в виде diff-файла с комментариями (если кто решит это применить командой patch - сначала уберите мои комментарии, начинающиеся с "#").
PHP код:
# защита от sql-инъекций: http://www.runcms.ru/forum/showthread.php?t=10212
diff -r orig/class/class_sql_inject.php my/class/class_sql_inject.php
95,133c95,143
<         $sRQ = strtolower($sRQ);
<         $this->rq = $sRQ;
<         $aValues = array();
<         $aTemp = array(); // temp array
<         $aWords = array(); //
<         $aSep = array(' and ',' or '); // separators for detect the
<         $sConditions = '(';
<         $matches = array();
<         $sSep = '';
<         // is there an attempt to unused part of the rq?
<         if (is_int((strpos($sRQ,"#")))&&$this->_in_post('#')) return $this->detect();

<         ## Dogman Begin
< //        if (ereg("union select",$sRQ) || ereg("union all",$sRQ))   return $this->detect();
<         if (stristr($sRQ,'/*') || stristr($sRQ,'*/')) return $this->detect();
<         if (stristr($sRQ,'%20union') || stristr($sRQ,'union%20'))   return $this->detect();
<         if (stristr($sRQ,'/union') || stristr($sRQ,'union/'))   return $this->detect();
<         if (ereg("exec",$sRQ) || ereg("cmd",$sRQ))   return $this->detect();
<         if (ereg("concat",$sRQ)) return $this->detect();
<         ## etwas unglьcklich mit den "--" , das geht vielleicht noch besser...

<         ## I'm not happy with this "--"; could be improved....
<         if (ereg("--",$sRQ) || ereg("xp_",$sRQ))   return $this->detect();
<         ## Dogman end

<         // is there a attempt to do a 2nd SQL requete ?
<         ## Tja, leider kommt in einem Text auch schon mal mehr als
<         ## nur ein Semikolon vor...
<         ## Hier muss also noch nachgebessert werden...

<         ## There can be more than just one semicolon...

<         if (is_int(strpos($sRQ,';'))){
<             $aTemp = explode(';',$sRQ);
<             if ($this->_in_post($aTemp[1])) return $this->detect();
<         }


<         $aTemp = explode(" where ",$sRQ);
---
>     // filter rewritten by LARK
>         $this->rq = $sRQ;
>         $sRQ = strtolower(urldecode($sRQ)); // URL Decode
>         $sRQ = str_replace( chr(0) , '' , $sRQ ) ;  // replace NullByte
>         $aValues = array();
>         $aTemp = array(); // temp array
>         $aWords = array(); //
>         $aSep = array(' and ',' or '); // separators for detect the
>         $sConditions = '(';
>         $matches = array();
>         $sSep = '';
>         
>         $sql_inject_patterns = array(
>         '--',
>         '\/\*',
>         '\*\/',
>         '\'',
>         '"',
>         '(union([\s\+\(\n\r\t]+)(select|all))',
>         '[\s\+\n\r\t\(]+select[\s\+\n\r\t\)\'"`]+',
>         '[\s\+\n\r\t\)`]+where[\s\+\n\r\t\(`]*',
>         '[\s\+\n\r\t\)\'"`]+(from|regexp|rlike|delete|update|insert|truncate|drop|create|rename)[\s\+\n\r\t\(`]+',
>         'exec',
>         'cmd',
>         'xp_',
>         'information_schema\.',
>         '[\s\+\n\r\t\)\'"`]*(or|and)[\s\+\n\r\t\(\'"]+(.*?)[\s\+\n\r\t\'"]*[=<>]+[\s\+\n\r\t\'"]*(.*?)',
>         '(concat|load_file|mid|like|ord|ascii|lower|lcase|find_in_set|substring|benchmark|md5)[\s\+\n\r\t]*\('
>         );
>                
>         // is there an attempt to unused part of the rq?
>         if (is_int((strpos($sRQ,"#")))&&$this->_in_post('#')) return $this->detect();
>         
>         if (preg_match('/' . implode('|', $sql_inject_patterns) . '/is', $sRQ, $regs)) return $this->detect();
>         
>         // is there a attempt to do a 2nd SQL requete ?
>         ## Tja, leider kommt in einem Text auch schon mal mehr als
>         ## nur ein Semikolon vor...
>         ## Hier muss also noch nachgebessert werden...

>         ## There can be more than just one semicolon...

>         if (is_int(strpos($sRQ,';'))){
>             $aTemp = explode(';',$sRQ);
>             if ($this->_in_post($aTemp[1])) return $this->detect();
>         }

>         $aTemp = preg_split('/[\s\+\)]+where[\s\+\(]*/i', $sRQ, -1, PREG_SPLIT_NO_EMPTY);  
>     
212c222
< ?>
\ No newline at end of file
---
> ?>
# защита хеша в cookies при авторизации: http://www.runcms.ru/forum/showthread.php?t=10424
# не показывает новые личные сообщения: http://www.runcms.ru/forum/showthread.php?t=10481
diff -r orig/class/sessions.class.php my/class/sessions.class.php
136c136
<         $this->hash = rc_shatool($this->pass.$this->salt);
---
>         $this->hash = rc_shatool($this->pass.$this->salt. rc_shatool($xoopsConfig['dbhost'] . $xoopsConfig['dbuname'] . $xoopsConfig['dbpass'] . $xoopsConfig['dbname']));
238,240c238,251
<         $sql = "SELECT u.*, s.hash, s.online FROM ".RC_USERS_TBL." u
<         LEFT JOIN ".RC_SESS_TBL." s ON u.uid=s.uid
<         WHERE s.uid=".$uid." AND s.hash='".$uhash."'";
---
>          $module = XoopsModule::getByDirname('messages');

>          if ($module && $module->isActivated()) {

>              $sql = "SELECT u.*, s.hash, s.online, (COUNT(m.to_userid) - SUM(m.read_msg)) AS user_new_privmsg, COUNT(m.to_userid) AS user_privmsg FROM ".RC_USERS_TBL." u
>              LEFT JOIN ".RC_SESS_TBL." s ON u.uid=s.uid LEFT JOIN ".$db->prefix("private_msgs")." m ON m.to_userid=u.uid
>              WHERE s.uid=".$uid." AND s.hash='".$uhash."' GROUP BY u.uid";

>          } else {

>              $sql = "SELECT u.*, s.hash, s.online FROM ".RC_USERS_TBL." u
>              LEFT JOIN ".RC_SESS_TBL." s ON u.uid=s.uid
>              WHERE s.uid=".$uid." AND s.hash='".$uhash."'";
>          }
322c333
<         $hash = rc_shatool($this->pass.$this->salt);
---
>         $hash = rc_shatool($this->pass.$this->salt. rc_shatool($xoopsConfig['dbhost'] . $xoopsConfig['dbuname'] . $xoopsConfig['dbpass'] . $xoopsConfig['dbname']));
# комментарий удалившегося пользователя приводил к ошибке, все последующие комментарии обрезались
diff -r orig/class/xoopscomments.php my/class/xoopscomments.php
362a363
>       if($poster!==NULL)
508c509
< ?>
\ No newline at end of file
---
> ?>
# не помню, что это, нашел на форуме, исправление ошибки
diff -r orig/class/xoopstree.php my/class/xoopstree.php
227a228
>      if ($cid == 0) return $idarray;
242c243,244
<                $r_id = $r[$this->pid];
---
>                $r_id = $i[$this->pid];
>            if ($r_id == 0) return $idarray;  
# http://runcms.ru/forum/showthread.php?t=9817
diff -r orig/class/xoopsuser.php my/class/xoopsuser.php
151,153c151,156
<       $uh = xoops_gethandler('user');
<       if($uh->exists($id))
<          return $uh->get($id);
---
>       $uh = xoops_gethandler('user');
>       if($uh->exists($id)) {
>          $_user = $uh->get($id);
>          foreach ($_user->vars as $k => $v) $this->setVar($k, $v['value']);
>          return;
>       }  
1064a1068,1069
>      $rcuser->setVar('pass', $shapwd);
>      $rcuser->setVar('pwdsalt', $myrow['pwdsalt']);
1076c1081
< ?>
\ No newline at end of file
---
> ?>
# дополнительная защита, не помешает: http://www.runcms.ru/forum/showthread.php?t=10203
diff -r orig/include/common.php my/include/common.php
82a83
>    session_name($xoopsConfig['session_name']);
286a288,300
> if (strpos( _SCRIPT_NAME, 'admin')){
>     if ($xoopsUser) {
>        if ( !$xoopsUser->isAdmin(($xoopsModule) ? $xoopsModule->mid(): null) ) {
>             header('Status: 302 Found');
>             header('Location:'.XOOPS_URL.'/abuse.php');
>             exit();
>        }
>     } else {
>        header('Status: 302 Found');
>        header('Location:'.XOOPS_URL.'/abuse.php');
>        exit();
>     }
> }  
# кривые заголовки на каких-то страницах, точно не помню на каких
diff -r orig/include/functions.php my/include/functions.php
43,45c43,45
<    echo "<?xml version=\"1.0\" encoding=\""._CHARSET."\"?>\n";?>
< <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo _LANGCODE;?>" lang="<?php echo _LANGCODE;?>" dir="<?php echo RC_DIR?>">
---
>    ?>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
> <html>
637,639c637,638
<?php echo "<?xml version=\"1.0\" encoding=\""._CHARSET."\"?>\n";?>
< <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo _LANGCODE;?>" lang="<?php echo _LANGCODE;?>" dir="<?php echo RC_DIR?>"><head>
---
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
> <html><head>
660c659
<   </head><body>
---
>   </head><body style='background-color: #000000;'>
# файл не нужен для работы движка, когда он присутствует, возникают глюки в IE
Only in orig/include: prototype.js
# При отправке сообщений пропадает текст: http://www.runcms.ru/forum/showthread.php?p=77313
diff -r orig/modules/messages/include/messageform.inc.php my/modules/messages/include/messageform.inc.php
96c96
<   $desc  = new XoopsFormDhtmlTextArea( 'message', $message);
---
>   $desc  = new XoopsFormDhtmlTextArea('', 'message', $message);
# Смайлы в комментариях пользователей: http://www.runcms.ru/forum/showthread.php?t=10306
diff -r orig/modules/myarticles/class/textsanitizer.class.php my/modules/myarticles/class/textsanitizer.class.php
30a31
>             parent::__construct();
# не помню какую именно ошибку исправляет
diff -r orig/modules/mydownloads/submit.php my/modules/mydownloads/submit.php
33a34,36
> } else {
>     $submitter = (int)$_POST['submitter'];
> }  
# сбиваются куки: http://www.runcms.ru/forum/showthread.php?t=6410&page=23
# еще какая-то ошибка исправлена, точно не помню
diff -r orig/modules/newbb_plus/include/newbbplus.js my/modules/newbb_plus/include/newbbplus.js
66c66
<         for (i in collapsed){
---
>         for (i = 0; i < collapsed.length; i++){
118,139c118,142
< var copy_txt = '';

< function copy() {
<     if (document.getSelection) copy_txt = document.getSelection();
<     else if (document.selection) copy_txt = document.selection.createRange().text;
<     else return;
< }

< function ins_in (tex_to) {
<     var txtarea = document.getElementById("message");
<     if (txtarea.createTextRange && txtarea.caretPos) {
<         var caretPos = txtarea.caretPos;
<         caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? tex_to + ' ' : tex_to;
<     } else txtarea.value += tex_to;
<     copy_txt = '';
< }
< function ins_to(by_who) {
<     pm(by_who);
<     if (copy_txt) {
<             ins_in ("[quote]" + copy_txt + " [/quote]\n");
<     } else return;
< }
---
> var copy_txt = '';
> function copy() {
> if (window.getSelection) {
> copy_txt = window.getSelection().toString();
> } else if (document.getSelection) {
> copy_txt = document.getSelection();                
> } else if (document.selection) {
> copy_txt = document.selection.createRange().text;
> }
> else return;
> }
> function ins_in (tex_to) {
> var txtarea = document.getElementById("message");
> if (txtarea.createTextRange && txtarea.caretPos) {
> var caretPos = txtarea.caretPos;
> caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? tex_to + ' ' : tex_to;
> } else txtarea.value += tex_to;
> copy_txt = '';
> }
> function ins_to(by_who) {
> pm(by_who);
> if (copy_txt) {
> ins_in ("[quote]" + copy_txt + " [/quote]\n");
> } else return;
> }
453c456
< }
\ No newline at end of file
---
> }
# эмулятор register_globals для админки photo
diff -r orig/modules/photo/admin/admin_header.php my/modules/photo/admin/admin_header.php
101c101,107
< ?>
\ No newline at end of file
---
> $globals_test = @ini_get('register_globals');
> if (isset($globals_test) && empty($globals_test)) {
>     // These still need some work :: Cookie|Server|Env are ok now.
>     if (!empty($_POST)) { extract($_POST, EXTR_SKIP); }
>     if (!empty($_GET))  { extract($_GET, EXTR_SKIP);  }
> } 
> ?>
# блок открывался и закрывался по-разному - нарушалась структура html
diff -r orig/modules/photo/blocks/block.php my/modules/photo/blocks/block.php
54,55c54,55
<    /*    $block['content'] .= "<br><center>";
<    $block['content'] .= "<table border='".$galerieConfig['block_tb1_bo']."' cellspacing='".$galerieConfig['block_tb1_cspa']."' cellpadding='".$galerieConfig['block_tb1_cpad']."' bordercolor='#".$galerieConfig['block_tb1_bordcol']."' bgcolor='#".$galerieConfig['block_tb1_bgcol']."'>";
---
>        $block['content'] .= "<br><center>";
>    /* $block['content'] .= "<table border='".$galerieConfig['block_tb1_bo']."' cellspacing='".$galerieConfig['block_tb1_cspa']."' cellpadding='".$galerieConfig['block_tb1_cpad']."' bordercolor='#".$galerieConfig['block_tb1_bordcol']."' bgcolor='#".$galerieConfig['block_tb1_bgcol']."'>";
# эмулятор register_globals для админки photo
# мусор перед началом html-страницы
diff -r orig/modules/photo/header.php my/modules/photo/header.php
21,23c21,23
< echo "<style type='text/css'>
<         .textarea, .text, .button, .file {background: #ECECEC top; border: 1px solid #C0C0C0; font-family: Verdana, Tahoma, Arial; font-size: xx-small;}
<     </style>";
---
> //echo "<style type='text/css'>
> //        .textarea, .text, .button, .file {background: #ECECEC top; border: 1px solid #C0C0C0; font-family: Verdana, Tahoma, Arial; font-size: xx-small;}
> //    </style>";
55c55,73
< ?>
\ No newline at end of file
---
> //phpinfo();
> //if(isset($_POST))foreach($_POST as $k=>$v)$HTTP_POST_VARS["$k"]=$v;//echo "$k=>$v<br>";
> //if(isset($_GET ))foreach($_GET  as $k=>$v)$HTTP_GET_VARS["$k"] =$v;//echo "$k=>$v<br>";
> $HTTP_GET_VARS    = $_GET;
> $HTTP_POST_VARS   = $_POST;
> $HTTP_SERVER_VARS = $_SERVER;
> $HTTP_COOKIE_VARS = $_COOKIE;
> $HTTP_POST_FILES  = $_FILES;
> $QUERY_STRING     = $_SERVER['QUERY_STRING'];
> $HTTP_REFERER     = $_SERVER['HTTP_REFERER'];
> //phpinfo();
> //echo "aaa".$HTTP_POST_VARS["titre"];
> $globals_test = @ini_get('register_globals');
> if (isset($globals_test) && empty($globals_test)) {
>     // These still need some work :: Cookie|Server|Env are ok now.
>     if (!empty($_POST)) { extract($_POST, EXTR_SKIP); }
>     if (!empty($_GET))  { extract($_GET, EXTR_SKIP);  }
> } 
> ?>
# в случае ровно N страниц фотографий у меня просто пропала ссылка на последнюю - убрал - все ок. Не понял зачем этот декремент был нужен
diff -r orig/modules/photo/viewcat.php my/modules/photo/viewcat.php
458c458
<       $imgpages = $imgpages - 1;
---
> //      $imgpages = $imgpages - 1;
# исправление глюка с опросами, сам не тестировал
diff -r orig/modules/xoopspoll/admin/index.php my/modules/xoopspoll/admin/index.php
614c614
<    $poll =& new XoopsPoll($poll_id);
---
>    $poll = new XoopsPoll($poll_id);
На данный момент фикспак не содержит решения следующих проблем:
1. не отображаются смайлики в текстах статей: http://www.runcms.ru/forum/showthread.php?t=10306
2. некорретно отображается время на форуме (часовой пояс)
3. при редактировании новости - сбиваются галочки, в визуальном редакторе смайлики превращаются в url, другие связанные с этим ошибки.
4. старые/новые сообщения первыми на форуме - отображаются у кого как попало
5. при изменения порядка форумов в админке форумам могут быть присвоены одинаковые индексы сортировки, в результате для некоторыз пользователей форумы отображаются в неправильном порядке, исправляется только редактированием базы.
6. не работает по-человечески блок "кто на сайте": http://www.runcms.ru/forum/showthread.php?t=10514
7. торможение движка при невыясненных обстоятельствах: http://www.runcms.ru/forum/showthread.php?t=10518

В настоящий момент считаю нецелесообразным продолжать тестирование/исправление движка до решения проблемы п.7 (с торможением), поэтому просто решил выложить список того, что я исправил, а также список того, что еще следует исправить.
О тех же самых (и других) ошибках в других версиях не имею понятия, поскольку тестировал именно 1.6.2

  Сообщения: 50 c 02.08.2010 | Репутация: 14
pan вне форума pan
): ǝҺɐни dиw ɐн иd⊥оwɔ

Аватар для pan

| Цитировать Старый #2 10-04-2010, 08:41

Я не особо следил за фиксами для 1.6, но точно помню что половина проблем здесь на форуме исправлялась


Напильник для RUNCMS
Строим помаленьку
Для гурманов
Мебель для дома
Посетить домашнюю страницу pan
  Сообщения: 4,777 c 15.03.2004 | Репутация: 121
iltmpz вне форума iltmpz
Младший участник


| Цитировать Старый #3 10-04-2010, 08:52

Цитата:
Сообщение от pan Посмотреть сообщение
Я не особо следил за фиксами для 1.6, но точно помню что половина проблем здесь на форуме исправлялась
почти все исправлялось - я не претендую на что-то новое, просто собрал все в одну кучу.
Просто я тестировал сайт и 2 месяца искал глюки и исправлял. Как бы просто в чистом runcms 1.6.2 "из коробки" очень много всего не работает. Я подумал что хорошо бы все это собрать в одну кучу, чтобы новые пользователи решив поставить его сразу видели, чего ожидать и могли бы не тестируя исправить сразу большинство этих ошибок.
Может я и зря все это написал, не знаю

  Сообщения: 50 c 02.08.2010 | Репутация: 14
pan вне форума pan
): ǝҺɐни dиw ɐн иd⊥оwɔ

Аватар для pan

| Цитировать Старый #4 10-04-2010, 09:53

По умолчанию там все работает, кто подсел на этот двиг рано или поздно делают свою "сборку". У меня есть своя на основе 1.4 искромсано вдоль и поперек, сейчас будет на основе 2.2
P.S. делиться разными хаками буду делиться на блоге, но сборку не отдам


Напильник для RUNCMS
Строим помаленьку
Для гурманов
Мебель для дома
Посетить домашнюю страницу pan
  Сообщения: 4,777 c 15.03.2004 | Репутация: 121
iltmpz вне форума iltmpz
Младший участник


| Цитировать Старый #5 10-04-2010, 10:20

Цитата:
Сообщение от pan Посмотреть сообщение
По умолчанию там все работает, кто подсел на этот двиг рано или поздно делают свою "сборку". У меня есть своя на основе 1.4 искромсано вдоль и поперек, сейчас будет на основе 2.2
P.S. делиться разными хаками буду делиться на блоге, но сборку не отдам
Не вижу ничего плохого в том, чтобы отдать свою сборку, хоть и не могу сказать, что я "подсел на двиг".
Конечно свои фичи отдавать не надо - не всем они нужны, ну и на то они и "свои".
А насчет "там все работает" - ну как бы смайлики не отображаются, новые личные сообщения не отображаются, комментарии от анонимов приводят к ошибке на странице, ну и далее по моему списку. Как бы лично мое мнение, что это называется "не работает", потому и решил создать эту тему.
Оценка сообщения (репутация)
+8 pan положительно: да все будет ништяк :)

  Сообщения: 50 c 02.08.2010 | Репутация: 14
LARK вне форума LARK
[исход]

Аватар для LARK

| Цитировать Старый #6 10-04-2010, 11:14

Можно попробовать runcms_re-1.7.0_alpha-4_b20101004.zip это переработка линейки 1.6 с фиксом большого количества ошибок, исправленных у нас на форуме.

Последний раз редактировалось LARK, 10-04-2010 в 14:41


Правила нашего Форума :: О клубе пользователей RUNCMS :: Рекомендации по публикации сообщений :: Прежде чем задать вопрос воспользуйтесь Поиском
-------------------------------------------------------------------
Если что-то не работает, задавая вопрос, ! ОБЯЗАТЕЛЬНО ! пишите версию RUNCMS/модуля/PHP/MySQL и текст самой ошибки.
Посетить домашнюю страницу LARK
  Сообщения: 4,185 c 20.09.2003 | Репутация: 223
iltmpz вне форума iltmpz
Младший участник


| Цитировать Старый #7 10-04-2010, 11:40

Цитата:
runcms_re-1.7.0_alpha-4_b20101004.zip
- файл не качается, путь к файлу отстутствует...

  Сообщения: 50 c 02.08.2010 | Репутация: 14
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #8 10-04-2010, 11:46

iltmpz, попробуй отсюда забрать.


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
iltmpz вне форума iltmpz
Младший участник


| Цитировать Старый #9 10-04-2010, 12:38

ZlydenGL,
спасибо, скачалось,
только это наверно более старый? 20091115, а тот 20101004?

  Сообщения: 50 c 02.08.2010 | Репутация: 14
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #10 10-04-2010, 12:41

iltmpz, звыняй, чого нема - того нема Я видел только ту "боевую" ссылку, которую выше привел.


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 114.58 Kb. compressed to 107.36 Kb. by saving 7.21 Kb. (6.30%)
Page generated in 0.09221 seconds with 10 queries