diff --git a/lib/router.js b/lib/router.js index 49e956f227..fd2a5aec0b 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1026,8 +1026,8 @@ router.get('/99percentinvisible/transcript', lazyloadRouteHandler('./routes/99pe // 青空文庫 router.get('/aozora/newbook/:count?', lazyloadRouteHandler('./routes/aozora/newbook')); -// solidot -router.get('/solidot/:type?', lazyloadRouteHandler('./routes/solidot/main')); +// solidot migrated to v2 +// router.get('/solidot/:type?', lazyloadRouteHandler('./routes/solidot/main')); // Hermes UK router.get('/parcel/hermesuk/:tracking', lazyloadRouteHandler('./routes/parcel/hermesuk')); diff --git a/lib/routes/solidot/sectigo.pem b/lib/routes/solidot/sectigo.pem deleted file mode 100644 index c40849bba8..0000000000 --- a/lib/routes/solidot/sectigo.pem +++ /dev/null @@ -1,122 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 4c:aa:f9:ca:db:63:6f:e0:1f:f7:4e:d8:5b:03:86:9d - Signature Algorithm: sha384WithRSAEncryption - Issuer: C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority - Validity - Not Before: Jan 19 00:00:00 2010 GMT - Not After : Jan 18 23:59:59 2038 GMT - Subject: C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (4096 bit) - Modulus: - 00:91:e8:54:92:d2:0a:56:b1:ac:0d:24:dd:c5:cf: - 44:67:74:99:2b:37:a3:7d:23:70:00:71:bc:53:df: - c4:fa:2a:12:8f:4b:7f:10:56:bd:9f:70:72:b7:61: - 7f:c9:4b:0f:17:a7:3d:e3:b0:04:61:ee:ff:11:97: - c7:f4:86:3e:0a:fa:3e:5c:f9:93:e6:34:7a:d9:14: - 6b:e7:9c:b3:85:a0:82:7a:76:af:71:90:d7:ec:fd: - 0d:fa:9c:6c:fa:df:b0:82:f4:14:7e:f9:be:c4:a6: - 2f:4f:7f:99:7f:b5:fc:67:43:72:bd:0c:00:d6:89: - eb:6b:2c:d3:ed:8f:98:1c:14:ab:7e:e5:e3:6e:fc: - d8:a8:e4:92:24:da:43:6b:62:b8:55:fd:ea:c1:bc: - 6c:b6:8b:f3:0e:8d:9a:e4:9b:6c:69:99:f8:78:48: - 30:45:d5:ad:e1:0d:3c:45:60:fc:32:96:51:27:bc: - 67:c3:ca:2e:b6:6b:ea:46:c7:c7:20:a0:b1:1f:65: - de:48:08:ba:a4:4e:a9:f2:83:46:37:84:eb:e8:cc: - 81:48:43:67:4e:72:2a:9b:5c:bd:4c:1b:28:8a:5c: - 22:7b:b4:ab:98:d9:ee:e0:51:83:c3:09:46:4e:6d: - 3e:99:fa:95:17:da:7c:33:57:41:3c:8d:51:ed:0b: - b6:5c:af:2c:63:1a:df:57:c8:3f:bc:e9:5d:c4:9b: - af:45:99:e2:a3:5a:24:b4:ba:a9:56:3d:cf:6f:aa: - ff:49:58:be:f0:a8:ff:f4:b8:ad:e9:37:fb:ba:b8: - f4:0b:3a:f9:e8:43:42:1e:89:d8:84:cb:13:f1:d9: - bb:e1:89:60:b8:8c:28:56:ac:14:1d:9c:0a:e7:71: - eb:cf:0e:dd:3d:a9:96:a1:48:bd:3c:f7:af:b5:0d: - 22:4c:c0:11:81:ec:56:3b:f6:d3:a2:e2:5b:b7:b2: - 04:22:52:95:80:93:69:e8:8e:4c:65:f1:91:03:2d: - 70:74:02:ea:8b:67:15:29:69:52:02:bb:d7:df:50: - 6a:55:46:bf:a0:a3:28:61:7f:70:d0:c3:a2:aa:2c: - 21:aa:47:ce:28:9c:06:45:76:bf:82:18:27:b4:d5: - ae:b4:cb:50:e6:6b:f4:4c:86:71:30:e9:a6:df:16: - 86:e0:d8:ff:40:dd:fb:d0:42:88:7f:a3:33:3a:2e: - 5c:1e:41:11:81:63:ce:18:71:6b:2b:ec:a6:8a:b7: - 31:5c:3a:6a:47:e0:c3:79:59:d6:20:1a:af:f2:6a: - 98:aa:72:bc:57:4a:d2:4b:9d:bb:10:fc:b0:4c:41: - e5:ed:1d:3d:5e:28:9d:9c:cc:bf:b3:51:da:a7:47: - e5:84:53 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4 - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: sha384WithRSAEncryption - 0a:f1:d5:46:84:b7:ae:51:bb:6c:b2:4d:41:14:00:93:4c:9c: - cb:e5:c0:54:cf:a0:25:8e:02:f9:fd:b0:a2:0d:f5:20:98:3c: - 13:2d:ac:56:a2:b0:d6:7e:11:92:e9:2e:ba:9e:2e:9a:72:b1: - bd:19:44:6c:61:35:a2:9a:b4:16:12:69:5a:8c:e1:d7:3e:a4: - 1a:e8:2f:03:f4:ae:61:1d:10:1b:2a:a4:8b:7a:c5:fe:05:a6: - e1:c0:d6:c8:fe:9e:ae:8f:2b:ba:3d:99:f8:d8:73:09:58:46: - 6e:a6:9c:f4:d7:27:d3:95:da:37:83:72:1c:d3:73:e0:a2:47: - 99:03:38:5d:d5:49:79:00:29:1c:c7:ec:9b:20:1c:07:24:69: - 57:78:b2:39:fc:3a:84:a0:b5:9c:7c:8d:bf:2e:93:62:27:b7: - 39:da:17:18:ae:bd:3c:09:68:ff:84:9b:3c:d5:d6:0b:03:e3: - 57:9e:14:f7:d1:eb:4f:c8:bd:87:23:b7:b6:49:43:79:85:5c: - ba:eb:92:0b:a1:c6:e8:68:a8:4c:16:b1:1a:99:0a:e8:53:2c: - 92:bb:a1:09:18:75:0c:65:a8:7b:cb:23:b7:1a:c2:28:85:c3: - 1b:ff:d0:2b:62:ef:a4:7b:09:91:98:67:8c:14:01:cd:68:06: - 6a:63:21:75:03:80:88:8a:6e:81:c6:85:f2:a9:a4:2d:e7:f4: - a5:24:10:47:83:ca:cd:f4:8d:79:58:b1:06:9b:e7:1a:2a:d9: - 9d:01:d7:94:7d:ed:03:4a:ca:f0:db:e8:a9:01:3e:f5:56:99: - c9:1e:8e:49:3d:bb:e5:09:b9:e0:4f:49:92:3d:16:82:40:cc: - cc:59:c6:e6:3a:ed:12:2e:69:3c:6c:95:b1:fd:aa:1d:7b:7f: - 86:be:1e:0e:32:46:fb:fb:13:8f:75:7f:4c:8b:4b:46:63:fe: - 00:34:40:70:c1:c3:b9:a1:dd:a6:70:e2:04:b3:41:bc:e9:80: - 91:ea:64:9c:7a:e1:22:03:a9:9c:6e:6f:0e:65:4f:6c:87:87: - 5e:f3:6e:a0:f9:75:a5:9b:40:e8:53:b2:27:9d:4a:b9:c0:77: - 21:8d:ff:87:f2:de:bc:8c:ef:17:df:b7:49:0b:d1:f2:6e:30: - 0b:1a:0e:4e:76:ed:11:fc:f5:e9:56:b2:7d:bf:c7:6d:0a:93: - 8c:a5:d0:c0:b6:1d:be:3a:4e:94:a2:d7:6e:6c:0b:c2:8a:7c: - fa:20:f3:c4:e4:e5:cd:0d:a8:cb:91:92:b1:7c:85:ec:b5:14: - 69:66:0e:82:e7:cd:ce:c8:2d:a6:51:7f:21:c1:35:53:85:06: - 4a:5d:9f:ad:bb:1b:5f:74 ------BEGIN CERTIFICATE----- -MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB -hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV -BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 -MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT -EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR -6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X -pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC -9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV -/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf -Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z -+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w -qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah -SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC -u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf -Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq -crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E -FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB -/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl -wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM -4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV -2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna -FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ -CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK -boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke -jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL -S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb -QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl -0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB -NVOFBkpdn627G190 ------END CERTIFICATE----- diff --git a/lib/routes/solidot/wotrust.pem b/lib/routes/solidot/wotrust.pem deleted file mode 100644 index aac206ee13..0000000000 --- a/lib/routes/solidot/wotrust.pem +++ /dev/null @@ -1,125 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 3c:10:4f:09:bd:9c:5e:e5:32:1f:44:c5:e9:9d:b3:04 - Signature Algorithm: sha384WithRSAEncryption - Issuer: C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority - Validity - Not Before: Feb 27 00:00:00 2019 GMT - Not After : Feb 26 23:59:59 2029 GMT - Subject: C = CN, ST = Guangdong, L = Shenzhen, O = WoTrus CA Limited, OU = Controlled by Sectigo exclusively for WoTrus CA Limited, CN = WoTrus DV Server CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:bd:28:3d:c8:d9:9e:4e:7c:cc:38:df:86:3c:bf: - ac:f5:1a:af:ec:d7:2a:80:21:56:36:13:5d:19:60: - 7b:d4:23:72:eb:80:22:16:20:56:62:b8:60:d5:7c: - e2:fd:b2:b7:e6:45:87:d1:5e:05:65:69:86:10:49: - 83:73:fc:86:b2:63:ab:59:b3:ec:49:4e:62:64:f8: - c6:9c:91:2e:df:95:ae:b5:3e:d6:68:69:08:69:ab: - 68:66:57:29:bf:92:79:23:e9:cf:aa:42:aa:6d:53: - 17:bd:4b:44:8a:0d:6c:ac:8a:27:b3:4b:21:c3:bd: - 68:37:3c:a8:f1:77:5a:d9:fd:09:93:f1:09:6c:9d: - 5e:d2:2a:d2:c6:b9:99:10:18:d6:26:3a:53:2f:e1: - 69:20:74:e0:7d:4f:27:af:fa:bb:03:21:01:ac:46: - 08:a8:1b:b6:d2:0f:c0:eb:d9:46:54:9f:2a:8b:c0: - 7d:b1:60:13:fd:a7:36:49:f6:9b:02:45:3c:d9:4b: - 19:59:b3:d4:ef:8c:6e:05:be:e4:0c:60:86:bf:b6: - 75:3d:f3:47:4a:c9:31:5a:dc:79:4a:e6:db:df:46: - 12:8e:a2:43:56:c7:4e:cb:d5:10:10:a8:d3:54:80: - 4b:8f:1a:33:99:b6:e0:d8:2b:90:68:7f:1d:4c:74: - 62:b1 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Authority Key Identifier: - keyid:BB:AF:7E:02:3D:FA:A6:F1:3C:84:8E:AD:EE:38:98:EC:D9:32:32:D4 - - X509v3 Subject Key Identifier: - 0D:49:C9:0F:3E:B1:DF:32:03:B5:92:DB:25:A5:6D:74:EC:59:22:CB - X509v3 Key Usage: critical - Digital Signature, Certificate Sign, CRL Sign - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:0 - X509v3 Extended Key Usage: - TLS Web Server Authentication, TLS Web Client Authentication - X509v3 Certificate Policies: - Policy: 1.3.6.1.4.1.6449.1.2.2.22 - Policy: 2.23.140.1.2.1 - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://crl.comodoca.com/COMODORSACertificationAuthority.crl - - Authority Information Access: - CA Issuers - URI:http://crt.comodoca.com/COMODORSAAddTrustCA.crt - OCSP - URI:http://ocsp.comodoca.com - - Signature Algorithm: sha384WithRSAEncryption - 88:9d:c8:b0:2e:aa:7f:42:97:1c:39:39:ea:42:f9:5a:97:eb: - ec:ab:fd:9b:b6:e1:4e:0f:c8:75:ef:1c:f6:32:c4:59:58:6a: - 25:4d:1e:fe:64:d9:3e:71:42:83:44:db:91:11:49:62:ac:1b: - 39:64:04:24:6d:b5:69:cd:4f:e3:21:87:df:8d:15:45:f7:90: - 15:76:9d:75:6c:a4:0e:3a:62:a4:ad:e9:4a:f3:34:7c:24:62: - ce:ea:33:7f:b9:43:1e:b1:dd:bf:7d:50:2a:fe:e9:48:ee:17: - 58:a8:7d:a8:2b:b7:8e:ee:29:45:2b:02:98:33:46:e0:85:b3: - 3a:0b:36:36:de:67:b3:14:ae:17:9c:1d:0f:69:d8:dd:35:7a: - 61:4b:47:1c:ff:08:67:89:9c:7f:b1:1b:7a:87:c0:b4:8f:45: - 42:f9:81:2a:0d:2e:75:6c:fe:e1:4f:d8:51:0e:14:49:5f:44: - 5e:81:67:32:a8:e8:bc:d3:75:8c:44:68:73:15:13:4b:23:17: - 7a:52:c6:9d:38:5a:c3:d9:2a:af:f3:43:c8:2a:99:02:a0:7e: - 6f:50:c3:53:b3:1d:aa:e5:f2:7c:5b:c7:cf:47:78:f8:70:7b: - 7b:69:88:d8:5d:14:16:8c:65:94:85:01:33:f3:cd:e2:3e:34: - 0c:10:40:c7:a5:b3:3e:f7:ee:46:b9:f3:7b:d3:a5:00:86:db: - be:78:9d:5a:b7:c8:f0:b8:05:67:69:ca:f3:4b:06:4b:35:4e: - 7f:8e:d7:44:be:1f:e1:2b:ea:2d:71:c3:a4:c4:d7:e9:09:80: - fd:9f:d0:7d:0a:14:23:9a:ed:cc:09:8e:5b:6e:31:e1:26:0e: - 6e:9a:c5:5c:5d:db:01:22:e6:26:27:ed:cf:c3:91:92:b4:f7: - 03:3e:33:2f:d6:2e:64:8f:8e:b6:e7:49:53:eb:96:be:70:8a: - f8:ef:e6:3c:60:0a:63:db:b6:50:90:ec:47:4d:80:b5:ce:38: - c2:04:87:23:1f:df:1f:e8:b6:b5:57:9f:75:44:4e:72:ac:1d: - c8:59:ac:11:2a:57:db:14:76:3e:f2:d9:96:f5:27:7b:5e:9b: - f8:6f:9b:c9:19:cb:3a:76:51:15:82:b6:38:51:45:1e:a8:42: - 8e:7a:0c:86:86:73:8c:5a:27:02:ea:0c:e2:66:04:1c:67:fc: - 13:94:18:29:5a:e4:db:e2:03:68:b9:44:d6:31:f7:04:5e:c1: - 7e:53:69:a0:a5:ca:35:39:fb:94:60:d4:6f:18:88:41:9c:39: - a7:5f:2e:be:65:8e:96:d4:7e:71:ef:17:2e:e7:c3:c7:3a:08: - c2:bf:cd:ff:6a:23:fa:fd ------BEGIN CERTIFICATE----- -MIIGLzCCBBegAwIBAgIQPBBPCb2cXuUyH0TF6Z2zBDANBgkqhkiG9w0BAQwFADCB -hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV -BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTkwMjI3 -MDAwMDAwWhcNMjkwMjI2MjM1OTU5WjCBsDELMAkGA1UEBhMCQ04xEjAQBgNVBAgT -CUd1YW5nZG9uZzERMA8GA1UEBxMIU2hlbnpoZW4xGjAYBgNVBAoTEVdvVHJ1cyBD -QSBMaW1pdGVkMUAwPgYDVQQLEzdDb250cm9sbGVkIGJ5IFNlY3RpZ28gZXhjbHVz -aXZlbHkgZm9yIFdvVHJ1cyBDQSBMaW1pdGVkMRwwGgYDVQQDExNXb1RydXMgRFYg -U2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvSg9yNme -TnzMON+GPL+s9Rqv7NcqgCFWNhNdGWB71CNy64AiFiBWYrhg1Xzi/bK35kWH0V4F -ZWmGEEmDc/yGsmOrWbPsSU5iZPjGnJEu35WutT7WaGkIaatoZlcpv5J5I+nPqkKq -bVMXvUtEig1srIons0shw71oNzyo8Xda2f0Jk/EJbJ1e0irSxrmZEBjWJjpTL+Fp -IHTgfU8nr/q7AyEBrEYIqBu20g/A69lGVJ8qi8B9sWAT/ac2SfabAkU82UsZWbPU -74xuBb7kDGCGv7Z1PfNHSskxWtx5Subb30YSjqJDVsdOy9UQEKjTVIBLjxozmbbg -2CuQaH8dTHRisQIDAQABo4IBbDCCAWgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t -7jiY7NkyMtQwHQYDVR0OBBYEFA1JyQ8+sd8yA7WS2yWlbXTsWSLLMA4GA1UdDwEB -/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMB -BggrBgEFBQcDAjAiBgNVHSAEGzAZMA0GCysGAQQBsjEBAgIWMAgGBmeBDAECATBM -BgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9S -U0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMwOwYI -KwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRy -dXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20w -DQYJKoZIhvcNAQEMBQADggIBAIidyLAuqn9Clxw5OepC+VqX6+yr/Zu24U4PyHXv -HPYyxFlYaiVNHv5k2T5xQoNE25ERSWKsGzlkBCRttWnNT+Mhh9+NFUX3kBV2nXVs -pA46YqSt6UrzNHwkYs7qM3+5Qx6x3b99UCr+6UjuF1iofagrt47uKUUrApgzRuCF -szoLNjbeZ7MUrhecHQ9p2N01emFLRxz/CGeJnH+xG3qHwLSPRUL5gSoNLnVs/uFP -2FEOFElfRF6BZzKo6LzTdYxEaHMVE0sjF3pSxp04WsPZKq/zQ8gqmQKgfm9Qw1Oz -Harl8nxbx89HePhwe3tpiNhdFBaMZZSFATPzzeI+NAwQQMelsz737ka583vTpQCG -2754nVq3yPC4BWdpyvNLBks1Tn+O10S+H+Er6i1xw6TE1+kJgP2f0H0KFCOa7cwJ -jltuMeEmDm6axVxd2wEi5iYn7c/DkZK09wM+My/WLmSPjrbnSVPrlr5wivjv5jxg -CmPbtlCQ7EdNgLXOOMIEhyMf3x/otrVXn3VETnKsHchZrBEqV9sUdj7y2Zb1J3te -m/hvm8kZyzp2URWCtjhRRR6oQo56DIaGc4xaJwLqDOJmBBxn/BOUGCla5NviA2i5 -RNYx9wRewX5TaaClyjU5+5Rg1G8YiEGcOadfLr5ljpbUfnHvFy7nw8c6CMK/zf9q -I/r9 ------END CERTIFICATE----- diff --git a/lib/routes/solidot/_article.js b/lib/v2/solidot/_article.js similarity index 67% rename from lib/routes/solidot/_article.js rename to lib/v2/solidot/_article.js index af190ace87..6dd701cc48 100644 --- a/lib/routes/solidot/_article.js +++ b/lib/v2/solidot/_article.js @@ -1,22 +1,17 @@ const got = require('@/utils/got'); // get web content const cheerio = require('cheerio'); // html parser -const fs = require('fs'); -const path = require('path'); - -const domain = 'https://www.solidot.org'; +const { parseDate } = require('@/utils/parse-date'); +const timezone = require('@/utils/timezone'); module.exports = async function get_article(url) { + const domain = 'https://www.solidot.org'; + if (/^\/.*$/.test(url)) { url = domain + url; } const response = await got({ method: 'get', url, - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0', - https: { - certificateAuthority: [fs.readFileSync(path.resolve(__dirname, './wotrust.pem')), fs.readFileSync(path.resolve(__dirname, './sectigo.pem'))], - rejectUnauthorized: true, - }, }); const data = response.data; const $ = cheerio.load(data); @@ -24,9 +19,7 @@ module.exports = async function get_article(url) { const date_raw = $('div.talk_time').clone().children().remove().end().text(); const date_str_zh = date_raw.replace(/^[^`]*发表于(.*分)[^`]*$/g, '$1'); // use [^`] to match \n const date_str = date_str_zh.replace(/[年月]/g, '-').replace(/时/g, ':').replace(/[日分]/g, ''); - let date = new Date(date_str); - date.setHours(date.getHours() - 8); - date = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds())); + const title = $('div.block_m > div.ct_tittle > div.bg_htit > h2').text(); const category = $('div.icon_float > a').attr('title'); const author = $('div.talk_time > b') @@ -44,7 +37,7 @@ module.exports = async function get_article(url) { const item = { title, - pubDate: date.toUTCString(), + pubDate: timezone(parseDate(date_str), +8), author, link: url, description, diff --git a/lib/routes/solidot/main.js b/lib/v2/solidot/main.js similarity index 54% rename from lib/routes/solidot/main.js rename to lib/v2/solidot/main.js index 7f7535fcc5..ca02950f6e 100644 --- a/lib/routes/solidot/main.js +++ b/lib/v2/solidot/main.js @@ -5,24 +5,14 @@ const got = require('@/utils/got'); // get web content const cheerio = require('cheerio'); // html parser -const fs = require('fs'); -const path = require('path'); - const get_article = require('./_article'); -const base_url = 'https://$type$.solidot.org'; module.exports = async (ctx) => { - const type = ctx.params.type || 'www'; - - const list_url = base_url.replace('$type$', type); + const type = ctx.params.type ?? 'www'; + const base_url = `https://${type}.solidot.org`; const response = await got({ method: 'get', - url: list_url, - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0', - https: { - certificateAuthority: [fs.readFileSync(path.resolve(__dirname, './wotrust.pem')), fs.readFileSync(path.resolve(__dirname, './sectigo.pem'))], - rejectUnauthorized: true, - }, + url: base_url, }); const data = response.data; // content is html format const $ = cheerio.load(data); @@ -35,12 +25,12 @@ module.exports = async (ctx) => { } // get articles - const msg_list = await Promise.all(urls.map((u) => get_article(u))); + const msg_list = await Promise.all(urls.map((u) => ctx.cache.tryGet(u, () => get_article(u)))); // feed the data ctx.state.data = { title: '奇客的资讯,重要的东西', - link: list_url, + link: base_url, item: msg_list, }; }; diff --git a/lib/v2/solidot/maintainer.js b/lib/v2/solidot/maintainer.js new file mode 100644 index 0000000000..9f70c9ba72 --- /dev/null +++ b/lib/v2/solidot/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:type?': ['sgqy', 'hang333', 'TonyRL'], +}; diff --git a/lib/v2/solidot/radar.js b/lib/v2/solidot/radar.js new file mode 100644 index 0000000000..20f72236b5 --- /dev/null +++ b/lib/v2/solidot/radar.js @@ -0,0 +1,117 @@ +module.exports = { + 'solidot.org': { + _name: 'Solidot', + www: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/www', + }, + ], + linux: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/linux', + }, + ], + science: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/science', + }, + ], + technology: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/technology', + }, + ], + mobile: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/mobile', + }, + ], + apple: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/apple', + }, + ], + hardware: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/hardware', + }, + ], + software: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/software', + }, + ], + security: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/security', + }, + ], + games: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/games', + }, + ], + books: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/books', + }, + ], + idle: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/idle', + }, + ], + cloud: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/cloud', + }, + ], + story: [ + { + title: '最新消息', + docs: 'https://docs.rsshub.app/traditional-media.html#solidot', + source: ['/'], + target: '/solidot/story', + }, + ], + }, +}; diff --git a/lib/v2/solidot/router.js b/lib/v2/solidot/router.js new file mode 100644 index 0000000000..7a6a86c0ad --- /dev/null +++ b/lib/v2/solidot/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/:type?', require('./main')); +};