Пример #1
0
def main():
    parser = argparse.ArgumentParser(description="Blinktrade WebSocket Gateway application")
    parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str)
    parser.add_argument('-c', "--config",
                        action="store",
                        dest="config",
                        default=os.path.expanduser('~/.blinktrade/bitex.ini'),
                        help='Configuration file', type=str)
    arguments = parser.parse_args()

    if not arguments.instance:
      parser.print_help()
      return

    candidates = [ os.path.join(site_config_dir('blinktrade'), 'bitex.ini'),
                   os.path.expanduser('~/.blinktrade/bitex.ini'),
                   arguments.config]
    config = ConfigParser.SafeConfigParser()
    config.read( candidates )

    options = ProjectOptions(config, arguments.instance)

    if not options.trade_in or\
       not options.trade_pub or\
       not options.gateway_log or\
       not options.callback_url or\
       not options.port or\
       not options.allowed_origins or\
       not options.sqlalchemy_connection_string or \
       not options.sqlalchemy_engine:
      raise RuntimeError("Invalid configuration file")


    run_application(options, arguments.instance)
Пример #2
0
def main():
    parser = argparse.ArgumentParser(description="Blinktrade WebSocket Gateway application")
    parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str)
    parser.add_argument('-c', "--config",
                        action="store",
                        dest="config",
                        default=os.path.expanduser('~/.blinktrade/bitex.ini'),
                        help='Configuration file', type=str)
    arguments = parser.parse_args()

    if not arguments.instance:
      parser.print_help()
      return

    candidates = [ os.path.join(site_config_dir('blinktrade'), 'bitex.ini'),
                   os.path.expanduser('~/.blinktrade/bitex.ini'),
                   arguments.config]
    config = ConfigParser.SafeConfigParser()
    config.read( candidates )

    options = ProjectOptions(config, arguments.instance)

    if not options.trade_in or\
       not options.trade_pub or\
       not options.gateway_log or\
       not options.callback_url or\
       not options.port or\
       not options.allowed_origins or\
       not options.sqlalchemy_connection_string or \
       not options.sqlalchemy_engine:
      raise RuntimeError("Invalid configuration file")


    run_application(options, arguments.instance)
Пример #3
0
def install_config():
    def make_hier(path):
        if path != '/':
            make_hier(os.path.dirname(path))

        if not os.path.exists(path):
            os.mkdir(path)

    dst_base = appdirs.site_config_dir('prompter')
    make_hier(dst_base)

    src_base = os.path.join(prompter_path, 'default')
    for src_path, dst_path, dirs, files in ((path, ''.join([
            dst_base, path[len(src_base):]
    ]), dirs, files) for path, dirs, files in os.walk(src_base)):
        if not os.path.exists(dst_path):
            os.mkdir(dst_path)

        for filename in files:
            basename, ext = os.path.splitext(filename)
            if ext.casefold() == '.yaml':
                gz_filename = '.'.join([filename, 'gz'])
                src_filepath = os.path.join(src_path, filename)
                dst_filepath = os.path.join(dst_path, gz_filename)

                if not os.path.exists(dst_filepath):
                    with open(src_filepath) as src, \
                            gzip.open(dst_filepath, 'wb') as dst:
                        dst.write(src.read())
Пример #4
0
def _find_config():
    # prefer config file in the following order:
    # 1) current directory, 2) user home directory, 3) bundled config
    config_dirs = (
        ['.'] + [appdirs.user_config_dir("bandit")] +
        appdirs.site_config_dir("bandit", multipath=True).split(':'))
    if _running_under_virtualenv():
        config_dirs.append(os.path.join(sys.prefix, 'etc', 'bandit'))
        config_dirs.append(
            os.path.join(sysconfig.get_paths().get('purelib', ''), 'bandit',
                         'config'))
    config_locations = [os.path.join(s, BASE_CONFIG) for s in config_dirs]

    # pip on Mac installs to the following path, but appdirs expects to
    # follow Mac's BPFileSystem spec which doesn't include this path so
    # we'll insert it. Issue raised as http://git.io/vOreU
    mac_pip_cfg_path = "/usr/local/etc/bandit/bandit.yaml"
    if mac_pip_cfg_path not in config_locations:
        config_locations.append(mac_pip_cfg_path)

    for config_file in config_locations:
        if os.path.isfile(config_file):
            return config_file  # Found a valid config
    else:
        # Failed to find any config, raise an error.
        raise utils.NoConfigFileFound(config_locations)
Пример #5
0
def default_config_directories(
        user_config_dir=None,
        system_config_dir=None,
        exedir=None,
        verbose=0):
    # Use configuration in the order (lowest to highest priority)
    # 1) same path as exe,
    # 2) system config (XDG compliant.  /etc/xdg/ct)
    # 3) user config   (XDG compliant. ~/.config/ct)
    # 4) environment variables
    # 5) given on the command line

    # These variables are settable to assist writing tests
    if user_config_dir is None:
        user_config_dir = appdirs.user_config_dir(appname='ct')
    if system_config_dir is None:
        system_config_dir = appdirs.site_config_dir(appname='ct')
    if exedir is None:
        exedir = ct.wrappedos.dirname(ct.wrappedos.realpath(sys.argv[0]))

    executable_config_dir = os.path.join(exedir, "ct.conf.d")
    results = [user_config_dir, system_config_dir, executable_config_dir]
    if verbose >= 9:
        print(" ".join(["Default config directories"] + results))

    return results
Пример #6
0
def main():
  parser = argparse.ArgumentParser(description="Blinktrade Mailer application")
  parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str)
  parser.add_argument('-c', "--config", action="store", dest="config", default=os.path.expanduser('~/.bitex/bitex.ini'), help='Configuration file', type=str)
  arguments = parser.parse_args()

  if not arguments.instance:
    parser.print_help()
    return

  candidates = [ os.path.join(ROOT_PATH, 'config/bitex.ini'),
                 os.path.join(site_config_dir('bitex'), 'bitex.ini'),
                 arguments.config]
  config = ConfigParser.SafeConfigParser()
  config.read( candidates )

  options = ProjectOptions(config, arguments.instance)

  #if not options.mailchimp_apikey or\
  #   not options.mandrill_apikey or\
  #   not options.mailchimp_newsletter_list_id or\
  #   not options.trade_in or \
  #   not options.trade_pub or \
  #   not options.mailer_log :
  #  raise RuntimeError("Invalid configuration file")

  run_application(options, arguments.instance)
Пример #7
0
 def site_config_dir(self):
     """Return ``site_config_dir``."""
     directory = appdirs.site_config_dir(self.appname, self.appauthor,
                          version=self.version, multipath=self.multipath)
     if self.create:
         self._ensure_directory_exists(directory)
     return directory
