1
Changeset ec0d8d6 – MultiMag

Changeset ec0d8d6


Ignore:
Timestamp:
Jun 24, 2011, 10:31:48 PM (12 years ago)
Author:
Blacklight <blacklight@…>
Branches:
master
Children:
ddaa6a6
Parents:
9cbd158
Message:
  • Исправлена ошибка, мешающая анонимному пользователю получать доступ к новостям
  • Экспериментальная главная страница сайта
  • Мелкие исправления логики работы
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • cli/iptinit.php

    r9cbd158 rec0d8d6  
    44for($i=0;$i<(count($c)-2);$i++) $base_path.=$c[$i].'/';
    55include_once("$base_path/config_cli.php");
    6 
    7 
    86
    97if(!$CONFIG['route']['ext_ip'])
     
    1412
    1513$ipt='iptables';
    16 
    1714
    1815`echo "1" > /proc/sys/net/ipv4/ip_forward`;
     
    3835`$ipt -P FORWARD DROP`;
    3936
    40 
     37if($CONFIG['route']['ulog']['ext_enable'])
     38{
     39    `$ipt -A INPUT -s ! {$CONFIG['route']['lan_range']} -j ULOG`;
     40    `$ipt -A OUTPUT -d ! {$CONFIG['route']['lan_range']} -j ULOG`;
     41    echo "Ext_Ulog enabled!\n";
     42}
    4143// Create chain for bad tcp packets
    4244`$ipt -N bad_tcp_packets`;
    4345`$ipt -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP`;
    44 
    4546
    4647// Create separate chains for ICMP, TCP and UDP to traverse
     
    5253`$ipt -A allowed -j ACCEPT`;
    5354
    54 
    55 
    5655// TCP rules
    5756`$ipt -N tcp_packets`;
    58 
    59 `$ipt -A tcp_packets -p TCP -s 189.52.17.130 --dport 25 -j DROP`;       // SMTP
    6057
    6158// FTP
     
    140137
    141138
    142 
    143 
    144139if($CONFIG['route']['ulog']['enable'])
    145140{
    146         `$ipt -A OUT_INET_FORWARD -p tcp -m multiport --dport {$CONFIG['route']['ulog']['ports']} -j ULOG`;
     141        `$ipt -A OUT_INET_FORWARD -j ULOG`;
     142        `$ipt -A IN_INET_FORWARD  -j ULOG`;
     143       
     144        echo "Ulog enable!\n";
    147145}
    148146
    149147`$ipt -A IN_INET_FORWARD -j ACCEPT`;
    150148`$ipt -A OUT_INET_FORWARD -j ACCEPT`;
    151 
    152149
    153150
     
    184181`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 4000 -j DNAT --to-destination 192.168.1.45:4000`;
    185182`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 636 -j DNAT --to-destination 192.168.1.22:631`;
    186 
     183//ATS
     184`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 5000 -j DNAT --to-destination 192.168.0.202:5000`;
     185`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 5001 -j DNAT --to-destination 192.168.0.202:5001`;
     186`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 5002 -j DNAT --to-destination 192.168.0.202:5002`;
     187`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 5003 -j DNAT --to-destination 192.168.0.202:5003`;
     188`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 5004 -j DNAT --to-destination 192.168.0.202:5004`;
     189`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 5005 -j DNAT --to-destination 192.168.0.202:5005`;
     190`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 5090 -j DNAT --to-destination 192.168.0.202:5090`;
     191`$ipt -t nat -A PREROUTING -d {$CONFIG['route']['ext_ip']} -i {$CONFIG['route']['ext_iface']} -p tcp -m tcp --dport 23 -j DNAT --to-destination 192.168.0.202:23`;
    187192
    188193
  • db_struct.sql

    r9cbd158 rec0d8d6  
    1919-- База данных: `dev`
    2020--
     21
     22-- --------------------------------------------------------
     23
     24--
     25-- Структура таблицы `comments`
     26--
     27
     28CREATE TABLE IF NOT EXISTS `comments` (
     29  `id` int(11) NOT NULL AUTO_INCREMENT,
     30  `date` datetime NOT NULL,
     31  `object_name` varchar(16) NOT NULL COMMENT 'Имя(тип) объекта комментирования',
     32  `object_id` int(11) NOT NULL COMMENT 'ID объекта комментирования',
     33  `autor_name` varchar(16) NOT NULL COMMENT 'Имя автора (анонимного)',
     34  `autor_email` varchar(32) NOT NULL COMMENT 'Электронная почта анонимного автора',
     35  `autor_id` int(11) NOT NULL COMMENT 'UID автора',
     36  `text` text NOT NULL COMMENT 'Текст коментария',
     37  `rate` tinyint(4) NOT NULL COMMENT 'Оценка объекта (0-5)',
     38  `ip` varchar(16) NOT NULL,
     39  `user_agent` varchar(128) NOT NULL,
     40  PRIMARY KEY (`id`),
     41  KEY `object_name` (`object_name`),
     42  KEY `object_id` (`object_id`),
     43  KEY `rate` (`rate`),
     44  KEY `date` (`date`)
     45) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Коментарии к товарам, новостям, статьям и пр.';
     46
    2147
    2248-- --------------------------------------------------------
  • web/core.php

    r9cbd158 rec0d8d6  
    1818//
    1919
    20 define("MULTIMAG_VERSION", "0.0.1r245");
     20define("MULTIMAG_VERSION", "0.0.1r249");
    2121header("X-Powered-By: MultiMag ".MULTIMAG_VERSION);
    2222
     
    212212
    213213// Есть ли право доступа к указанному объекту для указанной операции
    214 function isAccess($object, $action)
     214function isAccess($object, $action,$no_redirect=0)
    215215{
    216216        $uid=@$_SESSION['uid'];
     
    230230        if(mysql_errno())       throw new MysqlException("Выборка привилегий не удалась");
    231231        $access=(mysql_num_rows($res)>0)?true:false;
    232         if((!$uid) && (!$access))       need_auth();
     232        if((!$uid) && (!$access) && (!$no_redirect))    need_auth();
    233233        return $access;
    234234}
  • web/include/doc.poseditor.php

    r9cbd158 rec0d8d6  
    172172        var poslist=PosEditorInit('/doc.php?doc={$this->doc}&mode=srv',{$this->editable})
    173173        poslist.show_column['sn']='{$this->show_sn}'
     174        poslist.show_column['vc']='{$this->show_vc}'
    174175        poslist.show_column['gtd']='{$this->show_gtd}'
    175        
     176
    176177        var skladview=document.getElementById('sklad_view')
    177178        skladview.show_column['vc']='{$this->show_vc}'
  • web/include/imgresizer.php

    r9cbd158 rec0d8d6  
    189189                        if($this->dim_x<$this->dim_y)   $font_size=$this->dim_x/10;
    190190                        else                            $font_size=$this->dim_y/10;
    191                         $text_bbox=imageftbbox ( $font_size , 45 , $this->font_watermark , $CONFIG['site']['display_name'] );
     191                        $text_bbox=imageftbbox ( $font_size , 45 , $this->font_watermark , $CONFIG['site']['name'] );
    192192                       
    193193                        $min_x=$max_x=$text_bbox[0];
     
    203203                        $delta_y=$this->dim_y-$min_y+$max_y;
    204204                       
    205                         imagefttext ( $im , $font_size , 45 , $delta_x/1.9, $delta_y/2 , $bg_c , $this->font_watermark , $CONFIG['site']['display_name'] );
    206                         imagefttext ( $im , $font_size , 45 , $delta_x/1.9+2, $delta_y/2+2 , $text_c , $this->font_watermark , $CONFIG['site']['display_name'] );
     205                        imagefttext ( $im , $font_size , 45 , $delta_x/1.9, $delta_y/2 , $bg_c , $this->font_watermark , $CONFIG['site']['name'] );
     206                        imagefttext ( $im , $font_size , 45 , $delta_x/1.9+2, $delta_y/2+2 , $text_c , $this->font_watermark , $CONFIG['site']['name'] );
    207207                }
    208208//              header("Content-type: image/jpg");
  • web/index.php

    r9cbd158 rec0d8d6  
    2121include_once("core.php");
    2222
     23try
     24{
     25
    2326if(file_exists( $CONFIG['site']['location'].'/skins/'.$CONFIG['site']['skin'].'/index.tpl.php' ) )
    2427        include_once($CONFIG['site']['location'].'/skins/'.$CONFIG['site']['skin'].'/index.tpl.php');
    25 else    include_once("vitrina.php");
     28else
     29{
     30
     31        include_once("include/doc.core.php");
     32        include_once("include/imgresizer.php");
     33        require_once("include/comments.inc.php");
     34        $tmpl->SetTitle($CONFIG['site']['display_name']);
     35
     36        if(@$_SESSION['uid'])   $res=mysql_query("SELECT `id` FROM `doc_cost` WHERE `vid`='-1'");
     37        else                    $res=mysql_query("SELECT `id` FROM `doc_cost` WHERE `vid`='1'");
     38        if(mysql_errno())       throw new MysqlException('Не удалось выбрать цену для пользователя');
     39        $cost_id=               mysql_result($res,0,0);
     40        if(!$cost_id)   $cost_id=1;
     41
     42       
     43        $tmpl->AddStyle(".pitem {
     44                float:                  left;
     45                width:                  330px;
     46                height:                 180px;
     47                border:                 1px solid #ccc;
     48                background:             #fafafa;
     49                margin:                 10px;
     50                padding:                5px;
     51                border-radius:          10px;
     52                -moz-border-radius:     10px;
     53        }");
     54       
     55        $tmpl->AddText("
     56        <table class='index-nsr'>
     57        <tr><td>
     58        <h3>Акции</h3>");
     59
     60        $res=mysql_query("SELECT `news`.`id`, `news`.`text`, `news`.`date`, `news`.`ex_date`, `news`.`img_ext` FROM `news`
     61        WHERE `news`.`type`='stock'
     62        ORDER BY `date` DESC LIMIT 3");
     63        if(mysql_errno())       throw new MysqlException("Не удалось получить список акций!");
     64        if(mysql_num_rows($res))
     65        {
     66                while($nxt=mysql_fetch_assoc($res))
     67                {
     68                       
     69                        $wikiparser->title='';
     70                        $text=$wikiparser->parse(html_entity_decode($nxt['text'],ENT_QUOTES,"UTF-8"));
     71                        if($nxt['img_ext'])
     72                        {
     73                                $miniimg=new ImageProductor($nxt['id'],'n', $nxt['img_ext']);
     74                                $miniimg->SetX(50);
     75                                $miniimg->SetY(50);
     76                                $img="<img src='".$miniimg->GetURI()."' alt=''>";
     77                        }
     78                        else $img='';
     79                        $text_a=mb_split( "[.!?]" , strip_tags($text), 2);
     80                        if(@$text_a)    $text=$text_a[0]."...";
     81                        $tmpl->AddText("<div class='news'><div class='image'><a href='/news.php?mode=read&amp;id={$nxt['id']}'>$img</a></div>
     82                        <div class='text'><p class='date'>{$nxt['date']}</p><p class='title'><a href='/news.php?mode=read&amp;id={$nxt['id']}'>{$wikiparser->title}</a></p><p>$text</p></div>
     83                        <div class='clear'></div>
     84                        </div>");
     85                }
     86        }
     87
     88
     89        $tmpl->AddText("<td><h3>Обзоры</h3>");
     90
     91        $res=mysql_query("SELECT `name`, `date`, `text`, `img_ext`  FROM `wiki`
     92        WHERE `name` LIKE 'review:%'
     93        ORDER BY `date` DESC LIMIT 3");
     94        if(mysql_errno())       throw new MysqlException("Не удалось получить список статей!");
     95        if(mysql_num_rows($res))
     96        {
     97                while($nxt=mysql_fetch_assoc($res))
     98                {
     99                        $wikiparser->title='';
     100                        $text=$wikiparser->parse(html_entity_decode($nxt['text'],ENT_QUOTES,"UTF-8"));
     101                        if($nxt['img_ext'])
     102                        {
     103                                $miniimg=new ImageProductor($nxt['name'],'a', $nxt['img_ext']);
     104                                $miniimg->SetX(50);
     105                                $miniimg->SetY(50);
     106                                $img="<img src='".$miniimg->GetURI()."' alt=''>";
     107                        }
     108                        else $img='';
     109                        $text_a=mb_split( "[.!?]" , strip_tags($text), 2);
     110                        if(@$text_a)    $text=$text_a[0]."...";
     111                        $tmpl->AddText("<div class='news'><div class='image'><a href='/wiki/{$nxt['name']}'>$img</a></div>
     112                        <div class='text'><p class='date'>{$nxt['date']}</p><p class='title'><a href='/wiki/{$nxt['name']}'>{$wikiparser->title}</a></p><p>$text</p></div>
     113                        <div class='clear'></div>
     114                        </div>");
     115                }
     116        }
     117
     118
     119        $tmpl->AddText("<td><h3><a href='/news.php'>Новости</a></h3>");
     120
     121        $res=mysql_query("SELECT `news`.`id`, `news`.`text`, `news`.`date`, `news`.`ex_date`, `news`.`img_ext` FROM `news`
     122        WHERE `news`.`type`=''
     123        ORDER BY `date` DESC LIMIT 3");
     124        if(mysql_errno())       throw new MysqlException("Не удалось получить список новостей!");
     125        if(mysql_num_rows($res))
     126        {
     127                while($nxt=mysql_fetch_assoc($res))
     128                {
     129                        $wikiparser->title='';
     130                        $text=$wikiparser->parse(html_entity_decode($nxt['text'],ENT_QUOTES,"UTF-8"));
     131                        if($nxt['img_ext'])
     132                        {
     133                                $miniimg=new ImageProductor($nxt['id'],'n', $nxt['img_ext']);
     134                                $miniimg->SetX(50);
     135                                $miniimg->SetY(50);
     136                                $img="<img src='".$miniimg->GetURI()."' alt=''>";
     137                        }
     138                        else $img='';
     139                        $text_a=mb_split( "[.!?]" , strip_tags($text), 2);
     140                        if(@$text_a)    $text=$text_a[0]."...";
     141                        $tmpl->AddText("<div class='news'><div class='image'><a href='/news.php?mode=read&amp;id={$nxt['id']}'>$img</a></div>
     142                        <div class='text'><p class='date'>{$nxt['date']}</p><p class='title'><a href='/news.php?mode=read&amp;id={$nxt['id']}'>{$wikiparser->title}</a></p><p>$text</p></div>
     143                        <div class='clear'></div>
     144                        </div>");
     145                }
     146        }
     147
     148
     149
     150        $tmpl->AddText("</tr></table>");
     151       
     152        $res=mysql_query("SELECT `doc_base`.`id`, `doc_base`.`name`, `doc_base`.`desc`, `doc_base`.`cost`, `doc_img`.`id` AS `img_id`, `doc_img`.`type` AS `img_type`, `doc_units`.`printname` AS `units` FROM `doc_base`
     153        LEFT JOIN `doc_base_img` ON `doc_base_img`.`pos_id`=`doc_base`.`id` AND `doc_base_img`.`default`='1'
     154        LEFT JOIN `doc_img` ON `doc_img`.`id`=`doc_base_img`.`img_id`
     155        LEFT JOIN `doc_units` ON `doc_base`.`unit`=`doc_units`.`id`
     156        WHERE `hidden`='0' AND `stock`!='0'");
     157        if(mysql_errno())       throw new MysqlException("Выборка спецпредложений не удалась!");
     158        if(mysql_num_rows($res))
     159        {
     160                $tmpl->AddText("<h1>Спецпредложения</h1>");
     161       
     162                while($nxt=mysql_fetch_array($res))
     163                {
     164                        if($CONFIG['site']['recode_enable'])    $link= "/vitrina/ip/$nxt[0].html";
     165                        else                                    $link= "/vitrina.php?mode=product&amp;p=$nxt[0]";
     166                        if($nxt['img_id'])
     167                        {
     168                                $miniimg=new ImageProductor($nxt['img_id'],'p', $nxt['img_type']);
     169                                $miniimg->SetX(135);
     170                                $miniimg->SetY(180);
     171                                $img="<img src='".$miniimg->GetURI()."' style='float: left; margin-right: 10px;' alt='{$nxt['name']}'>";
     172                        }
     173                        else $img="<img src='/img/no_photo.png' alt='no photo'>";
     174                        $cost=GetCostPos($nxt['id'], $cost_id);
     175                       
     176                        $tmpl->AddText("<div class='pitem'>
     177                        <a href='$link'>$img</a>
     178                        {$nxt['name']}<br>
     179                        <b>Цена:</b> $cost руб / {$nxt['units']}<br>
     180                        <a href='/vitrina.php?mode=korz_add&amp;p={$nxt['id']}&amp;cnt=1' onclick=\"ShowPopupWin('/vitrina.php?mode=korz_adj&amp;p={$nxt['id']}&amp;cnt=1','popwin'); return false;\" rel='nowollow'>В корзину!</a>
     181                        </div>");               
     182                }
     183
     184                $tmpl->AddText("<br clear='all'>");
     185        }
     186       
     187        $tmpl->AddText("<h1>Популярные товары</h1>");
     188
     189        $res=mysql_query("SELECT `doc_base`.`id`, `doc_base`.`name`, `doc_base`.`desc`, `doc_base`.`cost`, `doc_img`.`id` AS `img_id`, `doc_base`.`likvid`, `doc_img`.`type` AS `img_type`, ( SELECT SUM(`doc_base_cnt`.`cnt`) FROM `doc_base_cnt` WHERE `doc_base_cnt`.`id`=`doc_base`.`id` GROUP BY `doc_base`.`id`) AS `count`, `doc_units`.`printname` AS `units` FROM `doc_base`
     190        LEFT JOIN `doc_base_img` ON `doc_base_img`.`pos_id`=`doc_base`.`id` AND `doc_base_img`.`default`='1'
     191        LEFT JOIN `doc_img` ON `doc_img`.`id`=`doc_base_img`.`img_id`
     192        LEFT JOIN `doc_units` ON `doc_base`.`unit`=`doc_units`.`id`
     193        WHERE `hidden`='0'
     194        ORDER BY `likvid` DESC
     195        LIMIT 20");
     196        if(mysql_errno())       throw new MysqlException("Выборка популярных товаров не удалась!");
     197        $i=1;
     198        while($nxt=mysql_fetch_array($res))
     199        {
     200                if($nxt['cost']==0)     continue;
     201                if($CONFIG['site']['recode_enable'])    $link= "/vitrina/ip/$nxt[0].html";
     202                else                                    $link= "/vitrina.php?mode=product&amp;p=$nxt[0]";
     203                if($nxt['img_id'])
     204                {
     205                        $miniimg=new ImageProductor($nxt['img_id'],'p', $nxt['img_type']);
     206                        $miniimg->SetX(135);
     207                        $miniimg->SetY(180);
     208                        $img="<img src='".$miniimg->GetURI()."' style='float: left; margin-right: 10px;' alt='{$nxt['name']}'>";
     209                }
     210                else $img="<img src='/img/no_photo.png' alt='no photo' alt='no photo'>";
     211                $cost=GetCostPos($nxt['id'], $cost_id);
     212               
     213                $tmpl->AddText("<div class='pitem'>
     214                <a href='$link'>$img</a>
     215                {$nxt['name']}<br>
     216                <b>Цена:</b> $cost руб / {$nxt['units']}<br>
     217                <a href='/vitrina.php?mode=korz_add&amp;p={$nxt['id']}&amp;cnt=1' onclick=\"ShowPopupWin('/vitrina.php?mode=korz_adj&amp;p={$nxt['id']}&amp;cnt=1','popwin'); return false;\" rel='nowollow'>В корзину!</a>
     218                </div>");
     219               
     220                $i++;
     221        }
     222        $tmpl->AddText("<br clear='all'>");
     223}
     224
     225}
     226catch(MysqlException $e)
     227{
     228        mysql_query("ROLLBACK");
     229        $tmpl->AddText("<br><br>");
     230        $tmpl->msg($e->getMessage(),"err");
     231}
     232catch(Exception $e)
     233{
     234        mysql_query("ROLLBACK");
     235        $tmpl->AddText("<br><br>");
     236        $tmpl->logger($e->getMessage());
     237}
     238$tmpl->write();
     239
    26240?>
    27241
  • web/news.php

    r9cbd158 rec0d8d6  
    2626
    2727        $tmpl->SetTitle("Новости сайта - ".$CONFIG['site']['display_name']);
    28         if(isAccess('generic_news','create'))
     28        if(isAccess('generic_news','create',1))
    2929        {
    3030                if($mode=='')   $tmpl->AddText("<a href='?mode=add'>Добавить новость</a><br>");
  • web/user.php

    r9cbd158 rec0d8d6  
    384384{
    385385        if(isAccess('sys_ip-log','view'))
    386         if($rights['read'])
    387386        {
    388387        $tmpl->AddText("<h1>25 часто используемых адресов</h1>");
Note: See TracChangeset for help on using the changeset viewer.