Compare commits

...

3 Commits

4 changed files with 35 additions and 3 deletions

View File

@ -424,10 +424,10 @@ class User(DBUser, BaseUser):
state_event=BridgeStateEvent.UNKNOWN_ERROR, state_event=BridgeStateEvent.UNKNOWN_ERROR,
error_code="kt-reconnection-error", error_code="kt-reconnection-error",
) )
except Exception: except Exception as e:
self.log.exception("Error connecting to KakaoTalk") self.log.exception("Error connecting to KakaoTalk")
await self.send_bridge_notice( 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, edit=event_id,
state_event=BridgeStateEvent.UNKNOWN_ERROR, state_event=BridgeStateEvent.UNKNOWN_ERROR,
error_code="kt-reconnection-error", error_code="kt-reconnection-error",

View File

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

View File

@ -40,6 +40,7 @@ const { OpenChannelUserPerm } = openlink
import chat from "node-kakao/chat" import chat from "node-kakao/chat"
const { KnownChatType } = chat const { KnownChatType } = chat
import * as modutil from "./modutil.js"
import { emitLines, promisify } from "./util.js" import { emitLines, promisify } from "./util.js"
/** /**
@ -581,7 +582,7 @@ export default class PeerClient {
* @param {string} uuid * @param {string} uuid
*/ */
async #createAuthClient(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 // 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)
}
}