public string Check(FormHandler formHandler) { _formHandler = formHandler; var wsKey = formHandler.FormItems.FirstOrDefault(r => r.FieldName.Equals("wsKey")); if (wsKey != null && !string.IsNullOrEmpty(wsKey.TextValue)) { var _wsKey = wsKey.TextValue; if (MyWebSocketWork.WebSockets.TryGetValue(_wsKey, out var sockert)) { WebSocket = sockert; WebSocket.OnClose += sender => { webSocketDisposed = true; }; } } var macValue = formHandler.FormItems.FirstOrDefault(r => r.FieldName.Equals("mac")); if (macValue != null && !string.IsNullOrEmpty(macValue.TextValue)) { if (!Setting.CheckIsInWhiteMacList(macValue.TextValue)) { return($"macAddress:[{macValue.TextValue}] invaild"); } } return(CheckData(formHandler)); }
/// <summary> /// 检查windows服务是否已存在 /// </summary> /// <param name="request"></param> private void CheckWinservice(GetVersionVm request) { if (string.IsNullOrEmpty(request.Name)) { WriteError("service name required!"); return; } if (!string.IsNullOrEmpty(request.Mac) && !Setting.CheckIsInWhiteMacList(request.Mac)) { WriteError($"macAddress:[{request.Mac}] invalid"); return; } var serviceName = request.Name.Trim(); var service = WindowServiceHelper.GetWindowServiceByName(serviceName); if (!string.IsNullOrEmpty(service.Item2)) { WriteError(service.Item2); return; } CheckExistResult result = new CheckExistResult { WebSiteName = serviceName, Success = service.Item1 != null }; WriteSuccess(result); }
private void GetWindowsServiceVersionList(GetVersionVm request) { if (!string.IsNullOrEmpty(request.Mac) && !Setting.CheckIsInWhiteMacList(request.Mac)) { WriteError($"macAddress:[{request.Mac}] invalid"); return; } string requestName = request.Name; var projectPath = Path.Combine(Setting.PublishWindowServicePathFolder, requestName); if (!Directory.Exists(projectPath)) { WriteError("publisher folder not found:" + projectPath + ",please deploy first!"); return; } var all = Directory.GetDirectories(projectPath).ToList(); if (all.Count < 1) { WriteError("there is no rollback version yet in publisher folder:" + projectPath); return; } var dic = new Dictionary <string, Tuple <string, DateTime, string> >(); foreach (var item in all) { var itemD = new DirectoryInfo(item); var temp = itemD.Name.Replace("_", ""); if (DateTime.TryParseExact(temp, "yyyyMMddHHmmss", null, DateTimeStyles.None, out DateTime d)) { if (request.WithArgs) { var args = GetParamInArgsFile(request, item); var data = new { Version = itemD.Name, Args = args }; var dataInfo = JsonConvert.SerializeObject(data); if (dic.ContainsKey(temp)) { //是重试版本 看下已存在的length是否 var infoValue = dic[temp]; if (infoValue.Item3.Length < itemD.Name.Length) { //是旧的 替换掉 dic[temp] = new Tuple <string, DateTime, string>(dataInfo, d, itemD.Name); } } else { //添加 dic.Add(temp, new Tuple <string, DateTime, string>(dataInfo, d, itemD.Name)); } } else { dic.Add(temp, new Tuple <string, DateTime, string>(itemD.Name, d, itemD.Name)); } } } var result = dic.Values.ToList().OrderByDescending(r => r.Item2).Select(r => r.Item1).Take(11).ToList(); WriteSuccess(result); }
/// <summary> /// 检查IIS中是否存在指定网站 /// </summary> /// <param name="request"></param> private void CheckIIs(GetVersionVm request) { if (string.IsNullOrEmpty(request.Name)) { WriteError("web site name required!"); return; } if (!string.IsNullOrEmpty(request.Mac) && !Setting.CheckIsInWhiteMacList(request.Mac)) { WriteError($"macAddress:[{request.Mac}] invalid"); return; } var webSiteName = request.Name.Trim(); var siteNameArr = webSiteName.Split('/'); if (siteNameArr.Length > 2) { WriteError("webSiteName level limit is 2"); return; } var level1 = siteNameArr[0]; var level2 = siteNameArr.Length == 2 ? siteNameArr[1] : string.Empty; var isSiteExistResult = IISHelper.IsSiteExist(level1, level2); if (!string.IsNullOrEmpty(isSiteExistResult.Item3)) { WriteError(isSiteExistResult.Item3); return; } var iisVersion = IISHelper.GetIISVersion(); if (iisVersion <= 6) { WriteError($"remote iis verison is too low!"); return; } CheckExistResult result = new CheckExistResult(); result.WebSiteName = webSiteName; result.Level1Name = level1; result.Level1Exist = isSiteExistResult.Item1; if (!isSiteExistResult.Item1) { //一级不存在 那肯定要输入了 端口号必填 result.Level1Exist = false; } else if (isSiteExistResult.Item1 && !isSiteExistResult.Item2 && !string.IsNullOrEmpty(level2)) { //一级存在二级不存在 不用填端口号 result.Level2Exist = false; } else { result.Success = true; } WriteSuccess(result); }