示例#1
0
 def test_env_nonexist_bool(self):
     """Test env_bool returns default with non-existant env var"""
     k = 'EXAMPLE_NOEXIST'
     if k in os.environ:
         del os.environ[
             k]  # Ensure the env var we're testing definitely does not exist.
     self.assertIsNone(helpers.env_bool(k))
     self.assertEqual(helpers.env_bool(k, 'error'), 'error')
示例#2
0
 def test_env_bool_true(self):
     """Test env_bool returns True boolean with valid env var"""
     k = 'EXAMPLE_EXIST'
     for v in self.truthy:
         os.environ[k] = str(v)
         self.assertTrue(helpers.env_bool(k, 'fail'),
                         msg=f'env_bool({v}) === True')
示例#3
0
 def test_env_bool_false(self):
     """Test env_bool returns False boolean with valid env var"""
     k = 'EXAMPLE_EXIST'
     for v in self.falsey:
         os.environ[k] = str(v)
         self.assertFalse(helpers.env_bool(k, 'fail'),
                          msg=f'env_bool({v}) === False')
示例#4
0
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
    INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
    PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


"""

import logging
import unittest
from privex.loghelper import LogHelper
from privex.helpers import env_bool
from privex.rpcemulator.base import Emulator
from tests.test_bitcoin import TestBitcoinEmulator

Emulator.use_coverage = True

if env_bool('DEBUG', False) is True:
    LogHelper('privex.rpcemulator',
              level=logging.DEBUG).add_console_handler(logging.DEBUG)
else:
    LogHelper('privex.rpcemulator',
              level=logging.CRITICAL)  # Silence non-critical log messages
    Emulator.quiet = True  # Disable HTTP logging

if __name__ == '__main__':
    unittest.main()
示例#5
0
"""
Copyright::

    +===================================================+
    |                 © 2020 Privex Inc.                |
    |               https://www.privex.io               |
    +===================================================+
    |                                                   |
    |        Privex's Random IOTA Tools                 |
    |        License: X11/MIT                           |
    |                                                   |
    |        Core Developer(s):                         |
    |                                                   |
    |          (+)  Chris (@someguy123) [Privex]        |
    |                                                   |
    +===================================================+

    Privex's Random IOTA Tools
    Copyright (c) 2020    Privex Inc. ( https://www.privex.io )

"""
from privex.helpers import env_bool
from os import getenv as env

IOTA_HOST = env('IOTA_HOST', 'http://localhost:14265')

RAW_MODE = env_bool('RAW_MODE', False)

示例#6
0
                'amount': '0.100 GOLOS',
                'memo': 'testing'
            }
        ]],
        extensions=[],
        signatures=[
            '1f1a0212f7b9fe263acaeadf1ec127000dc234c413b543e3c268d251e8d8205b95746f3aa102805eb85d5ee72bf1c80b7'
            + '14fadf081d29138a6ddab085dafa28604'
        ]),
    'txid':
    'c901c52daf57b60242d9d7be67f790e023cf2780',
}]

IGNORE_KEYS_FIND = ['transaction_id', 'block_num', 'transaction_num']

DEBUG = env_bool('DEBUG', False)

lh = LogHelper('golos',
               handler_level=logging.DEBUG if DEBUG else logging.CRITICAL)
lh.add_console_handler()
log = lh.get_logger()


class GolosTestCase(unittest.TestCase):
    def setUp(self):
        self.golos = Api(nodes=NODES, report=DEBUG)

    def test_get_account(self):
        """Testing Api.get_accounts returns valid account dictionaries"""
        a = self.golos.get_accounts(TEST_ACCOUNTS)
        self.assertIs(type(a), list)
示例#7
0
import json
from dotenv import load_dotenv
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from getenv import env
from pika.adapters.blocking_connection import BlockingChannel
from privex.loghelper import LogHelper
from privex.helpers import env_bool, empty, settings as hlp_settings, Git, AttribDictable, env_int

load_dotenv()


cf = {}

DEBUG = cf['DEBUG'] = env_bool('DEBUG', False)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

ENABLE_LG = env_bool('ENABLE_LG', True)
"""Enable the looking glass (mtr / ping) application (lookingglass) - Default: True (enabled)"""

ENABLE_PEERAPP = env_bool('ENABLE_PEERAPP', True)
"""Enable the peer information application (peerapp) - Default: True (enabled)"""

DEFAULT_API_LIMIT = env_int('VUE_APP_DEFAULT_API_LIMIT', 100)
"""Default for ``limit`` field on API queries."""

MAX_API_LIMIT = env_int('VUE_APP_MAX_API_LIMIT', 10000)
"""Max value allowed for ``limit`` field on API queries."""

HOT_LOADER = env_bool('HOT_LOADER', False)
示例#8
0
import geoip2.database
import sys
import subprocess
import shlex
import operator
import time
import logging
from dotenv import load_dotenv
from socket import gethostbyaddr, herror
from privex.helpers import env_bool
from privex.loghelper import LogHelper
from os import getenv as env

load_dotenv()

use_docker = env_bool('USE_DOCKER', True)
docker_name = env('DOCKER_NAME', 'seed')

_lh = LogHelper('privex.steempeers', handler_level=logging.DEBUG)
_lh.add_console_handler()

log = _lh.get_logger()

# If USE_DOCKER is True, obtain the PID of the docker container, then use nsenter
# to run netstat inside of the containers network stack
if use_docker:
    cmd = shlex.split("docker inspect -f '{{.State.Pid}}' " + docker_name)

    pid = ""
    # print(cmd)
    with subprocess.Popen(cmd, stdout=subprocess.PIPE) as proc:
示例#9
0
import os
import logging
from os import getenv as env
from os.path import join

from privex.helpers import env_bool
from dotenv import load_dotenv

# from balancer.app import f

cf = {}
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

load_dotenv()

DEBUG = cf['DEBUG'] = env_bool('DEBUG', False)

CONSOLE_LOG_LEVEL = env('LOG_LEVEL', None)
CONSOLE_LOG_LEVEL = logging.getLevelName(
    str(CONSOLE_LOG_LEVEL).upper()) if CONSOLE_LOG_LEVEL is not None else None

if CONSOLE_LOG_LEVEL is None:
    CONSOLE_LOG_LEVEL = logging.DEBUG if cf['DEBUG'] else logging.INFO

DBG_LOG, ERR_LOG = join(BASE_DIR, 'logs',
                        'debug.log'), join(BASE_DIR, 'logs', 'error.log')

all_plugins = [
    'condenser_api', 'network_broadcast_api', 'rc_api', 'account_by_key',
    'database_api', 'account_history_api', 'block_api', 'market_history_api'
]
示例#10
0
DAY = HOUR * 24
WEEK = DAY * 7
MONTH = DAY * 30
YEAR = DAY * 365

cf = DictObject()
APP_DIR = Path(__file__).parent.expanduser().resolve()
TEMPLATES_DIR = APP_DIR / 'templates'
BASE_DIR = APP_DIR.parent

#######################################
#
# General configuration
#
#######################################
cf['DEBUG'] = DEBUG = env_bool(
    'DEBUG', True if env('FLASK_ENV') == 'development' else False)

HOST = cf['HOST'] = env('HOST', '127.0.0.1')
PORT = cf['PORT'] = env_int('PORT', 5111)

cf['API_ONLY'] = env_bool('API_ONLY', False)
"""If set to ``True``, will always return JSON, never HTML pages."""

USE_IP_HEADER = cf['USE_IP_HEADER'] = env_bool('USE_IP_HEADER', True)
"""If set to False, will obtain the IP from request.remote_addr instead of the header set in IP_HEADER"""
IP_HEADER = cf['IP_HEADER'] = env('IP_HEADER', 'X-REAL-IP')
"""The name of the header that will be passed to Flask containing the IP address of the user"""

USE_FAKE_IPS = env_bool('USE_FAKE_IPS', DEBUG)
"""
USE_FAKE_IPS causes the app to always use FAKE_V4 and FAKE_V6 as the detected client's v4/v6 IPs, which aids
示例#11
0
    |          (+)  Chris (@someguy123) [Privex]        |
    |          (+)  Kale (@kryogenic) [Privex]          |
    |                                                   |
    +===================================================+
    
    Official Repo: https://github.com/Privex/collation-fixer


"""
from dotenv import load_dotenv
from os import getenv as env
from privex.helpers import env_int, env_bool

load_dotenv()

DEBUG = env_bool('DEBUG', False)
QUIET = env_bool('QUIET', False)

LOG_LEVEL = env('LOG_LEVEL', 'DEBUG' if DEBUG else 'WARNING')

if QUIET:
    LOG_LEVEL = env('LOG_LEVEL', 'ERROR')

DB_HOST = env('DB_HOST', 'localhost')
DB_USER = env('DB_USER', env('DB_USERNAME', 'root'))
DB_PASS = env('DB_PASS', env('DB_PASSWORD', ''))
DB_PORT = env_int('DB_PORT', 3306)

DB_NAME = env('DB_NAME')

示例#12
0
                raise FileNotFoundError(
                    f"File/folder '{filename}' was not found (abs path)")
            return None
        return filename

    for b in SEARCH_PATHS:
        f = abspath(expanduser(join(b, filename)))
        if exists(f): return f

    if throw:
        raise FileNotFoundError(
            f"File/folder '{filename}' was not found (rel path search)")
    return None


DEBUG = env_bool('DEBUG', False)

verbose: bool = env_bool('VERBOSE', DEBUG)
quiet: bool = env_bool('QUIET', False)

_LOG_DIR = env('LOG_DIR', join(BASE_DIR, 'logs'))
try:
    LOG_DIR = abspath(join(find_parent(_LOG_DIR), basename(_LOG_DIR)))
except FileNotFoundError as e:
    print(
        f" [!!!] WARNING: Failed to validate LOG_DIR '{_LOG_DIR}' - could not verify parent folder exists."
        f"Exception was: {type(e)} {str(e)}",
        file=sys.stderr)
    print(
        f" [!!!] Setting LOG_DIR to original value - may be fixed when log folder + containing folders are auto-created.",
        file=sys.stderr)
示例#13
0
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
from privex.loghelper import LogHelper

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

# Deal with the issue of conflicting dotenv packages by trying both methods...
ENV_FILE = str(BASE_DIR / '.env')
try:
    dotenv.load_dotenv(ENV_FILE)
except AttributeError:
    dotenv.read_dotenv(ENV_FILE)

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env_bool('DEBUG', False)

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY', None)

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/


def _suggest_secret():
    _abs_env = BASE_DIR / '.env'
    print(
        "\nPlease generate a secure random string used to encrypt sensitive data such as user sessions"
    )
    print(
        f"Place the following line into the file {_abs_env!s} - for production we recommend generating it by hand."
示例#14
0
import pika
import redis
from dotenv import load_dotenv
from flask import Flask
from getenv import env
from pika.adapters.blocking_connection import BlockingChannel
from privex.loghelper import LogHelper
from privex.helpers import env_bool

load_dotenv()
flask = Flask(__name__)

cf = flask.config

DEBUG = flask.config['DEBUG'] = env_bool('DEBUG', False)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

ENABLE_PEERSAPP = cf['ENABLE_PEERAPP'] = env_bool('ENABLE_PEERAPP', True)
"""Enable the peer information application (peerapp) - Default: True (enabled)"""

#######################################
#
# Logging Configuration
#
#######################################

# Log to console with CONSOLE_LOG_LEVEL, as well as output logs >=info / >=warning to respective files
# with automatic daily log rotation (up to 14 days of logs)
# Due to the amount of output from logging.DEBUG, we only log INFO and higher to a file.
# Valid environment log levels (from least to most severe) are:
示例#15
0
import redis
import json
from dotenv import load_dotenv
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from getenv import env
from pika.adapters.blocking_connection import BlockingChannel
from privex.loghelper import LogHelper
from privex.helpers import env_bool, empty, settings as hlp_settings

load_dotenv()

cf = {}

DEBUG = cf['DEBUG'] = env_bool('DEBUG', False)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

ENABLE_LG = env_bool('ENABLE_LG', True)
"""Enable the looking glass (mtr / ping) application (lookingglass) - Default: True (enabled)"""

ENABLE_PEERAPP = env_bool('ENABLE_PEERAPP', True)
"""Enable the peer information application (peerapp) - Default: True (enabled)"""

#######################################
#
# Logging Configuration
#
#######################################

# Log to console with CONSOLE_LOG_LEVEL, as well as output logs >=info / >=warning to respective files
示例#16
0
文件: core.py 项目: Privex/EOSHistory
SECRET_KEY = env('SECRET_KEY', None)

if SECRET_KEY is None:
    print('Critical ERROR: No SECRET_KEY set in .env! Cannot continue.')
    print('Please generate a secure random string used to encrypt sensitive data such as user sessions')
    print(
        f"Place the following line into the file {join(BASE_DIR, '.env')} - for production we "
        f"recommend generating it by hand."
    )
    print()
    print(f'SECRET_KEY={random_str(size=64)}')
    print()
    sys.exit()

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = env_bool('DEBUG', False)

ALLOWED_HOSTS = env_csv('ALLOWED_HOSTS', ['*'])

if '*' in ALLOWED_HOSTS and not DEBUG:
    print("\n================================================================================================\n")
    print('WARNING: ALLOWED_HOSTS currently contains "*". You should configure ALLOWED_HOSTS in your .env')
    print("so that it's restricted to the domains / IPs you expect this app to be accessed from, e.g.\n")
    print("    ALLOWED_HOSTS=eos-history.example.com,eoshistory.example.net,1.2.3.4\n")
    print("\n================================================================================================\n")

# Ignore the whitelist and allow CORS from anywhere
CORS_ORIGIN_ALLOW_ALL = env_bool('CORS_ORIGIN_ALLOW_ALL', True)
# A comma separated list of domains (must include each subdomain) that can send CORS requests
# This is ignored if you don't change CORS_ORIGIN_ALLOW_ALL to False.
CORS_ORIGIN_WHITELIST = env_csv('CORS_ORIGIN_WHITELIST', [])
示例#17
0
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = dirname(dirname(dirname(abspath(__file__))))

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'gna*8lm&p4n_g*@^e3$%x-wdgy+kp&^8v#&r(7*sk4q06mz!t$'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []

# Ignore the whitelist and allow CORS from anywhere
CORS_ORIGIN_ALLOW_ALL = env_bool('CORS_ORIGIN_ALLOW_ALL', True)
# A comma separated list of domains (must include each subdomain) that can send CORS requests
# This is ignored if you don't change CORS_ORIGIN_ALLOW_ALL to False.
CORS_ORIGIN_WHITELIST = env_csv('CORS_ORIGIN_WHITELIST', [])
# CORS_ORIGIN_WHITELIST = CORS_ORIGIN_WHITELIST.split(',') if CORS_ORIGIN_WHITELIST is not None else None

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS':
    ('django_filters.rest_framework.DjangoFilterBackend', )
}

EOS_NODE = env('EOS_NODE', 'https://eos.greymass.com')

EOS_START_TYPE = "relative"
"""
EOS_START_TYPE can be either ``"relative"`` (meaning EOS_START_BLOCK is relative to the head block),
示例#18
0
from dotenv import load_dotenv
from privex.helpers import env_bool
from os import getenv as env, path, getcwd
from os.path import dirname, abspath

load_dotenv()

BASE_DIR = dirname(abspath(__file__))

USE_DOCKER = env_bool('USE_DOCKER', True)
USE_GEOIP = env_bool('USE_GEOIP', True)

DOCKER_NAME = env('DOCKER_NAME', 'seed')

LOG_LEVEL = env('LOG_LEVEL', 'INFO')
GEOIP_DIR = env('GEOIP_DIR', '/usr/share/GeoIP')
GEOASN_NAME = env('GEOASN_NAME', 'GeoLite2-ASN.mmdb')
GEOCITY_NAME = env('GEOCITY_NAME', 'GeoLite2-City.mmdb')

GEOCITY, GEOASN = path.join(GEOIP_DIR,
                            GEOCITY_NAME), path.join(GEOIP_DIR, GEOASN_NAME)

search_geoip = [
    '/usr/share/GeoIP',
    '/usr/lib/GeoIP',
    '/var/lib/GeoIP',
    '/usr/local/share/GeoIP',
    '/usr/local/var/GeoIP',
    '/var/GeoIP',
    path.join(getcwd(), 'GeoIP'),
    path.expanduser('~/GeoIP'),