예제 #1
0
        public GeneralHubResponseObject ProcessIncoming(System.Security.Principal.IPrincipal User, GeneralHubRequestObject Request)
        {
            GeneralHubResponseObject result = new GeneralHubResponseObject();

            if (!User.Identity.IsAuthenticated)
            {
                result.Success      = false;
                result.ErrorMessage = SignalRService.Localization.BaseResource.Get("MsgLoginFirst");
                return(result);
            }

            return(result);
        }
예제 #2
0
        public DTOs.GeneralHubResponseObject ProcessIncoming(DTOs.GeneralHubRequestObject Request)
        {
            GeneralHubResponseObject result = new GeneralHubResponseObject();

            var jconf     = JsonConvert.SerializeObject(Request.RequestData);
            var osRequest = JsonConvert.DeserializeObject <OrderServiceRequesObject>(jconf);



            var signalRGroup = serviceRepository.GetSignalRGroup(Request.ServiceId);

            switch (osRequest.Command)
            {
            case "StageProduct":
                var spconf = JsonConvert.SerializeObject(osRequest.CommandData);
                var spdata = JsonConvert.DeserializeObject <Hubs.ProductDataWrap>(spconf);
                var res    = StageProduct(spdata.Product, Request.ServiceId.ToString(), Request.ConnectionId);
                result.ResponseData = res;
                if (res.ErrorNumber == 0)
                {
                    result.Success = true;
                }
                else
                {
                    result.Success      = false;
                    result.ErrorMessage = res.ErrorMessage;
                }
                break;

            case "LoadProducts":
                var sconf        = JsonConvert.SerializeObject(osRequest.CommandData);
                var searchConfig = JsonConvert.DeserializeObject <Hubs.SearchConfigWrap>(sconf);
                var user         = userRepository.GetUser(Request.User.Identity.Name);
                var pres         = getProducts(user.Id, signalRGroup, searchConfig.SearchConfig);
                result.ResponseData = pres;
                break;

            case "RemoveProduct":
                var rmspconf = JsonConvert.SerializeObject(osRequest.CommandData);
                var rmspdata = JsonConvert.DeserializeObject <Hubs.ProductRemoveCommand>(rmspconf);
                RemoveProduct(rmspdata.Id, signalRGroup, Request.ConnectionId);
                break;

            default:
                result.Success      = false;
                result.ErrorMessage = "Unknown/invalid Command";
                break;
            }

            return(result);
        }
예제 #3
0
        public GeneralHubResponseObject CreateMiningRoom(System.Security.Principal.IPrincipal User, MiningRoomRequesObject mrRequest)
        {
            GeneralHubResponseObject result = new GeneralHubResponseObject();

            if (!User.Identity.IsAuthenticated)
            {
                result.Success      = false;
                result.ErrorMessage = SignalRService.Localization.BaseResource.Get("MsgLoginFirst");
                return(result);
            }
            string toParse = ((dynamic)mrRequest.CommandData).CoinType;

            if (!Enum.TryParse(toParse, out Enums.EnumMiningRoomType coinType))
            {
                result.ErrorMessage = "Invalid type given";
                result.Success      = false;
                return(result);
            }

            //if it's not this implementation, use coinimp
            switch (coinType)
            {
            case Enums.EnumMiningRoomType.CoinIMP:
                var roomImplementation = Factories.MiningRoomFactory.GetImplementation(Enums.EnumMiningRoomType.CoinIMP);
                return(roomImplementation.CreateMiningRoom(User, mrRequest));

            case Enums.EnumMiningRoomType.JSECoin:

                break;

            default:
                break;
            }



            string roomName = ((dynamic)mrRequest.CommandData).RoomName;
            string clientId = ((dynamic)mrRequest.CommandData).ClientId;
            string siteId   = ((dynamic)mrRequest.CommandData).SiteId;
            string subId    = ((dynamic)mrRequest.CommandData).SubId;

            var mrMinLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.MiningRoomNameMinLength);
            var MrMaxLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.MiningRoomNameMaxLength);

            if (roomName.Length > MrMaxLength || roomName.Length < mrMinLength)
            {
                result.ErrorMessage = "Name has to be from " + mrMinLength + " to " + MrMaxLength + " characters.";
                result.Success      = false;
                return(result);
            }

            bool isDangerous = Utils.ValidationUtils.IsDangerousString(roomName, out int badIdx);

            if (isDangerous)
            {
                result.ErrorMessage = "Invalid character in Name";
                result.Success      = false;
                return(result);
            }

            var clIdMinLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.JSECoinClientIdMinLength);
            var clIdMaxLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.JSECoinClientIdMaxLength);

            if (clientId.Length > clIdMaxLength || clientId.Length < clIdMinLength)
            {
                result.ErrorMessage = "ClientId has to be from " + clIdMinLength + " to " + clIdMaxLength + " characters.";
                result.Success      = false;
                return(result);
            }

            var user = userRepo.GetDbUser(User.Identity.Name);

            var newService = serviceRepo.GetNewService(Enums.EnumServiceType.CrowdMinerCoinIMP, user, roomName);

            var defaultMinerConf = minerRepo.GetDefaultMinerConfig();
            var newMinerConf     = minerRepo.GetNewMinerConfig(clientId, siteId, subId);

            newService.JSECoinMinerConfiguration = newMinerConf;

            var theRoom = miningRoomRepo.CreateRoom(newService);

            //    db.PredefinedMinerClients.Remove(predefClient);
            db.SaveChanges();

            result.Success      = true;
            result.ResponseData = theRoom.ServiceSetting.ServiceUrl;
            return(result);
        }
