summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorJesse Gilles <jgilles@multitech.com>2015-04-20 17:14:31 -0500
committerJesse Gilles <jgilles@multitech.com>2015-04-20 17:14:31 -0500
commitd84d880627bcc1e1898a8f96b861bc25863ec86c (patch)
treee7db4eef6a8e8254eaa6ba0c7e5d56098af19d16 /scripts
downloadlibmts-io-d84d880627bcc1e1898a8f96b861bc25863ec86c.tar.gz
libmts-io-d84d880627bcc1e1898a8f96b861bc25863ec86c.tar.bz2
libmts-io-d84d880627bcc1e1898a8f96b861bc25863ec86c.zip
initial commit
Diffstat (limited to 'scripts')
-rw-r--r--scripts/create-mcc-mnc-table.py106
1 files changed, 106 insertions, 0 deletions
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 ""
+
+
+
+
+