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