Ejemplo n.º 1
0
    def __init__(self):
        if not logger.factory_instance:
            logger.init(logging.DEBUG, True)

        self.log = logger.get_logger('{0}_installer'.format(APP_NAME))
        self.app = api.get_app_setup(APP_NAME)
        self.database_path = join(self.app.get_data_dir(), 'database')
        self.occ = OCConsole(join(self.app.get_install_dir(), OCC_RUNNER_PATH))
Ejemplo n.º 2
0
    def __init__(self, debug=False, config_dir=None):
        self.platform_config = PlatformConfig(config_dir=config_dir)

        if not logger.factory_instance:
            console = True if debug else False
            level = logging.DEBUG if debug else logging.INFO
            logger.init(level, console, join(self.platform_config.get_platform_log()))

        self.user_platform_config = PlatformUserConfig(self.platform_config.get_user_config())

        self.log_aggregator = Aggregator(self.platform_config)

        self.platform_app_paths = AppPaths(PLATFORM_APP_NAME, self.platform_config)
        self.platform_app_paths.get_data_dir()
        self.versions = Versions(self.platform_config)
        self.redirect_service = RedirectService(self.user_platform_config, self.versions)
        self.port_config = PortConfig(self.platform_app_paths.get_data_dir())

        self.nat_pmp_port_mapper = NatPmpPortMapper()
        self.upnp_port_mapper = UpnpPortMapper(UPnP())
        self.port_mapper_factory = PortMapperFactory(self.nat_pmp_port_mapper, self.upnp_port_mapper)
        self.port_drill_factory = PortDrillFactory(self.user_platform_config, self.port_config,
                                                   self.port_mapper_factory)
        self.device_info = DeviceInfo(self.user_platform_config, self.port_config)
        if self.platform_config.get_installer() == 'sam':
            self.sam = SamStub(self.platform_config, self.device_info)
        else:
            self.sam = Snap(self.platform_config, self.device_info)
        self.platform_cron = PlatformCron(self.platform_config)
        self.systemctl = Systemctl(self.platform_config)
        self.ldap_auth = LdapAuth(self.platform_config, self.systemctl)
        self.event_trigger = EventTrigger(self.sam, self.platform_config)
        self.nginx = Nginx(self.platform_config, self.systemctl, self.device_info)
        self.certbot_genetator = CertbotGenerator(self.platform_config, self.user_platform_config,
                                                  self.device_info, self.sam)
        self.tls = CertificateGenerator(self.platform_config, self.user_platform_config, self.device_info, self.nginx,
                                        self.certbot_genetator)
        
        self.device = Device(self.platform_config, self.user_platform_config, self.redirect_service,
                             self.port_drill_factory, self.sam, self.platform_cron, self.ldap_auth,
                             self.event_trigger, self.tls, self.nginx)

        self.internal = Internal(self.platform_config, self.device, self.redirect_service, self.log_aggregator)
        self.path_checker = PathChecker(self.platform_config)
        self.lsblk = Lsblk(self.platform_config, self.path_checker)
        self.hardware = Hardware(self.platform_config, self.event_trigger,
                                 self.lsblk, self.path_checker, self.systemctl)
        self.network = Network()
        self.public = Public(self.platform_config, self.user_platform_config, self.device, self.device_info, self.sam,
                             self.hardware, self.redirect_service, self.log_aggregator, self.certbot_genetator,
                             self.port_mapper_factory, self.network, self.port_config)
        self.udev = Udev(self.platform_config)
Ejemplo n.º 3
0
def create_web_app(data_dir):
    config = BrowserConfig(data_dir)

    logger.init(logging.INFO, False, join(config.get_browser_log()))

    browser = Browser(config)

    app = Flask(__name__)
    app.config['SECRET_KEY'] = config.get_web_secret_key()
    login_manager = LoginManager()
    login_manager.init_app(app)


    html_prefix = ''
    rest_prefix = '/rest'


    @login_manager.unauthorized_handler
    def _callback():
        if request.is_xhr:
            return 'Unauthorised', 401
        else:
            return redirect(html_prefix + '/login.html')


    @app.route(html_prefix + '/<path:filename>')
    @nocache
    def static_file(filename):
        return send_from_directory(config.www_root(), filename)


    @login_manager.user_loader
    def load_user(email):
        return FlaskUser(User(email))


    @app.route(rest_prefix + "/login", methods=["GET", "POST"])
    def login():

        if 'name' in request.form and 'password' in request.form:
            try:
                authenticate(request.form['name'], request.form['password'])
                user_flask = FlaskUser(User(request.form['name']))
                login_user(user_flask, remember=False)
                # next_url = request.get('next_url', '/')
                return redirect("/")
            except Exception, e:
                traceback.print_exc(file=sys.stdout)
                return jsonify(message=e.message), 400

        return jsonify(message='missing name or password'), 400
