public async Task ClientConnectSample( IPAddress serverIpAddress, Guid serverId, X509Certificate serverCertificate) { var client = new TcpClient(AddressFamily.InterNetwork); await client.ConnectAsync(serverIpAddress, 1234); var result = await Lapi.ConnectToServer( client.GetStream(), applicationSpecificPresharedKey, clientId, serverId, clientCertificate, serverCertificate); if (result.Successful) { var stream = result.Result; await stream.WriteSafelyAsync(CancellationToken.None, "Hi there, server!"); var response = await stream.ReceiveStringSafelyAsync(CancellationToken.None); if (response.Successful) { Console.WriteLine($"Server responded with: '{response.Result}'"); } } }
private ITemplate BuildTemplate() { ITemplate tpl = new ITemplate(); EItemType type = (EItemType)cmbType.SelectedIndex; tpl.txtName = txtName.Text; if (type == EItemType.Lapis) // Lapis name { Lapi l = (cmbLapi.SelectedItem as ImageComboItem).Tag as Lapi; tpl.txtName = l.Name; tpl.LapisType = l.Type; tpl.LapisLevel = l.Level; } else if (type == EItemType.Lapisa) // Lapisa name { tpl.txtName = ((ELapisa)cmbLapisa.SelectedIndex).ToString(); } tpl.cmbType = cmbType.SelectedIndex; tpl.cmbItemIcon = cmbItemIcon.SelectedIndex; tpl.cmbQuality = cmbQuality.SelectedIndex; tpl.cmbASPD = cmbASPD.SelectedIndex; tpl.numEnchant = numEnchant.Value; tpl.cmbLapisa = cmbLapisa.SelectedIndex; tpl.cmbSockel1 = cmbSockel1.SelectedIndex; tpl.cmbSockel2 = cmbSockel2.SelectedIndex; tpl.cmbSockel3 = cmbSockel3.SelectedIndex; tpl.cmbSockel4 = cmbSockel4.SelectedIndex; tpl.cmbSockel5 = cmbSockel5.SelectedIndex; tpl.cmbSockel6 = cmbSockel6.SelectedIndex; tpl.txtGold = txtGold.GoldAmount; tpl.txtANG1 = txtANG1.Text; tpl.txtANG2 = txtANG2.Text; tpl.txtHaltbarkeit = txtHaltbarkeit.Text; tpl.txtLP = txtLP.Text; tpl.txtMP = txtMP.Text; tpl.txtAP = txtAP.Text; tpl.txtGES = txtGES.Text; tpl.txtGLÜ = txtGLÜ.Text; tpl.txtSTR = txtSTR.Text; tpl.txtWEI = txtWEI.Text; tpl.txtINT = txtINT.Text; tpl.txtABW = txtABW.Text; tpl.txtLPEP4 = txtLPEP4.Text; tpl.txtMPEP4 = txtMPEP4.Text; tpl.txtAPEP4 = txtAPEP4.Text; tpl.txtGESEP4 = txtGESEP4.Text; tpl.txtGLÜEP4 = txtGLÜEP4.Text; tpl.txtSTREP4 = txtSTREP4.Text; tpl.txtWEIEP4 = txtWEIEP4.Text; tpl.txtINTEP4 = txtINTEP4.Text; tpl.txtABWEP4 = txtABWEP4.Text; tpl.txtResistenz = txtResistenz.Text; tpl.txtSeller = txtSeller.Text; return(tpl); }
private string CompileStats() { string chunk = ""; if (cmbType.SelectedIndex > 4) // kein Equip/Lapi/Lapisa/AP { return(chunk = (int)EStatusType.ItemIcon + ":" + (cmbItemIcon.Items[cmbItemIcon.SelectedIndex] as ImageComboItem).Text.Replace(".png", "") + ";"); } if (cmbType.SelectedIndex == 2) // Lapi { Lapi l = (cmbLapi.SelectedItem as ImageComboItem).Tag as Lapi; chunk = (int)l.ToImageIndex() + ":" + l.Level; return(chunk); } if (cmbType.SelectedIndex == 3) // Lapisa { chunk = cmbLapisa.SelectedIndex.ToString(); return(chunk); } if (cmbType.SelectedIndex == 4) // APItem { chunk = (int)EStatusType.ItemIcon + ":" + (cmbItemIcon.Items[cmbItemIcon.SelectedIndex] as ImageComboItem).Text.Replace(".png", "") + ";"; return(chunk); } chunk = (int)EStatusType.Quality + ":" + cmbQuality.SelectedIndex + ";"; chunk += (int)EStatusType.MinAngOrDef + ":" + txtANG1.Text + ";"; if (cmbType.SelectedIndex == 0) // Waffe { chunk += (int)EStatusType.MaxAng + ":" + txtANG2.Text + ";"; chunk += (int)EStatusType.AspdOrResist + ":" + cmbASPD.SelectedIndex + ";"; } else // Rüstung { chunk += (int)EStatusType.AspdOrResist + ":" + txtResistenz.Text + ";"; } chunk += (int)EStatusType.Haltbar + ":" + txtHaltbarkeit.Text + ";"; chunk += (int)EStatusType.MaxLP + ":" + txtLP.Text + ";"; chunk += (int)EStatusType.MaxMP + ":" + txtMP.Text + ";"; chunk += (int)EStatusType.MaxAP + ":" + txtAP.Text + ";"; chunk += (int)EStatusType.STR + ":" + txtSTR.Text + ";"; chunk += (int)EStatusType.ABW + ":" + txtABW.Text + ";"; chunk += (int)EStatusType.WEI + ":" + txtWEI.Text + ";"; chunk += (int)EStatusType.INT + ":" + txtINT.Text + ";"; chunk += (int)EStatusType.GES + ":" + txtGES.Text + ";"; chunk += (int)EStatusType.GLÜ + ":" + txtGLÜ.Text + ";"; chunk += (int)EStatusType.ItemIcon + ":" + (cmbItemIcon.Items[cmbItemIcon.SelectedIndex] as ImageComboItem).Text.Replace(".png", "") + ";"; chunk += (int)EStatusType.MaxLPEP4 + ":" + txtLPEP4.Text + ";"; chunk += (int)EStatusType.MaxMPEP4 + ":" + txtMPEP4.Text + ";"; chunk += (int)EStatusType.MaxAPEP4 + ":" + txtAPEP4.Text + ";"; chunk += (int)EStatusType.STREP4 + ":" + txtSTREP4.Text + ";"; chunk += (int)EStatusType.ABWEP4 + ":" + txtABWEP4.Text + ";"; chunk += (int)EStatusType.WEIEP4 + ":" + txtWEIEP4.Text + ";"; chunk += (int)EStatusType.INTEP4 + ":" + txtINTEP4.Text + ";"; chunk += (int)EStatusType.GESEP4 + ":" + txtGESEP4.Text + ";"; chunk += (int)EStatusType.GLÜEP4 + ":" + txtGLÜEP4.Text + ";"; return(chunk); }
private string CompileLapis() { string chunk = ""; for (int i = 1; i < cmbQuality.Items.Count; i++) { LapiImageComboBox cmb = Controls["cmbSockel" + i] as LapiImageComboBox; ImageComboItem item = (cmb.Items[cmb.SelectedIndex] as ImageComboItem); if (item == null) { chunk += "-1:-1;"; continue; } Lapi lapi = item.Tag as Lapi; if (lapi != null) { chunk += lapi.ToImageIndex() + ":" + lapi.Level + ";"; } else // empty slot = type -1 { chunk += "-1:0;"; } } return(chunk); }
public async Task RunServerExample() { var server = new TcpServer(IPAddress.Loopback, 1234); var serverControl = Lapi.RunServer( server, applicationSpecificPresharedKey, serverId, serverCertificate, () => CurrentOtp, OnClientConnected, null, clientId => null); await Task.Delay(TimeSpan.FromMinutes(5)); serverControl.StopServer(); }
private ToolStripMenuItem TemplateItem_OnAdd(ITemplate Template, ToolStripMenuItem Item) { EItemType type = (EItemType)Template.cmbType; if (type != EItemType.Lapis && type != EItemType.Lapisa) { Item.Image = GetTemplateItemImage(type, Template.cmbItemIcon); } else if (type == EItemType.Lapis) { Lapi l = new Lapi(Template.LapisType, Template.LapisLevel); Item.Image = GetTemplateItemImage(type, l.ToImageIndex() + 1); // 0 = free slot } else if (type == EItemType.Lapisa) { Item.Image = GetTemplateItemImage(type, Template.cmbLapisa); } return(Item); }
private static async Task FirstTest() { var server = new TcpServer(IPAddress.Loopback, Port); var presharedKey = Enumerable.Range(1, 20).Select(x => (byte)x).ToArray(); var serverCert = X509CertificateService.GetOwnCertificate(TestGuid, Password); var clientCert = X509CertificateService.GetOwnCertificate(OtherTestGuid, Password); var otpBuffer = Enumerable.Range(1, 32).Select(x => (byte)x).ToArray(); var otp = new AesCryptographicService(SymmetricKey.FromBuffer(otpBuffer)); var reducedServerCert = new X509Certificate2(serverCert.Export(X509ContentType.Cert)); var reducedClientCert = new X509Certificate2(clientCert.Export(X509ContentType.Cert)); var serverControl = Lapi.RunServer( server, presharedKey, TestGuid, serverCert, () => otp, ClientConnected, (_, __) => { }, x => { if (x.Equals(OtherTestGuid)) { return(clientCert); } return(null); }); serverControl.OnError += error => Console.WriteLine($"{error.ErrorType}: {error.Message}"); var client = new TcpClient(); await client.ConnectAsync(IPAddress.Loopback, Port); var stream = await Lapi.ConnectToServer( client.GetStream(), presharedKey, OtherTestGuid, TestGuid, clientCert, serverCert); Console.WriteLine($"Successful connected: {stream.Successful}"); //Console.WriteLine("Attempting to read from server"); //byte[] buf = new byte[4]; //stream.Result.ReadAsync(buf, 0, 4).Wait(); //Console.WriteLine($"Received: {string.Join(", ", buf)}"); //var registerResult = await Lapi.RegisterWithServer(IPAddress.Loopback, presharedKey, OtherTestGuid, TestGuid, clientCert, serverCert, otp, Port); //Console.WriteLine("Registering was " + (registerResult.Successful ? "" : "not ") + "successful"); //registerResult.Result.Close(); //var guidsResult = await Lapi.DiscoverServersOnLocalNetwork(presharedKey); //Console.WriteLine($"Discovery was " + (guidsResult.Successful ? "" : "not ") + "successful"); //if (guidsResult.Successful) //{ // Console.WriteLine($"Found servers on network: {string.Join(", ", guidsResult.Result)}"); //} Console.ReadLine(); serverControl.StopServer(); }
private void ApplyTemplate(ITemplate tpl) { EItemType type = (EItemType)tpl.cmbType; cmbType.SelectedIndex = tpl.cmbType; cmbItemIcon.SelectedIndex = tpl.cmbItemIcon; cmbQuality.SelectedIndex = tpl.cmbQuality; cmbASPD.SelectedIndex = tpl.cmbASPD; numEnchant.Value = tpl.numEnchant; if (type == EItemType.Lapis) { Lapi tplLapi = new Lapi(tpl.LapisType, tpl.LapisLevel); int i = 0; foreach (Lapi l in LapiComboBox.Lapis) { if (l.Name == tplLapi.Name) { cmbLapi.SelectedIndex = i; break; } i++; } } cmbSockel1.SelectedIndex = tpl.cmbSockel1; cmbSockel2.SelectedIndex = tpl.cmbSockel2; cmbSockel3.SelectedIndex = tpl.cmbSockel3; cmbSockel4.SelectedIndex = tpl.cmbSockel4; cmbSockel5.SelectedIndex = tpl.cmbSockel5; cmbSockel6.SelectedIndex = tpl.cmbSockel6; txtGold.SetGold(tpl.txtGold); if (type != EItemType.Lapis && type != EItemType.Lapisa) { txtName.Text = tpl.txtName; } txtANG1.Text = tpl.txtANG1; txtANG2.Text = tpl.txtANG2; txtHaltbarkeit.Text = tpl.txtHaltbarkeit; txtLP.Text = tpl.txtLP; txtMP.Text = tpl.txtMP; txtAP.Text = tpl.txtAP; txtGES.Text = tpl.txtGES; txtGLÜ.Text = tpl.txtGLÜ; txtSTR.Text = tpl.txtSTR; txtWEI.Text = tpl.txtWEI; txtINT.Text = tpl.txtINT; txtABW.Text = tpl.txtABW; txtLPEP4.Text = tpl.txtLPEP4; txtMPEP4.Text = tpl.txtMPEP4; txtAPEP4.Text = tpl.txtAPEP4; txtGESEP4.Text = tpl.txtGESEP4; txtGLÜEP4.Text = tpl.txtGLÜEP4; txtSTREP4.Text = tpl.txtSTREP4; txtWEIEP4.Text = tpl.txtWEIEP4; txtINTEP4.Text = tpl.txtINTEP4; txtABWEP4.Text = tpl.txtABWEP4; txtResistenz.Text = tpl.txtResistenz; txtSeller.Text = tpl.txtSeller; }