|
|
using Newtonsoft.Json;
|
|
|
using Prism.Commands;
|
|
|
using Prism.Ioc;
|
|
|
using Prism.Mvvm;
|
|
|
using Prism.Services.Dialogs;
|
|
|
using StartServerWPF.Models;
|
|
|
using StartServerWPF.Modules.Main.Models;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Collections.ObjectModel;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Input;
|
|
|
|
|
|
namespace StartServerWPF.Modules.Main.ViewModels
|
|
|
{
|
|
|
public class SetParamViewModel : BindableBase
|
|
|
{
|
|
|
public SetParamViewModel(MainViewModel mainViewModel,SystemConfigModel configModel)
|
|
|
{
|
|
|
_systemConfig = configModel;
|
|
|
MainModel = _systemConfig.vpnInfo;
|
|
|
MoniTime = mainViewModel.MoniStartTime;
|
|
|
|
|
|
string sapm = File.ReadAllText(configModel.proApms.ProPath+ "apms.json");
|
|
|
AModel = JsonConvert.DeserializeObject<ApmsModel>(sapm);
|
|
|
ApmsJsonName = _systemConfig.proApms.JsonPath;
|
|
|
var apmsStation = ToolsModel.CreateStationFromCSV(configModel.proApms.ProPath + AModel.station);
|
|
|
ApmsStationSource = new ObservableCollection<StationControlModel>();
|
|
|
foreach (var item in apmsStation)
|
|
|
{
|
|
|
if (item.Enable)
|
|
|
{
|
|
|
ApmsStationSource.Add(item);
|
|
|
}
|
|
|
}
|
|
|
IsApmswxNotity = AModel.push2wx == "NO" ? false : true;
|
|
|
|
|
|
string tool = File.ReadAllText(configModel.proTools.ProPath + "apms.json");
|
|
|
ToolsModel = JsonConvert.DeserializeObject<ApmsModel>(tool);
|
|
|
ToolsJsonName = _systemConfig.proTools.JsonPath;
|
|
|
|
|
|
var st= ToolsModel.CreateStationFromCSV(configModel.proTools.ProPath + AModel.station);
|
|
|
ToolsStationSource = new ObservableCollection<StationControlModel>();
|
|
|
foreach (var item in st)
|
|
|
{
|
|
|
if (item.Enable)
|
|
|
{
|
|
|
ToolsStationSource.Add(item);
|
|
|
}
|
|
|
}
|
|
|
IsToolswxNotity = ToolsModel.push2wx == "NO" ? false : true;
|
|
|
int index= _systemConfig.proTools.ProParams.IndexOf("-delay");
|
|
|
int.TryParse (_systemConfig.proTools.ProParams.Substring(index+ "-delay".Length), out int Time);
|
|
|
DelayTime = Time/60;
|
|
|
|
|
|
}
|
|
|
private string _title = "应用列表";
|
|
|
public string Title => _title;
|
|
|
|
|
|
|
|
|
private SystemConfigModel _systemConfig;
|
|
|
private string _apmsJsonName;
|
|
|
public string ApmsJsonName
|
|
|
{
|
|
|
get => _apmsJsonName;
|
|
|
set { SetProperty(ref _apmsJsonName, value); }
|
|
|
}
|
|
|
private bool _isApmswxNotity;
|
|
|
public bool IsApmswxNotity
|
|
|
{
|
|
|
get => _isApmswxNotity;
|
|
|
set { SetProperty(ref _isApmswxNotity, value); }
|
|
|
}
|
|
|
private ApmsModel _apmsModel = new ApmsModel();
|
|
|
public ApmsModel AModel
|
|
|
{
|
|
|
get => _apmsModel;
|
|
|
set { SetProperty(ref _apmsModel, value); }
|
|
|
}
|
|
|
|
|
|
private string _toolsJsonName;
|
|
|
public string ToolsJsonName
|
|
|
{
|
|
|
get => _toolsJsonName;
|
|
|
set { SetProperty(ref _toolsJsonName, value); }
|
|
|
}
|
|
|
private ApmsModel _toolsModel = new ApmsModel();
|
|
|
public ApmsModel ToolsModel
|
|
|
{
|
|
|
get => _toolsModel;
|
|
|
set { SetProperty(ref _toolsModel, value); }
|
|
|
}
|
|
|
|
|
|
private bool _isToolswxNotity;
|
|
|
public bool IsToolswxNotity
|
|
|
{
|
|
|
get => _isToolswxNotity;
|
|
|
set { SetProperty(ref _isToolswxNotity, value); }
|
|
|
}
|
|
|
private int _delayTime;
|
|
|
public int DelayTime
|
|
|
{
|
|
|
get => _delayTime;
|
|
|
set { SetProperty(ref _delayTime, value); }
|
|
|
}
|
|
|
|
|
|
private ObservableCollection<StationControlModel> _toolsStationSource;
|
|
|
public ObservableCollection<StationControlModel> ToolsStationSource
|
|
|
{ get => _toolsStationSource; set => SetProperty(ref _toolsStationSource, value); }
|
|
|
|
|
|
private ObservableCollection<StationControlModel> _ApmsStationSource;
|
|
|
public ObservableCollection<StationControlModel> ApmsStationSource
|
|
|
{ get => _ApmsStationSource; set => SetProperty(ref _ApmsStationSource, value); }
|
|
|
|
|
|
private VpnInfo _mainModel = new VpnInfo();
|
|
|
public VpnInfo MainModel
|
|
|
{
|
|
|
get => _mainModel;
|
|
|
set { SetProperty(ref _mainModel, value); }
|
|
|
}
|
|
|
|
|
|
private DateTime _moniTime ;
|
|
|
public DateTime MoniTime
|
|
|
{
|
|
|
get => _moniTime;
|
|
|
set { SetProperty(ref _moniTime, value); }
|
|
|
}
|
|
|
|
|
|
public DelegateCommand<object> SelectFileCommand => new((obj) =>
|
|
|
{
|
|
|
|
|
|
string para = obj.ToString();
|
|
|
System.Windows.Forms.OpenFileDialog fbd = new System.Windows.Forms.OpenFileDialog();
|
|
|
fbd.Multiselect = false;
|
|
|
if (para.Contains("apms"))
|
|
|
{
|
|
|
fbd.InitialDirectory = Path.GetFullPath(_systemConfig.proApms.ProPath);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
fbd.InitialDirectory = Path.GetFullPath(_systemConfig.proTools.ProPath);
|
|
|
}
|
|
|
|
|
|
if (fbd.ShowDialog()== System.Windows.Forms.DialogResult.OK)
|
|
|
{
|
|
|
switch (para)
|
|
|
{
|
|
|
case "apmsStation":
|
|
|
AModel.station = fbd.SafeFileName;
|
|
|
break;
|
|
|
case "apmsttime2d":
|
|
|
AModel.ttime[0].ttime2d = fbd.SafeFileName;
|
|
|
break;
|
|
|
case "toolsStation":
|
|
|
ToolsModel.station = fbd.SafeFileName;
|
|
|
break;
|
|
|
case "toolsttime2d":
|
|
|
ToolsModel.ttime[0].ttime2d = fbd.SafeFileName;
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
public DelegateCommand<object> FilePathSaveCommand=> new((obj)=>
|
|
|
{
|
|
|
string para= obj.ToString();
|
|
|
System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
|
|
|
fbd.SelectedPath = MainModel.DataSavePath;
|
|
|
fbd.ShowNewFolderButton = true;
|
|
|
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
{
|
|
|
string path= fbd.SelectedPath.Replace("\\", "/");
|
|
|
if (para == "systemSavepath")
|
|
|
{
|
|
|
MainModel.DataSavePath = path;
|
|
|
}
|
|
|
else if(para == "apmssavepath")
|
|
|
{
|
|
|
AModel.savepath = path;
|
|
|
}
|
|
|
else if(para == "toolssavepath")
|
|
|
{
|
|
|
ToolsModel.savepath = path;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
});
|
|
|
public DelegateCommand LogPathSaveCommand=> new(() =>
|
|
|
{
|
|
|
System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
|
|
|
fbd.SelectedPath = System.Environment.CurrentDirectory + "\\" + MainModel.SystemLogPath;
|
|
|
fbd.ShowNewFolderButton = true;
|
|
|
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
{
|
|
|
|
|
|
MainModel.SystemLogPath = fbd.SelectedPath;
|
|
|
}
|
|
|
});
|
|
|
|
|
|
public ICommand ConfirmCommand
|
|
|
{
|
|
|
get => new DelegateCommand(() =>
|
|
|
{
|
|
|
// 数据校验(关键字段不能为空、年龄做数字区间的校验、做UserName的唯一检查(自定义特性检查)
|
|
|
if (string.IsNullOrEmpty(MainModel.VpnName) || string.IsNullOrEmpty(MainModel.VpnIP))
|
|
|
{
|
|
|
MessageBox.Show("内容不能为空", "提示", MessageBoxButton.OK);
|
|
|
return;
|
|
|
}
|
|
|
if (MessageBox.Show("确认修改?", "参数设置", MessageBoxButton.OKCancel,
|
|
|
MessageBoxImage.Exclamation) == MessageBoxResult.OK)
|
|
|
{
|
|
|
|
|
|
AModel.channels[0].station = string.Join(",", ApmsStationSource.Where(p => p.Enable).Select(a => a.Num));
|
|
|
if (_systemConfig.proApms.JsonPath != ApmsJsonName)
|
|
|
{
|
|
|
_systemConfig.proApms.ProParams = _systemConfig.proApms.ProParams.Replace(_systemConfig.proApms.JsonPath, ApmsJsonName);
|
|
|
_systemConfig.proApms.JsonPath = ApmsJsonName;
|
|
|
}
|
|
|
JsonParser.WriteSystemConfigFile(_systemConfig.proApms.ProPath + ApmsJsonName, AModel);
|
|
|
|
|
|
ToolsModel.channels[0].station = string.Join(",", ToolsStationSource.Where(p => p.Enable).Select(a => a.Num));
|
|
|
if (_systemConfig.proTools.JsonPath != ToolsJsonName)
|
|
|
{
|
|
|
_systemConfig.proTools.ProParams = _systemConfig.proTools.ProParams.Replace(_systemConfig.proTools.JsonPath, ToolsJsonName);
|
|
|
_systemConfig.proTools.JsonPath = ToolsJsonName;
|
|
|
}
|
|
|
//if (_systemConfig.vpnInfo.DataSavePath != ToolsModel.savepath)
|
|
|
//{
|
|
|
// _systemConfig.vpnInfo.DataSavePath = ToolsModel.savepath;
|
|
|
//}
|
|
|
JsonParser.WriteSystemConfigFile(_systemConfig.proTools.ProPath + ToolsJsonName, ToolsModel);
|
|
|
|
|
|
int index= _systemConfig.proTools.ProParams.IndexOf("-savepath");
|
|
|
// int index = _systemConfig.proTools.ProParams.IndexOf("-delay");
|
|
|
string str= _systemConfig.proTools.ProParams.Substring(0, index)+ "-savepath";
|
|
|
_systemConfig.proTools.ProParams = $"{str} {ToolsModel.savepath} -delay {DelayTime * 60}";
|
|
|
JsonParser.WriteSystemConfigFile(JsonParser.systemConfigPath, _systemConfig);
|
|
|
|
|
|
|
|
|
JsonParser.UpdateRecvJson(_systemConfig.proRecv.ProPath + _systemConfig.proRecv.JsonPath, _systemConfig.vpnInfo.DataSavePath);
|
|
|
//JsonParser.UpdateApmsJson(_systemConfig.proApms.ProPath + _systemConfig.proApms.JsonPath, _systemConfig.vpnInfo.DataSavePath);
|
|
|
// RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|