forked from Telodendria/Telodendria
Compare commits
No commits in common. "dfb950bc7f427f00a9f373a6deaf7fb1251ebd13" and "a77be8b43730a1a871024212dfcf3ffa86b6249c" have entirely different histories.
dfb950bc7f
...
a77be8b437
4 changed files with 27 additions and 25 deletions
|
@ -88,8 +88,8 @@
|
||||||
},
|
},
|
||||||
"Rooms": {
|
"Rooms": {
|
||||||
"fields": {
|
"fields": {
|
||||||
"invite": { "type": "{InvitedRooms}" },
|
"invite": { "type": "object" },
|
||||||
"join": { "type": "{JoinedRooms}" }
|
"join": { "type": "object" }
|
||||||
},
|
},
|
||||||
"type": "struct"
|
"type": "struct"
|
||||||
},
|
},
|
||||||
|
|
|
@ -155,19 +155,22 @@ ROUTE_IMPL(RouteSync, path, argp)
|
||||||
for (i = 0; i < ArraySize(invites); i++)
|
for (i = 0; i < ArraySize(invites); i++)
|
||||||
{
|
{
|
||||||
char *roomId = ArrayGet(invites, i);
|
char *roomId = ArrayGet(invites, i);
|
||||||
InvitedRooms *invited;
|
InvitedRooms invited = { 0 };
|
||||||
|
HashMap *invitedObject;
|
||||||
|
|
||||||
if (IsRoomFiltered(filterData, roomId))
|
if (IsRoomFiltered(filterData, roomId))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
invited = Malloc(sizeof(*invited));
|
invited.invite_state.events = ArrayCreate();
|
||||||
memset(invited, 0, sizeof(*invited));
|
invitedObject = InvitedRoomsToJson(&invited);
|
||||||
|
JsonSet(
|
||||||
/* TODO: Populate the invitestate */
|
sync.rooms.invite,
|
||||||
invited->invite_state.events = ArrayCreate();
|
JsonValueObject(invitedObject),
|
||||||
HashMapSet(sync.rooms.invite, roomId, invited);
|
1, roomId
|
||||||
|
);
|
||||||
|
InvitedRoomsFree(&invited);
|
||||||
}
|
}
|
||||||
UserFreeList(invites);
|
UserFreeList(invites);
|
||||||
|
|
||||||
|
@ -177,9 +180,10 @@ ROUTE_IMPL(RouteSync, path, argp)
|
||||||
{
|
{
|
||||||
/* TODO: Rename these variables */
|
/* TODO: Rename these variables */
|
||||||
char *roomId = ArrayGet(joins, i);
|
char *roomId = ArrayGet(joins, i);
|
||||||
JoinedRooms *joined;
|
JoinedRooms joined = { 0 };
|
||||||
char *firstEvent = NULL;
|
char *firstEvent = NULL;
|
||||||
char *type, *key, *id;
|
char *type, *key, *id;
|
||||||
|
HashMap *joinedObj;
|
||||||
State *state;
|
State *state;
|
||||||
Array *el;
|
Array *el;
|
||||||
size_t j;
|
size_t j;
|
||||||
|
@ -190,14 +194,12 @@ ROUTE_IMPL(RouteSync, path, argp)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
joined = Malloc(sizeof(*joined));
|
|
||||||
memset(joined, 0, sizeof(*joined));
|
|
||||||
|
|
||||||
el = UserGetEvents(user, currBatch, roomId);
|
el = UserGetEvents(user, currBatch, roomId);
|
||||||
r = RoomLock(db, roomId);
|
r = RoomLock(db, roomId);
|
||||||
state = StateCurrent(r);
|
state = StateCurrent(r);
|
||||||
|
|
||||||
joined->timeline.events = ArrayCreate();
|
joined.timeline.events = ArrayCreate();
|
||||||
|
|
||||||
for (j = 0; j < ArraySize(el); j++)
|
for (j = 0; j < ArraySize(el); j++)
|
||||||
{
|
{
|
||||||
char *event = ArrayGet(el, j);
|
char *event = ArrayGet(el, j);
|
||||||
|
@ -215,18 +217,18 @@ ROUTE_IMPL(RouteSync, path, argp)
|
||||||
firstEvent = c->event_id;
|
firstEvent = c->event_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayAdd(joined->timeline.events, c);
|
ArrayAdd(joined.timeline.events, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonFree(eventObj);
|
JsonFree(eventObj);
|
||||||
JsonFree(filteredObj);
|
JsonFree(filteredObj);
|
||||||
}
|
}
|
||||||
joined->timeline.prev_batch = UserNewMessageToken(
|
joined.timeline.prev_batch = UserNewMessageToken(
|
||||||
user, roomId, firstEvent
|
user, roomId, firstEvent
|
||||||
);
|
);
|
||||||
/* TODO: Don't shove the entire state.
|
/* TODO: Don't shove the entire state.
|
||||||
* That's a recipe for disaster, especially on large rooms. */
|
* That's a recipe for disaster, especially on large rooms. */
|
||||||
joined->state.events = ArrayCreate();
|
joined.state.events = ArrayCreate();
|
||||||
while (StateIterate(state, &type, &key, (void **) &id))
|
while (StateIterate(state, &type, &key, (void **) &id))
|
||||||
{
|
{
|
||||||
HashMap *e = RoomEventFetch(r, id);
|
HashMap *e = RoomEventFetch(r, id);
|
||||||
|
@ -236,7 +238,7 @@ ROUTE_IMPL(RouteSync, path, argp)
|
||||||
|
|
||||||
JsonFree(e);
|
JsonFree(e);
|
||||||
|
|
||||||
ArrayAdd(joined->state.events, s);
|
ArrayAdd(joined.state.events, s);
|
||||||
Free(type);
|
Free(type);
|
||||||
Free(key);
|
Free(key);
|
||||||
}
|
}
|
||||||
|
@ -245,7 +247,9 @@ ROUTE_IMPL(RouteSync, path, argp)
|
||||||
RoomUnlock(r);
|
RoomUnlock(r);
|
||||||
UserFreeList(el);
|
UserFreeList(el);
|
||||||
|
|
||||||
HashMapSet(sync.rooms.join, roomId, joined);
|
joinedObj = JoinedRoomsToJson(&joined);
|
||||||
|
HashMapSet(sync.rooms.join, roomId, JsonValueObject(joinedObj));
|
||||||
|
JoinedRoomsFree(&joined);
|
||||||
}
|
}
|
||||||
UserFreeList(joins);
|
UserFreeList(joins);
|
||||||
|
|
||||||
|
|
|
@ -77,12 +77,10 @@ V1Cmp(void *a, void *b)
|
||||||
JsonValueAsString(JsonGet(e1, 1, "event_id"));
|
JsonValueAsString(JsonGet(e1, 1, "event_id"));
|
||||||
char *e2id =
|
char *e2id =
|
||||||
JsonValueAsString(JsonGet(e2, 1, "event_id"));
|
JsonValueAsString(JsonGet(e2, 1, "event_id"));
|
||||||
|
|
||||||
/* Matrix, *seriously*? */
|
|
||||||
unsigned char *sha1 = Sha1(e1id);
|
unsigned char *sha1 = Sha1(e1id);
|
||||||
unsigned char *sha2 = Sha1(e2id);
|
unsigned char *sha2 = Sha1(e2id);
|
||||||
char *str1 = ShaToHex(sha1, HASH_SHA1);
|
char *str1 = ShaToHex(sha1);
|
||||||
char *str2 = ShaToHex(sha2, HASH_SHA1);
|
char *str2 = ShaToHex(sha2);
|
||||||
int ret = strcmp(str1, str2) * -1;
|
int ret = strcmp(str1, str2) * -1;
|
||||||
|
|
||||||
Free(str1);
|
Free(str1);
|
||||||
|
|
|
@ -411,7 +411,7 @@ UserCheckPassword(User * user, char *password)
|
||||||
|
|
||||||
tmp = StrConcat(2, password, salt);
|
tmp = StrConcat(2, password, salt);
|
||||||
hashBytes = Sha256(tmp);
|
hashBytes = Sha256(tmp);
|
||||||
hashedPwd = ShaToHex(hashBytes, HASH_SHA256);
|
hashedPwd = ShaToHex(hashBytes);
|
||||||
Free(tmp);
|
Free(tmp);
|
||||||
Free(hashBytes);
|
Free(hashBytes);
|
||||||
|
|
||||||
|
@ -442,7 +442,7 @@ UserSetPassword(User * user, char *password)
|
||||||
salt = StrRandom(16);
|
salt = StrRandom(16);
|
||||||
tmpstr = StrConcat(2, password, salt);
|
tmpstr = StrConcat(2, password, salt);
|
||||||
hashBytes = Sha256(tmpstr);
|
hashBytes = Sha256(tmpstr);
|
||||||
hash = ShaToHex(hashBytes, HASH_SHA256);
|
hash = ShaToHex(hashBytes);
|
||||||
|
|
||||||
JsonValueFree(HashMapSet(json, "salt", JsonValueString(salt)));
|
JsonValueFree(HashMapSet(json, "salt", JsonValueString(salt)));
|
||||||
JsonValueFree(HashMapSet(json, "password", JsonValueString(hash)));
|
JsonValueFree(HashMapSet(json, "password", JsonValueString(hash)));
|
||||||
|
|
Loading…
Reference in a new issue