(url, headers, urlUserId, urlToken)
| 7 | const urlCache = {} |
| 8 | |
| 9 | function interfaceStr(url, headers, urlUserId, urlToken) { |
| 10 | |
| 11 | let result = { |
| 12 | content: null, |
| 13 | contentType: 'text/plain;charset=UTF-8' |
| 14 | } |
| 15 | let fileName = process.cwd() + "/interface.txt" |
| 16 | switch (url) { |
| 17 | case "/playback.xml": |
| 18 | fileName = process.cwd() + "/playback.xml" |
| 19 | result.contentType = "text/xml;charset=UTF-8" |
| 20 | break; |
| 21 | |
| 22 | case "/txt": |
| 23 | fileName = process.cwd() + "/interfaceTXT.txt" |
| 24 | break; |
| 25 | |
| 26 | case "/m3u": |
| 27 | result.contentType = "audio/x-mpegurl; charset=utf-8" |
| 28 | break; |
| 29 | |
| 30 | case "/main.m3u": |
| 31 | result.contentType = "application/octet-stream; charset=utf-8" |
| 32 | break; |
| 33 | |
| 34 | default: |
| 35 | break; |
| 36 | } |
| 37 | try { |
| 38 | result.content = readFileSync(fileName) |
| 39 | } catch (error) { |
| 40 | printRed("文件获取失败") |
| 41 | console.log(error) |
| 42 | return result |
| 43 | } |
| 44 | if (url == "/playback.xml") { |
| 45 | return result |
| 46 | } |
| 47 | |
| 48 | let replaceHost = `http://${headers.host}` |
| 49 | |
| 50 | if (host != "" && (headers["x-real-ip"] || headers["x-forwarded-for"] || host.indexOf(headers.host) != -1)) { |
| 51 | replaceHost = host |
| 52 | } |
| 53 | |
| 54 | if (pass != "") { |
| 55 | replaceHost = `${replaceHost}/${pass}` |
| 56 | } |
| 57 | |
| 58 | if (urlUserId != userId && urlToken != token) { |
| 59 | replaceHost = `${replaceHost}/${urlUserId}/${urlToken}` |
| 60 | } |
| 61 | |
| 62 | result.content = `${result.content}`.replaceAll("${replace}", replaceHost); |
| 63 | |
| 64 | return result |
| 65 | } |
| 66 |
no test coverage detected