diff --git a/Asterisk.2013/Asterisk.NET/Common.cs b/Asterisk.2013/Asterisk.NET/Common.cs
index e88a0ef..cfc8e43 100644
--- a/Asterisk.2013/Asterisk.NET/Common.cs
+++ b/Asterisk.2013/Asterisk.NET/Common.cs
@@ -18,7 +18,7 @@ namespace AsterNET
/// Line separator
public const string LINE_SEPARATOR = "\r\n";
- public static Regex ASTERISK_VERSION = new Regex( "^Asterisk\\s+\\D*([0-9]+.[0-9]+.[0-9]+|[1-9][0-9]-r[0-9]+|[0-9]+.[0-9]+-cert[0-9]).*$",
+ public static Regex ASTERISK_VERSION = new Regex( "^Asterisk\\s+\\D*([0-9]+\\.[0-9]+\\.[0-9]+|[1-9][0-9]-r[0-9]+|[0-9]+\\.[0-9]+-cert[0-9]).*$",
RegexOptions.Compiled | RegexOptions.IgnoreCase );
public static Regex SHOW_VERSION_FILES_PATTERN = new Regex("^([\\S]+)\\s+Revision: ([0-9\\.]+)");
diff --git a/Asterisk.2013/Asterisk.NET/Manager/AsteriskVersion.cs b/Asterisk.2013/Asterisk.NET/Manager/AsteriskVersion.cs
index e204a77..a3e00b4 100644
--- a/Asterisk.2013/Asterisk.NET/Manager/AsteriskVersion.cs
+++ b/Asterisk.2013/Asterisk.NET/Manager/AsteriskVersion.cs
@@ -5,6 +5,7 @@ namespace AsterNET.Manager
///
public enum AsteriskVersion
{
+ Unknown = 0,
ASTERISK_1_0 = 10,
ASTERISK_1_2 = 12,
ASTERISK_1_4 = 14,
@@ -13,6 +14,11 @@ namespace AsterNET.Manager
ASTERISK_10 = 100,
ASTERISK_11 = 110,
ASTERISK_12 = 120,
- ASTERISK_13 = 130
+ ASTERISK_13 = 130,
+ ASTERISK_14 = 140,
+ ASTERISK_15 = 150,
+ ASTERISK_16 = 160,
+ ASTERISK_17 = 170,
+ ASTERISK_Newer = 999
}
-}
\ No newline at end of file
+}
diff --git a/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs b/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs
index c3253f8..8c42d95 100644
--- a/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs
+++ b/Asterisk.2013/Asterisk.NET/Manager/ManagerConnection.cs
@@ -71,7 +71,7 @@ namespace AsterNET.Manager
/// Default Slow Reconnect interval in milliseconds.
private int reconnectIntervalMax = 10000;
- public char[] VAR_DELIMITER = { '|' };
+ public char[] VAR_DELIMITER = { '|' };
#endregion
@@ -1012,102 +1012,130 @@ namespace AsterNET.Manager
#if LOGGER
logger.Info("Determined Asterisk version: " + asteriskVersion);
#endif
- enableEvents = true;
- ConnectEvent ce = new ConnectEvent(this);
- ce.ProtocolIdentifier = this.protocolIdentifier;
- DispatchEvent(ce);
- }
- else if (response is ManagerError)
- throw new ManagerException("Unable login to Asterisk - " + response.Message);
- else
- throw new ManagerException("Unknown response during login to Asterisk - " + response.GetType().Name + " with message " + response.Message);
+ enableEvents = true;
+ ConnectEvent ce = new ConnectEvent(this);
+ ce.ProtocolIdentifier = this.protocolIdentifier;
+ DispatchEvent(ce);
+ }
+ else if (response is ManagerError)
+ throw new ManagerException("Unable login to Asterisk - " + response.Message);
+ else
+ throw new ManagerException("Unknown response during login to Asterisk - " + response.GetType().Name + " with message " + response.Message);
- }
- #endregion
+ }
+ #endregion
- #region determineVersion()
- protected internal AsteriskVersion determineVersion()
- {
- Response.ManagerResponse response;
- response = SendAction(new Action.CommandAction("core show version"), defaultResponseTimeout * 2);
- if (response is Response.CommandResponse)
- {
- foreach (string line in ((Response.CommandResponse)response).Result)
- {
- foreach (Match m in Common.ASTERISK_VERSION.Matches(line))
- {
- if (m.Groups.Count >= 2)
- {
- version = m.Groups[1].Value;
- if (version.StartsWith("1.4."))
- {
- VAR_DELIMITER = new char[] { '|' };
- return AsteriskVersion.ASTERISK_1_4;
- }
- else if (version.StartsWith("1.6."))
- {
- VAR_DELIMITER = new char[] { '|' };
- return Manager.AsteriskVersion.ASTERISK_1_6;
- }
- else if (version.StartsWith("1.8."))
- {
- VAR_DELIMITER = new char[] { '|' };
- return Manager.AsteriskVersion.ASTERISK_1_8;
- }
- else if (version.StartsWith("10."))
- {
- VAR_DELIMITER = new char[] { '|' };
- return Manager.AsteriskVersion.ASTERISK_10;
- }
- else if (version.StartsWith("11."))
- {
- VAR_DELIMITER = new char[] { ',' };
- return Manager.AsteriskVersion.ASTERISK_11;
- }
- else if (version.StartsWith("12."))
- {
- VAR_DELIMITER = new char[] { ',' };
- return Manager.AsteriskVersion.ASTERISK_12;
- }
- else if (version.StartsWith("13."))
- {
- VAR_DELIMITER = new char[] { ',' };
- return Manager.AsteriskVersion.ASTERISK_13;
- }
- else
- throw new ManagerException("Unknown Asterisk version " + version);
- }
- }
- }
- }
+ #region determineVersion()
+ protected internal AsteriskVersion determineVersion()
+ {
+ Response.ManagerResponse response;
+ response = SendAction(new Action.CommandAction("core show version"), defaultResponseTimeout * 2);
+ if (response is Response.CommandResponse)
+ {
+ foreach (string line in ((Response.CommandResponse)response).Result)
+ {
+ foreach (Match m in Common.ASTERISK_VERSION.Matches(line))
+ {
+ if (m.Groups.Count >= 2)
+ {
+ version = m.Groups[1].Value;
+ if (version.StartsWith("1.4."))
+ {
+ VAR_DELIMITER = new char[] { '|' };
+ return AsteriskVersion.ASTERISK_1_4;
+ }
+ else if (version.StartsWith("1.6."))
+ {
+ VAR_DELIMITER = new char[] { '|' };
+ return Manager.AsteriskVersion.ASTERISK_1_6;
+ }
+ else if (version.StartsWith("1.8."))
+ {
+ VAR_DELIMITER = new char[] { '|' };
+ return Manager.AsteriskVersion.ASTERISK_1_8;
+ }
+ else if (version.StartsWith("10."))
+ {
+ VAR_DELIMITER = new char[] { '|' };
+ return Manager.AsteriskVersion.ASTERISK_10;
+ }
+ else if (version.StartsWith("11."))
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_11;
+ }
+ else if (version.StartsWith("12."))
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_12;
+ }
+ else if (version.StartsWith("13."))
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_13;
+ }
+ else if (version.StartsWith("14."))
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_14;
+ }
+ else if (version.StartsWith("15."))
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_15;
+ }
+ else if (version.StartsWith("16."))
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_16;
+ }
+ else if (version.StartsWith("17."))
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_17;
+ }
+ else if (version.IndexOf('.') >= 2)
+ {
+ VAR_DELIMITER = new char[] { ',' };
+ return Manager.AsteriskVersion.ASTERISK_Newer;
+ }
+ else
+ throw new ManagerException("Unknown Asterisk version " + version);
+ }
+ }
+ }
+ }
- Response.ManagerResponse showVersionFilesResponse = SendAction(new Action.CommandAction("show version files"), defaultResponseTimeout * 2);
- if (showVersionFilesResponse is Response.CommandResponse)
- {
- IList showVersionFilesResult = ((Response.CommandResponse)showVersionFilesResponse).Result;
- if (showVersionFilesResult != null && showVersionFilesResult.Count > 0)
- {
- string line1;
- line1 = (string)showVersionFilesResult[0];
- if (line1 != null && line1.StartsWith("File"))
- return AsteriskVersion.ASTERISK_1_2;
- }
- }
- return AsteriskVersion.ASTERISK_1_0;
- }
+ Response.ManagerResponse showVersionFilesResponse = SendAction(new Action.CommandAction("show version files"), defaultResponseTimeout * 2);
+ if (showVersionFilesResponse is Response.CommandResponse)
+ {
+ IList showVersionFilesResult = ((Response.CommandResponse)showVersionFilesResponse).Result;
+ if (showVersionFilesResult != null && showVersionFilesResult.Count > 0)
+ {
+ string line1;
+ line1 = (string)showVersionFilesResult[0];
+ if (line1 != null && line1.StartsWith("File"))
+ {
+ VAR_DELIMITER = new char[] { '|' };
+ return AsteriskVersion.ASTERISK_1_2;
+ }
+ }
+ }
+ return AsteriskVersion.ASTERISK_1_0;
+ }
- #endregion
+ #endregion
- #region connect()
- protected internal bool connect()
- {
- bool result = false;
- bool startReader = false;
+ #region connect()
+ protected internal bool connect()
+ {
+ bool result = false;
+ bool startReader = false;
- lock (lockSocket)
- {
- if (mrSocket == null)
- {
+ lock (lockSocket)
+ {
+ if (mrSocket == null)
+ {
#if LOGGER
logger.Info("Connecting to {0}:{1}", hostname, port);
#endif
diff --git a/Asterisk.2013/Asterisk.NET/Properties/AssemblyInfo.cs b/Asterisk.2013/Asterisk.NET/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..6051534
--- /dev/null
+++ b/Asterisk.2013/Asterisk.NET/Properties/AssemblyInfo.cs
@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("AsterNET")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("AsterNET")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: Guid("abe98502-ea83-4b04-98c3-ffe3eabe06b0")]
+[assembly: AssemblyVersion("1.3.0.0")]
+[assembly: AssemblyFileVersion("1.3.0.0")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]