示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#4
0
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)
示例#5
0
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()
示例#6
0
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
示例#7
0
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()
示例#8
0
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
示例#9
0
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
示例#10
0
def process_awaiting_invites(server_id):
    s = MatrixHomeserver(server_id)
    data = s.sync_invites()
    process.apply_async((server_id, data))