lith 3 年之前
父节点
当前提交
2be399a06d

+ 30 - 1
dotnet/Library/Sers/Sers.CL/WebSocket/Sers.CL.WebSocket/DeliveryServer.cs

@@ -6,9 +6,12 @@ using System;
 using System.Collections.Concurrent;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
+using System.Security.Cryptography.X509Certificates;
 
 
 using Fleck;
 using Fleck;
 
 
+using Newtonsoft.Json;
+
 using Sers.Core.CL.MessageDelivery;
 using Sers.Core.CL.MessageDelivery;
 
 
 using Vit.Core.Module.Log;
 using Vit.Core.Module.Log;
@@ -20,10 +23,30 @@ namespace Sers.CL.WebSocket
         public Sers.Core.Util.StreamSecurity.SecurityManager securityManager;
         public Sers.Core.Util.StreamSecurity.SecurityManager securityManager;
 
 
         /// <summary>
         /// <summary>
-        /// 服务端地址(默认为 "ws://0.0.0.0:4503")
+        /// server address(default: "ws://0.0.0.0:4503")
         /// </summary>
         /// </summary>
         public string host = "ws://0.0.0.0:4503";
         public string host = "ws://0.0.0.0:4503";
 
 
+        /// <summary>
+        /// 
+        /// </summary>
+        public CertificateInfo certificate;
+
+        #region CertificateInfo
+        [JsonObject(MemberSerialization.OptIn)]
+        public class CertificateInfo
+        {
+            /// <summary>
+            /// data/serset-com-iis-0923120142.pfx
+            /// </summary>
+            [JsonProperty]
+            public string filePath { get; set; }
+
+            [JsonProperty]
+            public string password { get; set; }
+
+        }
+        #endregion
 
 
         public Action<IDeliveryConnection> Conn_OnDisconnected { private get; set; }
         public Action<IDeliveryConnection> Conn_OnDisconnected { private get; set; }
         public Action<IDeliveryConnection> Conn_OnConnected { private get; set; }
         public Action<IDeliveryConnection> Conn_OnConnected { private get; set; }
@@ -42,6 +65,12 @@ namespace Sers.CL.WebSocket
 
 
                 listenSocket = new WebSocketServer(host);
                 listenSocket = new WebSocketServer(host);
 
 
+                if (certificate != null)
+                {
+                    listenSocket.Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(certificate.filePath, certificate.password,
+                        X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
+                }
+
                 //出错后进行重启
                 //出错后进行重启
                 listenSocket.RestartAfterListenError = true;
                 listenSocket.RestartAfterListenError = true;
 
 

+ 3 - 1
dotnet/Library/Sers/Sers.CL/WebSocket/Sers.CL.WebSocket/OrganizeServerBuilder.cs

@@ -20,7 +20,9 @@ namespace Sers.CL.WebSocket
             }
             }
             #endregion
             #endregion
 
 
-            delivery.host = config["host"].ConvertToString() ?? delivery.host;
+            delivery.host = config["host"]?.ConvertToString() ?? delivery.host;
+
+            delivery.certificate = config["certificate"]?.Deserialize<DeliveryServer.CertificateInfo>() ?? delivery.certificate;
 
 
             organizeList.Add(new OrganizeServer(delivery, config));
             organizeList.Add(new OrganizeServer(delivery, config));
         }
         }

+ 6 - 0
dotnet/ServiceCenter/App.ServiceCenter/appsettings.json

@@ -132,6 +132,12 @@
           /* the class of builder in assemblyFile  */
           /* the class of builder in assemblyFile  */
           //"className": "Sers.CL.WebSocket.OrganizeServerBuilder",
           //"className": "Sers.CL.WebSocket.OrganizeServerBuilder",
 
 
+          /* SSL证书(若使用wss则必须指定证书) */
+          "//certificate": {
+            "filePath": "data/serset-com-iis-0923120142.pfx",
+            "password": ""
+          },
+
           /* (x.2) config */
           /* (x.2) config */
           /* 服务端地址(默认为 "ws://0.0.0.0:4503") */
           /* 服务端地址(默认为 "ws://0.0.0.0:4503") */
           "host": "ws://0.0.0.0:4503"
           "host": "ws://0.0.0.0:4503"