Ejemplo n.º 4
0
    def __init__(self, debug=False):
        self.platform_config = PlatformConfig()

        if not logger.factory_instance:
            console = True if debug else False
            level = logging.DEBUG if debug else logging.INFO
            logger.init(level, console, join(self.platform_config.get_platform_log()))

        self.user_platform_config = PlatformUserConfig(self.platform_config.get_user_config())

        self.log_aggregator = Aggregator(self.platform_config)

        self.platform_app_paths = AppPaths(PLATFORM_APP_NAME, self.platform_config)
        self.platform_app_paths.get_data_dir()

        self.redirect_service = RedirectService(self.user_platform_config, platform_version)
        self.port_config = PortConfig(self.platform_app_paths.get_data_dir())

        self.nat_pmp_port_mapper = NatPmpPortMapper()
        self.upnp_port_mapper = UpnpPortMapper(UPnP())
        self.port_drill_factory = PortDrillFactory(self.user_platform_config, self.port_config,
                                                   self.nat_pmp_port_mapper, self.upnp_port_mapper)
        self.info = DeviceInfo(self.user_platform_config, self.port_config)
        self.sam = SamStub(self.platform_config, self.info)
        self.platform_cron = PlatformCron(self.platform_config)
        self.ldap_auth = LdapAuth(self.platform_config)
        self.event_trigger = EventTrigger(self.sam)
        self.nginx = Nginx(self.platform_config)
        self.tls = Tls(self.platform_config, self.info, self.nginx)
        
        self.device = Device(self.platform_config, self.user_platform_config, self.redirect_service,
                             self.port_drill_factory, self.sam, self.platform_cron, self.ldap_auth,
                             self.event_trigger, self.tls)

        self.internal = Internal(self.platform_config, self.device, self.redirect_service, self.log_aggregator)
        self.path_checker = PathChecker(self.platform_config)
        self.lsblk = Lsblk(self.platform_config, self.path_checker)
        self.hardware = Hardware(self.platform_config, self.event_trigger, self.lsblk, self.path_checker)

        self.public = Public(self.platform_config, self.user_platform_config, self.device, self.info, self.sam, self.hardware,
                             self.redirect_service, self.log_aggregator)
        self.udev = Udev(self.platform_config)
Ejemplo n.º 5
0
from syncloud_app import logger

from syncloud_platform.disks.hardware import has_unallocated_space_at_the_end
from syncloud_platform.disks.lsblk import Disk, Partition

logger.init(console=True)


def test_has_unallocated_space_at_the_end_low_percent():

    parted = '''BYT;
/dev/sda:100%:scsi:512:512:msdos:ATA KINGSTON SV300S3:;
1:0.00%:0.00%:0.00%:free;
1:0.00%:1.67%:1.67%:::;
2:1.67%:100%:98.3%:ext4::;
1:100%:100%:0.00%:free;'''

    assert has_unallocated_space_at_the_end(parted) == False


def test_has_unallocated_space_at_the_end_high_percent():

    parted = '''BYT;
/dev/sda:100%:scsi:512:512:msdos:ATA KINGSTON SV300S3:;
1:0.00%:0.00%:0.00%:free;
1:0.00%:1.67%:1.67%:::;
2:1.67%:100%:98.3%:ext4::;
1:100%:100%:12.34%:free;'''

    assert has_unallocated_space_at_the_end(parted) == True
Ejemplo n.º 6
0
import sys
import logging

from syncloud_app import logger
from syncloud_platform.events import run_hook_script

logger.init(logging.DEBUG, console=True, line_format='%(message)s')

apps_dir = sys.argv[1]
app_id = sys.argv[2]
hook_script = sys.argv[3]

run_hook_script(apps_dir, app_id, hook_script)
Ejemplo n.º 7
0
    sub.add_argument('app_id', help="application id")

    sub = subparsers.add_parser('release', help="make/update release")
    sub.add_argument('source', help="existing release to copy from")
    sub.add_argument('target', help="release that will be created/updated")
    sub.add_argument('--override',
                     nargs='*',
                     help='apps versions overrides in format: <app>=<version>',
                     default=[])

    #TODO: Not sure why do we need this
    subparsers.add_parser('upgrade_all',
                          help="upgrade apps and install required apps")

    return parser


if __name__ == '__main__':
    arg_parser = get_arg_parser()
    args = arg_parser.parse_args()

    console = True if args.debug else False
    level = logging.DEBUG if args.debug else logging.INFO
    logger.init(level, console, '/var/log/sam.log')

    sam_home = normpath(join(dirname(__file__), '..'))

    sam = get_sam(sam_home)

    main.execute(sam, args, exit_code_on_error=1)
