2021-03-06 12:26:17 +03:00
|
|
|
|
using ProxySU_Core.Models;
|
2021-03-09 12:52:09 +03:00
|
|
|
|
using ProxySU_Core.ViewModels;
|
2021-04-19 07:12:23 +03:00
|
|
|
|
using QRCoder;
|
2021-03-06 12:26:17 +03:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2021-04-19 07:12:23 +03:00
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.IO;
|
2021-03-06 12:26:17 +03:00
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Data;
|
|
|
|
|
using System.Windows.Documents;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
using System.Windows.Media.Imaging;
|
|
|
|
|
using System.Windows.Shapes;
|
|
|
|
|
|
2021-04-17 06:50:31 +03:00
|
|
|
|
namespace ProxySU_Core.Views.ClientInfo
|
2021-03-06 12:26:17 +03:00
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ClientInfoWindow.xaml 的交互逻辑
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class ClientInfoWindow
|
|
|
|
|
{
|
2021-03-09 12:52:09 +03:00
|
|
|
|
public XraySettingsViewModel Settings { get; set; }
|
|
|
|
|
|
2021-03-06 12:26:17 +03:00
|
|
|
|
public ClientInfoWindow(Record record)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
2021-03-10 05:50:34 +03:00
|
|
|
|
ResizeMode = ResizeMode.NoResize;
|
|
|
|
|
WindowStartupLocation = WindowStartupLocation.CenterScreen;
|
2021-03-06 12:26:17 +03:00
|
|
|
|
|
2021-03-09 12:52:09 +03:00
|
|
|
|
Settings = new XraySettingsViewModel(record.Settings);
|
|
|
|
|
DataContext = this;
|
2021-03-06 12:26:17 +03:00
|
|
|
|
}
|
2021-04-19 07:12:23 +03:00
|
|
|
|
|
2021-04-19 11:02:13 +03:00
|
|
|
|
private void SelectDefault(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var tabControl = e.Source as TabControl;
|
|
|
|
|
var item = (tabControl.SelectedItem as TabItem);
|
|
|
|
|
var itemControl = item.Content as ContentControl;
|
|
|
|
|
if (itemControl == null) return;
|
|
|
|
|
Console.WriteLine(itemControl.Tag);
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-19 07:12:23 +03:00
|
|
|
|
private void BuildQrCode(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var tabControl = e.Source as TabControl;
|
|
|
|
|
var item = (tabControl.SelectedItem as TabItem);
|
2021-04-19 11:02:13 +03:00
|
|
|
|
if (item == null) return;
|
2021-04-19 07:12:23 +03:00
|
|
|
|
var type = (XrayType)item.Tag;
|
2021-04-19 11:02:13 +03:00
|
|
|
|
if (type == null) return;
|
|
|
|
|
BuildQrCode(type);
|
|
|
|
|
}
|
2021-04-19 07:12:23 +03:00
|
|
|
|
|
2021-04-19 11:02:13 +03:00
|
|
|
|
private void BuildQrCode(XrayType type)
|
|
|
|
|
{
|
2021-04-19 07:12:23 +03:00
|
|
|
|
string shareLink = string.Empty;
|
|
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case XrayType.VLESS_TCP_XTLS:
|
|
|
|
|
shareLink = Settings.VLESS_TCP_XTLS_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VLESS_TCP:
|
|
|
|
|
shareLink = Settings.VLESS_TCP_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VLESS_WS:
|
|
|
|
|
shareLink = Settings.VLESS_WS_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VLESS_H2:
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VLESS_KCP:
|
|
|
|
|
shareLink = Settings.VLESS_KCP_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VLESS_gRPC:
|
|
|
|
|
shareLink = Settings.VLESS_gRPC_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VMESS_TCP:
|
|
|
|
|
shareLink = Settings.VMESS_TCP_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VMESS_WS:
|
|
|
|
|
shareLink = Settings.VMESS_WS_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VMESS_H2:
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.VMESS_KCP:
|
|
|
|
|
shareLink = Settings.VMESS_KCP_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.Trojan_TCP:
|
|
|
|
|
shareLink = Settings.Trojan_TCP_ShareLink;
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.Trojan_WS:
|
|
|
|
|
break;
|
|
|
|
|
case XrayType.ShadowsocksAEAD:
|
|
|
|
|
shareLink = Settings.ShadowSocksShareLink;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QRCodeGenerator qrGenerator = new QRCodeGenerator();
|
|
|
|
|
QRCodeData qrCodeData = qrGenerator.CreateQrCode(shareLink, QRCodeGenerator.ECCLevel.Q);
|
|
|
|
|
QRCode qrCode = new QRCode(qrCodeData);
|
|
|
|
|
|
|
|
|
|
Bitmap qrCodeImage = qrCode.GetGraphic(20);
|
|
|
|
|
MemoryStream ms = new MemoryStream();
|
|
|
|
|
qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
|
|
|
|
|
byte[] bytes = ms.GetBuffer();
|
|
|
|
|
ms.Close();
|
|
|
|
|
BitmapImage image = new BitmapImage();
|
|
|
|
|
image.BeginInit();
|
|
|
|
|
image.StreamSource = new MemoryStream(bytes);
|
|
|
|
|
image.EndInit();
|
|
|
|
|
QrImage.Source = image;
|
|
|
|
|
}
|
2021-03-06 12:26:17 +03:00
|
|
|
|
}
|
|
|
|
|
}
|