コード例 #1
0
def set_safe_mode():
    """
    Requires sudo.
    """

    touch(SAFE_MODE_FLAG_PATH)
    os.system('sudo systemctl start kano-safe-mode.target')
コード例 #2
0
def set_safe_mode_requested():
    """
    Requires sudo.
    """

    touch(SAFE_MODE_REQUESTED_FLAG_PATH)
    os.system('sudo systemctl start kano-safe-mode-requested.target')
コード例 #3
0
def _open_uuids():
    """Helper function to open the uuids file and load the JSON inside.

    Returns:
        file, dict: The opened uuids file and its JSON data.
    """

    newly_created = False
    uuids_file = None
    data = dict()

    if not os.path.exists(TRACKER_UUIDS_PATH):
        touch(TRACKER_UUIDS_PATH)
        newly_created = True

    try:
        uuids_file = open_locked(TRACKER_UUIDS_PATH, 'r+')
    except (IOError, OSError) as error:
        logger.error('Error while opening uuids file: {}'.format(error))

    else:
        if newly_created:
            uuids_file.write(json.dumps(data))
            uuids_file.seek(0)

        try:
            data = json.load(uuids_file)
        except ValueError as error:
            logger.error('File uuids does not contain valid JSON: {}'.format(error))

    return uuids_file, data
コード例 #4
0
def main(args):
    """The main functionality of the kano-feedback-cli binary.

    Returns:
        int: Exit code as documented in :class:`.return_codes.RC`
    """

    if args['--flag'] and not _check_can_create_file_flag(args['--flag']):
        return RC.CANNOT_CREATE_FLAG

    report_file = args['--output'] or Path.DEFAULT_REPORT_PATH

    if args['--with-checks'] or args['--just-checks']:
        if not ensure_internet():
            return RC.NO_INTERNET

        if not ensure_kano_world_login():
            return RC.NO_KANO_WORLD_ACC

        if args['--just-checks']:
            return RC.SUCCESS

    if args['--screenshot']:
        print 'Taking a screenshot...'
        take_screenshot()

    print 'Gathering feedback data...'
    successful, error = send_data(
        args['--description'] or '',
        True,
        subject=args['--title'] or 'Kano OS: Feedback Report Logs',
        network_send=args['--send'],
        logs_path=args['--logs']
    )
    if not successful:
        print 'Error from send_data: {}'.format(error)
        return RC.ERROR_SEND_DATA

    if args['--flag']:
        print 'Creating file flag...'
        successful = touch(args['--flag'])
        if not successful:
            print 'Could not create file flag {}'.format(args['--flag'])
            return RC.ERROR_CREATE_FLAG

    successful = copy_archive_report(report_file)
    delete_tmp_dir()

    if successful:
        print 'Feedback file saved to:', report_file
    else:
        print 'Could not save feedback to:', report_file, \
              'Perhaps you need to use sudo?'
        return RC.ERROR_COPY_ARCHIVE

    return RC.SUCCESS
コード例 #5
0
def _check_can_create_file_flag(flag_path):
    """TODO"""
    success = False
    try:
        if touch(flag_path):
            os.remove(flag_path)
            success = True
    except:
        pass
    return success
コード例 #6
0
def _check_can_create_file_flag(flag_path):
    """TODO"""
    success = False
    try:
        if touch(flag_path):
            os.remove(flag_path)
            success = True
    except:
        pass
    return success
コード例 #7
0
def main(args):
    """The main functionality of the kano-feedback-cli binary.

    Returns:
        int: Exit code as documented in :class:`.return_codes.RC`
    """

    if args['--flag'] and not _check_can_create_file_flag(args['--flag']):
        return RC.CANNOT_CREATE_FLAG

    report_file = args['--output'] or Path.DEFAULT_REPORT_PATH

    if args['--with-checks'] or args['--just-checks']:
        if not ensure_internet():
            return RC.NO_INTERNET

        if not ensure_kano_world_login():
            return RC.NO_KANO_WORLD_ACC

        if args['--just-checks']:
            return RC.SUCCESS

    if args['--screenshot']:
        print 'Taking a screenshot...'
        take_screenshot()

    print 'Gathering feedback data...'
    successful, error = send_data(args['--description'] or '',
                                  True,
                                  subject=args['--title']
                                  or 'Kano OS: Feedback Report Logs',
                                  network_send=args['--send'],
                                  logs_path=args['--logs'])
    if not successful:
        print 'Error from send_data: {}'.format(error)
        return RC.ERROR_SEND_DATA

    if args['--flag']:
        print 'Creating file flag...'
        successful = touch(args['--flag'])
        if not successful:
            print 'Could not create file flag {}'.format(args['--flag'])
            return RC.ERROR_CREATE_FLAG

    successful = copy_archive_report(report_file)
    delete_tmp_dir()

    if successful:
        print 'Feedback file saved to:', report_file
    else:
        print 'Could not save feedback to:', report_file, \
              'Perhaps you need to use sudo?'
        return RC.ERROR_COPY_ARCHIVE

    return RC.SUCCESS