From d84d880627bcc1e1898a8f96b861bc25863ec86c Mon Sep 17 00:00:00 2001
From: Jesse Gilles <jgilles@multitech.com>
Date: Mon, 20 Apr 2015 17:14:31 -0500
Subject: initial commit

---
 scripts/create-mcc-mnc-table.py | 106 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 106 insertions(+)
 create mode 100644 scripts/create-mcc-mnc-table.py

(limited to 'scripts')

diff --git a/scripts/create-mcc-mnc-table.py b/scripts/create-mcc-mnc-table.py
new file mode 100644
index 0000000..761454c
--- /dev/null
+++ b/scripts/create-mcc-mnc-table.py
@@ -0,0 +1,106 @@
+#Generates MTS_IO_MccMncTable.cpp file by pulling latest MCC/MNC values
+#from http://mcc-mnc.com
+
+#Original Source Idea: https://github.com/musalbas/mcc-mnc-table
+
+
+import re
+import urllib2
+import datetime
+
+print "/*!"
+print " \\file MTS_IO_MccMncTable.cpp"
+print " \\brief Auto-Generated MCC-MNC Lookup Table"
+print " \\date " + str(datetime.date.today())
+print " \\author sgodinez"
+print ""
+print " An Auto-Generated MCC-MNC Lookup Table"
+print "*/"
+print ""
+print "#include <mts/MTS_IO_MccMncTable.h>"
+print "#include <mts/MTS_Logger.h>"
+print "#include <mts/MTS_Text.h>"
+print ""
+print "using namespace MTS::IO;"
+print ""
+print "MTS::AutoPtr<MTS::Lock> MccMncTable::m_apLock(new MTS::Lock());"
+print "MccMncTable* MccMncTable::m_pInstance = NULL;"
+print ""
+print "MccMncTable* MccMncTable::getInstance() {"
+print "    if(m_pInstance == NULL) {"
+print "        m_apLock->lock();"
+print "        if (m_pInstance == NULL) {"
+print "            m_pInstance = new MccMncTable();"
+print "        }"
+print "        m_apLock->unlock();"
+print "    }"
+print "    return m_pInstance;"
+print "}"
+print ""
+print "MccMncTable::MccMncTable() {"
+print "    createTable();"
+print "}"
+print ""
+print "Json::Value MccMncTable::lookup(const std::string& sMcc, const std::string& sMnc) {"
+print "    uint32_t iMcc, iMnc;"
+print '    printTrace("[MCCMNC] MCCx[%s] MNCx[%s]", sMcc.c_str(), sMnc.c_str());'
+print "    if(!MTS::Text::parseHex(iMcc, sMcc)) { return Json::Value::null; }"
+print "    if(!MTS::Text::parseHex(iMnc, sMnc)) { return Json::Value::null; }"
+print '    printTrace("[MCCMNC] MCC0X[%d] MNC0X[%d]", iMcc, iMnc);'
+print "    if (m_mTable.count(iMcc)) {"
+print "        if(m_mTable[iMcc].count(iMnc)) {"
+print "            std::vector<std::string> vJson = MTS::Text::split(m_mTable[iMcc][iMnc], ',');"
+print "            Json::Value j;"
+print '            j["iso"] = vJson[0];'
+print '            j["country"] = vJson[1];'
+print '            j["code"] = vJson[2];'
+print '            j["carrier"] = vJson[3];'
+print "            return j;"
+print "        }"
+print "    }"
+print ""
+print "    return Json::Value::null;"
+print "}"
+print ""
+print "void MccMncTable::createTable() {"
+print "    std::string sData;"
+
+td_re = re.compile('<td>([^<]*)</td>'*6)
+
+html = urllib2.urlopen('http://mcc-mnc.com/').read()
+
+tbody_start = False
+for line in html.split('\n'):
+    if '<tbody>' in line:
+        tbody_start = True
+    elif '</tbody>' in line:
+        break
+    elif tbody_start:
+        td_search = td_re.search(line)
+        mcc = td_search.group(1).strip().replace(',','')
+        mnc = td_search.group(2).strip().replace(',','')
+        iso = td_search.group(3).strip().replace(',','')
+        countryCode = td_search.group(4).strip().replace(',','')
+        country = td_search.group(5).strip().replace(',','')
+        carrier = td_search.group(6).strip().replace(',','')
+
+        if mnc != "n/a":
+            mcc_int = int(mcc, 16)
+            if len(mnc) == 2:
+                mnc_int = int(mnc + 'f', 16)
+            else:
+                mnc_int = int(mnc, 16)
+            print '    m_mTable[' + str(mcc_int) + '][' + str(mnc_int) + '] = "' + \
+                  iso + ',' + countryCode + ',' + country + ',' + carrier + '";'
+        else:           
+            print "    //MCC(" + mcc + ') MNC(N/A) ISO(' + iso + ') Country Code(' + countryCode + ') Country(' + country + ') Carrier(' + carrier + ')'
+
+
+
+print "}"
+print ""
+
+
+
+
+
-- 
cgit v1.2.3