From f752ed56945a6c2becb4163f033dcdff1eecfb1e Mon Sep 17 00:00:00 2001 From: nobody Date: Fri, 22 May 2020 17:26:14 +0800 Subject: [PATCH 01/16] Fix a name parsing bug in lua analyzer. --- .../Files/lua/libs/luacheck/analyzer.lua | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua b/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua index d1cd7fa0..97b0937d 100644 --- a/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua +++ b/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua @@ -224,18 +224,18 @@ end -- anz codes start local function analyzeName(n, sep) + if type(n) ~= "table" then - return false, n + return false, "" end - if n.tag == "Id" then - return false, n[1] - elseif n.tag == "Index" and n[1] and n[1][1] and n[2] then - return true, n[1][1] .. sep .. n[2][1] + if n.tag == "Index" and n[1] and n[2] then + local itl, left = analyzeName(n[1], ".") + local itr, right = analyzeName(n[2], ".") + return true, left .. sep .. right end - - -- unknow error - return false, "" + + return false, n[1] or "" end local function analyzeRequirePath(v, r) @@ -265,7 +265,7 @@ local function analyzeRequirePath(v, r) return "", "" end -local function anlyzeValue(v, r) +local function analyzeValue(v, r) if type(v) ~= "table" then return "vars", nil end @@ -309,7 +309,7 @@ end local function analyzeEqual(n, v, r, ln) - local vt, vv = anlyzeValue(v, r) + local vt, vv = analyzeValue(v, r) -- print( table.dump(v) ) -- print("vt: ", vt) From 5440f80c46e36f5f38366968462f6e3b2614d43e Mon Sep 17 00:00:00 2001 From: nobody Date: Sat, 23 May 2020 11:31:28 +0800 Subject: [PATCH 02/16] Fix bugs in analyzer. --- .../FormEditorCtrl/AutoCompleteCtrl.cs | 44 ++++++++++--- V2RayGCon/Properties/AssemblyInfo.cs | 3 +- .../Files/lua/libs/luacheck/analyzer.lua | 65 ++++++++++++++----- 3 files changed, 85 insertions(+), 27 deletions(-) diff --git a/Plugins/Luna/Controllers/FormEditorCtrl/AutoCompleteCtrl.cs b/Plugins/Luna/Controllers/FormEditorCtrl/AutoCompleteCtrl.cs index e7ef4c86..867b994c 100644 --- a/Plugins/Luna/Controllers/FormEditorCtrl/AutoCompleteCtrl.cs +++ b/Plugins/Luna/Controllers/FormEditorCtrl/AutoCompleteCtrl.cs @@ -24,7 +24,7 @@ internal sealed class AutoCompleteCtrl string KEY_FUNCTION = "funcs"; string KEY_VARS = "vars"; string KEY_MODULES = "modules"; - // string KEY_LINE_NUM = "line"; // line number + string KEY_LINE_NUM = "line"; // line number string KEY_METHODS = "methods"; string KEY_SUB_FUNCS = "subs"; #endregion @@ -537,8 +537,24 @@ string RemoveLocalPrefix(string text, bool trimFunctionPrefix) } bool ScrollToFunction(string text) + { + var funcs = funcDefTable; + if (funcs.ContainsKey(text)) + { + ScrollToLine(funcs[text]); + return true; + } + + return FallbackScrollToFunction(text); + } + + bool FallbackScrollToFunction(string text) { text = text?.Replace(":", ".")?.Replace(" ", "") + ?.Replace("['", ".") + ?.Replace("[\"", ".") + ?.Replace("\"]", "") + ?.Replace("']", "") ?.Split('(')?.FirstOrDefault(); if (string.IsNullOrWhiteSpace(text)) @@ -549,9 +565,9 @@ bool ScrollToFunction(string text) foreach (var line in editor.Lines) { var t = line.Text; - if (string.IsNullOrWhiteSpace(t) || !t.Contains("function")) - { - continue; + if (string.IsNullOrWhiteSpace(t) || !t.Contains("function")) + { + continue; } var trimed = RemoveLocalPrefix(t, true) @@ -600,9 +616,9 @@ void ScrollToDefinition(string text) return; } - if (ScrollToFunction(text) || ScrollToVariable(text)) - { - return; + if (ScrollToFunction(text) || ScrollToVariable(text)) + { + return; } foreach (var line in editor.Lines) @@ -695,6 +711,8 @@ void BindEvents() } + Dictionary funcDefTable = new Dictionary(); + private void OnCboxFunctionListDropDownHandler(object sender, EventArgs args) { history.Add(editor.CurrentLine); @@ -708,7 +726,8 @@ private void OnCboxFunctionListDropDownHandler(object sender, EventArgs args) KEY_METHODS, }; - List funcs = new List(); + Dictionary funcs = new Dictionary(); + foreach (var key in keys) { if (ast != null && ast[key] is JObject) @@ -716,17 +735,20 @@ private void OnCboxFunctionListDropDownHandler(object sender, EventArgs args) foreach (var kv in ast[key] as JObject) { var ps = (kv.Value as JObject)[KEY_PARAMS] as JArray; + var luaLineNumber = (kv.Value as JObject)[KEY_LINE_NUM].Value(); var sps = string.Join(", ", ps); - funcs.Add($"{kv.Key}({sps})"); + var fn = $"{kv.Key}({sps})"; + funcs.Add(fn, luaLineNumber - 1); } } } + funcDefTable = funcs; VgcApis.Misc.UI.Invoke(() => { var items = cboxFunctionList.Items; items.Clear(); - items.AddRange(funcs.OrderBy(x => x).ToArray()); + items.AddRange(funcs.Keys.OrderBy(x => x).ToArray()); VgcApis.Misc.UI.ResetComboBoxDropdownMenuWidth(cboxFunctionList); }); } @@ -770,6 +792,8 @@ bool ScrollToVariable(string v) return false; } + + private void OnCboxVarListDropDownHandler(object sender, EventArgs args) { history.Add(editor.CurrentLine); diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index fffde3de..8c82da4e 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -33,10 +33,11 @@ // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.9.0")] +[assembly: AssemblyVersion("1.3.9.1")] [assembly: AssemblyFileVersion("1.0.0.0")] /* + * v1.3.9.1 Fix bugs in analyzer. * ----------------------------------------------------- * v1.3.8.5 Tweak serverUI labels' color. * v1.3.8.4 Fix a bug in modules.set.lua. diff --git a/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua b/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua index 97b0937d..2bcf85cf 100644 --- a/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua +++ b/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua @@ -15,13 +15,33 @@ local function DumpTable(t) print( table.dump(t, " ", " >(((@> ") ) end +local function EscapeIndex(s) + s = tostring(s) + if string.match(s, '"') ~= nil then + return "['" .. s .. "']" + end + return '["' .. s .. '"]' +end + +local function ParseVarName(name) + + if type(name) ~= "string" then + return EscapeIndex(name) + end + + if string.match(name, "[^%w^_]") == nil then + return name + end + + return EscapeIndex(name) +end + local function InsertOnce(t, v) if not table.contains(t, v) then table.insert(t, v) end end - local function analyzeFuncParams(f) local ft = "funcs" @@ -226,16 +246,20 @@ end local function analyzeName(n, sep) if type(n) ~= "table" then - return false, "" + return false, ParseVarName(n) end if n.tag == "Index" and n[1] and n[2] then local itl, left = analyzeName(n[1], ".") local itr, right = analyzeName(n[2], ".") - return true, left .. sep .. right + local c = "." + if right ~= nil and string.sub(right, 1, 1) == '[' then + c = "" + end + return true, left .. c .. right end - return false, n[1] or "" + return false, ParseVarName(n[1]) end local function analyzeRequirePath(v, r) @@ -353,16 +377,19 @@ end local function analyzeLines(ast, r) for n, line in ipairs(ast) do - local ln = line["line"] - local len = table.length(line[1]) - for n = 1, len do - if line[2] and line[2][n] then - -- print( "analyzing: ", table.dump(line)) - analyzeEqual(line[1][n], line[2][n], r, ln) - else - local isTable, name = analyzeName(line[1][n], ".") - if name ~= nil and name ~= "" and r["vars"][name] == nil then - r["vars"][name] = ln + local tag = line.tag + if tag == "Local" or tag == "Set" or tag == "Localrec" then + local ln = line["line"] + local len = table.length(line[1]) + for n = 1, len do + if line[2] and line[2][n] then + -- print( "analyzing: ", table.dump(line)) + analyzeEqual(line[1][n], line[2][n], r, ln) + else + local isTable, name = analyzeName(line[1][n], ".") + if name ~= nil and name ~= "" and r["vars"][name] == nil then + r["vars"][name] = ln + end end end end @@ -423,6 +450,14 @@ local function Add(a, b) return c end +function t.abc(self, a, b) + print(a, b) +end + +t['{'] = function(a, b) + return a +end + function Main(ps) print("hello!") return true @@ -495,8 +530,6 @@ local function testAnalyzeModuleEx() print(r) end - - -- testCodeToAst(testCode) -- testAnalyzeCode() -- testAnalyzeModule() From 952f9515bb1f2eac3865854792982cb37ef1dfe9 Mon Sep 17 00:00:00 2001 From: nobody Date: Sat, 23 May 2020 13:29:27 +0800 Subject: [PATCH 03/16] update --- .../Files/lua/libs/luacheck/analyzer.lua | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua b/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua index 2bcf85cf..38049659 100644 --- a/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua +++ b/V2RayGCon/Resources/Files/lua/libs/luacheck/analyzer.lua @@ -14,26 +14,25 @@ local anz = {} local function DumpTable(t) print( table.dump(t, " ", " >(((@> ") ) end - -local function EscapeIndex(s) - s = tostring(s) - if string.match(s, '"') ~= nil then - return "['" .. s .. "']" - end - return '["' .. s .. '"]' -end local function ParseVarName(name) - if type(name) ~= "string" then - return EscapeIndex(name) + if type(name) == "string" + and string.match(name, "[^%w^_]") == nil + then + if string.match(name, "[^%d^.]") == nil then + -- pure numbers + return "[" .. name .. "]" + else + return name + end end - if string.match(name, "[^%w^_]") == nil then - return name + local s = tostring(name) + if string.match(s, '"') ~= nil then + return "['" .. s .. "']" end - - return EscapeIndex(name) + return '["' .. s .. '"]' end local function InsertOnce(t, v) @@ -543,4 +542,4 @@ function anz.new() return o end -return anz \ No newline at end of file +return anz From ceb24dd19b5a7c229fa45179d7558a451eb2ac29 Mon Sep 17 00:00:00 2001 From: nobody Date: Sun, 24 May 2020 10:33:51 +0800 Subject: [PATCH 04/16] Try to fix index out of range bug. --- Plugins/Luna/Views/WinForms/FormChoice.cs | 55 ++++++++++++++++------- V2RayGCon/Properties/AssemblyInfo.cs | 4 +- VgcApis/Misc/Utils.cs | 10 ++--- 3 files changed, 47 insertions(+), 22 deletions(-) diff --git a/Plugins/Luna/Views/WinForms/FormChoice.cs b/Plugins/Luna/Views/WinForms/FormChoice.cs index 7810608b..8ee71c88 100644 --- a/Plugins/Luna/Views/WinForms/FormChoice.cs +++ b/Plugins/Luna/Views/WinForms/FormChoice.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Reflection; using System.Threading; using System.Windows.Forms; @@ -74,25 +75,40 @@ void InitControls() for (int i = 0; i < num; i++) { - var control = new RadioButton - { - Text = VgcApis.Misc.Utils.AutoEllipsis(choices[i], MAX_CHOICE_LEN), - Left = left, - Top = h * (i + 1) + margin, - AutoSize = true, - }; - - if (defChoice - 1 == i) - { - control.Checked = true; - } - - toolTip1.SetToolTip(control, choices[i]); + RadioButton control = CreateOneChoiceCtrl(margin, left, h, i); Controls.Add(control); radioButtons.Add(control); } } + + private RadioButton CreateOneChoiceCtrl(int margin, int left, int h, int i) + { + var control = new RadioButton + { + Text = VgcApis.Misc.Utils.AutoEllipsis(choices[i], MAX_CHOICE_LEN), + Left = left, + Top = h * (i + 1) + margin, + AutoSize = true, + }; + + if (defChoice - 1 == i) + { + control.Checked = true; + } + + MethodInfo m = typeof(RadioButton).GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic); + if (m != null) + { + m.Invoke(control, new object[] { ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true }); + } + + control.MouseDoubleClick += (s, a) => VgcApis.Misc.UI.Invoke(btnOk.PerformClick); + + toolTip1.SetToolTip(control, choices[i]); + + return control; + } #endregion #region UI event handlers @@ -109,9 +125,16 @@ private void btnCancel_Click(object sender, EventArgs e) private void FormChoice_KeyDown(object sender, KeyEventArgs e) { - if (e.KeyCode == Keys.Escape) + switch (e.KeyCode) { - VgcApis.Misc.UI.CloseFormIgnoreError(this); + case Keys.Escape: + VgcApis.Misc.UI.CloseFormIgnoreError(this); + break; + case Keys.Enter: + VgcApis.Misc.UI.Invoke(btnOk.PerformClick); + break; + default: + break; } } diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index 8c82da4e..787413b0 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -33,10 +33,12 @@ // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.9.1")] +[assembly: AssemblyVersion("1.3.9.2")] [assembly: AssemblyFileVersion("1.0.0.0")] /* + * v1.3.9.2 Fix index out of range bug. + * Choice support double click. * v1.3.9.1 Fix bugs in analyzer. * ----------------------------------------------------- * v1.3.8.5 Tweak serverUI labels' color. diff --git a/VgcApis/Misc/Utils.cs b/VgcApis/Misc/Utils.cs index 564ad4db..fa23405f 100644 --- a/VgcApis/Misc/Utils.cs +++ b/VgcApis/Misc/Utils.cs @@ -21,7 +21,7 @@ namespace VgcApis.Misc { public static class Utils - { + { #region editor public static string GetWordFromCurPos(Scintilla editor) { @@ -33,7 +33,7 @@ public static string GetWordFromCurPos(Scintilla editor) return ""; } - var start = editor.CurrentPosition - line.Position - 1; + var start = Math.Min(editor.CurrentPosition - line.Position, text.Length) - 1; var end = start; for (; start >= 0; start--) { @@ -60,10 +60,10 @@ public static string GetWordFromCurPos(Scintilla editor) } return text.Substring(start + 1, len); - } + } #endregion - - + + #region system public static string GetCurCallStack() { From 3c1fccb7da5d5802c36483ae2e6a7f8456f1abcb Mon Sep 17 00:00:00 2001 From: nobody Date: Sun, 24 May 2020 12:39:11 +0800 Subject: [PATCH 05/16] Add edit button in LuaUI. --- .../Controllers/FormEditorCtrl/ButtonCtrl.cs | 20 +- .../FormMainCtrl/TabGeneralCtrl.cs | 11 +- Plugins/Luna/Services/FormMgrSvc.cs | 6 +- .../Luna/Views/UserControls/LuaUI.Designer.cs | 13 + Plugins/Luna/Views/UserControls/LuaUI.cs | 10 +- Plugins/Luna/Views/UserControls/LuaUI.resx | 40 +- .../Luna/Views/UserControls/LuaUI.zh-CN.resx | 3 + Plugins/Luna/Views/WinForms/FormEditor.cs | 17 +- .../Luna/Views/WinForms/FormMain.Designer.cs | 41 +- Plugins/Luna/Views/WinForms/FormMain.cs | 2 +- Plugins/Luna/Views/WinForms/FormMain.resx | 755 +++++++++--------- .../Luna/Views/WinForms/FormMain.zh-CN.resx | 58 +- V2RayGCon/Properties/AssemblyInfo.cs | 3 +- .../Views/UserControls/SubscriptionUI.cs | 21 +- VgcApis/Misc/Utils.cs | 10 + 15 files changed, 616 insertions(+), 394 deletions(-) diff --git a/Plugins/Luna/Controllers/FormEditorCtrl/ButtonCtrl.cs b/Plugins/Luna/Controllers/FormEditorCtrl/ButtonCtrl.cs index 8f1d9f7a..cbf40a0b 100644 --- a/Plugins/Luna/Controllers/FormEditorCtrl/ButtonCtrl.cs +++ b/Plugins/Luna/Controllers/FormEditorCtrl/ButtonCtrl.cs @@ -115,6 +115,15 @@ public void Run( } #region public methods + public void LoadScript(string name) + { + if (!string.IsNullOrEmpty(name)) + { + cboxScriptName.Text = name; + CboxScriptNameChangedHandler(this, EventArgs.Empty); + } + } + public bool isLoadClrLib; public void KeyBoardShortcutHandler(KeyEventArgs keyEvent) @@ -218,13 +227,13 @@ public void SetCurFileName(string filename) } public void SetCurrentEditorContent(string content) => - VgcApis.Misc.UI.Invoke(() => editor.Text = content); - + VgcApis.Misc.UI.Invoke(() => editor.Text = content); + #endregion - + #region Scintilla - - + + void Scintilla_DoubleClick(object sender, EventArgs e) { var keyword = VgcApis.Misc.Utils.GetWordFromCurPos(editor); @@ -448,7 +457,6 @@ private void BindEvents() cboxScriptName.DropDown += (s, a) => ReloadScriptName(); cboxScriptName.SelectedValueChanged += CboxScriptNameChangedHandler; - } private void OnBtnSaveScriptClickHandler(bool showResult) diff --git a/Plugins/Luna/Controllers/FormMainCtrl/TabGeneralCtrl.cs b/Plugins/Luna/Controllers/FormMainCtrl/TabGeneralCtrl.cs index a2463d7b..b440b8df 100644 --- a/Plugins/Luna/Controllers/FormMainCtrl/TabGeneralCtrl.cs +++ b/Plugins/Luna/Controllers/FormMainCtrl/TabGeneralCtrl.cs @@ -29,10 +29,15 @@ public TabGeneralCtrl( #region public methods Services.LuaServer luaServer; + Services.FormMgrSvc formMgrSvc; - public void Run(Services.LuaServer luaServer) + public void Run( + Services.LuaServer luaServer, + Services.FormMgrSvc formMgrSvc) { this.luaServer = luaServer; + this.formMgrSvc = formMgrSvc; + BindEvents(luaServer); BindDragDropEvent(); @@ -221,8 +226,8 @@ void AddLuaCoreCtrlToPanel() var ctrls = luaServer.GetAllLuaCoreCtrls(); foreach (var c in ctrls) { - var ui = new Views.UserControls.LuaUI( - luaServer, c); + var ui = new LuaUI( + luaServer, formMgrSvc, c); flyLuaUiPanel.Controls.Add(ui); } } diff --git a/Plugins/Luna/Services/FormMgrSvc.cs b/Plugins/Luna/Services/FormMgrSvc.cs index f666fc8d..95ab5fc0 100644 --- a/Plugins/Luna/Services/FormMgrSvc.cs +++ b/Plugins/Luna/Services/FormMgrSvc.cs @@ -29,14 +29,16 @@ public void Run( } #region public methods + public void CreateNewEditor() => CreateNewEditor(""); - public void CreateNewEditor() + public void CreateNewEditor(string scriptName) { lock (formLocker) { VgcApis.Misc.UI.Invoke(() => { - var newForm = Views.WinForms.FormEditor.CreateForm(api, settings, luaServer, this); + var newForm = Views.WinForms.FormEditor.CreateForm( + api, settings, luaServer, this, scriptName); newForm.FormClosed += (s, a) => { var form = newForm; // capture diff --git a/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs b/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs index d579e12e..41b17677 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs +++ b/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs @@ -38,6 +38,7 @@ private void InitializeComponent() this.lbName = new System.Windows.Forms.Label(); this.btnRemove = new System.Windows.Forms.Button(); this.rlbOptions = new VgcApis.UserControls.RoundLabel(); + this.btnEdit = new System.Windows.Forms.Button(); this.SuspendLayout(); // // btnRun @@ -104,6 +105,16 @@ private void InitializeComponent() this.toolTip1.SetToolTip(this.rlbOptions, resources.GetString("rlbOptions.ToolTip")); this.rlbOptions.Click += new System.EventHandler(this.rlbOptions_Click); // + // btnEdit + // + this.btnEdit.BackgroundImage = global::Luna.Properties.Resources.EditWindow_16x; + resources.ApplyResources(this.btnEdit, "btnEdit"); + this.btnEdit.Cursor = System.Windows.Forms.Cursors.Default; + this.btnEdit.Name = "btnEdit"; + this.toolTip1.SetToolTip(this.btnEdit, resources.GetString("btnEdit.ToolTip")); + this.btnEdit.UseVisualStyleBackColor = true; + this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); + // // LuaUI // resources.ApplyResources(this, "$this"); @@ -115,6 +126,7 @@ private void InitializeComponent() this.Controls.Add(this.lbRunningState); this.Controls.Add(this.btnKill); this.Controls.Add(this.btnStop); + this.Controls.Add(this.btnEdit); this.Controls.Add(this.btnRun); this.Cursor = System.Windows.Forms.Cursors.SizeAll; this.Name = "LuaUI"; @@ -135,5 +147,6 @@ private void InitializeComponent() private System.Windows.Forms.Label lbName; private System.Windows.Forms.Button btnRemove; private VgcApis.UserControls.RoundLabel rlbOptions; + private System.Windows.Forms.Button btnEdit; } } diff --git a/Plugins/Luna/Views/UserControls/LuaUI.cs b/Plugins/Luna/Views/UserControls/LuaUI.cs index a8c1ccb3..6ba407d8 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.cs +++ b/Plugins/Luna/Views/UserControls/LuaUI.cs @@ -1,4 +1,5 @@ using Luna.Resources.Langs; +using Luna.Services; using System; using System.Drawing; using System.Windows.Forms; @@ -9,15 +10,17 @@ internal partial class LuaUI : UserControl { Controllers.LuaCoreCtrl luaCoreCtrl; Services.LuaServer luaServer; - + private readonly FormMgrSvc formMgrSvc; VgcApis.Libs.Tasks.LazyGuy lazyUpdater; public LuaUI( Services.LuaServer luaServer, + Services.FormMgrSvc formMgrSvc, Controllers.LuaCoreCtrl luaCoreCtrl) { this.luaCoreCtrl = luaCoreCtrl; this.luaServer = luaServer; + this.formMgrSvc = formMgrSvc; InitializeComponent(); } @@ -165,6 +168,11 @@ private void rlbOptions_Click(object sender, EventArgs e) Views.WinForms.FormLuaCoreSettings.ShowForm(luaCoreCtrl); } + private void btnEdit_Click(object sender, EventArgs e) + { + var sn = luaCoreCtrl.name; + formMgrSvc.CreateNewEditor(sn); + } #endregion diff --git a/Plugins/Luna/Views/UserControls/LuaUI.resx b/Plugins/Luna/Views/UserControls/LuaUI.resx index 40872da1..8848d7a8 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.resx +++ b/Plugins/Luna/Views/UserControls/LuaUI.resx @@ -163,7 +163,7 @@ $this - 6 + 7 @@ -284,7 +284,7 @@ 35, 8 - 232, 13 + 212, 13 7 @@ -388,6 +388,42 @@ 0 + + Zoom + + + NoControl + + + 252, 4 + + + 2, 2, 2, 2 + + + 20, 20 + + + 3 + + + MiddleLeft + + + Open editor. + + + btnEdit + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 6 + True diff --git a/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx b/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx index fc6c04a1..79ee13d8 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx +++ b/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx @@ -176,6 +176,9 @@ (H)不在托盘菜单显示 无 - 这不用解释了吧 + + 打开编辑器 + 拖放调整顺序 diff --git a/Plugins/Luna/Views/WinForms/FormEditor.cs b/Plugins/Luna/Views/WinForms/FormEditor.cs index 434c6e8b..7372facd 100644 --- a/Plugins/Luna/Views/WinForms/FormEditor.cs +++ b/Plugins/Luna/Views/WinForms/FormEditor.cs @@ -12,6 +12,7 @@ internal partial class FormEditor : Form Services.LuaServer luaServer; Services.Settings settings; Services.FormMgrSvc formMgr; + private readonly string loadScriptName; VgcApis.Interfaces.Services.IApiService api; ScintillaNET.Scintilla editor; @@ -21,12 +22,15 @@ public static FormEditor CreateForm( VgcApis.Interfaces.Services.IApiService api, Services.Settings settings, Services.LuaServer luaServer, - Services.FormMgrSvc formMgr) + Services.FormMgrSvc formMgr, + string loadScriptName) { FormEditor r = null; VgcApis.Misc.UI.Invoke(() => { - r = new FormEditor(api, settings, luaServer, formMgr); + r = new FormEditor( + api, settings, luaServer, formMgr, + loadScriptName); }); return r; } @@ -35,10 +39,12 @@ public static FormEditor CreateForm( VgcApis.Interfaces.Services.IApiService api, Services.Settings settings, Services.LuaServer luaServer, - Services.FormMgrSvc formMgr) + Services.FormMgrSvc formMgr, + string loadScriptName) { this.api = api; this.formMgr = formMgr; + this.loadScriptName = loadScriptName; this.settings = settings; this.luaServer = luaServer; InitializeComponent(); @@ -116,6 +122,11 @@ private void FormEditor_Load(object sender, System.EventArgs e) acmCtrl?.KeyBoardShortcutHandler(a); })); }; + + if (!string.IsNullOrEmpty(loadScriptName)) + { + editorCtrl.LoadScript(loadScriptName); + } } #region private methods diff --git a/Plugins/Luna/Views/WinForms/FormMain.Designer.cs b/Plugins/Luna/Views/WinForms/FormMain.Designer.cs index f844019d..04544cfd 100644 --- a/Plugins/Luna/Views/WinForms/FormMain.Designer.cs +++ b/Plugins/Luna/Views/WinForms/FormMain.Designer.cs @@ -62,21 +62,37 @@ private void InitializeComponent() // // toolStripContainer1 // + resources.ApplyResources(this.toolStripContainer1, "toolStripContainer1"); // // toolStripContainer1.BottomToolStripPanel // + resources.ApplyResources(this.toolStripContainer1.BottomToolStripPanel, "toolStripContainer1.BottomToolStripPanel"); this.toolStripContainer1.BottomToolStripPanel.Controls.Add(this.statusStrip1); + this.toolTip1.SetToolTip(this.toolStripContainer1.BottomToolStripPanel, resources.GetString("toolStripContainer1.BottomToolStripPanel.ToolTip")); // // toolStripContainer1.ContentPanel // - this.toolStripContainer1.ContentPanel.Controls.Add(this.panelMainContainer); resources.ApplyResources(this.toolStripContainer1.ContentPanel, "toolStripContainer1.ContentPanel"); - resources.ApplyResources(this.toolStripContainer1, "toolStripContainer1"); + this.toolStripContainer1.ContentPanel.Controls.Add(this.panelMainContainer); + this.toolTip1.SetToolTip(this.toolStripContainer1.ContentPanel, resources.GetString("toolStripContainer1.ContentPanel.ToolTip")); + // + // toolStripContainer1.LeftToolStripPanel + // + resources.ApplyResources(this.toolStripContainer1.LeftToolStripPanel, "toolStripContainer1.LeftToolStripPanel"); + this.toolTip1.SetToolTip(this.toolStripContainer1.LeftToolStripPanel, resources.GetString("toolStripContainer1.LeftToolStripPanel.ToolTip")); this.toolStripContainer1.Name = "toolStripContainer1"; // + // toolStripContainer1.RightToolStripPanel + // + resources.ApplyResources(this.toolStripContainer1.RightToolStripPanel, "toolStripContainer1.RightToolStripPanel"); + this.toolTip1.SetToolTip(this.toolStripContainer1.RightToolStripPanel, resources.GetString("toolStripContainer1.RightToolStripPanel.ToolTip")); + this.toolTip1.SetToolTip(this.toolStripContainer1, resources.GetString("toolStripContainer1.ToolTip")); + // // toolStripContainer1.TopToolStripPanel // + resources.ApplyResources(this.toolStripContainer1.TopToolStripPanel, "toolStripContainer1.TopToolStripPanel"); this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.menuStrip1); + this.toolTip1.SetToolTip(this.toolStripContainer1.TopToolStripPanel, resources.GetString("toolStripContainer1.TopToolStripPanel.ToolTip")); // // statusStrip1 // @@ -85,18 +101,20 @@ private void InitializeComponent() this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.lbStatusBarMsg}); this.statusStrip1.Name = "statusStrip1"; + this.toolTip1.SetToolTip(this.statusStrip1, resources.GetString("statusStrip1.ToolTip")); // // lbStatusBarMsg // - this.lbStatusBarMsg.Name = "lbStatusBarMsg"; resources.ApplyResources(this.lbStatusBarMsg, "lbStatusBarMsg"); + this.lbStatusBarMsg.Name = "lbStatusBarMsg"; // // panelMainContainer // + resources.ApplyResources(this.panelMainContainer, "panelMainContainer"); this.panelMainContainer.Controls.Add(this.panelBtnContainer); this.panelMainContainer.Controls.Add(this.panelFlyContainer); - resources.ApplyResources(this.panelMainContainer, "panelMainContainer"); this.panelMainContainer.Name = "panelMainContainer"; + this.toolTip1.SetToolTip(this.panelMainContainer, resources.GetString("panelMainContainer.ToolTip")); // // panelBtnContainer // @@ -108,6 +126,7 @@ private void InitializeComponent() this.panelBtnContainer.Controls.Add(this.btnOpenEditor); this.panelBtnContainer.Controls.Add(this.btnKillAllScript); this.panelBtnContainer.Name = "panelBtnContainer"; + this.toolTip1.SetToolTip(this.panelBtnContainer, resources.GetString("panelBtnContainer.ToolTip")); // // btnExportToFile // @@ -157,14 +176,16 @@ private void InitializeComponent() resources.ApplyResources(this.panelFlyContainer, "panelFlyContainer"); this.panelFlyContainer.Controls.Add(this.flyScriptUIContainer); this.panelFlyContainer.Name = "panelFlyContainer"; + this.toolTip1.SetToolTip(this.panelFlyContainer, resources.GetString("panelFlyContainer.ToolTip")); // // flyScriptUIContainer // - this.flyScriptUIContainer.AllowDrop = true; resources.ApplyResources(this.flyScriptUIContainer, "flyScriptUIContainer"); + this.flyScriptUIContainer.AllowDrop = true; this.flyScriptUIContainer.BackColor = System.Drawing.SystemColors.Window; this.flyScriptUIContainer.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.flyScriptUIContainer.Name = "flyScriptUIContainer"; + this.toolTip1.SetToolTip(this.flyScriptUIContainer, resources.GetString("flyScriptUIContainer.ToolTip")); this.flyScriptUIContainer.Scroll += new System.Windows.Forms.ScrollEventHandler(this.flyScriptUIContainer_Scroll); // // menuStrip1 @@ -173,31 +194,32 @@ private void InitializeComponent() this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.windowToolStripMenuItem}); this.menuStrip1.Name = "menuStrip1"; + this.toolTip1.SetToolTip(this.menuStrip1, resources.GetString("menuStrip1.ToolTip")); // // windowToolStripMenuItem // + resources.ApplyResources(this.windowToolStripMenuItem, "windowToolStripMenuItem"); this.windowToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.showEditorToolStripMenuItem, this.toolStripMenuItem1, this.closeToolStripMenuItem}); this.windowToolStripMenuItem.Name = "windowToolStripMenuItem"; - resources.ApplyResources(this.windowToolStripMenuItem, "windowToolStripMenuItem"); // // showEditorToolStripMenuItem // - this.showEditorToolStripMenuItem.Name = "showEditorToolStripMenuItem"; resources.ApplyResources(this.showEditorToolStripMenuItem, "showEditorToolStripMenuItem"); + this.showEditorToolStripMenuItem.Name = "showEditorToolStripMenuItem"; this.showEditorToolStripMenuItem.Click += new System.EventHandler(this.showEditorToolStripMenuItem_Click); // // toolStripMenuItem1 // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1"); + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; // // closeToolStripMenuItem // - this.closeToolStripMenuItem.Name = "closeToolStripMenuItem"; resources.ApplyResources(this.closeToolStripMenuItem, "closeToolStripMenuItem"); + this.closeToolStripMenuItem.Name = "closeToolStripMenuItem"; this.closeToolStripMenuItem.Click += new System.EventHandler(this.closeToolStripMenuItem_Click); // // FormMain @@ -208,6 +230,7 @@ private void InitializeComponent() this.KeyPreview = true; this.MainMenuStrip = this.menuStrip1; this.Name = "FormMain"; + this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip")); this.Load += new System.EventHandler(this.FormMain_Load); this.toolStripContainer1.BottomToolStripPanel.ResumeLayout(false); this.toolStripContainer1.BottomToolStripPanel.PerformLayout(); diff --git a/Plugins/Luna/Views/WinForms/FormMain.cs b/Plugins/Luna/Views/WinForms/FormMain.cs index dc621a01..c1867663 100644 --- a/Plugins/Luna/Views/WinForms/FormMain.cs +++ b/Plugins/Luna/Views/WinForms/FormMain.cs @@ -51,7 +51,7 @@ private void FormMain_Load(object sender, System.EventArgs e) btnImportFromFile, btnExportToFile); - genCtrl.Run(luaServer); + genCtrl.Run(luaServer, formMgr); this.FormClosing += FormClosingHandler; this.FormClosed += (s, a) => diff --git a/Plugins/Luna/Views/WinForms/FormMain.resx b/Plugins/Luna/Views/WinForms/FormMain.resx index f27f5c23..74f7ac2e 100644 --- a/Plugins/Luna/Views/WinForms/FormMain.resx +++ b/Plugins/Luna/Views/WinForms/FormMain.resx @@ -117,568 +117,607 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 17, 17 - - - - None + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 91, 17 + + 0, 0 - - 0 task running + + Terminate all scripts. - - 0, 0 + + 72, 22 - - 520, 22 + + 78, 277 - - - 0 + + - - statusStrip1 + + toolStripContainer1.TopToolStripPanel - - statusStrip1 + + panelFlyContainer - - System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3, 3 - - toolStripContainer1.BottomToolStripPanel + + btnStopAllScript - + + btnKillAllScript + + + + + + 0 - - toolStripContainer1.BottomToolStripPanel + + + 2, 2, 2, 2 - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 - - toolStripContainer1 + + Top, Right - - 4 + + 3, 31 - - Top, Bottom, Right + + panelBtnContainer - - Bottom, Right + + 72, 22 - - NoControl + + 146, 22 - - 3, 252 + + 2, 2, 2, 2 - - 72, 22 + + 268, 268 - - 2 + + Show script editor. - - Export + + Open script editor. - - 183, 17 - - - Export all scripts to file. + + statusStrip1 btnExportToFile - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 520, 25 - - panelBtnContainer + + 91, 17 - + + Export all scripts to file. + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 - - Bottom, Right + + Del all - + NoControl + + 0 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + windowToolStripMenuItem + + + System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripContainer1 + + + True + + + FormMain + + + 3, 3, 3, 3 + + + 72, 22 + 3, 224 - - 72, 22 + + 3, 5 - - 2 + + New - - Import + + 3, 5 - - Import scripts from file. Script with same name will be replaced! + + toolStripContainer1 - - btnImportFromFile + + Show editor - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - panelBtnContainer + + 0 - - 1 + + - - Bottom, Right + + 0 - - 3, 196 + + - - 72, 22 + + Bottom, Right - - 2 + + 0 task running - - Del all + + 0, 0 - - Delete all scripts. + + 2, 2, 2, 2 - - btnDeleteAllScripts + + panelFlyContainer - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3 - - panelBtnContainer + + 67, 21 - + 2 - - Top, Right + + 143, 6 - - 3, 31 + + Fill - - 2, 2, 2, 2 + + panelBtnContainer - - 72, 22 + + Top, Bottom, Left, Right - - 0 + + Kill all - - Stop all + + toolStripContainer1 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panelBtnContainer Send stop signal to all scripts. - - btnStopAllScript + + panelMainContainer System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panelBtnContainer + + Import scripts from file. Script with same name will be replaced! - - 3 + + - - Top, Right + + System.Windows.Forms.ToolStripContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - NoControl + + panelBtnContainer - - 3, 5 + + Delete all scripts. - - 2, 2, 2, 2 + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + toolStripContainer1.BottomToolStripPanel + + 72, 22 - - 1 + + 520, 283 - - Editor + + 4 - - Open script editor. + + statusStrip1 - - btnOpenEditor + + 2, 2, 2, 2 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + toolStripMenuItem1 - - panelBtnContainer + + flyScriptUIContainer + + + 146, 22 + + + 0 4 - - Top, Right + + FormMain - - 3, 57 + + 2 - - 2, 2, 2, 2 + + 1 - - 72, 22 + + NoControl - - 1 + + 0 - - Kill all + + closeToolStripMenuItem - - Terminate all scripts. + + toolStripContainer1.BottomToolStripPanel - - btnKillAllScript + + 0 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panelBtnContainer + + toolStripContainer1.LeftToolStripPanel - - 5 + + 2, 2, 2, 2 - - 439, 3 + + panelMainContainer - - 78, 277 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + 0, 0 + + 1 - - panelBtnContainer + + 72, 22 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + CenterScreen - - panelMainContainer + + 3, 3, 3, 3 - - 0 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Top, Bottom, Left, Right + + panelMainContainer - - True + + showEditorToolStripMenuItem - - Fill + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 3, 3 + + 0 - - 2, 2, 2, 2 + + 428, 269 - - 0 - - - flyScriptUIContainer - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + toolStripContainer1.ContentPanel - - panelFlyContainer + + Close - - 0 + + None - - 3, 5 + + 1 - - 3, 3, 3, 3 + + 1 434, 275 - - 1 + + NoControl - - panelFlyContainer + + None - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + - - panelMainContainer + + 0, 0 - - 1 + + 520, 283 Fill - - 0, 0 + + - - 3, 3, 3, 3 + + 1 - - 520, 283 + + 1 - - 2 + + panelBtnContainer - - panelMainContainer + + Import - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 439, 3 - - toolStripContainer1.ContentPanel + + toolStripContainer1.RightToolStripPanel - - 0 + + toolTip1 - - 2, 2, 2, 2 + + 72, 22 - - 520, 283 + + 2 - - toolStripContainer1.ContentPanel + + $this - - System.Windows.Forms.ToolStripContentPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripContainer1 + + Stop all - + + 3, 196 + + 0 - - Fill + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripContainer1.LeftToolStripPanel + + toolStripContainer1.TopToolStripPanel - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripContainer1 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 1 + + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0, 0 + + btnImportFromFile - + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2, 2, 2, 2 - - toolStripContainer1.RightToolStripPanel + + btnOpenEditor - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 1 - + + 0 + + + Bottom, Right + + toolStripContainer1 + + 1 + 2 - - 520, 330 + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 1 + + - - toolStripContainer1 + + lbStatusBarMsg - - 284, 17 - - - None + + 2 - - 146, 22 + + Top, Right - - Show editor + + 6, 12 - - Show script editor. + + 520, 22 - - 143, 6 + + Export - - 146, 22 + + toolStripContainer1.ContentPanel - - Close + + - - Close this window. + + 2, 2, 2, 2 - - 67, 21 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Window - - 0, 0 - - - 520, 25 + + 3 - - 0 + + toolStripContainer1 menuStrip1 - - menuStrip1 - - - System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripContainer1.TopToolStripPanel - - - 0 + + 3, 252 - - toolStripContainer1.TopToolStripPanel + + 520, 330 - - System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panelBtnContainer - - toolStripContainer1 + + - - 3 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + toolStripContainer1 - - System.Windows.Forms.ToolStripContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0 + + Close this window. - - True - - - 6, 12 + + 2 - + 520, 330 - - 2, 2, 2, 2 - - - 268, 268 - - - CenterScreen - - - FormMain - - - lbStatusBarMsg - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + - - windowToolStripMenuItem + + panelBtnContainer - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Top, Bottom, Right - - showEditorToolStripMenuItem + + 5 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.ToolStripContentPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripMenuItem1 + + menuStrip1 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + toolStripContainer1 - - closeToolStripMenuItem + + Top, Right - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + btnDeleteAllScripts - - toolTip1 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 3, 57 - - FormMain + + - - System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Bottom, Right + + True + + + 284, 17 + + + 17, 17 + + + 183, 17 + \ No newline at end of file diff --git a/Plugins/Luna/Views/WinForms/FormMain.zh-CN.resx b/Plugins/Luna/Views/WinForms/FormMain.zh-CN.resx index 179c7289..1b8ab8ef 100644 --- a/Plugins/Luna/Views/WinForms/FormMain.zh-CN.resx +++ b/Plugins/Luna/Views/WinForms/FormMain.zh-CN.resx @@ -117,6 +117,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 导出... @@ -142,7 +148,7 @@ 给所有脚本发送停止信号 - 编辑器 + 新脚本 打开脚本编辑器 @@ -153,8 +159,33 @@ 强制停止所有脚本 - - 窗口 + + + + + + + + + + + + + + + + + + + + + + + + + + + 180, 22 脚本编辑器 @@ -162,10 +193,31 @@ 打开脚本编辑器 + + 177, 6 + + + 180, 22 + 关闭窗口 关闭这个窗口 + + 44, 21 + + + 窗口 + + + + + + + + + + \ No newline at end of file diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index 787413b0..4196b02e 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -33,10 +33,11 @@ // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.9.2")] +[assembly: AssemblyVersion("1.3.9.3")] [assembly: AssemblyFileVersion("1.0.0.0")] /* + * v1.3.9.3 Add edit button in LuaUI. * v1.3.9.2 Fix index out of range bug. * Choice support double click. * v1.3.9.1 Fix bugs in analyzer. diff --git a/V2RayGCon/Views/UserControls/SubscriptionUI.cs b/V2RayGCon/Views/UserControls/SubscriptionUI.cs index 2e7ed637..da4eea43 100644 --- a/V2RayGCon/Views/UserControls/SubscriptionUI.cs +++ b/V2RayGCon/Views/UserControls/SubscriptionUI.cs @@ -154,11 +154,22 @@ private void lbAlias_Click(object sender, EventArgs e) private void lbUrl_Click(object sender, EventArgs e) { - tboxUrl.Focus(); - var msg = VgcApis.Misc.Utils.CopyToClipboard(tboxUrl.Text) ? - I18N.CopySuccess : I18N.CopyFail; - VgcApis.Misc.UI.MsgBoxAsync(msg); - + var url = tboxUrl.Text; + if (string.IsNullOrEmpty(url)) + { + var clipboard = VgcApis.Misc.Utils.CopyFromClipboard(); + if (!string.IsNullOrEmpty(clipboard)) + { + tboxUrl.Text = clipboard; + } + } + else + { + tboxUrl.Focus(); + var msg = VgcApis.Misc.Utils.CopyToClipboard(tboxUrl.Text) ? + I18N.CopySuccess : I18N.CopyFail; + VgcApis.Misc.UI.MsgBoxAsync(msg); + } } #endregion diff --git a/VgcApis/Misc/Utils.cs b/VgcApis/Misc/Utils.cs index fa23405f..012786ec 100644 --- a/VgcApis/Misc/Utils.cs +++ b/VgcApis/Misc/Utils.cs @@ -1293,6 +1293,16 @@ public static string RelativePath2FullPath(string path) return Path.Combine(appDir, path); } + public static string CopyFromClipboard() + { + try + { + return Clipboard.GetText(); + } + catch { } + return string.Empty; + } + public static bool CopyToClipboard(string content) { try From 67cfc7b43bd3dbe20494f8a0c7c33247f68a5ec4 Mon Sep 17 00:00:00 2001 From: nobody Date: Sun, 24 May 2020 14:49:19 +0800 Subject: [PATCH 06/16] Add Sys:Volume*(). --- Plugins/Luna/Controllers/LuaCoreCtrl.cs | 6 +-- Plugins/Luna/Libs/Sys/VolumeChanger.cs | 40 +++++++++++++++++++ Plugins/Luna/Luna.csproj | 1 + Plugins/Luna/Models/Apis/LuaSys.cs | 6 +++ Plugins/Luna/Properties/Resources.Designer.cs | 2 +- Plugins/Luna/Properties/Resources.resx | 4 +- Plugins/Luna/Services/MenuUpdater.cs | 14 ++++++- V2RayGCon/Properties/AssemblyInfo.cs | 4 +- VgcApis/Interfaces/Lua/ILuaSys.cs | 6 +++ 9 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 Plugins/Luna/Libs/Sys/VolumeChanger.cs diff --git a/Plugins/Luna/Controllers/LuaCoreCtrl.cs b/Plugins/Luna/Controllers/LuaCoreCtrl.cs index e9e17b6a..22dd4f80 100644 --- a/Plugins/Luna/Controllers/LuaCoreCtrl.cs +++ b/Plugins/Luna/Controllers/LuaCoreCtrl.cs @@ -169,9 +169,9 @@ public void Stop() luaSys?.OnSignalStop(); } - public void Abort() => Killer(2000); + public void Abort() => KillCore(2000); - public void AbortNow() => Killer(1); + public void AbortNow() => KillCore(1); public void Start() { @@ -200,7 +200,7 @@ public void Cleanup() #endregion #region private methods - void Killer(int timeout) + void KillCore(int timeout) { if (!isRunning) { diff --git a/Plugins/Luna/Libs/Sys/VolumeChanger.cs b/Plugins/Luna/Libs/Sys/VolumeChanger.cs new file mode 100644 index 00000000..3c83b8bb --- /dev/null +++ b/Plugins/Luna/Libs/Sys/VolumeChanger.cs @@ -0,0 +1,40 @@ +using System; +using System.Runtime.InteropServices; + +namespace Luna.Libs.Sys +{ + public static class VolumeChanger + { + // https://stackoverflow.com/questions/35597458/set-system-volume-windows-10-in-c-sharp + + private const byte VK_VOLUME_MUTE = 0xAD; + private const byte VK_VOLUME_DOWN = 0xAE; + private const byte VK_VOLUME_UP = 0xAF; + private const UInt32 KEYEVENTF_EXTENDEDKEY = 0x0001; + private const UInt32 KEYEVENTF_KEYUP = 0x0002; + + [DllImport("user32.dll")] + static extern void keybd_event(byte bVk, byte bScan, UInt32 dwFlags, UInt32 dwExtraInfo); + + [DllImport("user32.dll")] + static extern Byte MapVirtualKey(UInt32 uCode, UInt32 uMapType); + + public static void VolumeUp() + { + keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY, 0); + keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); + } + + public static void VolumeDown() + { + keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY, 0); + keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); + } + + public static void Mute() + { + keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0); + keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); + } + } +} diff --git a/Plugins/Luna/Luna.csproj b/Plugins/Luna/Luna.csproj index b5f91729..c1a4bfb0 100644 --- a/Plugins/Luna/Luna.csproj +++ b/Plugins/Luna/Luna.csproj @@ -90,6 +90,7 @@ + diff --git a/Plugins/Luna/Models/Apis/LuaSys.cs b/Plugins/Luna/Models/Apis/LuaSys.cs index 7343d786..6d0b6691 100644 --- a/Plugins/Luna/Models/Apis/LuaSys.cs +++ b/Plugins/Luna/Models/Apis/LuaSys.cs @@ -294,6 +294,12 @@ public Process Run(string exePath, string args, string stdin, #endregion #region ILuaSys.System + public void VolumeUp() => Libs.Sys.VolumeChanger.VolumeUp(); + + public void VolumeDown() => Libs.Sys.VolumeChanger.VolumeDown(); + + public void VolumeMute() => Libs.Sys.VolumeChanger.Mute(); + static string osReleaseId; public string GetOsReleaseInfo() { diff --git a/Plugins/Luna/Properties/Resources.Designer.cs b/Plugins/Luna/Properties/Resources.Designer.cs index 076f186f..24ef560a 100644 --- a/Plugins/Luna/Properties/Resources.Designer.cs +++ b/Plugins/Luna/Properties/Resources.Designer.cs @@ -130,7 +130,7 @@ internal static System.Drawing.Bitmap StoredProcedureScript_16x { } /// - /// 查找类似 0.3.7 的本地化字符串。 + /// 查找类似 0.3.8 的本地化字符串。 /// internal static string Version { get { diff --git a/Plugins/Luna/Properties/Resources.resx b/Plugins/Luna/Properties/Resources.resx index 4af0ff56..53df6aa8 100644 --- a/Plugins/Luna/Properties/Resources.resx +++ b/Plugins/Luna/Properties/Resources.resx @@ -140,7 +140,7 @@ ..\Resources\Icons\App\StoredProcedureScript_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - 0.3.7 - new static parser + 0.3.8 + add sys:volume() \ No newline at end of file diff --git a/Plugins/Luna/Services/MenuUpdater.cs b/Plugins/Luna/Services/MenuUpdater.cs index 7e52f62b..0f68db6f 100644 --- a/Plugins/Luna/Services/MenuUpdater.cs +++ b/Plugins/Luna/Services/MenuUpdater.cs @@ -70,7 +70,19 @@ List GenSubMenuItems() foreach (var luaCtrl in luaCtrls) { var ctrl = luaCtrl; // capture - var mi = new ToolStripMenuItem(ctrl.name, null, (s, a) => ctrl.Start()); + Action onClick = () => + { + if (ctrl.isRunning) + { + ctrl.Stop(); + } + else + { + ctrl.Start(); + } + }; + + var mi = new ToolStripMenuItem(ctrl.name, null, (s, a) => onClick()); mi.Checked = luaCtrl.isRunning; mis.Add(mi); } diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index 4196b02e..c4262544 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -33,10 +33,12 @@ // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.9.3")] +[assembly: AssemblyVersion("1.3.9.4")] [assembly: AssemblyFileVersion("1.0.0.0")] /* + * v1.3.9.4 Add feature, stop script from systray menu. + * Add Sys:Volume*(). * v1.3.9.3 Add edit button in LuaUI. * v1.3.9.2 Fix index out of range bug. * Choice support double click. diff --git a/VgcApis/Interfaces/Lua/ILuaSys.cs b/VgcApis/Interfaces/Lua/ILuaSys.cs index c4f12a8a..fc5c8779 100644 --- a/VgcApis/Interfaces/Lua/ILuaSys.cs +++ b/VgcApis/Interfaces/Lua/ILuaSys.cs @@ -61,6 +61,12 @@ Process Run(string exePath, string args, string stdin, #endregion #region system + void VolumeUp(); + + void VolumeDown(); + + void VolumeMute(); + string GetOsVersion(); string GetOsReleaseInfo(); From 833e1c5cc6e4346852a831a670fb7dc7ff022f6a Mon Sep 17 00:00:00 2001 From: nobody Date: Sun, 24 May 2020 15:09:02 +0800 Subject: [PATCH 07/16] Fix index out of range again. --- V2RayGCon/Properties/AssemblyInfo.cs | 1 + VgcApis/Misc/Utils.cs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index c4262544..eb9f32ac 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -39,6 +39,7 @@ /* * v1.3.9.4 Add feature, stop script from systray menu. * Add Sys:Volume*(). + * Fix index out of range again. * v1.3.9.3 Add edit button in LuaUI. * v1.3.9.2 Fix index out of range bug. * Choice support double click. diff --git a/VgcApis/Misc/Utils.cs b/VgcApis/Misc/Utils.cs index 012786ec..fcb049cb 100644 --- a/VgcApis/Misc/Utils.cs +++ b/VgcApis/Misc/Utils.cs @@ -33,7 +33,8 @@ public static string GetWordFromCurPos(Scintilla editor) return ""; } - var start = Math.Min(editor.CurrentPosition - line.Position, text.Length) - 1; + var start = editor.CurrentPosition - line.Position - 1; + start = Clamp(start, 0, text.Length); var end = start; for (; start >= 0; start--) { From 47c7c93b94cf056c43e9d53e0672a23eba15c331 Mon Sep 17 00:00:00 2001 From: nobody Date: Mon, 25 May 2020 10:08:12 +0800 Subject: [PATCH 08/16] Selection hotkeys support in Misc:Choice(). --- .../Views/WinForms/FormChoice.Designer.cs | 86 +++++++++---------- Plugins/Luna/Views/WinForms/FormChoice.cs | 40 ++++++++- V2RayGCon/Properties/AssemblyInfo.cs | 3 +- 3 files changed, 84 insertions(+), 45 deletions(-) diff --git a/Plugins/Luna/Views/WinForms/FormChoice.Designer.cs b/Plugins/Luna/Views/WinForms/FormChoice.Designer.cs index 9990b5dd..51c637a6 100644 --- a/Plugins/Luna/Views/WinForms/FormChoice.Designer.cs +++ b/Plugins/Luna/Views/WinForms/FormChoice.Designer.cs @@ -28,49 +28,49 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormChoice)); - this.btnOk = new System.Windows.Forms.Button(); - this.lbTitle = new System.Windows.Forms.Label(); - this.btnCancel = new System.Windows.Forms.Button(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.SuspendLayout(); - // - // btnOk - // - resources.ApplyResources(this.btnOk, "btnOk"); - this.btnOk.Name = "btnOk"; - this.btnOk.UseVisualStyleBackColor = true; - this.btnOk.Click += new System.EventHandler(this.btnOk_Click); - // - // lbTitle - // - resources.ApplyResources(this.lbTitle, "lbTitle"); - this.lbTitle.Name = "lbTitle"; - // - // btnCancel - // - resources.ApplyResources(this.btnCancel, "btnCancel"); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.UseVisualStyleBackColor = true; - this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); - // - // FormChoice - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.lbTitle); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOk); - this.KeyPreview = true; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "FormChoice"; - this.Load += new System.EventHandler(this.FormChoice_Load); - this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormChoice_KeyDown); - this.ResumeLayout(false); - this.PerformLayout(); - + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormChoice)); + this.btnOk = new System.Windows.Forms.Button(); + this.lbTitle = new System.Windows.Forms.Label(); + this.btnCancel = new System.Windows.Forms.Button(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.SuspendLayout(); + // + // btnOk + // + resources.ApplyResources(this.btnOk, "btnOk"); + this.btnOk.Name = "btnOk"; + this.btnOk.UseVisualStyleBackColor = true; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // lbTitle + // + resources.ApplyResources(this.lbTitle, "lbTitle"); + this.lbTitle.Name = "lbTitle"; + // + // btnCancel + // + resources.ApplyResources(this.btnCancel, "btnCancel"); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // FormChoice + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.lbTitle); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOk); + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FormChoice"; + this.Load += new System.EventHandler(this.FormChoice_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormChoice_KeyDown); + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion diff --git a/Plugins/Luna/Views/WinForms/FormChoice.cs b/Plugins/Luna/Views/WinForms/FormChoice.cs index 8ee71c88..4fc139b8 100644 --- a/Plugins/Luna/Views/WinForms/FormChoice.cs +++ b/Plugins/Luna/Views/WinForms/FormChoice.cs @@ -44,6 +44,42 @@ private void FormChoice_Load(object sender, EventArgs e) #endregion #region private methods + void Choose(Keys key) + { + var kts = new Dictionary { + { Keys.D1, 0 }, + { Keys.D2, 1 }, + { Keys.D3, 2 }, + { Keys.D4, 3 }, + { Keys.D5, 4 }, + { Keys.D6, 5 }, + { Keys.D7, 6 }, + { Keys.D8, 7 }, + { Keys.D9, 8 }, + { Keys.D0, 9 }, + }; + + if (!kts.ContainsKey(key)) + { + return; + } + + var idx = kts[key]; + var len = radioButtons.Count; + if (idx >= len) + { + return; + } + + var btn = radioButtons[idx]; + + VgcApis.Misc.UI.Invoke(() => + { + btn.Focus(); + btn.PerformClick(); + }); + } + void SetResult() { for (int i = 0; i < radioButtons.Count; i++) @@ -125,7 +161,8 @@ private void btnCancel_Click(object sender, EventArgs e) private void FormChoice_KeyDown(object sender, KeyEventArgs e) { - switch (e.KeyCode) + var kc = e.KeyCode; + switch (kc) { case Keys.Escape: VgcApis.Misc.UI.CloseFormIgnoreError(this); @@ -134,6 +171,7 @@ private void FormChoice_KeyDown(object sender, KeyEventArgs e) VgcApis.Misc.UI.Invoke(btnOk.PerformClick); break; default: + Choose(kc); break; } } diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index eb9f32ac..35f72224 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -37,7 +37,8 @@ [assembly: AssemblyFileVersion("1.0.0.0")] /* - * v1.3.9.4 Add feature, stop script from systray menu. + * v1.3.9.4 Selection hotkeys support in Misc:Choice(). + * Add feature, stop script from systray menu. * Add Sys:Volume*(). * Fix index out of range again. * v1.3.9.3 Add edit button in LuaUI. From 213fd2ce06864d1aade007b7ec3181875e210d67 Mon Sep 17 00:00:00 2001 From: nobody Date: Mon, 25 May 2020 11:16:36 +0800 Subject: [PATCH 09/16] Update snippets. --- .../Luna/Libs/LuaSnippet/BestMatchSnippets.cs | 24 +++++++++++++++---- Plugins/Luna/Libs/LuaSnippet/SnippetsCache.cs | 7 +----- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Plugins/Luna/Libs/LuaSnippet/BestMatchSnippets.cs b/Plugins/Luna/Libs/LuaSnippet/BestMatchSnippets.cs index 600b9835..c2e99507 100644 --- a/Plugins/Luna/Libs/LuaSnippet/BestMatchSnippets.cs +++ b/Plugins/Luna/Libs/LuaSnippet/BestMatchSnippets.cs @@ -60,6 +60,9 @@ public void UpdateRequireModuleSnippets(List snippets) #endregion #region private methods + HashSet ignoredList = + new HashSet( + VgcApis.Models.Consts.Lua.LuaKeywords.Split(' ')); private IEnumerable BuildList() { @@ -69,6 +72,20 @@ private IEnumerable BuildList() fragment = VgcApis.Misc.Utils.GetFragment(editor, searchPattern); }); + var snps = new List(); + if (!ignoredList.Contains(fragment)) + { + snps = CreateSnippets(fragment); + } + + //return autocomplete items + foreach (var item in snps) + yield return item; + } + + private List CreateSnippets(string fragment) + { + List snps; var cache = customScriptSnippets; List candidates = cache @@ -85,15 +102,12 @@ private IEnumerable BuildList() } } - var sorted = table + snps = table .OrderBy(kv => kv.Value) .ThenBy(kv => kv.Key.GetLowerText()) .Select(kv => kv.Key as AutocompleteItem) .ToList(); - - //return autocomplete items - foreach (var item in sorted) - yield return item; + return snps; } List GenCandidateList(string fragment) diff --git a/Plugins/Luna/Libs/LuaSnippet/SnippetsCache.cs b/Plugins/Luna/Libs/LuaSnippet/SnippetsCache.cs index 5a595561..712ea10a 100644 --- a/Plugins/Luna/Libs/LuaSnippet/SnippetsCache.cs +++ b/Plugins/Luna/Libs/LuaSnippet/SnippetsCache.cs @@ -37,11 +37,6 @@ public BestMatchSnippets CreateBestMatchSnippets(ScintillaNET.Scintilla editor) #endregion #region private methods - string GetFilteredLuaKeywords() => - VgcApis.Models.Consts.Lua.LuaKeywords - .Replace("do", "") - .Replace("then", "") - .Replace("end", ""); List GetAllNameapaces() => VgcApis.Misc.Utils.GetAllAssembliesType() .Select(t => t.Namespace) @@ -93,7 +88,7 @@ List GenKeywords( IEnumerable initValues) => new StringBuilder(VgcApis.Models.Consts.Lua.LuaModules) .Append(@" ") - .Append(GetFilteredLuaKeywords()) + .Append(VgcApis.Models.Consts.Lua.LuaKeywords) .ToString() .Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .Union(initValues) From b97391e582ab0dd2713299b5a49be899b849ff16 Mon Sep 17 00:00:00 2001 From: nobody Date: Tue, 26 May 2020 10:11:51 +0800 Subject: [PATCH 10/16] Add Sys:CreateHttpServer(). --- .../Controllers/FormEditorCtrl/MenuCtrl.cs | 27 +- Plugins/Luna/Controllers/LuaCoreCtrl.cs | 4 +- Plugins/Luna/Luna.csproj | 1 + Plugins/Luna/Models/Apis/LuaSys.cs | 40 +++ .../Luna/Models/Apis/SysCmpos/HttpServer.cs | 168 ++++++++++++ Plugins/Luna/Properties/Resources.Designer.cs | 2 +- Plugins/Luna/Properties/Resources.resx | 4 +- .../Icons/editor/HamburgerMenu_16x.png | Bin 0 -> 146 bytes Plugins/Luna/Services/FormMgrSvc.cs | 9 +- Plugins/Luna/Services/LuaServer.cs | 6 +- .../Luna/Views/UserControls/LuaUI.Designer.cs | 126 ++++++--- Plugins/Luna/Views/UserControls/LuaUI.cs | 79 ++++-- Plugins/Luna/Views/UserControls/LuaUI.resx | 242 ++++++++++-------- .../Luna/Views/UserControls/LuaUI.zh-CN.resx | 86 +++++-- Plugins/Luna/Views/WinForms/FormEditor.cs | 26 +- V2RayGCon/Properties/AssemblyInfo.cs | 4 +- .../Files/lua/modules/httpApiServ.lua | 84 ++++++ VgcApis/Interfaces/Lua/ILuaSys.cs | 4 + VgcApis/Models/Consts/Lua.cs | 2 + 19 files changed, 701 insertions(+), 213 deletions(-) create mode 100644 Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs create mode 100644 Plugins/Luna/Resources/Icons/editor/HamburgerMenu_16x.png create mode 100644 V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua diff --git a/Plugins/Luna/Controllers/FormEditorCtrl/MenuCtrl.cs b/Plugins/Luna/Controllers/FormEditorCtrl/MenuCtrl.cs index b4b9af8a..9c43fd54 100644 --- a/Plugins/Luna/Controllers/FormEditorCtrl/MenuCtrl.cs +++ b/Plugins/Luna/Controllers/FormEditorCtrl/MenuCtrl.cs @@ -51,10 +51,24 @@ public MenuCtrl( } public void Run( - Services.FormMgrSvc formMgrService) + Services.FormMgrSvc formMgrService, + Models.Data.LuaCoreSetting initialCoreSettings) { InitControls(); BindEvents(formMgrService); + + if (initialCoreSettings != null) + { + var name = initialCoreSettings.name; + if (!string.IsNullOrEmpty(name)) + { + editorCtrl.LoadScript(name); + } + + var enabled = initialCoreSettings.isLoadClr; + UpdateClrControlsEanbledState(enabled); + editorCtrl.isLoadClrLib = enabled; + } } #region private method @@ -71,9 +85,7 @@ private void BindEvents(FormMgrSvc formMgrService) miLoadClrLib.Click += (s, a) => { var enable = !miLoadClrLib.Checked; - miLoadClrLib.Checked = enable; - smiLbClrLib.Enabled = enable; - editorCtrl.isLoadClrLib = enable; + UpdateClrControlsEanbledState(enable); }; miNewWindow.Click += (s, a) => @@ -130,6 +142,13 @@ private void BindEvents(FormMgrSvc formMgrService) } }; } + + private void UpdateClrControlsEanbledState(bool enable) + { + miLoadClrLib.Checked = enable; + smiLbClrLib.Enabled = enable; + editorCtrl.isLoadClrLib = enable; + } #endregion } } diff --git a/Plugins/Luna/Controllers/LuaCoreCtrl.cs b/Plugins/Luna/Controllers/LuaCoreCtrl.cs index 22dd4f80..84564137 100644 --- a/Plugins/Luna/Controllers/LuaCoreCtrl.cs +++ b/Plugins/Luna/Controllers/LuaCoreCtrl.cs @@ -132,7 +132,6 @@ public bool isRunning } } - void InvokeOnStateChangeIgnoreError() { try @@ -144,7 +143,8 @@ void InvokeOnStateChangeIgnoreError() #endregion #region public methods - public string GetScript() => coreSetting.script; + public Models.Data.LuaCoreSetting GetCoreSettings() => + coreSetting; public void SetScriptName(string name) { diff --git a/Plugins/Luna/Luna.csproj b/Plugins/Luna/Luna.csproj index c1a4bfb0..7377ace0 100644 --- a/Plugins/Luna/Luna.csproj +++ b/Plugins/Luna/Luna.csproj @@ -101,6 +101,7 @@ + diff --git a/Plugins/Luna/Models/Apis/LuaSys.cs b/Plugins/Luna/Models/Apis/LuaSys.cs index 6d0b6691..58cce2a6 100644 --- a/Plugins/Luna/Models/Apis/LuaSys.cs +++ b/Plugins/Luna/Models/Apis/LuaSys.cs @@ -70,6 +70,30 @@ void TrackdownProcess(Process proc) } #endregion + #region ILuaSys.Net + List httpServs = new List(); + + public bool CreateHttpServer( + string url, + VgcApis.Interfaces.Lua.ILuaMailBox inbox, + VgcApis.Interfaces.Lua.ILuaMailBox outbox) + { + try + { + var serv = new SysCmpos.HttpServer(url, inbox, outbox); + serv.Start(); + lock (httpServs) + { + httpServs.Add(serv); + } + return true; + } + catch { } + return false; + } + + #endregion + #region ILluaSys.Hotkey public string GetAllKeyNames() { @@ -436,6 +460,21 @@ private void KillAllProcesses() } } + void CloseAllHttpServers() + { + List servs; + lock (httpServs) + { + servs = httpServs.ToList(); + httpServs.Clear(); + } + + foreach (var s in servs) + { + s.Stop(); + } + } + void CloseAllMailBox() { List boxes; @@ -468,6 +507,7 @@ void RemoveAllKeyboardHooks() protected override void Cleanup() { RemoveAllKeyboardHooks(); + CloseAllHttpServers(); CloseAllMailBox(); KillAllProcesses(); } diff --git a/Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs b/Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs new file mode 100644 index 00000000..e1c4742a --- /dev/null +++ b/Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Concurrent; +using System.IO; +using System.Net; + +namespace Luna.Models.Apis.SysCmpos +{ + public class HttpServer : VgcApis.BaseClasses.Disposable + { + + HttpListener serv; + + + private readonly VgcApis.Interfaces.Lua.ILuaMailBox inbox; + private readonly VgcApis.Interfaces.Lua.ILuaMailBox outbox; + + public HttpServer( + string url, + VgcApis.Interfaces.Lua.ILuaMailBox inbox, + VgcApis.Interfaces.Lua.ILuaMailBox outbox) + { + this.inbox = inbox; + this.outbox = outbox; + serv = new HttpListener(); + serv.Prefixes.Add(url); + } + + #region public methods + public bool Start() + { + try + { + Stop(); + serv.Start(); + HandleConnOut(); + HandleConnIn(); + return true; + } + catch { } + return false; + } + + public void Stop() + { + try + { + serv.Stop(); + } + catch { } + } + #endregion + + #region protected + protected override void Cleanup() + { + Stop(); + } + #endregion + + #region private methods + const int MaxContextLen = 10240; + + ConcurrentDictionary contexts = new ConcurrentDictionary(); + + void HandleConnOut() + { + VgcApis.Misc.Utils.RunInBackground(() => + { + try + { + while (true) + { + var mail = outbox.Wait(); + if (mail == null) + { + break; + } + + if (!contexts.TryRemove(mail.title, out var ctx)) + { + continue; + } + + HandleOneConnOut(ctx, mail.GetContent()); + } + } + catch { } + }); + } + + void HandleOneConnOut(HttpListenerContext ctx, string content) + { + VgcApis.Misc.Utils.RunInBackground(() => + { + try + { + var resp = ctx.Response; + var encoding = ctx.Request.ContentEncoding; + var buff = encoding.GetBytes(content ?? ""); + resp.ContentLength64 = buff.Length; + using (var s = resp.OutputStream) + { + s.Write(buff, 0, buff.Length); + } + resp.Close(); + } + catch { } + }); + } + + void HandleConnIn() + { + VgcApis.Misc.Utils.RunInBackground(() => + { + try + { + while (serv.IsListening) + { + if (contexts.Keys.Count > MaxContextLen) + { + VgcApis.Misc.Utils.Sleep(100); + continue; + } + + var ctx = serv.GetContext(); + try + { + HandleOneConnection(ctx); + } + catch { } + } + } + catch { }; + }); + } + + int HttpMethodToCode(string method) + { + switch (method) + { + case "POST": + return 1; + default: + return 0; + } + } + + void HandleOneConnection(HttpListenerContext ctx) + { + var req = ctx.Request; + var code = HttpMethodToCode(req.HttpMethod); + + string text; + using (var reader = new StreamReader(req.InputStream, req.ContentEncoding)) + { + text = reader.ReadToEnd(); + } + + var id = Guid.NewGuid().ToString(); + contexts.TryAdd(id, ctx); + inbox.Send(inbox.GetAddress(), code, id, true, text ?? ""); + } + + #endregion + + + } +} diff --git a/Plugins/Luna/Properties/Resources.Designer.cs b/Plugins/Luna/Properties/Resources.Designer.cs index 24ef560a..aedb3552 100644 --- a/Plugins/Luna/Properties/Resources.Designer.cs +++ b/Plugins/Luna/Properties/Resources.Designer.cs @@ -130,7 +130,7 @@ internal static System.Drawing.Bitmap StoredProcedureScript_16x { } /// - /// 查找类似 0.3.8 的本地化字符串。 + /// 查找类似 0.3.9 的本地化字符串。 /// internal static string Version { get { diff --git a/Plugins/Luna/Properties/Resources.resx b/Plugins/Luna/Properties/Resources.resx index 53df6aa8..6db0985b 100644 --- a/Plugins/Luna/Properties/Resources.resx +++ b/Plugins/Luna/Properties/Resources.resx @@ -140,7 +140,7 @@ ..\Resources\Icons\App\StoredProcedureScript_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - 0.3.8 - add sys:volume() + 0.3.9 + add Sys:CreateHttpServer() \ No newline at end of file diff --git a/Plugins/Luna/Resources/Icons/editor/HamburgerMenu_16x.png b/Plugins/Luna/Resources/Icons/editor/HamburgerMenu_16x.png new file mode 100644 index 0000000000000000000000000000000000000000..d1f84c707489d3382d5d10fe93e8cf0ec07c66d6 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5M?jcysy3fAP|(HG z#WAEJ?(O7_Tnq{vE~Zg`%Cpxu}Vql4l`5e pQpqzp-?=B&ggr9m+t>U%JBL$BvRdh>t~1a)22WQ%mvv4FO#s2SEL8vi literal 0 HcmV?d00001 diff --git a/Plugins/Luna/Services/FormMgrSvc.cs b/Plugins/Luna/Services/FormMgrSvc.cs index 95ab5fc0..20632805 100644 --- a/Plugins/Luna/Services/FormMgrSvc.cs +++ b/Plugins/Luna/Services/FormMgrSvc.cs @@ -29,16 +29,19 @@ public void Run( } #region public methods - public void CreateNewEditor() => CreateNewEditor(""); + public void CreateNewEditor() => CreateNewEditor(null); - public void CreateNewEditor(string scriptName) + public void CreateNewEditor(Models.Data.LuaCoreSetting initialCoreSettings) { lock (formLocker) { VgcApis.Misc.UI.Invoke(() => { var newForm = Views.WinForms.FormEditor.CreateForm( - api, settings, luaServer, this, scriptName); + api, settings, luaServer, this, + + initialCoreSettings); + newForm.FormClosed += (s, a) => { var form = newForm; // capture diff --git a/Plugins/Luna/Services/LuaServer.cs b/Plugins/Luna/Services/LuaServer.cs index 98b44979..8cb09c4b 100644 --- a/Plugins/Luna/Services/LuaServer.cs +++ b/Plugins/Luna/Services/LuaServer.cs @@ -56,10 +56,8 @@ public List GetAllScripts() var ctrls = GetAllLuaCoreCtrls(); foreach (var luaCore in ctrls) { - scripts.Add(new string[] { - luaCore.name, - luaCore.GetScript(), - }); + var cs = luaCore.GetCoreSettings(); + scripts.Add(new string[] { cs.name, cs.script }); } return scripts; } diff --git a/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs b/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs index 41b17677..dba112fb 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs +++ b/Plugins/Luna/Views/UserControls/LuaUI.Designer.cs @@ -32,13 +32,21 @@ private void InitializeComponent() System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LuaUI)); this.btnRun = new System.Windows.Forms.Button(); this.btnStop = new System.Windows.Forms.Button(); - this.btnKill = new System.Windows.Forms.Button(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.lbRunningState = new System.Windows.Forms.Label(); this.lbName = new System.Windows.Forms.Label(); - this.btnRemove = new System.Windows.Forms.Button(); this.rlbOptions = new VgcApis.UserControls.RoundLabel(); - this.btnEdit = new System.Windows.Forms.Button(); + this.btnMenuMore = new System.Windows.Forms.Button(); + this.contextMenuStripMore = new System.Windows.Forms.ContextMenuStrip(this.components); + this.actionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.restartToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.stopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.terminateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.optionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.contextMenuStripMore.SuspendLayout(); this.SuspendLayout(); // // btnRun @@ -59,15 +67,6 @@ private void InitializeComponent() this.btnStop.UseVisualStyleBackColor = true; this.btnStop.Click += new System.EventHandler(this.btnStop_Click); // - // btnKill - // - resources.ApplyResources(this.btnKill, "btnKill"); - this.btnKill.Cursor = System.Windows.Forms.Cursors.Default; - this.btnKill.Name = "btnKill"; - this.toolTip1.SetToolTip(this.btnKill, resources.GetString("btnKill.ToolTip")); - this.btnKill.UseVisualStyleBackColor = true; - this.btnKill.Click += new System.EventHandler(this.btnKill_Click); - // // lbRunningState // this.lbRunningState.Cursor = System.Windows.Forms.Cursors.SizeAll; @@ -86,15 +85,6 @@ private void InitializeComponent() this.toolTip1.SetToolTip(this.lbName, resources.GetString("lbName.ToolTip")); this.lbName.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbName_MouseDown); // - // btnRemove - // - resources.ApplyResources(this.btnRemove, "btnRemove"); - this.btnRemove.Cursor = System.Windows.Forms.Cursors.Default; - this.btnRemove.Name = "btnRemove"; - this.toolTip1.SetToolTip(this.btnRemove, resources.GetString("btnRemove.ToolTip")); - this.btnRemove.UseVisualStyleBackColor = true; - this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click); - // // rlbOptions // this.rlbOptions._BackColor = System.Drawing.Color.Wheat; @@ -105,15 +95,75 @@ private void InitializeComponent() this.toolTip1.SetToolTip(this.rlbOptions, resources.GetString("rlbOptions.ToolTip")); this.rlbOptions.Click += new System.EventHandler(this.rlbOptions_Click); // - // btnEdit + // btnMenuMore + // + resources.ApplyResources(this.btnMenuMore, "btnMenuMore"); + this.btnMenuMore.Cursor = System.Windows.Forms.Cursors.Default; + this.btnMenuMore.Name = "btnMenuMore"; + this.toolTip1.SetToolTip(this.btnMenuMore, resources.GetString("btnMenuMore.ToolTip")); + this.btnMenuMore.UseVisualStyleBackColor = true; + this.btnMenuMore.Click += new System.EventHandler(this.btnMenuMore_Click); + // + // contextMenuStripMore + // + this.contextMenuStripMore.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.actionToolStripMenuItem, + this.toolStripMenuItem1, + this.editToolStripMenuItem, + this.optionToolStripMenuItem, + this.removeToolStripMenuItem}); + this.contextMenuStripMore.Name = "contextMenuStripMore"; + resources.ApplyResources(this.contextMenuStripMore, "contextMenuStripMore"); + // + // actionToolStripMenuItem + // + this.actionToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.restartToolStripMenuItem, + this.stopToolStripMenuItem, + this.terminateToolStripMenuItem}); + this.actionToolStripMenuItem.Name = "actionToolStripMenuItem"; + resources.ApplyResources(this.actionToolStripMenuItem, "actionToolStripMenuItem"); + // + // restartToolStripMenuItem + // + this.restartToolStripMenuItem.Name = "restartToolStripMenuItem"; + resources.ApplyResources(this.restartToolStripMenuItem, "restartToolStripMenuItem"); + this.restartToolStripMenuItem.Click += new System.EventHandler(this.restartToolStripMenuItem_Click); + // + // stopToolStripMenuItem + // + this.stopToolStripMenuItem.Name = "stopToolStripMenuItem"; + resources.ApplyResources(this.stopToolStripMenuItem, "stopToolStripMenuItem"); + this.stopToolStripMenuItem.Click += new System.EventHandler(this.stopToolStripMenuItem_Click); + // + // terminateToolStripMenuItem + // + this.terminateToolStripMenuItem.Name = "terminateToolStripMenuItem"; + resources.ApplyResources(this.terminateToolStripMenuItem, "terminateToolStripMenuItem"); + this.terminateToolStripMenuItem.Click += new System.EventHandler(this.terminateToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1"); + // + // editToolStripMenuItem + // + this.editToolStripMenuItem.Name = "editToolStripMenuItem"; + resources.ApplyResources(this.editToolStripMenuItem, "editToolStripMenuItem"); + this.editToolStripMenuItem.Click += new System.EventHandler(this.editToolStripMenuItem_Click); + // + // optionToolStripMenuItem + // + this.optionToolStripMenuItem.Name = "optionToolStripMenuItem"; + resources.ApplyResources(this.optionToolStripMenuItem, "optionToolStripMenuItem"); + this.optionToolStripMenuItem.Click += new System.EventHandler(this.optionToolStripMenuItem_Click); + // + // removeToolStripMenuItem // - this.btnEdit.BackgroundImage = global::Luna.Properties.Resources.EditWindow_16x; - resources.ApplyResources(this.btnEdit, "btnEdit"); - this.btnEdit.Cursor = System.Windows.Forms.Cursors.Default; - this.btnEdit.Name = "btnEdit"; - this.toolTip1.SetToolTip(this.btnEdit, resources.GetString("btnEdit.ToolTip")); - this.btnEdit.UseVisualStyleBackColor = true; - this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); + this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; + resources.ApplyResources(this.removeToolStripMenuItem, "removeToolStripMenuItem"); + this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click); // // LuaUI // @@ -121,18 +171,17 @@ private void InitializeComponent() this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.Controls.Add(this.rlbOptions); - this.Controls.Add(this.btnRemove); + this.Controls.Add(this.btnMenuMore); this.Controls.Add(this.lbName); this.Controls.Add(this.lbRunningState); - this.Controls.Add(this.btnKill); this.Controls.Add(this.btnStop); - this.Controls.Add(this.btnEdit); this.Controls.Add(this.btnRun); this.Cursor = System.Windows.Forms.Cursors.SizeAll; this.Name = "LuaUI"; this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip")); this.Load += new System.EventHandler(this.LuaUI_Load); this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LuaUI_MouseDown); + this.contextMenuStripMore.ResumeLayout(false); this.ResumeLayout(false); } @@ -141,12 +190,19 @@ private void InitializeComponent() private System.Windows.Forms.Button btnRun; private System.Windows.Forms.Button btnStop; - private System.Windows.Forms.Button btnKill; private System.Windows.Forms.ToolTip toolTip1; private System.Windows.Forms.Label lbRunningState; private System.Windows.Forms.Label lbName; - private System.Windows.Forms.Button btnRemove; private VgcApis.UserControls.RoundLabel rlbOptions; - private System.Windows.Forms.Button btnEdit; + private System.Windows.Forms.Button btnMenuMore; + private System.Windows.Forms.ContextMenuStrip contextMenuStripMore; + private System.Windows.Forms.ToolStripMenuItem actionToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem restartToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem stopToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem terminateToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem optionToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem; } } diff --git a/Plugins/Luna/Views/UserControls/LuaUI.cs b/Plugins/Luna/Views/UserControls/LuaUI.cs index 6ba407d8..baf9dc2c 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.cs +++ b/Plugins/Luna/Views/UserControls/LuaUI.cs @@ -115,10 +115,7 @@ void UpdateRunningState() #endregion #region UI event handlers - private void btnKill_Click(object sender, EventArgs e) - { - luaCoreCtrl.Abort(); - } + private void btnStop_Click(object sender, EventArgs e) { @@ -130,23 +127,6 @@ private void btnRun_Click(object sender, EventArgs e) luaCoreCtrl.Start(); } - private void btnRemove_Click(object sender, EventArgs e) - { - var scriptName = luaCoreCtrl.name; - if (string.IsNullOrEmpty(scriptName) - || !VgcApis.Misc.UI.Confirm(I18N.ConfirmRemoveScript)) - { - return; - } - - VgcApis.Misc.Utils.RunInBackground(() => - { - if (!luaServer.RemoveScriptByName(scriptName)) - { - VgcApis.Misc.UI.MsgBoxAsync("", I18N.ScriptNotFound); - } - }); - } private void LuaUI_MouseDown(object sender, MouseEventArgs e) { @@ -168,13 +148,62 @@ private void rlbOptions_Click(object sender, EventArgs e) Views.WinForms.FormLuaCoreSettings.ShowForm(luaCoreCtrl); } - private void btnEdit_Click(object sender, EventArgs e) + + + private void restartToolStripMenuItem_Click(object sender, EventArgs e) { - var sn = luaCoreCtrl.name; - formMgrSvc.CreateNewEditor(sn); + luaCoreCtrl.Start(); + } + + private void stopToolStripMenuItem_Click(object sender, EventArgs e) + { + luaCoreCtrl.Stop(); + } + + private void terminateToolStripMenuItem_Click(object sender, EventArgs e) + { + luaCoreCtrl.Abort(); + } + + private void editToolStripMenuItem_Click(object sender, EventArgs e) + { + var cs = luaCoreCtrl.GetCoreSettings(); + formMgrSvc.CreateNewEditor(cs); + } + + private void optionToolStripMenuItem_Click(object sender, EventArgs e) + { + Views.WinForms.FormLuaCoreSettings.ShowForm(luaCoreCtrl); + } - #endregion + private void removeToolStripMenuItem_Click(object sender, EventArgs e) + { + var scriptName = luaCoreCtrl.name; + if (string.IsNullOrEmpty(scriptName) + || !VgcApis.Misc.UI.Confirm(I18N.ConfirmRemoveScript)) + { + return; + } + VgcApis.Misc.Utils.RunInBackground(() => + { + if (!luaServer.RemoveScriptByName(scriptName)) + { + VgcApis.Misc.UI.MsgBoxAsync("", I18N.ScriptNotFound); + } + }); + + } + + private void btnMenuMore_Click(object sender, EventArgs e) + { + var control = sender as Control; + Point pos = new Point(control.Left, control.Top + control.Height); + contextMenuStripMore.Show(this, pos); + } + + + #endregion } } diff --git a/Plugins/Luna/Views/UserControls/LuaUI.resx b/Plugins/Luna/Views/UserControls/LuaUI.resx index 8848d7a8..8a3310aa 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.resx +++ b/Plugins/Luna/Views/UserControls/LuaUI.resx @@ -132,7 +132,7 @@ Zoom - 272, 4 + 290, 4 2, 2, 2, 2 @@ -163,7 +163,7 @@ $this - 7 + 6 @@ -179,7 +179,7 @@ NoControl - 292, 4 + 311, 4 2, 2, 2, 2 @@ -205,45 +205,6 @@ 5 - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - xAAADsQBlSsOGwAAAKpJREFUOE/dU0sOQDAU7CEcwIWcgEW3Entns+EIPYUNEolFt/WGJ9GnxGdnklm0 - b2bSMlUS1lpNbIhOEHuaZUfQMCaaqa5clyaujZRH7GEGDbRsW8Hmsc+zg1FyKAuEjF4ILQwGIUOIHGI2 - s8bRQsIr8nU0Ahp55zPsNfDAiwBvAJ5B6uD9ScDnj/jtN3IXzJ0WbvSKBNBiqfKdNgarDHDIu8e0Bw0f - PGelZoKjbA1QHzFCAAAAAElFTkSuQmCC - - - - Zoom - - - 312, 4 - - - 2, 2, 2, 2 - - - 20, 20 - - - 3 - - - Terminate this script. - - - btnKill - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - 宋体, 9pt, style=Bold @@ -278,13 +239,13 @@ $this - 3 + 4 35, 8 - 212, 13 + 250, 13 7 @@ -308,49 +269,7 @@ $this - 2 - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - xAAADsQBlSsOGwAAALZJREFUOE9jQAbfvn0zgDJxApxqgBIVQPwfiDOhQhgAJAdVUwEVggCQwKubV/9v - i3T///b+HayGgMRAcltCHP4/v3gWYQiQYQDEYM0L1Xj/r3XWxTAEphkkB1IDMgSkB6QXqwJkQ/DJgTXD - AC6FRGmGAWyGEK0ZBtANIUkzCFBkALpmEI3MxmsINs0gPjYxDENwaQaJ45ODaaZKQiI/KcMASACIsWqG - AZAcVA2qZhgASpCYnRkYAKjTuVoFkX4yAAAAAElFTkSuQmCC - - - - Zoom - - - NoControl - - - 332, 4 - - - 2, 2, 2, 2 - - - 20, 20 - - - 8 - - - Delete this script. - - - btnRemove - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 + 3 357, 6 @@ -386,43 +305,104 @@ $this - 0 + 1 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAERJREFUOE+1zqENADAMA8HOlv3nCXVZSR/ErQxOigJeXpK+4NNxju6WAwNVNZIL + ODIBmktyAUcmQHNJLuC4Aq/wOae1ARVS/s9sUlFoAAAAAElFTkSuQmCC + - + Zoom - + NoControl - - 252, 4 + + 332, 4 - + 2, 2, 2, 2 - + 20, 20 - - 3 - - - MiddleLeft + + 8 - - Open editor. + + Show menu. - - btnEdit + + btnMenuMore - + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - - 6 + + 2 + + + 118, 17 + + + 134, 22 + + + Restart + + + 134, 22 + + + Stop + + + 134, 22 + + + Terminate + + + 122, 22 + + + Action + + + 119, 6 + + + 122, 22 + + + Edit + + + 122, 22 + + + Options + + + 122, 22 + + + Delete + + + 123, 98 + + + contextMenuStripMore + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 True @@ -442,6 +422,54 @@ System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + actionToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + restartToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + stopToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + terminateToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripMenuItem1 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + editToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + optionToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + removeToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + LuaUI diff --git a/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx b/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx index 79ee13d8..18e27338 100644 --- a/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx +++ b/Plugins/Luna/Views/UserControls/LuaUI.zh-CN.resx @@ -140,7 +140,51 @@ 停止此脚本 - + + 脚本是否正在运行 + + + 脚本名 + + + (A)自启动 +(C)加载CLR库 +(H)不在托盘菜单显示 +无 - 这不用解释了吧 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAERJREFUOE+1zqENADAMA8HOlv3nCXVZSR/ErQxOigJeXpK+4NNxju6WAwNVNZIL + ODIBmktyAUcmQHNJLuC4Aq/wOae1ARVS/s9sUlFoAAAAAElFTkSuQmCC + + + + 显示菜单 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAJRJREFUOE+tkssNgCAQRE30bls0QBE2YTdeaAQtggNNcF3HZE12Evw7yYTMsm8u + 0IjIJ1eHT8xBVUrp4RFudUQihgKk8JJzFpxTrYQYG7DcwXMIQZxzEmOslliGA4TlIaUk3vvDEmIoqK5K + iKFgdFZCDAWjTwVn8HZPDIUb8CZibMDSL8/4/iPt0pLnX/mNq8P7lmYFTOJvU/foAJoAAAAASUVORK5C + YII= + + + + 重启 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAClJREFUOE9jGGbg27dv/4nBUOWYACS5UI0XLx41YGQYQAyGKh8egIEBAMuiAHSi + jpx4AAAAAElFTkSuQmCC + + + + 停止 + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAAKpJREFUOE/dU0sOQDAU7CEcwIWcgEW3Entns+EIPYUNEolFt/WGJ9GnxGdnklm0 @@ -149,16 +193,28 @@ PGelZoKjbA1QHzFCAAAAAElFTkSuQmCC - - 强制终止此脚本 + + 强制终止 - - 脚本是否正在运行 + + 操作 - - 脚本名 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAKhJREFUOE/NkDEOAiEQRfdEHoKeytZTeBIPsFfwCnY2Nh7DxmTX7EA7+kiGiNEN + UEnyMhDmPyYMqpqIMU7AvmlZeHc4KTRLXoEUHLajCZrIAgtTN/ujni9X9d6rc+4nWUCzhZkEaiRZwIFm + QiaokRSCeXqoLFJMYZIQQrp/56sAPiX2NyJSJwAkvGxhapByilUBILnd5zxNswCQcA9dgjX+UNBDFvQT + 9QkHKOQWh3DrDAAAAABJRU5ErkJggg== + + + + 编辑 + + + 选项 - + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAALZJREFUOE9jQAbfvn0zgDJxApxqgBIVQPwfiDOhQhgAJAdVUwEVggCQwKubV/9v @@ -167,17 +223,11 @@ AZAcVA2qZhgASpCYnRkYAKjTuVoFkX4yAAAAAElFTkSuQmCC - - 删除此脚本 - - - (A)自启动 -(C)加载CLR库 -(H)不在托盘菜单显示 -无 - 这不用解释了吧 + + 删除 - - 打开编辑器 + + 拖放调整顺序 diff --git a/Plugins/Luna/Views/WinForms/FormEditor.cs b/Plugins/Luna/Views/WinForms/FormEditor.cs index 7372facd..2dcc55d2 100644 --- a/Plugins/Luna/Views/WinForms/FormEditor.cs +++ b/Plugins/Luna/Views/WinForms/FormEditor.cs @@ -1,4 +1,5 @@ -using Luna.Resources.Langs; +using Luna.Models.Data; +using Luna.Resources.Langs; using System.Windows.Forms; namespace Luna.Views.WinForms @@ -12,7 +13,7 @@ internal partial class FormEditor : Form Services.LuaServer luaServer; Services.Settings settings; Services.FormMgrSvc formMgr; - private readonly string loadScriptName; + private readonly LuaCoreSetting initialCoreSettings; VgcApis.Interfaces.Services.IApiService api; ScintillaNET.Scintilla editor; @@ -23,14 +24,16 @@ public static FormEditor CreateForm( Services.Settings settings, Services.LuaServer luaServer, Services.FormMgrSvc formMgr, - string loadScriptName) + + Models.Data.LuaCoreSetting initialCoreSettings) { FormEditor r = null; VgcApis.Misc.UI.Invoke(() => { r = new FormEditor( api, settings, luaServer, formMgr, - loadScriptName); + + initialCoreSettings); }); return r; } @@ -40,13 +43,16 @@ public static FormEditor CreateForm( Services.Settings settings, Services.LuaServer luaServer, Services.FormMgrSvc formMgr, - string loadScriptName) + + Models.Data.LuaCoreSetting initialCoreSettings) { this.api = api; this.formMgr = formMgr; - this.loadScriptName = loadScriptName; + this.initialCoreSettings = initialCoreSettings; + this.settings = settings; this.luaServer = luaServer; + InitializeComponent(); VgcApis.Misc.UI.AutoSetFormIcon(this); title = string.Format(I18N.LunaScrEditor, Properties.Resources.Version); @@ -95,6 +101,7 @@ private void FormEditor_Load(object sender, System.EventArgs e) menuCtrl = new Controllers.FormEditorCtrl.MenuCtrl( this, editorCtrl, + newWindowToolStripMenuItem, showScriptManagerToolStripMenuItem, loadFileToolStripMenuItem, @@ -104,7 +111,7 @@ private void FormEditor_Load(object sender, System.EventArgs e) toolStripStatusClrLib, cboxScriptName); - menuCtrl.Run(formMgr); + menuCtrl.Run(formMgr, initialCoreSettings); this.FormClosing += FormClosingHandler; this.FormClosed += (s, a) => @@ -123,10 +130,7 @@ private void FormEditor_Load(object sender, System.EventArgs e) })); }; - if (!string.IsNullOrEmpty(loadScriptName)) - { - editorCtrl.LoadScript(loadScriptName); - } + } #region private methods diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index 35f72224..1a05d793 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -33,10 +33,12 @@ // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.9.4")] +[assembly: AssemblyVersion("1.3.9.6")] [assembly: AssemblyFileVersion("1.0.0.0")] /* + * v1.3.9.6 Add Sys:CreateHttpServer(). + * v1.3.9.5 Adjust LuaUI. * v1.3.9.4 Selection hotkeys support in Misc:Choice(). * Add feature, stop script from systray menu. * Add Sys:Volume*(). diff --git a/V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua b/V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua new file mode 100644 index 00000000..923c817e --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua @@ -0,0 +1,84 @@ +--[[ + +example: + +local url = "http://localhost:4000/" + +local handlers = { + ["hello"] = function() return "world" end, +} + +local html = "