예제 #4
0
        public DTOs.GeneralHubResponseObject ProcessIncoming(DTOs.GeneralHubRequestObject Request)
        {
            GeneralHubResponseObject result = new GeneralHubResponseObject();

            var jconf     = JsonConvert.SerializeObject(Request.RequestData);
            var mrRequest = JsonConvert.DeserializeObject <MiningRoomRequesObject>(jconf);


            switch (mrRequest.Command)
            {
            case "GetRoomOverview":
                var overviewData = GetOverview(mrRequest.MiningRoomId);
                result.Success      = true;
                result.ResponseData = overviewData;
                break;


            case "ToggleControls":
                var dbMiningRoomx = db.MiningRooms.FirstOrDefault(ln => ln.Id == mrRequest.MiningRoomId);
                if (dbMiningRoomx.ServiceSetting.Owner == Request.User || Request.User.IsInRole("Admin"))
                {
                    bool isOn = bool.Parse(mrRequest.CommandData.ToString());
                    dbMiningRoomx.ShowControls = isOn;
                    db.SaveChanges();

                    var vm = GetOverview(mrRequest.MiningRoomId);
                    SendRoomInfoUpdateToClients(vm, dbMiningRoomx.ServiceSetting.ServiceUrl.ToLower());
                }
                break;

            case "CreateRoom":

                result = CreateMiningRoom(Request.User, mrRequest);
                break;

            case "UpdateDescription":
                if (!Request.User.Identity.IsAuthenticated)
                {
                    result.Success      = false;
                    result.ErrorMessage = SignalRService.Localization.BaseResource.Get("MsgLoginFirst");
                    break;
                }

                var dbRoom = db.MiningRooms.FirstOrDefault(ln => ln.Id == mrRequest.MiningRoomId);
                if (dbRoom == null)
                {
                    result.Success      = false;
                    result.ErrorMessage = "Invalid RoomId";
                }

                if (!Utils.ServiceUtils.IsServiceOwner(dbRoom.ServiceSetting.ID, Request.User.Identity.Name))
                {
                    if (!Request.User.IsInRole("Admin"))
                    {
                        result.Success      = false;
                        result.ErrorMessage = "No Permission";
                        break;
                    }
                }

                string contentData = ((dynamic)mrRequest.CommandData).Content;
                string cultureName = ((dynamic)mrRequest.CommandData).Culture;

                var localizationKey = GetDescriptionKeyForRoom(dbRoom.Id);
                Repositories.LocalizationRepository localizationRepo = new Repositories.LocalizationRepository(db);
                if (localizationRepo.Exists(localizationKey, cultureName))
                {
                    var dbItem = localizationRepo.Get(localizationKey, cultureName);
                    dbItem.Value = contentData;
                    localizationRepo.Update(dbItem, Request.User.Identity.Name);

                    Localization.UiResources.Instance.removeFromCache(localizationKey, cultureName);

                    result.Success = true;
                    result.Message = "description updated successfuly";
                }
                else
                {
                    localizationRepo.Create(new Models.LocalizationModel()
                    {
                        CreationDate      = DateTime.Now,
                        Archived          = false,
                        Culture           = cultureName,
                        Key               = localizationKey,
                        LastModDate       = DateTime.Now,
                        ModUser           = Request.User.Identity.Name,
                        TranslationStatus = Enums.EnumTranslationStatus.Undefined,
                        Value             = contentData,
                        WasHit            = false
                    }, Request.User.Identity.Name);

                    result.Success = true;
                    result.Message = "creating localizationItem success.";
                }

                break;

            default:
                break;
            }

            return(result);
        }
