Skip to content
This repository has been archived by the owner on Jan 17, 2019. It is now read-only.

DavidDiao/MFG4OOI

Repository files navigation

MFG4OOI

使MyFleetGirls兼容OOI的扩展

功能简介

众所周知MyFleetGirls(简称MFG)是不支持OOI的 并不知道

所以我就无bao聊gan写了这么一个让MFG能支持OOI的东西 还特别难用

顺便还把MFG包装起来,(支持这个功能的系统上)能够最小化到系统托盘 窗口就算少开一个也好的_(:зゝ∠)_

原理简介

反正也没人看

首先MFG判断一个请求是不是你游的依据之一是这个请求指向的服务器是不是某20个服务器之一,如果不是就直接飞了

然而悲哀的是你用OOI的时候请求指向的服务器是那个OOI服务器,于是妥妥的被MFG忽略

于是我要做的就是

  1. 如果遇到了像是你游的请求(POST /kcsapi/foo)就把Host暂时改成你原本直连应该会连到的服务器
  2. 丢给MFG,让它处理完再丢回来
  3. 把Host改回来,再丢给OOI(或者后面串着的logbook之类的)

然后做个美e观xin的外壳 跟自己过不去

就好了

使用方法

  1. 安装并配置Java9(JRE9)
    注意MFG仅需求Java8,所以可能需要重新安装
    丢个能下Java的网址http://www.oracle.com/technetwork/java/javase/downloads/index.html
    看到一堆东西不知道选哪个的可以戳这个 要是进了这个还是不知道选哪个就切腹吧
    我才不会吐槽MFG给的那个链接只有Java7呢
  2. 安装MFG并使之能够正常工作
  3. 将MFG4OOI相关文件(本体+启动脚本,启动脚本按需下载)移至MFG所在文件夹
  4. Windows用户启动MFG4OOI.bat,如果.jar文件已经关联到javaw上则可以直接运行MFG4OOI.jar
    Linux用户启动MFG4OOI.sh,Mac用户启动MFG4OOI.command
    注意不要删除原MFG启动脚本
  5. 首次启动需要配置一下,提供了自动配置的功能 当然坚持要手动配置我也不拦着你对不对
    由于相当于多了一个代理,所以要额外分配一个端口,还请理解
  6. (好吧这个放步骤这边不太合适),如果MFG输出有方框可以下带字体的版本(文件名或者启动脚本自己改)

一些截图

再说吧

一些值得注意的东西?

  1. 自动配置相关
    自动配置时默认分配的新端口为原MFG端口+1
    但是这个端口不是给MFG4OOI的,而是把MFG挪过去
    MFG4OOI则使用原MFG端口,这样浏览器(或者浏览器和MFG之间的东西)就不用修改配置了
  2. 两个启动中/已启动的具体含义
    上面一个表示的是MFG4OOI服务的状态,启动中表示代理已经开始工作,而尚未指定所属服务器;已启动表示代理能够工作且已经指定所属服务器
    下面一个表示的是MFG的状态,启动中如字面意思,而已启动其实是读取到 Welcome to MyFleetGirls Client Ver ?.?.??,然而其实这个时候并没有真正启动完成
    顺带一提 认证完成后自动最小化 是指读取到 MyFleetGirlsサーバへの接続に成功しました
  3. 绑定地址
    对这种东西稍有了解的人应该知道,表示只监听来自某个地址的连接
    这边暂时写的是必须输入合法域名(IP如果可能会自动转换为域名)或留空,当然这很有问题。以后会改成给几个选项的
    这个绑定地址是MFG4OOI的,MFG的固定为localhost(当然以后也会改)
  4. 配置界面其它一些碎碎念
    开机自启动没写,所以是灰的
    如果系统不支持托盘,最小化到托盘也会是灰的(不过我没见过那种系统_(:зゝ∠)_)
    MFG密码用了密码框,尽管我觉得可能不需要。。
  5. 数据包是发往上游代理(如果存在)还是MFG?
    之所以提这个,是因为应该怎么串还请自己好好想想,比如缓存不能放在MFG->MFG4OOI的地方之类的(嘛按照我的设计把MFG和MFG4OOI当成一个整体就什么问题都没有了嘛)
    1. 如果请求头中含有X-Origin-Host,用X-Origin-Host覆盖Host的值并发往上游代理
    2. 如果两个状态都为已启动且method为POST且path以/kcsapi/开头,则在请求头中添加X-Origin-Host为原Host的值,把Host改为所属服务器的IP,发往MFG(即使MFG并不会发回MFG4OOI
    3. 发往上游代理
  6. 自动判断所属服务器
    这是一个非常恶心的东西,只能通过初始界面或狗牌的那张写着服务器名字的图片判断。。所以当加载初始界面时或打开狗牌时可能会自动获取到所属服务器
    当然可以点击 自动检测 按钮,不过那个按钮需要当MFG4OOI确认到已经登录后才能使用(因为需要Cookie)
    而MFG4OOI判断这一点的依据是path是否以/kcs开头
  7. MFG初始化可能产生的一些报错
    首先那种报错可以忽略 程序员只在乎错误不在乎异常/警告
    我见过的一种报错是由于MFG读不到控制台信息,另一种是由于Java8的某种操作Java9看不顺眼,反正都不用管就是了
  8. 后面暂时有的改进的打算
    加字体选择
    优化bindAddress
    添加开机自启动功能(完全不想弄呢)
    暂时就这些吧