forked from proxysu/ProxySU
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a2b2707
commit 5bd7529
Showing
13 changed files
with
398 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace ProxySuper.Core.Models.Projects | ||
{ | ||
public class BrookSettings : IProjectSettings | ||
{ | ||
public string Domain { get; set; } | ||
|
||
public string Password { get; set; } | ||
|
||
public BrookType BrookType { get; set; } | ||
|
||
public int Port { get; set; } = 443; | ||
|
||
public List<int> FreePorts | ||
{ | ||
get | ||
{ | ||
return new List<int>() | ||
{ | ||
Port | ||
}; | ||
} | ||
} | ||
|
||
public string Email => "[email protected]"; | ||
|
||
public ProjectType Type { get; set; } = ProjectType.Brook; | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace ProxySuper.Core.Models.Projects | ||
{ | ||
public enum BrookType | ||
{ | ||
server, | ||
wsserver, | ||
wssserver | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,6 +10,7 @@ public enum ProjectType | |
{ | ||
Xray = 0, | ||
TrojanGo = 1, | ||
NaiveProxy = 2 | ||
NaiveProxy = 2, | ||
Brook = 3, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
using ProxySuper.Core.Models.Projects; | ||
using Renci.SshNet; | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace ProxySuper.Core.Services | ||
{ | ||
public class BrookProject : ProjectBase<BrookSettings> | ||
{ | ||
public BrookProject(SshClient sshClient, BrookSettings parameters, Action<string> writeOutput) : base(sshClient, parameters, writeOutput) | ||
{ | ||
} | ||
|
||
public override void Install() | ||
{ | ||
|
||
WriteOutput("检测安装系统环境..."); | ||
EnsureSystemEnv(); | ||
WriteOutput("检测安装系统环境完成"); | ||
|
||
WriteOutput("配置服务器端口..."); | ||
ConfigurePort(); | ||
WriteOutput("端口配置完成"); | ||
|
||
WriteOutput("安装必要的系统工具..."); | ||
ConfigureSoftware(); | ||
WriteOutput("系统工具安装完成"); | ||
|
||
WriteOutput("检测IP6..."); | ||
ConfigureIPv6(); | ||
WriteOutput("检测IP6完成"); | ||
|
||
WriteOutput("配置防火墙..."); | ||
ConfigureFirewall(); | ||
WriteOutput("防火墙配置完成"); | ||
|
||
if (Parameters.BrookType == BrookType.wssserver) | ||
{ | ||
WriteOutput("检测域名是否绑定本机IP..."); | ||
ValidateDomain(); | ||
WriteOutput("域名检测完成"); | ||
} | ||
|
||
|
||
|
||
} | ||
|
||
public void InstallBrook() | ||
{ | ||
Console.WriteLine("安装nami"); | ||
RunCmd("source <(curl -L https://git.io/getnami)"); | ||
Console.WriteLine("安装nami完成"); | ||
|
||
Console.WriteLine("安装Brook"); | ||
RunCmd("echo y | nami install github.com/txthinking/brook"); | ||
Console.WriteLine("安装Brook完成"); | ||
|
||
Console.WriteLine("安装joker"); | ||
RunCmd("echo y | nami install github.com/txthinking/joker"); | ||
Console.WriteLine("安装joker完成"); | ||
|
||
Console.WriteLine("安装jinbe"); | ||
RunCmd("echo y | nami install github.com/txthinking/jinbe"); | ||
Console.WriteLine("安装jinbe完成"); | ||
|
||
|
||
var runBrookCmd = string.Empty; | ||
|
||
if (Parameters.BrookType == BrookType.server) | ||
{ | ||
runBrookCmd = $"joker brook server --listen :{Parameters.Port} --password {Parameters.Password}"; | ||
} | ||
|
||
if (Parameters.BrookType == BrookType.wsserver) | ||
{ | ||
runBrookCmd = $"joker brook wsserver --listen :{Parameters.Port} --password {Parameters.Password}"; | ||
} | ||
|
||
if (Parameters.BrookType == BrookType.wsserver) | ||
{ | ||
runBrookCmd = $"joker brook wssserver --domain {Parameters.Domain} --password {Parameters.Password}"; | ||
} | ||
|
||
RunCmd("jinbe " + runBrookCmd); | ||
|
||
Console.WriteLine("*************安装完成,尽情享用吧**********"); | ||
} | ||
|
||
public void Uninstall() | ||
{ | ||
RunCmd("jinbe remove 0"); | ||
RunCmd("killall joker"); | ||
|
||
Console.WriteLine("卸载jinbe"); | ||
RunCmd("echo y | nami remove github.com/txthinking/jinbe"); | ||
|
||
Console.WriteLine("卸载joker"); | ||
RunCmd("echo y | nami remove github.com/txthinking/joker"); | ||
|
||
Console.WriteLine("卸载brook"); | ||
RunCmd("echo y | nami remove github.com/txthinking/brook"); | ||
|
||
Console.WriteLine("关闭端口"); | ||
ClosePort(Parameters.FreePorts.ToArray()); | ||
|
||
Console.WriteLine("******卸载完成******"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
using MvvmCross.Commands; | ||
using MvvmCross.Navigation; | ||
using MvvmCross.ViewModels; | ||
using ProxySuper.Core.Models; | ||
using ProxySuper.Core.Models.Hosts; | ||
using ProxySuper.Core.Models.Projects; | ||
using ProxySuper.Core.Services; | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace ProxySuper.Core.ViewModels | ||
{ | ||
public class BrookEditorViewModel : MvxViewModel<Record, Record> | ||
{ | ||
public string Id { get; set; } | ||
|
||
public Host Host { get; set; } | ||
|
||
public BrookSettings Settings { get; set; } | ||
|
||
public List<string> BrookTypes | ||
{ | ||
get | ||
{ | ||
return new List<string> { | ||
BrookType.server.ToString(), | ||
BrookType.wsserver.ToString(), | ||
BrookType.wssserver.ToString(), | ||
}; | ||
} | ||
} | ||
|
||
public string CheckedBrookType | ||
{ | ||
get | ||
{ | ||
return Settings.BrookType.ToString(); | ||
} | ||
set | ||
{ | ||
Settings.BrookType = (BrookType)Enum.Parse(typeof(BrookType), value); | ||
RaisePropertyChanged("EnablePort"); | ||
RaisePropertyChanged("EnableDomain"); | ||
} | ||
} | ||
|
||
public bool EnablePort => Settings.BrookType != BrookType.wssserver; | ||
|
||
public bool EnableDomain => Settings.BrookType == BrookType.wssserver; | ||
|
||
public IMvxCommand SaveCommand => new MvxCommand(() => Save()); | ||
|
||
public IMvxNavigationService NavigationService { get; } | ||
|
||
public override void Prepare(Record parameter) | ||
{ | ||
var record = Utils.DeepClone(parameter); | ||
Id = record.Id; | ||
Host = record.Host; | ||
Settings = record.BrookSettings; | ||
} | ||
|
||
public void Save() | ||
{ | ||
NavigationService.Close(this, new Record() | ||
{ | ||
Id = Id, | ||
Host = Host, | ||
BrookSettings = Settings, | ||
}); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.