本文整理汇总了Python中neubot.config.CONFIG.copy方法的典型用法代码示例。如果您正苦于以下问题:Python CONFIG.copy方法的具体用法?Python CONFIG.copy怎么用?Python CONFIG.copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类neubot.config.CONFIG
的用法示例。
在下文中一共展示了CONFIG.copy方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _do_run_queue
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def _do_run_queue(self, first_elem):
''' Actually run first element in queue '''
# Make a copy of current settings
conf = CONFIG.copy()
# Make sure we abide to M-Lab policy
if privacy.count_valid(conf, 'privacy.') != 3:
privacy.complain()
raise RuntimeError('runner_core: bad privacy settings')
elif first_elem[0] == 'rendezvous':
runner_rendezvous.run(conf['agent.master'], '9773')
elif first_elem[0] == 'speedtest':
uri = RUNNER_TESTS.test_to_negotiate_uri('speedtest')
conf['speedtest.client.uri'] = uri
client = ClientSpeedtest(POLLER)
client.configure(conf)
client.connect_uri()
elif first_elem[0] == 'bittorrent':
uri = RUNNER_TESTS.test_to_negotiate_uri('bittorrent')
conf['bittorrent._uri'] = uri
bittorrent.run(POLLER, conf)
elif first_elem[0] == 'dload':
RunnerDload(first_elem[2])
elif first_elem[0] == 'raw':
address = RUNNER_HOSTS.get_random_host()
handler = RawNegotiate()
handler.connect((address, 8080), CONFIG['prefer_ipv6'], 0, {})
elif first_elem[0] == 'mlab-ns':
handler = RunnerMlabns()
if not first_elem[2]:
extra = {'policy': ''} # get closest server by default
else:
extra = first_elem[2]
handler.connect(('mlab-ns.appspot.com', 80),
CONFIG['prefer_ipv6'], 0, extra)
elif first_elem[0] in self.dynamic_tests:
address = RUNNER_HOSTS.get_random_host()
port = 80 # XXX
self.dynamic_tests[first_elem[0]]["test_func"]({
"address": address,
"conf": CONFIG.copy(),
"poller": POLLER,
"port": port,
})
else:
raise RuntimeError('runner_core: asked to run an unknown test')
示例2: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
CONFIG.register_descriptions({
"speedtest.client.uri": "Base URI to connect to",
"speedtest.client.nconn": "Number of concurrent connections to use",
"speedtest.client.latency_tries": "Number of latency measurements",
})
common.main("speedtest.client", "Speedtest client", args)
conf = CONFIG.copy()
#
# If possible use the runner, which will execute the
# test in the context of the neubot daemon. Then exit
# to bypass the POLLER.loop() invokation that is below
# here.
# If the runner fails, fallback to the usual code path,
# which executes the test in the context of the local
# process.
# Set 'runned.enabled' to 0 to bypass the runner and
# run the test locally.
#
if (utils.intify(conf['runner.enabled']) and
runner_clnt.runner_client(conf["agent.api.address"],
conf["agent.api.port"],
LOG.noisy, "speedtest")):
sys.exit(0)
LOG.info('Will run the test in the local context...')
client = ClientSpeedtest(POLLER)
client.configure(conf)
client.connect_uri()
POLLER.loop()
示例3: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
CONFIG.register_descriptions({
"speedtest.negotiate.address": "Address to listen to",
"speedtest.negotiate.auth_only": "Enable doing tests for authorized clients only",
"speedtest.negotiate.daemonize": "Enable going in background",
"speedtest.negotiate.port": "Port to listen to",
})
common.main("speedtest.negotiate", "Speedtest negotiation server", args)
conf = CONFIG.copy()
server = ServerSpeedtest(POLLER)
server.configure(conf)
server.listen((conf["speedtest.negotiate.address"],
conf["speedtest.negotiate.port"]))
if conf["speedtest.negotiate.daemonize"]:
system.change_dir()
system.go_background()
LOG.redirect()
system.drop_privileges(LOG.error)
POLLER.loop()
示例4: __init__
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def __init__(self, ctx):
''' Download a file '''
self.ctx = ctx
ClientHTTP.__init__(self, POLLER)
self.configure(CONFIG.copy())
logging.debug('runner_dload: GET %s', self.ctx['uri'])
self.connect_uri(self.ctx['uri'])
示例5: start_api
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def start_api(address=None, port=None):
''' Starts API for background module '''
logging.debug('background_api: starting API server...')
# Honor /etc/neubot/api
settings = utils_rc.parse_safe(utils_hier.APIFILEPATH)
if not address:
address = settings.get('address', '::1 127.0.0.1')
if not port:
port = settings.get('port', '9774')
# Configure HTTP server
conf = CONFIG.copy()
logging.debug('background_api: API server rootdir: %s',
utils_hier.WWWDIR)
conf['http.server.rootdir'] = utils_hier.WWWDIR
conf['http.server.ssi'] = True
conf['http.server.bind_or_die'] = True
HTTP_SERVER.configure(conf)
# Bind HTTP server to API server
HTTP_SERVER.register_child(API_SERVER, '/api')
# Bind HTTP server to address and port
HTTP_SERVER.listen((address, port))
logging.debug('background_api: starting API server... done')
示例6: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
CONFIG.register_descriptions({
"rendezvous.server.address": "Set rendezvous server address",
"rendezvous.server.daemonize": "Enable daemon behavior",
"rendezvous.server.ports": "List of rendezvous server ports",
"rendezvous.server.update_uri": "Where to download updates from",
"rendezvous.server.update_version": "Update Neubot version number",
"rendezvous.geoip_wrapper.country_database": "Path of the GeoIP country database",
"rendezvous.server.default": "Default test server to use",
})
common.main("rendezvous.server", "Rendezvous server", args)
conf = CONFIG.copy()
HTTP_SERVER.configure(conf)
for port in conf["rendezvous.server.ports"].split(","):
HTTP_SERVER.listen((conf["rendezvous.server.address"], int(port)))
# Really start this module
run(POLLER, conf)
if conf["rendezvous.server.daemonize"]:
system.change_dir()
system.go_background()
LOG.redirect()
system.drop_privileges(LOG.error)
POLLER.loop()
示例7: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
''' main() function of this module '''
CONFIG.register_descriptions({
"http.server.address": "Address to listen to",
"http.server.class": "Use alternate ServerHTTP-like class",
"http.server.mime": "Enable code that guess mime types",
"http.server.ports": "List of ports to listen to",
"http.server.rootdir": "Root directory for static pages",
"http.server.ssi": "Enable server-side includes",
})
common.main("http.server", "Neubot simple HTTP server", args)
conf = CONFIG.copy()
HTTP_SERVER.configure(conf)
if conf["http.server.rootdir"] == ".":
conf["http.server.rootdir"] = os.path.abspath(".")
for port in conf["http.server.ports"].split(","):
if port:
HTTP_SERVER.listen((conf["http.server.address"], int(port)))
POLLER.loop()
示例8: __init__
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def __init__(self, ctx):
""" Download a file """
self.ctx = ctx
ClientHTTP.__init__(self, POLLER)
self.configure(CONFIG.copy())
logging.info("runner_dload: connecting to %s", self.ctx["uri"])
self.connect_uri(self.ctx["uri"])
示例9: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
""" Main function """
if not system.has_enough_privs():
sys.exit('FATAL: you must be root')
common.main("agent", "Run in background, periodically run tests", args)
conf = CONFIG.copy()
privacy.complain_if_needed()
BACKEND.use_backend("neubot")
BACKEND.datadir_init()
# FIXME We're ignoring agent.api.{address,port} that are now
# deprecated and should be removed soon.
background_api.start_api()
if conf["agent.daemonize"]:
LOG.redirect()
system.go_background()
if conf["agent.use_syslog"]:
LOG.redirect()
#
# When we run as an agent we also save logs into
# the database, to easily access and show them via
# the web user interface.
#
LOG.use_database()
logging.info('%s for POSIX: starting up', utils_version.PRODUCT)
system.drop_privileges()
if os.getuid() == 0 or os.geteuid() == 0:
logging.error('agent: still running as root')
os._exit(1)
if conf["agent.rendezvous"]:
BACKGROUND_RENDEZVOUS.start()
POLLER.loop()
logging.info('%s for POSIX: shutting down', utils_version.PRODUCT)
LOG.writeback()
#
# Make sure that we do not leave the database
# in an inconsistent state.
#
DATABASE.close()
示例10: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
CONFIG.register_descriptions({
"api.client.address": "Set address to connect to",
"api.client.port": "Set port to connect to",
})
common.main("api.client", "Minimal client for JSON API", args)
client = APIStateTracker(POLLER)
client.configure(CONFIG.copy())
client.loop()
示例11: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
CONFIG.register_descriptions({
# General variables
"net.stream.certfile": "Set SSL certfile path",
"net.stream.ipv6": "Enable IPv6",
"net.stream.key": "Set key for ARC4",
"net.stream.secure": "Enable SSL",
"net.stream.server_side": "Enable SSL server-side mode",
"net.stream.rcvbuf": "Set sock recv buffer (0 = use default)",
"net.stream.sndbuf": "Set sock send buffer (0 = use default)",
# For main()
"net.stream.address": "Set client or server address",
"net.stream.chunk": "Chunk written by each write",
"net.stream.clients": "Set number of client connections",
"net.stream.daemonize": "Enable daemon behavior",
"net.stream.duration": "Set duration of a test",
"net.stream.listen": "Enable server mode",
"net.stream.port": "Set client or server port",
"net.stream.proto": "Set proto (chargen, discard, or echo)",
})
common.main("net.stream", "TCP bulk transfer test", args)
conf = CONFIG.copy()
endpoint = (conf["net.stream.address"], conf["net.stream.port"])
if not conf["net.stream.proto"]:
if conf["net.stream.listen"]:
conf["net.stream.proto"] = "chargen"
else:
conf["net.stream.proto"] = "discard"
elif conf["net.stream.proto"] not in ("chargen", "discard", "echo"):
common.write_help(sys.stderr, "net.stream", "TCP bulk transfer test")
sys.exit(1)
handler = GenericHandler(POLLER)
handler.configure(conf)
if conf["net.stream.listen"]:
if conf["net.stream.daemonize"]:
system.change_dir()
system.go_background()
LOG.redirect()
system.drop_privileges(LOG.error)
conf["net.stream.server_side"] = True
handler.listen(endpoint)
else:
handler.connect(endpoint, count=conf["net.stream.clients"])
POLLER.loop()
sys.exit(0)
示例12: _do_run_queue
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def _do_run_queue(self):
''' Actually run first element in queue '''
# Make a copy of current settings
conf = CONFIG.copy()
# Make sure we abide to M-Lab policy
if privacy.count_valid(conf, 'privacy.') != 3:
privacy.complain()
raise RuntimeError('Bad privacy settings')
# Run rendezvous
elif self.queue[0][0] == 'rendezvous':
uri = "http://%s:9773/rendezvous" % conf['agent.master']
runner_rendezvous.run(uri)
# Run speedtest
elif self.queue[0][0] == 'speedtest':
uri = RUNNER_TESTS.test_to_negotiate_uri('speedtest')
#
# If we have no negotiate URI for this test, possibly
# because we are offline, abort it.
#
if not uri:
raise RuntimeError('No negotiate URI for speedtest')
conf['speedtest.client.uri'] = uri
client = ClientSpeedtest(POLLER)
client.configure(conf)
client.connect_uri()
# Run bittorrent
elif self.queue[0][0] == 'bittorrent':
uri = RUNNER_TESTS.test_to_negotiate_uri('bittorrent')
#
# If we have no negotiate URI for this test, possibly
# because we are offline, abort it.
#
if not uri:
raise RuntimeError('No negotiate URI for bittorrent')
conf['bittorrent._uri'] = uri
bittorrent.run(POLLER, conf)
# Run dload
elif self.queue[0][0] == 'dload':
RunnerDload(self.queue[0][2])
# Safety net
else:
raise RuntimeError('Asked to run an unknown test')
示例13: check
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def check(updates):
''' Raises ConfigError if the user is trying to update the
privacy settings in a wrong way '''
# Merge a copy of config with privacy settings
conf = CONFIG.copy()
for key in PRIVACYKEYS:
if key in updates:
conf[key] = utils.intify(updates[key])
# Extract privacy settings from such copy
informed = utils.intify(conf.get("privacy.informed", 0))
can_collect = utils.intify(conf.get("privacy.can_collect", 0))
can_share = utils.intify(conf.get("privacy.can_share", 0))
if not informed:
# When you're not informed you cannot raise the other settings
if can_collect or can_share:
raise ConfigError("You cannot set can_collect or can_share "
"without asserting that you are informed")
else:
# It's not possible to share if you don't agree to collect
if can_share and not can_collect:
raise ConfigError("You cannot set can_share without also "
"setting can_collect (how are we supposed "
"to share what we cannot collect)?")
# You must give the can_collect bit
if not can_collect:
raise ConfigError("You must agree to collect or Neubot "
"cannot work. You should uninstall Neubot "
"if you don't want it to collect")
# You cannot remove the informed bit
if utils.intify(CONFIG['privacy.informed']) and not informed:
raise ConfigError("Once you're informed you cannot step back")
# You cannot remove the can_collect bit
if utils.intify(CONFIG['privacy.can_collect']) and not can_collect:
raise ConfigError("You can't remove the can_collect bit because "
"Neubot cannot work. You should uninstall Neubot "
"if you don't want it to collect")
示例14: run_queue
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def run_queue(self):
''' If possible run the first test in queue '''
# Adapted from neubot/rendezvous/client.py
if not self.queue:
return
if self.running:
return
#
# Subscribe BEFORE starting the test, otherwise we
# may miss the 'testdone' event if the connection
# to the negotiator service fails, and we will stay
# stuck forever.
#
NOTIFIER.subscribe('testdone', self.test_done)
# Prevent concurrent tests
self.running = True
# Make a copy of current settings
conf = CONFIG.copy()
# Make sure we abide to M-Lab policy
if privacy.count_valid(conf, 'privacy.') != 3:
privacy.complain()
NOTIFIER.publish('testdone')
# Run speedtest
elif self.queue[0][0] == 'speedtest':
conf['speedtest.client.uri'] = self.queue[0][1]
client = ClientSpeedtest(POLLER)
client.configure(conf)
client.connect_uri()
# Run bittorrent
elif self.queue[0][0] == 'bittorrent':
conf['bittorrent._uri'] = self.queue[0][1]
bittorrent.run(POLLER, conf)
# Safety net
else:
LOG.error('Asked to run an unknown test')
NOTIFIER.publish('testdone')
示例15: main
# 需要导入模块: from neubot.config import CONFIG [as 别名]
# 或者: from neubot.config.CONFIG import copy [as 别名]
def main(args):
config.register_descriptions()
common.main("bittorrent", "Neubot BitTorrent module", args)
conf = CONFIG.copy()
config.finalize_conf(conf)
if conf["bittorrent.listen"]:
#
# If we need to negotiate and we're runing
# standalone we also need to bring up the
# global HTTP server.
#
if conf["bittorrent.negotiate"]:
HTTP_SERVER.configure(conf)
HTTP_SERVER.listen((conf["bittorrent.address"],
conf["bittorrent.negotiate.port"]))
conf["negotiate.listen"] = True
negotiate.run(POLLER, conf)
#
# Drop privileges after listen() so we can
# bind() to privileged ports
#
if conf["bittorrent.daemonize"]:
system.change_dir()
system.go_background()
LOG.redirect()
system.drop_privileges(LOG.error)
else:
#
# When we're connecting to a remote host to perform a test
# we want Neubot to quit at the end of the test. When this
# happens the test code publishes the "testdone" event, so
# here we prepare to intercept the event and break our main
# loop.
#
NOTIFIER.subscribe("testdone", lambda event, ctx: POLLER.break_loop())
run(POLLER, conf)
POLLER.loop()