UNPKG

mm_connector

Version:

这是超级美眉游戏连接器,用于连接客户端和服务端,实现前后端安全通讯。

300 lines (274 loc) 6.32 kB
const Item = require('mm_machine').Item; /** * Plugin插件驱动类 * @extends {Item} * @class */ class Drive extends Item { /** * 构造函数 * @param {String} dir 当前目录 * @constructor */ constructor(dir) { super(dir, __dirname); this.default_file = "./app.json"; /** * 开关,开启可使用插件 */ this.onOff = true; /** * 当前语言 */ this.lang_now = "zh_CN"; /** * 语言包 */ this.lang = {}; /* 通用项 */ // 配置参数 this.config = { // 标题, 介绍事件作用 "title": "", // 描述, 用于描述该事件有什么用的 "description": "", // 名称, 由中英文和下“_”组成, 用于卸载事件 // 同时也是版本唯一标识,当商城有两个插件名称相同时,可以通过版本号查询和下载 "name": "", // 应用域 "app": "", // 文件路径, 当调用函数不存在时,会先从文件中加载 "func_file": "./index.js", // 回调函数名 用于决定调用脚本的哪个函数 "func_name": "", // 版本号 "version": "1.0", // 语言包路径 "lang_path": "./lang/", // 插件图标 "icon": "/img/logo.png", // 是否中断执行 "end": true, // 排序 "sort": 10 }; } } /** * 新建脚本 * @param {String} 文件 */ Drive.prototype.new_script = function(file) { var fl = __dirname + "/script.js"; if (fl.hasFile()) { var text = fl.loadText(); if (text) { var name = 'sys'; var l = $.slash; var arr = file.split(l); arr = arr.slice(arr.indexOf('app')); var app_name = arr[1]; text = text.replaceAll('{0}', app_name); text = text.replaceAll('{1}', app_name); file.saveText(text); } } }; /** * 新建配置 * @param {String} 文件 */ Drive.prototype.new_config = function(file) { var fl = __dirname + "/config.tpl.json"; if (fl.hasFile()) { var text = fl.loadText(); if (text) { var name = 'sys'; var l = $.slash; var arr = file.split(l); arr = arr.slice(arr.indexOf('app')); var app_name = arr[1]; text = text.replaceAll('{0}', app_name); text = text.replaceAll('{1}', app_name); file.saveText(text); } } }; /** * 设置语言 * @param {Sting} lang * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.set_lang = function(lang) { var msg = null; if (!lang) { lang = "zh_CN" } var file = this.config.lang_path + ".json"; if (file.hasFile()) { var obj = file.loadJson(); if (obj) { this.lang = obj; } else { msg = "语言包不是正确的json格式"; } } else { msg = "语言包文件不存在"; } return msg; }; /** * 初始化 * @param {Object} option 配置参数 * @return {String} 成功返回null, 否则返回错误提示 */ Drive.prototype.init = function(option) { var msg = null; return msg; }; /** * 更新 * @param {Object} option 配置参数 * @return {String} 成功返回null, 否则返回错误提示 */ Drive.prototype.update = function(option) { var msg = null; return msg; }; /** * 安装 * @param {Object} option 配置参数 * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.install = function(option) { var msg = null; return msg; }; /** * 卸载 * @param {Object} option 配置参数 * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.uninstall = function(option) { var msg = null; return msg; }; /** * 启动 * @param {Object} opiton 配置参数 * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.start = function(opiton) { var msg = null; return msg; }; /** * 暂停 * @param {Object} opiton 配置参数 * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.stop = function(opiton) { var msg = null; return msg; }; /** * 结束 * @param {Object} opiton 配置参数 * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.end = function(opiton) { var msg = null; return msg; }; /** * 销毁 * @param {Object} opiton 配置参数 * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.destroy = function(option) { var msg = null; return msg; }; /** * 商店(用于下载插件相关模块) * @param {String} item 插件项 * @return {String} 成功返回null,否则返回错误提示 */ Drive.prototype.store = function(item) { var msg = null; return msg; }; /** * 插件 * @param {String} item 插件项 * @return {Object} 旗下插件和信息 */ Drive.prototype.app = function(item) { }; /** * 帮助(讲解插件使用方法) * @param {String} item 帮助项 * @return {String} 返回使用方法明细 */ Drive.prototype.help = function(item) { var body = ""; return body; }; /** * 主程序 * @param {Object} param1 参数1 * @param {Object} param2 参数2 * @return {Object} 返回执行结果 */ Drive.prototype.main = function(param1, param2) { return null; }; /** * 执行程序 * @param {Object} param1 参数1 * @param {Object} param2 参数2 * @return {Object} 返回执行结果 */ Drive.prototype.run = function(param1, param2) { return this.main(param1, param2); }; /** * 指令(类似命令提示符) * @param {String} content 指令内容 * @return {String} 执行结果 */ Drive.prototype.cmd = function(content) { var body = ""; return body; }; /** * 指令(类似命令提示符) * @param {String} content 指令内容 * @return {String} 执行结果 */ Drive.prototype.run_cmd = async function(content) { if (!content) { content = ""; } var ret = this.cmd(content); if (!ret) { ret = ""; } return ret; }; /** * 执行程序 * @param {Object} param1 参数1 * @param {Object} param2 参数2 * @return {Object} 返回执行结果 */ Drive.prototype.exec = function(func_name, option) { var msg = ""; if (this[func_name]) { msg = this[func_name](option); } else { msg = "错误的操作"; } return msg; }; module.exports = Drive;