private static TlfNet CreateIpNet(string number, Scv scv) { TlfNet net = new TlfNet(); net.Id = "Net_ATS_IP_" + scv.Id; Rs <GwTlfRs> rs = Top.Registry.GetRs <GwTlfRs>(number); string ScvIp; if (rs.Content == null) { //Si el recurso no tiene contenido actualizado, la IP es de los datos de configuración (principal) string id; ScvIp = scv.GetProxyIp(out id); if (rs.IsUnreferenced) { //Para que recién creado por defecto aparezca sin aspa, le añado un recurso GwTlfRs proxyRs = new GwTlfRs(); proxyRs.GwIp = ScvIp; rs.Reset(null, proxyRs); } } else { //Utilizo los datos del recurso (actualizado con el activo) ScvIp = ((GwTlfRs)rs.Content).GwIp; } SipLine line = new SipLine(rs, ScvIp, true); net.Lines.Add(line); net.RsTypes.Add(new RsIdxType(net.Lines.Count - 1, 0, TipoInterface.TI_IP_PROXY)); net.Routes.Add(0); return(net); }
/// <summary> /// Dado un user name y una ip, busca el recurso entre los SCV IP /// </summary> /// <param name="id"></param> /// <param name="host"></param> /// <returns></returns> private CfgRecursoEnlaceInterno lookForResourceInScv(string id, string ip) { string idEquipo; CfgRecursoEnlaceInterno recurso = null; ulong resultNumber = 0; if (_MiScv.GetProxyIp(out idEquipo) == ip) //Pertenece a mi SCV { //Es un TOP o un recurso de telefonía IP interno recurso = new CfgRecursoEnlaceInterno(); recurso.Prefijo = Cd40Cfg.PP_DST; recurso.NombreRecurso = id; recurso.NumeroAbonado = id; //string.Format("{0}@{1}", id, host.IpRed1); } else { foreach (Scv scv in _OtrosScv.Values) { string ipAddScv = scv.GetProxyIp(out idEquipo); if ((scv.EsCentralIp) && (ipAddScv == ip)) //Pertenece a otro SCV IP { try { resultNumber = Convert.ToUInt64(id); if (scv.IsInRangeScv(resultNumber)) { recurso = new CfgRecursoEnlaceInterno(); recurso.Prefijo = Cd40Cfg.ATS_DST; recurso.NumeroAbonado = id; recurso.NombreRecurso = string.Format("{0}@{1}", id, ipAddScv); break; } } catch { return(null); } } } } return(recurso); }