Пример #8
0
def main():
  parser = argparse.ArgumentParser(description="Blinktrade Fraud application")
  parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str)
  parser.add_argument('-c', "--config",
                      action="store",
                      dest="config",
                      default=os.path.expanduser('~/.blinktrade/bitex.ini'),
                      help='Configuration file', type=str)
  arguments = parser.parse_args()

  if not arguments.instance:
    parser.print_help()
    return

  candidates = [ os.path.join(site_config_dir('blinktrade'), 'bitex.ini'),
                 os.path.expanduser('~/.blinktrade/bitex.ini'),
                 arguments.config]
  config = ConfigParser.SafeConfigParser()
  config.read( candidates )

  options = ProjectOptions(config, arguments.instance)

  if not options.maxmind_license_key or\
     not options.trade_in or\
     not options.frauder_username or\
     not options.frauder_password or\
     not options.trade_pub or \
     not options.app_log :
    raise RuntimeError("Invalid configuration file")

  run_application(options, arguments.instance)
Пример #9
0
def _find_config():
    # prefer config file in the following order:
    # 1) current directory, 2) user home directory, 3) bundled config
    config_dirs = (
        ['.'] + [appdirs.user_config_dir("bandit")] +
        appdirs.site_config_dir("bandit", multipath=True).split(':'))
    if _running_under_virtualenv():
        config_dirs.append(os.path.join(sys.prefix, 'etc', 'bandit'))
        config_dirs.append(
            os.path.join(sysconfig.get_paths().get('purelib', ''),
                         'bandit', 'config'))
    config_locations = [os.path.join(s, BASE_CONFIG) for s in config_dirs]

    # pip on Mac installs to the following path, but appdirs expects to
    # follow Mac's BPFileSystem spec which doesn't include this path so
    # we'll insert it. Issue raised as http://git.io/vOreU
    mac_pip_cfg_path = "/usr/local/etc/bandit/bandit.yaml"
    if mac_pip_cfg_path not in config_locations:
        config_locations.append(mac_pip_cfg_path)

    for config_file in config_locations:
        if os.path.isfile(config_file):
            return config_file  # Found a valid config
    else:
        # Failed to find any config, raise an error.
        raise utils.NoConfigFileFound(config_locations)
Пример #10
0
def get_config_path(filename='config.yaml',
                    appname=None,
                    appauthor=None,
                    appversion=None,
                    dirpath=None,
                    app_root_config=None,
                    user_config=None,
                    system_config=None,
                    approot_config_dirname='config'):
    from os.path import join, dirname

    # There are 4 options for dirpath:
    #   0- given in dirpath argument
    #   1- application root dir
    #   2- user config dir
    #   3- system config dir
    if dirpath is None:
        if app_root_config is False and user_config is False and system_config is False:
            raise ValueError(
                "Required one of: app_root_config, user_config, and system_config be True or None"
            )
        if app_root_config is True or not (user_config or system_config):
            import sys
            dirpath = join(dirname(sys.modules['__main__'].__file__),
                           approot_config_dirname)

        elif user_config is True or not system_config:
            import appdirs
            dirpath = appdirs.user_config_dir(appname, appauthor, appversion)
        else:
            import appdirs
            dirpath = appdirs.site_config_dir(appname, appauthor, appversion)

    return join(dirpath, filename)
Пример #11
0
def get_config():
    APP = "urlshortener"
    AUTHOR = "132ikl"

    paths = [
        Path("/etc/urlshortener"),
        Path(site_config_dir(APP, AUTHOR)),
        Path(user_config_dir(APP, AUTHOR)),
        Path(),
    ]

    for path in paths:
        f = path / "config.yml"
        if f.exists():
            LOGGER.info(f"Selecting config file {f}")
            return open(f, "r")

    for path in paths:
        try:
            path.mkdir(exist_ok=True)
            template = resource_filename(__name__, "config.template.yml")
            copyfile(template, (path / "config.template.yml"))
            copyfile(template, (path / "config.yml"))
            return open(path / "config.yml", "r")
        except (PermissionError, OSError) as e:
            LOGGER.warn(f"Failed to create config in {path}")
            LOGGER.debug("", exc_info=True)

    raise FileNotFoundError("Cannot find config.yml, and failed to create it")
Пример #12
0
 def site_config_dir(self):
     """Return ``site_config_dir``."""
     directory = appdirs.site_config_dir(self.appname, self.appauthor,
                          version=self.version, multipath=self.multipath)
     if self.create:
         self._ensure_directory_exists(directory)
     return directory
Пример #13
0
def config_files(environ=None):
    if environ is None:
        environ = {}

    # Lowest priority: hardcoded values
    paths = os.pathsep.join(
        [os.path.expanduser('~/.config/crestic'), '/etc/crestic'])

    # Low priority: optional appdirs import
    try:
        import appdirs
        paths = os.pathsep.join([
            appdirs.user_config_dir('crestic'),
            appdirs.site_config_dir('crestic', multipath=True)
        ])
    except ImportError as e:
        pass

    # Medium priority: CRESTIC_CONFIG_PATHS
    try:
        paths = environ['CRESTIC_CONFIG_PATHS']
    except KeyError:
        pass

    # High priority: CRESTIC_CONFIG_FILE
    try:
        return [environ['CRESTIC_CONFIG_FILE']]
    except KeyError:
        pass

    return [os.path.join(x, 'crestic.cfg') for x in paths.split(os.pathsep)]
Пример #14
0
def main():
  parser = argparse.ArgumentParser(description="Blinktrade Trade application")
  parser.add_argument('-i', "--instance", action="store", dest="instance", help='Instance name', type=str)
  parser.add_argument('-c', "--config", action="store", dest="config", default=os.path.expanduser('~/.bitex/bitex.ini'), help='Configuration file', type=str)
  arguments = parser.parse_args()

  if not arguments.instance:
    parser.print_help()
    return


  candidates = [ os.path.join(ROOT_PATH, 'config/bitex.ini'),
                 os.path.join(site_config_dir('bitex'), 'bitex.ini'),
                 arguments.config]
  config = ConfigParser.SafeConfigParser()
  config.read( candidates )

  options = ProjectOptions(config, arguments.instance)

  if not options.trade_in or \
     not options.trade_pub or \
     not options.trade_log or \
     not options.global_email_language or \
     not options.db_engine:
    raise RuntimeError("Invalid configuration file")

  application = TradeApplication.instance()
  application.initialize(options, arguments.instance)
  application.run()
Пример #15
0
def loadSystemConfiguration():
    config_path = os.path.join( appdirs.site_config_dir( 'jaminique' ), "config.json" )
    
    if os.path.isfile( config_path ):
        with open( config_path, 'rt' ) as configfile:
            return ArgumentTree( configfile )
    else:
       return ArgumentTree()
Пример #16
0
def search_app_config_files(appname=None, appauthor=None, version=None):
    pl = PathList()
    cdirs = (appdirs.user_config_dir(appname, appauthor, version),
             appdirs.site_config_dir(appname, appauthor, version))
    for cdir in cdirs:
        if pathlib.Path(cdir).exists():
            pl.add(cdir)
    return pl.list_files(['*.cfg', '*.json', '*.yaml'])
Пример #17
0
    def get_dir(cls, level):
        from appdirs import user_config_dir, site_config_dir

        assert level in ("global", "system")

        if level == "global":
            return user_config_dir(cls.APPNAME, cls.APPAUTHOR)
        if level == "system":
            return site_config_dir(cls.APPNAME, cls.APPAUTHOR)
