avoid crash when url is invalid

This commit is contained in:
Pablo Ferreiro
2024-06-30 16:16:39 +02:00
parent 32bc4c90d5
commit 040625f34e
4 changed files with 33 additions and 17 deletions

View File

@@ -12,12 +12,13 @@ RUN apk add --no-cache \
COPY package.json package-lock.json ./
RUN npm ci
# Delete dev deps
RUN apk del python3 g++ make cairo-dev pango-dev
# Copy required files for server
COPY ./js ./js
COPY ./src ./src
COPY ./api ./api
COPY ./js ./js
RUN apk del python3 g++ make cairo-dev pango-dev
EXPOSE 8080
CMD [ "node", "api/index.js" ]

View File

@@ -20,7 +20,9 @@ const server = http.createServer(async (req, res) => {
const url = Buffer.concat(buffers).toString();
const data = signer.sign(url);
console.log("Sent data from request with url: " + url);
if (data !== null) {
console.log("Sending data from request with url: " + url);
}
res.write(Utils.makePayload(data, signer.navigator()));
} else {
res.write(

View File

@@ -90,21 +90,27 @@ class Signer {
/**
* Sign a TikTok URL
* @param {string} url_str Unsigned URL
* @returns Object with signed data
* @returns Object with signed data or null if error
*/
sign(url_str) {
const url = new URL(url_str);
const signature = this.signature(url.toString());
url.searchParams.append('_signature', signature);
const bogus = this.bogus(url.searchParams.toString());
url.searchParams.append('X-Bogus', bogus);
const xttparams = this.xttparams(url.searchParams.toString());
return {
signature: signature,
signed_url: url.toString(),
"x-tt-params": xttparams,
"X-Bogus": bogus
};
try {
const url = new URL(url_str);
const signature = this.signature(url.toString());
url.searchParams.append('_signature', signature);
const bogus = this.bogus(url.searchParams.toString());
url.searchParams.append('X-Bogus', bogus);
const xttparams = this.xttparams(url.searchParams.toString());
return {
signature: signature,
signed_url: url.toString(),
"x-tt-params": xttparams,
"X-Bogus": bogus
};
} catch (_e) {
return null;
} finally {
}
}
}

View File

@@ -1,5 +1,12 @@
class Utils {
static makePayload(data, navigator) {
if (data === null) {
return JSON.stringify({
status: "error",
data: "There was an error processing your request! Is your URL valid?"
})
}
return JSON.stringify({
status: "ok",
data: {