index.html

" + +local hapi = require('lua.modules.httpApiServ').new() + +if hapi:Run(url, html, handlers) then + print("Waiting for connections ...") + hapi:HandleConnection() +else + print("Server fails to start!") +end + +--]] + +local M = {} + +function M:Run(url, html, handlers) + + assert(type(handlers) == "table", "Param handlers should be function table.") + assert(type(html) == "string", "Param index should be string.") + + local inbox = Sys:ApplyRandomMailBox() + assert(inbox ~= nil, "Apply mail box failed!") + + local outbox = Sys:ApplyRandomMailBox() + assert(outbox ~= nil, "Apply mail box failed!") + + self.url = url + self.html = html + self.handlers = handlers + + self.inbox = inbox + self.outbox = outbox + self.outadd = outbox:GetAddress() + + local ok = Sys:CreateHttpServer(self.url, self.inbox, self.outbox) + return ok +end + +function M:HandlePost(title, cmd) + local r = "" + if self.handlers[cmd] == nil then + r = "unknow cmd: " .. cmd + else + r = self.handlers[cmd]() + end + + self.outbox:Send(self.outadd, title, r) +end + +function M:HandleConnection() + repeat + local mail = self.inbox:Wait() + if mail ~= nil then + local code = mail:GetCode() + local title = mail:GetTitle() + if code ~= 1 and self.html ~= nil then + self.outbox:Send(self.outadd, title, self.html) + else + local cmd = mail:GetContent() + self:HandlePost(title, cmd) + end + end + until mail == nil +end + +function M.new() + local o = {} + + setmetatable(o, {__index = M}) + + return o +end + +return M \ No newline at end of file diff --git a/VgcApis/Interfaces/Lua/ILuaSys.cs b/VgcApis/Interfaces/Lua/ILuaSys.cs index fc5c8779..b2925a6a 100644 --- a/VgcApis/Interfaces/Lua/ILuaSys.cs +++ b/VgcApis/Interfaces/Lua/ILuaSys.cs @@ -5,6 +5,10 @@ namespace VgcApis.Interfaces.Lua { public interface ILuaSys { + #region Net + bool CreateHttpServer(string url, ILuaMailBox inbox, ILuaMailBox outbox); + #endregion + #region keyboard hotkey string GetAllKeyNames(); bool UnregisterHotKey(ILuaMailBox mailbox, string handle); diff --git a/VgcApis/Models/Consts/Lua.cs b/VgcApis/Models/Consts/Lua.cs index 4d376995..19236586 100644 --- a/VgcApis/Models/Consts/Lua.cs +++ b/VgcApis/Models/Consts/Lua.cs @@ -59,6 +59,8 @@ static List GetterApiFuncNames() typeof(Interfaces.Lua.ILuaMisc), typeof(Interfaces.Lua.ILuaServer), typeof(Interfaces.Lua.ILuaWeb), + typeof(Interfaces.Lua.ILuaMailBox), + typeof(Interfaces.Lua.ILuaMail), typeof(Interfaces.ICoreServCtrl), typeof(Interfaces.CoreCtrlComponents.IConfiger), typeof(Interfaces.CoreCtrlComponents.ICoreCtrl), From 00de82afef9be7d75728dca27342d9d9a788f9e9 Mon Sep 17 00:00:00 2001 From: nobody Date: Tue, 26 May 2020 17:52:19 +0800 Subject: [PATCH 11/16] Refactor Sys:CreateHttpServer(). --- Plugins/Luna/Models/Apis/LuaSys.cs | 12 ++- .../Luna/Models/Apis/SysCmpos/HttpServer.cs | 10 +- .../Files/lua/modules/httpApiServ.lua | 92 ++++++++++++------- VgcApis/Interfaces/Lua/ILuaSys.cs | 2 +- VgcApis/Interfaces/Lua/IRunnable.cs | 8 ++ VgcApis/VgcApis.csproj | 1 + 6 files changed, 78 insertions(+), 47 deletions(-) create mode 100644 VgcApis/Interfaces/Lua/IRunnable.cs diff --git a/Plugins/Luna/Models/Apis/LuaSys.cs b/Plugins/Luna/Models/Apis/LuaSys.cs index 58cce2a6..5793e953 100644 --- a/Plugins/Luna/Models/Apis/LuaSys.cs +++ b/Plugins/Luna/Models/Apis/LuaSys.cs @@ -73,7 +73,7 @@ void TrackdownProcess(Process proc) #region ILuaSys.Net List httpServs = new List(); - public bool CreateHttpServer( + public VgcApis.Interfaces.Lua.IRunnable CreateHttpServer( string url, VgcApis.Interfaces.Lua.ILuaMailBox inbox, VgcApis.Interfaces.Lua.ILuaMailBox outbox) @@ -81,15 +81,17 @@ public bool CreateHttpServer( try { var serv = new SysCmpos.HttpServer(url, inbox, outbox); - serv.Start(); lock (httpServs) { httpServs.Add(serv); } - return true; + return serv; + } + catch (Exception ex) + { + luaApis.SendLog(ex.ToString()); + throw; } - catch { } - return false; } #endregion diff --git a/Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs b/Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs index e1c4742a..d231393f 100644 --- a/Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs +++ b/Plugins/Luna/Models/Apis/SysCmpos/HttpServer.cs @@ -5,12 +5,12 @@ namespace Luna.Models.Apis.SysCmpos { - public class HttpServer : VgcApis.BaseClasses.Disposable + public class HttpServer : + VgcApis.BaseClasses.Disposable, + VgcApis.Interfaces.Lua.IRunnable { - HttpListener serv; - private readonly VgcApis.Interfaces.Lua.ILuaMailBox inbox; private readonly VgcApis.Interfaces.Lua.ILuaMailBox outbox; @@ -26,7 +26,7 @@ public HttpServer( } #region public methods - public bool Start() + public void Start() { try { @@ -34,10 +34,8 @@ public bool Start() serv.Start(); HandleConnOut(); HandleConnIn(); - return true; } catch { } - return false; } public void Stop() diff --git a/V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua b/V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua index 923c817e..4813dcaa 100644 --- a/V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua +++ b/V2RayGCon/Resources/Files/lua/modules/httpApiServ.lua @@ -4,49 +4,44 @@ example: local url = "http://localhost:4000/" +local haServ = require('lua.modules.httpApiServ').new() + local handlers = { ["hello"] = function() return "world" end, + ["goodbye"] = function() haServ:Close() return "bye" end, } local html = "