Пример #18
0
def loadSystemConfiguration():
    config_path = os.path.join(appdirs.site_config_dir('jaminique'),
                               "config.json")

    if os.path.isfile(config_path):
        with open(config_path, 'rt') as configfile:
            return ArgumentTree(configfile)
    else:
        return ArgumentTree()
Пример #19
0
def get_init_dir(parent_dir, prog_name):
    """get the init paths"""
    pathnames = []
    pathnames.append(appdirs.user_config_dir(
        prog_name, PROG_AUTHOR))  # XDG Specification:  ~/.config/prog_name/
    pathnames.append(appdirs.site_config_dir(
        prog_name, PROG_AUTHOR))  # XDG Specification:  /etc/xdg/prog_name/
    pathnames.append(os.path.join(parent_dir, CFG_DIRECTORY))
    #print(pathnames)
    return pathnames
Пример #20
0
    def get_system_config_dir():
        """Returns system config location. E.g. /etc/dvc.conf.

        Returns:
            str: path to the system config directory.
        """
        from appdirs import site_config_dir

        return site_config_dir(appname=Config.APPNAME,
                               appauthor=Config.APPAUTHOR)
Пример #21
0
def read_options_file(options, fname):
    for confdir in [ad.site_config_dir(appname, appauthor),
                    ad.user_config_dir(appname, appauthor)]:
        path = op.join(confdir, fname)
        # Note: logging level here is BEFORE the config was read. Typically INFO
        logging.debug('checking for config at {0}'.format(path))
        if op.isfile(path):
            logging.debug('reading config from {0}'.format(path))
            options._config_path = path
            options.__dict__.update(read_config(
                path, options._keys, options_glob))
Пример #22
0
 def search_config():
     name_candidates = ['slump.config', '.slumprc', 'slump_config']
     path_candidates = [
         Path('.'),
         Path(user_config_dir('slump', 'slump')),
         Path.home(),
         Path(site_config_dir('slump', 'slump')),
     ]
     for path_candidate in path_candidates:
         for name_candidate in name_candidates:
             if (path_candidate / name_candidate).is_file():
                 return path_candidate / name_candidate
     return None
Пример #23
0
def main():
    parser = argparse.ArgumentParser(
        description="Blinktrade Api Receive application")
    parser.add_argument(
        '-c',
        "--config",
        action="store",
        dest="config",
        default=os.path.expanduser('~/.blinktrade/api_receive.ini'),
        help='Configuration file',
        type=str)
    arguments = parser.parse_args()

    if not arguments.config:
        parser.print_help()
        return

    candidates = [
        os.path.join(site_config_dir('blinktrade'), 'api_receive.ini'),
        arguments.config
    ]
    config = ConfigParser.SafeConfigParser()
    config.read(candidates)

    # Validate the whole file
    for section_name in config.sections():
        options = ProjectOptions(config, section_name)
        if not options.log or \
           not options.port or \
           not options.rpc_url or \
           not options.db_engine:
            raise RuntimeError("Invalid configuration file")

    # Start all applications
    applications = []
    for section_name in config.sections():
        options = ProjectOptions(config, section_name)

        application = ApiReceiveApplication(options, section_name)
        application.listen(options.port)
        applications.append(application)

    if applications:
        # start
        try:
            tornado.ioloop.IOLoop.instance().start()
        except KeyboardInterrupt:
            for application in applications:
                application.clean_up()
Пример #24
0
def main():
    parser = argparse.ArgumentParser(description="Blinktrade")
    parser.add_argument('-c',
                        "--config",
                        action="store",
                        dest="config",
                        help='Configuration file',
                        type=str)
    arguments = parser.parse_args()

    candidates = [
        os.path.join(site_config_dir('blinktrade'), 'bitex.ini'),
        os.path.expanduser('~/.blinktrade/bitex.ini'), arguments.config
    ]

    config = ConfigParser.SafeConfigParser()
    config.read(candidates)

    processes = []
    for section_name in config.sections():
        project_options = ProjectOptions(config, section_name)
        if section_name[:5] == 'trade':
            p = multiprocessing.Process(name=section_name,
                                        target=partial(trade_instance,
                                                       section_name,
                                                       project_options))
        elif section_name[:10] == 'ws_gateway':
            p = multiprocessing.Process(name=section_name,
                                        target=partial(ws_gateway_instance,
                                                       section_name,
                                                       project_options))
        elif section_name[:6] == 'mailer':
            p = multiprocessing.Process(name=section_name,
                                        target=partial(mailer_instance,
                                                       section_name,
                                                       project_options))
        else:
            raise RuntimeError("Invalid section name")
        processes.append(p)

    # start all sub processes
    for p in processes:
        p.daemon = True
        p.start()

    # wait for them to finish
    for p in processes:
        logging.debug('waiting %s', p.name)
        p.join()
Пример #25
0
def locate_config_file(configfile=OMEGA_CONFIG_FILE):
    """
    locate the configuration file, if any

    Will search the following locations for the config file:
        1. current directory and all paths up to root
        2. user configuration directory
        3. site configuration directory

    The exact location depends on the platform:
        Linux:
            user = ~/.config/omegaml
            site = /etc/xdg/omegaml
        Windows:
            user = C:\Documents and Settings\<User>\Application Data\omegaml\omegaml
            site = C:\Documents and Settings\All Users\Application Data\omegaml\omegaml
        Mac:
            user = ~/Library/Application Support/omegaml
            site = /Library/Application Support/omegaml

    See the appdirs package for details on the platform specific locations of the
    user and site config dir, https://pypi.org/project/appdirs/

    Args:
        configfile: the default config file name or path

    Returns:
        location of the config file or None if not found
    """
    try:
        from appdirs import user_config_dir, site_config_dir
    except:
        # we don't have appdirs installed, this can happen during setup.py. fake it
        user_config_dir = lambda *args: os.path.expanduser('~/.config/omegaml')
        site_config_dir = lambda *args: '/etc/xdg/omegaml'

    if os.path.exists(configfile):
        return configfile
    appdirs_args = ('omegaml', 'omegaml')
    cur_dir_tree = lambda *args: Path(os.getcwd()).parents
    all_dirs = (cur_dir_tree(), [user_config_dir(*appdirs_args)],
                [site_config_dir(*appdirs_args)])
    flatten = lambda l: (item for sl in l for item in sl)
    for cfgdir in flatten(all_dirs):
        cfgfile = os.path.join(cfgdir, os.path.basename(configfile))
        if os.path.exists(cfgfile):
            return cfgfile
    return None
