0138 | function get url ผ่าน https ใช้แทน curl
Monday, December 17th, 2012 Posted in Misc | No Comments »วันก่อนเจอบั๊กระหว่าง curl + openssl + centos 6 นิดหน่อย
ที่ทำให้ curl และ app ทุกอย่างที่ใช้ libcurl ต่อไปหา server ที่เป็น https บางตัวบนบางเงื่อนไขไม่ได้
หาข้อมูลไปก็พบว่าต้องไปแก้ที่ฝั่ง server (จะบ้าเรอะ server ชาวบ้าน) ไม่ก็ต้องแก้ code ใหม่ให้ใช้ library อย่างอื่นแทน ก็เลยเกิดมาเป็น function นี้ครับ
มี requirement นิดหน่อยคือ PHP 5.3.4 ขึ้นไป และ เปิด allow_url_fopen ไว้ใน php.ini
feature
=> custom header ได้
=> รองรับ cookie โดยอัตโนมัติ
=> method ได้ทั้ง get และ post (รวมถึง post แบบใส่ data ด้วย)
=> url ได้ทั้ง http และ https (มี validate url เผื่อไว้ด้วย)
=> บังคับ verify ssl certificate ที่ฝั่งปลายทางด้วยว่า cert ถูกต้อง (file get content ปกติจะไม่ verify)
=> ใช้ ca file ของ OS (แก้ได้)
<?php function httpquery($url, $method = 'GET', $headers = array(), $body = '', $returnheader = false, $followlocation = true){ global $cookies; $reqinfo = parse_url($url); if (empty($reqinfo['host']) || empty($reqinfo['path'])) return false; if (empty($reqinfo['scheme'])) $reqinfo['scheme'] = 'http'; if ($reqinfo['scheme'] != 'http' && $reqinfo['scheme'] != 'https') { trigger_error("Unsupported scheme '".$reqinfo['scheme']."'"); return false; } if (empty($reqinfo['port'])) { if ($reqinfo['scheme'] == 'https') $reqinfo['port'] = 443; else $reqinfo['port'] = 80; } $headers['User-Agent'] = (!isset($headers['User-Agent']) ? 'Mozilla/4.0 (compatible; icez.net http client)' : $headers['User-Agent']); $headers['Host'] = $reqinfo['host']; $headers['Accept'] = '*/*'; $cdata = array(); foreach($cookies as $ckey => $cval) { $cdata[] = $ckey.'='.$cval; } $headers['Cookie'] = implode('; ', $cdata); // http_build_query($cookies); unset($cdata); if ($method == 'POST') { $headers['Content-Type'] = (isset($headers['Content-Type']) ? $headers['Content-Type'] : 'application/x-www-form-urlencoded'); } $headerstring = ''; foreach ($headers as $header => $content) { $headerstring .= $header.': '.$content."\r\n"; } $reqpath = $reqinfo['path'].(isset($reqinfo['query']) ? '?'.$reqinfo['query'] : ''); $opts = array('ssl' => array( 'verify_peer' => true, 'cafile' => '/etc/pki/tls/certs/ca-bundle.crt' ), 'http' => array( 'method' => $method, 'follow_location' => ($followlocation ? 1 : 0), 'ignore_errors' => true, 'timeout' => 15, 'header' => $headerstring ) ); if (!empty($body)) $opts['http']['content'] = $body; $context = stream_context_create($opts); $stream = fopen($url, 'r', false, $context); $meta = stream_get_meta_data($stream); $content = stream_get_contents($stream); if (!is_array($meta['wrapper_data'])) { trigger_error("Invalid HTTP Header Response"); } $header = ''; foreach($meta['wrapper_data'] as $header) { if (strpos($header, ':') !== false) { $line = explode(':', $header, 2); if (strtolower($line[0]) == 'set-cookie') { $cookie = explode(';', trim($line[1]), 2); if (strpos($cookie[0], '=') !== false) { //valid cookie $cdata = explode('=', $cookie[0], 2); $cookies[$cdata[0]] = $cdata[1]; } } } } fclose($stream); if ($returnheader) $content = implode("\r\n", $meta['wrapper_data'])."\r\n\r\n".$content; return $content; } ?> |
0136 | ผังการใช้งานความถี่โทรศัพท์มือถือค่ายต่างๆ ในไทย
Friday, November 23rd, 2012 Posted in Misc | No Comments »ข้อมูลเรียบเรียงจากเว็บไซต์ของทาง กสทช ที่ประกาศออกมาหลายปีแล้วนะครับ
http://www2.nbtc.go.th/phocadownload/telecomm_eng/telecom_engineer/Table_of_Frequency004.pdf
ย่าน 850 MHz
ความถี่ 824-849 , 869-894 MHz (2 x 25MHz)
=> CAT เป็นเจ้าของความถี่ แบ่งคลื่นเป็น 3 ส่วนคือ
=> 2x10MHz สำหรับประกอบกิจการเอง ให้บริการในชื่อ mybycat (เค้าบอกว่างั้น) และแบ่งขายความจุ 80% ให้ Truemove H
=> 2x10MHz สัมปทานให้ DTAC
=> 2x5MHz สัมปทานให้ Truemove
ย่าน 900 MHz
ความถี่ 897.5-915 , 942.5-960 (2 x 17.5MHz)
=> TOT เป็นเจ้าของความถี่ สัมปทานทั้งหมดให้ AIS ใช้งานระบบ 2G และ 3G อยู่
ย่าน 1800 MHz
ทั้งย่านเป็นสัมปทานภายใต้ CAT มี bandwidth รวม 2x75MHz แบ่งดังนี้
=> 1710.0-1722.6 , 1805.0-1817.6 MHz (2 x 12.6 MHz)
สัมปทานให้ Truemove หมดอายุปี 2556
=> 1722.6-1747.9 , 1817.6-1842.9 MHz (2 x 25.3 MHz)
สัมปทานให้ DTAC หมดอายุปี 2561
=> 1747.9-1760.5 , 1842.9-1855.5 MHz (2 x 12.6 MHz)
สัมปทานให้ DPC หรือ GSM1800 หมดอายุปี 2556
=> 1760.5-1785.0 , 1855.5-1880.0 MHz (2 x 24.5 MHz)
สัมปทานให้ DTAC หมดอายุปี 2561
ย่าน 1900 MHz
=> 1885.0-1900.0 (15 MHz) * paired with 1965.0-1980.0 MHz but conflict with 2100 MHz below
เป็นย่านของ Thai Mobile (TH ACT 1900) ที่ยกเลิกการใช้งานไปแล้ว เนื่องจากคลื่น upper band ถูกนำไปใช้เป็น lower band ของย่าน 2100 ด้านล่าง
ย่าน 2100 MHz
=> 1965.0-1980.0 , 2155.0-2170.0 MHz (2 x 15 MHz)
ในความครอบครองของ TOT ให้บริการ TOT3G อยู่ในขณะนี้
สรุปรวมแต่ละค่ายมีความถี่ดังนี้
AIS ย่าน 900 MHz ขนาด 2×17.5MHz และย่าน 1800 MHz ขนาด 2×12.6MHz (รวม 2 x 30.1 MHz)
DTAC ย่าน 850 MHz ขนาด 2x10MHz และย่าน 1800 MHz ขนาด 2×49.8MHz (รวม 2 x 59.8 MHz)
Truemove ย่าน 850 MHz ขนาด 2x5MHz และย่าน 1800 ขนาด 2×12.6MHz (รวม 2 x 17.6 MHz)
CAT (และ Truemove H) ย่าน 850 MHz ขนาด 2×10 MHz (รวม 2 x 10 MHz)
TOT ย่าน 2100 MHz ขนาด 2x15MHz (รวม 2 x 15 MHz)
รวมความถี่ทั้งหมดที่ใช้ในการให้บริการโทรศัพท์มือถือบ้านเรา มี bandwidth ทั้งสิ้น 2 x 132.5 MHz ครับ
และถ้า กสทช ออกใบอนุญาตคลื่น 2100 MHz เรียบร้อยแล้ว เราจะได้ bandwidth มาเพิ่มอีก 2 x 45 MHz รวมเป็น 2 x 177.5 MHz (เพิ่มขึ้นอีก 34%)
Tags: 3g, frequency, mobile, nbtc, telecommunication