var minisrv_service_file = true;
async function clientConnect(client) {
response = await client.connect()
if (response.code == 200) {
return true;
}
return false;
}
async function listGroup(client, group) {
try {
return await client.listGroup(group)
} catch (e) {
console.log("WTVNews Error -", "Command: listGroup", e);
}
return null;
}
async function selectGroup(client, group) {
try {
response = await client.group(request_headers.query.group)
if (response.code == 211) {
return true;
}
return false;
} catch (e) {
console.log("WTVNews Error -", "Command: grop", e);
}
return false;
}
async function getArticle(client, articleID) {
try {
return await client.article(articleID)
} catch (e) {
console.log("WTVNews Error -", "Command: article", e);
}
return null;
}
async function getHeader(client, articleID) {
try {
return await client.head(articleID)
} catch (e) {
console.log("WTVNews Error -", "Command: head -", "Article ID: "+articleID, e);
}
return null;
}
async function quitUsenet(client) {
response = await client.quit()
if (response.code == 205) {
return true;
}
return false;
}
async function getHeaderObj(client, NGArticles) {
var messages = [];
for (var article in NGArticles) {
if (article == "getCaseInsensitiveKey") continue;
try {
var data = await getHeader(client, NGArticles[article]);
if (data.article) messages.push(data.article)
} catch (e) {
console.log(e, article);
}
}
return messages;
}
async function WebTVListGroup(client, group) {
var connected = await clientConnect(client)
if (connected) {
response = await selectGroup(client, group);
if (response) {
response = await listGroup(client, group);
if (response.code == 211) {
NGCount = response.group.number;
NGArticles = response.group.articleNumbers;
messages = await getHeaderObj(client, NGArticles);
quitUsenet(client);
headers = `200 OK
Connection: Keep-Alive
Content-Type: text/html
wtv-expire: wtv-news:/news?group=${request_headers.query.group}`
data = `
${request_headers.query.group}
|
|
|
|
|
Group: ${request_headers.query.group}
|
|
`
if (NGCount == 0) {
data += `This group has no postings`;
} else {
data += NGCount + " posting";
if (NGCount != 1)
data += "s"
}
data += `
`
if (NGCount > 0) {
Object.keys(messages).forEach(function (k) {
var message = messages[k]
var message_date = message.headers.DATE;
data += `
|
|
${(message.headers.SUBJECT) ? message.headers.SUBJECT : "(No Subject)"}
|
${message.headers.FROM}, ${message.headers.DATE}
| |
|
| `;
});
}
data += `

|
`;
sendToClient(socket, headers, data);
} else {
var errpage = wtvshared.doErrorPage("400", "No such group.");
sendToClient(socket, errpage[0], errpage[1]);
}
}
}
}
async function WebTVShowMessage(client, group, article) {
var connected = await clientConnect(client)
if (connected) {
response = await selectGroup(client, group);
if (response) {
response = await getArticle(client, article);
console.log(response);
if (response.code == 220) {
headers = `200 OK
Content-type: text/html`;
var message_colors = ssid_sessions[socket.ssid].mailstore.defaultColors;
data = `
${(response.article.headers.SUBJECT) ? wtvshared.htmlEntitize(response.article.headers.SUBJECT) : '(No subject)'}
|
|
|
|
|
|
Post
|
Group:
|
${wtvshared.htmlEntitize(response.article.headers.NEWSGROUPS)}
|
|
Date: |
${console.log(Date.parse(response.article.headers.DATE))}
${strftime("%a, %b %e, %Y, %I:%M%P", new Date(Date.parse(response.article.headers.DATE) / 1000))}
|
|
From:
| `;
// if (message.from_name != message.from_addr) {
// data += `${wtvshared.htmlEntitize(message.from_addr)} `;
// } else {
data += `${wtvshared.htmlEntitize(response.article.headers.FROM)}`;
// }
data += ` |
|
|
| |
|
|
${(response.article.headers.SUBJECT) ? wtvshared.htmlEntitize(response.article.headers.SUBJECT) : '(No subject)'}
|
|
`;
var message_body = response.article.body.join("\n");
data += `
${wtvshared.htmlEntitize(message_body, true)}
`;
data += `
`;
/*
if (message.attachments) {
message.attachments.forEach((v, k) => {
if (v) {
console.log("*****************", v['Content-Type']);
switch (v['Content-Type']) {
case "image/jpeg":
data += `}&wtv-title=Video%20Snapshot)
`;
break;
case "audio/wav":
data += `
recording.wav (wav attachment)
|
|
`;
break;
}
}
});
}
if (message.url) {
data += `Included Page: ${wtvshared.htmlEntitize(message.url_title).replace(/'/gi, "'")}`;
}
*/
data += `
|
| | |