Пример #26
0
def getstorage(name, *args, **kwargs):
    """Get paths to storage directories.

    This function maps generic names of storage directory to platform
    specific paths which allows platform independent usage of storage
    directories. This is a wrapper function to the module 'appdirs'.
    For details and usage see:

        http://github.com/ActiveState/appdirs

    Args:
        name (string): Storage path name: String describing storage
            directory. Allowed values are:

            'user_cache_dir' -- User specific cache directory
            'user_config_dir' -- User specific configuration directory
            'user_data_dir' -- User specific data directory
            'user_log_dir' -- User specific logging directory
            'site_config_dir' -- Site specific configuration directory
            'site_data_dir' -- Site specific data directory

        *args: Arguments passed to appdirs
        **kwargs: Keyword Arguments passed to appdirs

    Returns:
        String containing path of storage directory or False if
        storage path name is not supported.

    """

    import appdirs

    if name == 'user_cache_dir':
        return appdirs.user_cache_dir(*args, **kwargs)
    elif name == 'user_config_dir':
        return appdirs.user_config_dir(*args, **kwargs)
    elif name == 'user_data_dir':
        return appdirs.user_data_dir(*args, **kwargs)
    elif name == 'user_log_dir':
        return appdirs.user_log_dir(*args, **kwargs)
    elif name == 'user_cwd':
        return getcwd()
    elif name == 'site_config_dir':
        return appdirs.site_config_dir(*args, **kwargs)
    elif name == 'site_data_dir':
        return appdirs.site_data_dir(*args, **kwargs)

    return False
Пример #27
0
def find_config_dirs() -> Tuple[str, str]:
    """
    The site and user configuration dirs for koji-smoky-dingo, as a
    tuple. Attempts to use the ``appdirs`` package if it is available.

    :since: 1.0
    """

    if appdirs is None:
        site_conf_dir = "/etc/xdg/ksd/"
        user_conf_dir = expanduser("~/.config/ksd/")
    else:
        site_conf_dir = appdirs.site_config_dir("ksd")
        user_conf_dir = appdirs.user_config_dir("ksd")

    return (site_conf_dir, user_conf_dir)
Пример #28
0
def _get_config_paths():
    user_dir = appdirs.user_config_dir("pip", appauthor=False, roaming=True)
    site_dir = appdirs.site_config_dir("pip", appauthor=False, multipath=True)

    config_files = [
        os.path.join(user_dir, CONFIG_BASENAME),
        os.path.join(site_dir, CONFIG_BASENAME),
    ]
    if sys.platform.startswith("linux"):
        config_files.append("/etc/pip.conf")
    elif sys.platform == "win32" and site_dir is None or site_dir == r".\pip":
        # Add a manual fallback to C:\ProgramData if it could not be programmatically
        # determined
        config_files.append(r"C:\ProgramData\pip\pip.ini")

    return config_files
Пример #29
0
def find_config_file():
    import appdirs
    config_dirs = appdirs.site_config_dir(
        'devpi-server', 'devpi', multipath=True)
    config_dirs = config_dirs.split(os.pathsep)
    config_dirs.append(
        appdirs.user_config_dir('devpi-server', 'devpi'))
    config_files = []
    for config_dir in config_dirs:
        config_file = os.path.join(config_dir, 'devpi-server.yml')
        if os.path.exists(config_file):
            config_files.append(config_file)
    if len(config_files) > 1:
        log.warn("Multiple configuration files found:\n%s", "\n".join(config_files))
    if len(config_files):
        return config_files[-1]
Пример #30
0
def create_config_path_if_necessary():
    """
    Create path for saving MyData.cfg if it doesn't already exist.
    """
    if sys.platform.startswith("win"):
        # We use a setup wizard on Windows which runs with admin
        # privileges, so we can ensure that the appdir_path below,
        # i.e. C:\ProgramData\Monash University\MyData\ is
        # writeable by all users.
        appdir_path = appdirs.site_config_dir(APPNAME, APPAUTHOR)
    else:
        # On Mac, we currently use a DMG drag-and-drop installation, so
        # we can't create a system-wide MyData.cfg writeable by all users.
        appdir_path = appdirs.user_data_dir(APPNAME, APPAUTHOR)
    if not os.path.exists(appdir_path):
        os.makedirs(appdir_path)
    return appdir_path
Пример #31
0
def _config_locations(filename):
    """ Defines the list of places we can get configuration files from.

    :param filename: The local name of the config file, e.g., 'spynnaker.cfg'
    :type filename: str
    :return: list of fully-qualified filenames
    :rtype: list(str)
    """
    dotname = "." + filename

    # locations to read as well as default later overrides earlier
    system_config_cfg_file = os.path.join(appdirs.site_config_dir(), dotname)
    user_config_cfg_file = os.path.join(appdirs.user_config_dir(), dotname)
    user_home_cfg_file = os.path.join(os.path.expanduser("~"), dotname)

    # locations to read as well as default later overrides earlier
    return [system_config_cfg_file, user_config_cfg_file, user_home_cfg_file]
Пример #32
0
def default_config_directories(
        user_config_dir=None,
        system_config_dir=None,
        exedir=None,
        repoonly=False,
        verbose=0):
    # Use configuration in the order (lowest to highest priority)
    # If repoonly is true, start the procedure at step 4
    # 1) same path as exe,
    # 2) system config (XDG compliant.  /etc/xdg/ct)
    # 2b)   python virtual environment system configs (${python-site-packages}/etc/xdg/ct)
    # 3) user config   (XDG compliant. ~/.config/ct)
    # 4) repoconfig (usually <gitroot>/ct.conf.d TODO:make this configurable)
    # 5) gitroot
    # 6) current working directory
    # 7) environment variables
    # 8) given on the command line

    # These variables are settable to assist writing tests
    if user_config_dir is None:
        user_config_dir = appdirs.user_config_dir(appname='ct')

    system_dirs = []
    if system_config_dir is not None:
        system_dirs.append(system_config_dir)
    else:
        for python_config_dir in sys.path[::-1]:
            trialpath = os.path.join(python_config_dir, 'etc/xdg/ct')
            if ct.wrappedos.isdir(trialpath) and trialpath not in system_dirs:
                system_dirs.append(trialpath)
        system_dirs.append(appdirs.site_config_dir(appname='ct'))

    if exedir is None:
        exedir = ct.wrappedos.dirname(ct.wrappedos.realpath(sys.argv[0]))

    executable_config_dir = os.path.join(exedir, "ct.conf.d")
    gitroot = ct.git_utils.find_git_root()
    results = ct.utils.OrderedSet([os.getcwd(), gitroot, os.path.join(gitroot,'ct.conf.d')])
    if not repoonly:
        results.append([user_config_dir] + system_dirs + [executable_config_dir])
    if verbose >= 9:
        print(" ".join(["Default config directories"] + list(results)))

    return results
