fix content authentification

This commit is contained in:
Sorunome 2020-05-02 10:53:39 +02:00
parent 6feacecb5b
commit 0255283d5a
No known key found for this signature in database
GPG Key ID: B19471D07FC9BE9C
4 changed files with 54 additions and 18 deletions

26
package-lock.json generated
View File

@ -33,9 +33,9 @@
"integrity": "sha512-lXKXfypKo644k4Da4yXkPCrwcvn6SlUW2X2zFbuflKHNjf0w9htru01bo26uMhleMXsDmnZ12eJLdrAZa9MANg==" "integrity": "sha512-lXKXfypKo644k4Da4yXkPCrwcvn6SlUW2X2zFbuflKHNjf0w9htru01bo26uMhleMXsDmnZ12eJLdrAZa9MANg=="
}, },
"@sorunome/matrix-bot-sdk": { "@sorunome/matrix-bot-sdk": {
"version": "0.5.3-2", "version": "0.5.3-3",
"resolved": "https://registry.npmjs.org/@sorunome/matrix-bot-sdk/-/matrix-bot-sdk-0.5.3-2.tgz", "resolved": "https://registry.npmjs.org/@sorunome/matrix-bot-sdk/-/matrix-bot-sdk-0.5.3-3.tgz",
"integrity": "sha512-kGbz+EudtS8iISEyfNnJEa29lA3tqzE7jUwaXUdkYqo2QuiNS0xnXi5zJDJoCycQEf5v0bWbVdtM+dEIilpTew==", "integrity": "sha512-/n3Yq8OJ0Y3xtuAVwy7w8K8zyazfCQ0df/68ISOYjoFqGiJ8r1aOTDHn633cPictCdc6xWx5DatDG0Ef06jpMA==",
"requires": { "requires": {
"@types/express": "^4.17.2", "@types/express": "^4.17.2",
"chalk": "^3.0.0", "chalk": "^3.0.0",
@ -246,6 +246,12 @@
"@types/mime": "*" "@types/mime": "*"
} }
}, },
"@types/tough-cookie": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz",
"integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==",
"dev": true
},
"accepts": { "accepts": {
"version": "1.3.7", "version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@ -1490,9 +1496,9 @@
"integrity": "sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g==" "integrity": "sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g=="
}, },
"moment": { "moment": {
"version": "2.24.0", "version": "2.25.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.1.tgz",
"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" "integrity": "sha512-nRKMf9wDS4Fkyd0C9LXh2FFXinD+iwbJ5p/lh3CHitW9kZbRbJ8hCruiadiIXZVbeAqKZzqcTvHnK3mRhFjb6w=="
}, },
"morgan": { "morgan": {
"version": "1.10.0", "version": "1.10.0",
@ -1519,11 +1525,11 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}, },
"mx-puppet-bridge": { "mx-puppet-bridge": {
"version": "0.0.41-1", "version": "0.0.42",
"resolved": "https://registry.npmjs.org/mx-puppet-bridge/-/mx-puppet-bridge-0.0.41-1.tgz", "resolved": "https://registry.npmjs.org/mx-puppet-bridge/-/mx-puppet-bridge-0.0.42.tgz",
"integrity": "sha512-Xu5wnkzfJ/5u2S7hsVM09NZcBbXVH8HxpLs0dLjjsgRpu2vx4V50rpvspd6euMyIUs+DZZcyQ5suY3FFETmqzg==", "integrity": "sha512-1nh+P9z9+DWmT00mcCEOsWKLI9I7qvfmZS8+7+Rh5r9QiBk6kkVvjGG1l7cCO7HwkA3J9IA1b0VhxFfz3cONtg==",
"requires": { "requires": {
"@sorunome/matrix-bot-sdk": "^0.5.3-2", "@sorunome/matrix-bot-sdk": "^0.5.3-3",
"better-sqlite3": "^6.0.1", "better-sqlite3": "^6.0.1",
"escape-html": "^1.0.3", "escape-html": "^1.0.3",
"events": "^3.1.0", "events": "^3.1.0",

View File

@ -20,14 +20,16 @@
"events": "^3.0.0", "events": "^3.0.0",
"expire-set": "^1.0.0", "expire-set": "^1.0.0",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"mx-puppet-bridge": "0.0.41-1", "mx-puppet-bridge": "0.0.42",
"node-emoji": "^1.10.0", "node-emoji": "^1.10.0",
"node-html-parser": "^1.2.13", "node-html-parser": "^1.2.13",
"tough-cookie": "^4.0.0",
"tslint": "^5.17.0", "tslint": "^5.17.0",
"typescript": "^3.7.4" "typescript": "^3.7.4"
}, },
"devDependencies": { "devDependencies": {
"@types/mocha": "^7.0.2", "@types/mocha": "^7.0.2",
"@types/node": "^12.0.8" "@types/node": "^12.0.8",
"@types/tough-cookie": "^4.0.0"
} }
} }

