tweak WTVNewsServer to be more proper
- compatible with Thunderbird now
This commit is contained in:
@@ -1,21 +1,22 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIDhjCCAm4CFCwnaIlHV8E1xd6rMWruYTncUoieMA0GCSqGSIb3DQEBCwUAMHox
|
MIIDnDCCAoSgAwIBAgIULCdoiUdXwTXF3qsxau5hOdxSiKQwDQYJKoZIhvcNAQEL
|
||||||
CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEXMBUGA1UECgwOWmVmaWUgTmV0d29y
|
BQAwejELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk5ZMRcwFQYDVQQKDA5aZWZpZSBO
|
||||||
a3MxEDAOBgNVBAsMB21pbmlzcnYxEzARBgNVBAMMCm1pbmlzcnZfY2ExHjAcBgkq
|
ZXR3b3JrczEQMA4GA1UECwwHbWluaXNydjETMBEGA1UEAwwKbWluaXNydl9jYTEe
|
||||||
hkiG9w0BCQEWD3plZmllQHplZmllLm5ldDAgFw0yMjEwMTIwMzM3MDlaGA8yMTIy
|
MBwGCSqGSIb3DQEJARYPemVmaWVAemVmaWUubmV0MCAXDTIyMTAxMzAwNTIwMFoY
|
||||||
MDkxODAzMzcwOVowgYIxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEXMBUGA1UE
|
DzIxMjIwOTE5MDA1MjAwWjB/MQswCQYDVQQGEwJVUzERMA8GA1UECAwITmV3IFlv
|
||||||
CgwObWluaXNydiB1c2VuZXQxFzAVBgNVBAsMDm1pbmlzcnYgdXNlbmV0MRcwFQYD
|
cmsxFzAVBgNVBAoMDlplZmllIE5ldHdvcmtzMRAwDgYDVQQLDAdtaW5pc3J2MRIw
|
||||||
VQQDDA5taW5pc3J2IHVzZW5ldDEbMBkGCSqGSIb3DQEJARYMdXNlckBtaW5pc3J2
|
EAYDVQQDDAlsb2NhbGhvc3QxHjAcBgkqhkiG9w0BCQEWD3plZmllQHplZmllLm5l
|
||||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3lH9XWgXr1m8rLPS2gDV
|
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN5R/V1oF69ZvKyz0toA
|
||||||
/b5vUFSRiK+2JViVJq8CpLYSKqEoI1l2t4Ui4gwejy/SemKvdXFfHDBUEzb4M9Cy
|
1f2+b1BUkYivtiVYlSavAqS2EiqhKCNZdreFIuIMHo8v0npir3VxXxwwVBM2+DPQ
|
||||||
nTzBQK72cuJ1hgEyXiqVFEA2Z3mLq5DQSstx5I+/8p+QN5V93reusq9ALEGqEWI4
|
sp08wUCu9nLidYYBMl4qlRRANmd5i6uQ0ErLceSPv/KfkDeVfd63rrKvQCxBqhFi
|
||||||
j9kj5vGQr4/t8Ce0onflpsoNDIng1uUBv4BRe/Gj4ewJpfwbKjHxxssUauQ0gJg9
|
OI/ZI+bxkK+P7fAntKJ35abKDQyJ4NblAb+AUXvxo+HsCaX8Gyox8cbLFGrkNICY
|
||||||
71hy5jz306G5j+8EtOSQtcrLKcbuctoZhzf240aD9IjRlZwAQLWrS5FUHl53dfsF
|
Pe9YcuY899OhuY/vBLTkkLXKyynG7nLaGYc39uNGg/SI0ZWcAEC1q0uRVB5ed3X7
|
||||||
+kiU/rTDEuLx5fsMA0PKhEn+85IXlEiKWas8zptecAxhGaxRv5ndaNzw1EFkIL/l
|
BfpIlP60wxLi8eX7DANDyoRJ/vOSF5RIilmrPM6bXnAMYRmsUb+Z3Wjc8NRBZCC/
|
||||||
rQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBEzoRbk8D0a/ETOtQtnGpFFpMkxNkx
|
5a0CAwEAAaMTMBEwDwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOCAQEA
|
||||||
b015xPLpQEnQ3/CWs8jUTJiLQdgL7BkmDx2CGVbONKYMr9YO3kzCn+wAiX1FD+NP
|
nFPOU9HRjf/i5r8qS8VodNbZRVD0+aemdJobdvmlBbNn+Uh2k4sYcBse9dI2ZGbB
|
||||||
9CMRj1XEkjxoImYv75rmyKtspNMFq9r/PiLwr0kRmAASnbYn5+15D68FTyxIw/zJ
|
5Z0sxAAJXdynVqzrhIQzZUDsZFi1mBI8rpo6hGdL7QU2aepiDDb4dBpt3Xc8XcmT
|
||||||
7M0jZmf/hW+QT1WVlvO31gwyGcWQFvJctYMjImtAOlZE6LJQI5T4Ld10L1EQyj2q
|
SeXV5sPTZC4wT8t/IJh6wAynPKmBl1BveTtml4BHiNS2YKYK3LrTkpxRhoAiBatf
|
||||||
l9XVM1HrggecgaSsdMxGIi02XZ/LV3gKLuTp7KJ/8YcjThQVOVS4wycmuGF0I71t
|
km4+UiL/6nskBhLuKkLLYTgA1VwrbnzSMjGWkJ8F9E9xsXrcK29eyCYhKJXETO5T
|
||||||
IpZVAjDxH/pzL79uyW8oEzkhF4H0QDA5I2cd4h6kGPeOXH76JvdhlQ5Q
|
Npdk7Hl8qbbe8/a99XRxZzi/rcf5VjnQ3CmxE/+jV99efhrCyc1l0EwS04qfjUhA
|
||||||
|
mRVCPS3bpgPbKkCHe7TGXw==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
@@ -9,11 +9,13 @@ class WTVNewsServer {
|
|||||||
using_auth = false;
|
using_auth = false;
|
||||||
local_server = null;
|
local_server = null;
|
||||||
data_path = null;
|
data_path = null;
|
||||||
|
featuredGroups = null
|
||||||
|
|
||||||
constructor(minisrv_config, local_server_port, using_auth = false, username = null, password = null) {
|
constructor(minisrv_config, local_server_port, using_auth = false, username = null, password = null) {
|
||||||
this.minisrv_config = minisrv_config;
|
this.minisrv_config = minisrv_config;
|
||||||
const { WTVShared } = require("./WTVShared.js");
|
const { WTVShared } = require("./WTVShared.js");
|
||||||
this.wtvshared = new WTVShared(minisrv_config);
|
this.wtvshared = new WTVShared(minisrv_config);
|
||||||
|
this.featuredGroups = minisrv_config.services['wtv-news'].featuredGroups;
|
||||||
const nntp_server = require('nntp-server');
|
const nntp_server = require('nntp-server');
|
||||||
var nntp_statuses = require('nntp-server/lib/status');
|
var nntp_statuses = require('nntp-server/lib/status');
|
||||||
|
|
||||||
@@ -49,6 +51,10 @@ class WTVNewsServer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_getGroups: function (session) {
|
||||||
|
return self.getGroups();
|
||||||
|
},
|
||||||
_getLast: function (session) {
|
_getLast: function (session) {
|
||||||
if (!session.group.name) return nntp_statuses._412_GRP_NOT_SLCTD;
|
if (!session.group.name) return nntp_statuses._412_GRP_NOT_SLCTD;
|
||||||
if (!session.group.current_article) return nntp_statuses._420_ARTICLE_NOT_SLCTD;
|
if (!session.group.current_article) return nntp_statuses._420_ARTICLE_NOT_SLCTD;
|
||||||
@@ -87,11 +93,25 @@ class WTVNewsServer {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_buildHeaderField: function (session, message, field) {
|
_buildHeaderField: function (session, message, field) {
|
||||||
|
console.log(message,field);
|
||||||
|
if (field.indexOf(':') > 0) field = field.replace(/\:/g, '');
|
||||||
var search = self.getHeader(message, field);
|
var search = self.getHeader(message, field);
|
||||||
if (search) return message.headers[search];
|
if (search) return search;
|
||||||
else return null;
|
else return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_getOverviewFmt: function (session) {
|
||||||
|
var headers = [
|
||||||
|
"Subject:",
|
||||||
|
"From:",
|
||||||
|
"Date:",
|
||||||
|
"Message-ID:",
|
||||||
|
"References:",
|
||||||
|
":bytes",
|
||||||
|
":lines"
|
||||||
|
]
|
||||||
|
return headers;
|
||||||
|
},
|
||||||
_getArticle: function (session, message_id) {
|
_getArticle: function (session, message_id) {
|
||||||
// getArticle
|
// getArticle
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@@ -109,7 +129,7 @@ class WTVNewsServer {
|
|||||||
var res = self.listGroup(session.group.name, first, last)
|
var res = self.listGroup(session.group.name, first, last)
|
||||||
if (res.failed) return false;
|
if (res.failed) return false;
|
||||||
session.group = res.group_data;
|
session.group = res.group_data;
|
||||||
return res.articleNumbers;
|
return res.articles;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -128,9 +148,13 @@ class WTVNewsServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getHeader(message, header) {
|
getHeader(message, header) {
|
||||||
var search = Object.keys(message.headers).find(e => (e.toLowerCase() == header.toLowerCase()));
|
try {
|
||||||
if (search) return message.headers[search];
|
var search = Object.keys(message.headers).find(e => (e.toLowerCase() == header.toLowerCase()));
|
||||||
return null;
|
if (search) return message.headers[search];
|
||||||
|
return null;
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createDataStore() {
|
createDataStore() {
|
||||||
@@ -204,6 +228,7 @@ class WTVNewsServer {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
selectGroup(group) {
|
selectGroup(group) {
|
||||||
var g = this.getGroupPath(group);
|
var g = this.getGroupPath(group);
|
||||||
var out = {
|
var out = {
|
||||||
@@ -212,6 +237,14 @@ class WTVNewsServer {
|
|||||||
max_index: 0,
|
max_index: 0,
|
||||||
name: group
|
name: group
|
||||||
}
|
}
|
||||||
|
if (this.featuredGroups) {
|
||||||
|
Object.keys(this.featuredGroups).forEach((k) => {
|
||||||
|
if (group == this.featuredGroups[k].group) {
|
||||||
|
out.wildmat = 'y';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
this.fs.readdirSync(g).forEach(file => {
|
this.fs.readdirSync(g).forEach(file => {
|
||||||
var articleNumber = parseInt(file.split('.')[0]);
|
var articleNumber = parseInt(file.split('.')[0]);
|
||||||
@@ -228,6 +261,15 @@ class WTVNewsServer {
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getGroups() {
|
||||||
|
var groups = [];
|
||||||
|
this.fs.readdirSync(this.data_path).forEach(file => {
|
||||||
|
console.log(file);
|
||||||
|
if (this.fs.lstatSync(this.data_path + this.path.sep + file).isDirectory()) groups.push(this.selectGroup(file));
|
||||||
|
});
|
||||||
|
return groups;
|
||||||
|
}
|
||||||
|
|
||||||
getLastArticle(group, current) {
|
getLastArticle(group, current) {
|
||||||
var g = this.getGroupPath(group);
|
var g = this.getGroupPath(group);
|
||||||
var res = null;
|
var res = null;
|
||||||
@@ -285,7 +327,7 @@ class WTVNewsServer {
|
|||||||
max_index: 0,
|
max_index: 0,
|
||||||
name: group
|
name: group
|
||||||
}
|
}
|
||||||
var articleNumbers = [];
|
var articles = [];
|
||||||
try {
|
try {
|
||||||
this.fs.readdirSync(g).forEach(file => {
|
this.fs.readdirSync(g).forEach(file => {
|
||||||
var articleNumber = parseInt(file.split('.')[0]);
|
var articleNumber = parseInt(file.split('.')[0]);
|
||||||
@@ -295,16 +337,17 @@ class WTVNewsServer {
|
|||||||
else if (articleNumber < out.min_index) out.min_index = articleNumber;
|
else if (articleNumber < out.min_index) out.min_index = articleNumber;
|
||||||
|
|
||||||
if (articleNumber > out.max_index) out.max_index = articleNumber;
|
if (articleNumber > out.max_index) out.max_index = articleNumber;
|
||||||
articleNumbers.push({ index: articleNumber });
|
articles.push(this.getArticle(group, articleNumber));
|
||||||
out.total++;
|
out.total++;
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.error(" * WTVNewsServer Error: listGroup: ", e);
|
||||||
out.failed = e;
|
out.failed = e;
|
||||||
}
|
}
|
||||||
articleNumbers.sort((a, b) => a.index - b.index)
|
articles.sort((a, b) => a.index - b.index)
|
||||||
if (out.min_index === null) out.min_index = 0;
|
if (out.min_index === null) out.min_index = 0;
|
||||||
return {
|
return {
|
||||||
articleNumbers: articleNumbers,
|
articles: articles,
|
||||||
group_data: out
|
group_data: out
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user