Пример #33
0
def default_config_directories(
    user_config_dir=None, system_config_dir=None, exedir=None, repoonly=False, verbose=0
):
    # Use configuration in the order (lowest to highest priority)
    # If repoonly is true, start the procedure at step 4
    # 1) same path as exe,
    # 2) system config (XDG compliant.  /etc/xdg/ct)
    # 2b)   python virtual environment system configs (${python-site-packages}/etc/xdg/ct)
    # 3) user config   (XDG compliant. ~/.config/ct)
    # 4) repoconfig (usually <gitroot>/ct.conf.d TODO:make this configurable)
    # 5) gitroot
    # 6) current working directory
    # 7) environment variables
    # 8) given on the command line

    # These variables are settable to assist writing tests
    if user_config_dir is None:
        user_config_dir = appdirs.user_config_dir(appname="ct")

    system_dirs = []
    if system_config_dir is not None:
        system_dirs.append(system_config_dir)
    else:
        for python_config_dir in sys.path[::-1]:
            trialpath = os.path.join(python_config_dir, "etc/xdg/ct")
            if ct.wrappedos.isdir(trialpath) and trialpath not in system_dirs:
                system_dirs.append(trialpath)
        system_dirs.append(appdirs.site_config_dir(appname="ct"))

    if exedir is None:
        exedir = ct.wrappedos.dirname(ct.wrappedos.realpath(sys.argv[0]))

    executable_config_dir = os.path.join(exedir, "ct.conf.d")
    gitroot = ct.git_utils.find_git_root()
    results = ct.utils.OrderedSet(
        [os.getcwd(), gitroot, os.path.join(gitroot, "ct.conf.d")]
    )
    if not repoonly:
        results.append([user_config_dir] + system_dirs + [executable_config_dir])
    if verbose >= 9:
        print(" ".join(["Default config directories"] + list(results)))

    return results
Пример #34
0
def main():
  parser = argparse.ArgumentParser(description="Blinktrade Api Receive application")
  parser.add_argument('-c', "--config",
                      action="store",
                      dest="config",
                      default=os.path.expanduser('~/.blinktrade/api_receive.ini'),
                      help='Configuration file', type=str)
  arguments = parser.parse_args()

  if not arguments.config:
    parser.print_help()
    return

  candidates = [ os.path.join(site_config_dir('blinktrade'), 'api_receive.ini'),
                 arguments.config ]
  config = ConfigParser.SafeConfigParser()
  config.read( candidates )

  # Validate the whole file
  for section_name in config.sections():
    options = ProjectOptions(config, section_name)
    if not options.log or \
       not options.port or \
       not options.rpc_url or \
       not options.db_engine:
      raise RuntimeError("Invalid configuration file")

  # Start all applications
  applications = []
  for section_name in config.sections():
    options = ProjectOptions(config, section_name)

    application = ApiReceiveApplication(options, section_name)
    application.listen(options.port)
    applications.append(application)

  if applications:
    # start
    try:
      tornado.ioloop.IOLoop.instance().start()
    except KeyboardInterrupt:
      for application in applications:
        application.clean_up()
Пример #35
0
def main():
    parser = argparse.ArgumentParser(
        description="Blinktrade Trade application")
    parser.add_argument('-i',
                        "--instance",
                        action="store",
                        dest="instance",
                        help='Instance name',
                        type=str)
    parser.add_argument('-c',
                        "--config",
                        action="store",
                        dest="config",
                        default=os.path.expanduser('~/.blinktrade/bitex.ini'),
                        help='Configuration file',
                        type=str)
    arguments = parser.parse_args()

    if not arguments.instance:
        parser.print_help()
        return

    candidates = [
        os.path.join(site_config_dir('blinktrade'), 'bitex.ini'),
        os.path.expanduser('~/.blinktrade/bitex.ini'), arguments.config
    ]
    config = ConfigParser.SafeConfigParser()
    config.read(candidates)

    options = ProjectOptions(config, arguments.instance)

    if not options.trade_in or \
       not options.trade_pub or \
       not options.trade_log or \
       not options.global_email_language or \
       not options.sqlalchemy_connection_string or \
       not options.sqlalchemy_engine:
        raise RuntimeError("Invalid configuration file")

    application = TradeApplication.instance()
    application.initialize(options, arguments.instance)
    application.run()
Пример #36
0
def main():
    parser = argparse.ArgumentParser(description="Blinktrade")
    parser.add_argument("-c", "--config", action="store", dest="config", help="Configuration file", type=str)
    arguments = parser.parse_args()

    candidates = [
        os.path.join(site_config_dir("blinktrade"), "bitex.ini"),
        os.path.expanduser("~/.blinktrade/bitex.ini"),
        arguments.config,
    ]

    config = ConfigParser.SafeConfigParser()
    config.read(candidates)

    processes = []
    for section_name in config.sections():
        project_options = ProjectOptions(config, section_name)
        if section_name[:5] == "trade":
            p = multiprocessing.Process(
                name=section_name, target=partial(trade_instance, section_name, project_options)
            )
        elif section_name[:10] == "ws_gateway":
            p = multiprocessing.Process(
                name=section_name, target=partial(ws_gateway_instance, section_name, project_options)
            )
        elif section_name[:6] == "mailer":
            p = multiprocessing.Process(
                name=section_name, target=partial(mailer_instance, section_name, project_options)
            )
        else:
            raise RuntimeError("Invalid section name")
        processes.append(p)

    # start all sub processes
    for p in processes:
        p.daemon = True
        p.start()

    # wait for them to finish
    for p in processes:
        logging.debug("waiting %s", p.name)
        p.join()
Пример #37
0
def locate_config_file(configfile=OMEGA_CONFIG_FILE):
    """
    locate the configuration file, if any

    Will search the following locations for the config file:
        1. current directory
        2. user configuration directory
        3. site configuration directory

    The exact location depends on the platform:
        Linux:
            user = ~/.config/omegaml
            site = /etc/xdg/omegaml
        Windows:
            user = C:\Documents and Settings\<User>\Application Data\omegaml\omegaml
            site = C:\Documents and Settings\All Users\Application Data\omegaml\omegaml
        Mac:
            user = ~/Library/Application Support/omegaml
            site = /Library/Application Support/omegaml

    Args:
        configfile: the default config file name or path

    Returns:
        location of the config file or None if not found
    """
    try:
        from appdirs import user_config_dir, site_config_dir
    except:
        # we don't have appdirs installed, this can happen during setup.py. fake it
        user_config_dir = lambda *args: os.path.expanduser('~/.config/omegaml')
        site_config_dir = lambda *args: '/etc/xdg/omegaml'

    if os.path.exists(configfile):
        return configfile
    appdirs_args = ('omegaml', 'omegaml')
    for cfgdir in (os.getcwd(), user_config_dir(*appdirs_args),
                   site_config_dir(*appdirs_args)):
        cfgfile = os.path.join(cfgdir, os.path.basename(configfile))
        if os.path.exists(cfgfile):
            return cfgfile
    return None
def main():
    parser = argparse.ArgumentParser(
        description="Blinktrade Mailer application")
    parser.add_argument('-i',
                        "--instance",
                        action="store",
                        dest="instance",
                        help='Instance name',
                        type=str)
    parser.add_argument('-c',
                        "--config",
                        action="store",
                        dest="config",
                        default=os.path.expanduser('~/.blinktrade/bitex.ini'),
                        help='Configuration file',
                        type=str)
    arguments = parser.parse_args()

    if not arguments.instance:
        parser.print_help()
        return

    candidates = [
        os.path.join(site_config_dir('blinktrade'), 'bitex.ini'),
        os.path.expanduser('~/.blinktrade/bitex.ini'), arguments.config
    ]
    config = ConfigParser.SafeConfigParser()
    config.read(candidates)

    options = ProjectOptions(config, arguments.instance)

    if not options.mailchimp_apikey or\
       not options.mandrill_apikey or\
       not options.mailchimp_newsletter_list_id or\
       not options.trade_in or\
       not options.mailer_username or\
       not options.mailer_password or\
       not options.trade_pub or \
       not options.mailer_log :
        raise RuntimeError("Invalid configuration file")

    run_application(options, arguments.instance)
