예제 #1
0
        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));
        }
예제 #2
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
            };
        }