Commit d8d03f5a authored by George Kadianakis's avatar George Kadianakis
Browse files

Address inconsistent capitalization (OnionBalance -> Onionbalance)

parent 8c83d488
......@@ -33,7 +33,7 @@
0.1.7
-----
- Add functionality to reconnect to the Tor control port while OnionBalance is
- Add functionality to reconnect to the Tor control port while Onionbalance is
running. Thank you to Ceysun Sucu for the patch. #45
- Fix bug where instance descriptors were not updated correctly when an
instance address was listed under multiple master service. #49
......@@ -55,7 +55,7 @@
0.1.5
-----
- Log error when OnionBalance does not have permission to read a private key. #34
- Log error when Onionbalance does not have permission to read a private key. #34
- Fix bug loading descriptors when an address with .onion extension is listed
in the configuration file. #37
- Add support for connecting to the Tor control port over a unix domain socket. #3
......@@ -65,7 +65,7 @@
- Use setproctitle to set a cleaner process title
- Replace the python-schedule dependency with a custom scheduler.
- Add a Unix domain socket which outputs the status of the OnionBalance
- Add a Unix domain socket which outputs the status of the Onionbalance
service when a client connects. By default this socket is created at
`/var/run/onionbalance/control`. Thank you to Federico Ceratto for the
original socket implementation.
......@@ -101,7 +101,7 @@
-----
- Remove dependency on the schedule package to prepare for packaging
OnionBalance in Debian. The schedule code is now included directly in
Onionbalance in Debian. The schedule code is now included directly in
onionbalance/schedule.py.
- Fix the executable path in the help messages for onionbalance and
onionbalance-config.
......
.. image:: obv3_logo.jpg
OnionBalance
Onionbalance
============
Introduction
------------
OnionBalance allows Tor onion service requests to be distributed across
multiple backend Tor instances. OnionBalance provides load-balancing while also
Onionbalance allows Tor onion service requests to be distributed across
multiple backend Tor instances. Onionbalance provides load-balancing while also
making onion services more resilient and reliable by eliminating single
points-of-failure.
......
......@@ -74,7 +74,7 @@ source_encoding = 'utf-8-sig'
master_doc = 'index'
# General information about the project.
project = 'OnionBalance'
project = 'Onionbalance'
# Remove copyright notice for man page
copyright = ''
......@@ -149,7 +149,7 @@ if on_rtd:
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
html_short_title = "OnionBalance Docs"
html_short_title = "Onionbalance Docs"
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
......
......@@ -4,16 +4,16 @@ Contributors
============
Thank you to the following contributors and others for their invaluble help
and advice in developing OnionBalance. Contributions of any kind (code,
and advice in developing Onionbalance. Contributions of any kind (code,
documentation, testing) are very welcome.
* `Donncha Ó Cearbhaill <https://github.com/DonnchaC/>`_
- Original author and maintainer of OnionBalance!!!
- Original author and maintainer of Onionbalance!!!
* `Federico Ceratto <https://github.com/FedericoCeratto>`_
- Tireless assistance with Debian packaging and OnionBalance improvements.
- Tireless assistance with Debian packaging and Onionbalance improvements.
- Replaced and reimplemented the job scheduler.
- Implemented support for Unix signals and added a status socket to
retrieve information about the running service.
......@@ -24,19 +24,19 @@ documentation, testing) are very welcome.
* `s7r <https://github.com/gits7r>`_
- Assisted in testing and load testing OnionBalance from an early stage.
- Assisted in testing and load testing Onionbalance from an early stage.
- Many useful suggestions for performance and usability improvements.
* `Ceysun Sucu <https://github.com/csucu>`_
- Added code to reconnect to the Tor control port while OnionBalance is
- Added code to reconnect to the Tor control port while Onionbalance is
running.
* `Alec Muffett <https://github.com/alecmuffett>`_
- Extensively tested OnionBalance, found many bugs and made many
- Extensively tested Onionbalance, found many bugs and made many
suggestions to improve the software.
* `duritong <https://github.com/duritong>`_
- Packaged OnionBalance for Fedora, CentOS, and Redhat 7 (EPEL repository).
- Packaged Onionbalance for Fedora, CentOS, and Redhat 7 (EPEL repository).
......@@ -8,9 +8,9 @@
Overview
========
OnionBalance is the best way to load balance onion services across multiple
Onionbalance is the best way to load balance onion services across multiple
backend Tor instances. This way the load of introduction and rendezvous
requests get distributed across multiple hosts. OnionBalance provides
requests get distributed across multiple hosts. Onionbalance provides
load-balancing while also making onion services more resilient and reliable by
eliminating single points-of-failure.
......@@ -18,7 +18,7 @@ eliminating single points-of-failure.
- Repository: https://gitlab.torproject.org/tpo/core/onionbalance
- GitHub mirror: https://github.com/asn-d6/onionbalance/
- Issue tracker: https://github.com/asn-d6/onionbalance/issues
- PyPI: https://pypi.org/project/OnionBalance/
- PyPI: https://pypi.org/project/Onionbalance/
- IRC: #tor-dev @ OFTC
Quickstart
......
......@@ -25,7 +25,7 @@ Files
-----
master/config.yaml
This is the configuration file that is used my the OnionBalance management
This is the configuration file that is used my the Onionbalance management
server.
master/<ONION_ADDRESS>.key
......@@ -48,5 +48,5 @@ srv/<ONION_ADDRESS>/private_key
See Also
--------
Full documentation for the **OnionBalance** software is available at
Full documentation for the **Onionbalance** software is available at
https://onionbalance.readthedocs.org/
Onionbalance Use Cases
==========================
There a many ways to use OnionBalance to increase the scalability, reliability and security of your onion service. The following are some examples of what is
There a many ways to use Onionbalance to increase the scalability, reliability and security of your onion service. The following are some examples of what is
possible.
......@@ -42,7 +42,7 @@ Other Examples
Research
--------
`Ceysun Sucu <https://github.com/csucu>`_ has analysed OnionBalance and other
`Ceysun Sucu <https://github.com/csucu>`_ has analysed Onionbalance and other
approaches to onion service scaling in his masters thesis
`Tor\: Onion Service Scaling <https://www.benthamsgaze.org/wp-content/uploads/2015/11/sucu-torscaling.pdf>`_. The thesis provides a good overview of current approaches. It is a recommended read for those
interested in higher performance onion services.
......@@ -35,7 +35,7 @@ Master Descriptor
An onion service descriptor published with the desired onion address
containing introduction points for each instance.
Management Server
Server running OnionBalance which collates introduction points and
Server running Onionbalance which collates introduction points and
publishes a master descriptor.
Metadata Channel
A direct connection from an instance to a management server which can
......@@ -44,7 +44,7 @@ Metadata Channel
Retrieving Introduction Point Data
----------------------------------
The core functionality of the OnionBalance service is the collation of
The core functionality of the Onionbalance service is the collation of
introduction point data from multiple onion service instances by the
management server.
......@@ -107,7 +107,7 @@ Limitations
introduction points.
- It is trivial for a HSDir to determine that a onion service is using
OnionBalance. OnionBalance will try poll for instance descriptors on a
Onionbalance. Onionbalance will try poll for instance descriptors on a
regular basis. A HSDir which connects to onion services published to it
would find that a backend instance is serving the same content as the master
service. This allows a HSDir to trivially determine the onion addresses for
......@@ -116,7 +116,7 @@ Limitations
Onionbalance allows for scaling across multiple onion service instances with no
additional software or Tor modifications necessary on the onion service
instance. Onionbalance does not hide that a service is using OnionBalance. It
instance. Onionbalance does not hide that a service is using Onionbalance. It
also does not significantly protect a service from introduction point denial of
service or actively malicious HSDirs.
......@@ -125,7 +125,7 @@ Choice of Introduction Points
-----------------------------
Tor onion service descriptors can include a maximum of 10 introduction
points. OnionBalance should select introduction points so as to
points. Onionbalance should select introduction points so as to
uniformly distribute load across the available backend instances.
Onionbalance will upload multiple distinct descriptors if you have configured
......@@ -142,9 +142,9 @@ more than 10 instances.
Always attempting to choose 3 introduction points per descriptor may make it
more difficult for a passive observer to confirm that a service is running
OnionBalance. However behavioral characteristics such as the rate of
Onionbalance. However behavioral characteristics such as the rate of
introduction point rotation may still allow a passive observer to distinguish
an OnionBalance service from a standard Tor onion service. Selecting a smaller
an Onionbalance service from a standard Tor onion service. Selecting a smaller
set of introduction points may impact on performance or reliability of the
service.
......
.. _in_depth_v2:
OnionBalance In-depth Tutorial (v2)
Onionbalance In-depth Tutorial (v2)
===================================
This is a step-by-step tutorial to help you configure OnionBalance for v2 onions.
This is a step-by-step tutorial to help you configure Onionbalance for v2 onions.
OnionBalance implements `round-robin` like load balancing on top of Tor
onion services. A typical OnionBalance deployment will incorporate one management
Onionbalance implements `round-robin` like load balancing on top of Tor
onion services. A typical Onionbalance deployment will incorporate one management
servers and multiple backend application servers.
.. note ::
......@@ -21,7 +21,7 @@ Assumptions
You want to run:
- one or more OnionBalance processes, to perform load balancing, on hosts
- one or more Onionbalance processes, to perform load balancing, on hosts
named ``obhost1``, ``obhost2``.
- two or more Tor processes, to run the Onion Services, on hosts named
``torhost1``, ``torhost2``.
......@@ -44,7 +44,7 @@ Scaling down:
Reliability:
Contrarily to traditional load balancers, the OnionBalance daemon does not
Contrarily to traditional load balancers, the Onionbalance daemon does not
receive and forward traffic. As such, ``obhostX`` does not need to be in
proximity to ``torhostX`` and can be run from any location on the Internet.
Failure of ``obhostX`` will not affect the service as long as either one
......@@ -55,7 +55,7 @@ Other assumptions:
- the hosts run Debian or Ubuntu
- there is no previous configuration
Configuring the OnionBalance host
Configuring the Onionbalance host
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On ``obhost1``:
......@@ -96,7 +96,7 @@ Copy the ``instance_torrc`` and ``private_key`` files from each of the
directories named ``./config/srv1``, ``./config/srv2``,.. on ``obhost1``
to ``torhostX`` - the contents of one directory for each ``torhostX``.
Configure and start the services - the onion service on OnionBalance should
Configure and start the services - the onion service on Onionbalance should
be ready within 10 minutes.
Monitoring
......
......@@ -3,14 +3,14 @@
Installing Onionbalance
===========================
OnionBalance requires at least one system that is running the OnionBalance
Onionbalance requires at least one system that is running the Onionbalance
management server.
The OnionBalance software does not need to be installed on the
The Onionbalance software does not need to be installed on the
backend servers which provide the onion service content (i.e. web site,
IRC server etc.).
OnionBalance is not yet packaged for most Linux and BSD. The tool can be
Onionbalance is not yet packaged for most Linux and BSD. The tool can be
installed from PyPI or directly from the Git repository:
.. code-block:: console
......@@ -26,7 +26,7 @@ or
# python setup.py install
If you are running Debian Jessie (with backports enabled) or later you
can install OnionBalance with the following command:
can install Onionbalance with the following command:
.. code-block:: console
......@@ -56,4 +56,4 @@ All tagged releases on Github or PyPi are signed with my GPG key:
sub 3072R/0x7D49FC2C759AA659 2013-06-27 [expires: 2016-07-11]
sub 3072R/0x2C9C6F4ABBFCF7DD 2013-06-27 [expires: 2016-07-11]
Now that OnionBalance is installed, please move to :ref:`installing_tor`.
Now that Onionbalance is installed, please move to :ref:`installing_tor`.
......@@ -12,7 +12,7 @@ instance.
Management Server
~~~~~~~~~~~~~~~~~
OnionBalance requires that a recent version of Tor (``>= 0.2.7.1-alpha``) is
Onionbalance requires that a recent version of Tor (``>= 0.2.7.1-alpha``) is
installed on the management server system. This version might not be available
in your operating system's repositories yet.
......@@ -21,7 +21,7 @@ It is recommended that you install Tor from the
to ensure you stay up to date with the latest Tor releases.
The management server need to have its control port enabled to allow
the OnionBalance daemon to talk to the Tor process. This can be done by
the Onionbalance daemon to talk to the Tor process. This can be done by
uncommenting the ``ControlPort`` option in your ``torrc`` configuration file.
Alternatively you can replace your ``torrc`` file with the following
......
.. _running_onionbalance:
Running OnionBalance
Running Onionbalance
====================
.. toctree::
......@@ -11,7 +11,7 @@ Running OnionBalance
Description
-----------
You can start the OnionBalance management server once all of your backend
You can start the Onionbalance management server once all of your backend
onion service instances are running.
You will need to create a :ref:`configuration file <configuration_file_format>`
......@@ -34,7 +34,7 @@ onionbalance setup.
.. note::
Multiple OnionBalance management servers can be run simultaneously with
Multiple Onionbalance management servers can be run simultaneously with
the same master private key and configuration file to provide redundancy.
.. _configuration_file_format:
......@@ -42,7 +42,7 @@ onionbalance setup.
Configuration File Format
-------------------------
The OnionBalance management server is primarily configured using a YAML
The Onionbalance management server is primarily configured using a YAML
configuration file.
.. literalinclude:: ../../onionbalance/config_generator/data/config.example.yaml
......@@ -51,7 +51,7 @@ configuration file.
The ``services`` section of the configuration file contains a list of
master onion services that OnionBalance is responsible for.
master onion services that Onionbalance is responsible for.
Each ``key`` option specifies the location of the 1024 bit private RSA key
for the onion service. This master private key determines the address
......@@ -61,7 +61,7 @@ be kept secure.
The location of the private key is evaluated as an absolute path, or
relative to the configuration file location.
You can use existing Tor onion service private key with OnionBalance
You can use existing Tor onion service private key with Onionbalance
to keep your onion address.
Each backend Tor onion service instance is listed by its unique onion
......@@ -85,12 +85,12 @@ you can simply use the generated config file from ``master/config.yaml``.
Configuration Options
~~~~~~~~~~~~~~~~~~~~~
The OnionBalance command line options can also be specified in the
OnionBalance configuration file. Options specified on the command line
The Onionbalance command line options can also be specified in the
Onionbalance configuration file. Options specified on the command line
take precedence over the related configuration file options:
TOR_CONTROL_SOCKET:
The location of the Tor unix domain control socket. OnionBalance will
The location of the Tor unix domain control socket. Onionbalance will
attempt to connect to this control socket first before falling back to
using a control port connection.
(default: /var/run/tor/control)
......@@ -110,7 +110,7 @@ TOR_CONTROL_PASSWORD:
Other options:
LOG_LOCATION
The path where OnionBalance should write its log file.
The path where Onionbalance should write its log file.
LOG_LEVEL
Specify the minimum verbosity of log messages to output. All log messages
......@@ -128,7 +128,7 @@ PUBLISH_CHECK_INTERVAL
the master onion service (default: 360 seconds).
INITIAL_DELAY
How long to wait between starting OnionBalance and publishing the master
How long to wait between starting Onionbalance and publishing the master
descriptor. If you have more than 20 backend instances you may need to wait
longer for all instance descriptors to download before starting
(default: 45 seconds).
......@@ -139,7 +139,7 @@ DISTINCT_DESCRIPTORS
standard onion service. (default: True)
STATUS_SOCKET_LOCATION
The OnionBalance service creates a Unix domain socket which provides
The Onionbalance service creates a Unix domain socket which provides
real-time information about the currently loaded service and descriptors.
This option can be used to change the location of this domain socket.
(default: /var/run/onionbalance/control)
......@@ -169,7 +169,7 @@ Environment Variables
~~~~~~~~~~~~~~~~~~~~~
ONIONBALANCE_CONFIG
Override the location for the OnionBalance configuration file.
Override the location for the Onionbalance configuration file.
The loaded configuration file takes precedence over environment variables.
Configuration file options will override environment variable which have the
......@@ -201,5 +201,5 @@ config.yaml
See Also
--------
Full documentation for the **OnionBalance** software is available at
Full documentation for the **Onionbalance** software is available at
https://onionbalance.readthedocs.org/
......@@ -12,21 +12,21 @@ Onionbalance v2 Installation Guide
in-depth
design
OnionBalance implements `round-robin` like load balancing on top of Tor
onion services. A typical OnionBalance deployment will incorporate one management
Onionbalance implements `round-robin` like load balancing on top of Tor
onion services. A typical Onionbalance deployment will incorporate one management
servers and multiple backend application servers.
Architecture
------------
The management server runs the OnionBalance daemon. OnionBalance combines the routing information (the introduction points) for multiple backend onion services instances and publishes this information in a master descriptor.
The management server runs the Onionbalance daemon. Onionbalance combines the routing information (the introduction points) for multiple backend onion services instances and publishes this information in a master descriptor.
.. image:: ../../onionbalance.png
The backend application servers run a standard Tor onion service. When a client connects to the public onion service they select one of the introduction points at random. When the introduction circuit completes the user is connected to the corresponding backend instance.
**Management Server**
is the machine running the OnionBalance daemon. It needs to have access to the onion
is the machine running the Onionbalance daemon. It needs to have access to the onion
service private key corresponding for the desired onion address. This is the public onion address that users will request.
This machine can be located geographically isolated from the machines
......@@ -37,10 +37,10 @@ The backend application servers run a standard Tor onion service. When a client
.. note::
The :ref:`onionbalance-config <onionbalance_config>` tool can be used to
quickly generate keys and config files for your OnionBalance deployment.
quickly generate keys and config files for your Onionbalance deployment.
The OnionBalance tool provide two command line tools:
The Onionbalance tool provide two command line tools:
**onionbalance** acts as a long running daemon.
......@@ -51,4 +51,4 @@ The OnionBalance tool provide two command line tools:
Getting Started
----------------
To get started with setting up OnionBalance, please go to :ref:`installing_ob`.
To get started with setting up Onionbalance, please go to :ref:`installing_ob`.
......@@ -3,11 +3,11 @@
Status Socket
=============
Basic information about running OnionBalance can be obtained by querying
Basic information about running Onionbalance can be obtained by querying
so called status socket.
Status socket is a Unix socket file created by OnionBalance. It is
automatically closed by OnionBalance after reading it to the end.
Status socket is a Unix socket file created by Onionbalance. It is
automatically closed by Onionbalance after reading it to the end.
Example:
......@@ -59,7 +59,7 @@ Example config file:
.. code-block::
# OnionBalance Config File
# Onionbalance Config File
status-socket-location: /home/user/test.sock
services:
- instances:
......
......@@ -11,7 +11,7 @@ Onionbalance v3 Installation Guide
.. contents:: Table of Contents
This is a step-by-step *recipe* to help you configure OnionBalance for v3 onions.
This is a step-by-step *recipe* to help you configure Onionbalance for v3 onions.
This is really one of my favorite recipes: While onions can make many meals
instantly delicious, if the right balance is not found there is danger that
......@@ -19,8 +19,8 @@ their strong sulfuric taste can sometimes overpower the rest of the
ingredients. It's vital to maintain the proper onionbalance to really display
the apple-like, deliciously savory notes of this vegetable.
OnionBalance implements `round-robin` like load balancing on top of Tor onion
services. A typical OnionBalance deployment will incorporate one frontend
Onionbalance implements `round-robin` like load balancing on top of Tor onion
services. A typical Onionbalance deployment will incorporate one frontend
servers and multiple backend instances.
Preliminaries
......@@ -34,7 +34,7 @@ protocol works. If you already know how onionbalance works, feel free to skip to
.. image:: ./onionbalance_v3.jpg
In this picture you see a setup where OnionBalance is used to load-balance over
In this picture you see a setup where Onionbalance is used to load-balance over
three backend instances. The frontend service is on the right side whereas the
three backend instances are in the middle. On the left side there is a Tor
client called Alice who visits the load-balanced service using the frontend
......@@ -91,7 +91,7 @@ Ingredients
To follow this recipe to completion we will need the following ingredients:
- a host that will run OnionBalance and act as the load balancing frontend
- a host that will run Onionbalance and act as the load balancing frontend
- two or more hosts tha will run the backend Tor instances
We will assume you are using a Linux system and that you are familiar with
......@@ -142,7 +142,7 @@ purposes of this guide I assume that your control port is at 127.0.0.1:6666.
Step 2: Configuring the frontend server (setting up onionbalance)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Now, still on the frontend host we need to setup OnionBalance. If you wish to
Now, still on the frontend host we need to setup Onionbalance. If you wish to
use the Debian package of onionbalance, you will need version 0.2.0-1 or newer
to get v3 support, otherwise you can obtain it via git:
......@@ -190,7 +190,7 @@ OK now with the frontend onion address noted down, let's move to setting up
your backend instances:
Login to one of your backend instances and let's setup Tor. Similar to the step
above, you will need to use the latest Tor master for OnionBalance to work
above, you will need to use the latest Tor master for Onionbalance to work
(because of `#32709 <https://trac.torproject.org/projects/tor/ticket/32709>`_).
As before:
......@@ -207,7 +207,7 @@ know <https://community.torproject.org/onion-services/setup/>`_ how to do
that. So far so good but here comes the twist:
1) Inside the HiddenService block of your torrc file, you need to add the
following line: ``HiddenServiceOnionBalanceInstance 1``. Note that if you
following line: ``HiddenServiceOnionbalanceInstance 1``. Note that if you
do not have an existing v3 onion service and you are trying to create one
from scratch, you must first start Tor once without this torrc line, otherwise
it will fail to start. After the onion service was created, add this line to
......@@ -234,7 +234,7 @@ the following line:
.. code-block:: console
[notice] ob_option_parse(): OnionBalance: MasterOnionAddress dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.onion registered
[notice] ob_option_parse(): Onionbalance: MasterOnionAddress dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.onion registered
If you don't see that, then something went wrong. Please try again from the
beginning of this section till you make it! This is the hardest part of the
......
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""Convenience wrapper for running OnionBalance directly from source tree."""
"""Convenience wrapper for running Onionbalance directly from source tree."""
import onionbalance.manager
......
......@@ -35,7 +35,7 @@ def helper_fetch_all_instance_descriptors(controller, instances, control_passwor
# address. An instance may be configured under multiple master
# addressed. We do not want to request the same instance descriptor
# multiple times.
# OnionBalance will update all of the matching instances when a
# Onionbalance will update all of the matching instances when a
# descriptor is received.
for instance in unique_instances:
while True:
......
......@@ -10,7 +10,7 @@ logger = log.get_logger()
class SignalHandler(object):
"""
Handle signals sent to the OnionBalance daemon process
Handle signals sent to the Onionbalance daemon process
"""
def __init__(self, version, controller, status_socket=None):
......
......@@ -14,7 +14,7 @@ logger = log.get_logger()
class BaseStatusSocket(object):
"""
For creating a Unix domain socket which emits a summary of the OnionBalance
For creating a Unix domain socket which emits a summary of the Onionbalance
status when a client connects.
"""
def __init__(self, unix_socket_filename):
......
......@@ -88,12 +88,12 @@ class ConfigGenerator(object):
# Generate config files for each service instance
self.write_v2_instance_files()
logger.info("Done! Successfully generated an OnionBalance config and %d "
logger.info("Done! Successfully generated an Onionbalance config and %d "
"instance keys for service %s.onion.",
self.num_instances, self.master_onion_address)
if self.hs_version == "v3":
logger.info("Done! Successfully generated an OnionBalance config for service %s.onion.",
logger.info("Done! Successfully generated an Onionbalance config for service %s.onion.",
self.master_onion_address)
logger.info("Now please edit '%s' with a text editor to add/remove/edit your backend instances.",
self.config_file_path)
......@@ -391,7 +391,7 @@ class ConfigGenerator(object):
torrc_file.write(u"{}\n".format(self.torrc_port_line))
def create_yaml_config_file(self):
# Create YAML OnionBalance settings file for these instances
# Create YAML Onionbalance settings file for these instances
service_data = {'key': '{}.key'.format(self.master_onion_address)}
service_data['instances'] = [{'address': address,
'name': '{}{}'.format(self.tag, i + 1)} for
......@@ -401,7 +401,7 @@ class ConfigGenerator(object):
self.config_file_path = os.path.join(self.master_dir, 'config.yaml')
with open(self.config_file_path, "w") as config_file:
config_file.write(u"# OnionBalance Config File\n")
config_file.write(u"# Onionbalance Config File\n")
config_file.write(config_yaml)
logger.info("Wrote master service config file '%s'.",
os.path.abspath(self.config_file_path))
......@@ -422,7 +422,7 @@ def parse_cmd_args():
parser = argparse.ArgumentParser(
description="onionbalance-config generates config files and keys for "
"OnionBalance instances and management servers. Calling without any "
"Onionbalance instances and management servers. Calling without any "
"options will initiate an interactive mode.")