mirror of
https://github.com/proxysu/ProxySU.git
synced 2024-11-22 13:16:09 +03:00
merge
This commit is contained in:
parent
ae1c06f6af
commit
14401058dc
@ -60,13 +60,13 @@ namespace ProxySU_Core.ViewModels.Developers
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string BuildCaddyConfig(XraySettings parameters)
|
public static string BuildCaddyConfig(XraySettings parameters, bool useCustomWeb = false)
|
||||||
{
|
{
|
||||||
var caddyStr = File.ReadAllText(Path.Combine(CaddyFileDir, "base.caddyfile"));
|
var caddyStr = File.ReadAllText(Path.Combine(CaddyFileDir, "base.caddyfile"));
|
||||||
caddyStr = caddyStr.Replace("##domain##", parameters.Domain);
|
caddyStr = caddyStr.Replace("##domain##", parameters.Domain);
|
||||||
if (!string.IsNullOrEmpty(parameters.MaskDomain))
|
if (!useCustomWeb && !string.IsNullOrEmpty(parameters.MaskDomain))
|
||||||
{
|
{
|
||||||
caddyStr = caddyStr.Replace("##reverse_proxy##", $"reverse_proxy http://{parameters.MaskDomain} {{ header_up Host {parameters.MaskDomain} }}");
|
caddyStr = caddyStr.Replace("##reverse_proxy##", $"reverse_proxy {parameters.MaskDomain} {{ header_up Host {parameters.MaskDomain} }}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -553,15 +553,15 @@ namespace ProxySU_Core.ViewModels.Developers
|
|||||||
{
|
{
|
||||||
if (CmdType == CmdType.Apt)
|
if (CmdType == CmdType.Apt)
|
||||||
{
|
{
|
||||||
return "apt-get install " + soft;
|
return "echo y | apt-get install " + soft;
|
||||||
}
|
}
|
||||||
else if (CmdType == CmdType.Dnf)
|
else if (CmdType == CmdType.Dnf)
|
||||||
{
|
{
|
||||||
return "dnf -y install " + soft;
|
return "echo y | dnf -y install " + soft;
|
||||||
}
|
}
|
||||||
else if (CmdType == CmdType.Yum)
|
else if (CmdType == CmdType.Yum)
|
||||||
{
|
{
|
||||||
return "yum -y install " + soft;
|
return "echo y | yum -y install " + soft;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Exception("未识别的系统");
|
throw new Exception("未识别的系统");
|
||||||
|
@ -52,10 +52,9 @@ namespace ProxySU_Core.ViewModels.Developers
|
|||||||
UploadFile(stream, "/usr/share/caddy/caddy.zip");
|
UploadFile(stream, "/usr/share/caddy/caddy.zip");
|
||||||
RunCmd("unzip /usr/share/caddy/caddy.zip -d /usr/share/caddy");
|
RunCmd("unzip /usr/share/caddy/caddy.zip -d /usr/share/caddy");
|
||||||
RunCmd("chmod -R 777 /usr/share/caddy");
|
RunCmd("chmod -R 777 /usr/share/caddy");
|
||||||
|
UploadCaddyFile(useCustomWeb: true);
|
||||||
RunCmd("systemctl restart caddy");
|
RunCmd("systemctl restart caddy");
|
||||||
WriteOutput("************");
|
WriteOutput("************\n上传网站模板完成\n************");
|
||||||
WriteOutput("上传网站模板完成");
|
|
||||||
WriteOutput("************");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReinstallCaddy()
|
public void ReinstallCaddy()
|
||||||
@ -133,9 +132,9 @@ namespace ProxySU_Core.ViewModels.Developers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UploadCaddyFile()
|
private void UploadCaddyFile(bool useCustomWeb = false)
|
||||||
{
|
{
|
||||||
var configJson = ConfigBuilder.BuildCaddyConfig(Parameters);
|
var configJson = ConfigBuilder.BuildCaddyConfig(Parameters, useCustomWeb);
|
||||||
var stream = new MemoryStream(Encoding.UTF8.GetBytes(configJson));
|
var stream = new MemoryStream(Encoding.UTF8.GetBytes(configJson));
|
||||||
RunCmd("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.back");
|
RunCmd("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.back");
|
||||||
UploadFile(stream, "/etc/caddy/Caddyfile");
|
UploadFile(stream, "/etc/caddy/Caddyfile");
|
||||||
@ -179,7 +178,7 @@ namespace ProxySU_Core.ViewModels.Developers
|
|||||||
RunCmd(GetInstallCmd("socat"));
|
RunCmd(GetInstallCmd("socat"));
|
||||||
|
|
||||||
// 解决搬瓦工CentOS缺少问题
|
// 解决搬瓦工CentOS缺少问题
|
||||||
RunCmd("echo y | " + GetInstallCmd("automake autoconf libtool"));
|
RunCmd(GetInstallCmd("automake autoconf libtool"));
|
||||||
|
|
||||||
// 安装Acme
|
// 安装Acme
|
||||||
var result = RunCmd($"curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh -s -- --install-online -m {GetRandomEmail()}");
|
var result = RunCmd($"curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh -s -- --install-online -m {GetRandomEmail()}");
|
||||||
|
@ -8,7 +8,6 @@ namespace ProxySU_Core.ViewModels
|
|||||||
{
|
{
|
||||||
public class Terminal : BaseViewModel
|
public class Terminal : BaseViewModel
|
||||||
{
|
{
|
||||||
private string outputText;
|
|
||||||
private bool hasConnected;
|
private bool hasConnected;
|
||||||
|
|
||||||
public Terminal(Host host)
|
public Terminal(Host host)
|
||||||
@ -34,26 +33,6 @@ namespace ProxySU_Core.ViewModels
|
|||||||
|
|
||||||
public string CommandText { get; set; }
|
public string CommandText { get; set; }
|
||||||
|
|
||||||
public string OutputText
|
public string OutputText { get; set; }
|
||||||
{
|
|
||||||
get => outputText;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearOutput()
|
|
||||||
{
|
|
||||||
outputText = "";
|
|
||||||
Notify("OutputText");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddOutput(string text)
|
|
||||||
{
|
|
||||||
outputText += text;
|
|
||||||
|
|
||||||
if (!text.EndsWith("\n"))
|
|
||||||
{
|
|
||||||
outputText += "\n";
|
|
||||||
}
|
|
||||||
Notify("OutputText");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,20 +8,16 @@
|
|||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="主机控制台" Height="500" Width="800">
|
Title="主机控制台" Height="500" Width="800">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<RichTextBox IsReadOnly="True"
|
<TextBox IsReadOnly="True"
|
||||||
Block.LineHeight="18"
|
Block.LineHeight="18"
|
||||||
Background="#000"
|
Background="#000"
|
||||||
Foreground="LawnGreen"
|
Foreground="LawnGreen"
|
||||||
FontSize="14"
|
FontSize="14"
|
||||||
FontFamily="Consolas"
|
FontFamily="Consolas"
|
||||||
x:Name="OutputTextBox"
|
x:Name="OutputTextBox"
|
||||||
Height="320">
|
Height="320"
|
||||||
<FlowDocument>
|
Text="{Binding Path=OutputText}"
|
||||||
<Paragraph>
|
/>
|
||||||
<Run Text="{Binding Path=OutputText, Mode=OneWay}" />
|
|
||||||
</Paragraph>
|
|
||||||
</FlowDocument>
|
|
||||||
</RichTextBox>
|
|
||||||
|
|
||||||
<StackPanel Margin="10"
|
<StackPanel Margin="10"
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
|
@ -44,7 +44,7 @@ namespace ProxySU_Core
|
|||||||
_vm = new Terminal(record.Host);
|
_vm = new Terminal(record.Host);
|
||||||
DataContext = _vm;
|
DataContext = _vm;
|
||||||
|
|
||||||
_vm.AddOutput("Connect ...");
|
WriteOutput("Connect ...");
|
||||||
Task.Factory.StartNew(() =>
|
Task.Factory.StartNew(() =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -108,17 +108,21 @@ namespace ProxySU_Core
|
|||||||
var conneInfo = CreateConnectionInfo(host);
|
var conneInfo = CreateConnectionInfo(host);
|
||||||
_sshClient = new SshClient(conneInfo);
|
_sshClient = new SshClient(conneInfo);
|
||||||
_sshClient.Connect();
|
_sshClient.Connect();
|
||||||
_vm.AddOutput("Connected");
|
WriteOutput("Connected");
|
||||||
|
|
||||||
_vm.HasConnected = true;
|
_vm.HasConnected = true;
|
||||||
project = new XrayProject(_sshClient, Record.Settings, WriteShell);
|
project = new XrayProject(_sshClient, Record.Settings, WriteOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WriteShell(string outShell)
|
private void WriteOutput(string outShell)
|
||||||
{
|
{
|
||||||
_vm.AddOutput(outShell);
|
if (!outShell.EndsWith("\n"))
|
||||||
|
{
|
||||||
|
outShell += "\n";
|
||||||
|
}
|
||||||
Dispatcher.Invoke(() =>
|
Dispatcher.Invoke(() =>
|
||||||
{
|
{
|
||||||
|
OutputTextBox.AppendText(outShell);
|
||||||
OutputTextBox.ScrollToEnd();
|
OutputTextBox.ScrollToEnd();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user