JavaFX+Jfoenix+Mikrotik RouterOS API实现RouterOS系统配置管理软件

RouterOS通用管理软件是一款参考winbox功能,基于javaFX开发的桌面软件,该软件除了实现了操作RouterOS系统常用的管理配置功能外,还新增了如记录登录历史,功能菜单配置等基础功能。系统采用分层架构,基于xKernel插件机制实现,主要分为SDK,API,Service,Persistence,Remote,Common,以及JavaFX展示层,扩展灵活。
RouterOS通用管理软件采用全新展示层技术:javaFX+CSS,带来了全新的操作体验和视觉效果,也更适合国人使用习惯,通过简单的操作界面实现了复杂的RouterOS命令配置的可视化操作。

目录

1,RouterOS 通用管理软件

  1. 系统架构及简介

  2. 系统主要类关系图

  3. 系统主要类设计思路及实现

2,打包与发布

  1. EXE4J
  2. Inno Setup

3,基本配置

4,系统部分功能截图

  1. 系统部分功能截图

一:RouterOS 通用管理软件

  1. 系统架构及简介

RouterOS通用管理软件架构图.png
  • 展示层

    基于javaFX+jfoenix(客户端组件框架)+DataFX(客户端Controller与fxml文件关联)。

  • 业务功能

    主要提供了设备发现,系统登录/退出,设备状态,接口列表,桥配置,无线,RADIUS,Mesh网络,网络,防火墙,系统,文件,工具等功能。

  • 业务接口

    定义了业务功能主要接口,并基于xKernel插件体系,开发了接口的默认实现,封装了完成业务功能的 RouterOS 命令,为后期适配RouterOS命令变化升级,提供了灵活的实现及机制。

  • 公共组件

    Mikrotik RouterOS API的Java客户端库实现,持久化组件,远程调用组件,websocket

  • 基础设施

    基于RouterOS 系统的设备,sqlite数据库,云平台

  1. 系统主要类关系图

AppStartup.png
  1. 系统主要类设计思路及实现
    • 本地设备发现

      • 设计思路

        工具与设备需要在同一网段,工具按照设备邻居发现协议通过发起多播数据套接字将长度为4的数据包以广播的方式发送出去,到多个设备客户端指定的端口(如:5678),设备指定端口(5678)收到长度为4的数据包时,设备识别为设备发现请求包,此时将自己的mac地址,IP地址,系统版本,系统平台等信息按照设备发现协议封装成数据包返回给工具指定端口(如:6789),完成设备发现与响应。

        • 设备发现协议->请求协议

          名称 类型 长度
          设备发现请求标识 byte[] 4
        • 设备发现协议->响应协议:由响应标识+响应内容组成

          响应标识

          名称 类型 长度
          设备发现响应标识 byte[] 4

          响应内容:由1个或者多个<类型字节数组[长度2]+内容长度字节数组[长度2]+内容字节数组[内容长度]>段组成

          名称 类型 长度
          类型 byte[] 2
          内容长度 byte[] 2
          内容 byte[] 内容长度
  • 连接到设备

    • 设计思路

      采用多Session设计,支持连接多个客户端设备,通过SessionFactory管理。

      Session接口定义了客户端设备的连接,断开,命令同步执行,命令异步执行等方法。

      SessionFactory实现了SessionListener接口,并包含了一个设备id与Session映射的Map对象,通过SessionListener的连接断开与建立回调机制维护。

      当Session建立后,通过SessionChecker与设备保持长链接。

      SessionChecker继承Thread类,系统启动时便启动一个线程,每隔5秒遍历一次遍历SessionFactory中保存的Session对象,依次发起命令与设备通信,实现心跳机制,并通过HeartResultListener,检查心跳结果,如果正常返回,则设置当前Session对象的最后活动时间,否则进入异常处理,如果是定义的断开异常信息,则发布SessionCloseEvent事件。

      SessionChecker包含一个内部类Guarder,Guarder继承Thread类,随系统启动时,启动一个线程,每隔5秒遍历一次SessionFactory中保存的Session对象,检查其最后活动时间与当前时间比较,是否大于3秒,如果大于则发布SessionTimeoutEvent事件。

  • 协议编解码

    • 设计思路

      直接使用RouterOS-java客户端库,该库提供了RouterOS API 的编解码方案的实现。

  • 应用主场景

    • 设计思路

      应用主场景由三个类组成:应用启动类,登录类,主界面类。

      应用启动类:负责应用启动时初始化jfoenix与datafx,加载图片与全局CSS样式,以及加载并显示登录界面。

      登录类:登录界面分为上下两部分,上面部分展示设备IP,用户名,密码,端口输入框。下面部分分为两个tab页,分别展示在线设备和登录历史记录,点击一条在线设备,可实现快速填充设备IP输入框。点击一条登录历史记录可实现快速登录。

      主界面类:主界面是标准的桌面管理系统界面,分为顶部菜单栏,左侧导航栏,右侧主操作区域

  • 列表界面与新增,修改界面

    • 设计思路

      考虑到列表界面与新增,修改界面诸多共性,采用了模板方法模式,将其抽象封装到基类里面,特殊处理由具体子类实现,分别实现了列表Controller基类BaseListController,设置界面基类BaseSetController,以及模型基类BaseDataModel。规范了开发,提高 了开发效率。

  • 插件体系

    • 设计思路

      基于xKernel实现自定义插件体系

      <dependency>
                  <groupId>com.javacoo</groupId>
                  <artifactId>xKernel</artifactId>
                  <version>1.0.0</version>
              </dependency>
      

      详见:https://gitee.com/javacoo/xkernel

