Example #1
0
def enable_system_recovery_flow():
    """Configure the system to start in recovery mode on next bootup.

    This sets up a few things:

    1. Replaces the normal bootup splash animation with another for recovery.
    2. Configures LightDM autologin for multi-user systems since the Updater
       runs under the user.

    Returns:
        bool - Whether the operation was successful
    """
    logger.debug('Configuring recovery stategy for next boot')
    successful = True

    # Set the recovery bootup splash and replace normal bootup one.
    set_splash_interrupted()

    # Configure the system to autologin for multi-user systems. This is due
    # to the Updater process running under the user.
    try:
        user = get_user_unsudoed()
        if user:
            # TODO: Create a single function for these in kano_init.
            enable_console_autologin(user)
            set_ldm_autologin(user)
            enable_ldm_autostart()
        else:
            successful = False
    except:
        logger.error('Could not configure autologin for update recovery!')
        successful = False

    return successful
Example #2
0
def kill_apps():
    # since kano-updater is run as root, need to inform
    # kanolauncher about user
    user = get_user_unsudoed()
    home = os.path.join('/home/', user)
    variables = 'HOME={} USER={}'.format(home, user)
    run_cmd('{} /usr/bin/kano-launcher /bin/true kano-kill-apps'.format(
        variables))
Example #3
0
 def beta_110_to_beta_111(self, dummy_progress):
     install('kano-sound-files kano-init-flow')
     # Create first boot file so we don't annoy existent users
     username = get_user_unsudoed()
     first_boot = '/home/%s/.kano-settings/first_boot' % username
     try:
         open(first_boot, 'w').close()
     except:
         pass
Example #4
0
 def beta_110_to_beta_111(self, dummy_progress):
     install('kano-sound-files kano-init-flow')
     # Create first boot file so we don't annoy existent users
     username = get_user_unsudoed()
     first_boot = '/home/%s/.kano-settings/first_boot' % username
     try:
         open(first_boot, 'w').close()
     except:
         pass
Example #5
0
 def beta_123_to_beta_124(self, dummy_progress):
     # Rename Snake custom theme
     username = get_user_unsudoed()
     path = '/home/%s/Snake-content/' % username
     old_name = 'custom_theme'
     if os.path.exists(path + old_name):
         new_name = 'custom-theme.xml'
         try:
             os.rename(path + old_name, path + new_name)
         except Exception:
             pass
Example #6
0
 def beta_123_to_beta_124(self, dummy_progress):
     # Rename Snake custom theme
     username = get_user_unsudoed()
     path = '/home/%s/Snake-content/' % username
     old_name = 'custom_theme'
     if os.path.exists(path + old_name):
         new_name = 'custom-theme.xml'
         try:
             os.rename(path + old_name, path + new_name)
         except Exception:
             pass
def chown_path(path, user=None, group=None):
    user_unsudoed = get_user_unsudoed()
    if not user:
        user = user_unsudoed
    if not group:
        group = user_unsudoed
    try:
        uid = pwd.getpwnam(user).pw_uid
        gid = grp.getgrnam(group).gr_gid
        os.chown(path, uid, gid)
    except KeyError as e:
        from kano.logging import logger
        logger.error(
            'user {} or group {} do not match with existing'.format(user, group))
        ret_val = False
    except OSError as e:
        from kano.logging import logger
        logger.error(
            'Error while trying to chown, root priviledges needed {}'.format(e))
        ret_val = False
    else:
        ret_val = True
    return ret_val
Example #8
0
def test_get_user_unsudoed(fake_user):
    from kano.utils.user import get_user_unsudoed

    assert get_user_unsudoed() == fake_user.username
import os
import re
import shutil

from kano.logging import logger
from kano.utils.user import get_user_unsudoed
from kano.utils.file_operations import ensure_dir, read_json, write_json, \
    chown_path

from kano_settings.common import settings_dir
from kano_settings.system.boards import get_board_props

USER = None
USER_ID = None

username = get_user_unsudoed()
if username != 'root':
    if os.path.exists(settings_dir) and os.path.isfile(settings_dir):
        os.rename(settings_dir, settings_dir + '.bak')
    ensure_dir(settings_dir)
    chown_path(settings_dir)
    settings_file = os.path.join(settings_dir, 'settings')

def merge_dicts(base, override):
    for key, value in override.iteritems():
        base[key] = value

    return base

DEFAULT_CONFIG = {
    'Keyboard-continent-index': 1,
Example #10
0
import os
import re
import shutil

from kano.logging import logger
from kano.utils.user import get_user_unsudoed
from kano.utils.file_operations import ensure_dir, read_json, write_json, \
    chown_path

from kano_settings.common import settings_dir
from kano_settings.system.boards import get_board_props

USER = None
USER_ID = None

username = get_user_unsudoed()
if username != 'root':
    if os.path.exists(settings_dir) and os.path.isfile(settings_dir):
        os.rename(settings_dir, settings_dir + '.bak')
    ensure_dir(settings_dir)
    chown_path(settings_dir)
    settings_file = os.path.join(settings_dir, 'settings')

def merge_dicts(base, override):
    for key, value in override.iteritems():
        base[key] = value

    return base

DEFAULT_CONFIG = {
    'Keyboard-continent-index': 1,
Example #11
0
def test_get_user_unsudoed(fake_user):
    from kano.utils.user import get_user_unsudoed

    assert get_user_unsudoed() == fake_user.username