oblecto 0.2.9 → 0.3.1

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 (273) hide show
  1. package/Oblecto-Web/dist/web/index.html +24 -3
  2. package/Oblecto-Web/dist/web/static/index-C-JsqHHk.css +1 -0
  3. package/Oblecto-Web/dist/web/static/index-DSZgpOOu.js +576 -0
  4. package/README.md +43 -7
  5. package/dist/bin/oblecto.js +12468 -61
  6. package/dist/index.js +10676 -6
  7. package/package.json +67 -39
  8. package/res/AGENTS.md +8 -0
  9. package/res/config.json +29 -7
  10. package/Oblecto-Web/dist/web/static/css/app.ef5965dbd50e69a7544e200a3f21fbaf.css +0 -1
  11. package/Oblecto-Web/dist/web/static/css/app.ef5965dbd50e69a7544e200a3f21fbaf.css.map +0 -1
  12. package/Oblecto-Web/dist/web/static/js/app.1352bf3c311f0e7ab716.js +0 -7150
  13. package/Oblecto-Web/dist/web/static/js/app.1352bf3c311f0e7ab716.js.map +0 -1
  14. package/Oblecto-Web/dist/web/static/js/manifest.b8404c3e329d75bb51fd.js +0 -154
  15. package/Oblecto-Web/dist/web/static/js/manifest.b8404c3e329d75bb51fd.js.map +0 -1
  16. package/Oblecto-Web/dist/web/static/js/vendor.521641a02e42750ba5a7.js +0 -32455
  17. package/Oblecto-Web/dist/web/static/js/vendor.521641a02e42750ba5a7.js.map +0 -1
  18. package/dist/bin/oblecto.d.ts +0 -2
  19. package/dist/bin/scripts/adduser.d.ts +0 -2
  20. package/dist/bin/scripts/adduser.js +0 -50
  21. package/dist/bin/scripts/changepassword.d.ts +0 -2
  22. package/dist/bin/scripts/changepassword.js +0 -48
  23. package/dist/bin/scripts/deluser.d.ts +0 -2
  24. package/dist/bin/scripts/deluser.js +0 -34
  25. package/dist/bin/scripts/helpers/argumentError.d.ts +0 -2
  26. package/dist/bin/scripts/helpers/argumentError.js +0 -12
  27. package/dist/bin/scripts/helpers/generateAssetDirectories.d.ts +0 -1
  28. package/dist/bin/scripts/helpers/generateAssetDirectories.js +0 -37
  29. package/dist/bin/scripts/init/assets.d.ts +0 -2
  30. package/dist/bin/scripts/init/assets.js +0 -24
  31. package/dist/bin/scripts/init/database.d.ts +0 -2
  32. package/dist/bin/scripts/init/database.js +0 -21
  33. package/dist/bin/scripts/init/general.d.ts +0 -2
  34. package/dist/bin/scripts/init/general.js +0 -54
  35. package/dist/bin/scripts/init/index.d.ts +0 -2
  36. package/dist/bin/scripts/init/index.js +0 -26
  37. package/dist/bin/scripts/removepassword.d.ts +0 -2
  38. package/dist/bin/scripts/removepassword.js +0 -42
  39. package/dist/config.d.ts +0 -7
  40. package/dist/config.js +0 -45
  41. package/dist/core/graphical.d.ts +0 -17
  42. package/dist/core/graphical.js +0 -179
  43. package/dist/core/index.d.ts +0 -9
  44. package/dist/core/index.js +0 -24
  45. package/dist/index.d.ts +0 -1
  46. package/dist/lib/artwork/ArtworkScaler.d.ts +0 -5
  47. package/dist/lib/artwork/ArtworkScaler.js +0 -31
  48. package/dist/lib/artwork/ArtworkUtils.d.ts +0 -8
  49. package/dist/lib/artwork/ArtworkUtils.js +0 -35
  50. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.d.ts +0 -8
  51. package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.js +0 -58
  52. package/dist/lib/artwork/movies/MovieArtworkCollector.d.ts +0 -35
  53. package/dist/lib/artwork/movies/MovieArtworkCollector.js +0 -93
  54. package/dist/lib/artwork/movies/MovieArtworkDownloader.d.ts +0 -8
  55. package/dist/lib/artwork/movies/MovieArtworkDownloader.js +0 -65
  56. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.d.ts +0 -6
  57. package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.js +0 -57
  58. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.d.ts +0 -6
  59. package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.js +0 -47
  60. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.d.ts +0 -8
  61. package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.js +0 -58
  62. package/dist/lib/artwork/series/SeriesArtworkCollector.d.ts +0 -37
  63. package/dist/lib/artwork/series/SeriesArtworkCollector.js +0 -95
  64. package/dist/lib/artwork/series/SeriesArtworkDownloader.d.ts +0 -8
  65. package/dist/lib/artwork/series/SeriesArtworkDownloader.js +0 -62
  66. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.d.ts +0 -6
  67. package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.js +0 -44
  68. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.d.ts +0 -16
  69. package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.js +0 -64
  70. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.d.ts +0 -16
  71. package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.js +0 -51
  72. package/dist/lib/cleaners/FileCleaner.d.ts +0 -6
  73. package/dist/lib/cleaners/FileCleaner.js +0 -68
  74. package/dist/lib/cleaners/MovieCleaner.d.ts +0 -8
  75. package/dist/lib/cleaners/MovieCleaner.js +0 -48
  76. package/dist/lib/cleaners/SeriesCleaner.d.ts +0 -10
  77. package/dist/lib/cleaners/SeriesCleaner.js +0 -88
  78. package/dist/lib/common/AggregateIdentifier.d.ts +0 -9
  79. package/dist/lib/common/AggregateIdentifier.js +0 -57
  80. package/dist/lib/common/AggregateUpdateRetriever.d.ts +0 -5
  81. package/dist/lib/common/AggregateUpdateRetriever.js +0 -46
  82. package/dist/lib/downloader/index.d.ts +0 -6
  83. package/dist/lib/downloader/index.js +0 -83
  84. package/dist/lib/errors/DebugExtendableError.d.ts +0 -5
  85. package/dist/lib/errors/DebugExtendableError.js +0 -20
  86. package/dist/lib/errors/ExtendableError.d.ts +0 -3
  87. package/dist/lib/errors/ExtendableError.js +0 -22
  88. package/dist/lib/errors/FileExistsError.d.ts +0 -4
  89. package/dist/lib/errors/FileExistsError.js +0 -14
  90. package/dist/lib/errors/IdentificationError.d.ts +0 -4
  91. package/dist/lib/errors/IdentificationError.js +0 -14
  92. package/dist/lib/errors/InfoExtendableError.d.ts +0 -5
  93. package/dist/lib/errors/InfoExtendableError.js +0 -20
  94. package/dist/lib/errors/VideoAnalysisError.d.ts +0 -4
  95. package/dist/lib/errors/VideoAnalysisError.js +0 -14
  96. package/dist/lib/errors/VideoIdentificationError.d.ts +0 -4
  97. package/dist/lib/errors/VideoIdentificationError.js +0 -9
  98. package/dist/lib/errors/WarnExtendableError.d.ts +0 -5
  99. package/dist/lib/errors/WarnExtendableError.js +0 -20
  100. package/dist/lib/federation/client/FederationClient.d.ts +0 -31
  101. package/dist/lib/federation/client/FederationClient.js +0 -127
  102. package/dist/lib/federation/client/FederationClientController.d.ts +0 -9
  103. package/dist/lib/federation/client/FederationClientController.js +0 -45
  104. package/dist/lib/federation/client/FederationDataClient.d.ts +0 -11
  105. package/dist/lib/federation/client/FederationDataClient.js +0 -56
  106. package/dist/lib/federation/client/FederationMediaClient.d.ts +0 -12
  107. package/dist/lib/federation/client/FederationMediaClient.js +0 -70
  108. package/dist/lib/federation/server/FederationController.d.ts +0 -10
  109. package/dist/lib/federation/server/FederationController.js +0 -32
  110. package/dist/lib/federation/server/FederationDataServer.d.ts +0 -4
  111. package/dist/lib/federation/server/FederationDataServer.js +0 -22
  112. package/dist/lib/federation/server/FederationDataServerConnection.d.ts +0 -8
  113. package/dist/lib/federation/server/FederationDataServerConnection.js +0 -96
  114. package/dist/lib/federation/server/FederationMediaServer.d.ts +0 -4
  115. package/dist/lib/federation/server/FederationMediaServer.js +0 -22
  116. package/dist/lib/federation/server/FederationMediaServerConnection.d.ts +0 -11
  117. package/dist/lib/federation/server/FederationMediaServerConnection.js +0 -83
  118. package/dist/lib/federation/server/FederationServer.d.ts +0 -11
  119. package/dist/lib/federation/server/FederationServer.js +0 -40
  120. package/dist/lib/federation/server/FederationServerConnection.d.ts +0 -18
  121. package/dist/lib/federation/server/FederationServerConnection.js +0 -97
  122. package/dist/lib/federationindexer/FederationEpisodeIndexer.d.ts +0 -5
  123. package/dist/lib/federationindexer/FederationEpisodeIndexer.js +0 -65
  124. package/dist/lib/federationindexer/FederationMovieIndexer.d.ts +0 -5
  125. package/dist/lib/federationindexer/FederationMovieIndexer.js +0 -48
  126. package/dist/lib/federationv2/federationController/index.js +0 -13
  127. package/dist/lib/indexers/MediaIdentifier.d.ts +0 -5
  128. package/dist/lib/indexers/MediaIdentifier.js +0 -15
  129. package/dist/lib/indexers/files/FileIndexer.d.ts +0 -10
  130. package/dist/lib/indexers/files/FileIndexer.js +0 -103
  131. package/dist/lib/indexers/movies/MovieCollector.d.ts +0 -25
  132. package/dist/lib/indexers/movies/MovieCollector.js +0 -65
  133. package/dist/lib/indexers/movies/MovieIdentifier.d.ts +0 -10
  134. package/dist/lib/indexers/movies/MovieIdentifier.js +0 -22
  135. package/dist/lib/indexers/movies/MovieIndexer.d.ts +0 -11
  136. package/dist/lib/indexers/movies/MovieIndexer.js +0 -64
  137. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.d.ts +0 -4
  138. package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.js +0 -52
  139. package/dist/lib/indexers/series/EpisodeIdentifier.d.ts +0 -12
  140. package/dist/lib/indexers/series/EpisodeIdentifier.js +0 -25
  141. package/dist/lib/indexers/series/SeriesCollector.d.ts +0 -25
  142. package/dist/lib/indexers/series/SeriesCollector.js +0 -69
  143. package/dist/lib/indexers/series/SeriesIdentifer.d.ts +0 -11
  144. package/dist/lib/indexers/series/SeriesIdentifer.js +0 -24
  145. package/dist/lib/indexers/series/SeriesIndexer.d.ts +0 -11
  146. package/dist/lib/indexers/series/SeriesIndexer.js +0 -140
  147. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.d.ts +0 -4
  148. package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.js +0 -48
  149. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.d.ts +0 -6
  150. package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.js +0 -90
  151. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.d.ts +0 -7
  152. package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.js +0 -87
  153. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.d.ts +0 -10
  154. package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.js +0 -82
  155. package/dist/lib/oblecto/index.d.ts +0 -68
  156. package/dist/lib/oblecto/index.js +0 -125
  157. package/dist/lib/queue/index.d.ts +0 -32
  158. package/dist/lib/queue/index.js +0 -96
  159. package/dist/lib/realtime/RealtimeClient.d.ts +0 -27
  160. package/dist/lib/realtime/RealtimeClient.js +0 -137
  161. package/dist/lib/realtime/RealtimeController.d.ts +0 -12
  162. package/dist/lib/realtime/RealtimeController.js +0 -50
  163. package/dist/lib/redisQueue/index.js +0 -109
  164. package/dist/lib/sets/tv/MovieSetCollector.d.ts +0 -6
  165. package/dist/lib/sets/tv/MovieSetCollector.js +0 -49
  166. package/dist/lib/streamSessions/StreamSession.d.ts +0 -41
  167. package/dist/lib/streamSessions/StreamSession.js +0 -146
  168. package/dist/lib/streamSessions/StreamSessionController.d.ts +0 -19
  169. package/dist/lib/streamSessions/StreamSessionController.js +0 -78
  170. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.d.ts +0 -5
  171. package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.js +0 -116
  172. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.d.ts +0 -5
  173. package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.js +0 -41
  174. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.d.ts +0 -15
  175. package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.js +0 -148
  176. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.d.ts +0 -9
  177. package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.js +0 -72
  178. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.d.ts +0 -6
  179. package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.js +0 -96
  180. package/dist/lib/updaters/files/FileUpdateCollector.d.ts +0 -20
  181. package/dist/lib/updaters/files/FileUpdateCollector.js +0 -44
  182. package/dist/lib/updaters/files/FileUpdater.d.ts +0 -49
  183. package/dist/lib/updaters/files/FileUpdater.js +0 -194
  184. package/dist/lib/updaters/movies/MovieUpdateCollector.d.ts +0 -20
  185. package/dist/lib/updaters/movies/MovieUpdateCollector.js +0 -48
  186. package/dist/lib/updaters/movies/MovieUpdater.d.ts +0 -12
  187. package/dist/lib/updaters/movies/MovieUpdater.js +0 -49
  188. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.d.ts +0 -20
  189. package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.js +0 -45
  190. package/dist/lib/updaters/series/SeriesUpdateCollector.d.ts +0 -37
  191. package/dist/lib/updaters/series/SeriesUpdateCollector.js +0 -79
  192. package/dist/lib/updaters/series/SeriesUpdater.d.ts +0 -22
  193. package/dist/lib/updaters/series/SeriesUpdater.js +0 -84
  194. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.d.ts +0 -11
  195. package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.js +0 -70
  196. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.d.ts +0 -21
  197. package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.js +0 -68
  198. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.d.ts +0 -5
  199. package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.js +0 -38
  200. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.d.ts +0 -21
  201. package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.js +0 -50
  202. package/dist/models/episode.d.ts +0 -76
  203. package/dist/models/episode.js +0 -62
  204. package/dist/models/episodeFiles.d.ts +0 -5
  205. package/dist/models/episodeFiles.js +0 -14
  206. package/dist/models/file.d.ts +0 -26
  207. package/dist/models/file.js +0 -32
  208. package/dist/models/movie.d.ts +0 -30
  209. package/dist/models/movie.js +0 -36
  210. package/dist/models/movieFiles.d.ts +0 -5
  211. package/dist/models/movieFiles.js +0 -14
  212. package/dist/models/movieSet.d.ts +0 -20
  213. package/dist/models/movieSet.js +0 -26
  214. package/dist/models/series.d.ts +0 -59
  215. package/dist/models/series.js +0 -50
  216. package/dist/models/seriesSet.d.ts +0 -9
  217. package/dist/models/seriesSet.js +0 -17
  218. package/dist/models/stream.d.ts +0 -73
  219. package/dist/models/stream.js +0 -81
  220. package/dist/models/trackEpisode.d.ts +0 -9
  221. package/dist/models/trackEpisode.js +0 -17
  222. package/dist/models/trackMovie.d.ts +0 -9
  223. package/dist/models/trackMovie.js +0 -17
  224. package/dist/models/user.d.ts +0 -19
  225. package/dist/models/user.js +0 -26
  226. package/dist/submodules/REST/index.d.ts +0 -9
  227. package/dist/submodules/REST/index.js +0 -59
  228. package/dist/submodules/REST/middleware/auth.d.ts +0 -5
  229. package/dist/submodules/REST/middleware/auth.js +0 -28
  230. package/dist/submodules/REST/routes/auth.d.ts +0 -2
  231. package/dist/submodules/REST/routes/auth.js +0 -48
  232. package/dist/submodules/REST/routes/clients.d.ts +0 -2
  233. package/dist/submodules/REST/routes/clients.js +0 -54
  234. package/dist/submodules/REST/routes/episodes.d.ts +0 -2
  235. package/dist/submodules/REST/routes/episodes.js +0 -275
  236. package/dist/submodules/REST/routes/files.d.ts +0 -2
  237. package/dist/submodules/REST/routes/files.js +0 -53
  238. package/dist/submodules/REST/routes/index.d.ts +0 -2
  239. package/dist/submodules/REST/routes/index.js +0 -49
  240. package/dist/submodules/REST/routes/movies.d.ts +0 -2
  241. package/dist/submodules/REST/routes/movies.js +0 -303
  242. package/dist/submodules/REST/routes/sets.d.ts +0 -2
  243. package/dist/submodules/REST/routes/sets.js +0 -35
  244. package/dist/submodules/REST/routes/settings/index.d.ts +0 -2
  245. package/dist/submodules/REST/routes/settings/index.js +0 -22
  246. package/dist/submodules/REST/routes/settings/maintenance.d.ts +0 -2
  247. package/dist/submodules/REST/routes/settings/maintenance.js +0 -87
  248. package/dist/submodules/REST/routes/settings/misc.d.ts +0 -2
  249. package/dist/submodules/REST/routes/settings/misc.js +0 -38
  250. package/dist/submodules/REST/routes/settings/sources.d.ts +0 -2
  251. package/dist/submodules/REST/routes/settings/sources.js +0 -61
  252. package/dist/submodules/REST/routes/streaming.js +0 -91
  253. package/dist/submodules/REST/routes/tvshows.d.ts +0 -2
  254. package/dist/submodules/REST/routes/tvshows.js +0 -137
  255. package/dist/submodules/REST/routes/users.d.ts +0 -2
  256. package/dist/submodules/REST/routes/users.js +0 -107
  257. package/dist/submodules/REST/routes/web.d.ts +0 -2
  258. package/dist/submodules/REST/routes/web.js +0 -43
  259. package/dist/submodules/axiosTimeout.d.ts +0 -1
  260. package/dist/submodules/axiosTimeout.js +0 -31
  261. package/dist/submodules/database.d.ts +0 -1
  262. package/dist/submodules/database.js +0 -180
  263. package/dist/submodules/ffmpeg.d.ts +0 -1
  264. package/dist/submodules/ffmpeg.js +0 -23
  265. package/dist/submodules/ffprobe.d.ts +0 -1
  266. package/dist/submodules/ffprobe.js +0 -22
  267. package/dist/submodules/guessit.d.ts +0 -5
  268. package/dist/submodules/guessit.js +0 -48
  269. package/dist/submodules/logger/index.d.ts +0 -7
  270. package/dist/submodules/logger/index.js +0 -43
  271. package/dist/submodules/promiseTimeout.d.ts +0 -1
  272. package/dist/submodules/promiseTimeout.js +0 -28
  273. package/dist/submodules/zeroconf.js +0 -19
