Find the answer to your Linux question:
Page 1 of 2 1 2 LastLast
Results 1 to 10 of 15
Like Tree1Likes
I have a shell script which read line from a file "input_file" with many lines, the frist several lines are as below: Code: 04fcgFs-mjA 0DZ7DbdeOeE 0yvHWyvexZA 1IAhDGYlpqY 1Vajuce8nyU 1Y_wJR1I-9s 2dn-ULkQl5M ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    May 2012
    Posts
    85

    weird pheonomenum for shell "while read line"


    I have a shell script which read line from a file "input_file" with many lines, the frist several lines are as below:
    Code:
        04fcgFs-mjA
        0DZ7DbdeOeE
        0yvHWyvexZA
        1IAhDGYlpqY
        1Vajuce8nyU
        1Y_wJR1I-9s
        2dn-ULkQl5M
        2GmVajkqLNU
        2X85PdfQqnM
        37LAPz7pnQI
    In the script, I have:
    Code:
        while read line
        do
        blabla .....
        done< input_file
    It is very interesting that when the script reads the even lines, like the second, the fourth, the sixth, the first character will be missing. For example, when it reads the second line, the obtained string is `DZ7DbdeOeE`, not `0DZ7DbdeOeE`.

    I tried to write a simple script with only:
    Code:
        while read line
        do
        echo $line
        done< input_file
    Then it can correctly reads `0DZ7DbdeOeE`.

    Since my shell script is very long, I don't post it here but I think the inside codes have nothing to do with the "input_file".

    So I JUST want to know what are the potential causes for this pheonomenum? It is so strange!

  2. #2
    Linux Newbie
    Join Date
    Nov 2012
    Posts
    224
    hi,

    so, the input file looks like it's innocent.
    then it's probably the commands inside the while loop that read the "$line".

    without the code it's pretty hard to guess.

    do you have an `echo' above those commands to see what "$line" looks like?
    put an `echo' at different moments inside the while loop.

  3. #3
    Just Joined!
    Join Date
    May 2012
    Posts
    85
    I put the echo "line" immediately after "while read line"

    BTW, there are some blocks like

    if [condition]
    continue
    fi
    but I don't think they could impact the read line

    Quote Originally Posted by watael View Post
    hi,

    so, the input file looks like it's innocent.
    then it's probably the commands inside the while loop that read the "$line".

    without the code it's pretty hard to guess.

    do you have an `echo' above those commands to see what "$line" looks like?
    put an `echo' at different moments inside the while loop.

  4. #4
    Linux Newbie
    Join Date
    Nov 2012
    Posts
    224
    does input file come from a windows environment?

    does condition, met or not, modify "$line" in any way?

    add a -r option to `read', that may help.

  5. #5
    Just Joined!
    Join Date
    May 2012
    Posts
    85
    I tried different input file, phenomenum is the same
    they are all from linux environment
    as I said, I echo the line immediately after "while read line", so whether conditions change the $line is not an issue, I think
    anyway $line is not changed

    you meant "while read -r" ? but as mannual says,
    -r keyseq
    Remove any current binding for keyseq

    what is the usage here?
    thanks!

  6. #6
    Just Joined!
    Join Date
    May 2012
    Posts
    85
    read -r
    doesn't help

  7. #7
    Linux Newbie
    Join Date
    Nov 2012
    Posts
    224
    what shell are you using?

    the -r option for read is to read "in raw mode", so escape characters are not interpreted.

  8. #8
    Just Joined!
    Join Date
    May 2012
    Posts
    85
    I'm using /bin/bash
    the script content is:
    Code:
    # the only argument is the urls list, with the first column should being vid
    set -x
    # File listing urls
    url_list=$1
    
    # capture interface
    interface="eth0"
    
    # IP address of this host
    ip_addr="138.86.201.109"
    
    # capture file initial number
    index=0
    
    # capture duration
    capture_time=8
    
    # firefox command
    Firefox=/home/Application/firefox/firefox
    
    
    while read -r line
    do
      echo "read vid is $line"
      line=`echo ${line}|awk '{print $1}'` 
      echo "vid is $line"
    
      index=$((index+1))
      sed -i 's/\(embed\/\).*\(?hl\)/\1'${line}'\2/' /tor_capture/html5.html 
      sed -i 's/\(www.youtube.com\/v\/\).*\(?hl\)/\1'${line}'\2/' /tor_capture/flash.html
      
      tcpdump -i $interface host $ip_addr and 'port 80' -w flash/flash.pcap &
      sudo -u esolve ${Firefox} /tor_capture/flash.html &
      sleep $capture_time
      pid_firefox=`ps -ef|grep "firefox"|grep -v "grep"|awk '{print $2}'`
      kill -9 $pid_firefox
      pid_tcpdump=`ps -ef|grep "tcpdump"|grep -v "grep"|awk '{print $2}'`
      kill -9 $pid_tcpdump
    
    
      cd flash
      tcpflow -r flash.pcap
      maxfile=`find -name "???.???*"|xargs du -b|sort -n -t" " -k1|tail -n1|awk '{print $2}'`
      echo $maxfile
      flash_content_len=`grep -a "Content-Length" $maxfile|cut -d" " -f2|sed 's/\\r//g'`
      echo "flash_content_len is $flash_content_len"
      test_number=`echo $flash_content_len| sed 's/^[-+0-9][.0-9]*//' |wc -c`
      if [ ! "$test_number" -eq 1 -o "$flash_content_len" == "" ];then
        echo "${line}: flash_content_len "$flash_content_len" is not a number" >>../abnormal_log
        rm -rf *
        cd ..
        continue 
      fi
      
      if [ "$flash_content_len" -ge 500000 ];then
        perl -E'1 until <> eq "\015\012"; print for <>' < ${maxfile} >video.swf
        ffmpeg -i video.swf -f ffmetadata info.txt 2> /dev/null
        flash_duration=`grep "^duration" info.txt|cut -d"=" -f2`
        flash_bytes=`grep "bytelength" info.txt|cut -d"=" -f2`
        test_number=`echo $flash_duration| sed 's/^[-+0-9][.0-9]*//' |wc -c`
        if [ ! "$test_number" -eq 1 -o "$flash_duration" == "" ];then
          echo "index:${index} ${line}: flash_duration $flash_duration is not a number but flash_content_len=${flash_content_len}" >> ../abnormal_log
          rm -rf *
          cd ..
          continue 
        fi
        test_number=`echo $flash_bytes| sed 's/^[-+0-9][.0-9]*//' |wc -c`
        if [ ! "$test_number" -eq 1 -o "$flash_bytes" == "" ];then
          echo "${line}: flash_bytes $flash_bytes is not a number but flash_content_len=${flash_content_len}" >> ../abnormal_log
          rm -rf *
          cd ..
          continue
        fi
      fi
      rm -rf *
      cd ..
     
      sleep 8
     
      tcpdump -i $interface host $ip_addr and 'port 80' -w html5/html5.pcap &
      sudo -u esolve ${Firefox} /tor_capture/html5.html &
      sleep $capture_time
      pid_firefox=`ps -ef|grep "firefox"|grep -v "grep"|awk '{print $2}'`
      kill -9 $pid_firefox
      pid_tcpdump=`ps -ef|grep "tcpdump"|grep -v "grep"|awk '{print $2}'`
      kill -9 $pid_tcpdump
      sleep 3
    
      cd html5
      tcpflow -r html5.pcap
      maxfile=`find -name "???.???*"|xargs du -b|sort -n -t" " -k1|tail -n1|awk '{print $2}'`
    #  second_max=`ls -l|awk '{print $5 "   " %9}'|sort -n -t" " -k1|tail -n2|sed -n '1p'`
    #  maxvalue=`echo $max|cut -d" " -f1`
    #  second_maxvalue=`echo $second_max|cut -d" " -f1`
      html5_content_len=`grep -a "Content-Length" $maxfile|cut -d" " -f2|sed 's/\\r//g'`
      test_number=`echo $html5_content_len| sed 's/^[-+0-9][.0-9]*//' |wc -c`
      if [ ! "$test_number" -eq 1 -o "$html5_content_len" == "" ];then
        echo "${line}: html5_content_len $html5_content_len is not a number" >> ../abnormal_log
        rm -rf *
        cd ..
        continue
      fi
    
      if [ $html5_content_len -ge 500000 ];then
        perl -E'1 until <> eq "\015\012"; print for <>' < ${maxfile} >video.webm
        html5_duration=`mkvinfo -v video.webm|grep "Duration"|cut -d":" -f2|cut -d" " -f2|cut -d"s" -f1`
        html5_bytes=`mkvinfo -v video.webm|grep "Segment, size"|cut -d" " -f4`
        test_number=`echo $html5_duration| sed 's/^[-+0-9][.0-9]*//' |wc -c`
        if [ ! "$test_number" -eq 1 -o "$html5_duration" == "" ];then
          echo "${line}: html5_duration $html5_duration is not a number but html5_content_len=${html5_content_len}" >> ../abnormal_log
          rm -rf *
          cd ..
          continue
        fi
        test_number=`echo $html5_bytes| sed 's/^[-+0-9][.0-9]*//' |wc -c`
        if [ ! "$test_number" -eq 1 -o "$html5_bytes" == "" ];then
          echo "${line}: html5_bytes $html5_bytes is not a number but html5_content_len=${html5_content_len}" >> ../abnormal_log
          rm -rf *
          cd ..
          continue
        fi
    
      fi
     rm -rf *
      cd ..
    
      if [ "$flash_content_len" -lt 500000 -o "$html5_content_len" -lt 500000 ];then
        echo $line $flash_content_len $html5_content_len >> nouse.txt
        continue
      fi
    
      if [ "$flash_bytes" -gt "$html5_bytes" ];then
        flag=`echo "scale=3;k=($flash_bytes-$html5_bytes)/${html5_bytes};k<0.05"|bc`
      else 
        flag=`echo "scale=3;k=($html5_bytes-$flash_bytes)/${flash_bytes};k<0.05"|bc`
      fi
      
      if [ "$flag" == 1 ];then
        echo "$line $flash_duration $html5_duration $flash_bytes $html5_bytes" >> good_urls
      else
        echo "$line $flash_duration $html5_duration $flash_bytes $html5_bytes" >> urls  
      fi
      
    
    done < ${url_list}
    the process is:

    Code:
    ++ url_list=url.list
    ++ interface=eth0
    ++ ip_addr=138.86.201.109
    ++ index=0
    ++ capture_time=8
    ++ Firefox=/home/Application/firefox/firefox
    ++ read -r line
    ++ echo 'read vid is 04fcgFs-mjA'
    read vid is 04fcgFs-mjA
    +++ echo 04fcgFs-mjA
    +++ awk '{print $1}'
    ++ line=04fcgFs-mjA
    ++ echo 'vid is 04fcgFs-mjA'
    vid is 04fcgFs-mjA
    ++ index=1
    ++ sed -i 's/\(embed\/\).*\(?hl\)/\104fcgFs-mjA\2/' /tor_capture/html5.html
    ++ sed -i 's/\(www.youtube.com\/v\/\).*\(?hl\)/\104fcgFs-mjA\2/' /tor_capture/flash.html
    ++ sleep 8
    ++ tcpdump -i eth0 host 138.86.201.109 and 'port 80' -w flash/flash.pcap
    ++ sudo -u esolve /home/Application/firefox/firefox /tor_capture/flash.html
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    +++ ps -ef
    +++ awk '{print $2}'
    +++ grep -v grep
    +++ grep firefox
    ++ pid_firefox='9236
    9238
    9271'
    ++ kill -9 9236 9238 9271
    +++ awk '{print $2}'
    +++ grep -v grep
    +++ grep tcpdump
    +++ ps -ef
    ++ pid_tcpdump=9235
    ++ kill -9 9235
    ++ cd flash
    ++ tcpflow -r flash.pcap
    tcpflow[9335]: truncated dump file; tried to read 1514 captured bytes, only got 234
    ./test_vid.sh: line 145:  9235 Killed                  tcpdump -i $interface host $ip_addr and 'port 80' -w flash/flash.pcap  (wd: /user/esolve/home/tor/url_folder/select_url)
    ./test_vid.sh: line 145:  9236 Killed                  sudo -u esolve ${Firefox} /tor_capture/flash.html  (wd: /user/esolve/home/tor/url_folder/select_url)
    +++ find -name '???.???*'
    +++ xargs du -b
    +++ sort -n '-t ' -k1
    +++ awk '{print $2}'
    +++ tail -n1
    ++ maxfile=./173.194.020.215.00080-138.096.201.109.44113
    ++ echo ./173.194.020.215.00080-138.096.201.109.44113
    ./173.194.020.215.00080-138.096.201.109.44113
    +++ grep -a Content-Length ./173.194.020.215.00080-138.096.201.109.44113
    +++ sed 's/\r//g'
    +++ cut '-d ' -f2
    ++ flash_content_len=22177678
    ++ echo 'flash_content_len is 22177678'
    flash_content_len is 22177678
    +++ echo 22177678
    +++ sed 's/^[-+0-9][.0-9]*//'
    +++ wc -c
    ++ test_number=1
    ++ '[' '!' 1 -eq 1 -o 22177678 == '' ']'
    ++ '[' 22177678 -ge 500000 ']'
    ++ perl '-E1 until <> eq "\015\012"; print for <>'
    ++ ffmpeg -i video.swf -f ffmetadata info.txt
    +++ grep '^duration' info.txt
    +++ cut -d= -f2
    ++ flash_duration=205
    +++ grep bytelength info.txt
    +++ cut -d= -f2
    ++ flash_bytes=22177678
    +++ echo 205
    +++ sed 's/^[-+0-9][.0-9]*//'
    +++ wc -c
    ++ test_number=1
    ++ '[' '!' 1 -eq 1 -o 205 == '' ']'
    +++ echo 22177678
    +++ sed 's/^[-+0-9][.0-9]*//'
    +++ wc -c
    ++ test_number=1
    ++ '[' '!' 1 -eq 1 -o 22177678 == '' ']'
    ++ rm -rf 063.245.217.039.00080-138.096.201.109.41301 138.096.201.109.36016-173.194.078.095.00080 138.096.201.109.37591-173.194.034.005.00080 138.096.201.109.39814-173.194.034.004.00080 138.096.201.109.39819-173.194.034.004.00080 138.096.201.109.39820-173.194.034.004.00080 138.096.201.109.41301-063.245.217.039.00080 138.096.201.109.44113-173.194.020.215.00080 138.096.201.109.52561-173.194.034.000.00080 138.096.201.109.56449-193.051.224.014.00080 173.194.020.215.00080-138.096.201.109.44113 173.194.034.000.00080-138.096.201.109.52561 173.194.034.004.00080-138.096.201.109.39814 173.194.034.004.00080-138.096.201.109.39819 173.194.034.004.00080-138.096.201.109.39820 173.194.034.005.00080-138.096.201.109.37591 173.194.078.095.00080-138.096.201.109.36016 193.051.224.014.00080-138.096.201.109.56449 flash.pcap info.txt report.xml video.swf
    ++ cd ..
    ++ sleep 8
    ++ sleep 8
    ++ tcpdump -i eth0 host 138.86.201.109 and 'port 80' -w html5/html5.pcap
    ++ sudo -u esolve /home/Application/firefox/firefox /tor_capture/html5.html
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    +++ ps -ef
    +++ grep firefox
    +++ grep -v grep
    +++ awk '{print $2}'
    ++ pid_firefox='9383
    9385'
    ++ kill -9 9383 9385
    +++ ps -ef
    +++ awk '{print $2}'
    +++ grep tcpdump
    +++ grep -v grep
    ++ pid_tcpdump=9382
    ++ kill -9 9382
    ++ sleep 3
    ./test_vid.sh: line 145:  9383 Killed                  sudo -u esolve ${Firefox} /tor_capture/html5.html
    ++ cd html5
    ++ tcpflow -r html5.pcap
    tcpflow[9444]: truncated dump file; tried to read 1514 captured bytes, only got 846
    ./test_vid.sh: line 145:  9382 Killed                  tcpdump -i $interface host $ip_addr and 'port 80' -w html5/html5.pcap  (wd: /user/esolve/home/tor/url_folder/select_url)
    +++ find -name '???.???*'
    +++ xargs du -b
    +++ sort -n '-t ' -k1
    +++ tail -n1
    +++ awk '{print $2}'
    ++ maxfile=./173.194.020.053.00080-138.096.201.109.41767
    +++ grep -a Content-Length ./173.194.020.053.00080-138.096.201.109.41767
    +++ cut '-d ' -f2
    +++ sed 's/\r//g'
    ++ html5_content_len=38956777
    +++ echo 38956777
    +++ sed 's/^[-+0-9][.0-9]*//'
    +++ wc -c
    ++ test_number=1
    ++ '[' '!' 1 -eq 1 -o 38956777 == '' ']'
    ++ '[' 38956777 -ge 500000 ']'
    ++ perl '-E1 until <> eq "\015\012"; print for <>'
    +++ mkvinfo -v video.webm
    +++ grep Duration
    +++ cut -ds -f1
    +++ cut '-d ' -f2
    +++ cut -d: -f2
    ++ html5_duration=205.280
    +++ mkvinfo -v video.webm
    +++ grep 'Segment, size'
    +++ cut '-d ' -f4
    ++ html5_bytes=38956722
    +++ echo 205.280
    +++ sed 's/^[-+0-9][.0-9]*//'
    +++ wc -c
    ++ test_number=1
    ++ '[' '!' 1 -eq 1 -o 205.280 == '' ']'
    +++ echo 38956722
    +++ sed 's/^[-+0-9][.0-9]*//'
    +++ wc -c
    ++ test_number=1
    ++ '[' '!' 1 -eq 1 -o 38956722 == '' ']'
    ++ rm -rf 063.245.217.039.00080-138.096.201.109.41310 138.096.201.109.39823-173.194.034.004.00080 138.096.201.109.39831-173.194.034.004.00080 138.096.201.109.41310-063.245.217.039.00080 138.096.201.109.41767-173.194.020.053.00080 138.096.201.109.46714-173.194.034.013.00080 138.096.201.109.52569-173.194.034.000.00080 138.096.201.109.52570-173.194.034.000.00080 138.096.201.109.52571-173.194.034.000.00080 138.096.201.109.52572-173.194.034.000.00080 138.096.201.109.56458-193.051.224.014.00080 173.194.020.053.00080-138.096.201.109.41767 173.194.034.000.00080-138.096.201.109.52569 173.194.034.000.00080-138.096.201.109.52570 173.194.034.000.00080-138.096.201.109.52571 173.194.034.000.00080-138.096.201.109.52572 173.194.034.004.00080-138.096.201.109.39823 173.194.034.004.00080-138.096.201.109.39831 173.194.034.013.00080-138.096.201.109.46714 193.051.224.014.00080-138.096.201.109.56458 html5.pcap report.xml video.webm
    ++ cd ..
    ++ '[' 22177678 -lt 500000 -o 38956777 -lt 500000 ']'
    ++ '[' 22177678 -gt 38956722 ']'
    +++ echo 'scale=3;k=(38956722-22177678)/22177678;k<0.05'
    +++ bc
    ++ flag=0
    ++ '[' 0 == 1 ']'
    ++ echo '04fcgFs-mjA 205 205.280 22177678 38956722'
    ++ read -r line
    ++ echo 'read vid is IAhDGYlpqY'
    read vid is IAhDGYlpqY
    +++ echo IAhDGYlpqY
    +++ awk '{print $1}'
    ++ line=IAhDGYlpqY
    ++ echo 'vid is IAhDGYlpqY'
    vid is IAhDGYlpqY
    ++ index=2
    ++ sed -i 's/\(embed\/\).*\(?hl\)/\1IAhDGYlpqY\2/' /tor_capture/html5.html
    ++ sed -i 's/\(www.youtube.com\/v\/\).*\(?hl\)/\1IAhDGYlpqY\2/' /tor_capture/flash.html
    ++ sleep 8
    ++ tcpdump -i eth0 host 138.86.201.109 and 'port 80' -w flash/flash.pcap
    ++ sudo -u esolve /home/Application/firefox/firefox /tor_capture/flash.html
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    +++ ps -ef
    +++ grep firefox
    +++ grep -v grep
    +++ awk '{print $2}'
    ++ pid_firefox='9504
    9506'
    ++ kill -9 9504 9506
    +++ ps -ef
    +++ grep tcpdump
    +++ awk '{print $2}'
    +++ grep -v grep
    ++ pid_tcpdump=9503
    ++ kill -9 9503
    ++ cd flash
    ++ tcpflow -r flash.pcap
    tcpflow[9564]: truncated dump file; tried to read 1514 captured bytes, only got 549
    ./test_vid.sh: line 145:  9503 Killed                  tcpdump -i $interface host $ip_addr and 'port 80' -w flash/flash.pcap  (wd: /user/esolve/home/tor/url_folder/select_url)
    ./test_vid.sh: line 145:  9504 Killed                  sudo -u esolve ${Firefox} /tor_capture/flash.html  (wd: /user/esolve/home/tor/url_folder/select_url)
    +++ find -name '???.???*'
    +++ xargs du -b
    +++ tail -n1
    +++ sort -n '-t ' -k1
    +++ awk '{print $2}'
    ++ maxfile=./193.051.224.014.00080-138.096.201.109.56468
    ++ echo ./193.051.224.014.00080-138.096.201.109.56468
    ./193.051.224.014.00080-138.096.201.109.56468
    +++ grep -a Content-Length ./193.051.224.014.00080-138.096.201.109.56468
    +++ cut '-d ' -f2
    +++ sed 's/\r//g'
    ++ flash_content_len=300000
    ++ echo 'flash_content_len is 300000'
    flash_content_len is 300000
    +++ echo 300000
    +++ sed 's/^[-+0-9][.0-9]*//'
    +++ wc -c
    ++ test_number=1
    ++ '[' '!' 1 -eq 1 -o 300000 == '' ']'
    ++ '[' 300000 -ge 500000 ']'
    ++ rm -rf 063.245.217.039.00080-138.096.201.109.41320 138.096.201.109.39833-173.194.034.004.00080 138.096.201.109.41320-063.245.217.039.00080 138.096.201.109.56468-193.051.224.014.00080 173.194.034.004.00080-138.096.201.109.39833 193.051.224.014.00080-138.096.201.109.56468 flash.pcap report.xml
    ++ cd ..
    ++ sleep 8
    ++ sleep 8
    ++ tcpdump -i eth0 host 138.86.201.109 and 'port 80' -w html5/html5.pcap
    ++ sudo -u esolve /home/Application/firefox/firefox /tor_capture/html5.html
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    Last edited by esolve; 11-02-2012 at 05:46 PM.

  9. #9
    Linux Newbie
    Join Date
    Nov 2012
    Posts
    224
    I tried your script (anything but the while loop has been commented), and the script does run normally.
    Code:
    + url_list=url.list
    + interface=eth0
    + ip_addr=138.86.201.109
    + index=0
    + capture_time=8
    + Firefox=/auto/sop-nas2a/u/sop-nas2a/vol/home_planete/wgong/Application/firefox/firefox
    + read -r line
    + echo 'read vid is 4fcgFs-mjA'
    read vid is 4fcgFs-mjA
    ++ awk '{print $1}'
    ++ echo 4fcgFs-mjA
    + line=4fcgFs-mjA
    + echo 'vid is 4fcgFs-mjA'
    vid is 4fcgFs-mjA
    + read -r line
    + echo 'read vid is 0DZ7DbdeOeE'
    read vid is 0DZ7DbdeOeE
    ++ awk '{print $1}'
    ++ echo 0DZ7DbdeOeE
    + line=0DZ7DbdeOeE
    + echo 'vid is 0DZ7DbdeOeE'
    vid is 0DZ7DbdeOeE
    see if cat -A url.list prints something weird, but you say you tested other files, so I don't know.

    try to add a shebang, like #!/bin/bash if bash is under /bin/, at the top of the script, so kernel know it's bash that have to execute the script.

  10. #10
    Just Joined!
    Join Date
    May 2012
    Posts
    85
    cat -A url.list
    and I get
    Code:
    04fcgFs-mjA$
    1IAhDGYlpqY$
    1Vajuce8nyU$
    1Y_wJR1I-9s$
    2dn-ULkQl5M$
    2GmVajkqLNU$
    2X85PdfQqnM$
    37LAPz7pnQI$
    3gbJde2Itxk$
    I think it is normal?

Page 1 of 2 1 2 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •