private static IPEndPoint GetLocalEndPointOrDefault() { IPAddress address; try { // get an ip address and use Loopback if none found address = IpUtils.GetLocalIpAddress() ?? IPAddress.Loopback; } catch (Exception) { // on failure, use Loopback address = IPAddress.Loopback; } return(new IPEndPoint(address, 0)); }
public void SetAuthentication(WebSocketServer webSocketServer) { var password = HasToken() ? LoadToken() : CreateToken(); var connectionPayload = new ConnectionPayload(webSocketServer.IsSecure ? "wss" : "ws", IpUtils.GetLocalIpAddress(), webSocketServer.Port, "user", password); QRCodeGenerator qrGenerator = new QRCodeGenerator(); var qrCodeData = qrGenerator.CreateQrCode(JsonConvert.SerializeObject(connectionPayload), QRCodeGenerator.ECCLevel.Q); connectionQRCode = new PngByteQRCode(qrCodeData); webSocketServer.AuthenticationSchemes = WebSocketSharp.Net.AuthenticationSchemes.Basic; webSocketServer.UserCredentialsFinder = (id) => { #if LOCAL return(new WebSocketSharp.Net.NetworkCredential("username", "password")); #else return(id.Name == connectionPayload.AuthenticationUsername ? new WebSocketSharp.Net.NetworkCredential(connectionPayload.AuthenticationUsername, connectionPayload.AuthenticationPassword) : null); #endif }; }