diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchDirectory.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchDirectory.cs | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchDirectory.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchDirectory.cs index 0a9f69d..8afaeea 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchDirectory.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchDirectory.cs | |||
@@ -38,12 +38,18 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
38 | private static readonly ILog m_log = | 38 | private static readonly ILog m_log = |
39 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 39 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
40 | 40 | ||
41 | public Hashtable HandleDirectoryRequest(Hashtable request) | 41 | public Hashtable HandleDirectoryRequest(string Context, string Realm, Hashtable request) |
42 | { | 42 | { |
43 | Hashtable response = new Hashtable(); | ||
44 | string domain = (string) request["domain"]; | ||
45 | if ( domain != Realm) { | ||
46 | response["content_type"] = "text/xml"; | ||
47 | response["keepalive"] = false; | ||
48 | response["int_response_code"] = 200; | ||
49 | response["str_response_string"] = ""; | ||
50 | } else { | ||
43 | m_log.DebugFormat("[FreeSwitchDirectory] HandleDirectoryRequest called with {0}",request.ToString()); | 51 | m_log.DebugFormat("[FreeSwitchDirectory] HandleDirectoryRequest called with {0}",request.ToString()); |
44 | 52 | ||
45 | Hashtable response = new Hashtable(); | ||
46 | |||
47 | // information in the request we might be interested in | 53 | // information in the request we might be interested in |
48 | 54 | ||
49 | // Request 1 sip_auth for users account | 55 | // Request 1 sip_auth for users account |
@@ -85,11 +91,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
85 | 91 | ||
86 | if (sipAuthMethod == "REGISTER") | 92 | if (sipAuthMethod == "REGISTER") |
87 | { | 93 | { |
88 | response = HandleRegister(request); | 94 | response = HandleRegister(Context, Realm, request); |
89 | } | 95 | } |
90 | else if (sipAuthMethod == "INVITE") | 96 | else if (sipAuthMethod == "INVITE") |
91 | { | 97 | { |
92 | response = HandleInvite(request); | 98 | response = HandleInvite(Context, Realm, request); |
93 | } | 99 | } |
94 | else | 100 | else |
95 | { | 101 | { |
@@ -101,19 +107,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
101 | } | 107 | } |
102 | else if (eventCallingFunction == "switch_xml_locate_user") | 108 | else if (eventCallingFunction == "switch_xml_locate_user") |
103 | { | 109 | { |
104 | response = HandleLocateUser(request); | 110 | response = HandleLocateUser(Realm, request); |
105 | } | 111 | } |
106 | else if (eventCallingFunction == "user_data_function") // gets called when an avatar to avatar call is made | 112 | else if (eventCallingFunction == "user_data_function") // gets called when an avatar to avatar call is made |
107 | { | 113 | { |
108 | response = HandleLocateUser(request); | 114 | response = HandleLocateUser(Realm, request); |
109 | } | 115 | } |
110 | else if (eventCallingFunction == "user_outgoing_channel") | 116 | else if (eventCallingFunction == "user_outgoing_channel") |
111 | { | 117 | { |
112 | response = HandleRegister(request); | 118 | response = HandleRegister(Context, Realm, request); |
113 | } | 119 | } |
114 | else if (eventCallingFunction == "config_sofia") // happens once on freeswitch startup | 120 | else if (eventCallingFunction == "config_sofia") // happens once on freeswitch startup |
115 | { | 121 | { |
116 | response = HandleConfigSofia(request); | 122 | response = HandleConfigSofia(Context, Realm, request); |
117 | } | 123 | } |
118 | else if (eventCallingFunction == "switch_load_network_lists") | 124 | else if (eventCallingFunction == "switch_load_network_lists") |
119 | { | 125 | { |
@@ -131,10 +137,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
131 | response["content_type"] = "text/xml"; | 137 | response["content_type"] = "text/xml"; |
132 | response["str_response_string"] = ""; | 138 | response["str_response_string"] = ""; |
133 | } | 139 | } |
140 | } | ||
134 | return response; | 141 | return response; |
135 | } | 142 | } |
136 | 143 | ||
137 | private Hashtable HandleRegister(Hashtable request) | 144 | private Hashtable HandleRegister(string Context, string Realm, Hashtable request) |
138 | { | 145 | { |
139 | m_log.Info("[FreeSwitchDirectory] HandleRegister called"); | 146 | m_log.Info("[FreeSwitchDirectory] HandleRegister called"); |
140 | 147 | ||
@@ -159,19 +166,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
159 | "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${{dialed_user}}@${{dialed_domain}}}}${{sofia_contact(${{dialed_user}}@${{dialed_domain}})}}\"/>\r\n" + | 166 | "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${{dialed_user}}@${{dialed_domain}}}}${{sofia_contact(${{dialed_user}}@${{dialed_domain}})}}\"/>\r\n" + |
160 | "</params>\r\n" + | 167 | "</params>\r\n" + |
161 | "<variables>\r\n" + | 168 | "<variables>\r\n" + |
162 | "<variable name=\"user_context\" value=\"default\" />\r\n" + | 169 | "<variable name=\"user_context\" value=\"{3}\" />\r\n" + |
163 | "<variable name=\"presence_id\" value=\"{1}@{0}\"/>"+ | 170 | "<variable name=\"presence_id\" value=\"{1}@{0}\"/>"+ |
164 | "</variables>\r\n" + | 171 | "</variables>\r\n" + |
165 | "</user>\r\n" + | 172 | "</user>\r\n" + |
166 | "</domain>\r\n" + | 173 | "</domain>\r\n" + |
167 | "</section>\r\n" + | 174 | "</section>\r\n" + |
168 | "</document>\r\n", | 175 | "</document>\r\n", |
169 | domain , user, password); | 176 | domain , user, password, Context); |
170 | 177 | ||
171 | return response; | 178 | return response; |
172 | } | 179 | } |
173 | 180 | ||
174 | private Hashtable HandleInvite(Hashtable request) | 181 | private Hashtable HandleInvite(string Context, string Realm, Hashtable request) |
175 | { | 182 | { |
176 | m_log.Info("[FreeSwitchDirectory] HandleInvite called"); | 183 | m_log.Info("[FreeSwitchDirectory] HandleInvite called"); |
177 | 184 | ||
@@ -196,7 +203,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
196 | "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${1}@${{dialed_domain}}}}${{sofia_contact(${1}@${{dialed_domain}})}}\"/>\r\n" + | 203 | "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${1}@${{dialed_domain}}}}${{sofia_contact(${1}@${{dialed_domain}})}}\"/>\r\n" + |
197 | "</params>\r\n" + | 204 | "</params>\r\n" + |
198 | "<variables>\r\n" + | 205 | "<variables>\r\n" + |
199 | "<variable name=\"user_context\" value=\"default\" />\r\n" + | 206 | "<variable name=\"user_context\" value=\"{4}\" />\r\n" + |
200 | "<variable name=\"presence_id\" value=\"{1}@$${{domain}}\"/>"+ | 207 | "<variable name=\"presence_id\" value=\"{1}@$${{domain}}\"/>"+ |
201 | "</variables>\r\n" + | 208 | "</variables>\r\n" + |
202 | "</user>\r\n" + | 209 | "</user>\r\n" + |
@@ -206,20 +213,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
206 | "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${3}@${{dialed_domain}}}}${{sofia_contact(${3}@${{dialed_domain}})}}\"/>\r\n" + | 213 | "<param name=\"dial-string\" value=\"{{sip_contact_user={1}}}{{presence_id=${3}@${{dialed_domain}}}}${{sofia_contact(${3}@${{dialed_domain}})}}\"/>\r\n" + |
207 | "</params>\r\n" + | 214 | "</params>\r\n" + |
208 | "<variables>\r\n" + | 215 | "<variables>\r\n" + |
209 | "<variable name=\"user_context\" value=\"default\" />\r\n" + | 216 | "<variable name=\"user_context\" value=\"{4}\" />\r\n" + |
210 | "<variable name=\"presence_id\" value=\"{3}@$${{domain}}\"/>"+ | 217 | "<variable name=\"presence_id\" value=\"{3}@$${{domain}}\"/>"+ |
211 | "</variables>\r\n" + | 218 | "</variables>\r\n" + |
212 | "</user>\r\n" + | 219 | "</user>\r\n" + |
213 | "</domain>\r\n" + | 220 | "</domain>\r\n" + |
214 | "</section>\r\n" + | 221 | "</section>\r\n" + |
215 | "</document>\r\n", | 222 | "</document>\r\n", |
216 | domain , user, password,sipRequestUser); | 223 | domain , user, password,sipRequestUser, Context); |
217 | 224 | ||
218 | return response; | 225 | return response; |
219 | } | 226 | } |
220 | 227 | ||
221 | 228 | private Hashtable HandleLocateUser(String Realm, Hashtable request) | |
222 | private Hashtable HandleLocateUser(Hashtable request) | ||
223 | { | 229 | { |
224 | m_log.Info("[FreeSwitchDirectory] HandleLocateUser called"); | 230 | m_log.Info("[FreeSwitchDirectory] HandleLocateUser called"); |
225 | 231 | ||
@@ -253,7 +259,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
253 | return response; | 259 | return response; |
254 | } | 260 | } |
255 | 261 | ||
256 | private Hashtable HandleConfigSofia(Hashtable request) | 262 | private Hashtable HandleConfigSofia(string Context, string Realm, Hashtable request) |
257 | { | 263 | { |
258 | m_log.Info("[FreeSwitchDirectory] HandleConfigSofia called"); | 264 | m_log.Info("[FreeSwitchDirectory] HandleConfigSofia called"); |
259 | 265 | ||
@@ -286,7 +292,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
286 | "<param name=\"retry-seconds\" value=\"30\"/>\r\n"+ | 292 | "<param name=\"retry-seconds\" value=\"30\"/>\r\n"+ |
287 | "<param name=\"extension\" value=\"$${{default_provider_contact}}\"/>\r\n"+ | 293 | "<param name=\"extension\" value=\"$${{default_provider_contact}}\"/>\r\n"+ |
288 | "<param name=\"contact-params\" value=\"domain_name=$${{domain}}\"/>\r\n"+ | 294 | "<param name=\"contact-params\" value=\"domain_name=$${{domain}}\"/>\r\n"+ |
289 | "<param name=\"context\" value=\"public\"/>\r\n"+ | 295 | "<param name=\"context\" value=\"{1}\"/>\r\n"+ |
290 | "</gateway>\r\n"+ | 296 | "</gateway>\r\n"+ |
291 | "</gateways>\r\n"+ | 297 | "</gateways>\r\n"+ |
292 | "<params>\r\n"+ | 298 | "<params>\r\n"+ |
@@ -301,7 +307,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
301 | "</domain>\r\n" + | 307 | "</domain>\r\n" + |
302 | "</section>\r\n" + | 308 | "</section>\r\n" + |
303 | "</document>\r\n", | 309 | "</document>\r\n", |
304 | domain); | 310 | domain, Context); |
305 | 311 | ||
306 | return response; | 312 | return response; |
307 | } | 313 | } |