def _update_opener(self, url): ''' Builds and installs a new opener to be used by all future calls to :func:`urllib2.urlopen`. ''' opener=None if self._http_debug: http = urllib2.HTTPHandler(debuglevel=1) else: http = urllib2.HTTPHandler() if self._socket_class or self._proxy: if self._socket_class: urllib2.socket.socket = self._socket_class if self._proxy: opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self._cj), urllib2.ProxyHandler({'http': self._proxy}), urllib2.HTTPBasicAuthHandler(), http) else: from entertainment.plugnplay.interfaces import ProxySupport #common.loadplugins([ProxySupport]) internetConnectionSettings = common.GetiStreamSettings(common.settings_Internet_Connection) # lets check if the url is from a proxy support extension supported=None for item in ProxySupport.implementors(): for domain in item.domains: if url.lower().startswith(domain.lower()): supported=item break if supported: break if supported: #lets check if proxy defined proxy_index_on_item = int(internetConnectionSettings.Settings().get_setting(supported.name)) if proxy_index_on_item > 0: lp_item = 'lp_%s' % str(proxy_index_on_item) lp_enabled = internetConnectionSettings.Settings().get_setting(lp_item) if lp_enabled and lp_enabled == 'true': lp_ct = int (internetConnectionSettings.Settings().get_setting(lp_item + '_connection_type')) if lp_ct == 0: lp_ct_p_ip = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_p_ip') lp_ct_p_port = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_p_port') lp_ct_p_username = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_p_username') lp_ct_p_password = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_p_password') lp_ct_p_socks5 = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_p_socks5') opener = self._prepare_proxy(lp_ct_p_ip,lp_ct_p_port,lp_ct_p_username,lp_ct_p_password,lp_ct_p_socks5=='true') elif lp_ct == 1: dnsproxy = [] lp_ct_dp_ip1 = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_dp_ip1') lp_ct_dp_ip2 = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_dp_ip2') lp_ct_dp_ip3 = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_dp_ip3') if lp_ct_dp_ip1: dnsproxy.append(lp_ct_dp_ip1) if lp_ct_dp_ip2: dnsproxy.append(lp_ct_dp_ip2) if lp_ct_dp_ip3: dnsproxy.append(lp_ct_dp_ip3) opener = self._prepare_dns_proxy(dnsproxy) elif lp_ct == 2: selected_wp = internetConnectionSettings.Settings().get_setting(lp_item + '_ct_wp') from entertainment.plugnplay.interfaces import WebProxy common.loadplugins([WebProxy]) for wp in WebProxy.implementors(): if wp.name == selected_wp: self._web_proxy = wp break if not opener and not self._web_proxy: # local proxy not available lets check global proxy gp_enabled = internetConnectionSettings.Settings().get_setting('global_proxy') if gp_enabled and gp_enabled == 'true': gp_item='gp' gp_ct = int(internetConnectionSettings.Settings().get_setting(gp_item + '_connection_type')) if gp_ct == 0: gp_ct_p_ip = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_p_ip') gp_ct_p_port = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_p_port') gp_ct_p_username = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_p_username') gp_ct_p_password = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_p_password') gp_ct_p_socks5 = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_p_socks5') opener = self._prepare_proxy(gp_ct_p_ip,gp_ct_p_port,gp_ct_p_username,gp_ct_p_password,gp_ct_p_socks5=='true') elif gp_ct == 1: dnsproxy = [] gp_ct_dp_ip1 = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_dp_ip1') gp_ct_dp_ip2 = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_dp_ip2') gp_ct_dp_ip3 = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_dp_ip3') if gp_ct_dp_ip1: dnsproxy.append(gp_ct_dp_ip1) if gp_ct_dp_ip2: dnsproxy.append(gp_ct_dp_ip2) if gp_ct_dp_ip3: dnsproxy.append(gp_ct_dp_ip3) opener = self._prepare_dns_proxy(dnsproxy) elif gp_ct == 2: selected_wp = internetConnectionSettings.Settings().get_setting(gp_item + '_ct_wp') from entertainment.plugnplay.interfaces import WebProxy common.loadplugins([WebProxy]) for wp in WebProxy.implementors(): if wp.name == selected_wp: self._web_proxy = wp break if not opener: opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self._cj), urllib2.HTTPBasicAuthHandler(), http) urllib2.install_opener(opener)
def Initialize(self): xml = '<settings>\n' xml += '<category label="Global Proxy">\n' xml += '<setting type="sep"/>\n' xml += '<setting id="global_proxy" type="bool" label="Global Proxy" default="false"/>\n' from entertainment.plugnplay.interfaces import WebProxy webproxy_count = len(WebProxy.implementors()) if webproxy_count > 0: ct_enum = 'Proxy|DNS Proxy|Web Proxy' else: ct_enum = 'Proxy|DNS Proxy' xml += '<setting id="gp_connection_type" type="enum" values="%s" label=" Connection Type" default="0" visible="eq(-1,true)"/>\n' % ct_enum xml += '<setting id="gp_ct_p_ip" type="ipaddress" label=" Proxy IP" default="" visible="eq(-2,true) + eq(-1,0)"/>\n' xml += '<setting id="gp_ct_p_port" type="number" label=" Port" default="" visible="eq(-3,true) + eq(-2,0)"/>\n' xml += '<setting id="gp_ct_p_username" type="text" label=" Username" default="" visible="eq(-4,true) + eq(-3,0)"/>\n' xml += '<setting id="gp_ct_p_password" type="text" label=" Password" default="" visible="eq(-5,true) + eq(-4,0)"/>\n' xml += '<setting id="gp_ct_dp_ip1" type="ipaddress" label=" Primary DNS" default="" visible="eq(-6,true) + eq(-5,1)"/>\n' xml += '<setting id="gp_ct_dp_ip2" type="ipaddress" label=" Secondary DNS" default="" visible="eq(-7,true) + eq(-6,1)"/>\n' xml += '<setting id="gp_ct_dp_ip3" type="ipaddress" label=" Tertiary DNS" default="" visible="eq(-8,true) + eq(-7,1)"/>\n' xml += '<setting id="gp_ct_p_socks5" type="bool" label=" Socks 5" default="false" visible="eq(-9,true) + eq(-8,0)"/>\n' if webproxy_count > 0: wp_enum = '' wp_enum_f = True for wp in WebProxy.implementors(): if wp_enum_f == True: wp_enum_f = False else: wp_enum += '|' wp_enum += wp.name xml += '<setting id="gp_ct_wp" type="labelenum" values="%s" label=" Web Proxy Provider" default="0" visible="eq(-10,true) + eq(-9,2)"/>\n' % wp_enum xml += '<setting type="sep"/>\n' xml += '</category>\n' proxy_selection = "Global Proxy" xml += '<category label="More Proxies">\n' xml += '<setting type="sep"/>\n' for x in range(0, 8): i = str(x + 1) proxy_selection += '|' + 'Proxy %s' % i xml += '<setting id="lp_%s" type="bool" label="Proxy %s" default="false"/>\n' % ( i, i) xml += '<setting id="lp_%s_connection_type" type="enum" values="%s" label=" Connection Type" default="0" visible="eq(-1,true)"/>\n' % ( i, ct_enum) xml += '<setting id="lp_%s_ct_p_ip" type="ipaddress" label=" Proxy IP" default="" visible="eq(-2,true) + eq(-1,0)"/>\n' % i xml += '<setting id="lp_%s_ct_p_port" type="number" label=" Port" default="" visible="eq(-3,true) + eq(-2,0)"/>\n' % i xml += '<setting id="lp_%s_ct_p_username" type="text" label=" Username" default="" visible="eq(-4,true) + eq(-3,0)"/>\n' % i xml += '<setting id="lp_%s_ct_p_password" type="text" label=" Password" default="" visible="eq(-5,true) + eq(-4,0)"/>\n' % i xml += '<setting id="lp_%s_ct_dp_ip1" type="ipaddress" label=" Primary DNS" default="" visible="eq(-6,true) + eq(-5,1)"/>\n' % i xml += '<setting id="lp_%s_ct_dp_ip2" type="ipaddress" label=" Secondary DNS" default="" visible="eq(-7,true) + eq(-6,1)"/>\n' % i xml += '<setting id="lp_%s_ct_dp_ip3" type="ipaddress" label=" Tertiary DNS" default="" visible="eq(-8,true) + eq(-7,1)"/>\n' % i xml += '<setting id="lp_%s_ct_p_socks5" type="bool" label=" Socks 5" default="false" visible="eq(-9,true) + eq(-8,0)"/>\n' % i if webproxy_count > 0: xml += '<setting id="lp_%s_ct_wp" type="labelenum" values="%s" label=" Web Proxy Provider" default="0" visible="eq(-10,true) + eq(-9,2)"/>\n' % ( i, wp_enum) xml += '<setting type="sep"/>\n' xml += '</category>\n' xml += '<category label="Proxy Assignments">\n' xml += '<setting type="sep"/>\n' i = 0 for item in ProxySupport.implementors(): i += 1 xml += '<setting id="%s" type="enum" label="%s" values="%s" default="0"/>\n' % ( item.name, item.display_name, proxy_selection) #xml += '<setting id="domain_%s" type="text" label="Domain %s" default="%s" visible="false"/>\n' % (str(i), str(i), ','+','.join(item.domains)+',__psid__'+item.name) #xml += '<setting id="domain_count" type="number" label="Domain Counte" default="%s" visible="false"/>\n' % i xml += '<setting type="sep"/>\n' xml += '</category>\n' xml += '</settings>\n' self.CreateSettings('Internet Connection', common.settings_Internet_Connection, xml)
def _update_opener(self, url): ''' Builds and installs a new opener to be used by all future calls to :func:`urllib2.urlopen`. ''' opener = None if self._http_debug: http = urllib2.HTTPHandler(debuglevel=1) else: http = urllib2.HTTPHandler() if self._socket_class or self._proxy: if self._socket_class: urllib2.socket.socket = self._socket_class if self._proxy: opener = urllib2.build_opener( urllib2.HTTPCookieProcessor(self._cj), urllib2.ProxyHandler({'http': self._proxy}), urllib2.HTTPBasicAuthHandler(), http) else: from entertainment.plugnplay.interfaces import ProxySupport #common.loadplugins([ProxySupport]) internetConnectionSettings = common.GetiStreamSettings( common.settings_Internet_Connection) # lets check if the url is from a proxy support extension supported = None for item in ProxySupport.implementors(): for domain in item.domains: if url.lower().startswith(domain.lower()): supported = item break if supported: break if supported: #lets check if proxy defined proxy_index_on_item = int( internetConnectionSettings.Settings().get_setting( supported.name)) if proxy_index_on_item > 0: lp_item = 'lp_%s' % str(proxy_index_on_item) lp_enabled = internetConnectionSettings.Settings( ).get_setting(lp_item) if lp_enabled and lp_enabled == 'true': lp_ct = int( internetConnectionSettings.Settings().get_setting( lp_item + '_connection_type')) if lp_ct == 0: lp_ct_p_ip = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_p_ip') lp_ct_p_port = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_p_port') lp_ct_p_username = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_p_username') lp_ct_p_password = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_p_password') lp_ct_p_socks5 = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_p_socks5') opener = self._prepare_proxy( lp_ct_p_ip, lp_ct_p_port, lp_ct_p_username, lp_ct_p_password, lp_ct_p_socks5 == 'true') elif lp_ct == 1: dnsproxy = [] lp_ct_dp_ip1 = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_dp_ip1') lp_ct_dp_ip2 = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_dp_ip2') lp_ct_dp_ip3 = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_dp_ip3') if lp_ct_dp_ip1: dnsproxy.append(lp_ct_dp_ip1) if lp_ct_dp_ip2: dnsproxy.append(lp_ct_dp_ip2) if lp_ct_dp_ip3: dnsproxy.append(lp_ct_dp_ip3) opener = self._prepare_dns_proxy(dnsproxy) elif lp_ct == 2: selected_wp = internetConnectionSettings.Settings( ).get_setting(lp_item + '_ct_wp') from entertainment.plugnplay.interfaces import WebProxy common.loadplugins([WebProxy]) for wp in WebProxy.implementors(): if wp.name == selected_wp: self._web_proxy = wp break if not opener and not self._web_proxy: # local proxy not available lets check global proxy gp_enabled = internetConnectionSettings.Settings().get_setting( 'global_proxy') if gp_enabled and gp_enabled == 'true': gp_item = 'gp' gp_ct = int( internetConnectionSettings.Settings().get_setting( gp_item + '_connection_type')) if gp_ct == 0: gp_ct_p_ip = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_p_ip') gp_ct_p_port = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_p_port') gp_ct_p_username = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_p_username') gp_ct_p_password = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_p_password') gp_ct_p_socks5 = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_p_socks5') opener = self._prepare_proxy(gp_ct_p_ip, gp_ct_p_port, gp_ct_p_username, gp_ct_p_password, gp_ct_p_socks5 == 'true') elif gp_ct == 1: dnsproxy = [] gp_ct_dp_ip1 = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_dp_ip1') gp_ct_dp_ip2 = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_dp_ip2') gp_ct_dp_ip3 = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_dp_ip3') if gp_ct_dp_ip1: dnsproxy.append(gp_ct_dp_ip1) if gp_ct_dp_ip2: dnsproxy.append(gp_ct_dp_ip2) if gp_ct_dp_ip3: dnsproxy.append(gp_ct_dp_ip3) opener = self._prepare_dns_proxy(dnsproxy) elif gp_ct == 2: selected_wp = internetConnectionSettings.Settings( ).get_setting(gp_item + '_ct_wp') from entertainment.plugnplay.interfaces import WebProxy common.loadplugins([WebProxy]) for wp in WebProxy.implementors(): if wp.name == selected_wp: self._web_proxy = wp break if not opener: opener = urllib2.build_opener( urllib2.HTTPCookieProcessor(self._cj), urllib2.HTTPBasicAuthHandler(), http) urllib2.install_opener(opener)
def Initialize(self): xml = '<settings>\n' xml += '<category label="Global Proxy">\n' xml += '<setting type="sep"/>\n' xml += '<setting id="global_proxy" type="bool" label="Global Proxy" default="false"/>\n' from entertainment.plugnplay.interfaces import WebProxy webproxy_count = len(WebProxy.implementors()) if webproxy_count > 0: ct_enum = 'Proxy|DNS Proxy|Web Proxy' else: ct_enum = 'Proxy|DNS Proxy' xml += '<setting id="gp_connection_type" type="enum" values="%s" label=" Connection Type" default="0" visible="eq(-1,true)"/>\n' % ct_enum xml += '<setting id="gp_ct_p_ip" type="ipaddress" label=" Proxy IP" default="" visible="eq(-2,true) + eq(-1,0)"/>\n' xml += '<setting id="gp_ct_p_port" type="number" label=" Port" default="" visible="eq(-3,true) + eq(-2,0)"/>\n' xml += '<setting id="gp_ct_p_username" type="text" label=" Username" default="" visible="eq(-4,true) + eq(-3,0)"/>\n' xml += '<setting id="gp_ct_p_password" type="text" label=" Password" default="" visible="eq(-5,true) + eq(-4,0)"/>\n' xml += '<setting id="gp_ct_dp_ip1" type="ipaddress" label=" Primary DNS" default="" visible="eq(-6,true) + eq(-5,1)"/>\n' xml += '<setting id="gp_ct_dp_ip2" type="ipaddress" label=" Secondary DNS" default="" visible="eq(-7,true) + eq(-6,1)"/>\n' xml += '<setting id="gp_ct_dp_ip3" type="ipaddress" label=" Tertiary DNS" default="" visible="eq(-8,true) + eq(-7,1)"/>\n' xml += '<setting id="gp_ct_p_socks5" type="bool" label=" Socks 5" default="false" visible="eq(-9,true) + eq(-8,0)"/>\n' if webproxy_count > 0: wp_enum = '' wp_enum_f = True for wp in WebProxy.implementors(): if wp_enum_f == True: wp_enum_f = False else: wp_enum += '|' wp_enum += wp.name xml += '<setting id="gp_ct_wp" type="labelenum" values="%s" label=" Web Proxy Provider" default="0" visible="eq(-10,true) + eq(-9,2)"/>\n' % wp_enum xml += '<setting type="sep"/>\n' xml += '</category>\n' proxy_selection = "Global Proxy" xml += '<category label="More Proxies">\n' xml += '<setting type="sep"/>\n' for x in range(0, 8): i = str(x+1) proxy_selection += '|' + 'Proxy %s' % i xml += '<setting id="lp_%s" type="bool" label="Proxy %s" default="false"/>\n' % (i, i) xml += '<setting id="lp_%s_connection_type" type="enum" values="%s" label=" Connection Type" default="0" visible="eq(-1,true)"/>\n' % (i, ct_enum) xml += '<setting id="lp_%s_ct_p_ip" type="ipaddress" label=" Proxy IP" default="" visible="eq(-2,true) + eq(-1,0)"/>\n' % i xml += '<setting id="lp_%s_ct_p_port" type="number" label=" Port" default="" visible="eq(-3,true) + eq(-2,0)"/>\n' % i xml += '<setting id="lp_%s_ct_p_username" type="text" label=" Username" default="" visible="eq(-4,true) + eq(-3,0)"/>\n' % i xml += '<setting id="lp_%s_ct_p_password" type="text" label=" Password" default="" visible="eq(-5,true) + eq(-4,0)"/>\n' % i xml += '<setting id="lp_%s_ct_dp_ip1" type="ipaddress" label=" Primary DNS" default="" visible="eq(-6,true) + eq(-5,1)"/>\n' % i xml += '<setting id="lp_%s_ct_dp_ip2" type="ipaddress" label=" Secondary DNS" default="" visible="eq(-7,true) + eq(-6,1)"/>\n' % i xml += '<setting id="lp_%s_ct_dp_ip3" type="ipaddress" label=" Tertiary DNS" default="" visible="eq(-8,true) + eq(-7,1)"/>\n' % i xml += '<setting id="lp_%s_ct_p_socks5" type="bool" label=" Socks 5" default="false" visible="eq(-9,true) + eq(-8,0)"/>\n' % i if webproxy_count > 0: xml += '<setting id="lp_%s_ct_wp" type="labelenum" values="%s" label=" Web Proxy Provider" default="0" visible="eq(-10,true) + eq(-9,2)"/>\n' % (i, wp_enum) xml += '<setting type="sep"/>\n' xml += '</category>\n' xml += '<category label="Proxy Assignments">\n' xml += '<setting type="sep"/>\n' i=0 for item in ProxySupport.implementors(): i += 1 xml += '<setting id="%s" type="enum" label="%s" values="%s" default="0"/>\n' % (item.name, item.display_name, proxy_selection) #xml += '<setting id="domain_%s" type="text" label="Domain %s" default="%s" visible="false"/>\n' % (str(i), str(i), ','+','.join(item.domains)+',__psid__'+item.name) #xml += '<setting id="domain_count" type="number" label="Domain Counte" default="%s" visible="false"/>\n' % i xml += '<setting type="sep"/>\n' xml += '</category>\n' xml += '</settings>\n' self.CreateSettings('Internet Connection', common.settings_Internet_Connection, xml)