Ejemplo n.º 8
0
import sys
import logging
from syncloud_app import logger
from syncloud_platform.gaplib.scripts import run_script

logger.init(logging.DEBUG, console=True, line_format='%(message)s')
run_script(sys.argv[1])
Ejemplo n.º 9
0
from syncloud_app import logger

import sys, os
myPath = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.abspath(join(myPath, '../..')))

print(sys.path)

from syncloud_sam.manager import get_sam
from syncloud_sam.config import SamConfig

from subprocess import check_output
import tarfile

test_dir = dirname(__file__)
logger.init(logging.DEBUG, console=True)

test_temp_dir = '/tmp/sam-tests'

def temp_dir():
    if not isdir(test_temp_dir):
        makedirs(test_temp_dir)
    return tempfile.mkdtemp(dir=test_temp_dir)

def text_file(path, filename, text=''):
    app_path = join(path, filename)
    if not isdir(path):
        makedirs(path)
    if isfile(app_path):
        remove(app_path)
    f = open(app_path, 'w')
Ejemplo n.º 10
0
from syncloud_app import logger

import sys, os
myPath = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.abspath(join(myPath, '../..')))

print(sys.path)

from syncloud_sam.manager import get_sam
from syncloud_sam.config import SamConfig

from subprocess import check_output
import tarfile

test_dir = dirname(__file__)
logger.init(logging.DEBUG, console=True)

test_temp_dir = '/tmp/sam-tests'


def temp_dir():
    if not isdir(test_temp_dir):
        makedirs(test_temp_dir)
    return tempfile.mkdtemp(dir=test_temp_dir)


def text_file(path, filename, text=''):
    app_path = join(path, filename)
    if not isdir(path):
        makedirs(path)
    if isfile(app_path):
Ejemplo n.º 11
0
from os.path import dirname, join

import convertible
from syncloud_app import logger

from syncloud_platform.config.config import PlatformConfig
from syncloud_platform.disks.lsblk import Lsblk
from syncloud_platform.disks.path_checker import PathChecker

DIR = dirname(__file__)


CONFIG_DIR = join(dirname(__file__), '..', '..', '..', 'config')

logger.init(console=True)


def get_lsblk():
    platform_config = PlatformConfig(CONFIG_DIR)
    return Lsblk(platform_config, PathChecker(platform_config))


def test_list():
    disks = get_lsblk().available_disks(open(join(DIR, 'hardware', 'lsblk')).read())
    assert len(disks) == 3
    assert len(disks[0].partitions) == 1
    assert disks[1].partitions[2].mount_point == '/opt/disk/external'
    assert len(disks[1].partitions) == 3


def test_loop_support():
Ejemplo n.º 12
0
Archivo: sam.py Proyecto: Shadance/sam
    sub = subparsers.add_parser('upgrade', help="upgrade an app")
    sub.add_argument('app_id', help="application id")

    sub = subparsers.add_parser('version', help="get version of the app")
    sub.add_argument('release', help="release")
    sub.add_argument('app_id', help="application id")

    sub = subparsers.add_parser('release', help="make/update release")
    sub.add_argument('source', help="existing release to copy from")
    sub.add_argument('target', help="release that will be created/updated")
    sub.add_argument('--override', nargs='*', help='apps versions overrides in format: <app>=<version>', default=[])

    #TODO: Not sure why do we need this
    subparsers.add_parser('upgrade_all', help="upgrade apps and install required apps")

    return parser

if __name__ == '__main__':
    arg_parser = get_arg_parser()
    args = arg_parser.parse_args()

    console = True if args.debug else False
    level = logging.DEBUG if args.debug else logging.INFO
    logger.init(level, console, '/var/log/sam.log')

    sam_home = normpath(join(dirname(__file__), '..'))

    sam = get_sam(sam_home)

    main.execute(sam, args, exit_code_on_error=1)
Ejemplo n.º 13
0
import logging

from mock import MagicMock
import pytest

from syncloud_app import logger

logger.init(logging.DEBUG, True)


@pytest.fixture(scope="session")
def sam():
    sam = MagicMock()
    sam.update = MagicMock(return_value=True)
    sam.upgrade_all = MagicMock(return_value=True)
    return sam


@pytest.fixture(scope="session")
def insider():
    insider = MagicMock()
    insider.acquire_domain = MagicMock(return_value=True)
    return insider

@pytest.fixture(scope="session")
def apache():
    apache = MagicMock()
    apache.activate = MagicMock()
    return apache