cross-seed 6.11.1 → 6.12.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/action.js +344 -224
  2. package/dist/action.js.map +1 -1
  3. package/dist/clients/Deluge.js +100 -55
  4. package/dist/clients/Deluge.js.map +1 -1
  5. package/dist/clients/QBittorrent.js +147 -50
  6. package/dist/clients/QBittorrent.js.map +1 -1
  7. package/dist/clients/RTorrent.js +93 -71
  8. package/dist/clients/RTorrent.js.map +1 -1
  9. package/dist/clients/TorrentClient.js +60 -28
  10. package/dist/clients/TorrentClient.js.map +1 -1
  11. package/dist/clients/Transmission.js +67 -33
  12. package/dist/clients/Transmission.js.map +1 -1
  13. package/dist/cmd.js +10 -13
  14. package/dist/cmd.js.map +1 -1
  15. package/dist/config.template.cjs +50 -90
  16. package/dist/config.template.cjs.map +1 -1
  17. package/dist/configSchema.js +117 -33
  18. package/dist/configSchema.js.map +1 -1
  19. package/dist/configuration.js.map +1 -1
  20. package/dist/constants.js +2 -1
  21. package/dist/constants.js.map +1 -1
  22. package/dist/dataFiles.js +14 -11
  23. package/dist/dataFiles.js.map +1 -1
  24. package/dist/db.js +10 -7
  25. package/dist/db.js.map +1 -1
  26. package/dist/decide.js +13 -16
  27. package/dist/decide.js.map +1 -1
  28. package/dist/diff.js +5 -26
  29. package/dist/diff.js.map +1 -1
  30. package/dist/inject.js +99 -98
  31. package/dist/inject.js.map +1 -1
  32. package/dist/logger.js +26 -15
  33. package/dist/logger.js.map +1 -1
  34. package/dist/pipeline.js +127 -75
  35. package/dist/pipeline.js.map +1 -1
  36. package/dist/preFilter.js +2 -35
  37. package/dist/preFilter.js.map +1 -1
  38. package/dist/pushNotifier.js +3 -0
  39. package/dist/pushNotifier.js.map +1 -1
  40. package/dist/runtimeConfig.js.map +1 -1
  41. package/dist/searchee.js +136 -91
  42. package/dist/searchee.js.map +1 -1
  43. package/dist/startup.js +3 -2
  44. package/dist/startup.js.map +1 -1
  45. package/dist/torrent.js +132 -98
  46. package/dist/torrent.js.map +1 -1
  47. package/dist/torznab.js +5 -5
  48. package/dist/torznab.js.map +1 -1
  49. package/dist/utils.js +26 -6
  50. package/dist/utils.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { readdirSync } from "fs";
2
- import { stat, unlink, writeFile } from "fs/promises";
2
+ import { stat } from "fs/promises";
3
3
  import { basename, dirname, join, resolve, sep } from "path";
4
4
  import { inspect } from "util";
5
5
  import xmlrpc from "xmlrpc";
@@ -37,20 +37,20 @@ async function createLibTorrentResumeTree(meta, basePath) {
37
37
  files: fileResumes.filter(isTruthy),
38
38
  };
39
39
  }