index.html

" +haServ:Create(url, html, handlers) -local hapi = require('lua.modules.httpApiServ').new() - -if hapi:Run(url, html, handlers) then - print("Waiting for connections ...") - hapi:HandleConnection() -else - print("Server fails to start!") -end +print("Waiting for connections ...") +haServ:Run() --]] local M = {} -function M:Run(url, html, handlers) +local function CreateServer(self) - assert(type(handlers) == "table", "Param handlers should be function table.") - assert(type(html) == "string", "Param index should be string.") - local inbox = Sys:ApplyRandomMailBox() assert(inbox ~= nil, "Apply mail box failed!") local outbox = Sys:ApplyRandomMailBox() assert(outbox ~= nil, "Apply mail box failed!") - self.url = url - self.html = html - self.handlers = handlers - self.inbox = inbox self.outbox = outbox self.outadd = outbox:GetAddress() - local ok = Sys:CreateHttpServer(self.url, self.inbox, self.outbox) - return ok + local serv = Sys:CreateHttpServer(self.url, self.inbox, self.outbox) + return serv end -function M:HandlePost(title, cmd) +local function Response(self, title, text) + self.outbox:Send(self.outadd, title, text) +end + +local function HandlePost(self, title, cmd) local r = "" if self.handlers[cmd] == nil then r = "unknow cmd: " .. cmd @@ -54,30 +49,57 @@ function M:HandlePost(title, cmd) r = self.handlers[cmd]() end - self.outbox:Send(self.outadd, title, r) + Response(self, title, r) +end + +local function HandleOneConn(self) + + local mail = self.inbox:Wait() + + if mail == nil then + return false + end + + local code = mail:GetCode() + local title = mail:GetTitle() + if code ~= 1 and self.html ~= nil then + Response(self, title, self.html) + else + local cmd = mail:GetContent() + HandlePost(self, title, cmd) + end + + return true end -function M:HandleConnection() +function M:Create(url, html, handlers) + + assert(type(url) == "string", "Param url should be string") + assert(type(handlers) == "table", "Param handlers should be function table.") + assert(type(html) == "string", "Param index should be string.") + + self.url = url + self.html = html + self.handlers = handlers + self.serv = CreateServer(self) + +end + +function M:Close() + self.inbox:Close() +end + +function M:Run() + self.serv:Start() repeat - local mail = self.inbox:Wait() - if mail ~= nil then - local code = mail:GetCode() - local title = mail:GetTitle() - if code ~= 1 and self.html ~= nil then - self.outbox:Send(self.outadd, title, self.html) - else - local cmd = mail:GetContent() - self:HandlePost(title, cmd) - end - end - until mail == nil + local ok = HandleOneConn(self) + until not ok + self.serv:Stop() end function M.new() local o = {} - setmetatable(o, {__index = M}) - return o end diff --git a/VgcApis/Interfaces/Lua/ILuaSys.cs b/VgcApis/Interfaces/Lua/ILuaSys.cs index b2925a6a..c4e43c4a 100644 --- a/VgcApis/Interfaces/Lua/ILuaSys.cs +++ b/VgcApis/Interfaces/Lua/ILuaSys.cs @@ -6,7 +6,7 @@ namespace VgcApis.Interfaces.Lua public interface ILuaSys { #region Net - bool CreateHttpServer(string url, ILuaMailBox inbox, ILuaMailBox outbox); + IRunnable CreateHttpServer(string url, ILuaMailBox inbox, ILuaMailBox outbox); #endregion #region keyboard hotkey diff --git a/VgcApis/Interfaces/Lua/IRunnable.cs b/VgcApis/Interfaces/Lua/IRunnable.cs new file mode 100644 index 00000000..b12929b7 --- /dev/null +++ b/VgcApis/Interfaces/Lua/IRunnable.cs @@ -0,0 +1,8 @@ +namespace VgcApis.Interfaces.Lua +{ + public interface IRunnable + { + void Start(); + void Stop(); + } +} diff --git a/VgcApis/VgcApis.csproj b/VgcApis/VgcApis.csproj index 07969f84..b17accf5 100644 --- a/VgcApis/VgcApis.csproj +++ b/VgcApis/VgcApis.csproj @@ -65,6 +65,7 @@ + From f4c5d6292a9ec4670a4e636af3ff2f451c142ff3 Mon Sep 17 00:00:00 2001 From: nobody Date: Tue, 26 May 2020 19:20:24 +0800 Subject: [PATCH 12/16] Add Web:Post(). --- Plugins/Luna/Models/Apis/Components/Web.cs | 31 +++++++++++++++++++++- Plugins/Luna/Views/WinForms/FormMain.cs | 2 +- VgcApis/Interfaces/Lua/ILuaWeb.cs | 4 +++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Plugins/Luna/Models/Apis/Components/Web.cs b/Plugins/Luna/Models/Apis/Components/Web.cs index e6104702..f2336282 100644 --- a/Plugins/Luna/Models/Apis/Components/Web.cs +++ b/Plugins/Luna/Models/Apis/Components/Web.cs @@ -1,4 +1,8 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; namespace Luna.Models.Apis.Components { @@ -18,6 +22,31 @@ public Web(VgcApis.Interfaces.Services.IApiService api) } #region ILuaWeb thinggy + public string Post(string url, string text) => Post(url, text, 20000); + + public string Post(string url, string text, int timeout) + { + timeout = Math.Max(1, timeout); + + try + { + var t = Task.Run(async () => + { + using (var client = new HttpClient()) + { + var token = new CancellationTokenSource(timeout).Token; + var content = new StringContent(text); + var resp = await client.PostAsync(url, content, token); + return await resp.Content.ReadAsStringAsync(); + } + }); + + return t.GetAwaiter().GetResult(); + } + catch { } + return null; + } + public bool Tcping(string url, int milSec) => Tcping(url, milSec, -1); diff --git a/Plugins/Luna/Views/WinForms/FormMain.cs b/Plugins/Luna/Views/WinForms/FormMain.cs index c1867663..89700482 100644 --- a/Plugins/Luna/Views/WinForms/FormMain.cs +++ b/Plugins/Luna/Views/WinForms/FormMain.cs @@ -88,7 +88,7 @@ private void closeToolStripMenuItem_Click(object sender, System.EventArgs e) } private void btnOpenEditor_Click(object sender, System.EventArgs e) { - formMgr.ShowOrCreateFirstEditor(); + formMgr.CreateNewEditor(); } #endregion diff --git a/VgcApis/Interfaces/Lua/ILuaWeb.cs b/VgcApis/Interfaces/Lua/ILuaWeb.cs index 56aa4a44..850c990d 100644 --- a/VgcApis/Interfaces/Lua/ILuaWeb.cs +++ b/VgcApis/Interfaces/Lua/ILuaWeb.cs @@ -26,6 +26,10 @@ public interface ILuaWeb // e.g. url = "http://baidu.com/" href = "/index.html" result = "http://baidu.com/index.html" string PatchHref(string url, string href); + string Post(string url, string text); + + string Post(string url, string text, int timeout); + // using bing.com to search sth. string Search(string keywords, int first, int proxyPort); From 582b09106d0dd127dae09bc6902f9be9bd14ded6 Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 28 May 2020 06:15:31 +0800 Subject: [PATCH 13/16] update --- .../Files/LuaPredefinedFunctions.txt | 10 + .../Resources/Files/lua/dll64/mime/core.dll | Bin 0 -> 148480 bytes .../Resources/Files/lua/dll64/socket/core.dll | Bin 0 -> 179200 bytes V2RayGCon/Resources/Files/lua/dll64/ssl.dll | Bin 0 -> 53248 bytes .../Resources/Files/lua/libs/bencode.lua | 186 ++++++++ .../Resources/Files/lua/libs/luasec/https.lua | 146 ++++++ .../Files/lua/libs/luasec/options.lua | 90 ++++ .../Resources/Files/lua/libs/luasec/ssl.lua | 282 ++++++++++++ .../Files/lua/libs/luasocket/ltn12.lua | 319 +++++++++++++ .../Files/lua/libs/luasocket/mbox.lua | 92 ++++ .../Files/lua/libs/luasocket/mime.lua | 89 ++++ .../Files/lua/libs/luasocket/socket.lua | 149 +++++++ .../Files/lua/libs/luasocket/socket/ftp.lua | 329 ++++++++++++++ .../lua/libs/luasocket/socket/headers.lua | 104 +++++ .../Files/lua/libs/luasocket/socket/http.lua | 420 ++++++++++++++++++ .../Files/lua/libs/luasocket/socket/smtp.lua | 256 +++++++++++ .../Files/lua/libs/luasocket/socket/tp.lua | 134 ++++++ .../Files/lua/libs/luasocket/socket/url.lua | 331 ++++++++++++++ 18 files changed, 2937 insertions(+) create mode 100644 V2RayGCon/Resources/Files/lua/dll64/mime/core.dll create mode 100644 V2RayGCon/Resources/Files/lua/dll64/socket/core.dll create mode 100644 V2RayGCon/Resources/Files/lua/dll64/ssl.dll create mode 100644 V2RayGCon/Resources/Files/lua/libs/bencode.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasec/https.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasec/options.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasec/ssl.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/ltn12.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/mbox.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/mime.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/socket.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/socket/ftp.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/socket/headers.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/socket/http.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/socket/smtp.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/socket/tp.lua create mode 100644 V2RayGCon/Resources/Files/lua/libs/luasocket/socket/url.lua diff --git a/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt b/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt index f459b769..4b4f1942 100644 --- a/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt +++ b/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt @@ -1,6 +1,16 @@ -- Enable import on 2020-04-17 -- import = function () end +-- require path +package.path = ".\\?.lua;.\\?\\init.lua" + +-- dll path +if os.getenv('PROCESSOR_ARCHITECTURE') == "AMD64" then + package.cpath = '.\\lua\\dll64\\?.dll' +else + package.cpath = '.\\lua\\dll32\\?.dll' +end + print = function(...) Misc:Print(...) end os.exit = function() print("os.exit() is disabled") end diff --git a/V2RayGCon/Resources/Files/lua/dll64/mime/core.dll b/V2RayGCon/Resources/Files/lua/dll64/mime/core.dll new file mode 100644 index 0000000000000000000000000000000000000000..f1dcd97a10fbe8e1070ae2a6f05e8de4f930d436 GIT binary patch literal 148480 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⪻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 literal 0 HcmV?d00001 diff --git a/V2RayGCon/Resources/Files/lua/dll64/ssl.dll b/V2RayGCon/Resources/Files/lua/dll64/ssl.dll new file mode 100644 index 0000000000000000000000000000000000000000..e4e1332c40279cdb66a54f51d12520557b21ad67 GIT binary patch literal 53248 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