Пример #39
0
def config_files(environ=None, config=None):
    if environ is None:
        environ = {}

    # Lowest priority: hardcoded values
    paths = os.pathsep.join([pathexpand("~/.config/crestic"), "/etc/crestic"])

    # Low priority: optional appdirs import
    try:
        import appdirs

        paths = os.pathsep.join([
            appdirs.user_config_dir("crestic"),
            appdirs.site_config_dir("crestic", multipath=True),
        ])
    except ImportError:
        pass

    # Medium priority: CRESTIC_CONFIG_PATHS
    try:
        paths = environ["CRESTIC_CONFIG_PATHS"]
    except KeyError:
        pass

    # High priority: CRESTIC_CONFIG_FILE
    try:
        return [environ["CRESTIC_CONFIG_FILE"]]
    except KeyError:
        pass

    # High priority: crestic-config argument
    if config is None:
        pass
    else:
        try:
            with open(config):
                pass
            return [config]
        except FileNotFoundError:
            pass

    return [os.path.join(x, "crestic.cfg") for x in paths.split(os.pathsep)]
Пример #40
0
def init():
    """Load the config file."""
    global config

    config_file = os.path.join(appdirs.site_config_dir('reviewbot'),
                               'config.py')

    print('Loading config file %s' % config_file)

    try:
        with open(config_file) as f:
            config_module = imp.load_module('config', f, config_file,
                                            ('py', 'r', imp.PY_SOURCE))

            for key in list(config.keys()):
                if hasattr(config_module, key):
                    value = getattr(config_module, key)
                    config[key] = value
    except:
        print('Unable to load config, using defaults')
Пример #41
0
def init():
    """Load the config file."""
    global config

    config_file = os.path.join(appdirs.site_config_dir('reviewbot'),
                               'config.py')

    print('Loading config file %s' % config_file)

    try:
        with open(config_file) as f:
            config_module = imp.load_module('config', f, config_file,
                                            ('py', 'r', imp.PY_SOURCE))

            for key in list(config.keys()):
                if hasattr(config_module, key):
                    value = getattr(config_module, key)
                    config[key] = value
    except:
        print('Unable to load config, using defaults')
Пример #42
0
def _get_config_paths(app_name, app_author, default_config_filename='default', default_config_extension='.cfg'):
    # FIXME this shouldn't create empty config files
    default_config_filename = secure_filename(default_config_filename + default_config_extension)
    user_config_filename = secure_filename(app_name + default_config_extension)

    default_config_dir = appdirs.site_config_dir(app_name, app_author)
    default_config_path = os.path.join(
        default_config_dir,
        default_config_filename
    )
    if not os.path.exists(default_config_dir):
        os.makedirs(default_config_dir)
    try:
        if os.path.isfile(default_config_path):
            log.debug("Opening config at: {0}".format(default_config_path,))
            open(default_config_path, 'a').close()
        else:
            default_config_path = None
    except FileNotFoundError:
        log.warning("FileNotFoundError while opening config file at: {0}".format(default_config_path,))
        #sys.exit(exit_codes.EX_OSFILE)


    user_config_dir = appdirs.user_config_dir(app_name, app_author)
    user_config_path = os.path.join(
        user_config_dir,
        user_config_filename
    )
    if not os.path.exists(user_config_dir):
        os.makedirs(user_config_dir)
    try:
        if os.path.isfile(user_config_path):
            log.debug("Opening config at: {0}".format(user_config_path,))
            open(user_config_path, 'a').close()
        else:
            user_config_path = None
    except FileNotFoundError:
        log.warning("FileNotFoundError while opening config file at: {0}".format(user_config_path,))
        #sys.exit(exit_codes.EX_OSFILE)

    return [default_config_path, user_config_path,]
Пример #43
0
def loadConfig(app):
    # Load in an default config
    config = {
        "production": ProdConfig,
        "development": DevConfig,
        "testing": TestConfig,
    }[os.environ.get("SOMETHING_ENV", "production")]()
    app.config.from_object(config)
    app.config["config_file"] = None

    # Try to load in user config file to override defaults
    config_dir = Path(
        appdirs.site_config_dir(something.__name__, something.__author__))
    config_path_py = config_dir.joinpath("config.py")
    config_path_json = config_dir.joinpath("config.json")

    if config_path_py.exists():
        app.config.from_pyfile(config_path_py, silent=True)
        app.config["config_file"] = config_path_py
    elif config_path_json.exists():
        app.config.from_json(config_path_json)
        app.config["config_file"] = config_path_json
Пример #44
0
    def reload(self):
        system_path = os.path.join(appdirs.site_config_dir('findex'), self._filename)
        user_path = os.path.join(appdirs.user_config_dir('findex'), self._filename)

        if not os.path.isfile(system_path) and not os.path.isfile(user_path):
            raise ConfigNotFoundError('Could not load config file \'%s\' or \'%s\'.' % (user_path, system_path))

        cfg = ConfigParser.ConfigParser()
        cfg.read([system_path, user_path])

        data = {}
        for section in cfg.sections():
            data[section] = {}

            for k, v in cfg.items(section):
                if k.startswith('#') or v.startswith('#'):
                    continue

                if v:
                    try:
                        data[section][k] = int(v) if'.' not in v else float(v)
                        continue
                    except:
                        pass

                    if v.lower() == 'false':
                        data[section][k] = False
                        continue
                    elif v.lower() == 'true':
                        data[section][k] = True
                        continue

                data[section][k] = v

        self._validate_cfg(data)
        self._items = data
Пример #45
0
#!/usr/bin/env python2
#-*- coding: utf-8 -*-
__author__ = "Shrinidhi Rao"
__license__ = "GPL"
__email__ = "*****@*****.**"

import sys
import os
import argparse
import subprocess
import appdirs
import yaml


os.environ['XDG_CONFIG_DIRS'] = '/etc'
configdir = os.path.join(appdirs.site_config_dir(),"dev-ops")
masterdir = os.path.join(configdir,"master")
slavedir = os.path.join(configdir,"slave")


supervisorpath = "/etc/supervisor/conf.d/"
installdir = "/opt/dev-ops"
states_path = "/srv/dev-ops/states/"
events_root = "/srv/dev-ops/events/"
masterconst_root = "/srv/dev-ops/masterconst/"

