Browse Source

1.可 listen 多個 wss port
2.新增可以關閉 ws port 功能

Jessica Tseng 1 year ago
parent
commit
36903b02bb

+ 4 - 3
EVCB_OCPP.WSServer/App.config

@@ -13,9 +13,10 @@
      <add name="WebDBContext" connectionString="data source=172.1.2.187;initial catalog=StandardOCPP_Web;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
    </connectionStrings>
   <appSettings>   
-    <add key="LocalAuthAPI" value="" />
-    <add key="WSPort" value="2012" />
-    <add key="WSSPort" value="2016" />
+    <add key="LocalAuthAPI" value="" />    
+    <!--若不想開放WSPort,請留空-->
+    <add key="WSPort" value="" />
+    <add key="WSSPort" value="2013,2014" />
     <add key="OCPP20_WSUrl" value="ws://ocpp.phihong.com.tw:5004" />
     <add key="OCPP20_WSSUrl" value="ws://ocpp.phihong.com.tw:5004" />
     <add key="MaintainMode" value="0" />

+ 40 - 11
EVCB_OCPP.WSServer/GlobalConfig.cs

@@ -12,12 +12,14 @@ namespace EVCB_OCPP.WSServer
             "WSPort",
             "WSSPort",
             "OCPP20_WSUrl",
-            "OCPP20_WSSUrl"
+            "OCPP20_WSSUrl",
+            "SecurityProfileLevel",
+            "SecurityPassword"
         };
 
         public static List<string> DenyModelNames = new List<string>();
 
-        public static  string UTC_DATETIMEFORMAT = "yyyy-MM-dd'T'HH':'mm':'ss'Z'";
+        public static string UTC_DATETIMEFORMAT = "yyyy-MM-dd'T'HH':'mm':'ss'Z'";
 
         public static string TCC_API_URL = string.Empty;
 
@@ -27,6 +29,10 @@ namespace EVCB_OCPP.WSServer
 
         public static string OCPP20_WSSUrl = string.Empty;
 
+        public static int SecurityProfileLevel = 0;
+
+        public static string SecurityPassword = string.Empty;
+
         public static JsonSerializerSettings JSONSERIALIZER_FORMAT = new JsonSerializerSettings()
         {
             NullValueHandling = NullValueHandling.Ignore,
@@ -50,7 +56,9 @@ namespace EVCB_OCPP.WSServer
         /// <summary>
         ///WSS Port
         /// </summary>
-        private static int WSS_Port = 2013;
+        private static List<int> WSS_Ports = null;
+
+     
 
         /// <summary>
         /// Load setting from app.config 
@@ -70,15 +78,20 @@ namespace EVCB_OCPP.WSServer
                         case "WSPort":// convert to int type                       
                             {
                                 var value = ConfigurationManager.AppSettings[key];
-
-                                WS_Port = Convert.ToInt32(value);
+                                WS_Port = 0;
+                                Int32.TryParse(value, out WS_Port);
+                              
                             }
                             break;
                         case "WSSPort":
                             {
-                                var value = ConfigurationManager.AppSettings[key];
-
-                                WSS_Port = Convert.ToInt32(value);
+                                var ports = ConfigurationManager.AppSettings[key].Split(',');
+                                WSS_Ports = new List<int>();
+                                foreach(var port in ports)
+                                {
+                                    WSS_Ports.Add(Convert.ToInt32(port));
+                                }
+                              
                             }
                             break;
                         case "OCPP20_WSUrl":// convert to int type                       
@@ -95,6 +108,20 @@ namespace EVCB_OCPP.WSServer
                                 OCPP20_WSSUrl = value;
                             }
                             break;
+                        case "SecurityProfileLevel":
+                            {
+                                var value = ConfigurationManager.AppSettings[key];
+
+                                SecurityProfileLevel = Convert.ToInt32(value);
+                            }
+                            break;
+                        case "SecurityPassword":
+                            {
+                                var value = ConfigurationManager.AppSettings[key];
+
+                                SecurityPassword = value;
+                            }
+                            break;
                         default://convert to string type                             
                             break;
 
@@ -120,18 +147,20 @@ namespace EVCB_OCPP.WSServer
         }
 
 
-        public static int GetWSS_Port()
+        public static List<int> GetWSS_Ports()
         {
-            return WSS_Port;
+            return WSS_Ports;
         }
 
+       
+
         public static int GetHEARTBEAT_INTERVAL()
         {
             return DEFAULT_HEARTBEAT_INTERVAL;
         }
 
         public static readonly int DB_DefaultConnectionTimeout = 60;
-   
+
         /// <summary>
         /// 預設 Null的 DateTime 
         /// </summary>

+ 1 - 1
EVCB_OCPP.WSServer/Properties/AssemblyInfo.cs

@@ -35,4 +35,4 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyVersion("1.2.1.0")]
 [assembly: AssemblyFileVersion("1.2.1.0")]
 
-[assembly: AssemblyInformationalVersion("9a46efb")]
+[assembly: AssemblyInformationalVersion("2418318")]

+ 20 - 11
EVCB_OCPP.WSServer/ProtalServer.cs

@@ -140,7 +140,7 @@ namespace EVCB_OCPP.WSServer
             smartChargingTask.Start();
 
 
-            Task denyModelCheckTask = new Task(()=>DenyModelCheckTrigger(false), _ct);
+            Task denyModelCheckTask = new Task(() => DenyModelCheckTrigger(false), _ct);
             denyModelCheckTask.Start();
 
             while (true)
@@ -286,8 +286,17 @@ namespace EVCB_OCPP.WSServer
 
             List<IListenerConfig> llistener = new List<IListenerConfig>();
 
-            llistener.Add(new ListenerConfig { Ip = System.Net.IPAddress.Any.ToString(), Port = Convert.ToInt32(GlobalConfig.GetWS_Port()), Backlog = 100, Security = "None" });
-            llistener.Add(new ListenerConfig { Ip = System.Net.IPAddress.Any.ToString(), Port = Convert.ToInt32(GlobalConfig.GetWSS_Port()), Backlog = 100, Security = SslProtocols.Tls12.ToString() });
+            if (GlobalConfig.GetWS_Port() != 0)
+            {
+                llistener.Add(new ListenerConfig { Ip = System.Net.IPAddress.Any.ToString(), Port = GlobalConfig.GetWS_Port(), Backlog = 100, Security = "None" });
+            }
+
+            foreach (var securityport in GlobalConfig.GetWSS_Ports())
+            {
+                llistener.Add(new ListenerConfig { Ip = System.Net.IPAddress.Any.ToString(), Port = securityport, Backlog = 100, Security = SslProtocols.Tls12.ToString() });
+            }
+
+
 
             var config = ConfigurationManager.GetSection("superSocket") as IConfigurationSource;
             ICertificateConfig Certificate = config.Servers.ElementAt(0).Certificate;
@@ -997,7 +1006,7 @@ namespace EVCB_OCPP.WSServer
         }
 
         async private void DenyModelCheckTrigger(bool warmup)
-        {           
+        {
             for (; ; )
             {
                 if (_ct.IsCancellationRequested)
@@ -1016,7 +1025,7 @@ namespace EVCB_OCPP.WSServer
                             string strSql = "SELECT [Value] FROM [dbo].[KernelConfig] " +
                              "where SystemKey = 'DenyModelNames'; ";
                             var result = await conn.QueryAsync<string>(strSql);
-                           
+
                             GlobalConfig.DenyModelNames = result.FirstOrDefault().Split(',').ToList();
                             logger.Debug(string.Format("Current DenyList:[{0}]", string.Join(",", GlobalConfig.DenyModelNames)));
                         }
@@ -1039,13 +1048,13 @@ namespace EVCB_OCPP.WSServer
                                     RemoveClient(session);
                                 }
                             }
-                            
 
-                           
+
+
                         }
 
                     }
-                   
+
 
                     await Task.Delay(500);
 
@@ -1618,9 +1627,9 @@ namespace EVCB_OCPP.WSServer
             }
             catch (Exception ex)
             {
-                logger.Error("SetDefaultFee",ex.ToString());
+                logger.Error("SetDefaultFee", ex.ToString());
             }
-           
+
             return displayPriceText;
         }
 
@@ -1855,7 +1864,7 @@ namespace EVCB_OCPP.WSServer
                       new  SqlParameter("EVSEEndPoint",25){ Value=clientData.RemoteEndPoint==null?"123":clientData.RemoteEndPoint.ToString()},
                       new  SqlParameter("Session",36){ Value=clientData.SessionID==null?"123":clientData.SessionID}
                };
-                  
+
                     db.Database.ExecuteSqlCommand(sp, parameter);
                 }
             }

BIN
SuperWebSocket/bin/Debug/SuperWebSocket.dll


BIN
SuperWebSocket/bin/Debug/SuperWebSocket.pdb