DtK9b8jaMq$UfEYSN|LA^=EEY{Zpxg$EcA| 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 n + then + return false + end + end + for i = 1, n do + if t[i] == nil then + return false + end + end + return true +end + +-- encoder functions + +local encode_rec -- encode_list/dict and encode_rec are mutually recursive... + +local function encode_list(t, x) + + insert(t, "l") + + for _,v in ipairs(x) do + local err,ev = encode_rec(t, v); if err then return err,ev end + end + + insert(t, "e") +end + +local function encode_dict(t, x) + insert(t, "d") + -- bittorrent requires the keys to be sorted. + local sortedkeys = {} + for k, v in pairs(x) do + if type(k) ~= "string" then + return "bencoding requires dictionary keys to be strings", k + end + insert(sortedkeys, k) + end + sort(sortedkeys) + + for k, v in ipairs(sortedkeys) do + local err,ev = encode_rec(t, v); if err then return err,ev end + err,ev = encode_rec(t, x[v]); if err then return err,ev end + end + insert(t, "e") +end + +local function encode_int(t, x) + + if x % 1 ~= 0 then return "number is not an integer", x end + insert(t, "i" ) + insert(t, x ) + insert(t, "e" ) +end + +local function encode_str(t, x) + + insert(t, #x ) + insert(t, ":" ) + insert(t, x ) +end + +encode_rec = function(t, x) + + local typx = type(x) + if typx == "string" then return encode_str (t, x) + elseif typx == "number" then return encode_int (t, x) + elseif typx == "table" then + + if islist(x) then return encode_list (t, x) + else return encode_dict (t, x) + end + else + return "type cannot be converted to an acceptable type for bencoding", typx + end +end + +-- call recursive bencoder function with empty table, stringify that table. +-- this is the only encode* function visible to module users. +M.encode = function (x) + + local t = {} + local err, val = encode_rec(t,x) + if not err then + return concat(t) + else + return nil, err, val + end +end + +-- decoder functions + +local function decode_integer(s, index) + local a, b, int = find(s, "^(%-?%d+)e", index) + if not int then return nil, "not a number", nil end + int = tonumber(int) + if not int then return nil, "not a number", int end + return int, b + 1 +end + +local function decode_list(s, index) + local t = {} + while sub(s, index, index) ~= "e" do + local obj, ev + obj, index, ev = M.decode(s, index) + if not obj then return obj, index, ev end + insert(t, obj) + end + index = index + 1 + return t, index +end + +local function decode_dictionary(s, index) + local t = {} + while sub(s, index, index) ~= "e" do + local obj1, obj2, ev + + obj1, index, ev = M.decode(s, index) + if not obj1 then return obj1, index, ev end + + obj2, index, ev = M.decode(s, index) + if not obj2 then return obj2, index, ev end + + t[obj1] = obj2 + end + index = index + 1 + return t, index +end + +local function decode_string(s, index) + local a, b, len = find(s, "^([0-9]+):", index) + if not len then return nil, "not a length", len end + index = b + 1 + + local v = sub(s, index, index + len - 1) + if #v < tonumber(len) then return nil, "truncated string at end of input", v end + index = index + len + return v, index +end + + +M.decode = function (s, index) + if not s then return nil, "no data", nil end + index = index or 1 + local t = sub(s, index, index) + if not t then return nil, "truncation error", nil end + + if t == "i" then + return decode_integer(s, index + 1) + elseif t == "l" then + return decode_list(s, index + 1) + elseif t == "d" then + return decode_dictionary(s, index + 1) + elseif t >= '0' and t <= '9' then + return decode_string(s, index) + else + return nil, "invalid type", t + end +end + +return M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasec/https.lua b/V2RayGCon/Resources/Files/lua/libs/luasec/https.lua new file mode 100644 index 00000000..864ba927 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasec/https.lua @@ -0,0 +1,146 @@ +---------------------------------------------------------------------------- +-- LuaSec 0.9 +-- Copyright (C) 2009-2019 PUC-Rio +-- +-- Author: Pablo Musa +-- Author: Tomas Guisasola +--------------------------------------------------------------------------- + +local socket = require('lua.libs.luasocket.socket') +local ssl = require('lua.libs.luasec.ssl') +local ltn12 = require('lua.libs.luasocket.ltn12') +local http = require('lua.libs.luasocket.socket.http') +local url = require('lua.libs.luasocket.socket.url') + +local try = socket.try + +-- +-- Module +-- +local _M = { + _VERSION = "0.9", + _COPYRIGHT = "LuaSec 0.9 - Copyright (C) 2009-2019 PUC-Rio", + PORT = 443, + TIMEOUT = 60 +} + +-- TLS configuration +local cfg = { + protocol = "any", + options = {"all", "no_sslv2", "no_sslv3", "no_tlsv1"}, + verify = "none", +} + +-------------------------------------------------------------------- +-- Auxiliar Functions +-------------------------------------------------------------------- + +-- Insert default HTTPS port. +local function default_https_port(u) + return url.build(url.parse(u, {port = _M.PORT})) +end + +-- Convert an URL to a table according to Luasocket needs. +local function urlstring_totable(url, body, result_table) + url = { + url = default_https_port(url), + method = body and "POST" or "GET", + sink = ltn12.sink.table(result_table) + } + if body then + url.source = ltn12.source.string(body) + url.headers = { + ["content-length"] = #body, + ["content-type"] = "application/x-www-form-urlencoded", + } + end + return url +end + +-- Forward calls to the real connection object. +local function reg(conn) + local mt = getmetatable(conn.sock).__index + for name, method in pairs(mt) do + if type(method) == "function" then + conn[name] = function (self, ...) + return method(self.sock, ...) + end + end + end +end + +-- Return a function which performs the SSL/TLS connection. +local function tcp(params) + params = params or {} + -- Default settings + for k, v in pairs(cfg) do + params[k] = params[k] or v + end + -- Force client mode + params.mode = "client" + -- 'create' function for LuaSocket + return function () + local conn = {} + conn.sock = try(socket.tcp()) + local st = getmetatable(conn.sock).__index.settimeout + function conn:settimeout(...) + return st(self.sock, _M.TIMEOUT) + end + -- Replace TCP's connection function + function conn:connect(host, port) + try(self.sock:connect(host, port)) + self.sock = try(ssl.wrap(self.sock, params)) + self.sock:sni(host) + self.sock:settimeout(_M.TIMEOUT) + try(self.sock:dohandshake()) + reg(self, getmetatable(self.sock)) + return 1 + end + return conn + end +end + +-------------------------------------------------------------------- +-- Main Function +-------------------------------------------------------------------- + +-- Make a HTTP request over secure connection. This function receives +-- the same parameters of LuaSocket's HTTP module (except 'proxy' and +-- 'redirect') plus LuaSec parameters. +-- +-- @param url mandatory (string or table) +-- @param body optional (string) +-- @return (string if url == string or 1), code, headers, status +-- +local function request(url, body) + local result_table = {} + local stringrequest = type(url) == "string" + if stringrequest then + url = urlstring_totable(url, body, result_table) + else + url.url = default_https_port(url.url) + end + if http.PROXY or url.proxy then + return nil, "proxy not supported" + elseif url.redirect then + return nil, "redirect not supported" + elseif url.create then + return nil, "create function not permitted" + end + -- New 'create' function to establish a secure connection + url.create = tcp(url) + local res, code, headers, status = http.request(url) + if res and stringrequest then + return table.concat(result_table), code, headers, status + end + return res, code, headers, status +end + +-------------------------------------------------------------------------------- +-- Export module +-- + +_M.request = request +_M.tcp = tcp + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasec/options.lua b/V2RayGCon/Resources/Files/lua/libs/luasec/options.lua new file mode 100644 index 00000000..3915d92f --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasec/options.lua @@ -0,0 +1,90 @@ +local function usage() + print("Usage:") + print("* Generate options of your system:") + print(" lua options.lua -g /path/to/ssl.h [version] > options.c") + print("* Examples:") + print(" lua options.lua -g /usr/include/openssl/ssl.h > options.c\n") + print(" lua options.lua -g /usr/include/openssl/ssl.h \"OpenSSL 1.0.1 14\" > options.c\n") + + print("* List options of your system:") + print(" lua options.lua -l /path/to/ssl.h\n") +end + +-- +local function printf(str, ...) + print(string.format(str, ...)) +end + +local function generate(options, version) + print([[ +/*-------------------------------------------------------------------------- + * LuaSec 0.9 + * + * Copyright (C) 2006-2019 Bruno Silvestre + * + *--------------------------------------------------------------------------*/ + +#include + +#include "options.h" + +/* If you need to generate these options again, see options.lua */ + +]]) + + printf([[ +/* + OpenSSL version: %s +*/ +]], version) + + print([[static lsec_ssl_option_t ssl_options[] = {]]) + + for k, option in ipairs(options) do + local name = string.lower(string.sub(option, 8)) + print(string.format([[#if defined(%s)]], option)) + print(string.format([[ {"%s", %s},]], name, option)) + print([[#endif]]) + end + print([[ {NULL, 0L}]]) + print([[ +}; + +LSEC_API lsec_ssl_option_t* lsec_get_ssl_options() { + return ssl_options; +} +]]) +end + +local function loadoptions(file) + local options = {} + local f = assert(io.open(file, "r")) + for line in f:lines() do + local op = string.match(line, "define%s+(SSL_OP_%S+)") + if op then + table.insert(options, op) + end + end + table.sort(options, function(a,b) return a 255 then + return nil, "invalid ALPN name (length > 255)" + end + str = str .. string.char(len) .. v + end + if str == "" then return nil, "invalid ALPN list (empty)" end + return str +end + +-- +-- Convert wire-string format to array +-- +local function wireformat2array(str) + local i = 1 + local array = {} + while i < #str do + local len = str:byte(i) + array[#array + 1] = str:sub(i + 1, i + len) + i = i + len + 1 + end + return array +end + +-- +-- +-- +local function newcontext(cfg) + local succ, msg, ctx + -- Create the context + ctx, msg = context.create(cfg.protocol) + if not ctx then return nil, msg end + -- Mode + succ, msg = context.setmode(ctx, cfg.mode) + if not succ then return nil, msg end + local certificates = cfg.certificates + if not certificates then + certificates = { + { certificate = cfg.certificate, key = cfg.key, password = cfg.password } + } + end + for _, certificate in ipairs(certificates) do + -- Load the key + if certificate.key then + if certificate.password and + type(certificate.password) ~= "function" and + type(certificate.password) ~= "string" + then + return nil, "invalid password type" + end + succ, msg = context.loadkey(ctx, certificate.key, certificate.password) + if not succ then return nil, msg end + end + -- Load the certificate(s) + if certificate.certificate then + succ, msg = context.loadcert(ctx, certificate.certificate) + if not succ then return nil, msg end + if certificate.key and context.checkkey then + succ = context.checkkey(ctx) + if not succ then return nil, "private key does not match public key" end + end + end + end + -- Load the CA certificates + if cfg.cafile or cfg.capath then + succ, msg = context.locations(ctx, cfg.cafile, cfg.capath) + if not succ then return nil, msg end + end + -- Set SSL ciphers + if cfg.ciphers then + succ, msg = context.setcipher(ctx, cfg.ciphers) + if not succ then return nil, msg end + end + -- Set SSL cipher suites + if cfg.ciphersuites then + succ, msg = context.setciphersuites(ctx, cfg.ciphersuites) + if not succ then return nil, msg end + end + -- Set the verification options + succ, msg = optexec(context.setverify, cfg.verify, ctx) + if not succ then return nil, msg end + -- Set SSL options + succ, msg = optexec(context.setoptions, cfg.options, ctx) + if not succ then return nil, msg end + -- Set the depth for certificate verification + if cfg.depth then + succ, msg = context.setdepth(ctx, cfg.depth) + if not succ then return nil, msg end + end + + -- NOTE: Setting DH parameters and elliptic curves needs to come after + -- setoptions(), in case the user has specified the single_{dh,ecdh}_use + -- options. + + -- Set DH parameters + if cfg.dhparam then + if type(cfg.dhparam) ~= "function" then + return nil, "invalid DH parameter type" + end + context.setdhparam(ctx, cfg.dhparam) + end + + -- Set elliptic curves + if (not config.algorithms.ec) and (cfg.curve or cfg.curveslist) then + return false, "elliptic curves not supported" + end + if config.capabilities.curves_list and cfg.curveslist then + succ, msg = context.setcurveslist(ctx, cfg.curveslist) + if not succ then return nil, msg end + elseif cfg.curve then + succ, msg = context.setcurve(ctx, cfg.curve) + if not succ then return nil, msg end + end + + -- Set extra verification options + if cfg.verifyext and ctx.setverifyext then + succ, msg = optexec(ctx.setverifyext, cfg.verifyext, ctx) + if not succ then return nil, msg end + end + + -- ALPN + if cfg.mode == "server" and cfg.alpn then + if type(cfg.alpn) == "function" then + local alpncb = cfg.alpn + -- This callback function has to return one value only + succ, msg = context.setalpncb(ctx, function(str) + local protocols = alpncb(wireformat2array(str)) + if type(protocols) == "string" then + protocols = { protocols } + elseif type(protocols) ~= "table" then + return nil + end + return (array2wireformat(protocols)) -- use "()" to drop error message + end) + if not succ then return nil, msg end + elseif type(cfg.alpn) == "table" then + local protocols = cfg.alpn + -- check if array is valid before use it + succ, msg = array2wireformat(protocols) + if not succ then return nil, msg end + -- This callback function has to return one value only + succ, msg = context.setalpncb(ctx, function() + return (array2wireformat(protocols)) -- use "()" to drop error message + end) + if not succ then return nil, msg end + else + return nil, "invalid ALPN parameter" + end + elseif cfg.mode == "client" and cfg.alpn then + local alpn + if type(cfg.alpn) == "string" then + alpn, msg = array2wireformat({ cfg.alpn }) + elseif type(cfg.alpn) == "table" then + alpn, msg = array2wireformat(cfg.alpn) + else + return nil, "invalid ALPN parameter" + end + if not alpn then return nil, msg end + succ, msg = context.setalpn(ctx, alpn) + if not succ then return nil, msg end + end + + if config.capabilities.dane and cfg.dane then + context.setdane(ctx) + end + + return ctx +end + +-- +-- +-- +local function wrap(sock, cfg) + local ctx, msg + if type(cfg) == "table" then + ctx, msg = newcontext(cfg) + if not ctx then return nil, msg end + else + ctx = cfg + end + local s, msg = core.create(ctx) + if s then + core.setfd(s, sock:getfd()) + sock:setfd(core.SOCKET_INVALID) + registry[s] = ctx + return s + end + return nil, msg +end + +-- +-- Extract connection information. +-- +local function info(ssl, field) + local str, comp, err, protocol + comp, err = core.compression(ssl) + if err then + return comp, err + end + -- Avoid parser + if field == "compression" then + return comp + end + local info = {compression = comp} + str, info.bits, info.algbits, protocol = core.info(ssl) + if str then + info.cipher, info.protocol, info.key, + info.authentication, info.encryption, info.mac = + string.match(str, + "^(%S+)%s+(%S+)%s+Kx=(%S+)%s+Au=(%S+)%s+Enc=(%S+)%s+Mac=(%S+)") + info.export = (string.match(str, "%sexport%s*$") ~= nil) + end + if protocol then + info.protocol = protocol + end + if field then + return info[field] + end + -- Empty? + return ( (next(info)) and info ) +end + +-- +-- Set method for SSL connections. +-- +core.setmethod("info", info) + +-------------------------------------------------------------------------------- +-- Export module +-- + +local _M = { + _VERSION = "0.9", + _COPYRIGHT = core.copyright(), + config = config, + loadcertificate = x509.load, + newcontext = newcontext, + wrap = wrap, +} + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/ltn12.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/ltn12.lua new file mode 100644 index 00000000..afa735dc --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/ltn12.lua @@ -0,0 +1,319 @@ +----------------------------------------------------------------------------- +-- LTN12 - Filters, sources, sinks and pumps. +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module +----------------------------------------------------------------------------- +local string = require("string") +local table = require("table") +local unpack = unpack or table.unpack +local base = _G +local _M = {} +if module then -- heuristic for exporting a global package table + ltn12 = _M +end +local filter,source,sink,pump = {},{},{},{} + +_M.filter = filter +_M.source = source +_M.sink = sink +_M.pump = pump + +local unpack = unpack or table.unpack +local select = base.select + +-- 2048 seems to be better in windows... +_M.BLOCKSIZE = 2048 +_M._VERSION = "LTN12 1.0.3" + +----------------------------------------------------------------------------- +-- Filter stuff +----------------------------------------------------------------------------- +-- returns a high level filter that cycles a low-level filter +function filter.cycle(low, ctx, extra) + base.assert(low) + return function(chunk) + local ret + ret, ctx = low(ctx, chunk, extra) + return ret + end +end + +-- chains a bunch of filters together +-- (thanks to Wim Couwenberg) +function filter.chain(...) + local arg = {...} + local n = base.select('#',...) + local top, index = 1, 1 + local retry = "" + return function(chunk) + retry = chunk and retry + while true do + if index == top then + chunk = arg[index](chunk) + if chunk == "" or top == n then return chunk + elseif chunk then index = index + 1 + else + top = top+1 + index = top + end + else + chunk = arg[index](chunk or "") + if chunk == "" then + index = index - 1 + chunk = retry + elseif chunk then + if index == n then return chunk + else index = index + 1 end + else base.error("filter returned inappropriate nil") end + end + end + end +end + +----------------------------------------------------------------------------- +-- Source stuff +----------------------------------------------------------------------------- +-- create an empty source +local function empty() + return nil +end + +function source.empty() + return empty +end + +-- returns a source that just outputs an error +function source.error(err) + return function() + return nil, err + end +end + +-- creates a file source +function source.file(handle, io_err) + if handle then + return function() + local chunk = handle:read(_M.BLOCKSIZE) + if not chunk then handle:close() end + return chunk + end + else return source.error(io_err or "unable to open file") end +end + +-- turns a fancy source into a simple source +function source.simplify(src) + base.assert(src) + return function() + local chunk, err_or_new = src() + src = err_or_new or src + if not chunk then return nil, err_or_new + else return chunk end + end +end + +-- creates string source +function source.string(s) + if s then + local i = 1 + return function() + local chunk = string.sub(s, i, i+_M.BLOCKSIZE-1) + i = i + _M.BLOCKSIZE + if chunk ~= "" then return chunk + else return nil end + end + else return source.empty() end +end + +-- creates table source +function source.table(t) + base.assert('table' == type(t)) + local i = 0 + return function() + i = i + 1 + return t[i] + end +end + +-- creates rewindable source +function source.rewind(src) + base.assert(src) + local t = {} + return function(chunk) + if not chunk then + chunk = table.remove(t) + if not chunk then return src() + else return chunk end + else + table.insert(t, chunk) + end + end +end + +-- chains a source with one or several filter(s) +function source.chain(src, f, ...) + if ... then f=filter.chain(f, ...) end + base.assert(src and f) + local last_in, last_out = "", "" + local state = "feeding" + local err + return function() + if not last_out then + base.error('source is empty!', 2) + end + while true do + if state == "feeding" then + last_in, err = src() + if err then return nil, err end + last_out = f(last_in) + if not last_out then + if last_in then + base.error('filter returned inappropriate nil') + else + return nil + end + elseif last_out ~= "" then + state = "eating" + if last_in then last_in = "" end + return last_out + end + else + last_out = f(last_in) + if last_out == "" then + if last_in == "" then + state = "feeding" + else + base.error('filter returned ""') + end + elseif not last_out then + if last_in then + base.error('filter returned inappropriate nil') + else + return nil + end + else + return last_out + end + end + end + end +end + +-- creates a source that produces contents of several sources, one after the +-- other, as if they were concatenated +-- (thanks to Wim Couwenberg) +function source.cat(...) + local arg = {...} + local src = table.remove(arg, 1) + return function() + while src do + local chunk, err = src() + if chunk then return chunk end + if err then return nil, err end + src = table.remove(arg, 1) + end + end +end + +----------------------------------------------------------------------------- +-- Sink stuff +----------------------------------------------------------------------------- +-- creates a sink that stores into a table +function sink.table(t) + t = t or {} + local f = function(chunk, err) + if chunk then table.insert(t, chunk) end + return 1 + end + return f, t +end + +-- turns a fancy sink into a simple sink +function sink.simplify(snk) + base.assert(snk) + return function(chunk, err) + local ret, err_or_new = snk(chunk, err) + if not ret then return nil, err_or_new end + snk = err_or_new or snk + return 1 + end +end + +-- creates a file sink +function sink.file(handle, io_err) + if handle then + return function(chunk, err) + if not chunk then + handle:close() + return 1 + else return handle:write(chunk) end + end + else return sink.error(io_err or "unable to open file") end +end + +-- creates a sink that discards data +local function null() + return 1 +end + +function sink.null() + return null +end + +-- creates a sink that just returns an error +function sink.error(err) + return function() + return nil, err + end +end + +-- chains a sink with one or several filter(s) +function sink.chain(f, snk, ...) + if ... then + local args = { f, snk, ... } + snk = table.remove(args, #args) + f = filter.chain(unpack(args)) + end + base.assert(f and snk) + return function(chunk, err) + if chunk ~= "" then + local filtered = f(chunk) + local done = chunk and "" + while true do + local ret, snkerr = snk(filtered, err) + if not ret then return nil, snkerr end + if filtered == done then return 1 end + filtered = f(done) + end + else return 1 end + end +end + +----------------------------------------------------------------------------- +-- Pump stuff +----------------------------------------------------------------------------- +-- pumps one chunk from the source to the sink +function pump.step(src, snk) + local chunk, src_err = src() + local ret, snk_err = snk(chunk, src_err) + if chunk and ret then return 1 + else return nil, src_err or snk_err end +end + +-- pumps all data from a source to a sink, using a step function +function pump.all(src, snk, step) + base.assert(src and snk) + step = step or pump.step + while true do + local ret, err = step(src, snk) + if not ret then + if err then return nil, err + else return 1 end + end + end +end + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/mbox.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/mbox.lua new file mode 100644 index 00000000..ed9e7814 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/mbox.lua @@ -0,0 +1,92 @@ +local _M = {} + +if module then + mbox = _M +end + +function _M.split_message(message_s) + local message = {} + message_s = string.gsub(message_s, "\r\n", "\n") + string.gsub(message_s, "^(.-\n)\n", function (h) message.headers = h end) + string.gsub(message_s, "^.-\n\n(.*)", function (b) message.body = b end) + if not message.body then + string.gsub(message_s, "^\n(.*)", function (b) message.body = b end) + end + if not message.headers and not message.body then + message.headers = message_s + end + return message.headers or "", message.body or "" +end + +function _M.split_headers(headers_s) + local headers = {} + headers_s = string.gsub(headers_s, "\r\n", "\n") + headers_s = string.gsub(headers_s, "\n[ ]+", " ") + string.gsub("\n" .. headers_s, "\n([^\n]+)", function (h) table.insert(headers, h) end) + return headers +end + +function _M.parse_header(header_s) + header_s = string.gsub(header_s, "\n[ ]+", " ") + header_s = string.gsub(header_s, "\n+", "") + local _, __, name, value = string.find(header_s, "([^%s:]-):%s*(.*)") + return name, value +end + +function _M.parse_headers(headers_s) + local headers_t = _M.split_headers(headers_s) + local headers = {} + for i = 1, #headers_t do + local name, value = _M.parse_header(headers_t[i]) + if name then + name = string.lower(name) + if headers[name] then + headers[name] = headers[name] .. ", " .. value + else headers[name] = value end + end + end + return headers +end + +function _M.parse_from(from) + local _, __, name, address = string.find(from, "^%s*(.-)%s*%<(.-)%>") + if not address then + _, __, address = string.find(from, "%s*(.+)%s*") + end + name = name or "" + address = address or "" + if name == "" then name = address end + name = string.gsub(name, '"', "") + return name, address +end + +function _M.split_mbox(mbox_s) + local mbox = {} + mbox_s = string.gsub(mbox_s, "\r\n", "\n") .."\n\nFrom \n" + local nj, i, j = 1, 1, 1 + while 1 do + i, nj = string.find(mbox_s, "\n\nFrom .-\n", j) + if not i then break end + local message = string.sub(mbox_s, j, i-1) + table.insert(mbox, message) + j = nj+1 + end + return mbox +end + +function _M.parse(mbox_s) + local mbox = _M.split_mbox(mbox_s) + for i = 1, #mbox do + mbox[i] = _M.parse_message(mbox[i]) + end + return mbox +end + +function _M.parse_message(message_s) + local message = {} + message.headers, message.body = _M.split_message(message_s) + message.headers = _M.parse_headers(message.headers) + return message +end + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/mime.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/mime.lua new file mode 100644 index 00000000..b8141ec9 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/mime.lua @@ -0,0 +1,89 @@ +----------------------------------------------------------------------------- +-- MIME support for the Lua language. +-- Author: Diego Nehab +-- Conforming to RFCs 2045-2049 +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module and import dependencies +----------------------------------------------------------------------------- +local base = _G +local ltn12 = require('lua.libs.luasocket.ltn12') +local mime = require("mime.core") +local string = require("string") +local _M = mime + +-- encode, decode and wrap algorithm tables +local encodet, decodet, wrapt = {},{},{} + +_M.encodet = encodet +_M.decodet = decodet +_M.wrapt = wrapt + +-- creates a function that chooses a filter by name from a given table +local function choose(table) + return function(name, opt1, opt2) + if base.type(name) ~= "string" then + name, opt1, opt2 = "default", name, opt1 + end + local f = table[name or "nil"] + if not f then + base.error("unknown key (" .. base.tostring(name) .. ")", 3) + else return f(opt1, opt2) end + end +end + +-- define the encoding filters +encodet['base64'] = function() + return ltn12.filter.cycle(_M.b64, "") +end + +encodet['quoted-printable'] = function(mode) + return ltn12.filter.cycle(_M.qp, "", + (mode == "binary") and "=0D=0A" or "\r\n") +end + +-- define the decoding filters +decodet['base64'] = function() + return ltn12.filter.cycle(_M.unb64, "") +end + +decodet['quoted-printable'] = function() + return ltn12.filter.cycle(_M.unqp, "") +end + +local function format(chunk) + if chunk then + if chunk == "" then return "''" + else return string.len(chunk) end + else return "nil" end +end + +-- define the line-wrap filters +wrapt['text'] = function(length) + length = length or 76 + return ltn12.filter.cycle(_M.wrp, length, length) +end +wrapt['base64'] = wrapt['text'] +wrapt['default'] = wrapt['text'] + +wrapt['quoted-printable'] = function() + return ltn12.filter.cycle(_M.qpwrp, 76, 76) +end + +-- function that choose the encoding, decoding or wrap algorithm +_M.encode = choose(encodet) +_M.decode = choose(decodet) +_M.wrap = choose(wrapt) + +-- define the end-of-line normalization filter +function _M.normalize(marker) + return ltn12.filter.cycle(_M.eol, 0, marker) +end + +-- high level stuffing filter +function _M.stuff() + return ltn12.filter.cycle(_M.dot, 2) +end + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/socket.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket.lua new file mode 100644 index 00000000..d1c0b164 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket.lua @@ -0,0 +1,149 @@ +----------------------------------------------------------------------------- +-- LuaSocket helper module +-- Author: Diego Nehab +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module and import dependencies +----------------------------------------------------------------------------- +local base = _G +local string = require("string") +local math = require("math") +local socket = require("socket.core") + +local _M = socket + +----------------------------------------------------------------------------- +-- Exported auxiliar functions +----------------------------------------------------------------------------- +function _M.connect4(address, port, laddress, lport) + return socket.connect(address, port, laddress, lport, "inet") +end + +function _M.connect6(address, port, laddress, lport) + return socket.connect(address, port, laddress, lport, "inet6") +end + +function _M.bind(host, port, backlog) + if host == "*" then host = "0.0.0.0" end + local addrinfo, err = socket.dns.getaddrinfo(host); + if not addrinfo then return nil, err end + local sock, res + err = "no info on address" + for i, alt in base.ipairs(addrinfo) do + if alt.family == "inet" then + sock, err = socket.tcp4() + else + sock, err = socket.tcp6() + end + if not sock then return nil, err end + sock:setoption("reuseaddr", true) + res, err = sock:bind(alt.addr, port) + if not res then + sock:close() + else + res, err = sock:listen(backlog) + if not res then + sock:close() + else + return sock + end + end + end + return nil, err +end + +_M.try = _M.newtry() + +function _M.choose(table) + return function(name, opt1, opt2) + if base.type(name) ~= "string" then + name, opt1, opt2 = "default", name, opt1 + end + local f = table[name or "nil"] + if not f then base.error("unknown key (".. base.tostring(name) ..")", 3) + else return f(opt1, opt2) end + end +end + +----------------------------------------------------------------------------- +-- Socket sources and sinks, conforming to LTN12 +----------------------------------------------------------------------------- +-- create namespaces inside LuaSocket namespace +local sourcet, sinkt = {}, {} +_M.sourcet = sourcet +_M.sinkt = sinkt + +_M.BLOCKSIZE = 2048 + +sinkt["close-when-done"] = function(sock) + return base.setmetatable({ + getfd = function() return sock:getfd() end, + dirty = function() return sock:dirty() end + }, { + __call = function(self, chunk, err) + if not chunk then + sock:close() + return 1 + else return sock:send(chunk) end + end + }) +end + +sinkt["keep-open"] = function(sock) + return base.setmetatable({ + getfd = function() return sock:getfd() end, + dirty = function() return sock:dirty() end + }, { + __call = function(self, chunk, err) + if chunk then return sock:send(chunk) + else return 1 end + end + }) +end + +sinkt["default"] = sinkt["keep-open"] + +_M.sink = _M.choose(sinkt) + +sourcet["by-length"] = function(sock, length) + return base.setmetatable({ + getfd = function() return sock:getfd() end, + dirty = function() return sock:dirty() end + }, { + __call = function() + if length <= 0 then return nil end + local size = math.min(socket.BLOCKSIZE, length) + local chunk, err = sock:receive(size) + if err then return nil, err end + length = length - string.len(chunk) + return chunk + end + }) +end + +sourcet["until-closed"] = function(sock) + local done + return base.setmetatable({ + getfd = function() return sock:getfd() end, + dirty = function() return sock:dirty() end + }, { + __call = function() + if done then return nil end + local chunk, err, partial = sock:receive(socket.BLOCKSIZE) + if not err then return chunk + elseif err == "closed" then + sock:close() + done = 1 + return partial + else return nil, err end + end + }) +end + + +sourcet["default"] = sourcet["until-closed"] + +_M.source = _M.choose(sourcet) + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/ftp.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/ftp.lua new file mode 100644 index 00000000..02b8ed01 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/ftp.lua @@ -0,0 +1,329 @@ +----------------------------------------------------------------------------- +-- FTP support for the Lua language +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module and import dependencies +----------------------------------------------------------------------------- +local base = _G +local table = require("table") +local string = require("string") +local math = require("math") +local socket = require('lua.libs.luasocket.socket') +local url = require('lua.libs.luasocket.socket.url') +local tp = require('lua.libs.luasocket.socket.tp') +local ltn12 = require('lua.libs.luasocket.ltn12') +socket.ftp = {} +local _M = socket.ftp +----------------------------------------------------------------------------- +-- Program constants +----------------------------------------------------------------------------- +-- timeout in seconds before the program gives up on a connection +_M.TIMEOUT = 60 +-- default port for ftp service +local PORT = 21 +-- this is the default anonymous password. used when no password is +-- provided in url. should be changed to your e-mail. +_M.USER = "ftp" +_M.PASSWORD = "anonymous@anonymous.org" + +----------------------------------------------------------------------------- +-- Low level FTP API +----------------------------------------------------------------------------- +local metat = { __index = {} } + +function _M.open(server, port, create) + local tp = socket.try(tp.connect(server, port or PORT, _M.TIMEOUT, create)) + local f = base.setmetatable({ tp = tp }, metat) + -- make sure everything gets closed in an exception + f.try = socket.newtry(function() f:close() end) + return f +end + +function metat.__index:portconnect() + self.try(self.server:settimeout(_M.TIMEOUT)) + self.data = self.try(self.server:accept()) + self.try(self.data:settimeout(_M.TIMEOUT)) +end + +function metat.__index:pasvconnect() + self.data = self.try(socket.tcp()) + self.try(self.data:settimeout(_M.TIMEOUT)) + self.try(self.data:connect(self.pasvt.address, self.pasvt.port)) +end + +function metat.__index:login(user, password) + self.try(self.tp:command("user", user or _M.USER)) + local code, reply = self.try(self.tp:check{"2..", 331}) + if code == 331 then + self.try(self.tp:command("pass", password or _M.PASSWORD)) + self.try(self.tp:check("2..")) + end + return 1 +end + +function metat.__index:pasv() + self.try(self.tp:command("pasv")) + local code, reply = self.try(self.tp:check("2..")) + local pattern = "(%d+)%D(%d+)%D(%d+)%D(%d+)%D(%d+)%D(%d+)" + local a, b, c, d, p1, p2 = socket.skip(2, string.find(reply, pattern)) + self.try(a and b and c and d and p1 and p2, reply) + self.pasvt = { + address = string.format("%d.%d.%d.%d", a, b, c, d), + port = p1*256 + p2 + } + if self.server then + self.server:close() + self.server = nil + end + return self.pasvt.address, self.pasvt.port +end + +function metat.__index:epsv() + self.try(self.tp:command("epsv")) + local code, reply = self.try(self.tp:check("229")) + local pattern = "%((.)(.-)%1(.-)%1(.-)%1%)" + local d, prt, address, port = string.match(reply, pattern) + self.try(port, "invalid epsv response") + self.pasvt = { + address = self.tp:getpeername(), + port = port + } + if self.server then + self.server:close() + self.server = nil + end + return self.pasvt.address, self.pasvt.port +end + + +function metat.__index:port(address, port) + self.pasvt = nil + if not address then + address, port = self.try(self.tp:getsockname()) + self.server = self.try(socket.bind(address, 0)) + address, port = self.try(self.server:getsockname()) + self.try(self.server:settimeout(_M.TIMEOUT)) + end + local pl = math.mod(port, 256) + local ph = (port - pl)/256 + local arg = string.gsub(string.format("%s,%d,%d", address, ph, pl), "%.", ",") + self.try(self.tp:command("port", arg)) + self.try(self.tp:check("2..")) + return 1 +end + +function metat.__index:eprt(family, address, port) + self.pasvt = nil + if not address then + address, port = self.try(self.tp:getsockname()) + self.server = self.try(socket.bind(address, 0)) + address, port = self.try(self.server:getsockname()) + self.try(self.server:settimeout(_M.TIMEOUT)) + end + local arg = string.format("|%s|%s|%d|", family, address, port) + self.try(self.tp:command("eprt", arg)) + self.try(self.tp:check("2..")) + return 1 +end + + +function metat.__index:send(sendt) + self.try(self.pasvt or self.server, "need port or pasv first") + -- if there is a pasvt table, we already sent a PASV command + -- we just get the data connection into self.data + if self.pasvt then self:pasvconnect() end + -- get the transfer argument and command + local argument = sendt.argument or + url.unescape(string.gsub(sendt.path or "", "^[/\\]", "")) + if argument == "" then argument = nil end + local command = sendt.command or "stor" + -- send the transfer command and check the reply + self.try(self.tp:command(command, argument)) + local code, reply = self.try(self.tp:check{"2..", "1.."}) + -- if there is not a pasvt table, then there is a server + -- and we already sent a PORT command + if not self.pasvt then self:portconnect() end + -- get the sink, source and step for the transfer + local step = sendt.step or ltn12.pump.step + local readt = { self.tp } + local checkstep = function(src, snk) + -- check status in control connection while downloading + local readyt = socket.select(readt, nil, 0) + if readyt[tp] then code = self.try(self.tp:check("2..")) end + return step(src, snk) + end + local sink = socket.sink("close-when-done", self.data) + -- transfer all data and check error + self.try(ltn12.pump.all(sendt.source, sink, checkstep)) + if string.find(code, "1..") then self.try(self.tp:check("2..")) end + -- done with data connection + self.data:close() + -- find out how many bytes were sent + local sent = socket.skip(1, self.data:getstats()) + self.data = nil + return sent +end + +function metat.__index:receive(recvt) + self.try(self.pasvt or self.server, "need port or pasv first") + if self.pasvt then self:pasvconnect() end + local argument = recvt.argument or + url.unescape(string.gsub(recvt.path or "", "^[/\\]", "")) + if argument == "" then argument = nil end + local command = recvt.command or "retr" + self.try(self.tp:command(command, argument)) + local code,reply = self.try(self.tp:check{"1..", "2.."}) + if (code >= 200) and (code <= 299) then + recvt.sink(reply) + return 1 + end + if not self.pasvt then self:portconnect() end + local source = socket.source("until-closed", self.data) + local step = recvt.step or ltn12.pump.step + self.try(ltn12.pump.all(source, recvt.sink, step)) + if string.find(code, "1..") then self.try(self.tp:check("2..")) end + self.data:close() + self.data = nil + return 1 +end + +function metat.__index:cwd(dir) + self.try(self.tp:command("cwd", dir)) + self.try(self.tp:check(250)) + return 1 +end + +function metat.__index:type(type) + self.try(self.tp:command("type", type)) + self.try(self.tp:check(200)) + return 1 +end + +function metat.__index:greet() + local code = self.try(self.tp:check{"1..", "2.."}) + if string.find(code, "1..") then self.try(self.tp:check("2..")) end + return 1 +end + +function metat.__index:quit() + self.try(self.tp:command("quit")) + self.try(self.tp:check("2..")) + return 1 +end + +function metat.__index:close() + if self.data then self.data:close() end + if self.server then self.server:close() end + return self.tp:close() +end + +----------------------------------------------------------------------------- +-- High level FTP API +----------------------------------------------------------------------------- +local function override(t) + if t.url then + local u = url.parse(t.url) + for i,v in base.pairs(t) do + u[i] = v + end + return u + else return t end +end + +local function tput(putt) + putt = override(putt) + socket.try(putt.host, "missing hostname") + local f = _M.open(putt.host, putt.port, putt.create) + f:greet() + f:login(putt.user, putt.password) + if putt.type then f:type(putt.type) end + f:epsv() + local sent = f:send(putt) + f:quit() + f:close() + return sent +end + +local default = { + path = "/", + scheme = "ftp" +} + +local function genericform(u) + local t = socket.try(url.parse(u, default)) + socket.try(t.scheme == "ftp", "wrong scheme '" .. t.scheme .. "'") + socket.try(t.host, "missing hostname") + local pat = "^type=(.)$" + if t.params then + t.type = socket.skip(2, string.find(t.params, pat)) + socket.try(t.type == "a" or t.type == "i", + "invalid type '" .. t.type .. "'") + end + return t +end + +_M.genericform = genericform + +local function sput(u, body) + local putt = genericform(u) + putt.source = ltn12.source.string(body) + return tput(putt) +end + +_M.put = socket.protect(function(putt, body) + if base.type(putt) == "string" then return sput(putt, body) + else return tput(putt) end +end) + +local function tget(gett) + gett = override(gett) + socket.try(gett.host, "missing hostname") + local f = _M.open(gett.host, gett.port, gett.create) + f:greet() + f:login(gett.user, gett.password) + if gett.type then f:type(gett.type) end + f:epsv() + f:receive(gett) + f:quit() + return f:close() +end + +local function sget(u) + local gett = genericform(u) + local t = {} + gett.sink = ltn12.sink.table(t) + tget(gett) + return table.concat(t) +end + +_M.command = socket.protect(function(cmdt) + cmdt = override(cmdt) + socket.try(cmdt.host, "missing hostname") + socket.try(cmdt.command, "missing command") + local f = _M.open(cmdt.host, cmdt.port, cmdt.create) + f:greet() + f:login(cmdt.user, cmdt.password) + if type(cmdt.command) == "table" then + local argument = cmdt.argument or {} + local check = cmdt.check or {} + for i,cmd in ipairs(cmdt.command) do + f.try(f.tp:command(cmd, argument[i])) + if check[i] then f.try(f.tp:check(check[i])) end + end + else + f.try(f.tp:command(cmdt.command, cmdt.argument)) + if cmdt.check then f.try(f.tp:check(cmdt.check)) end + end + f:quit() + return f:close() +end) + +_M.get = socket.protect(function(gett) + if base.type(gett) == "string" then return sget(gett) + else return tget(gett) end +end) + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/headers.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/headers.lua new file mode 100644 index 00000000..a7ce3c78 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/headers.lua @@ -0,0 +1,104 @@ +----------------------------------------------------------------------------- +-- Canonic header field capitalization +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- +local socket = require('lua.libs.luasocket.socket') +socket.headers = {} +local _M = socket.headers + +_M.canonic = { + ["accept"] = "Accept", + ["accept-charset"] = "Accept-Charset", + ["accept-encoding"] = "Accept-Encoding", + ["accept-language"] = "Accept-Language", + ["accept-ranges"] = "Accept-Ranges", + ["action"] = "Action", + ["alternate-recipient"] = "Alternate-Recipient", + ["age"] = "Age", + ["allow"] = "Allow", + ["arrival-date"] = "Arrival-Date", + ["authorization"] = "Authorization", + ["bcc"] = "Bcc", + ["cache-control"] = "Cache-Control", + ["cc"] = "Cc", + ["comments"] = "Comments", + ["connection"] = "Connection", + ["content-description"] = "Content-Description", + ["content-disposition"] = "Content-Disposition", + ["content-encoding"] = "Content-Encoding", + ["content-id"] = "Content-ID", + ["content-language"] = "Content-Language", + ["content-length"] = "Content-Length", + ["content-location"] = "Content-Location", + ["content-md5"] = "Content-MD5", + ["content-range"] = "Content-Range", + ["content-transfer-encoding"] = "Content-Transfer-Encoding", + ["content-type"] = "Content-Type", + ["cookie"] = "Cookie", + ["date"] = "Date", + ["diagnostic-code"] = "Diagnostic-Code", + ["dsn-gateway"] = "DSN-Gateway", + ["etag"] = "ETag", + ["expect"] = "Expect", + ["expires"] = "Expires", + ["final-log-id"] = "Final-Log-ID", + ["final-recipient"] = "Final-Recipient", + ["from"] = "From", + ["host"] = "Host", + ["if-match"] = "If-Match", + ["if-modified-since"] = "If-Modified-Since", + ["if-none-match"] = "If-None-Match", + ["if-range"] = "If-Range", + ["if-unmodified-since"] = "If-Unmodified-Since", + ["in-reply-to"] = "In-Reply-To", + ["keywords"] = "Keywords", + ["last-attempt-date"] = "Last-Attempt-Date", + ["last-modified"] = "Last-Modified", + ["location"] = "Location", + ["max-forwards"] = "Max-Forwards", + ["message-id"] = "Message-ID", + ["mime-version"] = "MIME-Version", + ["original-envelope-id"] = "Original-Envelope-ID", + ["original-recipient"] = "Original-Recipient", + ["pragma"] = "Pragma", + ["proxy-authenticate"] = "Proxy-Authenticate", + ["proxy-authorization"] = "Proxy-Authorization", + ["range"] = "Range", + ["received"] = "Received", + ["received-from-mta"] = "Received-From-MTA", + ["references"] = "References", + ["referer"] = "Referer", + ["remote-mta"] = "Remote-MTA", + ["reply-to"] = "Reply-To", + ["reporting-mta"] = "Reporting-MTA", + ["resent-bcc"] = "Resent-Bcc", + ["resent-cc"] = "Resent-Cc", + ["resent-date"] = "Resent-Date", + ["resent-from"] = "Resent-From", + ["resent-message-id"] = "Resent-Message-ID", + ["resent-reply-to"] = "Resent-Reply-To", + ["resent-sender"] = "Resent-Sender", + ["resent-to"] = "Resent-To", + ["retry-after"] = "Retry-After", + ["return-path"] = "Return-Path", + ["sender"] = "Sender", + ["server"] = "Server", + ["smtp-remote-recipient"] = "SMTP-Remote-Recipient", + ["status"] = "Status", + ["subject"] = "Subject", + ["te"] = "TE", + ["to"] = "To", + ["trailer"] = "Trailer", + ["transfer-encoding"] = "Transfer-Encoding", + ["upgrade"] = "Upgrade", + ["user-agent"] = "User-Agent", + ["vary"] = "Vary", + ["via"] = "Via", + ["warning"] = "Warning", + ["will-retry-until"] = "Will-Retry-Until", + ["www-authenticate"] = "WWW-Authenticate", + ["x-mailer"] = "X-Mailer", +} + +return _M \ No newline at end of file diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/http.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/http.lua new file mode 100644 index 00000000..9c051aba --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/http.lua @@ -0,0 +1,420 @@ +----------------------------------------------------------------------------- +-- HTTP/1.1 client support for the Lua language. +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module and import dependencies +------------------------------------------------------------------------------- +local socket = require('lua.libs.luasocket.socket') +local url = require('lua.libs.luasocket.socket.url') +local ltn12 = require('lua.libs.luasocket.ltn12') +local mime = require('lua.libs.luasocket.mime') +local string = require("string") +local headers = require('lua.libs.luasocket.socket.headers') +local base = _G +local table = require("table") +socket.http = {} +local _M = socket.http + +----------------------------------------------------------------------------- +-- Program constants +----------------------------------------------------------------------------- +-- connection timeout in seconds +_M.TIMEOUT = 60 +-- user agent field sent in request +_M.USERAGENT = socket._VERSION + +-- supported schemes and their particulars +local SCHEMES = { + http = { + port = 80 + , create = function(t) + return socket.tcp end } + , https = { + port = 443 + , create = function(t) + local https = assert( + require("ssl.https"), 'LuaSocket: LuaSec not found') + local tcp = assert( + https.tcp, 'LuaSocket: Function tcp() not available from LuaSec') + return tcp(t) end }} + +-- default scheme and port for document retrieval +local SCHEME = 'http' +local PORT = SCHEMES[SCHEME].port +----------------------------------------------------------------------------- +-- Reads MIME headers from a connection, unfolding where needed +----------------------------------------------------------------------------- +local function receiveheaders(sock, headers) + local line, name, value, err + headers = headers or {} + -- get first line + line, err = sock:receive() + if err then return nil, err end + -- headers go until a blank line is found + while line ~= "" do + -- get field-name and value + name, value = socket.skip(2, string.find(line, "^(.-):%s*(.*)")) + if not (name and value) then return nil, "malformed reponse headers" end + name = string.lower(name) + -- get next line (value might be folded) + line, err = sock:receive() + if err then return nil, err end + -- unfold any folded values + while string.find(line, "^%s") do + value = value .. line + line = sock:receive() + if err then return nil, err end + end + -- save pair in table + if headers[name] then headers[name] = headers[name] .. ", " .. value + else headers[name] = value end + end + return headers +end + +----------------------------------------------------------------------------- +-- Extra sources and sinks +----------------------------------------------------------------------------- +socket.sourcet["http-chunked"] = function(sock, headers) + return base.setmetatable({ + getfd = function() return sock:getfd() end, + dirty = function() return sock:dirty() end + }, { + __call = function() + -- get chunk size, skip extention + local line, err = sock:receive() + if err then return nil, err end + local size = base.tonumber(string.gsub(line, ";.*", ""), 16) + if not size then return nil, "invalid chunk size" end + -- was it the last chunk? + if size > 0 then + -- if not, get chunk and skip terminating CRLF + local chunk, err, part = sock:receive(size) + if chunk then sock:receive() end + return chunk, err + else + -- if it was, read trailers into headers table + headers, err = receiveheaders(sock, headers) + if not headers then return nil, err end + end + end + }) +end + +socket.sinkt["http-chunked"] = function(sock) + return base.setmetatable({ + getfd = function() return sock:getfd() end, + dirty = function() return sock:dirty() end + }, { + __call = function(self, chunk, err) + if not chunk then return sock:send("0\r\n\r\n") end + local size = string.format("%X\r\n", string.len(chunk)) + return sock:send(size .. chunk .. "\r\n") + end + }) +end + +----------------------------------------------------------------------------- +-- Low level HTTP API +----------------------------------------------------------------------------- +local metat = { __index = {} } + +function _M.open(host, port, create) + -- create socket with user connect function, or with default + local c = socket.try(create()) + local h = base.setmetatable({ c = c }, metat) + -- create finalized try + h.try = socket.newtry(function() h:close() end) + -- set timeout before connecting + h.try(c:settimeout(_M.TIMEOUT)) + h.try(c:connect(host, port)) + -- here everything worked + return h +end + +function metat.__index:sendrequestline(method, uri) + local reqline = string.format("%s %s HTTP/1.1\r\n", method or "GET", uri) + return self.try(self.c:send(reqline)) +end + +function metat.__index:sendheaders(tosend) + local canonic = headers.canonic + local h = "\r\n" + for f, v in base.pairs(tosend) do + h = (canonic[f] or f) .. ": " .. v .. "\r\n" .. h + end + self.try(self.c:send(h)) + return 1 +end + +function metat.__index:sendbody(headers, source, step) + source = source or ltn12.source.empty() + step = step or ltn12.pump.step + -- if we don't know the size in advance, send chunked and hope for the best + local mode = "http-chunked" + if headers["content-length"] then mode = "keep-open" end + return self.try(ltn12.pump.all(source, socket.sink(mode, self.c), step)) +end + +function metat.__index:receivestatusline() + local status,ec = self.try(self.c:receive(5)) + -- identify HTTP/0.9 responses, which do not contain a status line + -- this is just a heuristic, but is what the RFC recommends + if status ~= "HTTP/" then + if ec == "timeout" then + return 408 + end + return nil, status + end + -- otherwise proceed reading a status line + status = self.try(self.c:receive("*l", status)) + local code = socket.skip(2, string.find(status, "HTTP/%d*%.%d* (%d%d%d)")) + return self.try(base.tonumber(code), status) +end + +function metat.__index:receiveheaders() + return self.try(receiveheaders(self.c)) +end + +function metat.__index:receivebody(headers, sink, step) + sink = sink or ltn12.sink.null() + step = step or ltn12.pump.step + local length = base.tonumber(headers["content-length"]) + local t = headers["transfer-encoding"] -- shortcut + local mode = "default" -- connection close + if t and t ~= "identity" then mode = "http-chunked" + elseif base.tonumber(headers["content-length"]) then mode = "by-length" end + return self.try(ltn12.pump.all(socket.source(mode, self.c, length), + sink, step)) +end + +function metat.__index:receive09body(status, sink, step) + local source = ltn12.source.rewind(socket.source("until-closed", self.c)) + source(status) + return self.try(ltn12.pump.all(source, sink, step)) +end + +function metat.__index:close() + return self.c:close() +end + +----------------------------------------------------------------------------- +-- High level HTTP API +----------------------------------------------------------------------------- +local function adjusturi(reqt) + local u = reqt + -- if there is a proxy, we need the full url. otherwise, just a part. + if not reqt.proxy and not _M.PROXY then + u = { + path = socket.try(reqt.path, "invalid path 'nil'"), + params = reqt.params, + query = reqt.query, + fragment = reqt.fragment + } + end + return url.build(u) +end + +local function adjustproxy(reqt) + local proxy = reqt.proxy or _M.PROXY + if proxy then + proxy = url.parse(proxy) + return proxy.host, proxy.port or 3128 + else + return reqt.host, reqt.port + end +end + +local function adjustheaders(reqt) + -- default headers + local host = reqt.host + local port = tostring(reqt.port) + if port ~= tostring(SCHEMES[reqt.scheme].port) then + host = host .. ':' .. port end + local lower = { + ["user-agent"] = _M.USERAGENT, + ["host"] = host, + ["connection"] = "close, TE", + ["te"] = "trailers" + } + -- if we have authentication information, pass it along + if reqt.user and reqt.password then + lower["authorization"] = + "Basic " .. (mime.b64(reqt.user .. ":" .. + url.unescape(reqt.password))) + end + -- if we have proxy authentication information, pass it along + local proxy = reqt.proxy or _M.PROXY + if proxy then + proxy = url.parse(proxy) + if proxy.user and proxy.password then + lower["proxy-authorization"] = + "Basic " .. (mime.b64(proxy.user .. ":" .. proxy.password)) + end + end + -- override with user headers + for i,v in base.pairs(reqt.headers or lower) do + lower[string.lower(i)] = v + end + return lower +end + +-- default url parts +local default = { + path ="/" + , scheme = "http" +} + +local function adjustrequest(reqt) + -- parse url if provided + local nreqt = reqt.url and url.parse(reqt.url, default) or {} + -- explicit components override url + for i,v in base.pairs(reqt) do nreqt[i] = v end + -- default to scheme particulars + local schemedefs, host, port, method + = SCHEMES[nreqt.scheme], nreqt.host, nreqt.port, nreqt.method + if not nreqt.create then nreqt.create = schemedefs.create(nreqt) end + if not (port and port ~= '') then nreqt.port = schemedefs.port end + if not (method and method ~= '') then nreqt.method = 'GET' end + if not (host and host ~= "") then + socket.try(nil, "invalid host '" .. base.tostring(nreqt.host) .. "'") + end + -- compute uri if user hasn't overriden + nreqt.uri = reqt.uri or adjusturi(nreqt) + -- adjust headers in request + nreqt.headers = adjustheaders(nreqt) + -- ajust host and port if there is a proxy + nreqt.host, nreqt.port = adjustproxy(nreqt) + return nreqt +end + +local function shouldredirect(reqt, code, headers) + local location = headers.location + if not location then return false end + location = string.gsub(location, "%s", "") + if location == "" then return false end + local scheme = url.parse(location).scheme + if scheme and (not SCHEMES[scheme]) then return false end + -- avoid https downgrades + if ('https' == reqt.scheme) and ('https' ~= scheme) then return false end + return (reqt.redirect ~= false) and + (code == 301 or code == 302 or code == 303 or code == 307) and + (not reqt.method or reqt.method == "GET" or reqt.method == "HEAD") + and ((false == reqt.maxredirects) + or ((reqt.nredirects or 0) + < (reqt.maxredirects or 5))) +end + +local function shouldreceivebody(reqt, code) + if reqt.method == "HEAD" then return nil end + if code == 204 or code == 304 then return nil end + if code >= 100 and code < 200 then return nil end + return 1 +end + +-- forward declarations +local trequest, tredirect + +--[[local]] function tredirect(reqt, location) + -- the RFC says the redirect URL has to be absolute, but some + -- servers do not respect that + local newurl = url.absolute(reqt.url, location) + -- if switching schemes, reset port and create function + if url.parse(newurl).scheme ~= reqt.scheme then + reqt.port = nil + reqt.create = nil end + -- make new request + local result, code, headers, status = trequest { + url = newurl, + source = reqt.source, + sink = reqt.sink, + headers = reqt.headers, + proxy = reqt.proxy, + maxredirects = reqt.maxredirects, + nredirects = (reqt.nredirects or 0) + 1, + create = reqt.create + } + -- pass location header back as a hint we redirected + headers = headers or {} + headers.location = headers.location or location + return result, code, headers, status +end + +--[[local]] function trequest(reqt) + -- we loop until we get what we want, or + -- until we are sure there is no way to get it + local nreqt = adjustrequest(reqt) + local h = _M.open(nreqt.host, nreqt.port, nreqt.create) + -- send request line and headers + h:sendrequestline(nreqt.method, nreqt.uri) + h:sendheaders(nreqt.headers) + -- if there is a body, send it + if nreqt.source then + h:sendbody(nreqt.headers, nreqt.source, nreqt.step) + end + local code, status = h:receivestatusline() + -- if it is an HTTP/0.9 server, simply get the body and we are done + if not code then + h:receive09body(status, nreqt.sink, nreqt.step) + return 1, 200 + elseif code == 408 then + return 1, code + end + local headers + -- ignore any 100-continue messages + while code == 100 do + headers = h:receiveheaders() + code, status = h:receivestatusline() + end + headers = h:receiveheaders() + -- at this point we should have a honest reply from the server + -- we can't redirect if we already used the source, so we report the error + if shouldredirect(nreqt, code, headers) and not nreqt.source then + h:close() + return tredirect(reqt, headers.location) + end + -- here we are finally done + if shouldreceivebody(nreqt, code) then + h:receivebody(headers, nreqt.sink, nreqt.step) + end + h:close() + return 1, code, headers, status +end + +-- turns an url and a body into a generic request +local function genericform(u, b) + local t = {} + local reqt = { + url = u, + sink = ltn12.sink.table(t), + target = t + } + if b then + reqt.source = ltn12.source.string(b) + reqt.headers = { + ["content-length"] = string.len(b), + ["content-type"] = "application/x-www-form-urlencoded" + } + reqt.method = "POST" + end + return reqt +end + +_M.genericform = genericform + +local function srequest(u, b) + local reqt = genericform(u, b) + local _, code, headers, status = trequest(reqt) + return table.concat(reqt.target), code, headers, status +end + +_M.request = socket.protect(function(reqt, body) + if base.type(reqt) == "string" then return srequest(reqt, body) + else return trequest(reqt) end +end) + +_M.schemes = SCHEMES +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/smtp.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/smtp.lua new file mode 100644 index 00000000..28db4ff6 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/smtp.lua @@ -0,0 +1,256 @@ +----------------------------------------------------------------------------- +-- SMTP client support for the Lua language. +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module and import dependencies +----------------------------------------------------------------------------- +local base = _G +local coroutine = require("coroutine") +local string = require("string") +local math = require("math") +local os = require("os") +local socket = require('lua.libs.luasocket.socket') +local tp = require('lua.libs.luasocket.socket.tp') +local ltn12 = require('lua.libs.luasocket.ltn12') +local headers = require('lua.libs.luasocket.socket.headers') +local mime = require('lua.libs.luasocket.mime') + +socket.smtp = {} +local _M = socket.smtp + +----------------------------------------------------------------------------- +-- Program constants +----------------------------------------------------------------------------- +-- timeout for connection +_M.TIMEOUT = 60 +-- default server used to send e-mails +_M.SERVER = "localhost" +-- default port +_M.PORT = 25 +-- domain used in HELO command and default sendmail +-- If we are under a CGI, try to get from environment +_M.DOMAIN = os.getenv("SERVER_NAME") or "localhost" +-- default time zone (means we don't know) +_M.ZONE = "-0000" + +--------------------------------------------------------------------------- +-- Low level SMTP API +----------------------------------------------------------------------------- +local metat = { __index = {} } + +function metat.__index:greet(domain) + self.try(self.tp:check("2..")) + self.try(self.tp:command("EHLO", domain or _M.DOMAIN)) + return socket.skip(1, self.try(self.tp:check("2.."))) +end + +function metat.__index:mail(from) + self.try(self.tp:command("MAIL", "FROM:" .. from)) + return self.try(self.tp:check("2..")) +end + +function metat.__index:rcpt(to) + self.try(self.tp:command("RCPT", "TO:" .. to)) + return self.try(self.tp:check("2..")) +end + +function metat.__index:data(src, step) + self.try(self.tp:command("DATA")) + self.try(self.tp:check("3..")) + self.try(self.tp:source(src, step)) + self.try(self.tp:send("\r\n.\r\n")) + return self.try(self.tp:check("2..")) +end + +function metat.__index:quit() + self.try(self.tp:command("QUIT")) + return self.try(self.tp:check("2..")) +end + +function metat.__index:close() + return self.tp:close() +end + +function metat.__index:login(user, password) + self.try(self.tp:command("AUTH", "LOGIN")) + self.try(self.tp:check("3..")) + self.try(self.tp:send(mime.b64(user) .. "\r\n")) + self.try(self.tp:check("3..")) + self.try(self.tp:send(mime.b64(password) .. "\r\n")) + return self.try(self.tp:check("2..")) +end + +function metat.__index:plain(user, password) + local auth = "PLAIN " .. mime.b64("\0" .. user .. "\0" .. password) + self.try(self.tp:command("AUTH", auth)) + return self.try(self.tp:check("2..")) +end + +function metat.__index:auth(user, password, ext) + if not user or not password then return 1 end + if string.find(ext, "AUTH[^\n]+LOGIN") then + return self:login(user, password) + elseif string.find(ext, "AUTH[^\n]+PLAIN") then + return self:plain(user, password) + else + self.try(nil, "authentication not supported") + end +end + +-- send message or throw an exception +function metat.__index:send(mailt) + self:mail(mailt.from) + if base.type(mailt.rcpt) == "table" then + for i,v in base.ipairs(mailt.rcpt) do + self:rcpt(v) + end + else + self:rcpt(mailt.rcpt) + end + self:data(ltn12.source.chain(mailt.source, mime.stuff()), mailt.step) +end + +function _M.open(server, port, create) + local tp = socket.try(tp.connect(server or _M.SERVER, port or _M.PORT, + _M.TIMEOUT, create)) + local s = base.setmetatable({tp = tp}, metat) + -- make sure tp is closed if we get an exception + s.try = socket.newtry(function() + s:close() + end) + return s +end + +-- convert headers to lowercase +local function lower_headers(headers) + local lower = {} + for i,v in base.pairs(headers or lower) do + lower[string.lower(i)] = v + end + return lower +end + +--------------------------------------------------------------------------- +-- Multipart message source +----------------------------------------------------------------------------- +-- returns a hopefully unique mime boundary +local seqno = 0 +local function newboundary() + seqno = seqno + 1 + return string.format('%s%05d==%05u', os.date('%d%m%Y%H%M%S'), + math.random(0, 99999), seqno) +end + +-- send_message forward declaration +local send_message + +-- yield the headers all at once, it's faster +local function send_headers(tosend) + local canonic = headers.canonic + local h = "\r\n" + for f,v in base.pairs(tosend) do + h = (canonic[f] or f) .. ': ' .. v .. "\r\n" .. h + end + coroutine.yield(h) +end + +-- yield multipart message body from a multipart message table +local function send_multipart(mesgt) + -- make sure we have our boundary and send headers + local bd = newboundary() + local headers = lower_headers(mesgt.headers or {}) + headers['content-type'] = headers['content-type'] or 'multipart/mixed' + headers['content-type'] = headers['content-type'] .. + '; boundary="' .. bd .. '"' + send_headers(headers) + -- send preamble + if mesgt.body.preamble then + coroutine.yield(mesgt.body.preamble) + coroutine.yield("\r\n") + end + -- send each part separated by a boundary + for i, m in base.ipairs(mesgt.body) do + coroutine.yield("\r\n--" .. bd .. "\r\n") + send_message(m) + end + -- send last boundary + coroutine.yield("\r\n--" .. bd .. "--\r\n\r\n") + -- send epilogue + if mesgt.body.epilogue then + coroutine.yield(mesgt.body.epilogue) + coroutine.yield("\r\n") + end +end + +-- yield message body from a source +local function send_source(mesgt) + -- make sure we have a content-type + local headers = lower_headers(mesgt.headers or {}) + headers['content-type'] = headers['content-type'] or + 'text/plain; charset="iso-8859-1"' + send_headers(headers) + -- send body from source + while true do + local chunk, err = mesgt.body() + if err then coroutine.yield(nil, err) + elseif chunk then coroutine.yield(chunk) + else break end + end +end + +-- yield message body from a string +local function send_string(mesgt) + -- make sure we have a content-type + local headers = lower_headers(mesgt.headers or {}) + headers['content-type'] = headers['content-type'] or + 'text/plain; charset="iso-8859-1"' + send_headers(headers) + -- send body from string + coroutine.yield(mesgt.body) +end + +-- message source +function send_message(mesgt) + if base.type(mesgt.body) == "table" then send_multipart(mesgt) + elseif base.type(mesgt.body) == "function" then send_source(mesgt) + else send_string(mesgt) end +end + +-- set defaul headers +local function adjust_headers(mesgt) + local lower = lower_headers(mesgt.headers) + lower["date"] = lower["date"] or + os.date("!%a, %d %b %Y %H:%M:%S ") .. (mesgt.zone or _M.ZONE) + lower["x-mailer"] = lower["x-mailer"] or socket._VERSION + -- this can't be overriden + lower["mime-version"] = "1.0" + return lower +end + +function _M.message(mesgt) + mesgt.headers = adjust_headers(mesgt) + -- create and return message source + local co = coroutine.create(function() send_message(mesgt) end) + return function() + local ret, a, b = coroutine.resume(co) + if ret then return a, b + else return nil, a end + end +end + +--------------------------------------------------------------------------- +-- High level SMTP API +----------------------------------------------------------------------------- +_M.send = socket.protect(function(mailt) + local s = _M.open(mailt.server, mailt.port, mailt.create) + local ext = s:greet(mailt.domain) + s:auth(mailt.user, mailt.password, ext) + s:send(mailt) + s:quit() + return s:close() +end) + +return _M \ No newline at end of file diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/tp.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/tp.lua new file mode 100644 index 00000000..19b8d067 --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/tp.lua @@ -0,0 +1,134 @@ +----------------------------------------------------------------------------- +-- Unified SMTP/FTP subsystem +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module and import dependencies +----------------------------------------------------------------------------- +local base = _G +local string = require("string") +local socket = require('lua.libs.luasocket.socket') +local ltn12 = require('lua.libs.luasocket.ltn12') + +socket.tp = {} +local _M = socket.tp + +----------------------------------------------------------------------------- +-- Program constants +----------------------------------------------------------------------------- +_M.TIMEOUT = 60 + +----------------------------------------------------------------------------- +-- Implementation +----------------------------------------------------------------------------- +-- gets server reply (works for SMTP and FTP) +local function get_reply(c) + local code, current, sep + local line, err = c:receive() + local reply = line + if err then return nil, err end + code, sep = socket.skip(2, string.find(line, "^(%d%d%d)(.?)")) + if not code then return nil, "invalid server reply" end + if sep == "-" then -- reply is multiline + repeat + line, err = c:receive() + if err then return nil, err end + current, sep = socket.skip(2, string.find(line, "^(%d%d%d)(.?)")) + reply = reply .. "\n" .. line + -- reply ends with same code + until code == current and sep == " " + end + return code, reply +end + +-- metatable for sock object +local metat = { __index = {} } + +function metat.__index:getpeername() + return self.c:getpeername() +end + +function metat.__index:getsockname() + return self.c:getpeername() +end + +function metat.__index:check(ok) + local code, reply = get_reply(self.c) + if not code then return nil, reply end + if base.type(ok) ~= "function" then + if base.type(ok) == "table" then + for i, v in base.ipairs(ok) do + if string.find(code, v) then + return base.tonumber(code), reply + end + end + return nil, reply + else + if string.find(code, ok) then return base.tonumber(code), reply + else return nil, reply end + end + else return ok(base.tonumber(code), reply) end +end + +function metat.__index:command(cmd, arg) + cmd = string.upper(cmd) + if arg then + return self.c:send(cmd .. " " .. arg.. "\r\n") + else + return self.c:send(cmd .. "\r\n") + end +end + +function metat.__index:sink(snk, pat) + local chunk, err = self.c:receive(pat) + return snk(chunk, err) +end + +function metat.__index:send(data) + return self.c:send(data) +end + +function metat.__index:receive(pat) + return self.c:receive(pat) +end + +function metat.__index:getfd() + return self.c:getfd() +end + +function metat.__index:dirty() + return self.c:dirty() +end + +function metat.__index:getcontrol() + return self.c +end + +function metat.__index:source(source, step) + local sink = socket.sink("keep-open", self.c) + local ret, err = ltn12.pump.all(source, sink, step or ltn12.pump.step) + return ret, err +end + +-- closes the underlying c +function metat.__index:close() + self.c:close() + return 1 +end + +-- connect with server and return c object +function _M.connect(host, port, timeout, create) + local c, e = (create or socket.tcp)() + if not c then return nil, e end + c:settimeout(timeout or _M.TIMEOUT) + local r, e = c:connect(host, port) + if not r then + c:close() + return nil, e + end + return base.setmetatable({c = c}, metat) +end + +return _M diff --git a/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/url.lua b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/url.lua new file mode 100644 index 00000000..b664307f --- /dev/null +++ b/V2RayGCon/Resources/Files/lua/libs/luasocket/socket/url.lua @@ -0,0 +1,331 @@ +----------------------------------------------------------------------------- +-- URI parsing, composition and relative URL resolution +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- +-- Declare module +----------------------------------------------------------------------------- +local string = require("string") +local base = _G +local table = require("table") +local socket = require('lua.libs.luasocket.socket') + +socket.url = {} +local _M = socket.url + +----------------------------------------------------------------------------- +-- Module version +----------------------------------------------------------------------------- +_M._VERSION = "URL 1.0.3" + +----------------------------------------------------------------------------- +-- Encodes a string into its escaped hexadecimal representation +-- Input +-- s: binary string to be encoded +-- Returns +-- escaped representation of string binary +----------------------------------------------------------------------------- +function _M.escape(s) + return (string.gsub(s, "([^A-Za-z0-9_])", function(c) + return string.format("%%%02x", string.byte(c)) + end)) +end + +----------------------------------------------------------------------------- +-- Protects a path segment, to prevent it from interfering with the +-- url parsing. +-- Input +-- s: binary string to be encoded +-- Returns +-- escaped representation of string binary +----------------------------------------------------------------------------- +local function make_set(t) + local s = {} + for i,v in base.ipairs(t) do + s[t[i]] = 1 + end + return s +end + +-- these are allowed within a path segment, along with alphanum +-- other characters must be escaped +local segment_set = make_set { + "-", "_", ".", "!", "~", "*", "'", "(", + ")", ":", "@", "&", "=", "+", "$", ",", +} + +local function protect_segment(s) + return string.gsub(s, "([^A-Za-z0-9_])", function (c) + if segment_set[c] then return c + else return string.format("%%%02X", string.byte(c)) end + end) +end + +----------------------------------------------------------------------------- +-- Unencodes a escaped hexadecimal string into its binary representation +-- Input +-- s: escaped hexadecimal string to be unencoded +-- Returns +-- unescaped binary representation of escaped hexadecimal binary +----------------------------------------------------------------------------- +function _M.unescape(s) + return (string.gsub(s, "%%(%x%x)", function(hex) + return string.char(base.tonumber(hex, 16)) + end)) +end + +----------------------------------------------------------------------------- +-- Removes '..' and '.' components appropriately from a path. +-- Input +-- path +-- Returns +-- dot-normalized path +local function remove_dot_components(path) + local marker = string.char(1) + repeat + local was = path + path = path:gsub('//', '/'..marker..'/', 1) + until path == was + repeat + local was = path + path = path:gsub('/%./', '/', 1) + until path == was + repeat + local was = path + path = path:gsub('[^/]+/%.%./([^/]+)', '%1', 1) + until path == was + path = path:gsub('[^/]+/%.%./*$', '') + path = path:gsub('/%.%.$', '/') + path = path:gsub('/%.$', '/') + path = path:gsub('^/%.%./', '/') + path = path:gsub(marker, '') + return path +end + +----------------------------------------------------------------------------- +-- Builds a path from a base path and a relative path +-- Input +-- base_path +-- relative_path +-- Returns +-- corresponding absolute path +----------------------------------------------------------------------------- +local function absolute_path(base_path, relative_path) + if string.sub(relative_path, 1, 1) == "/" then + return remove_dot_components(relative_path) end + base_path = base_path:gsub("[^/]*$", "") + if not base_path:find'/$' then base_path = base_path .. '/' end + local path = base_path .. relative_path + path = remove_dot_components(path) + return path +end + +----------------------------------------------------------------------------- +-- Parses a url and returns a table with all its parts according to RFC 2396 +-- The following grammar describes the names given to the URL parts +-- ::= :///;?# +-- ::= @: +-- ::= [:] +-- :: = {/} +-- Input +-- url: uniform resource locator of request +-- default: table with default values for each field +-- Returns +-- table with the following fields, where RFC naming conventions have +-- been preserved: +-- scheme, authority, userinfo, user, password, host, port, +-- path, params, query, fragment +-- Obs: +-- the leading '/' in {/} is considered part of +----------------------------------------------------------------------------- +function _M.parse(url, default) + -- initialize default parameters + local parsed = {} + for i,v in base.pairs(default or parsed) do parsed[i] = v end + -- empty url is parsed to nil + if not url or url == "" then return nil, "invalid url" end + -- remove whitespace + -- url = string.gsub(url, "%s", "") + -- get scheme + url = string.gsub(url, "^([%w][%w%+%-%.]*)%:", + function(s) parsed.scheme = s; return "" end) + -- get authority + url = string.gsub(url, "^//([^/]*)", function(n) + parsed.authority = n + return "" + end) + -- get fragment + url = string.gsub(url, "#(.*)$", function(f) + parsed.fragment = f + return "" + end) + -- get query string + url = string.gsub(url, "%?(.*)", function(q) + parsed.query = q + return "" + end) + -- get params + url = string.gsub(url, "%;(.*)", function(p) + parsed.params = p + return "" + end) + -- path is whatever was left + if url ~= "" then parsed.path = url end + local authority = parsed.authority + if not authority then return parsed end + authority = string.gsub(authority,"^([^@]*)@", + function(u) parsed.userinfo = u; return "" end) + authority = string.gsub(authority, ":([^:%]]*)$", + function(p) parsed.port = p; return "" end) + if authority ~= "" then + -- IPv6? + parsed.host = string.match(authority, "^%[(.+)%]$") or authority + end + local userinfo = parsed.userinfo + if not userinfo then return parsed end + userinfo = string.gsub(userinfo, ":([^:]*)$", + function(p) parsed.password = p; return "" end) + parsed.user = userinfo + return parsed +end + +----------------------------------------------------------------------------- +-- Rebuilds a parsed URL from its components. +-- Components are protected if any reserved or unallowed characters are found +-- Input +-- parsed: parsed URL, as returned by parse +-- Returns +-- a stringing with the corresponding URL +----------------------------------------------------------------------------- +function _M.build(parsed) + --local ppath = _M.parse_path(parsed.path or "") + --local url = _M.build_path(ppath) + local url = parsed.path or "" + if parsed.params then url = url .. ";" .. parsed.params end + if parsed.query then url = url .. "?" .. parsed.query end + local authority = parsed.authority + if parsed.host then + authority = parsed.host + if string.find(authority, ":") then -- IPv6? + authority = "[" .. authority .. "]" + end + if parsed.port then authority = authority .. ":" .. base.tostring(parsed.port) end + local userinfo = parsed.userinfo + if parsed.user then + userinfo = parsed.user + if parsed.password then + userinfo = userinfo .. ":" .. parsed.password + end + end + if userinfo then authority = userinfo .. "@" .. authority end + end + if authority then url = "//" .. authority .. url end + if parsed.scheme then url = parsed.scheme .. ":" .. url end + if parsed.fragment then url = url .. "#" .. parsed.fragment end + -- url = string.gsub(url, "%s", "") + return url +end + +----------------------------------------------------------------------------- +-- Builds a absolute URL from a base and a relative URL according to RFC 2396 +-- Input +-- base_url +-- relative_url +-- Returns +-- corresponding absolute url +----------------------------------------------------------------------------- +function _M.absolute(base_url, relative_url) + local base_parsed + if base.type(base_url) == "table" then + base_parsed = base_url + base_url = _M.build(base_parsed) + else + base_parsed = _M.parse(base_url) + end + local result + local relative_parsed = _M.parse(relative_url) + if not base_parsed then + result = relative_url + elseif not relative_parsed then + result = base_url + elseif relative_parsed.scheme then + result = relative_url + else + relative_parsed.scheme = base_parsed.scheme + if not relative_parsed.authority then + relative_parsed.authority = base_parsed.authority + if not relative_parsed.path then + relative_parsed.path = base_parsed.path + if not relative_parsed.params then + relative_parsed.params = base_parsed.params + if not relative_parsed.query then + relative_parsed.query = base_parsed.query + end + end + else + relative_parsed.path = absolute_path(base_parsed.path or "", + relative_parsed.path) + end + end + result = _M.build(relative_parsed) + end + return remove_dot_components(result) +end + +----------------------------------------------------------------------------- +-- Breaks a path into its segments, unescaping the segments +-- Input +-- path +-- Returns +-- segment: a table with one entry per segment +----------------------------------------------------------------------------- +function _M.parse_path(path) + local parsed = {} + path = path or "" + --path = string.gsub(path, "%s", "") + string.gsub(path, "([^/]+)", function (s) table.insert(parsed, s) end) + for i = 1, #parsed do + parsed[i] = _M.unescape(parsed[i]) + end + if string.sub(path, 1, 1) == "/" then parsed.is_absolute = 1 end + if string.sub(path, -1, -1) == "/" then parsed.is_directory = 1 end + return parsed +end + +----------------------------------------------------------------------------- +-- Builds a path component from its segments, escaping protected characters. +-- Input +-- parsed: path segments +-- unsafe: if true, segments are not protected before path is built +-- Returns +-- path: corresponding path stringing +----------------------------------------------------------------------------- +function _M.build_path(parsed, unsafe) + local path = "" + local n = #parsed + if unsafe then + for i = 1, n-1 do + path = path .. parsed[i] + path = path .. "/" + end + if n > 0 then + path = path .. parsed[n] + if parsed.is_directory then path = path .. "/" end + end + else + for i = 1, n-1 do + path = path .. protect_segment(parsed[i]) + path = path .. "/" + end + if n > 0 then + path = path .. protect_segment(parsed[n]) + if parsed.is_directory then path = path .. "/" end + end + end + if parsed.is_absolute then path = "/" .. path end + return path +end + +return _M From 490e03cf6be01c4cbdc4b6f35e30638ef90b6505 Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 28 May 2020 14:41:11 +0800 Subject: [PATCH 14/16] Add luasec. --- Plugins/Luna/Properties/Resources.Designer.cs | 2 +- Plugins/Luna/Properties/Resources.resx | 4 ++-- README.md | 2 ++ V2RayGCon/Properties/AssemblyInfo.cs | 3 ++- .../Resources/Files/lua/dll64/mime/core.dll | Bin 148480 -> 18944 bytes .../Resources/Files/lua/dll64/socket/core.dll | Bin 179200 -> 52224 bytes V2RayGCon/Resources/Files/lua/dll64/ssl.dll | Bin 53248 -> 133632 bytes .../lua/libs/luasocket/{ => socket}/mbox.lua | 0 8 files changed, 7 insertions(+), 4 deletions(-) rename V2RayGCon/Resources/Files/lua/libs/luasocket/{ => socket}/mbox.lua (100%) diff --git a/Plugins/Luna/Properties/Resources.Designer.cs b/Plugins/Luna/Properties/Resources.Designer.cs index aedb3552..8993ac88 100644 --- a/Plugins/Luna/Properties/Resources.Designer.cs +++ b/Plugins/Luna/Properties/Resources.Designer.cs @@ -130,7 +130,7 @@ internal static System.Drawing.Bitmap StoredProcedureScript_16x { } ///

- /// 查找类似 0.3.9 的本地化字符串。 + /// 查找类似 0.4.0 的本地化字符串。 /// internal static string Version { get { diff --git a/Plugins/Luna/Properties/Resources.resx b/Plugins/Luna/Properties/Resources.resx index 6db0985b..7174464c 100644 --- a/Plugins/Luna/Properties/Resources.resx +++ b/Plugins/Luna/Properties/Resources.resx @@ -140,7 +140,7 @@ ..\Resources\Icons\App\StoredProcedureScript_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- 0.3.9 - add Sys:CreateHttpServer() + 0.4.0 + add luasocket and luasec \ No newline at end of file diff --git a/README.md b/README.md index ae5a913f..e02903ad 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,8 @@ Require .net framework 4.5+. ### 引用按字母排序 Credits (in alphabetical order) [2dust/v2rayN](https://github.com/2dust/v2rayN) vmess分享链接及订阅格式 [Ahmad45123/AutoCompleteMenu-ScintillaNET](https://github.com/Ahmad45123/AutoCompleteMenu-ScintillaNET) 自动补全 +[brunoos/luasec](https://github.com/brunoos/luasec.git) Lua https +[diegonehab/luasocket](https://github.com/diegonehab/luasocket.git) Lua socket [FourierTransformer/lua-complete](https://github.com/FourierTransformer/lua-complete.git) lua模块补全 [haf/DotNetZip.Semverd](https://github.com/haf/DotNetZip.Semverd) .net 4.0解压zip文件 [HtmlAgilityPack](https://html-agility-pack.net/) HTML解释器 diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index 1a05d793..d865181b 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -33,10 +33,11 @@ // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.9.6")] +[assembly: AssemblyVersion("1.3.9.7")] [assembly: AssemblyFileVersion("1.0.0.0")] /* + * v1.3.9.7 Add luasocket and luasec. * v1.3.9.6 Add Sys:CreateHttpServer(). * v1.3.9.5 Adjust LuaUI. * v1.3.9.4 Selection hotkeys support in Misc:Choice(). diff --git a/V2RayGCon/Resources/Files/lua/dll64/mime/core.dll b/V2RayGCon/Resources/Files/lua/dll64/mime/core.dll index f1dcd97a10fbe8e1070ae2a6f05e8de4f930d436..4fa8f232cdb2767ac03edf288a0922fb3182bd26 100644 GIT binary patch delta 8283 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⪻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 diff --git a/V2RayGCon/Resources/Files/lua/dll64/ssl.dll b/V2RayGCon/Resources/Files/lua/dll64/ssl.dll index e4e1332c40279cdb66a54f51d12520557b21ad67..e80a00ab22ca034d53de64ace04038a5fd37b850 100644 GIT binary patch literal 133632 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 nlP5<|_FBu(w2gV>VGcRXAA1b4 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

DtK9b8jaMq$UfEYSN|LA^=EEY{Zpxg$EcA| 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 Date: Thu, 28 May 2020 19:49:35 +0800 Subject: [PATCH 15/16] Fix a bug. --- Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt b/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt index 4b4f1942..5332ca9e 100644 --- a/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt +++ b/Plugins/Luna/Resources/Files/LuaPredefinedFunctions.txt @@ -98,8 +98,10 @@ table.dump = function(t, indent, header, level) if tt ~= "table" then if tt == "string" then return '"' .. t .. '"' - else + elseif tt == "nil" or tt == "boolean" or tt == "number" then return tostring(t) + else + return tt end end From cd97d19075c179c3cded827b0a35a69d6d4e2238 Mon Sep 17 00:00:00 2001 From: nobody Date: Sun, 31 May 2020 17:57:55 +0800 Subject: [PATCH 16/16] Bump version to v1.4.0.0 --- .github/workflows/exp.yml | 2 +- .github/workflows/master.yml | 2 +- Plugins/Luna/Models/Apis/LuaSys.cs | 19 ++++++++++++--- Plugins/Luna/Properties/Resources.Designer.cs | 2 +- Plugins/Luna/Properties/Resources.resx | 4 ++-- Plugins/Luna/Services/FormMgrSvc.cs | 5 ---- Plugins/Luna/Services/LuaServer.cs | 5 ---- Plugins/Luna/Services/Settings.cs | 8 +++---- Plugins/Luna/Views/WinForms/FormMain.cs | 9 +------ Plugins/ProxySetter/Services/PsLuncher.cs | 6 ++--- Plugins/ProxySetter/Services/PsSettings.cs | 5 +++- V2RayGCon/Properties/AssemblyInfo.cs | 4 +++- V2RayGCon/Services/Notifier.cs | 24 +++++++++++-------- 13 files changed, 49 insertions(+), 46 deletions(-) diff --git a/.github/workflows/exp.yml b/.github/workflows/exp.yml index f34ad862..ff860cb5 100644 --- a/.github/workflows/exp.yml +++ b/.github/workflows/exp.yml @@ -17,7 +17,7 @@ jobs: verStr: '1.3.x.x' boxAppend: box v2rayCorePkgName: 'v2ray-windows-32.zip' - v2rayCoreVer: 'v4.23.1' + v2rayCoreVer: 'v4.23.2' # https://github.com/v2ray/v2ray-core/releases/download/v4.20.0/v2ray-windows-32.zip v2rayCoreUrl: 'https://github.com/v2ray/v2ray-core/releases/download' diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index f098f0c1..f2a3099e 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -17,7 +17,7 @@ jobs: verStr: '1.3.x' boxAppend: box v2rayCorePkgName: 'v2ray-windows-32.zip' - v2rayCoreVer: 'v4.23.1' + v2rayCoreVer: 'v4.23.2' # https://github.com/v2ray/v2ray-core/releases/download/v4.20.0/v2ray-windows-32.zip v2rayCoreUrl: 'https://github.com/v2ray/v2ray-core/releases/download' diff --git a/Plugins/Luna/Models/Apis/LuaSys.cs b/Plugins/Luna/Models/Apis/LuaSys.cs index 5793e953..e1c78e83 100644 --- a/Plugins/Luna/Models/Apis/LuaSys.cs +++ b/Plugins/Luna/Models/Apis/LuaSys.cs @@ -302,7 +302,7 @@ public Process RunAndForgot(string exePath, string args, string stdin) => public Process RunAndForgot(string exePath, string args, string stdin, LuaTable envs, bool hasWindow, bool redirectOutput) => - RunProcWorker(false, exePath, args, stdin, envs, hasWindow, redirectOutput); + RunProcWrapper(false, exePath, args, stdin, envs, hasWindow, redirectOutput); public Process Run(string exePath) => Run(exePath, null); @@ -315,7 +315,7 @@ public Process Run(string exePath, string args, string stdin) => public Process Run(string exePath, string args, string stdin, LuaTable envs, bool hasWindow, bool redirectOutput) => - RunProcWorker(true, exePath, args, stdin, envs, hasWindow, redirectOutput); + RunProcWrapper(true, exePath, args, stdin, envs, hasWindow, redirectOutput); #endregion @@ -381,8 +381,21 @@ public void OnSignalStop() #endregion #region private methods - Process RunProcWorker(bool isTracking, string exePath, string args, string stdin, + Process RunProcWrapper( + bool isTracking, string exePath, string args, string stdin, LuaTable envs, bool hasWindow, bool redirectOutput) + { + try + { + return RunProcWorker(isTracking, exePath, args, stdin, envs, hasWindow, redirectOutput); + } + catch { } + return null; + } + + Process RunProcWorker( + bool isTracking, string exePath, string args, string stdin, + LuaTable envs, bool hasWindow, bool redirectOutput) { var useStdIn = !string.IsNullOrEmpty(stdin); var p = new Process diff --git a/Plugins/Luna/Properties/Resources.Designer.cs b/Plugins/Luna/Properties/Resources.Designer.cs index 8993ac88..c01cc2c9 100644 --- a/Plugins/Luna/Properties/Resources.Designer.cs +++ b/Plugins/Luna/Properties/Resources.Designer.cs @@ -130,7 +130,7 @@ internal static System.Drawing.Bitmap StoredProcedureScript_16x { } ///

- /// 查找类似 0.4.0 的本地化字符串。 + /// 查找类似 0.4.1 的本地化字符串。 /// internal static string Version { get { diff --git a/Plugins/Luna/Properties/Resources.resx b/Plugins/Luna/Properties/Resources.resx index 7174464c..a87433b0 100644 --- a/Plugins/Luna/Properties/Resources.resx +++ b/Plugins/Luna/Properties/Resources.resx @@ -140,7 +140,7 @@ ..\Resources\Icons\App\StoredProcedureScript_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - 0.4.0 - add luasocket and luasec + 0.4.1 + fix a bug which would block core update. \ No newline at end of file diff --git a/Plugins/Luna/Services/FormMgrSvc.cs b/Plugins/Luna/Services/FormMgrSvc.cs index 20632805..adb9a92a 100644 --- a/Plugins/Luna/Services/FormMgrSvc.cs +++ b/Plugins/Luna/Services/FormMgrSvc.cs @@ -100,11 +100,6 @@ void RemoveFormFromList(Views.WinForms.FormEditor form) #region protected methods protected override void Cleanup() { - if (settings.IsClosing()) - { - return; - } - VgcApis.Misc.UI.CloseFormIgnoreError(formMain); List formList; diff --git a/Plugins/Luna/Services/LuaServer.cs b/Plugins/Luna/Services/LuaServer.cs index 8cb09c4b..a4de0251 100644 --- a/Plugins/Luna/Services/LuaServer.cs +++ b/Plugins/Luna/Services/LuaServer.cs @@ -171,11 +171,6 @@ public bool AddOrReplaceScript(string name, string script) #region protected methods protected override void Cleanup() { - if (settings.IsClosing()) - { - return; - } - var coreCtrls = GetAllLuaCoreCtrls(); foreach (var ctrl in coreCtrls) { diff --git a/Plugins/Luna/Services/Settings.cs b/Plugins/Luna/Services/Settings.cs index fe67f045..0cab492a 100644 --- a/Plugins/Luna/Services/Settings.cs +++ b/Plugins/Luna/Services/Settings.cs @@ -16,6 +16,9 @@ internal class Settings : public Settings() { } #region properties + bool _isDisposing = false; + public void SetIsDisposing(bool value) => _isDisposing = value; + public bool isScreenLocked => vgcSetting.IsScreenLocked(); @@ -36,10 +39,7 @@ public void SendLog(string contnet) vgcSetting.SendLog(string.Format("[{0}] {1}", name, contnet)); } - bool isDisposing = false; - public bool IsClosing() => isDisposing || vgcSetting.IsClosing(); - - public void SetIsDisposing(bool value) => isDisposing = value; + public bool IsClosing() => _isDisposing || vgcSetting.IsClosing(); public void Run( VgcApis.Interfaces.Services.ISettingsService vgcSetting) diff --git a/Plugins/Luna/Views/WinForms/FormMain.cs b/Plugins/Luna/Views/WinForms/FormMain.cs index 89700482..7af3f048 100644 --- a/Plugins/Luna/Views/WinForms/FormMain.cs +++ b/Plugins/Luna/Views/WinForms/FormMain.cs @@ -53,7 +53,6 @@ private void FormMain_Load(object sender, System.EventArgs e) genCtrl.Run(luaServer, formMgr); - this.FormClosing += FormClosingHandler; this.FormClosed += (s, a) => { // reverse order @@ -62,13 +61,7 @@ private void FormMain_Load(object sender, System.EventArgs e) } #region private methods - private void FormClosingHandler(object sender, FormClosingEventArgs e) - { - if (settings.IsClosing()) - { - return; - } - } + #endregion #region UI event handlers diff --git a/Plugins/ProxySetter/Services/PsLuncher.cs b/Plugins/ProxySetter/Services/PsLuncher.cs index 9cb4c947..4bec6c0f 100644 --- a/Plugins/ProxySetter/Services/PsLuncher.cs +++ b/Plugins/ProxySetter/Services/PsLuncher.cs @@ -61,12 +61,10 @@ public void Show() public void Cleanup() { FileLogger.Info("ProxySetting.Cleanup() begin"); + setting.SetIsDisposing(true); setting.DebugLog("call Luncher.cleanup"); serverTracker.OnSysProxyChanged -= UpdateMenuItemCheckedStatHandler; - if (!setting.IsClosing()) - { - VgcApis.Misc.UI.CloseFormIgnoreError(formMain); - } + VgcApis.Misc.UI.CloseFormIgnoreError(formMain); serverTracker.Cleanup(); pacServer.Cleanup(); setting.Cleanup(); diff --git a/Plugins/ProxySetter/Services/PsSettings.cs b/Plugins/ProxySetter/Services/PsSettings.cs index 5e04318d..57bc2043 100644 --- a/Plugins/ProxySetter/Services/PsSettings.cs +++ b/Plugins/ProxySetter/Services/PsSettings.cs @@ -17,7 +17,10 @@ public void Run( #region public methods - public bool IsClosing() => setting.IsClosing(); + bool _IsDisposing = false; + public void SetIsDisposing(bool value) => _IsDisposing = value; + + public bool IsClosing() => _IsDisposing || setting.IsClosing(); public void DebugLog(string content) { #if DEBUG diff --git a/V2RayGCon/Properties/AssemblyInfo.cs b/V2RayGCon/Properties/AssemblyInfo.cs index d865181b..ad3947b5 100644 --- a/V2RayGCon/Properties/AssemblyInfo.cs +++ b/V2RayGCon/Properties/AssemblyInfo.cs @@ -33,10 +33,12 @@ // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.9.7")] +[assembly: AssemblyVersion("1.4.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] /* + * ---------------------------------------- + * v1.3.9.8 Fix a bug which would block core updating. * v1.3.9.7 Add luasocket and luasec. * v1.3.9.6 Add Sys:CreateHttpServer(). * v1.3.9.5 Adjust LuaUI. diff --git a/V2RayGCon/Services/Notifier.cs b/V2RayGCon/Services/Notifier.cs index d186b2b2..dc44bd8e 100644 --- a/V2RayGCon/Services/Notifier.cs +++ b/V2RayGCon/Services/Notifier.cs @@ -738,27 +738,31 @@ private static void DrawTriangle( { var lw = w * 0.07f; var cr = w * 0.22f; + if (isFirstServ) { - cr -= lw / 2; + cr = cr - lw / 2; } + var dh = Math.Sqrt(3) * cr / 2f; var tri = new Point[] { - new Point((int)(cx - cr / 2f),(int)(cx - dh)), - new Point((int)(cx + cr),(int)cx), - new Point((int)(cx - cr / 2f),(int)(cx + dh)), - }; + new Point((int)(cx - cr / 2f),(int)(cx - dh)), + new Point((int)(cx + cr),(int)cx), + new Point((int)(cx - cr / 2f),(int)(cx + dh)), + }; if (!isFirstServ) { graphics.FillPolygon(Brushes.White, tri); - } - else - { - var pen = new Pen(Brushes.White, lw); - graphics.DrawPolygon(pen, tri); + return; } + var pen = new Pen(Brushes.White, lw) + { + StartCap = LineCap.Round, + EndCap = LineCap.Round, + }; + graphics.DrawPolygon(pen, tri); } private static void DrawOneLine(