Fix user instantiation bug #3

Open
hnarjis wants to merge 5 commits from hnarjis/matrix-appservice-kakaotalk:user-instantiation-fix into master
4 changed files with 36 additions and 4 deletions

View File

@ -224,7 +224,7 @@ class User(DBUser, BaseUser):
if create:
cls.log.debug(f"Creating user instance for {mxid}")
user = cls(mxid)
user = cls(mxid, False, False)
await user.insert()
user._add_to_cache()
return user
@ -424,10 +424,10 @@ class User(DBUser, BaseUser):
state_event=BridgeStateEvent.UNKNOWN_ERROR,
error_code="kt-reconnection-error",
)
except Exception:
except Exception as e:
self.log.exception("Error connecting to KakaoTalk")
await self.send_bridge_notice(
"Failed to connect to KakaoTalk: unknown error (see logs for more details)",
f"Failed to connect to KakaoTalk: {e.message}",
edit=event_id,
state_event=BridgeStateEvent.UNKNOWN_ERROR,
error_code="kt-reconnection-error",

View File

@ -19,6 +19,7 @@
},
"dependencies": {
"arg": "^4.1.3",
"hash-wasm": "^4.8.0",
"node-kakao": "4.5.0",
"systemd-daemon": "^1.1.2"
},

View File

@ -40,6 +40,7 @@ const { OpenChannelUserPerm } = openlink
import chat from "node-kakao/chat"
const { KnownChatType } = chat
import * as modutil from "./modutil.js"
import { emitLines, promisify } from "./util.js"
/**
@ -581,7 +582,7 @@ export default class PeerClient {
* @param {string} uuid
*/
async #createAuthClient(uuid) {
return await AuthApiClient.create(this.deviceName, uuid)
return await AuthApiClient.create(this.deviceName, uuid, {}, modutil.ModXVCProvider)
}
// TODO Wrapper for per-user commands

30
node/src/modutil.js Normal file
View File

@ -0,0 +1,30 @@
// matrix-appservice-kakaotalk - A Matrix-KakaoTalk puppeting bridge.
// Copyright (C) 2022 Tulir Asokan, Andrew Ferrazzutti
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import { sha512 } from "hash-wasm"
import kakao from "node-kakao"
const { DefaultConfiguration } = kakao
DefaultConfiguration.version = "3.4.2"
DefaultConfiguration.appVersion = "3.4.2.3187"
export const ModXVCProvider = {
toFullXVCKey(deviceUUID, userAgent, email) {
const source = `WINTER|${userAgent}|ARTHUR|${email}|${deviceUUID}`
return sha512(source)
}
}