Exemplo n.º 1
0
        /// <summary>
        /// 更新定时任务
        /// </summary>
        public static void UpdateTimerTask()
        {
            ArrayList data = XmlApi.nlist_get("timer", "timertask");
            ArrayList list = data[1] as ArrayList;

            list.RemoveAt(list.Count - 1);
            Tool.Timer.timers = list;
        }
Exemplo n.º 2
0
        public static void Timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)  //1s定时程序
        {
            // 得到 hour minute second  如果等于某个值就开始执行某个程序。
            int intHour   = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;

            count++;
            if (count >= luaWait)//每分钟执行脚本
            {
                count = 0;
                LuaEnv.RunLua("", "envent/TimerMinute.lua");
            }

            //检查升级
            if (intSecond == 0 && intMinute == 0 && intHour == 3)
            {
                //检查是否开启了检查更新
                if (XmlApi.xml_get("settings", "autoUpdate").ToUpper() != "TRUE")
                {
                    return;
                }

                Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "正在检查脚本更新");
                string gitPath = Common.AppDirectory + "git/";
                if (!Repository.IsValid(gitPath))
                {
                    Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Error, "lua脚本更新检查", "未检测到git仓库!");
                    return;//工程不存在
                }

                using (var repo = new Repository(gitPath))
                {
                    string lastCommit = repo.Commits.First().Sha;//当前提交的特征值

                    // Credential information to fetch
                    LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
                    options.FetchOptions = new FetchOptions();

                    // User information to create a merge commit
                    var signature = new LibGit2Sharp.Signature(
                        new Identity("MERGE_USER_NAME", "MERGE_USER_EMAIL"), DateTimeOffset.Now);

                    // Pull
                    try
                    {
                        Commands.Pull(repo, signature, options);
                    }
                    catch
                    {
                        Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Warning, "lua脚本更新检查", "代码拉取失败,请检查网络!");
                        return;
                    }

                    string newCommit = repo.Commits.First().Sha;//pull后的特征值
                    if (lastCommit != newCommit)
                    {
                        Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "检测到更新内容,正在替换脚本\r\n" +
                                              "注意可能会出现消息报错,无视就好");
                        Directory.Delete(Common.AppDirectory + "lua", true);
                        Tools.CopyDirectory(gitPath + "appdata/lua", Common.AppDirectory + "lua");
                        Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "脚本更新完成!");
                    }
                    else
                    {
                        Common.CqApi.AddLoger(Sdk.Cqp.Enum.LogerLevel.Info, "lua脚本更新检查", "没有检测到脚本更新");
                    }
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 插件启动后的所有东西初始化
        /// </summary>
        public static void Initial()
        {
            RunSandBox("");

            setting = new Settings();

            //加载配置
            if (File.Exists(Common.AppData.CQApi.AppDirectory + "settings.json"))
            {
                RecordSetting record = JsonConvert.DeserializeObject <RecordSetting>(
                    File.ReadAllText(Common.AppData.CQApi.AppDirectory + "settings.json"));

                setting.TcpServerPort          = record.TcpServerPort;
                setting.WebSocketServerPort    = record.WebSocketServerPort;
                setting.WebSocketClientConnect = record.WebSocketClientConnect;
                setting.SJFSocketConnect       = record.SJFSocketConnect;
                setting.HttpListenHost         = record.HttpListenHost;
                setting.HttpListenSub          = record.HttpListenSub;
                setting.HttpListenPort         = record.HttpListenPort;
                setting.TcpServerEnable        = record.TcpServerEnable;
                setting.WebSocketServerEnable  = record.WebSocketServerEnable;
                setting.WebSocketClientEnable  = record.WebSocketClientEnable;
                setting.SJFSocketEnable        = record.SJFSocketEnable;
                setting.HttpListenEnable       = record.HttpListenEnable;
            }
            else
            {
                setting = new Settings();
                setting.TcpServerEnable       = setting.TcpServerEnable;
                setting.WebSocketServerEnable = setting.WebSocketServerEnable;
                setting.WebSocketClientEnable = setting.WebSocketClientEnable;
                setting.SJFSocketEnable       = setting.SJFSocketEnable;
                setting.HttpListenEnable      = setting.HttpListenEnable;
            }
            //TimerRun.Start();//清理文件定时器任务,可能存在内存泄漏问题,暂时不加这个功能
            TcpServer.SendList();//tcp定时器任务

            if (initialFlag)
            {
                return;
            }
            initialFlag = true;

            Tools.Manager.GroupManager.Update();

            //ui界面数据绑定
            Global.Settings = setting;
            //git按键回调函数
            Global.GitInitial += (s, e) =>
            {
                string gitPath = Common.AppData.CQApi.AppDirectory + "lua/";
                if (Directory.Exists(gitPath))
                {
                    if (!Repository.IsValid(gitPath))
                    {
                        Common.AppData.CQLog.Warning("Lua插件初始化脚本", $"lua目录已存在,且不存在Git结构,为了防止误删文件,请自行处理删除目录后再试({gitPath})");
                        return;
                    }
                    else
                    {
                        try
                        {
                            Common.AppData.CQLog.Info("Lua插件更新脚本", "正在更新脚本,请稍后");
                            var options = new PullOptions
                            {
                                FetchOptions = new FetchOptions()
                            };
                            var signature = new Signature(
                                new Identity("MERGE_USER_NAME", "MERGE_USER_EMAIL"), DateTimeOffset.Now);
                            using var repo = new Repository(gitPath);
                            Commands.Pull(repo, signature, options);
                            LuaStates.Clear();
                            LuaStates.Run("main", "AppEnable", new { });
                            Common.AppData.CQLog.Info("Lua插件初始化脚本", "更新完成!您可以开始用了");
                            return;
                        }
                        catch (Exception ee)
                        {
                            Common.AppData.CQLog.Warning("Lua插件更新脚本", $"更新脚本文件失败,错误信息:{ee.Message}");
                            return;//pull失败
                        }
                    }
                }
                Common.AppData.CQLog.Info("Lua插件初始化脚本", "正在下载初始脚本,请稍后");
                try
                {
                    Repository.Clone("https://gitee.com/chenxuuu/receiver-meow-lua.git", gitPath);
                    LuaStates.Clear();
                    LuaStates.Run("main", "AppEnable", new { });
                    Common.AppData.CQLog.Info("Lua插件初始化脚本", "初始化完成!您可以开始用了");
                }
                catch (Exception ee)
                {
                    Common.AppData.CQLog.Warning("Lua插件初始化脚本", $"初始化脚本文件失败,错误信息:{ee.Message}");
                    return;//clone失败,还原
                }
            };
            //重载虚拟机按键回调函数
            Global.LuaInitial += (s, e) =>
            {
                LuaStates.Clear();
                LuaStates.Run("main", "AppEnable", new { });
            };
            //重载Xml按键回调函数
            Global.XmlInitial += (s, e) =>
            {
                XmlApi.Clear();
            };
        }