The URL guard judged the address the user typed; a public host's 3xx into our network, a page's formats pointing inside, and a name rebound between the check and the fetch all got past it, and the stored error told a live internal port from a dead one. Every non-YouTube download now runs through an egress gate on the worker's loopback: it resolves each host once, refuses any forbidden answer before dialling, and connects to the address it vetted. Measured on the worker image: yt-dlp's proxy reaches the Requests and CurlCFFI handlers, native HLS and ffmpeg alike. Formats fetched over anything but http(s), which ffmpeg would dial directly, are dropped, and one factory opens every yt-dlp so none skips it.
892 lines
25 KiB
JSON
892 lines
25 KiB
JSON
{
|
|
"files": {
|
|
"./app/audit.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 18,
|
|
"endColumn": 26,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/debugsession.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 18,
|
|
"endColumn": 26,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 18,
|
|
"endColumn": 26,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/diagnostics.py": [
|
|
{
|
|
"code": "reportOptionalMemberAccess",
|
|
"range": {
|
|
"startColumn": 40,
|
|
"endColumn": 49,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/discover/pins.py": [
|
|
{
|
|
"code": "reportOptionalOperand",
|
|
"range": {
|
|
"startColumn": 8,
|
|
"endColumn": 9,
|
|
"lineCount": 5
|
|
}
|
|
}
|
|
],
|
|
"./app/discover/queries.py": [
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 50,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 33,
|
|
"endColumn": 44,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 33,
|
|
"endColumn": 44,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 33,
|
|
"endColumn": 44,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 28,
|
|
"endColumn": 39,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 28,
|
|
"endColumn": 39,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 28,
|
|
"endColumn": 39,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/discover/rails.py": [
|
|
{
|
|
"code": "reportCallIssue",
|
|
"range": {
|
|
"startColumn": 4,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 18,
|
|
"endColumn": 41,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/downloads/backfill.py": [
|
|
{
|
|
"code": "reportReturnType",
|
|
"range": {
|
|
"startColumn": 23,
|
|
"endColumn": 27,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/downloads/credentials.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 27,
|
|
"endColumn": 30,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/downloads/gc.py": [
|
|
{
|
|
"code": "reportOperatorIssue",
|
|
"range": {
|
|
"startColumn": 16,
|
|
"endColumn": 28,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/downloads/pipeline.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 22,
|
|
"endColumn": 27,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportGeneralTypeIssues",
|
|
"range": {
|
|
"startColumn": 10,
|
|
"endColumn": 18,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 31,
|
|
"endColumn": 36,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 36,
|
|
"endColumn": 43,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/downloads/service.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 18,
|
|
"endColumn": 26,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/downloads/urlguard.py": [
|
|
{
|
|
"code": "reportReturnType",
|
|
"range": {
|
|
"startColumn": 11,
|
|
"endColumn": 41,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/feedquery.py": [
|
|
{
|
|
"code": "reportCallIssue",
|
|
"range": {
|
|
"startColumn": 37,
|
|
"endColumn": 5,
|
|
"lineCount": 3
|
|
}
|
|
},
|
|
{
|
|
"code": "reportAssignmentType",
|
|
"range": {
|
|
"startColumn": 37,
|
|
"endColumn": 5,
|
|
"lineCount": 3
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 8,
|
|
"endColumn": 97,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/logsink.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 18,
|
|
"endColumn": 26,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/notifications.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 52,
|
|
"endColumn": 58,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/plex/lookups.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 48,
|
|
"endColumn": 58,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/plex/people.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 15,
|
|
"endColumn": 23,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/plex/sync.py": [
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 21,
|
|
"endColumn": 69,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 21,
|
|
"endColumn": 69,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 70,
|
|
"endColumn": 83,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 76,
|
|
"endColumn": 89,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/plex/tmdb.py": [
|
|
{
|
|
"code": "reportAssignmentType",
|
|
"range": {
|
|
"startColumn": 16,
|
|
"endColumn": 9,
|
|
"lineCount": 10
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 30,
|
|
"endColumn": 36,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 29,
|
|
"endColumn": 35,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/plex/watch_sync.py": [
|
|
{
|
|
"code": "reportReturnType",
|
|
"range": {
|
|
"startColumn": 11,
|
|
"endColumn": 5,
|
|
"lineCount": 11
|
|
}
|
|
}
|
|
],
|
|
"./app/ratelimit.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 14,
|
|
"endColumn": 25,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/routes/admin.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 9,
|
|
"endColumn": 13,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/routes/audit.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 37,
|
|
"endColumn": 45,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/routes/discover.py": [
|
|
{
|
|
"code": "reportInvalidTypeForm",
|
|
"range": {
|
|
"startColumn": 19,
|
|
"endColumn": 33,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/routes/plex/collections.py": [
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 20,
|
|
"endColumn": 45,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 20,
|
|
"endColumn": 46,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 56,
|
|
"endColumn": 59,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 56,
|
|
"endColumn": 59,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportOptionalMemberAccess",
|
|
"range": {
|
|
"startColumn": 39,
|
|
"endColumn": 47,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 56,
|
|
"endColumn": 59,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 46,
|
|
"endColumn": 49,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/routes/scheduler.py": [
|
|
{
|
|
"code": "reportOptionalMemberAccess",
|
|
"range": {
|
|
"startColumn": 25,
|
|
"endColumn": 28,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportOptionalMemberAccess",
|
|
"range": {
|
|
"startColumn": 25,
|
|
"endColumn": 28,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/sync/explore.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 6,
|
|
"endColumn": 14,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 6,
|
|
"endColumn": 14,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 6,
|
|
"endColumn": 14,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 6,
|
|
"endColumn": 14,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/sync/maintenance.py": [
|
|
{
|
|
"code": "reportOptionalOperand",
|
|
"range": {
|
|
"startColumn": 19,
|
|
"endColumn": 42,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/sync/playlists.py": [
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 55,
|
|
"endColumn": 72,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 51,
|
|
"endColumn": 68,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 39,
|
|
"endColumn": 56,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/sync/runner.py": [
|
|
{
|
|
"code": "reportAssignmentType",
|
|
"range": {
|
|
"startColumn": 19,
|
|
"endColumn": 88,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 16,
|
|
"endColumn": 24,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportOptionalIterable",
|
|
"range": {
|
|
"startColumn": 23,
|
|
"endColumn": 31,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 45,
|
|
"endColumn": 72,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportAssignmentType",
|
|
"range": {
|
|
"startColumn": 19,
|
|
"endColumn": 9,
|
|
"lineCount": 7
|
|
}
|
|
},
|
|
{
|
|
"code": "reportOptionalSubscript",
|
|
"range": {
|
|
"startColumn": 19,
|
|
"endColumn": 27,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportOptionalIterable",
|
|
"range": {
|
|
"startColumn": 23,
|
|
"endColumn": 31,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 47,
|
|
"endColumn": 55,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/sync/videos.py": [
|
|
{
|
|
"code": "reportAttributeAccessIssue",
|
|
"range": {
|
|
"startColumn": 18,
|
|
"endColumn": 26,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
],
|
|
"./app/worker.py": [
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 36,
|
|
"endColumn": 40,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 36,
|
|
"endColumn": 40,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 35,
|
|
"endColumn": 43,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 24,
|
|
"endColumn": 32,
|
|
"lineCount": 1
|
|
}
|
|
},
|
|
{
|
|
"code": "reportArgumentType",
|
|
"range": {
|
|
"startColumn": 28,
|
|
"endColumn": 36,
|
|
"lineCount": 1
|
|
}
|
|
}
|
|
]
|
|
}
|
|
} |