public override int GetHashCode() { int hash = 1; if (Mark != 0) { hash ^= Mark.GetHashCode(); } if (Tfo != 0) { hash ^= Tfo.GetHashCode(); } if (Tproxy != 0) { hash ^= Tproxy.GetHashCode(); } if (ReceiveOriginalDestAddress != false) { hash ^= ReceiveOriginalDestAddress.GetHashCode(); } if (BindAddress.Length != 0) { hash ^= BindAddress.GetHashCode(); } if (BindPort != 0) { hash ^= BindPort.GetHashCode(); } if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
public override int GetHashCode() { int hash = 1; if (Mark != 0) { hash ^= Mark.GetHashCode(); } if (Tfo != global::V2Ray.Core.Transport.Internet.SocketConfig.Types.TCPFastOpenState.AsIs) { hash ^= Tfo.GetHashCode(); } if (Tproxy != global::V2Ray.Core.Transport.Internet.SocketConfig.Types.TProxyMode.Off) { hash ^= Tproxy.GetHashCode(); } if (ReceiveOriginalDestAddress != false) { hash ^= ReceiveOriginalDestAddress.GetHashCode(); } if (BindAddress.Length != 0) { hash ^= BindAddress.GetHashCode(); } if (BindPort != 0) { hash ^= BindPort.GetHashCode(); } if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
public void Serialize(XmlWriter writer) { writer.WriteStartElement("xsp-options"); if (BindAddress != null) { writer.WriteElementString("bindaddress", BindAddress.ToString()); } if (Port != null) { writer.WriteElementString("port", ((int)Port).ToString()); } if (BindRange != null) { writer.WriteStartElement("bindrange"); writer.WriteElementString("from", BindRange[0].ToString()); writer.WriteElementString("to", BindRange[1].ToString()); writer.WriteEndElement(); } if (CustomErrorsOff != null) { writer.WriteElementString("customerrorsoff", ((bool)CustomErrorsOff).ToString()); } if (LocalDirectory != null) { writer.WriteElementString("localdir", LocalDirectory); } writer.WriteEndElement(); }
/// <summary>Returns a hash value for this object.</summary> public override int GetHashCode() { unchecked { var hash = (BindAddress == null ? 0 : BindAddress.GetHashCode() * 63689) + Port; if (Secure) { hash *= 3; } return(hash); } }
public override byte[] GetBytes() { int nLength = 6; if (AddressType == AddressType.IPV4) { nLength += 4; } else if (AddressType == AddressType.IPV6) { nLength += 16; } else if (AddressType == AddressType.DomainName) { nLength += (1 + BindDomain.Length); } m_bBytes = new byte[nLength]; m_bBytes[0] = Version; m_bBytes[1] = (byte)SOCKSReply; m_bBytes[2] = (byte)Reserved; m_bBytes[3] = (byte)AddressType; if (AddressType == AddressType.IPV4) { byte[] bAddr = BindAddress.GetAddressBytes(); Array.Copy(bAddr, 0, m_bBytes, 4, bAddr.Length); m_bBytes[4 + bAddr.Length] = (byte)((BindPort & 0xFF00) >> 8); m_bBytes[4 + bAddr.Length + 1] = (byte)((BindPort & 0xFF) >> 0); } else if (AddressType == AddressType.IPV6) { byte[] bAddr = BindAddress.GetAddressBytes(); Array.Copy(bAddr, 0, m_bBytes, 4, bAddr.Length); m_bBytes[4 + bAddr.Length] = (byte)((BindPort & 0xFF00) >> 8); m_bBytes[4 + bAddr.Length + 1] = (byte)((BindPort & 0xFF) >> 0); } else if (AddressType == AddressType.DomainName) { byte[] bAddr = System.Text.UTF8Encoding.UTF8.GetBytes(BindDomain); m_bBytes[4] = 0; Array.Copy(bAddr, 0, m_bBytes, 4 + 1, bAddr.Length); m_bBytes[4 + 1 + bAddr.Length] = (byte)((BindPort & 0xFF00) >> 8); m_bBytes[4 + 1 + bAddr.Length + 1] = (byte)((BindPort & 0xFF) >> 0); } return(m_bBytes); }
/// <summary> /// UDP HolePunchingでUDP接続する /// </summary> /// <param name="PortNumber"></param> /// <returns></returns> internal (Socket s, IPEndPoint p) UdpConnect(int PortNumber) { var WaitingServerAddress = IPAddress.Any; IPEndPoint groupEP = new IPEndPoint(WaitingServerAddress, PortNumber); //クライアントが設定してくるIPあどれっす string TargetAddress; //クライアントからのメッセージ(UDPホールパンチング)を待つ //groupEPにNATが変換したアドレス+ポート番号は入ってくる using (var udpClient = new UdpClient(PortNumber)) { //Udp Hole Puchingをするために何かしらのデータを受信する(ここではクライアントが指定したサーバのアドレス) TargetAddress = Encoding.UTF8.GetString(udpClient.Receive(ref groupEP)); } //NATで変換されたIPアドレスおよびポート番号 var ip = groupEP.Address.ToString(); var port = groupEP.Port; var PunchingSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //ソースアドレスを設定する(NATが変換できるように、クライアントが指定した宛先を設定) IPAddress BindAddress; try { BindAddress = IPAddress.Parse(TargetAddress); Logger.LogInformation($"BindAddress : {BindAddress.ToString()}"); PunchingSocket.Bind(new IPEndPoint(BindAddress, PortNumber)); } catch { try { BindAddress = NetworkInterface.IPAddresses[0]; Logger.LogInformation($"BindAddress : {BindAddress.ToString()}"); PunchingSocket.Bind(new IPEndPoint(BindAddress, PortNumber)); } catch (Exception ex) { throw ex; } } var PunchingPoint = new IPEndPoint(IPAddress.Parse(ip), port); return(PunchingSocket, PunchingPoint); }
private Boolean TryBind() { ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { ServerSocket.Bind(LocalEP); Logger.Info("Server bound to " + BindAddress.ToString() + ":" + BindPort); return(true); } catch (Exception e) { Logger.Fatal(e); } return(false); }
public void SaveToRegistry() { using (var key = Registry.CurrentUser.CreateSubKey(RegKeyBase)) { key.SetValue("SuppressedSymbols", SuppressedSymbols.ToArray()); key.SetValue("EnableSuppression", EnableSuppression.ToString()); key.SetValue("BindAddress", BindAddress.ToString()); key.SetValue("BindPort", BindPort.ToString()); key.SetValue("TraceDirectory", TraceDirectory.ToString()); var vals = new List <string>(); foreach (var rm in ModulePathRemappings) { vals.Add(String.Format("{0}|{1}|{2}", rm.Platform, rm.Path, rm.ReplacementPath)); } key.SetValue("ModulePathRemappings", vals.ToArray()); key.SetValue("SymbolPaths", SymbolPaths.ToArray()); } }
public void Start() { Stop(); http_server = new HttpFileServer(HTTPPort, ServerDirectory); http_server.Start(); tftp_server = new TFTPServer(BindAddress, TFTPPort, ServerDirectory); var net = new IPSegment(BindAddress.ToString(), NetMask.ToString()); dhcp_server = new DHCPServer(BindAddress, DHCPPort); dhcp_server.Loader = loader; dhcp_server.HTTPBootFile = HTTPBootFile; dhcp_server.SubnetMask = IPAddress.Parse("255.255.255.0"); dhcp_server.PoolStart = net.Hosts().First().ToIpAddress(); dhcp_server.PoolEnd = net.Hosts().Last().ToIpAddress(); dhcp_server.Start(); }
private void MnuSetBasicAddress_Click(object sender, System.EventArgs e) { if (olvAddresses.SelectedObject == null) { return; } GoogleAddress basicAddress = olvAddresses.SelectedObject as GoogleAddress; var allAddresses = olvAddresses.CollectCheckedObjects <Address>(ObjectListViewHelper.ObjectListViewCollector.All); Bind sourceBind = this.BindAlternative ?? this.Bind; BindAddress newBindAddress = BindAddress.Create(allAddresses, basicAddress); Bind newBind = new Bind { Address = newBindAddress, Addresses = allAddresses, Description = sourceBind.Description, OriginalAddress = sourceBind.OriginalAddress }; this.BindAlternative = newBind; UpdateBindInfo(newBind); }
public void Run() { if (!TryBind()) { Logger.Fatal("Unable to bind to " + BindAddress.ToString() + ":" + BindPort); } ServerSocket.Listen(0); Running = true; WorldManager.Init(); if (WorldManager.Worlds.Count == 0) { WorldManager.AddWorld(new World.World(WorldManager, "awesome_world", true)); } TickTimer = new Timer(new TimerCallback(Tick), null, 0, 50); Socket clientSocket; Client client; Thread clientThread; while (Running) { clientSocket = ServerSocket.Accept(); client = new Client(this, clientSocket); Clients.Add(clientSocket, client); clientThread = new Thread(client.Run); ClientThreads.Add(client, clientThread); clientThread.Start(); Logger.Info("New Connection: " + clientSocket.RemoteEndPoint); TotalEntityCount++; } Shutdown(); }
public void StartProcess(ProgressDialog dialog, DoWorkEventArgs e) { this.ProgressDialog = dialog; List <Bind> binds = new List <Bind>(); ProgressDialog.ReportProgress(-1, null, "Импорт данных..", null); InitializeExcelApplication(); xlWorkBook = OpenWorkbook(this.excelFile); try { Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.Item[1]; Excel.Range workRange = xlWorkSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell); int lastRow = workRange.Row; const int firstRow = 2; int bindsCount = lastRow - firstRow + 1; int done = 0; this.ProgressDialog.Maximum = bindsCount; for (int i = firstRow; i <= lastRow; i++) { Bind bind = new Bind(); bind.OriginalAddress = xlWorkSheet.Range["A" + i].Value?.ToString(); bind.Description = xlWorkSheet.Range["K" + i].Value?.ToString(); string country, region, city, district, street, streetNumber, zip, placeId; country = GetRangeString(xlWorkSheet.Range["D" + i]); region = GetRangeString(xlWorkSheet.Range["E" + i]); city = GetRangeString(xlWorkSheet.Range["F" + i]); district = GetRangeString(xlWorkSheet.Range["G" + i]); street = GetRangeString(xlWorkSheet.Range["H" + i]); streetNumber = GetRangeString(xlWorkSheet.Range["I" + i]); zip = GetRangeString(xlWorkSheet.Range["J" + i]); placeId = GetRangeString(xlWorkSheet.Range["M" + i]); string formatted = $"{country}, {city}, {street}, {streetNumber}".TrimEnd(',', ' '); string latlon = xlWorkSheet.Range["B" + i].Value.ToString() + "," + xlWorkSheet.Range["C" + i].Value.ToString(); if (Location.TryParse(latlon, out Location location)) { BindAddress address = new BindAddress(formatted, location, "Google") { Country = country, Region = region, City = city, District = district, Street = street, StreetNumber = streetNumber, Zip = zip, PlaceId = placeId }; bind.Address = address; binds.Add(bind); done++; ProgressDialog.ReportProgress(done, null, $"Обработано строк: {done} / {bindsCount}", null); } else { throw new System.Exception("Ошибка чтения координат в строке " + i.ToString()); } } e.Result = binds; } finally { xlWorkBook.Close(); ExitExcelApplication(); } }