summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-02-14Add functions for copying and moving nodes.Daniil Baturin
2018-11-29Escape special characters inside value strings when converting configs to ↵Daniil Baturin
commands.
2018-09-02Add support for node renaming.Daniil Baturin
2018-06-06Use String.concat instead of reinventing it with fold.Daniil Baturin
2018-06-05Add a function for getting sorted children from a node and use it for ↵Daniil Baturin
sorting set commands.
2018-06-04Initial implementation of the commands formatter.Daniil Baturin
2018-05-23Expose missing exceptions from Config_tree in the module interface.Daniil Baturin
2018-05-23Render valueless nodes correctly.Daniil Baturin
The canonical format for valueless nodes is "foo;". There are two cases: when it's known from the reference tree that a node is valueless, we should render it the canonical way. However, a valueless node is not the same as a normal node with no children, semantically, so nodes that are note valueless should be rendered as "foo {}". If the reference tree is not present, resort to rendering all nodes without values as if they were normal nodes with no children rather than as if they were valueless. The parser is unaware of the distinction, so there are no implications for it.
2018-05-22Remove a leftover debug print.Daniil Baturin
2018-05-22Send a response to the client if error occurs.Daniil Baturin
2018-05-21Get the show_config operation to work correctly.Daniil Baturin
2018-02-18Do not quote values that don't need quoting in Config_tree.renderDaniil Baturin
i.e. if they don't contain whitespace or characters of special significance to the parser (;[]{}#).
2018-02-17Add Config_tree.render_at_level function for correct rendering of configs ↵Daniil Baturin
for human consumption. The idea of the correct (for subsequent parsing) and familiar for all other purposes rendering: * When rendering the entire config, do not render the invisible "root" node, only render its children. * When rendering config at specified path, do not include any nodes that are within the path (e.g. if path "system login" exists, "show system" request output should start with "login {", not "system { login { ...").
2018-02-16Delete the old socket file if it exists.Daniil Baturin
Since there's no REUSEADDR semantic for UNIX domain sockets, that's best we can do.
2018-02-16Implement config reading functions and a minimal command line client for ↵Daniil Baturin
using them. Yes, I hate oversized commits too, but this is hard to avoid sometimes. Adjustments to the Session functions logic required to make it work: Do not try to validate the path. The validation function is geared towards validating _set_ paths, so when path lacks a value, it doesn't work right. We assume that the path has been through set at some point, so if a path currently exists in the config tree, it is also a valid path that can be used for Reference_tree.is_leaf etc.
2018-02-16Add logging of interface definition file loading.Daniil Baturin
Move the high level load_interface_definitions function from Reference_tree to Startup.
2018-02-12Add client support for the config read functions.Daniil Baturin
2018-02-12Add support for the idempotent config read functions to vyconfd.Daniil Baturin
2018-02-12Revert "Fix build with new Toml module version."Daniil Baturin
Seems lenses are back. This reverts commit 8938e627c04c01f8f30a854be6903a9abcd2fa5b.
2018-02-11Expose the list_children function in the Session module interface.Daniil Baturin
2018-02-11Rename Util.string_of_path to string_of_list since it can be used for any lists,Daniil Baturin
not just config tree paths. Add analogous function for converting a list of strings to JSON.
2018-02-11Update the Vyconf_client module for the protobuf change.Daniil Baturin
2018-02-11Add output format option (plain or JSON) to the config data reading and op ↵Daniil Baturin
mode functions. Re-generate the protobuf-derived modules. NB: Newer versions of ocaml-protoc moved types to a separate module, needs to be accounted for in other files.
2018-01-26Use absolute path for the vyconfd config file option rather than relative to ↵Daniil Baturin
basepath.
2018-01-26Fix build with new Toml module version.Daniil Baturin
I have no idea where TomlLenses module is gone but frankly the whole thing is a lot less pretty without it.
2017-12-13Fix message encoding in Vyconf_client.Daniil Baturin
2017-12-13Add debug logging of protobuf messages.Daniil Baturin
2017-12-13Handle malformed protobuf messages correctly.Daniil Baturin
2017-12-12Add config load upon startup.Daniil Baturin
2017-12-12Rename the Startup.load_config to load_daemon_config to avoid ambiguity with ↵Daniil Baturin
the appliance config.
2017-12-12Lwt is luckily past 3.0 now, remove stuff that needed versioned functions.Daniil Baturin
2017-09-19T387: prevent command injection in VyConf external validator executionTaniadz
2017-09-18T387: prevent command injection in VyConf external validator executionTaniadz
2017-09-13Prevent command injection in VyConf external validator executionTaniadz
2017-09-12Merge branch 'master' of github.com:vyos/vyconfDaniil Baturin
2017-04-03T255: Add curly config renderer (#8)Shon Feder
* Add stand-alone config_tree renderer * Add tests for stand-alone config_tree renderer * Add renderer with reference tree * Add tests for Config_tree renderer with reftree * Update config files * Add refactoring functions and correct tests
2017-02-18Make config file path relative to basepath.Daniil Baturin
2017-02-09Add basepath as a command line option.Daniil Baturin
2017-02-09Revert "Add basepath option to the vyconfd config."Daniil Baturin
Basepath is better be a command line option, since when it's really needed, having it in the config is pretty much useless. This reverts commit 377de9472716266bb932813a8f7a7ba9aa1630fb.
2017-01-23Add basepath option to the vyconfd config.Daniil Baturin
Right now the primary motivation is ease of testing without installing any appliance on a real system, but in real appliances, this may be handy for those who want things in /opt, even if I'm not a fan of /opt
2017-01-20Use BatOption.defalt instead of homegrown equivalent.Daniil Baturin
If we are going to use batteries for numeric_compare, why not take advantage of the rest.
2017-01-19Add basic session setup/teardown functionality to vyconfd.Daniil Baturin
2017-01-17T231: Add a function for loading interface definitions from a directory (#5)Shon Feder
* T231: Load directory of interface definitions * T231: Add ounit package to merlin config * T231: Add tests for loading dir of definitions * squash! T231: Load directory of interface definitions * squash! T231: Add tests for loading dir of definitions
2017-01-16Add a function for making secure session tokens.Daniil Baturin
Right now it uses a SHA-1 sum of 30 random bits. I hope that's secure enough.
2017-01-16Add client_app and user fields to session data.Daniil Baturin
I wonder if the user field should be an UID rather than name.
2017-01-16Remove the assumptions about validator argument being mandatory.Daniil Baturin
2017-01-16Use the new Util.substitute_default in Vyconf_config.Daniil Baturin
2017-01-16Add a trivial 'a option -> 'a -> 'a function for substituting something for ↵Daniil Baturin
a default.
2017-01-16Update reference tree loader to match the schema.Daniil Baturin
2017-01-15Add functionality for socket communication.Daniil Baturin
The Message module contains read and write functions that take care of the wire protocol, which sends a 4 byte length header before every message. They take a bytes buffer and don't care about its contents. The Vyconf_client module has high level functions for interfacing with vyconfd. Functions for creating a socket and creating a server loop are in Startup. The rest is, for now at least, right in vyconfd. Notes: Message.read/write probably should be wrapped in Lwt_io.atomic We need to find out if it's safe to reuse Pbrt.Encoder.t or we really should create it every time.