def set_safe_mode(): """ Requires sudo. """ touch(SAFE_MODE_FLAG_PATH) os.system('sudo systemctl start kano-safe-mode.target')
def set_safe_mode_requested(): """ Requires sudo. """ touch(SAFE_MODE_REQUESTED_FLAG_PATH) os.system('sudo systemctl start kano-safe-mode-requested.target')
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
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
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
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