예제 #5
0
        public GeneralHubResponseObject CreateMiningRoom(System.Security.Principal.IPrincipal User, MiningRoomRequesObject mrRequest)
        {
            GeneralHubResponseObject result = new GeneralHubResponseObject();

            if (!User.Identity.IsAuthenticated)
            {
                result.Success      = false;
                result.ErrorMessage = SignalRService.Localization.BaseResource.Get("MsgLoginFirst");
                return(result);
            }

            string roomName = ((dynamic)mrRequest.CommandData).RoomName;
            string clientId = ((dynamic)mrRequest.CommandData).ClientId;

            var mrMinLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.MiningRoomNameMinLength);
            var MrMaxLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.MiningRoomNameMaxLength);

            if (roomName.Length > MrMaxLength || roomName.Length < mrMinLength)
            {
                result.ErrorMessage = "Name has to be from " + mrMinLength + " to " + MrMaxLength + " characters.";
                result.Success      = false;
                return(result);
            }

            bool isDangerous = Utils.ValidationUtils.IsDangerousString(roomName, out int badIdx);

            if (isDangerous)
            {
                result.ErrorMessage = "Invalid character in Name";
                result.Success      = false;
                return(result);
            }

            var clIdMinLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.CoinImpClientIdMinLength);
            var clIdMaxLength = (int)Utils.GeneralSettingsUtils.GetSettingValue(Enums.EnumGeneralSetting.CoinImpClientIdMaxLength);

            if (clientId.Length > clIdMaxLength || clientId.Length < clIdMinLength)
            {
                result.ErrorMessage = "Name has to be from " + clIdMinLength + " to " + clIdMaxLength + " characters.";
                result.Success      = false;
                return(result);
            }


            if (db.PredefinedMinerClients.Count() == 0)
            {
                result.ErrorMessage = "No more slots open, please come back later.";
                result.Success      = false;
                return(result);
            }

            var predefClient = db.PredefinedMinerClients.FirstOrDefault();

            var user = userRepo.GetDbUser(User.Identity.Name);

            var newService = serviceRepo.GetNewService(Enums.EnumServiceType.CrowdMinerCoinIMP, user, roomName);

            var defaultMinerConf = minerRepo.GetDefaultMinerConfig();
            var newMinerConf     = minerRepo.GetNewMinerConfig(clientId, predefClient.ScriptUrl, float.Parse(defaultMinerConf.Throttle), defaultMinerConf.StartDelayMs, defaultMinerConf.ReportStatusIntervalMs);

            newService.CoinIMPMinerConfiguration = newMinerConf;

            var theRoom = miningRoomRepo.CreateRoom(newService);

            //    db.PredefinedMinerClients.Remove(predefClient);
            db.SaveChanges();

            result.Success      = true;
            result.ResponseData = theRoom.ServiceSetting.ServiceUrl;
            return(result);
        }
예제 #6
0
        public DTOs.GeneralHubResponseObject ProcessIncoming(DTOs.GeneralHubRequestObject Request)
        {
            GeneralHubResponseObject result = new GeneralHubResponseObject();

            return(result);
        }