View File

@ -18,6 +18,7 @@ import { Contact as SkypeContact } from "@sorunome/skype-http/dist/lib/types/con
import { NewMediaMessage as SkypeNewMediaMessage } from "@sorunome/skype-http/dist/lib/interfaces/api/api"; import { NewMediaMessage as SkypeNewMediaMessage } from "@sorunome/skype-http/dist/lib/interfaces/api/api";
import { Context as SkypeContext } from "@sorunome/skype-http/dist/lib/interfaces/api/context"; import { Context as SkypeContext } from "@sorunome/skype-http/dist/lib/interfaces/api/context";
import ExpireSet from "expire-set"; import ExpireSet from "expire-set";
import * as toughCookie from "tough-cookie";
const log = new Log("SkypePuppet:client"); const log = new Log("SkypePuppet:client");
@ -231,15 +232,40 @@ export class Client extends EventEmitter {
} }
} }
public async downloadFile(url: string): Promise<Buffer> { public async downloadFile(url: string, type: string = "imgpsh_fullsize_anim"): Promise<Buffer> {
if (!url.includes("/views/")) { if (url.startsWith("https://api.asm.skype.com/") && !url.includes("/views/")) {
url = url + "/views/imgpsh_fullsize_anim"; url = `${url}/views/${type}`;
} }
const cookieJar = new toughCookie.CookieJar(this.api.context.cookies);
return await Util.DownloadFile(url, { return await Util.DownloadFile(url, {
headers: { headers: {
Authorization: "skypetoken=" + this.api.context.skypeToken.value, Authorization: "skypetoken=" + this.api.context.skypeToken.value,
RegistrationToken: this.api.context.registrationToken.raw, RegistrationToken: this.api.context.registrationToken.raw,
}, },
cookieJar: {
setCookie: async (rawCookie: string, cookieUrl: string) =>
new Promise((resolve, reject) =>
cookieJar.setCookie(rawCookie, cookieUrl, (err, value) =>
err ? reject(err) : resolve(value),
),
),
getCookieString: async (cookieUrl: string) =>
new Promise((resolve, reject) =>
cookieJar.getCookieString(cookieUrl, (err, value) => {
if (err) {
reject(err);
return;
}
if (url.startsWith("https://api.asm.skype.com/")) {
if (value) {
value += "; ";
}
value += "skypetoken_asm=" + encodeURIComponent(this.api.context.skypeToken.value);
}
resolve(value);
}),
),
},
}); });
} }

View File

@ -86,11 +86,15 @@ export class Skype {
avatarUrl = picture.slice("URL@".length); avatarUrl = picture.slice("URL@".length);
} }
} }
const p = this.puppets[puppetId];
return { return {
puppetId, puppetId,
roomId: conversation.id, roomId: conversation.id,
name, name,
avatarUrl, avatarUrl,
downloadFile: async (url: string): Promise<Buffer> => {
return await p.client.downloadFile(url, "swx_avatar");
},
}; };
} }
@ -414,8 +418,6 @@ export class Skype {
if (!p) { if (!p) {
return; return;
} }
console.log("===================");
console.log(data);
log.info("Received reply from matrix"); log.info("Received reply from matrix");
const conversation = await p.client.getConversation(room); const conversation = await p.client.getConversation(room);
if (!conversation) { if (!conversation) {