progpath = installdir
source_master_path = os.path.join(progpath,"install","master")
source_slave_path = os.path.join(progpath,"install","slave")
installed_slave_conf = os.path.join(slavedir,"slave.conf")
slave_supervisorconf = os.path.join(progpath,"install","supervisor","slave")
Пример #46
0
def main():
  parser = argparse.ArgumentParser(description="Process blinktrade withdrawals requests")

  parser.add_argument('-c',
                      "--config",
                      action="store",
                      dest="config",
                      help='Configuration file', type=str)

  arguments = parser.parse_args()

  candidates = [ os.path.join(site_config_dir('blinktrade'), 'blinktrade_withdrawer.ini'),
                 os.path.expanduser('~/.blinktrade/blinktrade_withdrawer.ini')]
  if arguments.config:
    candidates.append(arguments.config)

  config = ConfigParser.SafeConfigParser()
  config.read( candidates )

  password = getpass.getpass('password: '******'ws':
    should_connect_on_ssl = False
    blinktrade_port = 80

  db_engine = config.get("database", "sqlalchemy_engine") + ':///' +\
              os.path.expanduser(config.get("database", "sqlalchemy_connection_string"))
  engine = create_engine(db_engine, echo=config.getboolean('database', 'sqlalchmey_verbose'))
  Base.metadata.create_all(engine)

  factory = BlinkTradeClientFactory(blinktrade_url.geturl())
  factory.db_session                  = scoped_session(sessionmaker(bind=engine))
  factory.verbose                     = config.getboolean("blinktrade", "verbose")
  factory.blinktrade_broker_id        = config.get("blinktrade", "broker_id")
  factory.blinktrade_user             = config.get("blinktrade", "api_key")
  factory.blinktrade_password         = decrypt(password, unhexlify(config.get("blinktrade", "api_password")))
  factory.currencies                  = json.loads(config.get("blinktrade", "currencies"))
  factory.methods                     = json.loads(config.get("blinktrade", "methods"))
  factory.blocked_accounts            = json.loads(config.get("blinktrade", "blocked_accounts"))
  factory.mandrill_api                = mandrill_api

  if config.has_section('blockchain_info'):
    from blockchain_info import BlockchainInfoWithdrawalProtocol
    factory.blockchain_guid             = decrypt(password, unhexlify(config.get("blockchain_info", "guid")))
    factory.blockchain_main_password    = decrypt(password, unhexlify(config.get("blockchain_info", "main_password")))
    factory.blockchain_second_password  = decrypt(password, unhexlify(config.get("blockchain_info", "second_password")))
    factory.blockchain_api_key          = config.get("blockchain_info", "api_key")
    factory.from_address                = config.get("blockchain_info", "from_address")
    factory.note                        = config.get("blockchain_info", "note")
    factory.protocol = BlockchainInfoWithdrawalProtocol

  if config.has_section('blocktrail'):
    import blocktrail
    from mnemonic.mnemonic import Mnemonic
    from pycoin.key.BIP32Node import BIP32Node
    is_testnet = False
    if config.get("blocktrail", "testnet") == '1':
      is_testnet = True

    client = blocktrail.APIClient(api_key=config.get("blocktrail", "api_key"),
                                  api_secret=decrypt(password, unhexlify(config.get("blocktrail", "api_secret"))),
                                  network='BTC',
                                  testnet=is_testnet)
    data = client.get_wallet(config.get("blocktrail", "wallet_identifier"))

    primary_seed = Mnemonic.to_seed(data['primary_mnemonic'],  decrypt(password, unhexlify(config.get("blocktrail", "wallet_passphrase"))))
    primary_private_key = BIP32Node.from_master_secret(primary_seed, netcode='XTN' if client.testnet else 'BTC')
    backup_public_key = BIP32Node.from_hwif(data['backup_public_key'][0])
    checksum =  client.create_checksum(primary_private_key)
    if checksum != data['checksum']:
        raise Exception("Checksum [%s] does not match expected checksum [%s], " \
                        "most likely due to incorrect password" % (checksum, data['checksum']))

    blocktrail_public_keys = {}
    for v,k in data['blocktrail_public_keys']:
      if k in blocktrail_public_keys:
        blocktrail_public_keys[k].append(v)
      else:
        blocktrail_public_keys[k] = [v]

    key_index = data['key_index']

    wallet = blocktrail.wallet.Wallet(client=client,
                                      identifier= config.get("blocktrail", "wallet_identifier"),
                                      primary_mnemonic=data['primary_mnemonic'],
                                      primary_private_key=primary_private_key,
                                      backup_public_key=backup_public_key,
                                      blocktrail_public_keys=blocktrail_public_keys,
                                      key_index=key_index,
                                      testnet=client.testnet)


    from blocktrail_protocol import BlocktrailWithdrawalProtocol
    factory.blocktrail_wallet           = wallet
    factory.blocktrail_change_address   = config.get("blocktrail", "change_address")
    factory.protocol = BlocktrailWithdrawalProtocol


  if config.has_section('mailer'):
    from mailer_protocol import MailerWithdrawalProtocol
    factory.mandrill_apikey             = config.get("mailer", "mandrill_apikey")
    factory.mandrill_template_name      = config.get("mailer", "template_name")
    factory.mandrill_from_email         = config.get("mailer", "from_email")
    factory.mandrill_from_name          = config.get("mailer", "from_name")
    factory.mandrill_to_email           = config.get("mailer", "to_email")
    factory.mandrill_to_name            = config.get("mailer", "to_name")
    factory.mandrill_website            = config.get("mailer", "website")
    factory.protocol = MailerWithdrawalProtocol

  if should_connect_on_ssl:
    reactor.connectSSL( blinktrade_url.netloc ,  blinktrade_port , factory, ssl.ClientContextFactory() )
  else:
    reactor.connectTCP(blinktrade_url.netloc ,  blinktrade_port , factory )

  reactor.run()
Пример #47
0
import appdirs
import errno
import logging
import os
import yaml

from virt_backup import APP_NAME


logger = logging.getLogger("virt_backup")

os.environ["XDG_CONFIG_DIRS"] = "/etc"
CONFIG_DIRS = (
    appdirs.user_config_dir(APP_NAME),
    appdirs.site_config_dir(APP_NAME),
)
CONFIG_FILENAME = "config.yml"


def get_config(custom_path=None):
    """
    Get config file and load it with yaml

    :returns: loaded config in yaml, as a dict object
    """
    if custom_path:
        config_path = custom_path
    else:
        for d in CONFIG_DIRS:
            config_path = os.path.join(d, CONFIG_FILENAME)
            if os.path.isfile(config_path):
Пример #48
0
import json
import os
import sys

from binascii import hexlify
from appdirs import site_config_dir

config_file_dir = site_config_dir("Prophasis", "Prophasis")
config_file_path = os.path.join(config_file_dir, "core.conf.json")

def get_config():
    try:
        with open(config_file_path, "r") as f:
            config = json.load(f)
    except FileNotFoundError:
        raise SystemExit("Config file, config.json not found at {0}, perhaps "
            "you need to run the core setup script?".format(config_file_path))

    return config

def get_config_value(config, key):
    try:
        return config[key]
    except KeyError:
        raise SystemExit("Key \"{0}\" does not exist in config.json, did you "
            "run core setup?".format(key))
Пример #49
0
import os

import appdirs


# Application metadata
__author__      = "FujiMakoto"
__copyright__   = "Copyright 2016, FujiMakoto"
__license__     = "MIT"
__version__     = "0.2.0"
__maintainer__  = "FujiMakoto"
__email__       = "*****@*****.**"
__status__      = "Prototype"


# Global paths
APP_DIR     = os.path.dirname(__file__)
PLUGIN_DIR  = os.path.join(APP_DIR, 'commands')
DATA_DIR    = os.path.join(APP_DIR, 'data')

USER_CONFIG_DIR = appdirs.user_config_dir('tumdlr')
SITE_CONFIG_DIR = appdirs.site_config_dir('tumdlr')

USER_DATA_DIR   = appdirs.user_data_dir('tumdlr')
SITE_DATA_DIR   = appdirs.site_config_dir('tumdlr')

USER_LOG_DIR    = appdirs.user_log_dir('tumdlr')
Пример #50
0
import errno
import logging
from os.path import expanduser
from os.path import join as join_path
from sys import exit

from ruamel import yaml
import requests
from appdirs import site_config_dir, user_config_dir

from . import __version__

DEFAULT_CONFIG = join_path(user_config_dir('ntfy', 'dschep'), 'ntfy.yml')
SITE_DEFAULT_CONFIG = join_path(site_config_dir('ntfy', 'dschep'), 'ntfy.yml')
OLD_DEFAULT_CONFIG = '~/.ntfy.yml'

USER_AGENT = 'ntfy/{version} {default_user_agent}'.format(
    version=__version__,
    default_user_agent=requests.utils.default_user_agent())


def load_config(config_path=DEFAULT_CONFIG):
    logger = logging.getLogger(__name__)

    try:
        config = yaml.load(open(expanduser(config_path)))
    except IOError as e:
        if e.errno == errno.ENOENT and config_path == DEFAULT_CONFIG:
            logger.info('{} not found'.format(config_path))
            config = {}
        else:
Пример #51
0
import errno
import logging
from os.path import expanduser
from os.path import join as join_path
from sys import exit

from ruamel import yaml
import requests
from appdirs import site_config_dir, user_config_dir

from . import __version__

DEFAULT_CONFIG = join_path(user_config_dir("ntfy", "dschep"), "ntfy.yml")
SITE_DEFAULT_CONFIG = join_path(site_config_dir("ntfy", "dschep"), "ntfy.yml")
OLD_DEFAULT_CONFIG = expanduser("~/.ntfy.yml")

USER_AGENT = "ntfy/{version} {default_user_agent}".format(
    version=__version__, default_user_agent=requests.utils.default_user_agent()
)


def load_config(config_path=DEFAULT_CONFIG):
    logger = logging.getLogger(__name__)

    try:
        config = yaml.load(open(expanduser(config_path)))
    except IOError as e:
        if e.errno == errno.ENOENT and config_path == DEFAULT_CONFIG:
            logger.info("{} not found".format(config_path))
            config = {}
        else:
Пример #52
0
def main():
  parser = argparse.ArgumentParser(description="Process blinktrade withdrawals requests")

  parser.add_argument('-c',
                      "--config",
                      action="store",
                      dest="config",
                      help='Configuration file', type=str)

  arguments = parser.parse_args()

  candidates = [ os.path.join(site_config_dir('blinktrade'), 'blinktrade_withdrawer.ini'),
                 os.path.expanduser('~/.blinktrade/blinktrade_withdrawer.ini')]
  if arguments.config:
    candidates.append(arguments.config)

  config = ConfigParser.SafeConfigParser()
  config.read( candidates )

  password = getpass.getpass('password: '******'ws':
    should_connect_on_ssl = False
    blinktrade_port = 80

  db_engine = config.get("database", "sqlalchemy_engine") + ':///' +\
              os.path.expanduser(config.get("database", "sqlalchemy_connection_string"))
  engine = create_engine(db_engine, echo=config.getboolean('database', 'sqlalchmey_verbose'))
  Base.metadata.create_all(engine)

  factory = BlinkTradeClientFactory(blinktrade_url.geturl())
  factory.db_session                  = scoped_session(sessionmaker(bind=engine))
  factory.verbose                     = config.getboolean("blinktrade", "verbose")
  factory.blinktrade_broker_id        = config.get("blinktrade", "broker_id")
  factory.blinktrade_user             = decrypt(password, unhexlify(config.get("blinktrade", "user")))
  factory.blinktrade_password         = decrypt(password, unhexlify(config.get("blinktrade", "password")))
  factory.currencies                  = json.loads(config.get("blinktrade", "currencies"))
  factory.methods                     = json.loads(config.get("blinktrade", "methods"))
  factory.blocked_accounts            = json.loads(config.get("blinktrade", "blocked_accounts"))

  if config.has_section('blockchain_info'):
    from blockchain_info import BlockchainInfoWithdrawalProtocol
    factory.blockchain_guid             = decrypt(password, unhexlify(config.get("blockchain_info", "guid")))
    factory.blockchain_main_password    = decrypt(password, unhexlify(config.get("blockchain_info", "main_password")))
    factory.blockchain_second_password  = decrypt(password, unhexlify(config.get("blockchain_info", "second_password")))
    factory.from_address                = config.get("blockchain_info", "from_address")
    factory.note                        = config.get("blockchain_info", "note")
    factory.protocol = BlockchainInfoWithdrawalProtocol

  if config.has_section('mailer'):
    from mailer_protocol import MailerWithdrawalProtocol
    factory.mandrill_apikey             = config.get("mailer", "mandrill_apikey")
    factory.mandrill_template_name      = config.get("mailer", "template_name")
    factory.mandrill_from_email         = config.get("mailer", "from_email")
    factory.mandrill_from_name          = config.get("mailer", "from_name")
    factory.mandrill_to_email           = config.get("mailer", "to_email")
    factory.mandrill_to_name            = config.get("mailer", "to_name")
    factory.mandrill_website            = config.get("mailer", "website")
    factory.protocol = MailerWithdrawalProtocol

  if should_connect_on_ssl:
    reactor.connectSSL( blinktrade_url.netloc ,  blinktrade_port , factory, ssl.ClientContextFactory() )
  else:
    reactor.connectTCP(blinktrade_url.netloc ,  blinktrade_port , factory )

  reactor.run()
Пример #53
0
        logging.getLogger().setLevel(logging.INFO)

    # Build up a list of potential config files to parse.
    config_paths = []
    try:
        import appdirs
    except ImportError:
        logging.warn("appdirs not installed, not reading site/user config")
    else:
        config_paths.append(
            os.path.join(
                appdirs.user_config_dir(APP_NAME, APP_AUTHOR),
                CONFIG_FILE_NAME))
        config_paths.append(
            os.path.join(
                appdirs.site_config_dir(APP_NAME, APP_AUTHOR),
                CONFIG_FILE_NAME))
    if cli_args.config:
        config_paths.append(cli_args.config)

    if cli_args.cmd == "print_config_paths":
        for config_path in config_paths:
            print config_path
        sys.exit(0)

    # Attempt to open each config file, and update the `cfg` dict with each
    # one.
    cfg = {}
    for config_path in config_paths:
        try:
            with open(config_path) as f: