Solve issue:mic has error when env no_proxy is 165.xx.xxx... 77/150877/1
authoryuhuan.yang <yuhuan.yang@123.com>
Tue, 23 May 2017 15:33:47 +0000 (23:33 +0800)
committeryangyuhuan <yuhuan.yang@samsung.com>
Tue, 19 Sep 2017 11:51:20 +0000 (19:51 +0800)
Change-Id: I76abf3db3854b8d6a2db369a762650712efd14df

mic/utils/proxy.py

index 63b5f63..92ef8d2 100644 (file)
@@ -18,6 +18,7 @@
 import os
 import re
 import urlparse
+from mic import msger
 
 _my_proxies = {}
 _my_noproxy = None
@@ -103,6 +104,28 @@ def _set_noproxy_list():
     _my_noproxy_list = []
     if not _my_noproxy:
         return
+
+    #solve in /etc/enviroment contains command like `echo 165.xxx.xxx.{1..255} | sed 's/ /,/g'``
+    _my_noproxy_bak = _my_noproxy
+    start = _my_noproxy.find("`")
+    while(start < len(_my_noproxy) and start != -1):
+        start = _my_noproxy.find("`",start)
+        end = _my_noproxy.find("`",start+1)
+        cmd = _my_noproxy[start+1:end]
+        pstr = _my_noproxy[start:end+1]
+        start = end + 1
+
+        _my_noproxy=_my_noproxy.replace(pstr,len(pstr)*" ")
+        try:
+            c_result = os.popen(cmd).readlines()
+            if len(c_result) == 0:
+                continue
+        except Exception,e:
+            msger.warning(str(e))
+            continue
+        to_list = c_result[0].strip("\n").split(",")
+        _my_noproxy_list.extend(to_list)
+
     for item in _my_noproxy.split(","):
         item = item.strip()
         if not item:
@@ -138,6 +161,7 @@ def _set_noproxy_list():
                 ip &= netmask
 
             _my_noproxy_list.append({"match":2, "needle":ip, "netmask":netmask})
+    _my_noproxy = _my_noproxy_bak
 
 def _isnoproxy(url):
     host = urlparse.urlparse(url)[1]