Repository navigation
Releases: Suremise/dialect
Release list
Dialect 0.1.0
Dialect 0.1.0 for Windows (x64): it translates network device configs between vendor dialects, offline.
Always review converted configuration before applying it to a device. Dialect reports what it couldn't convert,
but you are responsible for what you deploy.
Downloads
None needs anything else installed: no Node.js, no runtime.
| File | What it is |
|---|---|
Dialect_0.1.0_x64-setup.exe |
The one most people want. The desktop app and the dialect command, for you alone (no admin rights). It needs internet only on the rare PC without Microsoft WebView2. |
Dialect_0.1.0_x64-offline-setup.exe |
The same, for a PC with no internet: Microsoft's WebView2 installer is inside, so it's much bigger. |
dialect-cli.exe |
The dialect command on its own: one file, nothing to install. Rename it dialect.exe to type dialect. |
dialect.html |
The app as one web page. It runs offline in Edge, Chrome or another modern browser: open it from any folder or a USB stick, with no network. |
LICENSE, THIRD_PARTY_NOTICES.md |
Dialect's MIT License, and the licenses of the open-source software it includes. |
The installers and dialect-cli.exe are unsigned: Dialect has no code-signing certificate yet, so Windows
SmartScreen warns about them. Choose More info → Run anyway. Dialect doesn't update itself or check for new
versions: look here, or use Help → Releases on GitHub.
What's new
The first release of Dialect: Junos display set, and conversion between Junos, Cisco IOS / IOS-XE, NX-OS and IOS-XR,
in a desktop app for Windows, an offline web page and a command-line tool. Always review converted configuration
before applying it to a device.
Getting Dialect
- Releases are on GitHub: github.com/Suremise/dialect/releases, and
Help → Releases on GitHub opens the page. Dialect doesn't update itself or check for new versions yet. - Review before applying: About and
dialect --helpsay it plainly. Dialect reports what it couldn't convert, but
you are responsible for what you deploy. - Nothing to install first. The
dialectcommand is now also a standalonedialect.exewith its own runtime: no
Node.js needed. The desktop installer installs it beside the app and asks to add it to your PATH (yes by default);
uninstalling removes both. It's also a download of its own,dialect-cli.exe. - Two installers: the normal one, which installs Microsoft WebView2 if your PC lacks it (rare; that needs
internet), and an offline one with WebView2's installer inside, for a PC with no internet.
The window
- The Dialect icon everywhere in the desktop app: on the installer and in Add/Remove Programs, on the window and
the taskbar, and in the notification area while Dialect runs. Click the tray icon to bring the window back, or
right-click it for Show Dialect, New tab and Quit. Quit asks first while output is unsaved, as closing the window
does, and closing the window still quits Dialect. Where Windows has no notification area, Dialect runs without the
tray icon. - Tabs and a menu bar, the same in the desktop app and the web build. Open several conversions at once, each in
its own tab (File → New Tab, Ctrl+T, or +, then Display set or Convert), with its own source, output, interface
names and undo history. A dot marks a tab whose output isn't saved, and closing it asks first. The Docs pages open in
tabs of their own, beside your conversions. - The menus: File, Edit, View (the theme), Window (every open tab, the current one ticked) and Help, all usable
from the keyboard (Alt or F10, the arrow keys, Enter, Esc). Exit is in the desktop app's File menu. In a browser,
which keeps Ctrl+T, Ctrl+W and Ctrl+Tab for itself, the web build uses Alt+T, Alt+W and Alt+PgDn. - Tabs come back after a restart with their file names, but never your configs: Dialect doesn't keep configs
anywhere. Reopen the file from the tab. - Nothing unsaved is lost on the way out: File → Exit, the desktop window's ✕ and Alt+F4 ask first while a tab's
output is unsaved, and the web build has the browser ask before its tab closes or reloads. - Controls stand out: buttons, tabs and menus have a visible edge, the current tab is marked in violet, and the
keyboard focus shows.
Convert
- No message repeats a secret, even by chance: a message or a reason that would hold a secret of the config (an
SNMP community or a key that happens to be one of its words, such as a community namedcomein "which comes with
filters") is withheld instead, keeping its line: "This message is withheld, as it would repeat a value of this
configuration." This covers every platform, in Convert, Display set, the app and the command line. - A warning about the converted config is at the right line: a warning the target raises about a line it wrote
(a term written asdenywhere the source rejected, a final permit added to a route map) was shown at that line
number in the source. It is now at the source statement it came from, and gives its line of the output too: after
the message on the command line, and in the app beside the problem, marked in the output's gutter. - IOS-XR access list remarks convert: the remarks before an entry are kept as its description, and converting to
IOS-XR writes one back as a remark just before its entry, instead of listing it as not written. - An access list remark converting to Junos says why it isn't written: Junos filters keep no description per term,
so the remark is listed as not written, and the entry it describes still converts. - A filter whose last entry can't be converted is no longer turned into one that drops everything: an entry left
out goes alone only when that changes nothing (it only counts, or it is the last and denies, as the filter's end
does). Otherwise the whole filter is listed as not converted, and so is every interface that applies it. - Cisco IOS / IOS-XE and NX-OS bundles (port-channels) convert: each member's
channel-groupwith its LACP mode
(active, passive or on), the Port-channel's minimum links, and on NX-OS thefeature lacpLACP needs. Converting a
Junosae0with its members givesPort-channel1(port-channel1on NX-OS) with the same members and mode, once
you take the suggested name. Each member is written to match its bundle (its switch port settings and MTU, and on
NX-OSno switchportfor a routed bundle), as the device needs to bundle it. Members of one bundle with different
modes stop the conversion with an error, and PAgP isn't converted. - Link aggregation converts for Junos and IOS-XR: which aggregate each member link is in, the LACP mode (active,
passive or none) and minimum links, from Junos802.3adandaggregated-ether-optionsand IOS-XRbundle idand
bundle minimum-active links, both ways. Converting to Junos also writes thechassis aggregated-devicesline Junos
needs for itsaeinterfaces. - Every line not converted says why, from every platform: a line Dialect doesn't read at all is no longer shown as
a bare "not converted", but with what it is and that it comes later ("logical systems come later", "IS-IS comes
later", "SNMP traps come later", "QoS (class, policy and table maps) comes later"). - Cisco IOS / IOS-XE VLANs, switch ports, VLAN interfaces, OSPF and BGP convert: VLANs and their names, access and
trunk ports (allowed VLANs with add, remove and except, a native VLAN), VLAN interfaces, OSPF enabled byip ospf … areaornetworkstatements (areas, stub and NSSA, authentication, cost, network type, passive, timers) and BGP
(neighbors, peer groups, update source, eBGP multihop, IPv4 and IPv6 address families with their route maps), in
the global table and in VRFs. Converting OSPF enabled bynetworkstatements writes an exact one for each
interface, with a warning, and an eBGP neighbor with no route map warns where the source (IOS-XR) exchanged nothing. - Keys and passwords are asked for, never carried over: an OSPF key or a BGP password is never carried over, nor
written as a placeholder: the converted config leaves it out until you give it. - Give keys, passwords and other answers: the app's new Needs input panel, beside the interfaces, lists what a
conversion needs besides names (an OSPF key, a BGP password, an IOS-XR eBGP neighbor's route policy, a Junos VRF's
route distinguisher or route targets) by line, with a field for each; keys and passwords are masked unless you show
them, and kept only while the tab is open, never stored. On the command line,dialect convert --answers <file>
(or-for stdin) reads them from an answers file, never from the command line, and--write-answers <file>
writes everything asked to fill in. Each unanswered item's message now says what's needed, and the summary counts
interfaces and other items apart. - Warnings about a converted field give their line: a target's warning such as IOS-XR's about an eBGP neighbor
with no policy is shown at the statement it's about, where it had no line before. - IOS-XE messages no longer quote the config: a statement that isn't converted says which word, by its position, or
which line, never the word itself, so a password or community reused there doesn't show up in a warning or log. - A VRF's BGP neighbor can inherit a global template on NX-OS and IOS-XR:
inherit peer Tanduse neighbor-group Gin a VRF now convert with the template's settings, where they were listed as not converted.
Converting to NX-OS or IOS-XR writes a VRF's group once as the global template when it is the same as the global one
(or every other VRF's), and lists one that differs. - Cisco IOS / IOS-XE and NX-OS VRF import and export maps convert with the VRF's route targets, as the policies
they name. A Cisco map filters what the route tar...