二:打包与发布

使用EXE4J+Inno Setup 将工具打包成windows桌面应用安装程序

三:基本配置

  • 电脑网卡设置

set.png
  1. 打开电脑:控制面板\网络和 Internet\网络和共享中心\以太网
  2. 点击属性
  3. 选择Internet协议版本4
  4. 设置IP地址
  5. 点击高级
  6. 添加IP地址
  7. 输入ip地址
  • 管理软件登录

    可以快速查看到二层网络中的在线设备。
    设置本地电脑 IP 地址(和设备同一网段) : 192.168.12.X(X 为 2-254)
    使用用户名、密码登陆设备 ,默认端口 8728
    点击登录
    如需进入命令窗口配置,点击 SSH 登陆,可以输入配置命令,完成新设备配置和更多高级功能实现

    1. 普通登录

      系统登录.png
      • 登录界面分为上下两部分,上部是登录输入界面,下部分为在线设备和登录记录两个面板

      • 登录输入界面包含:设备ip,用户名,密码,端口四个输入框,分别代表设备I的ip地址,登录用户名,登录密码,登录端口。

      • 在线设备面板:管理软件在网络中查询在线设备并以列表的形式显示在在线设备面板,包含IP地址,Mac地址,设备名称,设备型号,运行时间等信息。点击其中一条记录,该条记录的IP地址便可自动填充到登录输入界面中设备IP输入框中。

      系统登录-登录历史.png
      • 登录记录面板:记录了历史成功登录软件的设备IP,用户名,最后登录时间等信息,操作一列有快速登录,删除2个按钮,可实现快速登录和删除登录记录的功能。

      • 点击登录即可进入系统主界面,如下图所示


        设备状态.png
        • 系统主界面是经典的CS模式界面布局,头部是工具栏,状态栏,中部分左右两块,左边是菜单栏,右边是内容面板。

        • 头部是工具栏包含:主页,信号强度,无线设置,IP设置,带宽测试,Ping工具,设备重启,重置配置等快捷菜单。

        • 左边菜单栏包含:设备状态,无线,网络,高级设置,系统,工具六大板块。

          1. 无线:无线接口,接入规则,上连规则,终端列表,加密配置文件,信号阈值控制。
          2. 网络:IP地址,IPV6,DHCP客户端,DHCP服务端,网络,分配记录,IP地址池,DNS,路由配置
          3. 高级设置:二层防火墙,NAT转发,三层防火墙,接口列表,桥,桥端口,RADIUS,Mesh网络列表,Mesh端口,
          4. 系统:日志,日志配置规则,日志配置动作,设备名称配置,登录密码设置,任务调度,备份,系统时间,时间同步,定时重启,云服务配置,文件
          5. 工具:带宽测试,抓包,Ping,路由跟踪,IP看门狗,网口看门口
        • 右边是内容面板,默认显示设备状态:设备状态实时动态显示了当前设备的状态信息,包括内存信息,CPU使用率,设备名称,设备地址,设备型号,设备MAC,设备电压,设备温度,运行时间,可用磁盘空间,系统版本,总内存等信息。

    2. SSH登录

      SSH登录.png
      • SSH登录界面包含:设备ip,用户名,密码输入框,点击登录即可登录到命令窗口,如下图所示:
      ssh.png
  1. 设备搜索登录


    searchlogin.png

    设备搜索登录:工具扫描网口发现并登录RouterOS设备

  • 修改设备IP

    每个接口可设置多个 IP 地址,通常我们修改设备 IP 是为了管理设备的便利,如下图所示

