美文网首页RouterOS
JavaFX+Jfoenix+Mikrotik RouterOS

JavaFX+Jfoenix+Mikrotik RouterOS

作者: javacoo | 来源:发表于2023-02-07 20:20 被阅读0次

    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
    • 修改设备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

    2:SSH登录界面

    SSH登录.png

    3:首页界面

    设备状态.png

    4:接口列表

    接口列表.png

    5:桥配置

    桥.png

    6:无线

    无线接口.png

    7:网络

    IP地址.png

    8:防火墙

    二层防火墙.png

    9:系统

    系统日志.png

    10:文件

    文件.png

    11:工具

    带宽测试.png
    一些信息
    路漫漫其修远兮,吾将上下而求索
    码云:https://gitee.com/javacoo
    QQ群:164863067
    作者/微信:javacoo
    邮箱:xihuady@126.com
    

    相关文章

      网友评论

        本文标题:JavaFX+Jfoenix+Mikrotik RouterOS

        本文链接:https://www.haomeiwen.com/subject/hgjlfdtx.html