private static Cd40Cfg ConfiguracionGrupoUnMiembro(Cd40Cfg cfg) { //Usuario S2 ConfiguracionUsuario userCfg = new ConfiguracionUsuario(); //Tecla de grupo con 1 miembro CfgEnlaceInterno link = new CfgEnlaceInterno(); link.Literal = "grupotest1"; link.PosicionHMI = 45; link.TipoEnlaceInterno = "MD"; link.Prioridad = 4; link.OrigenR2 = "218002"; CfgRecursoEnlaceInterno rec = new CfgRecursoEnlaceInterno(); rec.Prefijo = 0; rec.NombreRecurso = "218001"; link.ListaRecursos.Add(rec); userCfg.TlfLinks.Add(link); //Tecla de AD normal CfgEnlaceInterno link2 = new CfgEnlaceInterno(); link2.Literal = "S1_SCV2"; link2.PosicionHMI = 44; link2.TipoEnlaceInterno = "DA"; link2.Prioridad = 4; link2.OrigenR2 = "218002"; userCfg.TlfLinks.Add(link2); cfg.ConfiguracionUsuarios.Add(userCfg); //Usuario S1 ConfiguracionUsuario userCfg2 = new ConfiguracionUsuario(); //Tecla de grupo con 1 miembro CfgEnlaceInterno link3 = new CfgEnlaceInterno(); link3.Literal = "grupotest1"; link3.PosicionHMI = 45; link3.TipoEnlaceInterno = "MD"; link3.Prioridad = 4; link3.OrigenR2 = "218001"; CfgRecursoEnlaceInterno rec2 = new CfgRecursoEnlaceInterno(); rec2.Prefijo = 0; rec2.NombreRecurso = "218001"; link3.ListaRecursos.Add(rec2); userCfg2.TlfLinks.Add(link3); //Tecla de AD normal CfgEnlaceInterno link4 = new CfgEnlaceInterno(); link4.Literal = "S2_SCV2"; link4.PosicionHMI = 44; link4.TipoEnlaceInterno = "DA"; link4.Prioridad = 4; link4.OrigenR2 = "218001"; userCfg2.TlfLinks.Add(link4); cfg.ConfiguracionUsuarios.Add(userCfg2); //Configuracion de sistema, numeracion de usuarios DireccionamientoSIP dirSIP = new DireccionamientoSIP(); StrNumeroAbonado num = new StrNumeroAbonado(); num.NumeroAbonado = "218001"; num.Prefijo = 0; dirSIP.IdUsuario = "S1_SCV2"; dirSIP.NumerosAbonadoQueAtiende.Add(num); cfg.ConfiguracionGeneral.PlanDireccionamientoSIP.Add(dirSIP); num = new StrNumeroAbonado(); num.NumeroAbonado = "218002"; num.Prefijo = 0; dirSIP = new DireccionamientoSIP(); dirSIP.IdUsuario = "S2_SCV2"; dirSIP.NumerosAbonadoQueAtiende.Add(num); cfg.ConfiguracionGeneral.PlanDireccionamientoSIP.Add(dirSIP); num = new StrNumeroAbonado(); num.NumeroAbonado = "218003"; num.Prefijo = 0; dirSIP = new DireccionamientoSIP(); dirSIP.IdUsuario = "S2_SCV3"; dirSIP.NumerosAbonadoQueAtiende.Add(num); cfg.ConfiguracionGeneral.PlanDireccionamientoSIP.Add(dirSIP); return cfg; }
public AccountDataSip(StrNumeroAbonado num) { NumeroAbonado = num.NumeroAbonado; IdAgrupacion = num.IdAgrupacion; }
public TlfNet GetNet(uint prefix, string number, ref StrNumeroAbonado altRoute) { string idEquipo; if (prefix == Cd40Cfg.ATS_DST) { ulong num; if (ulong.TryParse(number, out num)) { int centralId = -1; foreach (NumeracionATS centralAts in _SystemCfg.PlanNumeracionATS) { bool foundCentralAts = false; centralId++; foreach (RangosSCV range in centralAts.RangosOperador) { if ((range.Inicial <= num) && (range.Final >= num)) { if (!string.IsNullOrEmpty(range.IdAbonado)) { altRoute = new StrNumeroAbonado(); altRoute.Prefijo = range.IdPrefijo; altRoute.NumeroAbonado = range.IdAbonado; } foundCentralAts = true; break; } } if (!foundCentralAts) { foreach (RangosSCV range in centralAts.RangosPrivilegiados) { if ((range.Inicial <= num) && (range.Final >= num)) { if (!string.IsNullOrEmpty(range.IdAbonado)) { altRoute = new StrNumeroAbonado(); altRoute.Prefijo = range.IdPrefijo; altRoute.NumeroAbonado = range.IdAbonado; } foundCentralAts = true; break; } } } if (foundCentralAts) { int route = 0; TlfNet net = new TlfNet(); net.Id = "Net_ATS_" + centralId; foreach (PlanRutas ruta in centralAts.ListaRutas) { // Primero van las rutas directas y luego el resto route = (ruta.TipoRuta == "D") ? route : ++route; foreach (string trunk in ruta.ListaTroncales) { foreach (PlanRecursos recurso in _SystemCfg.GetTrunkResources(trunk)) { Rs <GwTlfRs> rs = Top.Registry.GetRs <GwTlfRs>(recurso.IdRecurso); string rsIp = GetGwRsIp(recurso.IdRecurso, out idEquipo); SipLine line = new SipLine(rs, rsIp); net.Lines.Add(line); net.RsTypes.Add(new RsIdxType(net.Lines.Count - 1, route, recurso.Tipo)); net.Routes.Add(route); } } } /* * * Los recursos dentro de un troncal ya no se ordenan primero los de R2 * y luego los de N-5 (tal y como se hizo para ACC). Se ordenan primero lado A * y luego lado B (Según Encamina (02/06) ). * Incidencia #2521 * net.RsTypes.Sort(delegate(RsIdxType a, RsIdxType b) * { * if (a.ruta == b.ruta) * return a.TipoInteface - b.TipoInteface; * if (a.ruta < b.ruta) * return -1; * * return 1; * }); */ return(net); } } //Devuelve una red vacía si no lo encuentra en la configuración _Logger.Info("Linea no encontrada para prefijo {0} {1}", prefix, number); TlfNet emptyNet = new TlfNet(); emptyNet.Id = "Net_ATS_" + centralId; return(emptyNet); } } // Por acceso indirecto, el prefijo PP // se comporta como un abonado con marcación else if (prefix == Cd40Cfg.PP_DST) { TlfNet net = new TlfNet(); Rs <GwTlfRs> rs = null; net.Id = "Net_" + "SEGURIDAD"; //Busca el equipo que le da servicio, pasarela o proxy string rsIp = GetGwRsIp(number, out idEquipo); if (idEquipo != null) { rs = Top.Registry.GetRs <GwTlfRs>(number); } if (rs == null) { //o nuestro proxy si es un teléfono IP no configurado if ((rsIp == null) || (idEquipo == null)) { rsIp = GetProxyIp(out idEquipo); rs = Top.Registry.GetRs <GwTlfRs>(idEquipo); } _Logger.Warn("Number not found in configurated resources {0}, use {1} instead", number, idEquipo); } //rs.Reset(null, new GwTlfRs()); if (rs != null) { _Logger.Debug("Resource found for {0}: {1}", number, rs.Id); SipLine line = new SipLine(rs, rsIp); net.Lines.Add(line); net.Routes.Add(0); net.RsTypes.Add(new RsIdxType(net.Lines.Count - 1, 0, TipoInterface.TI_BL)); } else { _Logger.Error("{0} not found in conf resources {0} and proxy not found either.", number, idEquipo); } return(net); } else if (prefix == Cd40Cfg.UNKNOWN_DST) //Destinos entrantes que no están configurados { TlfNet net = new TlfNet(); net.Id = "Net_" + "SEGURIDAD"; string rsIp = GetProxyIp(out idEquipo); if (rsIp != null) { Rs <GwTlfRs> rs = Top.Registry.GetRs <GwTlfRs>(idEquipo); GwTlfRs proxyRs = new GwTlfRs(); proxyRs.GwIp = rsIp; rs.Reset(null, proxyRs); SipLine line = new SipLine(rs, rsIp); net.Lines.Add(line); net.Routes.Add(0); net.RsTypes.Add(new RsIdxType(net.Lines.Count - 1, 0, TipoInterface.TI_BL)); return(net); } } else if (prefix == Cd40Cfg.IP_DST) { TlfNet net = new TlfNet(); net.Id = "Net_" + "SEGURIDAD"; string rsIp = GetProxyIp(out idEquipo); if (rsIp != null) { Rs <GwTlfRs> rs = Top.Registry.GetRs <GwTlfRs>(idEquipo); GwTlfRs proxyRs = new GwTlfRs(); proxyRs.GwIp = rsIp; rs.Reset(null, proxyRs); SipLine line = new SipLine(rs, rsIp); net.Lines.Add(line); net.Routes.Add(0); net.RsTypes.Add(new RsIdxType(net.Lines.Count - 1, 0, TipoInterface.TI_BL)); return(net); } } else { foreach (ListaRedes red in _SystemCfg.PlanRedes) { if (red.Prefijo == prefix) { TlfNet net = new TlfNet(); net.Id = "Net_" + red.IdRed; foreach (PlanRecursos recurso in red.ListaRecursos) { string rsIp; Rs <GwTlfRs> rs = Top.Registry.GetRs <GwTlfRs>(recurso.IdRecurso); rsIp = GetGwRsIp(recurso.IdRecurso, out idEquipo); SipLine line = new SipLine(rs, rsIp); net.Lines.Add(line); net.RsTypes.Add(new RsIdxType(net.Lines.Count - 1, altRoute != null ? 1000 : 0, TipoInterface.TI_AB)); // Si altRoute es distinto de null es que estamos obteniendo la red // de salida alternativa para un numero ATS. Esta red sólo se tiene // que usar cuando no podemos salir por la propia red ATS, por eso // ponemos un valor elevado de ruta de modo que se coja en GetDetourPath net.Routes.Add(altRoute != null ? 1000 : 0); } return(net); } } } return(null); }