@@ -1,70 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _FederationClient = _interopRequireDefault(require("./FederationClient"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- class FederationMediaClient extends _FederationClient.default {
13
- constructor(oblecto, server) {
14
- super(oblecto, server);
15
- this.port = oblecto.config.federation.servers[server].mediaPort;
16
- this.fileId = null;
17
- this.streamDestination = null;
18
- }
19
-
20
- headerHandler(data) {
21
- super.headerHandler(data);
22
- let split = data.split(':');
23
-
24
- switch (split[0]) {
25
- case 'READY':
26
- this.readyHandler(split[1]);
27
- break;
28
- }
29
- }
30
-
31
- async startStreamFile(fileId) {
32
- this.fileId = fileId;
33
- this.socket.write(`FILEID:${fileId}\n`);
34
- }
35
-
36
- async setStreamDestination(dest) {
37
- this.streamDestination = dest;
38
- dest.on('close', () => {
39
- this.socket.destroy();
40
- });
41
- }
42
-
43
- async readyHandler(data) {
44
- if (data !== this.fileId) {
45
- // The server didn't respect the file id
46
- // This really shouldn't happen so we destroy the client
47
- this.socket.destroy();
48
- }
49
-
50
- this.socket.pipe(this.streamDestination);
51
- this.startStream();
52
- }
53
-
54
- async startStream() {
55
- if (!this.streamDestination) throw new Error('No destination');
56
- this.socket.write('START:START\n');
57
- }
58
-
59
- async setStreamOffset(offset) {
60
- this.socket.write(`OFFSET:${offset}\n`);
61
- }
62
-
63
- async closeConnection() {
64
- this.socket.destroy();
65
- delete this;
66
- }
67
-
68
- }
69
-
70
- exports.default = FederationMediaClient;
@@ -1,10 +0,0 @@
1
- export default class FederationController {
2
- constructor(oblecto: any);
3
- oblecto: any;
4
- initiateFederation(): void;
5
- federationMediaServer: FederationMediaServer | undefined;
6
- federationDataServer: FederationDataServer | undefined;
7
- close(): void;
8
- }
9
- import FederationMediaServer from "./FederationMediaServer";
10
- import FederationDataServer from "./FederationDataServer";
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _FederationMediaServer = _interopRequireDefault(require("./FederationMediaServer"));
9
-
10
- var _FederationDataServer = _interopRequireDefault(require("./FederationDataServer"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- class FederationController {
15
- constructor(oblecto) {
16
- this.oblecto = oblecto;
17
- this.initiateFederation();
18
- }
19
-
20
- initiateFederation() {
21
- this.federationMediaServer = new _FederationMediaServer.default(this.oblecto, this.oblecto.config.federation.mediaPort);
22
- this.federationDataServer = new _FederationDataServer.default(this.oblecto, this.oblecto.config.federation.dataPort);
23
- }
24
-
25
- close() {
26
- this.federationDataServer.close();
27
- this.federationMediaServer.close();
28
- }
29
-
30
- }
31
-
32
- exports.default = FederationController;
@@ -1,4 +0,0 @@
1
- export default class FederationMediaServer extends FederationServer {
2
- constructor(oblecto: any, port: any);
3
- }
4
- import FederationServer from "./FederationServer";
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _FederationServer = _interopRequireDefault(require("./FederationServer"));
9
-
10
- var _FederationDataServerConnection = _interopRequireDefault(require("./FederationDataServerConnection"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- class FederationMediaServer extends _FederationServer.default {
15
- secureConnectionHandler(socket) {
16
- super.secureConnectionHandler(socket);
17
- let connection = new _FederationDataServerConnection.default(this.oblecto, socket);
18
- }
19
-
20
- }
21
-
22
- exports.default = FederationMediaServer;
@@ -1,8 +0,0 @@
1
- export default class FederationDataServerConnection extends FederationServerConnection {
2
- constructor(oblecto: any, socket: any);
3
- fullSyncPermitted: boolean;
4
- syncHandler(data: any): false | Promise<void> | undefined;
5
- startFullSync(): Promise<void>;
6
- syncFiles(): Promise<void>;
7
- }
8
- import FederationServerConnection from "./FederationServerConnection";
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _FederationServerConnection = _interopRequireDefault(require("./FederationServerConnection"));
9
-
10
- var _file = require("../../../models/file");
11
-
12
- var _movie = require("../../../models/movie");
13
-
14
- var _episode = require("../../../models/episode");
15
-
16
- var _series = require("../../../models/series");
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- class FederationDataServerConnection extends _FederationServerConnection.default {
21
- constructor(oblecto, socket) {
22
- super(oblecto, socket);
23
- this.fullSyncPermitted = true;
24
- }
25
-
26
- async headerHandler(data) {
27
- super.headerHandler(data);
28
- if (!this.authenticated) return;
29
- let split = data.split(':');
30
-
31
- switch (split[0]) {
32
- case 'SYNC':
33
- this.syncHandler(split[1]);
34
- break;
35
- }
36
- }
37
-
38
- syncHandler(data) {
39
- if (data === 'FULL') {
40
- if (!this.fullSyncPermitted) return false;
41
- return this.startFullSync();
42
- }
43
- }
44
-
45
- async startFullSync() {
46
- await this.syncFiles();
47
- }
48
-
49
- async syncFiles() {
50
- let results = await _file.File.findAll({
51
- include: [_movie.Movie, {
52
- model: _episode.Episode,
53
- include: [_series.Series]
54
- }]
55
- });
56
-
57
- for (let result of results) {
58
- if (this.socket.destroyed) return;
59
- let file = result.toJSON();
60
- let fileInfo = {};
61
-
62
- if (file.Episodes[0]) {
63
- fileInfo.type = 'episode';
64
- fileInfo.episode = file.Episodes[0].airedEpisodeNumber;
65
- fileInfo.season = file.Episodes[0].airedSeason;
66
- if (file.Episodes[0].tvdbid) fileInfo.tvdbid = file.Episodes[0].tvdbid;
67
- if (file.Episodes[0].tmdbid) fileInfo.tmdbid = file.Episodes[0].tmdbid;
68
- if (file.Episodes[0].Series.tvdbid) fileInfo.seriesTvdbid = file.Episodes[0].Series.tvdbid;
69
- if (file.Episodes[0].Series.tmdbid) fileInfo.seriesTmdbid = file.Episodes[0].Series.tmdbid;
70
- }
71
-
72
- if (file.Movies[0]) {
73
- fileInfo.type = 'movie';
74
- fileInfo.tmdbid = file.Movies[0].tmdbid;
75
- }
76
-
77
- let syncInfo = {
78
- id: file.id,
79
- duration: file.duration,
80
- fileInfo
81
- };
82
- this.write('FILE', Buffer.from(JSON.stringify(syncInfo)).toString('base64')); // TODO: Negotiate a syncing speed
83
-
84
- await sleep(100);
85
- }
86
- }
87
-
88
- }
89
-
90
- exports.default = FederationDataServerConnection;
91
-
92
- function sleep(ms) {
93
- return new Promise(resolve => {
94
- setTimeout(resolve, ms);
95
- });
96
- }
@@ -1,4 +0,0 @@
1
- export default class FederationMediaServer extends FederationServer {
2
- constructor(oblecto: any, port: any);
3
- }
4
- import FederationServer from "./FederationServer";
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _FederationServer = _interopRequireDefault(require("./FederationServer"));
9
-
10
- var _FederationMediaServerConnection = _interopRequireDefault(require("./FederationMediaServerConnection"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- class FederationMediaServer extends _FederationServer.default {
15
- secureConnectionHandler(socket) {
16
- super.secureConnectionHandler(socket);
17
- let connection = new _FederationMediaServerConnection.default(this.oblecto, socket);
18
- }
19
-
20
- }
21
-
22
- exports.default = FederationMediaServer;
@@ -1,11 +0,0 @@
1
- export default class FederationMediaServerConnection extends FederationServerConnection {
2
- constructor(oblecto: any, socket: any);
3
- fileId: any;
4
- fileInfo: File | null;
5
- offset: number;
6
- setOffset(offset: any): void;
7
- setFileId(data: any): Promise<void>;
8
- startStream(): Promise<void>;
9
- }
10
- import FederationServerConnection from "./FederationServerConnection";
11
- import { File } from "../../../models/file";
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _FederationServerConnection = _interopRequireDefault(require("./FederationServerConnection"));
9
-
10
- var _file = require("../../../models/file");
11
-
12
- var _logger = _interopRequireDefault(require("../../../submodules/logger"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- class FederationMediaServerConnection extends _FederationServerConnection.default {
17
- constructor(oblecto, socket) {
18
- super(oblecto, socket);
19
- this.fileId = null;
20
- this.fileInfo = null;
21
- this.offset = 0;
22
- }
23
-
24
- async headerHandler(data) {
25
- super.headerHandler(data);
26
- if (!this.authenticated) return;
27
- let split = data.split(':');
28
-
29
- switch (split[0]) {
30
- case 'FILEID':
31
- await this.setFileId(split[1]);
32
- break;
33
-
34
- case 'OFFSET':
35
- this.setOffset(split[1]);
36
- break;
37
-
38
- case 'START':
39
- await this.startStream();
40
- break;
41
- }
42
- }
43
-
44
- setOffset(offset) {
45
- this.offset = offset;
46
- }
47
-
48
- async setFileId(data) {
49
- this.fileId = data;
50
- this.fileInfo = null;
51
-
52
- try {
53
- this.fileInfo = await _file.File.findByPk(this.fileId);
54
- this.socket.write(`READY:${this.fileId}\n`);
55
- } catch (e) {
56
- this.socket.write('ERROR:FILEID\n');
57
- }
58
- }
59
-
60
- async startStream() {
61
- if (!this.fileInfo) return;
62
- let streamSession = this.oblecto.streamSessionController.newSession(this.fileInfo, {
63
- streamType: 'recode',
64
- target: {
65
- formats: ['matroska'],
66
- videoCodecs: ['copy'],
67
- audioCodecs: ['copy']
68
- },
69
- offset: this.offset
70
- });
71
- await streamSession.addDestination({
72
- stream: this.socket
73
- });
74
- await streamSession.startStream();
75
- }
76
-
77
- async closeHandler() {
78
- _logger.default.log('INFO', 'Federation media stream has closed');
79
- }
80
-
81
- }
82
-
83
- exports.default = FederationMediaServerConnection;
@@ -1,11 +0,0 @@
1
- /// <reference types="node" />
2
- export default class FederationServer {
3
- constructor(oblecto: any, port: any);
4
- oblecto: any;
5
- server: tls.Server;
6
- errorHandler(error: any): void;
7
- connectionHandler(socket: any): void;
8
- secureConnectionHandler(socket: any): void;
9
- close(): void;
10
- }
11
- import tls from "tls";
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _tls = _interopRequireDefault(require("tls"));
9
-
10
- var _fs = _interopRequireDefault(require("fs"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- class FederationServer {
15
- constructor(oblecto, port) {
16
- this.oblecto = oblecto;
17
- let options = {
18
- key: _fs.default.readFileSync(this.oblecto.config.federation.key),
19
- cert: _fs.default.readFileSync('/etc/oblecto/keys/public-cert.pem')
20
- };
21
- this.server = _tls.default.createServer(options, socket => {});
22
- this.server.listen(port);
23
- this.server.on('error', err => this.errorHandler(err));
24
- this.server.on('connection', socket => this.connectionHandler(socket));
25
- this.server.on('secureConnection', socket => this.secureConnectionHandler(socket));
26
- }
27
-
28
- errorHandler(error) {}
29
-
30
- connectionHandler(socket) {}
31
-
32
- secureConnectionHandler(socket) {}
33
-
34
- close() {
35
- this.server.close();
36
- }
37
-
38
- }
39
-
40
- exports.default = FederationServer;
@@ -1,18 +0,0 @@
1
- export default class FederationServerConnection {
2
- constructor(oblecto: any, socket: any);
3
- oblecto: any;
4
- socket: any;
5
- dataRead: string;
6
- clientId: string;
7
- authenticated: boolean;
8
- challenge: any;
9
- dataHandler(chunk: any): void;
10
- headerHandler(data: any): void;
11
- clientIdHandler(clientId: any): Promise<void>;
12
- key: any;
13
- authHandler(data: any): void;
14
- closeHandler(): void;
15
- errorHandler(error: any): void;
16
- write(header: any, content: any): void;
17
- close(): void;
18
- }
@@ -1,97 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _nodeRsa = _interopRequireDefault(require("node-rsa"));
9
-
10
- var _fs = require("fs");
11
-
12
- var _uuid = require("uuid");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- class FederationServerConnection {
17
- constructor(oblecto, socket) {
18
- this.oblecto = oblecto;
19
- this.socket = socket;
20
- this.socket.on('data', chunk => this.dataHandler(chunk));
21
- this.socket.on('close', () => this.closeHandler());
22
- this.socket.on('error', error => this.errorHandler(error));
23
- this.dataRead = '';
24
- this.clientId = '';
25
- this.authenticated = false;
26
- this.challenge = (0, _uuid.v4)();
27
- }
28
-
29
- dataHandler(chunk) {
30
- this.dataRead += chunk.toString();
31
- let split = this.dataRead.split('\n');
32
- if (split.length < 2) return;
33
-
34
- for (let item of split) {
35
- if (item === '') continue;
36
- this.dataRead = this.dataRead.replace(item + '\n', '');
37
- this.headerHandler(item);
38
- }
39
- }
40
-
41
- headerHandler(data) {
42
- let split = data.split(':');
43
-
44
- switch (split[0]) {
45
- case 'IAM':
46
- this.clientIdHandler(split[1]);
47
- break;
48
-
49
- case 'CHALLENGE':
50
- this.authHandler(split[1]);
51
- break;
52
-
53
- default:
54
- if (!this.authenticated) {
55
- this.socket.destroy();
56
- }
57
-
58
- break;
59
- }
60
- }
61
-
62
- async clientIdHandler(clientId) {
63
- this.clientId = clientId; // Check if the client server is known
64
- // If an unknown client is trying to connect, we should just ignore it
65
-
66
- if (!this.oblecto.config.federation.clients[clientId]) return;
67
- let key = await _fs.promises.readFile(this.oblecto.config.federation.clients[clientId].key);
68
- this.key = (0, _nodeRsa.default)(key);
69
- this.write('CHALLENGE', this.key.encrypt(this.challenge, 'base64'));
70
- }
71
-
72
- authHandler(data) {
73
- if (data === this.challenge) {
74
- this.authenticated = true;
75
- this.write('AUTH', 'ACCEPTED');
76
- return;
77
- }
78
-
79
- this.write('AUTH', 'DENIED');
80
- this.socket.destroy();
81
- }
82
-
83
- closeHandler() {}
84
-
85
- errorHandler(error) {}
86
-
87
- write(header, content) {
88
- this.socket.write(`${header}:${content}\n`);
89
- }
90
-
91
- close() {
92
- this.socket.close();
93
- }
94
-
95
- }
96
-
97
- exports.default = FederationServerConnection;
@@ -1,5 +0,0 @@
1
- export default class FederationEpisodeIndexer {
2
- constructor(oblecto: any);
3
- oblecto: any;
4
- indexEpisode(file: any): Promise<void>;
5
- }
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _series = require("../../models/series");
9
-
10
- var _episode = require("../../models/episode");
11
-
12
- var _file = require("../../models/file");
13
-
14
- class FederationEpisodeIndexer {
15
- constructor(oblecto) {
16
- this.oblecto = oblecto; // Register task availability to Oblecto queue
17
-
18
- this.oblecto.queue.registerJob('federationIndexEpisode', async job => {
19
- await this.indexEpisode(job);
20
- });
21
- }
22
-
23
- async indexEpisode(file) {
24
- let [fileEntity, fileInserted] = await _file.File.findOrCreate({
25
- where: {
26
- host: file.host,
27
- path: file.id
28
- },
29
- defaults: {
30
- name: '',
31
- directory: '',
32
- extension: '',
33
- duration: file.duration
34
- }
35
- });
36
- let seriesQuery = {};
37
- if (file.fileInfo.seriesTvdbid) seriesQuery.tvdbid = file.fileInfo.seriesTvdbid;
38
- if (file.fileInfo.seriesTmdbid) seriesQuery.tmdbid = file.fileInfo.seriesTmdbid;
39
- let [series, seriesInserted] = await _series.Series.findOrCreate({
40
- where: seriesQuery
41
- });
42
- let episodeQuery = {
43
- SeriesId: series.id
44
- };
45
- if (file.fileInfo.tvdbid) episodeQuery.tvdbid = file.fileInfo.tvdbid;
46
- if (file.fileInfo.tmdbid) episodeQuery.tmdbid = file.fileInfo.tmdbid;
47
- let [episode, episodeInserted] = await _episode.Episode.findOrCreate({
48
- where: episodeQuery,
49
- defaults: {
50
- airedEpisodeNumber: file.fileInfo.episode,
51
- airedSeason: file.fileInfo.season
52
- }
53
- });
54
- if (!episodeInserted) return;
55
- await episode.addFile(fileEntity);
56
- await this.oblecto.seriesUpdateCollector.collectEpisode(episode);
57
- await this.oblecto.seriesArtworkCollector.collectArtworkEpisodeBanner(episode);
58
- if (!seriesInserted) return;
59
- await this.oblecto.seriesUpdateCollector.collectSeries(series);
60
- await this.oblecto.seriesArtworkCollector.collectArtworkSeriesPoster(series);
61
- }
62
-
63
- }
64
-
65
- exports.default = FederationEpisodeIndexer;
@@ -1,5 +0,0 @@
1
- export default class FederationMovieIndexer {
2
- constructor(oblecto: any);
3
- oblecto: any;
4
- indexMovie(file: any): Promise<void>;
5
- }
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _file = require("../../models/file");
9
-
10
- var _movie = require("../../models/movie");
11
-
12
- class FederationMovieIndexer {
13
- constructor(oblecto) {
14
- this.oblecto = oblecto; // Register task availability to Oblecto queue
15
-
16
- this.oblecto.queue.registerJob('federationIndexMovie', async job => {
17
- await this.indexMovie(job);
18
- });
19
- }
20
-
21
- async indexMovie(file) {
22
- let [fileEntity, fileInserted] = await _file.File.findOrCreate({
23
- where: {
24
- host: file.host,
25
- path: file.id
26
- },
27
- defaults: {
28
- name: '',
29
- directory: '',
30
- extension: '',
31
- duration: file.duration
32
- }
33
- });
34
- let [movie, movieInserted] = await _movie.Movie.findOrCreate({
35
- where: {
36
- tmdbid: file.fileInfo.tmdbid
37
- }
38
- });
39
- await movie.addFile(fileEntity);
40
- if (!movieInserted) return;
41
- await this.oblecto.movieUpdateCollector.collectMovie(movie);
42
- await this.oblecto.movieArtworkCollector.collectArtworkMovieFanart(movie);
43
- await this.oblecto.movieArtworkCollector.collectArtworkMoviePoster(movie);
44
- }
45
-
46
- }
47
-
48
- exports.default = FederationMovieIndexer;
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- class FederationController {
9
- constructor(oblecto) {}
10
-
11
- }
12
-
13
- exports.default = FederationController;