public async Task <IHttpActionResult> DeleteTranscodeTemplateModel([FromUri] string id) { try { TranscodeTemplateModel transcodeTemplateModel = await TranscodeService.FindByIdAsync(ThreadStaticObject.UserId, id); if (transcodeTemplateModel == null) { return(NotFound()); } ServiceResultMessage result = await TranscodeService.RemoveAsync(ThreadStaticObject.UserId, id); return(Json(new DjLiveResponse <dynamic>(transcodeTemplateModel))); } catch (Exception e) { var errorId = Guid.NewGuid().Str(); LogHelper.Error(errorId, e); return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{errorId}" })); } }
public static ServiceResultMessage DaoResult2ServiceResult(DaoResultMessage message) { var serviceMessage = new ServiceResultMessage(); serviceMessage.Message = message.Message; serviceMessage.Para = message.para; switch (message.Code) { case DaoResultCode.ItemNotExist: { serviceMessage.code = ServiceResultCode.ItemNotExist; break; } case DaoResultCode.Success: { serviceMessage.code = ServiceResultCode.Success; break; } case DaoResultCode.UnExpectError: { serviceMessage.code = ServiceResultCode.UnExceptError; break; } default: { serviceMessage.code = ServiceResultCode.UnDefineError; break; } } return(serviceMessage); }
public async Task <IHttpActionResult> Register([FromBody] LoginModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } ServiceResultMessage resultMessage = await AccountService.CreateAccountModel(model.UserName, model.Password); if (resultMessage.code == ServiceResultCode.Success) { var message = await AccountService.CheckAccountVilidate(model.UserName, model.Password); if (message.ResulType == ValidateType.None) { #if DEBUG string header = JsonConvert.SerializeObject(message.Cookie); #else string header = AesEncryptHelper.DecryptAes(JsonConvert.SerializeObject(message.Cookie)); #endif var result = new { authHeader = header, respMessage = message.Message }; return(Json(result)); } return(BadRequest(message.Message)); } return(BadRequest(resultMessage.Message)); } catch (Exception e) { var errorId = Guid.NewGuid().Str(); LogHelper.Error(errorId, e); return(Json(new { message = $@"发生未知错误,请联系管理员,错误代码:{errorId}" })); } }
public async Task <ServiceResultMessage> CreateAccountModel(string userName, string password) { ServiceResultMessage result = new ServiceResultMessage(); try { var id = Guid.NewGuid().Str(); var dbitem = await AccountDao.GetAccountEntityByUserName(userName); if (dbitem != null) { result.code = ServiceResultCode.ItemAlreadyExist; result.Message = "帐号已经存在.."; result.Para = new AccountModel() { UserName = userName, Id = id, RoleType = "普通用户", StatType = "正常", }; } else { var daoresult = await AccountDao.CreateAccount(id, new AccountEntity() { UserName = userName, Password = password, Id = id, RoleType = (int)AccountRoleType.User, StatType = (int)AccountStatType.Normal, Token = "", }); if (daoresult.Code == DaoResultCode.Success) { result.code = ServiceResultCode.Success; result.Message = "帐号创建成功."; result.Para = new AccountModel() { UserName = userName, Id = id, RoleType = "普通用户", StatType = "正常", }; } else { result.code = ServiceResultCode.UnExceptError; result.Message = "创建失败,未知错误."; } } } catch (Exception e) { LogHelper.Error(e.Message, e); result.code = ServiceResultCode.UnExceptError; result.Message = "创建失败,未知错误."; } return(result); }
public async Task <IHttpActionResult> CreateRoom([FromBody] BoardCastRoomModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (model.ExpireTime.Equals(new DateTime())) { model.ExpireTime = DateTime.Now.AddDays(2); } var id = Guid.NewGuid().Str(); try { model.Id = id; ServiceResultMessage result = await VhostService.CreateLiveRoom(ThreadStaticObject.UserId, model); if (result.code == ServiceResultCode.Success) { string publishUrl = $"rtmp://{model.Domain}/live/?{CreatePublishTokenAuth(ThreadStaticObject.UserId, model.StreamName,model.ExpireTime.Ticks)}/{model.StreamName}"; string audienceUrl = $"rtmp://{model.Domain}/live/?{CreateAudinceTokenAuth(ThreadStaticObject.UserId, model.StreamName, model.ExpireTime.Ticks)}/{model.StreamName}"; return(Json(new DjLiveResponse <dynamic>(new { PublishUrl = publishUrl, PlayUrl = audienceUrl, }))); } return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{result.ErrorId} {result.Message}" })); } catch (Exception e) { //todo:判断异常原因 return(Json(new DjLiveResponse <dynamic>(model) { ApiCode = ApiCode.Conflict, Message = "数据库中添加失败.", })); } } catch (Exception e) { var errorId = Guid.NewGuid().Str(); LogHelper.Error(errorId, e); return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{errorId}" })); } }
public async Task <ServiceResultMessage> UpdateSrsConf(string userId, string id = "") { ServiceResultMessage message = new ServiceResultMessage(); try { List <ServerEntity> entitys; if (string.IsNullOrEmpty(id)) { entitys = await ServerDao.GetServerEntitys(userId); } else { var entity = await ServerDao.GetServerEntityById(userId, id); entitys = new List <ServerEntity>() { entity }; } foreach (ServerEntity entity in entitys) { try { var domains = await ServerDao.GetServerDomainsById(entity.Id); var hostOption = entity.Parse2Conf(); hostOption.VHostOptions.AddRange(domains.Parse2Conf()); var config = JsonConvert.DeserializeObject <LiveServiceConfig>(entity.Option); var liveService = new DjLiveService(config); liveService.SetLiveServiceConf(hostOption, "test"); } catch (Exception e) { message.code = ServiceResultCode.Warning; message.Message += $"更新Server配置失败,ServerId:{entity.Id}"; message.ErrorId += " " + LogHelper.ErrorWithId($"更新Server配置失败,ServerId:{entity.Id}", e); } } return(message); } catch (Exception e) { message.code = ServiceResultCode.UpdateSrsError; message.Message = e.Message; message.ErrorId = LogHelper.ErrorWithId(e.Message, e); return(message); } }
public async Task <IHttpActionResult> CreateDefaultDomain([FromBody] DomainModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var id = Guid.NewGuid().Str(); try { model.Id = id; ServiceResultMessage result = await VhostService.CreateVhost(ThreadStaticObject.UserId, model); model.SecurePolicyPair = new KeyNamePair("76eb7d3b40b64370939e02f04ad6b3a8", ""); model.ServerPair = new KeyNamePair("fdd5659abd28416d91b7711581cfa6a0", ""); if (result.code == ServiceResultCode.Success) { return(Json(new DjLiveResponse <DomainModel>(model))); } return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{result.ErrorId} {result.Message}" })); } catch (Exception e) { //todo:判断异常原因 return(Json(new DjLiveResponse <dynamic>(model) { ApiCode = ApiCode.Conflict, Message = "数据库中添加失败.", })); } } catch (Exception e) { var errorId = Guid.NewGuid().Str(); LogHelper.Error(errorId, e); return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{errorId}" })); } }
public async Task <IHttpActionResult> PutRecordTemplateModel([FromUri] string id, [FromBody] RecordTemplateModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != model.Id) { return(BadRequest("参数不匹配.")); } try { ServiceResultMessage result = await RecordService.UpdateLogeTemplate(ThreadStaticObject.UserId, id, model); if (result.code == ServiceResultCode.Success) { return(Json(new DjLiveResponse <RecordTemplateModel>(model))); } return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{result.ErrorId}" })); } catch (Exception dbE) { if (!await RecordService.RecordTemplateModelExists(ThreadStaticObject.UserId, id)) { return(NotFound()); } throw; } } catch (Exception e) { var errorId = Guid.NewGuid().Str(); LogHelper.Error(errorId, e); return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{errorId}" })); } }
public async Task <IHttpActionResult> CreateDomain([FromBody] DomainModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var id = Guid.NewGuid().Str(); try { model.Id = id; ServiceResultMessage result = await VhostService.CreateVhost(ThreadStaticObject.UserId, model); if (result.code == ServiceResultCode.Success) { return(Json(new DjLiveResponse <DomainModel>(model))); } return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{result.ErrorId} {result.Message}" })); } catch (Exception e) { //todo:判断异常原因 return(Json(new DjLiveResponse <dynamic>(model) { ApiCode = ApiCode.Conflict, Message = "数据库中添加失败.", })); } } catch (Exception e) { var errorId = Guid.NewGuid().Str(); LogHelper.Error(errorId, e); return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{errorId}" })); } }
public async Task <IHttpActionResult> PostTranscodeTemplateModel([FromBody] TranscodeTemplateModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var id = Guid.NewGuid().Str(); try { ServiceResultMessage result = await TranscodeService.AddLogeTemplate(ThreadStaticObject.UserId, id, model); if (result.code == ServiceResultCode.Success) { model.Id = id; return(Json(new DjLiveResponse <dynamic>(model))); } return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{result.ErrorId}" })); } catch (Exception) { if (await TranscodeService.TranscodeTemplateModelExists(ThreadStaticObject.UserId, model.Id)) { return(Conflict()); } throw; } } catch (Exception e) { var errorId = Guid.NewGuid().Str(); LogHelper.Error(errorId, e); return(Json(new DjLiveResponse <dynamic>() { ApiCode = ApiCode.UnExceptError, Message = $@"发生未知错误,请联系管理员,错误代码:{errorId}" })); } }
public async Task <ServiceResultMessage> RemoveAsync(string userId, string id) { ServiceResultMessage message = new ServiceResultMessage(); try { var daoResult = await LogoDao.DeleteLogoTemplate(id); if (daoResult.Code == DaoResultCode.Success) { var logo = daoResult.para as LogoTemplateEntity; if (logo != null && File.Exists(logo.FilePath)) { try { File.Delete(logo.FilePath); } catch (Exception e) { LogHelper.Error($"删除Logo文件失败: 路径:{logo.FilePath}"); } } var serverEntities = await ServerDao.GetServerEntitys(userId); foreach (ServerEntity entity in serverEntities) { try { var config = JsonConvert.DeserializeObject <LiveServiceConfig>(entity.Option); var liveService = new DjLiveService(config); liveService.RemoveLogoFile(id); } catch (Exception e) { message.ErrorId += (" " + LogHelper.ErrorWithId($"删除服务器Logo文件失败,ServerId{entity.Id},LogoId:{id}", e)); message.Message += $"删除服务器Logo文件失败,ServerId{entity.Id},LogoId:{id}"; } } var updateResult = await ServerNodeService.UpdateSrsConf(userId); message = updateResult; if (updateResult.code == ServiceResultCode.Warning) { message.code = ServiceResultCode.Success; } await ServerNodeService.UpdateSrsConf(userId); } else { message = ServiceResultBase.DaoResult2ServiceResult(daoResult); } return(message); } catch (Exception e) { message.code = ServiceResultCode.UnExceptError; message.Message = e.Message; message.ErrorId = LogHelper.ErrorWithId(e.Message, e); return(message); } }
public async Task <ServiceResultMessage> AddLogeTemplate(string userId, string id, LogoTemplateModel logoTemplateModel) { ServiceResultMessage message = new ServiceResultMessage(); try { string filePath = string.Concat(ConfigurationValue.TempLogoPath, $"{id}"); var options = JsonConvert.SerializeObject(new LogoOption() { Height = logoTemplateModel.Height, Width = logoTemplateModel.Width, }); var path = EncryptUtils.Base64SaveImg(logoTemplateModel.Base64String, filePath); if (path == null) { message.code = ServiceResultCode.ImageTranscodeError; message.Message = "base64转 图片失败."; return(message); } var daoresult = await LogoDao.Add2Account(userId, new LogoTemplateEntity() { Id = id, Name = logoTemplateModel.Name, Base64Vale = logoTemplateModel.Base64String, FilePath = path, Option = options, }); if (daoresult.Code == DaoResultCode.Success) { var serverEntities = await ServerDao.GetServerEntitys(userId); foreach (ServerEntity entity in serverEntities) { try { var config = JsonConvert.DeserializeObject <LiveServiceConfig>(entity.Option); var liveService = new DjLiveService(config); liveService.UploadLogoFile(id, path); } catch (Exception e) { message.ErrorId += (" " + LogHelper.ErrorWithId($"上传服务器Logo文件失败,ServerId{entity.Id},LogoId:{id}", e)); message.Message += $"上传服务器Logo文件失败,ServerId{entity.Id},LogoId:{id}"; } } await ServerNodeService.UpdateSrsConf(userId); return(message); } else { message = ServiceResultBase.DaoResult2ServiceResult(daoresult); } return(message); } catch (NullReferenceException e) { message.code = ServiceResultCode.SaveFileError; message.Message = e.Message; message.ErrorId = LogHelper.ErrorWithId(e.Message, e); return(message); } catch (Exception e) { message.code = ServiceResultCode.UnExceptError; message.Message = e.Message; message.ErrorId = LogHelper.ErrorWithId(e.Message, e); return(message); } }
public async Task <ServiceResultMessage> CreateVhost(string userId, DomainModel model) { ServiceResultMessage result = new ServiceResultMessage(); var id = string.IsNullOrEmpty(model.Id) ? Guid.NewGuid().Str() : model.Id; try { var daomainResult = await DomainDao.Add2Account(userId, model.ServerPair.Key, new DomainEntity() { Id = id, SourceDomain = model.SourceDomain, Description = model.Description, SourceType = (int)model.SourceType, StateType = 1, RtmpPlayDomain = model.RtmpPlayDomain, FlvPlayDomain = model.FlvPlayDomain, HlsPlayDomain = model.HlsPlayDomain }); if (daomainResult.Code == DaoResultCode.Success) { var secureAppendtask = DomainDao.AppendSecure(id, model.SecurePolicyPair.Key); var transcodeAppendtask = DomainDao.AppendTranscode(id, model.TranscodeIdPair?.Select(item => item.Key).ToList()); var resultsMessages = await Task.WhenAll(secureAppendtask, transcodeAppendtask); if (resultsMessages.Count(item => item.Code != DaoResultCode.Success) > 0) { var rollbackResult = await DomainDao.DeleteDomainById(id); result.code = ServiceResultCode.AppendItemError; } else { try { var updateConfResult = await ServerNodeService.UpdateSrsConf(userId, model.ServerPair.Key); if (updateConfResult.code != ServiceResultCode.Success) { var rollbackResult = await DomainDao.DeleteDomainById(id); result.code = ServiceResultCode.UpdateSrsError; result.Message = updateConfResult.Message; result.ErrorId = updateConfResult.ErrorId; } } catch (Exception e) { var rollbackResult = await DomainDao.DeleteDomainById(id); result.code = ServiceResultCode.UpdateSrsError; result.ErrorId = LogHelper.ErrorWithId(e.Message, e); result.Message = "更新Srs服务器失败,请联系管理员,错误代码:" + result.ErrorId; } } } else { result.code = ServiceResultCode.UnExceptError; } } catch (Exception e) { var rollbackResult = await DomainDao.DeleteDomainById(id); LogHelper.Error(e.Message, e); result.code = ServiceResultCode.UnExceptError; result.ErrorId = LogHelper.ErrorWithId(e.Message, e); result.Message = "发生未知错误,请联系管理员,错误代码:" + result.ErrorId; } return(result); }
//todo:UnFinish public async Task <ServiceResultMessage> UpdateDomain(string userId, string id, DomainModel model) { ServiceResultMessage result = new ServiceResultMessage(); try { //todo:1.保存设置 3.重新生成配置文件 4.上传配置文件 5.重启SRS服务 var daoresult = await DomainDao.UpdataDomain(id, new DomainEntity() { Id = model.Id, SourceDomain = model.SourceDomain, Description = model.Description, SourceType = (int)model.SourceType, StateType = (int)model.StateType, RtmpPlayDomain = model.RtmpPlayDomain, FlvPlayDomain = model.FlvPlayDomain, HlsPlayDomain = model.HlsPlayDomain, }); if (daoresult.Code == DaoResultCode.Success) { var secureAppendtask = DomainDao.AppendSecure(id, model?.SecurePolicyPair.Key); var transcodeAppendtask = DomainDao.AppendTranscode(id, model?.TranscodeIdPair?.Select(item => item.Key).ToList()); var resultsMessages = await Task.WhenAll(secureAppendtask, transcodeAppendtask); if (resultsMessages.Count(item => item.Code != DaoResultCode.Success) > 0) { result.code = ServiceResultCode.AppendItemError; } else { try { var updateConfResult = await ServerNodeService.UpdateSrsConf(userId, model.ServerPair.Key); if (updateConfResult.code != ServiceResultCode.Success) { var rollbackResult = await DomainDao.DeleteDomainById(id); result.code = ServiceResultCode.UpdateSrsError; result.Message = updateConfResult.Message; result.ErrorId = updateConfResult.ErrorId; } } catch (Exception e) { var rollbackResult = await DomainDao.DeleteDomainById(id); result.code = ServiceResultCode.UpdateSrsError; result.ErrorId = LogHelper.ErrorWithId(e.Message, e); result.Message = "更新Srs服务器失败,请联系管理员,错误代码:" + result.ErrorId; } } } else { result.code = ServiceResultCode.UnExceptError; } return(result); } catch (Exception e) { LogHelper.Error(e.Message, e); result.code = ServiceResultCode.UnExceptError; result.ErrorId = LogHelper.ErrorWithId(e.Message, e); result.Message = "发生未知错误,请联系管理员,错误代码:" + result.ErrorId; return(result); } }