40
- async function saveWithLibTorrentResume(meta, savePath, basePath) {
41
- const rawWithLibtorrentResume = {
42
- ...meta.raw,
43
- libtorrent_resume: await createLibTorrentResumeTree(meta, basePath),
44
- };
45
- await writeFile(savePath, new Metafile(rawWithLibtorrentResume).encode());
46
- }
47
40
  export default class RTorrent {
48
41
  client;
49
- type = Label.RTORRENT;
42
+ clientHost;
43
+ clientPriority;
44
+ clientType = Label.RTORRENT;
45
+ readonly;
46
+ label;
50
47
  batchSize = 500;
51
- constructor() {
52
- const { rtorrentRpcUrl } = getRuntimeConfig();
53
- const { href, username, password } = extractCredentialsFromUrl(rtorrentRpcUrl).unwrapOrThrow(new CrossSeedError("rTorrent url must be percent-encoded"));
48
+ constructor(url, priority, readonly) {
49
+ this.clientHost = new URL(url).host;
50
+ this.clientPriority = priority;
51
+ this.readonly = readonly;
52
+ this.label = `${this.clientType}@${this.clientHost}`;
53
+ const { href, username, password } = extractCredentialsFromUrl(url).unwrapOrThrow(new CrossSeedError(`[${this.label}] rTorrent url must be percent-encoded`));
54
54
  const clientCreator = new URL(href).protocol === "https:"
55
55
  ? xmlrpc.createSecureClient
56
56
  : xmlrpc.createClient;
@@ -63,13 +63,9 @@ export default class RTorrent {
63
63
  });
64
64
  }
65
65
  async methodCallP(method, args) {
66
- logger.verbose({
67
- label: Label.RTORRENT,
68
- message: `Calling method ${method} with params ${inspect(args, {
69
- depth: null,
70
- compact: true,
71
- })}`,
72
- });
66
+ const msg = `Calling method ${method} with params ${inspect(args, { depth: null, compact: true })}`;
67
+ const message = msg.length > 1000 ? `${msg.slice(0, 1000)}...` : msg;
68
+ logger.verbose({ label: this.label, message });
73
69
  return new Promise((resolve, reject) => {
74
70
  this.client.methodCall(method, args, (err, data) => {
75
71
  if (err)
@@ -82,7 +78,7 @@ export default class RTorrent {
82
78
  const downloadList = await this.methodCallP("download_list", []);
83
79
  return downloadList.includes(infoHash.toUpperCase());
84
80
  }
85
- async checkOriginalTorrent(infoHash, onlyCompleted) {
81
+ async checkOriginalTorrent(infoHash, options) {
86
82
  const hash = infoHash.toUpperCase();
87
83
  let response;
88
84
  const args = [
@@ -121,7 +117,7 @@ export default class RTorrent {
121
117
  response = await this.methodCallP("system.multicall", args);
122
118
  }
123
119
  catch (e) {
124
- logger.debug(e);
120
+ logger.debug({ label: this.label, message: e });
125
121
  return resultOfErr("FAILURE");
126
122
  }
127
123
  function isFault(response) {
@@ -136,36 +132,44 @@ export default class RTorrent {
136
132
  throw new Error("Unknown rTorrent fault while checking original torrent");
137
133
  }
138
134
  }
139
- const [[name], [directoryBase], [bytesLeft], [hashing], [isCompleteStr], [isMultiFileStr], [isActive],] = response;
135
+ const [[name], [directoryBase], [bytesLeftStr], [hashingStr], [isCompleteStr], [isMultiFileStr], [isActiveStr],] = response;
140
136
  const isComplete = Boolean(Number(isCompleteStr));
141
- if (onlyCompleted && !isComplete) {
137
+ if (options.onlyCompleted && !isComplete) {
142
138
  return resultOfErr("TORRENT_NOT_COMPLETE");
143
139
  }
144
140
  return resultOf({
145
141
  name,
146
142
  directoryBase,
147
- bytesLeft,
148
- hashing,
143
+ bytesLeft: Number(bytesLeftStr),
144
+ hashing: Number(hashingStr),
149
145
  isMultiFile: Boolean(Number(isMultiFileStr)),
150
- isActive: Boolean(Number(isActive)),
146
+ isActive: Boolean(Number(isActiveStr)),
151
147
  });
152
148
  }
153
149
  catch (e) {
154
- logger.error(e);
150
+ logger.error({ label: this.label, message: e });
155
151
  logger.debug("Failure caused by server response below:");
156
152
  logger.debug(inspect(response));
157
153
  return resultOfErr("FAILURE");
158
154
  }
159
155
  }
160
- async getDownloadLocation(meta, searchee, path) {
161
- if (path) {
156
+ async getDownloadLocation(meta, searchee, options) {
157
+ if (options.destinationDir) {
162
158
  // resolve to absolute because we send the path to rTorrent
163
- const basePath = resolve(path, meta.name);
164
- const directoryBase = meta.isSingleFileTorrent ? path : basePath;
165
- return resultOf({ downloadDir: path, basePath, directoryBase });
159
+ const basePath = resolve(options.destinationDir, meta.name);
160
+ const directoryBase = meta.isSingleFileTorrent
161
+ ? options.destinationDir
162
+ : basePath;
163
+ return resultOf({
164
+ downloadDir: options.destinationDir,
165
+ basePath,
166
+ directoryBase,
167
+ });
166
168
  }
167
169
  else {
168
- const result = await this.checkOriginalTorrent(searchee.infoHash, true);
170
+ const result = await this.checkOriginalTorrent(searchee.infoHash, {
171
+ onlyCompleted: options.onlyCompleted,
172
+ });
169
173
  return result.mapOk(({ directoryBase }) => ({
170
174
  directoryBase,
171
175
  downloadDir: meta.isSingleFileTorrent
@@ -178,25 +182,29 @@ export default class RTorrent {
178
182
  }
179
183
  }
180
184
  async validateConfig() {
181
- const { rtorrentRpcUrl, torrentDir } = getRuntimeConfig();
185
+ const { torrentDir } = getRuntimeConfig();
182
186
  try {
183
187
  await this.methodCallP("download_list", []);
184
188
  }
185
189
  catch (e) {
186
- logger.debug(e);
187
- throw new CrossSeedError(`Failed to reach rTorrent at ${rtorrentRpcUrl}: ${e.message}`);
190
+ logger.debug({ label: this.label, message: e });
191
+ throw new CrossSeedError(`[${this.label}] Failed to reach rTorrent at ${this.clientHost}: ${e.message}`);
188
192
  }
193
+ logger.info({
194
+ label: this.label,
195
+ message: `Logged in successfully${this.readonly ? " (readonly)" : ""}`,
196
+ });
189
197
  if (!torrentDir)
190
198
  return;
191
199
  if (!readdirSync(torrentDir).some((f) => f.endsWith("_resume"))) {
192
- throw new CrossSeedError("Invalid torrentDir, if no torrents are in client set to null for now: https://www.cross-seed.org/docs/basics/options#torrentdir");
200
+ throw new CrossSeedError(`[${this.label}] Invalid torrentDir, if no torrents are in client set to null for now: https://www.cross-seed.org/docs/basics/options#torrentdir`);
193
201
  }
194
202
  }
195
203
  async getDownloadDir(meta, options) {
196
204
  if (!(await this.checkForInfoHashInClient(meta.infoHash))) {
197
205
  return resultOfErr("NOT_FOUND");
198
206
  }
199
- const result = await this.checkOriginalTorrent(meta.infoHash, options.onlyCompleted);
207
+ const result = await this.checkOriginalTorrent(meta.infoHash, options);
200
208
  return result
201
209
  .mapOk(({ directoryBase, isMultiFile }) => {
202
210
  return isMultiFile ? dirname(directoryBase) : directoryBase;
@@ -236,7 +244,7 @@ export default class RTorrent {
236
244
  const res = await this.methodCallP("system.multicall", args);
237
245
  if (isFault(res)) {
238
246
  logger.error({
239
- Label: Label.RTORRENT,
247
+ label: this.label,
240
248
  message: "Fault while getting download directories for all torrents",
241
249
  });
242
250
  logger.debug(inspect(res));
@@ -246,7 +254,7 @@ export default class RTorrent {
246
254
  }
247
255
  catch (e) {
248
256
  logger.error({
249
- Label: Label.RTORRENT,
257
+ label: this.label,
250
258
  message: `Failed to get download directories for all torrents: ${e.message}`,
251
259
  });
252
260
  logger.debug(e);
@@ -255,7 +263,7 @@ export default class RTorrent {
255
263
  }, { batchSize: this.batchSize });
256
264
  if (!results.length || results.length !== hashes.length * numMethods) {
257
265
  logger.error({
258
- Label: Label.RTORRENT,
266
+ label: this.label,
259
267
  message: `Unexpected number of results: ${results.length} for ${hashes.length} hashes`,
260
268
  });
261
269
  return new Map();
@@ -273,7 +281,7 @@ export default class RTorrent {
273
281
  }
274
282
  catch (e) {
275
283
  logger.error({
276
- Label: Label.RTORRENT,
284
+ label: this.label,
277
285
  message: `Error parsing response for all torrents: ${e.message}`,
278
286
  });
279
287
  logger.debug(e);
@@ -288,7 +296,21 @@ export default class RTorrent {
288
296
  if (response.length === 0) {
289
297
  return resultOfErr("NOT_FOUND");
290
298
  }
291
- return resultOf(response[0] === "1");
299
+ return resultOf(Boolean(Number(response[0])));
300
+ }
301
+ catch (e) {
302
+ return resultOfErr("NOT_FOUND");
303
+ }
304
+ }
305
+ async isTorrentChecking(infoHash) {
306
+ try {
307
+ const response = await this.methodCallP("d.hashing", [
308
+ infoHash,
309
+ ]);
310
+ if (response.length === 0) {
311
+ return resultOfErr("NOT_FOUND");
312
+ }
313
+ return resultOf(Boolean(Number(response[0])));
292
314
  }
293
315
  catch (e) {
294
316
  return resultOfErr("NOT_FOUND");
@@ -312,7 +334,7 @@ export default class RTorrent {
312
334
  const res = await this.methodCallP("system.multicall", args);
313
335
  if (isFault(res)) {
314
336
  logger.error({
315
- Label: Label.RTORRENT,
337
+ label: this.label,
316
338
  message: "Fault while getting torrent info for all torrents",
317
339
  });
318
340
  logger.debug(inspect(res));
@@ -322,7 +344,7 @@ export default class RTorrent {
322
344
  }
323
345
  catch (e) {
324
346
  logger.error({
325
- Label: Label.RTORRENT,
347
+ label: this.label,
326
348
  message: `Failed to get torrent info for all torrents: ${e.message}`,
327
349
  });
328
350
  logger.debug(e);
@@ -331,7 +353,7 @@ export default class RTorrent {
331
353
  }, { batchSize: this.batchSize });
332
354
  if (results.length !== hashes.length) {
333
355
  logger.error({
334
- Label: Label.RTORRENT,
356
+ label: this.label,
335
357
  message: `Unexpected number of results: ${results.length} for ${hashes.length} hashes`,
336
358
  });
337
359
  return [];
@@ -340,7 +362,6 @@ export default class RTorrent {
340
362
  // response: [ [tag1], [tag2], ... ], assuming infoHash order is preserved
341
363
  return hashes.map((hash, index) => ({
342
364
  infoHash: hash.toLowerCase(),
343
- category: "",
344
365
  tags: results[index].length !== 1
345
366
  ? results[index]
346
367
  : results[index][0].length
@@ -352,7 +373,7 @@ export default class RTorrent {
352
373
  }
353
374
  catch (e) {
354
375
  logger.error({
355
- Label: Label.RTORRENT,
376
+ label: this.label,
356
377
  message: `Error parsing response for all torrents: ${e.message}`,
357
378
  });
358
379
  logger.debug(e);
@@ -415,7 +436,7 @@ export default class RTorrent {
415
436
  const res = await this.methodCallP("system.multicall", args);
416
437
  if (isFault(res)) {
417
438
  logger.error({
418
- Label: Label.RTORRENT,
439
+ label: this.label,
419
440
  message: "Fault while getting client torrents",
420
441
  });
421
442
  logger.debug(inspect(res));
@@ -425,7 +446,7 @@ export default class RTorrent {
425
446
  }
426
447
  catch (e) {
427
448
  logger.error({
428
- Label: Label.RTORRENT,
449
+ label: this.label,
429
450
  message: `Failed to get client torrents: ${e.message}`,
430
451
  });
431
452
  logger.debug(e);
@@ -434,7 +455,7 @@ export default class RTorrent {
434
455
  }, { batchSize: this.batchSize });
435
456
  if (!results.length || results.length !== hashes.length * numMethods) {
436
457
  logger.error({
437
- Label: Label.RTORRENT,
458
+ label: this.label,
438
459
  message: `Unexpected number of results: ${results.length} for ${hashes.length} hashes`,
439
460
  });
440
461
  return { searchees, newSearchees };
@@ -445,6 +466,7 @@ export default class RTorrent {
445
466
  infoHashes.add(infoHash);
446
467
  const dbTorrent = await memDB("torrent")
447
468
  .where("info_hash", infoHash)
469
+ .where("client_host", this.clientHost)
448
470
  .first();
449
471
  const refresh = options?.refresh === undefined
450
472
  ? false
@@ -469,18 +491,17 @@ export default class RTorrent {
469
491
  }));
470
492
  if (!files.length) {
471
493
  logger.verbose({
472
- label: Label.RTORRENT,
494
+ label: this.label,
473
495
  message: `No files found for ${name} [${sanitizeInfoHash(infoHash)}]: skipping`,
474
496
  });
475
497
  continue;
476
498
  }
477
499
  const trackers = organizeTrackers(results[i * numMethods + 6][0].map((arr) => ({
478
500
  url: arr[0],
479
- tier: arr[1],
501
+ tier: Number(arr[1]),
480
502
  })));
481
503
  const title = parseTitle(name, files) ?? name;
482
504
  const savePath = isMultiFile ? dirname(directory) : directory;
483
- const category = "";
484
505
  const tags = labels.length
485
506
  ? decodeURIComponent(labels)
486
507
  .split(",")
@@ -492,15 +513,15 @@ export default class RTorrent {
492
513
  title,
493
514
  files,
494
515
  length,
516
+ clientHost: this.clientHost,
495
517
  savePath,
496
- category,
497
518
  tags,
498
519
  trackers,
499
520
  };
500
521
  newSearchees.push(searchee);
501
522
  searchees.push(searchee);
502
523
  }
503
- await updateSearcheeClientDB(newSearchees, infoHashes);
524
+ await updateSearcheeClientDB(this.clientHost, newSearchees, infoHashes);
504
525
  return { searchees, newSearchees };
505
526
  }
506
527
  async recheckTorrent(infoHash) {
@@ -520,7 +541,9 @@ export default class RTorrent {
520
541
  stop = true;
521
542
  }
522
543
  await wait(sleepTime);
523
- const torrentInfoRes = await this.checkOriginalTorrent(infoHash, false);
544
+ const torrentInfoRes = await this.checkOriginalTorrent(infoHash, {
545
+ onlyCompleted: false,
546
+ });
524
547
  if (torrentInfoRes.isErr()) {
525
548
  sleepTime = resumeErrSleepTime; // Dropping connections or restart
526
549
  continue;
@@ -532,35 +555,34 @@ export default class RTorrent {
532
555
  const torrentLog = `${torrentInfo.name} [${sanitizeInfoHash(infoHash)}]`;
533
556
  if (torrentInfo.isActive) {
534
557
  logger.warn({
535
- label: Label.RTORRENT,
558
+ label: this.label,
536
559
  message: `Will not resume torrent ${torrentLog}: active`,
537
560
  });
538
561
  return;
539
562
  }
540
563
  if (torrentInfo.bytesLeft > maxRemainingBytes) {
541
564
  logger.warn({
542
- label: Label.RTORRENT,
565
+ label: this.label,
543
566
  message: `Will not resume torrent ${torrentLog}: ${humanReadableSize(torrentInfo.bytesLeft, { binary: true })} remaining > ${humanReadableSize(maxRemainingBytes, { binary: true })}`,
544
567
  });
545
568
  return;
546
569
  }
547
570
  logger.info({
548
- label: Label.RTORRENT,
571
+ label: this.label,
549
572
  message: `Resuming torrent ${torrentLog}`,
550
573
  });
551
574
  await this.methodCallP("d.resume", [infoHash]);
552
575
  }
553
576
  logger.warn({
554
- label: Label.RTORRENT,
577
+ label: this.label,
555
578
  message: `Will not resume torrent ${infoHash}: timeout`,
556
579
  });
557
580
  }
558
- async inject(meta, searchee, decision, path) {
559
- const { outputDir } = getRuntimeConfig();
581
+ async inject(meta, searchee, decision, options) {
560
582
  if (await this.checkForInfoHashInClient(meta.infoHash)) {
561
583
  return InjectionResult.ALREADY_EXISTS;
562
584
  }
563
- const result = await this.getDownloadLocation(meta, searchee, path);
585
+ const result = await this.getDownloadLocation(meta, searchee, options);
564
586
  if (result.isErr()) {
565
587
  switch (result.unwrapErr()) {
566
588
  case "NOT_FOUND":
@@ -572,16 +594,18 @@ export default class RTorrent {
572
594
  }
573
595
  }
574
596
  const { directoryBase, basePath } = result.unwrap();
575
- const torrentFilePath = resolve(outputDir, `${meta.name}.tmp.${Date.now()}.torrent`);
576
- await saveWithLibTorrentResume(meta, torrentFilePath, basePath);
597
+ const rawWithLibtorrentResume = {
598
+ ...meta.raw,
599
+ libtorrent_resume: await createLibTorrentResumeTree(meta, basePath),
600
+ };
577
601
  const toRecheck = shouldRecheck(searchee, decision);
578
- const loadType = toRecheck ? "load.normal" : "load.start";
602
+ const loadType = toRecheck ? "load.raw" : "load.raw_start";
579
603
  const retries = 5;
580
604
  for (let i = 0; i < retries; i++) {
581
605
  try {
582
606
  await this.methodCallP(loadType, [
583
607
  "",
584
- torrentFilePath,
608
+ new Metafile(rawWithLibtorrentResume).encode(),
585
609
  `d.directory_base.set="${directoryBase}"`,
586
610
  `d.custom1.set="${TORRENT_TAG}"`,
587
611
  `d.custom.set=addtime,${Math.round(Date.now() / 1000)}`,
@@ -598,7 +622,7 @@ export default class RTorrent {
598
622
  }
599
623
  catch (e) {
600
624
  logger.verbose({
601
- label: Label.RTORRENT,
625
+ label: this.label,
602
626
  message: `Failed to inject torrent ${meta.name} on attempt ${i + 1}/${retries}: ${e.message}`,
603
627
  });
604
628
  logger.debug(e);
@@ -607,12 +631,10 @@ export default class RTorrent {
607
631
  }
608
632
  for (let i = 0; i < 5; i++) {
609
633
  if (await this.checkForInfoHashInClient(meta.infoHash)) {
610
- setTimeout(() => unlink(torrentFilePath), 1000);
611
634
  return InjectionResult.SUCCESS;
612
635
  }
613
636
  await wait(100 * Math.pow(2, i));
614
637
  }
615
- setTimeout(() => unlink(torrentFilePath), 1000);
616
638
  return InjectionResult.FAILURE;
617
639
  }
618
640
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RTorrent.js","sourceRoot":"","sources":["../../src/clients/RTorrent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RTorrent.js","sourceRoot":"","sources":["../../src/clients/RTorrent.ts"],"names":[],"mappings":"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"}