Built in function library

From most important to least importing in my opinion:

String replacement. Both by a string needle, and a regex match.

String splitting (into an array of strings). Both by a string needle, and a regex match.

Joining strings in an array into a single string with a specified string between each array member (implicitly convert array values with “:tostr”).

Date and time manipulation functions, such as returning the difference between two dates as a “time” value, or adding/subtracting a “time” value to a date (or “num” that is treated as plus seconds), to get a new date at that offset. Also timestamp convertion, i.e. a function to convert a “num” value to a date and time from the unix epoch, and convert a date to a “num” value that is such a timestamp. Being able to output the date and time in a different format would be nice, though it should always default to RouterOS’ current format. To that particular end, it would be awesome if there are two new scripting types - date, and datetime, to complement the already existing “time” type, along with type conversion functions. Places within RouterOS that have dates and datetimes should be updated to return typed values instead of strings.

String encoding and decoding functions. Notably, a function to convert a number to a character in a charset (defaulting to ASCII, should support at minimum that and UTF-8), and vice versa. Some other commonly used encoding schemes, such as raw URL encoding/decoding, hex encoding/decoding, hex encoding with a "" (when generating RouterOS scripts) would also be great.

Array manipulation functions. Such as a function for unique values in an array, getting the key at an index (return “nothing” if there isn’t one), sorting an array by key (with an option what to do for keyless members), or by value, in either ascending or descending order, ideally with the option to specify a comparrison function.

In addition to MD5, SHA1, SHA256 and any other OpenSSL supported hashes would be nice, for the purposes of computing hashes to either be posted to a 3rd party or comparing 3rd party checksums. On a related note, encrypting, decrypting and signing data (strings and files) with certificates in the “/certificate” menu (ala PGP) would be awesome.

In addition to a random number between two values, a “random bytes” function (where you just specify the number of bytes you want) would be nice too.

1 Like