Compare commits

..

No commits in common. "0ac13808c549137b962c642b3ccb283cf68c4dba" and "196ee61fd9a1f95c07b89a17404028b8797cd0d0" have entirely different histories.

6 changed files with 88 additions and 335 deletions

View file

@ -6236,7 +6236,7 @@ var lib_plankton;
const http_response = await lib_plankton.http.call(http_request); const http_response = await lib_plankton.http.call(http_request);
const output_wrapped = lib_plankton.json.decode(http_response.body.toString()); const output_wrapped = lib_plankton.json.decode(http_response.body.toString());
if (!output_wrapped.ok) { if (!output_wrapped.ok) {
return Promise.reject(JSON.stringify(output_wrapped)); return Promise.reject(new Error());
} }
else { else {
return Promise.resolve(output_wrapped.result); return Promise.resolve(output_wrapped.result);

View file

@ -136,7 +136,6 @@ namespace _munin.conf
smtp_port : int; smtp_port : int;
smtp_username : string; smtp_username : string;
smtp_password : string; smtp_password : string;
sender : string;
receivers : Array<string>; receivers : Array<string>;
/** /**
* in hours * in hours
@ -172,71 +171,7 @@ namespace _munin.conf
/** /**
*/ */
type type_conf_v4 = { export type type_conf = type_conf_v3;
sources : Array<
(
{
kind : "ical_feed";
data : {
url : string;
filtration : {
category_whitelist : (null | Array<string>);
category_blacklist : (null | Array<string>);
title_whitelist : (null | Array<string>);
title_blacklist : (null | Array<string>);
}
}
}
)
>;
targets : Array<
(
{
kind : "email";
data : {
smtp_host : string;
smtp_port : int;
smtp_username : string;
smtp_password : string;
sender : string;
receivers : Array<string>;
hide_tags : boolean;
/**
* in hours
*/
reminders : Array<int>;
}
}
|
{
kind : "telegram_bot";
data : {
bot_token : string;
chat_id : int;
hide_tags : boolean;
/**
* in hours
*/
reminders : Array<int>;
}
}
)
>;
settings : {
interval : float;
};
labels : {
head : string;
title : string;
time : string;
location : string;
};
};
/**
*/
export type type_conf = type_conf_v4;
/** /**
@ -318,84 +253,6 @@ namespace _munin.conf
} }
/**
*/
function convert_from_v3(
conf_v3 : type_conf_v3
) : type_conf_v4
{
return {
"sources": conf_v3.sources.map(
source => {
switch (source.kind) {
case "ical_feed": {
return {
"kind": "ical_feed",
"data": {
"url": source.data.url,
"filtration": {
"category_whitelist": null,
"category_blacklist": source.data.filtration.category_blacklist,
"title_whitelist": null,
"title_blacklist": source.data.filtration.category_blacklist,
},
}
};
break;
}
default: {
// return source;
throw (new Error("unhandled source kind: " + source.kind));
break;
}
}
}
),
"targets": conf_v3.targets.map(
target => {
switch (target.kind) {
case "email": {
return {
"kind": "email",
"data": {
"smtp_host": target.data.smtp_host,
"smtp_port": target.data.smtp_port,
"smtp_username": target.data.smtp_username,
"smtp_password": target.data.smtp_password,
"sender": target.data.sender,
"receivers": target.data.receivers,
"hide_tags": false,
"reminders": target.data.reminders,
},
};
break;
}
case "telegram_bot": {
return {
"kind": "telegram_bot",
"data": {
"bot_token": target.data.bot_token,
"chat_id": target.data.chat_id,
"hide_tags": false,
"reminders": target.data.reminders,
},
};
break;
}
default: {
// return target;
throw (new Error("unhandled target kind: " + String(target)));
break;
}
}
}
),
"settings": conf_v3.settings,
"labels": conf_v3.labels,
};
}
/** /**
*/ */
function schema_source_kalender_digital( function schema_source_kalender_digital(
@ -423,7 +280,7 @@ namespace _munin.conf
"type": "object", "type": "object",
"properties": { "properties": {
"category_blacklist": { "category_blacklist": {
"nullable": true, "nullable": false,
"type": "array", "type": "array",
"items": { "items": {
"nullable": false, "nullable": false,
@ -432,7 +289,7 @@ namespace _munin.conf
"default": [], "default": [],
}, },
"title_blacklist": { "title_blacklist": {
"nullable": true, "nullable": false,
"type": "array", "type": "array",
"items": { "items": {
"nullable": false, "nullable": false,
@ -488,41 +345,23 @@ namespace _munin.conf
"nullable": false, "nullable": false,
"type": "object", "type": "object",
"properties": { "properties": {
"category_whitelist": {
"nullable": true,
"type": "array",
"items": {
"nullable": false,
"type": "string",
},
"default": null,
},
"category_blacklist": { "category_blacklist": {
"nullable": true, "nullable": false,
"type": "array", "type": "array",
"items": { "items": {
"nullable": false, "nullable": false,
"type": "string", "type": "string",
}, },
"default": null, "default": [],
},
"title_whitelist": {
"nullable": true,
"type": "array",
"items": {
"nullable": false,
"type": "string",
},
"default": null,
}, },
"title_blacklist": { "title_blacklist": {
"nullable": true, "nullable": false,
"type": "array", "type": "array",
"items": { "items": {
"nullable": false, "nullable": false,
"type": "string", "type": "string",
}, },
"default": null, "default": [],
}, },
}, },
"additionalProperties": false, "additionalProperties": false,
@ -594,11 +433,6 @@ namespace _munin.conf
"type": "string", "type": "string",
} }
}, },
"hide_tags": {
"nullable": false,
"type": "boolean",
"default": false,
},
"reminders": { "reminders": {
"nullable": false, "nullable": false,
"type": "array", "type": "array",
@ -693,11 +527,6 @@ namespace _munin.conf
"nullable": false, "nullable": false,
"type": "integer", "type": "integer",
}, },
"hide_tags": {
"nullable": false,
"type": "boolean",
"default": false,
},
"reminders": { "reminders": {
"nullable": false, "nullable": false,
"type": "array", "type": "array",
@ -823,8 +652,8 @@ namespace _munin.conf
/** /**
*/ */
export function schema( function schema(
version : string = "4" version : string
) : lib_plankton.conf.type_schema ) : lib_plankton.conf.type_schema
{ {
switch (version) { switch (version) {
@ -850,9 +679,9 @@ namespace _munin.conf
}; };
break; break;
} }
default:
case "2": case "2":
case "3": case "3": {
case "4": {
return { return {
"nullable": false, "nullable": false,
"type": "object", "type": "object",
@ -886,37 +715,27 @@ namespace _munin.conf
{ {
"1": {"target": "2", "function": convert_from_v1}, "1": {"target": "2", "function": convert_from_v1},
"2": {"target": "3", "function": convert_from_v2}, "2": {"target": "3", "function": convert_from_v2},
"3": {"target": "4", "function": convert_from_v3}, "3": null,
"4": null,
} }
); );
/*
switch (conf_raw.version) { switch (conf_raw.version) {
case "1": { case "1": {
const conf_v1 : type_conf_v1 = (conf_raw.content as type_conf_v1); const conf_v1 : type_conf_v1 = (conf_raw.content as type_conf_v1);
const conf_v2 : type_conf_v2 = convert_from_v1(conf_v1); const conf_v2 : type_conf_v2 = convert_from_v1(conf_v1);
const conf_v3 : type_conf_v3 = convert_from_v2(conf_v2); const conf_v3 : type_conf_v3 = convert_from_v2(conf_v2);
const conf_v4 : type_conf_v4 = convert_from_v3(conf_v3); return conf_v3;
return conf_v4;
break; break;
} }
case "2": { case "2": {
const conf_v2 : type_conf_v2 = (conf_raw.content as type_conf_v2); const conf_v2 : type_conf_v2 = (conf_raw.content as type_conf_v2);
const conf_v3 : type_conf_v3 = convert_from_v2(conf_v2); const conf_v3 : type_conf_v3 = convert_from_v2(conf_v2);
const conf_v4 : type_conf_v4 = convert_from_v3(conf_v3); return conf_v3;
return conf_v4;
break; break;
} }
case "3": { case "3": {
const conf_v3 : type_conf_v3 = (conf_raw.content as type_conf_v3); const conf_v3 : type_conf_v3 = (conf_raw.content as type_conf_v3);
const conf_v4 : type_conf_v4 = convert_from_v3(conf_v3); return conf_v3;
return conf_v4;
break;
}
case "4": {
const conf_v4 : type_conf_v4 = (conf_raw.content as type_conf_v4);
return conf_v4;
break; break;
} }
default: { default: {
@ -924,8 +743,6 @@ namespace _munin.conf
break; break;
} }
} }
*/
return (conf_raw.content as type_conf_v4);
} }
} }

View file

@ -88,7 +88,7 @@ namespace _munin
} }
else { else {
lib_plankton.log._info( lib_plankton.log._info(
"munin.remind.do", "munin.remind",
{ {
"details": { "details": {
"event": event, "event": event,
@ -100,20 +100,8 @@ namespace _munin
// do nothing // do nothing
} }
else { else {
try {
await target.send(conf.labels, event); await target.send(conf.labels, event);
} }
catch (error) {
lib_plankton.log.error(
"munin.remind.error",
{
"details": {
"message": String(error),
}
}
);
}
}
} }
} }
} }
@ -188,15 +176,6 @@ namespace _munin
"info": "path to configuration file", "info": "path to configuration file",
"name": "conf-path", "name": "conf-path",
}), }),
"conf_schema": lib_plankton.args.class_argument.volatile({
"indicators_long": ["conf-schema"],
"indicators_short": ["s"],
"type": lib_plankton.args.enum_type.string,
"mode": lib_plankton.args.enum_mode.replace,
"default": "",
"info": "only print the configuration schema in a specific version (latest version via argument '_')",
"name": "conf-schema",
}),
"conf_expose": lib_plankton.args.class_argument.volatile({ "conf_expose": lib_plankton.args.class_argument.volatile({
"indicators_long": ["conf-expose"], "indicators_long": ["conf-expose"],
"indicators_short": ["e"], "indicators_short": ["e"],
@ -208,11 +187,11 @@ namespace _munin
}), }),
"single_run": lib_plankton.args.class_argument.volatile({ "single_run": lib_plankton.args.class_argument.volatile({
"indicators_long": ["single-run"], "indicators_long": ["single-run"],
"indicators_short": ["x"], "indicators_short": ["s"],
"type": lib_plankton.args.enum_type.boolean, "type": lib_plankton.args.enum_type.boolean,
"mode": lib_plankton.args.enum_mode.replace, "mode": lib_plankton.args.enum_mode.replace,
"default": false, "default": false,
"info": "whether to only execute one iteration at run", "info": "whether to only execute on iteration at run",
"name": "single-run", "name": "single-run",
}), }),
"verbosity": lib_plankton.args.class_argument.volatile({ "verbosity": lib_plankton.args.class_argument.volatile({
@ -260,19 +239,6 @@ namespace _munin
) )
); );
} }
else {
if (args.conf_schema !== "") {
process.stdout.write(
lib_plankton.json.encode(
_munin.conf.schema((args.conf_schema === "_") ? undefined : args.conf_schema),
{
"formatted": true,
}
)
+
"\n"
);
}
else { else {
// init // init
const conf : _munin.conf.type_conf = await _munin.conf.load(args.conf_path); const conf : _munin.conf.type_conf = await _munin.conf.load(args.conf_path);
@ -339,7 +305,6 @@ namespace _munin
} }
} }
} }
}
return Promise.resolve<void>(undefined); return Promise.resolve<void>(undefined);
} }

