51 lines
3.1 KiB
Python
51 lines
3.1 KiB
Python
from tiramisu import IPOption, PortOption, BoolOption, ChoiceOption, DomainnameOption, \
|
|
URLOption, NetworkOption, NetmaskOption, \
|
|
SymLinkOption, OptionDescription, Leadership, Config
|
|
|
|
|
|
proxy_mode = ChoiceOption('proxy_mode', 'Proxy\'s config mode', ('No proxy',
|
|
'Manual proxy configuration',
|
|
'Automatic proxy configuration URL'),
|
|
properties=('positional', 'mandatory'))
|
|
http_ip_address = IPOption('http_ip_address', 'Proxy\'s HTTP IP', properties=('mandatory',))
|
|
http_ip_short = SymLinkOption('i', http_ip_address)
|
|
http_port = PortOption('http_port', 'Proxy\'s HTTP Port', default='8080', properties=('mandatory',))
|
|
http_port_short = SymLinkOption('p', http_port)
|
|
manual_proxy = OptionDescription('manual_proxy', 'Manual proxy settings', [http_ip_address, http_ip_short, http_port, http_port_short],
|
|
requires=[{'option': proxy_mode, 'expected': 'Manual proxy configuration', 'action':'disabled', 'inverse':True}])
|
|
|
|
auto_config_url = URLOption('auto_config_url','Proxy\'s auto config URL', properties=('mandatory',))
|
|
auto_config_url_short = SymLinkOption('i', auto_config_url)
|
|
automatic_proxy = OptionDescription('automatic_proxy', 'Automatic proxy setting',
|
|
[auto_config_url, auto_config_url_short],
|
|
requires=[{'option': proxy_mode, 'expected': 'Automatic proxy configuration URL', 'action':'disabled', 'inverse': True}])
|
|
|
|
configuration = OptionDescription('configuration', None,
|
|
[manual_proxy, automatic_proxy])
|
|
|
|
no_proxy_domain = DomainnameOption('no_proxy_domain', 'Domain names for which proxy will be desactivated', multi=True)
|
|
no_proxy_network = NetworkOption('no_proxy_network', 'Network addresses', multi=True)
|
|
no_proxy_network_short = SymLinkOption('n', no_proxy_network)
|
|
no_proxy_netmask = NetmaskOption('no_proxy_netmask', 'Netmask addresses', multi=True, properties=('mandatory',))
|
|
no_proxy_network_leadership = Leadership('no_proxy_network', 'Network for which proxy will be desactivated', [no_proxy_network, no_proxy_netmask])
|
|
no_proxy = OptionDescription('no_proxy', 'Disabled proxy',
|
|
[no_proxy_domain, no_proxy_network_leadership],
|
|
requires=[{'option': proxy_mode, 'expected': 'No proxy', 'action':'disabled'}, {'option': proxy_mode, 'expected': None, 'action':'disabled'}])
|
|
|
|
dns_over_https = BoolOption('dns_over_https', 'Enable DNS over HTTPS', default=False)
|
|
|
|
root = OptionDescription('proxy', 'Proxy parameters',
|
|
[proxy_mode, configuration, no_proxy, dns_over_https])
|
|
|
|
def display_name(option, dyn_name):
|
|
return "--" + option.impl_getpath()
|
|
|
|
proxy_config = Config(root, display_name=display_name)
|
|
proxy_config.property.read_write()
|
|
|
|
from tiramisu_cmdline_parser import TiramisuCmdlineParser
|
|
parser = TiramisuCmdlineParser(proxy_config)
|
|
parser.parse_args()
|
|
|
|
from pprint import pprint
|
|
pprint(proxy_config.value.dict())
|