/// <summary> /// 所有服务控制中心 /// </summary> public static void Init() { //基础服务 BaseHost.Init(false); //特巡报告服务 ReportHost.Init(false); //用户信息服务 UserHost.Init(false); //Web管理后台特巡报告服务 PatrolHost.Init(false); }
public GetReportsResponse Beautify() { GetReportsResponse ret = null; if (this.Status.Status == "200") { ret = new GetReportsResponse(); if (null != this.Report) { ret.Results = new List <GetReportsResponse.Result>(); foreach (WelcomeReport report in this.Report) { var r = new GetReportsResponse.Result(); r.Id = report.Id?.Id; if (TryGetValue(report.Owner, out var owner) && TryGetValue(owner.Name, out var ownerName)) { r.Owner = ownerName; } if (TryGetValue(report.Name, out var name)) { r.Name = name.ToString(); } r.Comment = report.Comment?.FirstOrDefault(); r.CreationTime = report.CreationTime.FirstOrDefault(); r.Writable = report.Writable.FirstOrDefault().As <bool>(); r.InUse = report.InUse.FirstOrDefault().As <bool>(); //r.TaskId = report.GetValue(p => p.Task).As<ReportFormat>()?.Empty?.Id?.ConvertTo<string>(); //r.TaskName = report.GetValue(p => p.Task).As<ReportFormat>()?.GetValue(p=>p.Name).As<string>(); ReportReport inner = report.Report.FirstOrDefault(); if (null != inner) { r.OmpVersion = inner.Omp.FirstOrDefault()?.Version.FirstOrDefault(); r.ScanRunStatus = inner.ScanRunStatus.FirstOrDefault(); r.VulnsCount = inner.Vulns.FirstOrDefault()?.Count?.FirstOrDefault(); r.AppCount = inner.Apps.FirstOrDefault()?.Count.FirstOrDefault(); r.SslCertsCount = inner.SslCerts.FirstOrDefault()?.Count.FirstOrDefault(); ReportTask task = inner.Task.FirstOrDefault(); if (null != task) { r.Task = new GetReportsResponse.Result.TaskInfo(); r.Task.Id = task.Empty?.Id;// task.GetValue(p => p.Empty).As<Filter>()?.Id; r.Task.Name = task.Name?.FirstOrDefault(); r.Task.Comment = task.Comment?.FirstOrDefault(); r.Task.TargetId = task.Target?.FirstOrDefault()?.Empty?.Id; r.Task.Progress = task.Progress?.FirstOrDefault(); } r.ScanStart = inner.ScanStart.FirstOrDefault(); var ports = inner.Ports; if (ports != null && ports.Length > 0) { var port = ports[0]; if (null != port && null != port.Port) { r.Ports = new List <GetReportsResponse.Result.PortInfo>(); foreach (PortPort prt in port.Port) { var entity = new GetReportsResponse.Result.PortInfo(); entity.Port = prt.Empty; entity.Host = prt.Host?.FirstOrDefault(); entity.Severity = prt.Severity?.FirstOrDefault()?.As <double>(); entity.Threat = prt.Threat?.FirstOrDefault(); r.Ports.Add(entity); } } } var resultsArr = inner.Results; if (resultsArr != null && resultsArr.Length > 0) { var results = resultsArr[0]; if (null != results && null != results.Result) { r.Results = new List <ResultInfo>(); foreach (ResultResult result in results.Result) { var entity = new ResultInfo(); entity.Id = result.Empty?.Id; entity.Name = result.Name?.FirstOrDefault(); entity.Owner = result.Owner?.FirstOrDefault()?.Name.FirstOrDefault(); entity.Comment = result.Comment?.FirstOrDefault(); entity.CreationTime = result.CreationTime?.FirstOrDefault(); entity.ModificationTime = result.ModificationTime?.FirstOrDefault(); entity.Host = result.Host?.FirstOrDefault()?.Empty; entity.AssetId = result.Host?.FirstOrDefault().Asset?.FirstOrDefault()?.Empty?.AssetId; entity.Port = result.Port?.FirstOrDefault(); var nvt = result.Nvt.FirstOrDefault(); if (null != nvt) { entity.Nvt = new NvtInfo(); entity.Nvt.Oid = nvt.Empty?.Oid; entity.Nvt.Type = nvt.Type?.FirstOrDefault(); entity.Nvt.Name = nvt.Name?.FirstOrDefault(); entity.Nvt.Family = nvt.Family?.FirstOrDefault(); entity.Nvt.CvssBase = nvt.CvssBase?.FirstOrDefault(); entity.Nvt.Cve = nvt.Cve?.FirstOrDefault(); entity.Nvt.Bid = nvt.Bid?.FirstOrDefault(); entity.Nvt.Xref = nvt.Xref?.FirstOrDefault(); entity.Nvt.Tags = nvt.Tags?.FirstOrDefault(); entity.Nvt.Cert = nvt.Cert?.FirstOrDefault()?.ToString(); } entity.ScanNvtVersion = result.ScanNvtVersion?.FirstOrDefault(); entity.Threat = result.Threat?.FirstOrDefault(); entity.Severity = result.Severity?.FirstOrDefault(); entity.Qod = result.Qod?.FirstOrDefault()?.Value?.FirstOrDefault().ToString(); entity.QodType = result.Qod?.FirstOrDefault()?.Type.FirstOrDefault(); entity.Description = result.Description?.FirstOrDefault(); entity.OrginalThreat = result.OriginalThreat?.FirstOrDefault(); entity.OrginalSeverity = result.OriginalSeverity?.FirstOrDefault()?.As <double>(); entity.Notes = result.Notes?.FirstOrDefault(); entity.Overrides = result.Overrides?.FirstOrDefault(); r.Results.Add(entity); } } ReportResultCount[] resultCountArr = inner.ResultCount; if (null != resultCountArr && 0 != resultCountArr.Length) { ReportResultCount resultCount = resultCountArr[0]; if (null != resultCount) { r.ResultCount = new GetReportsResponse.Result.ResultCountInfo(); r.ResultCount.Total = resultCount.Empty; r.ResultCount.Debug = resultCount.Debug?.FirstOrDefault()?.Full?.FirstOrDefault()?.As <int>(); r.ResultCount.Hole = resultCount.Hole?.FirstOrDefault()?.Full?.FirstOrDefault()?.As <int>(); r.ResultCount.Info = resultCount.Info?.FirstOrDefault()?.Full?.FirstOrDefault()?.As <int>(); r.ResultCount.Log = resultCount.Log?.FirstOrDefault()?.Full?.FirstOrDefault()?.As <int>(); r.ResultCount.Warning = resultCount.Warning?.FirstOrDefault()?.Full?.FirstOrDefault()?.As <int>(); r.ResultCount.FalsePositive = resultCount.FalsePositive?.FirstOrDefault()?.Full?.FirstOrDefault()?.As <int>(); } } r.Severity = inner.Severity?.FirstOrDefault()?.Full?.FirstOrDefault().As <double>(); ReportHost host = inner.Host?.FirstOrDefault(); if (null != host) { r.Host = new GetReportsResponse.Result.HostInfo(); var model = r.Host; model.Ip = host.Ip?.FirstOrDefault(); model.AssetId = host.Asset?.FirstOrDefault()?.Empty?.AssetId; model.Start = host.Start?.FirstOrDefault(); model.End = host.End?.FirstOrDefault(); model.PortCount = host.PortCount?.FirstOrDefault()?.Page?.FirstOrDefault(); var rcArr = host.ResultCount; if (null != rcArr && 0 != rcArr.Length) { var rc = rcArr[0]; model.ResultCount = new GetReportsResponse.Result.ResultCountInfo(); model.ResultCount.Total = rc.Page?.FirstOrDefault(); model.ResultCount.Hole = rc.Hole?.FirstOrDefault()?.Page?.FirstOrDefault(); model.ResultCount.Warning = rc.Warning?.FirstOrDefault()?.Page?.FirstOrDefault(); model.ResultCount.Info = rc.Info?.FirstOrDefault()?.Page?.FirstOrDefault(); model.ResultCount.Log = rc.Log?.FirstOrDefault()?.Page?.FirstOrDefault(); model.ResultCount.FalsePositive = rc.FalsePositive?.FirstOrDefault()?.Page?.FirstOrDefault(); } var details = host.Detail; if (null != details && 0 != details.Length) { model.Details = new List <GetReportsResponse.Result.HostInfo.Detail>(); foreach (var detail in details) { var d = new GetReportsResponse.Result.HostInfo.Detail(); d.Name = detail.Name?.FirstOrDefault(); d.Value = detail.Value?.FirstOrDefault(); d.SourceType = detail.Source?.FirstOrDefault()?.Type?.FirstOrDefault(); d.SourceName = detail.Source?.FirstOrDefault()?.Name?.FirstOrDefault(); d.SourceDescription = detail.Source?.FirstOrDefault()?.Description.FirstOrDefault(); d.Extra = detail.Extra?.FirstOrDefault(); model.Details.Add(d); } } } var hostStart = inner.HostStart?.FirstOrDefault(); if (null != hostStart) { r.HostStart = hostStart.Empty; r.HostStartHost = hostStart.HostHost?.FirstOrDefault(); } var hostEnd = inner.HostEnd?.FirstOrDefault(); if (null != hostEnd) { r.HostEnd = hostEnd.Empty; r.HostEndHost = hostEnd.HostHost?.FirstOrDefault(); } r.ScanEnd = inner.ScanEnd?.FirstOrDefault(); r.ErrorCount = inner.Errors?.FirstOrDefault()?.Count?.FirstOrDefault(); r.ReportFormat = inner.ReportFormat?.FirstOrDefault(); } } ret.Results.Add(r); } } ret.Filters = this.Filters?.FirstOrDefault()?.Term?.FirstOrDefault(); if (null != this.Sort && 0 < this.Sort.Length) { var s = this.Sort[0]; ret.Sort = s.Field?.FirstOrDefault()?.Empty + ", " + s.Field?.FirstOrDefault()?.Order?.FirstOrDefault(); } ret.ReportCount = this.ReportCount?.FirstOrDefault()?.Empty.As <int>(); } return(ret); }