View file

@ -26,10 +26,8 @@ namespace _munin.sources.ical_feed
export type type_parameters = { export type type_parameters = {
url : string; url : string;
filtration : { filtration : {
category_whitelist : (null | Array<string>); category_blacklist : Array<string>;
category_blacklist : (null | Array<string>); title_blacklist : Array<string>;
title_whitelist : (null | Array<string>);
title_blacklist : (null | Array<string>);
}; };
}; };
@ -58,50 +56,24 @@ namespace _munin.sources.ical_feed
vcalendar.vevents vcalendar.vevents
.filter( .filter(
vevent => ( vevent => (
// category whitelist // category
( (
(parameters.filtration.category_whitelist === null) vevent.categories.every(
||
vevent.categories.some(
category => ( category => (
parameters.filtration.category_whitelist ! (
.map(category_ => category_.toLowerCase())
.includes(category.toLowerCase())
)
)
)
&&
// category blacklist
(
(parameters.filtration.category_blacklist === null)
||
vevent.categories.every (
category => ! (
parameters.filtration.category_blacklist parameters.filtration.category_blacklist
.map(category_ => category_.toLowerCase()) .map(category_ => category_.toLowerCase())
.includes(category.toLowerCase()) .includes(category.toLowerCase())
) )
) )
) )
&&
// title whitelist
(
(parameters.filtration.title_whitelist === null)
||
parameters.filtration.title_whitelist.some(
title => (
vevent.summary.toLowerCase()
.includes(title.toLowerCase())
)
)
) )
&& &&
// title blacklist // title
( (
(parameters.filtration.title_blacklist === null)
||
parameters.filtration.title_blacklist.every( parameters.filtration.title_blacklist.every(
title => ! ( title => (
! (
vevent.summary.toLowerCase() vevent.summary.toLowerCase()
.includes(title.toLowerCase()) .includes(title.toLowerCase())
) )
@ -109,6 +81,7 @@ namespace _munin.sources.ical_feed
) )
) )
) )
)
.map( .map(
vevent => { vevent => {
const begin : lib_plankton.pit.type_datetime = { const begin : lib_plankton.pit.type_datetime = {

View file

@ -30,7 +30,6 @@ namespace _munin.targets.email
smtp_password : string; smtp_password : string;
sender : string; sender : string;
receivers : Array<string>; receivers : Array<string>;
hide_tags : boolean;
/** /**
* in hours * in hours
*/ */
@ -77,7 +76,7 @@ namespace _munin.targets.email
{ {
"title_label": labels.title.toUpperCase(), "title_label": labels.title.toUpperCase(),
"macro_tags": ( "macro_tags": (
(parameters.hide_tags || (event.tags === null)) (event.tags === null)
? ?
"" ""
: :

View file

@ -26,7 +26,6 @@ namespace _munin.targets.telegram_bot
export type type_parameters = { export type type_parameters = {
bot_token : string; bot_token : string;
chat_id : int; chat_id : int;
hide_tags : boolean;
reminders : Array<int>; reminders : Array<int>;
}; };
@ -47,7 +46,7 @@ namespace _munin.targets.telegram_bot
{ {
"head": labels.head, "head": labels.head,
"macro_tags": ( "macro_tags": (
(parameters.hide_tags || (event.tags === null)) (event.tags === null)
? ?
"" ""
: :