Change variable delimiter to be variable per host
Change variable delimiter to be a command on asterisk >= 11
This commit is contained in:
parent
2010cc85e0
commit
58ab6be525
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
@ -26,7 +27,29 @@ namespace AsterNET
|
||||||
public static char INTERNAL_ACTION_ID_DELIMITER = '#';
|
public static char INTERNAL_ACTION_ID_DELIMITER = '#';
|
||||||
|
|
||||||
/// <summary> Variables delimiter </summary>
|
/// <summary> Variables delimiter </summary>
|
||||||
public static char[] VAR_DELIMITER = {'|'};
|
public static Dictionary<string, char[]> VAR_DELIMITERS = new Dictionary<string, char[]>();
|
||||||
|
|
||||||
|
/// <summary> Variables delimiter getter </summary>
|
||||||
|
public static char[] GET_VAR_DELIMITER(string hostname)
|
||||||
|
{
|
||||||
|
if (!VAR_DELIMITERS.ContainsKey(hostname))
|
||||||
|
{
|
||||||
|
VAR_DELIMITERS.Add(hostname, new char[] { '|' });
|
||||||
|
}
|
||||||
|
|
||||||
|
return VAR_DELIMITERS[hostname];
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary> Variables delimiter setter </summary>
|
||||||
|
public static char[] SET_VAR_DELIMITER(string hostname, char[] delimiter)
|
||||||
|
{
|
||||||
|
if (!VAR_DELIMITERS.ContainsKey(hostname))
|
||||||
|
{
|
||||||
|
VAR_DELIMITERS.Add(hostname, new char[] { '|' });
|
||||||
|
}
|
||||||
|
|
||||||
|
return VAR_DELIMITERS[hostname] = delimiter;
|
||||||
|
}
|
||||||
|
|
||||||
public static IFormatProvider CultureInfoEn = new CultureInfo("en-US", false);
|
public static IFormatProvider CultureInfoEn = new CultureInfo("en-US", false);
|
||||||
|
|
||||||
|
|
|
@ -160,8 +160,8 @@ namespace AsterNET.Manager.Action
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Variable
|
public string Variable
|
||||||
{
|
{
|
||||||
get { return Helper.JoinVariables(variables, Common.VAR_DELIMITER, "="); }
|
get { return Helper.JoinVariables(variables, Common.GET_VAR_DELIMITER(this.Server), "="); }
|
||||||
set { variables = Helper.ParseVariables(variables, value, Common.VAR_DELIMITER); }
|
set { variables = Helper.ParseVariables(variables, value, Common.GET_VAR_DELIMITER(this.Server)); }
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -20,8 +20,8 @@ namespace AsterNET.Manager.Event
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Variable
|
public string Variable
|
||||||
{
|
{
|
||||||
get { return Helper.JoinVariables(variables, Common.VAR_DELIMITER, "="); }
|
get { return Helper.JoinVariables(variables, Common.GET_VAR_DELIMITER(this.Server), "="); }
|
||||||
set { variables = Helper.ParseVariables(variables, value, Common.VAR_DELIMITER); }
|
set { variables = Helper.ParseVariables(variables, value, Common.GET_VAR_DELIMITER(this.Server)); }
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -1506,22 +1506,43 @@ namespace AsterNET.Manager
|
||||||
if (m.Groups.Count >= 2)
|
if (m.Groups.Count >= 2)
|
||||||
{
|
{
|
||||||
version = m.Groups[1].Value;
|
version = m.Groups[1].Value;
|
||||||
if (version.StartsWith("1.4."))
|
if (version.StartsWith("1.4."))
|
||||||
return AsteriskVersion.ASTERISK_1_4;
|
{
|
||||||
else if (version.StartsWith("1.6."))
|
Common.SET_VAR_DELIMITER(this.hostname, new char[] { '|' });
|
||||||
return Manager.AsteriskVersion.ASTERISK_1_6;
|
return AsteriskVersion.ASTERISK_1_4;
|
||||||
else if (version.StartsWith("1.8."))
|
}
|
||||||
return Manager.AsteriskVersion.ASTERISK_1_8;
|
else if (version.StartsWith("1.6."))
|
||||||
else if (version.StartsWith("10."))
|
{
|
||||||
return Manager.AsteriskVersion.ASTERISK_10;
|
Common.SET_VAR_DELIMITER(this.hostname, new char[] { '|' });
|
||||||
else if (version.StartsWith("11."))
|
return Manager.AsteriskVersion.ASTERISK_1_6;
|
||||||
return Manager.AsteriskVersion.ASTERISK_11;
|
}
|
||||||
else if (version.StartsWith("12."))
|
else if (version.StartsWith("1.8."))
|
||||||
return Manager.AsteriskVersion.ASTERISK_12;
|
{
|
||||||
|
Common.SET_VAR_DELIMITER(this.hostname, new char[] { '|' });
|
||||||
|
return Manager.AsteriskVersion.ASTERISK_1_8;
|
||||||
|
}
|
||||||
|
else if (version.StartsWith("10."))
|
||||||
|
{
|
||||||
|
Common.SET_VAR_DELIMITER(this.hostname, new char[] { '|' });
|
||||||
|
return Manager.AsteriskVersion.ASTERISK_10;
|
||||||
|
}
|
||||||
|
else if (version.StartsWith("11."))
|
||||||
|
{
|
||||||
|
Common.SET_VAR_DELIMITER(this.hostname, new char[] { ',' });
|
||||||
|
return Manager.AsteriskVersion.ASTERISK_11;
|
||||||
|
}
|
||||||
|
else if (version.StartsWith("12."))
|
||||||
|
{
|
||||||
|
Common.SET_VAR_DELIMITER(this.hostname, new char[] { ',' });
|
||||||
|
return Manager.AsteriskVersion.ASTERISK_12;
|
||||||
|
}
|
||||||
else if (version.StartsWith("13."))
|
else if (version.StartsWith("13."))
|
||||||
|
{
|
||||||
|
Common.SET_VAR_DELIMITER(this.hostname, new char[] { ',' });
|
||||||
return Manager.AsteriskVersion.ASTERISK_13;
|
return Manager.AsteriskVersion.ASTERISK_13;
|
||||||
else
|
}
|
||||||
throw new ManagerException("Unknown Asterisk version " + version);
|
else
|
||||||
|
throw new ManagerException("Unknown Asterisk version " + version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,22 +141,6 @@ namespace AsterNET.Manager
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Variable
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get/Set the variables to set on the originated call.<br />
|
|
||||||
/// Variable assignments are of the form "VARNAME=VALUE". You can specify
|
|
||||||
/// multiple variable assignments separated by the '|' character.<br />
|
|
||||||
/// Example: "VAR1=abc|VAR2=def" sets the channel variables VAR1 to "abc" and VAR2 to "def".
|
|
||||||
/// </summary>
|
|
||||||
public string Variable
|
|
||||||
{
|
|
||||||
get { return Helper.JoinVariables(variables, Common.VAR_DELIMITER, "="); }
|
|
||||||
set { variables = Helper.ParseVariables(variables, value, Common.VAR_DELIMITER); }
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region GetVariables()
|
#region GetVariables()
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in a new issue