Changes between Initial Version and Version 1 of waue/2009/0804


Ignore:
Timestamp:
Aug 4, 2009, 4:45:34 PM (15 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2009/0804

    v1 v1  
     1
     2{{{
     3#!php
     4<?
     5function Many2One($timesize)
     6
     7{
     8
     9        global $object,$obj_ctr,$DB;
     10
     11       
     12
     13        $mo_base_ctr=0;
     14
     15  $mo_ptr = 0;  //mo pointer
     16
     17  $i = 0; //tmp
     18
     19 
     20
     21  //----------------database check----------------
     22
     23        $str="SELECT start_time,end_time,reference,ip_proto,
     24
     25                                event_name,ip_dst,ip_src,sid,dport,sport,sig_class_id,
     26
     27                                signature,sig_priority FROM accident_ticket
     28
     29                                WHERE end_time >= \"".$object[0]->start_time."\" ORDER BY start_time ASC";
     30
     31        $DB->query($str);
     32
     33        $fixed_num = mysql_num_rows($DB->result);
     34
     35
     36
     37        if($fixed_num == null )
     38
     39        {
     40
     41                $fixed_num = 0;
     42
     43          $obj_ptr=1;
     44
     45          $mo_ctr=1;
     46
     47        }
     48
     49        else
     50
     51        {
     52
     53                $obj_ptr=$fixed_num;
     54
     55          $mo_ctr=$fixed_num;
     56
     57        }
     58
     59        $mo[0] = new scenario(null,null,null,null,null,null,null,null,null,null,null,null,null);
     60
     61        if($fixed_num > 0)
     62
     63        {
     64
     65                while(list($start_time,$end_time,$reference,$ip_proto,$event_name,$ip_dst,
     66
     67                                                                $ip_src,$sid,$dport,$sport,$sig_class_id,$signature,$sig_priority)
     68
     69                                                                = mysql_fetch_row($DB->result) )
     70
     71                {
     72
     73                        $mo[$mo_base_ctr]->start_time = $start_time;
     74
     75                        $mo[$mo_base_ctr]->end_time = $end_time;
     76
     77                        $mo[$mo_base_ctr]->reference = $reference;
     78
     79                        $mo[$mo_base_ctr]->ip_proto = $ip_proto;
     80
     81                        $mo[$mo_base_ctr]->event_name = $event_name;
     82
     83                        $mo[$mo_base_ctr]->ip_dst[0] = $ip_dst;
     84
     85                        $mo[$mo_base_ctr]->ip_src = split(",",$ip_src);
     86
     87                        $mo[$mo_base_ctr]->sid = split(",",$sid);
     88
     89                        $mo[$mo_base_ctr]->dport[0] = $dport;
     90
     91                        $mo[$mo_base_ctr]->sport = $sport;
     92
     93                        $mo[$mo_base_ctr]->sig_class_id = $sig_class_id;
     94
     95                        $mo[$mo_base_ctr]->signature = split(",",$signature);
     96
     97                        $mo[$mo_base_ctr]->sig_priority = $sig_priority;
     98
     99                        $mo[$mo_base_ctr]->cmp_time=nor_time($end_time);
     100
     101                        $mo_base_ctr++;
     102
     103                }
     104
     105                $object=array_merge($mo,$object);
     106
     107                $str="DELETE FROM accident_ticket WHERE end_time >= \"".$object[0]->start_time."\"";
     108
     109                $DB->query($str);
     110
     111                $DB->reset_auto("accident_ticket");
     112
     113        }
     114
     115        //if($DB->result) $DB->free_result();
     116
     117        //----------------database check----------------
     118
     119  //echo "timesize:".$timesize."<br>";           
     120
     121  while( $obj_ptr < $obj_ctr )
     122
     123  {
     124
     125
     126
     127        $object[$obj_ptr]->cmp_time=chk_time($object[$obj_ptr]->start_time,$timesize);
     128
     129        //----remove timeout class----
     130
     131        for($i=$mo_ptr; $i<$mo_ctr ;$i++)
     132
     133        {
     134
     135
     136
     137                if( strcmp($object[$obj_ptr]->cmp_time,$object[$mo_ptr]->cmp_time) > 0 ) $mo_ptr++;
     138
     139                else
     140
     141                {
     142
     143                        $i=$mo_ctr;
     144
     145
     146
     147                }
     148
     149        }
     150
     151        //----remove timeout class----
     152
     153        //====many2one check===
     154
     155        for($i=$mo_ptr; $i<$mo_ctr ;$i++)
     156
     157        {
     158
     159                if($object[$obj_ptr]->ip_dst[0] == $object[$i]->ip_dst[0])
     160
     161                {
     162
     163 //                     if($object[$obj_ptr]->dport[0] == $object[$i]->dport[0])
     164
     165 //               {
     166
     167                          if($object[$obj_ptr]->signature[0] == $object[$i]->signature[0])
     168
     169                          {
     170
     171                                  //-------------------------merge----------------------------
     172
     173                                  $object[$i]->reference=($object[$i]->reference).", ".($object[$obj_ptr]->reference);
     174
     175                if( $object[$i]->ip_proto!=$object[$obj_ptr]->ip_proto ) $object[$i]->ip_proto="multiproto";
     176
     177                $object[$i]->ip_src=arr_merge($object[$obj_ptr]->ip_src,$object[$i]->ip_src);
     178
     179                $object[$i]->sid=arr_merge($object[$obj_ptr]->sid,$object[$i]->sid);
     180
     181                if( $object[$i]->sport!=$object[$obj_ptr]->sport ) $object[$i]->sport="multiport";
     182
     183                if( $object[$i]->sig_class_id != $object[$obj_ptr]->sig_class_id ) $object[$i]->sig_class_id=0;
     184
     185                if( $object[$i]->sig_priority > $object[$obj_ptr]->sig_priority ) $object[$i]->sig_priority=$object[$obj_ptr]->sig_priority;
     186
     187                                  if((time_smaller($object[$obj_ptr]->start_time,$object[$i]->start_time))==1)
     188
     189                                          {
     190
     191                                                  $object[$i]->start_time = $object[$obj_ptr]->start_time;
     192
     193                                          }
     194
     195                                          if((time_smaller($object[$i]->end_time,$object[$obj_ptr]->end_time))==1)
     196
     197                                          {
     198
     199                                                  $object[$i]->end_time = $object[$obj_ptr]->end_time;
     200
     201                                          }
     202
     203                                          $object[$i]->cmp_time=nor_time($object[$i]->end_time);
     204
     205                                          $i=$mo_ctr;
     206
     207                                  //-------------------------merge----------------------------
     208
     209                                }
     210
     211 //                     }
     212
     213                }
     214
     215        }
     216
     217        if($i!=$mo_ctr+1)
     218
     219        {
     220
     221
     222
     223                $object[$mo_ctr]->start_time=$object[$obj_ptr]->start_time;
     224
     225                $object[$mo_ctr]->end_time=$object[$obj_ptr]->end_time;
     226
     227                $object[$mo_ctr]->reference=$object[$obj_ptr]->reference;
     228
     229                $object[$mo_ctr]->ip_proto=$object[$obj_ptr]->ip_proto;
     230
     231                $object[$mo_ctr]->event_name=$object[$obj_ptr]->event_name;
     232
     233                $object[$mo_ctr]->ip_dst=arr_cover($object[$obj_ptr]->ip_dst,$object[$mo_ctr]->ip_dst);
     234
     235                $object[$mo_ctr]->ip_src=arr_cover($object[$obj_ptr]->ip_src,$object[$mo_ctr]->ip_src);
     236
     237                $object[$mo_ctr]->sid=arr_cover($object[$obj_ptr]->sid,$object[$mo_ctr]->sid);
     238
     239                $object[$mo_ctr]->dport=arr_cover($object[$obj_ptr]->dport,$object[$mo_ctr]->dport);
     240
     241                $object[$mo_ctr]->sport=$object[$obj_ptr]->sport;
     242
     243                $object[$mo_ctr]->sig_class_id=$object[$obj_ptr]->sig_class_id;
     244
     245                $object[$mo_ctr]->signature=arr_cover($object[$obj_ptr]->signature,$object[$mo_ctr]->signature);
     246
     247                $object[$mo_ctr]->sig_priority=$object[$obj_ptr]->sig_priority;
     248
     249                $object[$mo_ctr]->cmp_time=nor_time($object[$mo_ctr]->end_time);
     250
     251                $mo_ctr++;
     252
     253
     254
     255        }
     256
     257        //====many2one check===
     258
     259        $obj_ptr++;
     260
     261  }
     262
     263  $obj_ctr=$mo_ctr;
     264
     265};
     266
     267?>
     268}}}