def accept_invites(server_id, rooms_list): s = MatrixHomeserver(server_id) for room in rooms_list: s.join(room['id'], room['sender']) if len(rooms_list) > 1: sleep(10) return rooms_list
def decline_invites(server_id, rooms_list): s = MatrixHomeserver(server_id) for room in rooms_list: s.leave(room['id']) if len(rooms_list) > 1: sleep(10) return rooms_list
def get_rooms(server_id): s = MatrixHomeserver(server_id) try: rooms = s.get_rooms() except (ConnectionError, TimeoutError, requests.exceptions.ConnectionError): return {'result': 'CONN_ERR'} result = s.save_rooms(rooms) return result
def process(server_id, data): s = MatrixHomeserver(server_id) accept, decline = s.process_invites(data) if accept: accept_invites.apply_async((server_id, accept)) if decline: decline_invites.apply_async((server_id, decline)) s.process_messages(data)
def sync(server_id, mutex_uuid=None): s = MatrixHomeserver(server_id) if s.server.sync_allowed and s.server.status == 'r': data = s.sync() process.apply_async((server_id, data)) return "OK" else: raise StopSync()
def update_joined_rooms(server_id): s = MatrixHomeserver(server_id) try: joined_rooms = s.fetch_joined_rooms() except (ConnectionError, TimeoutError, requests.exceptions.ConnectionError): return {'result': 'CONN_ERR'} banned_rooms = s.update_banned_rooms() result = { 'joined': len(joined_rooms), 'banned': len(banned_rooms) } return result
def sync2(server_id, interval, mutex_uuid=None): """ Synchronize last messages from the given server. Adjust sync interval, if changed. """ s = MatrixHomeserver(server_id) result = { 'interval': s.server.sync_interval } if s.server.sync_allowed and s.server.status == 'r': events_received = s.sync() result['events'] = events_received s.server.last_sync_time = timezone.now() s.server.save() return result else: raise StopSync()
def save_statistics(): servers = Server.objects.filter(sync_allowed=True) date = datetime.now() - timedelta(days=1) datestr = date.strftime("%Y-%m-%d") results = { 'total': len(servers), 'active': 0, 'details': {} } for server in servers: s = MatrixHomeserver(server.id) rcount, active_rooms = s.get_active_rooms(datestr) print("%s: %s active rooms for %s (%s)" % (datestr, rcount, server.hostname, server.id)) if rcount: results['active'] += 1 results['details'][server.hostname] = 0 for room in active_rooms: s.save_daily_stats(room, date) results['details'][server.hostname] += 1 return results
def register(server_id): """ Register new account on the chosen server and set username, avatar and filter for futher sync requests. """ # result is used only for task debugging, it can be safely removed result = {} s = MatrixHomeserver(server_id) if s.server.status == 'a': server_status = s.verify_existence() result['verify'] = server_status if s.server.status == 'c': registration_status = s.register() result['register'] = registration_status if s.server.status == 'r': filter_id = s.server.data.get("filter_id", None) profile_data = s.server.data.get("profile_data", None) if not filter_id: filter_id = s.upload_filter() result['filter_id'] = filter_id if not profile_data: profile_data = s.update_profile() result['profile_data'] = profile_data sync.apply_async((s.server.id,)) return result
def process_awaiting_invites(server_id): s = MatrixHomeserver(server_id) data = s.sync_invites() process.apply_async((server_id, data))