IP地址.png

点击添加按钮,进入添加IP地址页面,如下图所示

IP地址-添加.png

输入IP地址,如:192.168.10.128

输入掩码位数,如:24

选择接口,如,ether1

点击保存即可完成IP地址添加。

  • 修改设备名称

    当设备较多时,为了快速管理设备我们可以设置每个设备的标识名称,如下图所示

设备名称.png
  • 基础桥接配置

    中心端
    点击无线设置-选择相应的无线模块,进行一下配置:工作模式 点对点- bridge(点对多点
    AP bridge) 、传输模式、频宽、频率、 SSID、协议以及选择加密配置文件(如果设置了加密)。
    加密配置的创建,点击添加进行新无线加密文件的创建。
    选择相应的无线模块,并点击常规配置,如下图所示

    无线接口.png

常规配置

常规设置.png

无线工作模式介绍:

  1. AP(点对多点): 应用环境为点对多点传输戒覆盖时的基站模式。
  2. Bridge(点对点): 通常作为骨干链路传输点对点时的基站模式。
  3. Station Bridge(非 WDS): 通常作为点对对点和点对点的透明传输时的客户端模式。
  4. Station wds(WDS): 通常客户端需要在多基站间漫游时采用的客户端模式。
  5. Station(三层): 作为网络客户终端使用,透传时一般丌建议使用。
  6. Station(兼容模式): 当基站 AP 采用其他品牌设备戒瘦 AP 时,作为客户端需要采用此模
    式。一般做瘦 AP 的客户端时使用。

传输协议介绍:

  1. Super-long:私有传输协议,通过载波聚合和帧聚合可有效降低远距离传输时带宽波劢。
  2. TDMA 私有传输协议及加密, 通过时分多址技术,有效规划空中时间效率,提高传输带宽。
  3. 802.11WiFI 联盟标准协议。在漫游应用场景中,基站选择改模式。

以上配置完成后,点击更新。
当协议为 802.11 时,需要配置加密文件,确保无线连接的安全性。同时客户端也需要配置
相同的加密文件。
默认认证模式: 勾选。只要客户端 SSID 和安全性加密文件一致即通过认证并允许连接。如果丌
勾选,则 AP 还将匹配接入规则,并决定是否允许该客户端连接。
隐藏 SSID: 勾选。无线设备无法搜索到该基站 SSID。

无线列表2.png

多基站漫游配置时,必须保持所有 AP 基站 SSID 一致,频率选择间隔 40Mhz 以上,如第
一个 AP1 为 5180MHz,第二个 AP2 则可以选择 5745MHz。 Radio Name 根据项目管理需要修
改,仅用于调试阶段区分当前连接基站。

前端
工作模式: 桥接时选择 Station Bridge。漫游时选择 StationWDS,并丏勾选漫游功能。
物理协议: 选择硬件支持的最高标准,确保兼容性。
频宽: 扩频斱式和基站保持一致。

传输协议: 一般选择任意。当客户端需要做漫游时,选择 802.11 协议并开启漫游,当单一基站
AP 时,请勿开启漫游功能。
国家: 和基站保持一致,否则可能造成无法连接。
搜索列表: 客户使用默认值。当需要漫游时,为减少扫描时间,可以填入 AP 的固定频率,并用
英文逗号隔开,如: 5180, 5745。

注意:当选择 station-wds 模式时,客户端频率及无线协议自适应基站。 SSID 及安全配置文件
不基站一致时,将自劢适应基站频率,并建立连接。

  • 无线安全配置

    加密配置文件-修改.png

基站和客户端需要配置相同的加密文件。

  • 接入规则配置

    接入规则添加客户端 MAC 地址绑定 :

    1. 接入规则手劢添加 MAC 地址
    接入规则-修改.png
  1. 导入 excel 表格,批量添加,建立导入表.xls
接入规则-excel.png
接入规则-导入.png

四:系统部分功能截图

1:登录界面

系统登录.png

设备搜索登录


设备搜索登录.png

2:SSH登录界面

SSH登录.png

3:设备搜索登录界面

searchlogin.png

4:首页界面

设备状态.png

5:接口列表

接口列表.png

6:桥配置

桥.png

7:无线

无线接口.png

8:网络

IP地址.png

9:防火墙

二层防火墙.png

10:系统

系统日志.png

11:文件

文件.png

12:工具

带宽测试.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容