示例#1
0
        public async Task <IActionResult> Get()
        {
            // only system admins can access this functionality
            //if (!await _securityHelper.IsSysAdmin())
            //    return new HttpStatusCodeResult(403); // Forbidden

            List <SubscriptionView> rtnView = new List <SubscriptionView>();

            // get group managers
            List <DocumentDbRepositories.ScampSubscription> subList = await _settingsRepository.GetSubscriptions();

            // build the return set
            foreach (DocumentDbRepositories.ScampSubscription sub in subList)
            {
                // build summary view object
                SubscriptionView newSubscription = new SubscriptionView()
                {
                    Id   = sub.Id,
                    Name = sub.Name,
                    AzureSubscriptionId = sub.AzureSubscriptionID,
                    AzureAdminUser      = sub.AzureAdminUser
                };
                rtnView.Add(newSubscription);  // add it to the collection
            }

            // return list
            return(new ObjectResult(rtnView)
            {
                StatusCode = 200
            });
        }
示例#2
0
        //Create subscriptions
        public SubscriptionView CreateSub(double requestedPublishingInterval, uint requestedLifeTimeCount, uint requestedKeepAliveCount,
                                          uint MaxNotificationPerPublish, bool _PublishingEnabled, byte Priority)
        {
            SubscriptionView sub;
            Subscription     subscription = new Subscription()
            {
                KeepAliveCount             = requestedKeepAliveCount,
                LifetimeCount              = requestedLifeTimeCount,
                MaxNotificationsPerPublish = MaxNotificationPerPublish,
                Priority           = Priority,
                PublishingInterval = Convert.ToInt32(requestedPublishingInterval),
                PublishingEnabled  = _PublishingEnabled
            };

            subscription.StateChanged += OnStateChangedHandler;
            //Aggiunge la subscription al campo subscriptions della sessione
            session.AddSubscription(subscription);

            /*
             * La create comunica con il server e crea effettivamente la subscription, salvando nei campi current
             * i valori revised (PublishingInterval, KeepAliveCount, LifetimeCount)
             */
            subscription.Create();
            sub =
                new SubscriptionView(subscription.Id, subscription.CurrentPublishingInterval, subscription.CurrentLifetimeCount,
                                     subscription.CurrentKeepAliveCount, subscription.MaxNotificationsPerPublish,
                                     subscription.PublishingEnabled, subscription.CurrentPriority);
            return(sub);
        }
        public ActionResult Subscription()
        {
            SubscriptionView SuV = new SubscriptionView
            {
                Subscriptions = SF.GetAll(),
                json          = JObject.Parse(FT.LoadFile(Request.PhysicalApplicationPath + "/ServerData/Pages.json"))
            };

            return(View(SuV));
        }
示例#4
0
        private void DisplaySubscription()
        {
            SubscriptionView subView = client.GetSubscriptionViewById(subscriptionId);

            subscriptionIdentifier.Text = subView.SubscriptionID.ToString();
            publishInterval.Text        = subView.PublishingInterval.ToString();
            lifetimeCount.Text          = subView.LifeTimeCount.ToString();
            keepAliveCount.Text         = subView.KeepAliveCount.ToString();
            maxNotifications.Text       = subView.MaxNotificationPerPublish.ToString();
            priority.Text          = subView.Priority.ToString();
            publishingEnabled.Text = subView.PublishEnabled.ToString();
        }
示例#5
0
        /// <summary>
        /// Обновить список подписок
        /// </summary>
        private void UpdateSubscriptions()
        {
            SubscriptionsUnit       subs = _configuration.SubscriptionsUnit;
            List <SubscriptionView> rows = new List <SubscriptionView>();
            SubscriptionView        row  = new SubscriptionView();

            row.ParameterName  = "Потоков";
            row.ParameterValue = subs.Threads.ToString();
            rows.Add(row);

            for (int i = 0; i < subs.SubObjects.Count; i++)
            {
                ConfigurationUnit item = subs.SubObjects[i];
                row = new SubscriptionView {
                    ParameterName = "TCP-сервер", ParameterValue = item.Name
                };
                rows.Add(row);

                foreach (var(key, value) in item.Parameters)
                {
                    row = new SubscriptionView {
                        ParameterName = key, ParameterValue = value
                    };
                    rows.Add(row);
                }

                foreach (var(key, value) in item.SubObjects.SelectMany(subItem => subItem.Parameters))
                {
                    row = new SubscriptionView {
                        ParameterName = key, ParameterValue = value
                    };
                    rows.Add(row);
                }
            }

            dataSubsriptions.DataSource            = rows;
            dataSubsriptions.Columns[0].HeaderText = "Параметр";
            dataSubsriptions.Columns[0].Width      = 150;
            dataSubsriptions.Columns[1].HeaderText = "Значение";
            dataSubsriptions.Columns[1].Width      = 150;
        }
        public static void MapPseudoSkus(this SubscriptionView view, Subscription subscription)
        {
            if (subscription.SubscriptionItems == null)
            {
                return;
            }


            foreach (var subscriptionItem in subscription.SubscriptionItems)
            {
                if (subscriptionItem.PseudoSku == null)
                {
                    continue;
                }

                view.Items = new List <SubscriptionItemView>();
                view.Items.Add(new SubscriptionItemView
                {
                    PseudoSkuId       = subscriptionItem.PseudoSku.Id,
                    PseudoSkuName     = subscriptionItem.PseudoSku.Name,
                    PseudoSkuSizeName = subscriptionItem.PseudoSku.Size.Name
                });
            }
        }
        public WebServicesModule(FreepayMockContext db)
        {
            Get["/webservices/public/subscriptionmanager.asmx/AuthorizeSubscription3"] = parameters =>
            {
                int    subscriptionId = parameters.subscriptionId;
                string password       = parameters.password;
                int    amount         = parameters.amount;
                string orderId        = parameters.orderId;
                int    currencyAsInt  = parameters.currencyAsInt;

                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var subscription = db.Subscriptions.FirstOrDefault(x => x.SubscriptionId == subscriptionId);

                if (subscription == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = new TransactionRecord();
                transaction.SubscriptionId = subscriptionId;
                transaction.Amount         = amount;
                transaction.OrderId        = orderId;
                transaction.CurrencyAsInt  = currencyAsInt;
                transaction.DateCreated    = DateTime.Now;
                return("OK");
            };

            Get["/webservices/public/subscriptionmanager.asmx/QuerySubscription"] = parameters =>
            {
                int    subscriptionId = parameters.subscriptionId;
                string password       = parameters.password;

                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var subscription = db.Subscriptions.FirstOrDefault(x => x.SubscriptionId == subscriptionId);

                if (subscription == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var model = new SubscriptionView();
                model.Acquirer       = "NetsTeller";
                model.CardType       = subscription.CardType;
                model.Currency       = subscription.Currency;
                model.DateCreated    = subscription.DateCreated;
                model.ExpiryDate     = subscription.ExpiryDate;
                model.MerchantID     = merchant.MerchantId;
                model.MerchantNumber = merchant.MerchantId;
                model.OrderID        = model.OrderID;
                model.PANHash        = "";
                model.SourceIP       = subscription.SourceIP;
                model.SubscriptionID = subscriptionId;
                return(Response.AsXml(model));
            };


            //public static string GetApproveTransactionUrl(int transactionId, string password)
            Get["/webservices/public/management.asmx/ApproveTransaction"] = parameters =>
            {
                int    transactionId = parameters.transactionId;
                string password      = parameters.password;


                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = db.Transactions.FirstOrDefault(x => x.TransactionId == transactionId);

                if (transaction == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                transaction.IsAwaitingApproval = true;
                db.Transactions.Attach(transaction);
                db.SaveChanges();

                return(HttpStatusCode.OK);
            };


            //public static string GetCaptureUrl(int transactionId, string password)
            Get["/webservices/public/management.asmx/CaptureV2"] = parameters =>
            {
                int    transactionId = parameters.transactionId;
                string password      = parameters.password;


                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = db.Transactions.FirstOrDefault(x => x.TransactionId == transactionId);

                if (transaction == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                transaction.Captured   = true;
                transaction.CapturedAt = DateTime.Now;
                db.Transactions.Attach(transaction);
                db.SaveChanges();

                var model = new TransactionResult();
                model.AcquirerStatusCode = 123;
                model.IsSuccess          = true;

                return(Response.AsXml(model));
            };

            //public static string GetChangeCaptureAmountUrl(int transactionId, string password, int amount)
            Get["/webservices/public/management.asmx/ChangeCaptureAmount"] = parameters =>
            {
                int    transactionId = parameters.transactionId;
                string password      = parameters.password;
                int    amount        = parameters.amount;

                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = db.Transactions.FirstOrDefault(x => x.TransactionId == transactionId);

                if (transaction == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                transaction.Amount = amount;
                db.Transactions.Attach(transaction);
                db.SaveChanges();

                return(HttpStatusCode.OK);
            };

            //public static string GetCreditUrl(int transactionId, string password, int amount)
            Get["/webservices/public/management.asmx/CreditV2"] = parameters =>
            {
                int    transactionId = parameters.transactionId;
                string password      = parameters.password;
                int    amount        = parameters.amount;

                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = db.Transactions.FirstOrDefault(x => x.TransactionId == transactionId);

                if (transaction == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                transaction.Amount = amount;
                db.Transactions.Attach(transaction);
                db.SaveChanges();

                TransactionResult result = new TransactionResult();
                result.AcquirerStatusCode = 100;
                result.IsSuccess          = true;

                return(Response.AsXml(result));
            };

            //public static string GetDeleteTransactionUrl(int transactionId, string password)
            Get["/webservices/public/management.asmx/DeleteTransaction"] = parameters =>
            {
                int    transactionId = parameters.transactionId;
                string password      = parameters.password;


                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = db.Transactions.FirstOrDefault(x => x.TransactionId == transactionId);

                if (transaction == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                transaction.IsDeleted = true;
                db.Transactions.Attach(transaction);
                db.SaveChanges();

                return(HttpStatusCode.OK);
            };

            //public static string GetQueryTransactionUrl(int transactionId, string password)
            Get["/webservices/public/management.asmx/QueryTransaction"] = parameters =>
            {
                int    transactionId = parameters.transactionId;
                string password      = parameters.password;

                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = db.Transactions.FirstOrDefault(x => x.TransactionId == transactionId);

                if (transaction == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                TransactionView model = new TransactionView();
                model.Acquirer            = "NetsTeller";
                model.MerchantNumber      = merchant.MerchantId;
                model.TransactionID       = transaction.TransactionId;
                model.AuthorizationAmount = transaction.AuthorizationAmount;
                model.CaptureAmount       = transaction.CaptureAmount;
                model.CaptureErrorCode    = transaction.CaptureErrorCode;
                model.CardType            = transaction.CardType;
                model.Currency            = transaction.CurrencyAsInt;
                model.DateAuthorized      = transaction.DateAuthorized.GetValueOrDefault();
                model.DateCaptured        = transaction.DateCaptured.GetValueOrDefault();
                model.DateCreated         = transaction.DateCreated;
                model.DateEarliestCapture = transaction.DateEarliestCapture;
                model.IsAwaitingApproval  = transaction.IsAwaitingApproval;
                model.IsCaptured          = transaction.IsCaptured;
                model.MerchantID          = transaction.MerchantId;
                model.OrderID             = transaction.OrderId;
                model.PANHash             = transaction.PANHash;
                model.SourceIP            = transaction.SourceIp;
                return("OK");
            };

            //public static string GetSetEarlistCaptureUrl(int transactionId, string password, DateTime earliestCapture)
            Get["/webservices/public/management.asmx/SetEarliestCapture"] = parameters =>
            {
                int      transactionId   = parameters.transactionId;
                DateTime earliestCapture = parameters.earliestCapture;
                string   password        = parameters.password;

                var merchant = db.Merchants.FirstOrDefault(x => x.Password == password);

                if (merchant == null)
                {
                    return(HttpStatusCode.InternalServerError);
                }

                var transaction = db.Transactions.FirstOrDefault(x => x.TransactionId == transactionId);

                if (transaction == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                transaction.DateEarliestCapture = earliestCapture;

                return(HttpStatusCode.OK);
            };

            //public static string GetWithholdForApprovalUrl(int transactionId, string password)
            Get["/webservices/public/management.asmx/WithholdForApproval"] = parameters =>
            {
                int    transactionId = parameters.transactionId;
                string password      = parameters.password;



                return("Ok");
            };
        }
        void ReleaseDesignerOutlets()
        {
            if (EmailLabel != null)
            {
                EmailLabel.Dispose();
                EmailLabel = null;
            }

            if (WorkspaceLabel != null)
            {
                WorkspaceLabel.Dispose();
                WorkspaceLabel = null;
            }

            if (PlanLabel != null)
            {
                PlanLabel.Dispose();
                PlanLabel = null;
            }

            if (TwentyFourHourClockSwitch != null)
            {
                TwentyFourHourClockSwitch.Dispose();
                TwentyFourHourClockSwitch = null;
            }

            if (AddMobileTagSwitch != null)
            {
                AddMobileTagSwitch.Dispose();
                AddMobileTagSwitch = null;
            }

            if (FeedbackView != null)
            {
                FeedbackView.Dispose();
                FeedbackView = null;
            }

            if (RateView != null)
            {
                RateView.Dispose();
                RateView = null;
            }

            if (UpdateView != null)
            {
                UpdateView.Dispose();
                UpdateView = null;
            }

            if (HelpView != null)
            {
                HelpView.Dispose();
                HelpView = null;
            }

            if (VersionLabel != null)
            {
                VersionLabel.Dispose();
                VersionLabel = null;
            }

            if (AddMobileTagView != null)
            {
                AddMobileTagView.Dispose();
                AddMobileTagView = null;
            }

            if (TwentyFourHourClockView != null)
            {
                TwentyFourHourClockView.Dispose();
                TwentyFourHourClockView = null;
            }

            if (SubscriptionView != null)
            {
                SubscriptionView.Dispose();
                SubscriptionView = null;
            }

            if (WorkspaceView != null)
            {
                WorkspaceView.Dispose();
                WorkspaceView = null;
            }

            if (EmailView != null)
            {
                EmailView.Dispose();
                EmailView = null;
            }

            if (LoggingOutIndicator != null)
            {
                LoggingOutIndicator.Dispose();
                LoggingOutIndicator = null;
            }

            if (LoggingOutLabel != null)
            {
                LoggingOutLabel.Dispose();
                LoggingOutLabel = null;
            }

            if (LoggingOutView != null)
            {
                LoggingOutView.Dispose();
                LoggingOutView = null;
            }

            if (LogoutButton != null)
            {
                LogoutButton.Dispose();
                LogoutButton = null;
            }

            if (SyncedIcon != null)
            {
                SyncedIcon.Dispose();
                SyncedIcon = null;
            }

            if (SyncedLabel != null)
            {
                SyncedLabel.Dispose();
                SyncedLabel = null;
            }

            if (SyncedView != null)
            {
                SyncedView.Dispose();
                SyncedView = null;
            }

            if (SyncingIndicator != null)
            {
                SyncingIndicator.Dispose();
                SyncingIndicator = null;
            }

            if (SyncingLabel != null)
            {
                SyncingLabel.Dispose();
                SyncingLabel = null;
            }

            if (SyncingView != null)
            {
                SyncingView.Dispose();
                SyncingView = null;
            }
        }
示例#9
0
        private async void OnCreateSubscription(object sender, EventArgs e)
        {
            Device.BeginInvokeOnMainThread(() =>
            {
                UserDialogs.Instance.ShowLoading();
            });

            Double reqPubInterval;
            uint   reqLifeTimeCount;
            uint   reqMaxKeepAliveCount;
            uint   maxNotPerPublish;
            byte   priority;

            try
            {
                if (string.IsNullOrWhiteSpace(RequestedPublishingInterval.Text))
                {
                    throw new EmptyEntryException("Empty Requested Publish Interval Entry!");
                }
                try
                {
                    reqPubInterval = Convert.ToDouble(RequestedPublishingInterval.Text);
                }
                catch (FormatException p)
                {
                    throw new FormatException("Request Publish Format not valid!", p);
                }

                if (string.IsNullOrWhiteSpace(RequestedLifetimeCount.Text))
                {
                    throw new EmptyEntryException("Empty Request Lifetime Count Empty!");
                }
                try
                {
                    reqLifeTimeCount = Convert.ToUInt32(RequestedLifetimeCount.Text);
                }
                catch (FormatException p)
                {
                    throw new FormatException("Request Lifetime Count Format not valid!", p);
                }

                if (string.IsNullOrWhiteSpace(RequestedMaxKeepAliveCount.Text))
                {
                    throw new EmptyEntryException("Empty Request Max Keep Alive Count Entry!");
                }
                try
                {
                    reqMaxKeepAliveCount = Convert.ToUInt32(RequestedMaxKeepAliveCount.Text);
                }
                catch (FormatException p)
                {
                    throw new FormatException("Request Max Keep Alive Count Format non valid!", p);
                }

                if (string.IsNullOrWhiteSpace(MaxNotificationPerPublish.Text))
                {
                    throw new EmptyEntryException("Empty Max Notification Per Publish Entry !");
                }
                try {
                    maxNotPerPublish = Convert.ToUInt32(MaxNotificationPerPublish.Text);
                }
                catch (FormatException p)
                {
                    throw new FormatException("Max Notification Per Publish Format not valid!", p);
                }

                if (string.IsNullOrWhiteSpace(Priority.Text))
                {
                    throw new EmptyEntryException("Empty Priority Entry!");
                }
                try
                {
                    priority = Convert.ToByte(Priority.Text);
                }
                catch (FormatException p)
                {
                    throw new FormatException("Priority Format not valid!", p);
                }

                SubscriptionView subView = await Task.Run(() => client.CreateSub(reqPubInterval, reqLifeTimeCount, reqMaxKeepAliveCount, maxNotPerPublish, true, priority));

                Device.BeginInvokeOnMainThread(() =>
                {
                    UserDialogs.Instance.HideLoading();
                });

                if (subView.PublishingInterval != reqPubInterval || subView.KeepAliveCount != reqMaxKeepAliveCount || subView.LifeTimeCount != reqLifeTimeCount)
                {
                    await DisplayAlert("Info", "Subscription created successfully with revised parameters.", "ok");
                }
                else
                {
                    await DisplayAlert("Info", "Subscription created successfully with requested parameters.", "ok");
                }

                ContentPage detailSubPage = new DetailSubscriptionPage(client, subView.SubscriptionID);
                detailSubPage.Title = "Subscription Details";

                await Navigation.PushAsync(detailSubPage);

                Navigation.RemovePage(this);
            }
            catch (EmptyEntryException p)
            {
                await DisplayAlert("Error", p.Message, "Ok");
            }
            catch (FormatException p)
            {
                await DisplayAlert("Error", p.Message, "Ok");
            }
        }
示例#10
0
        public async Task <IActionResult> Upsert([FromBody] SubscriptionView subscription)
        {
            ScampSubscription tmpSub      = new ScampSubscription();
            string            tmpPassword = string.Empty;

            // only system admins can access this functionality
            if (!await _securityHelper.IsSysAdmin())
            {
                return(new HttpStatusCodeResult(403)); // Forbidden
            }
            //validate request
            // if doing update, subscription must already exist
            if (!string.IsNullOrEmpty(subscription.Id))
            {
                tmpSub = await _settingsRepository.GetSubscription(subscription.Id);

                if (tmpSub == null)
                {
                    return new ObjectResult("specified subscription does not exist")
                           {
                               StatusCode = 400
                           }
                }
                ;
            }
            // TODO: additional validation
            // https://github.com/SimpleCloudManagerProject/SCAMP/issues/192
            //      error returned should indicate all fields with issues

            // map request to database object
            tmpSub.Name = subscription.Name;
            tmpSub.AzureSubscriptionID = subscription.AzureSubscriptionId;
            tmpSub.AzureAdminUser      = subscription.AzureAdminUser;
            bool doingAdd = string.IsNullOrEmpty(subscription.Id);

            // if doing add, use password provided
            if (doingAdd)
            {
                tmpPassword = subscription.AzureAdminPassword;
            }
            else // else, doing update, only change password if it was provided
            {
                if (!string.IsNullOrEmpty(subscription.AzureAdminPassword)) // if a password was specified
                {
                    tmpPassword = subscription.AzureAdminPassword; // update it
                }
            }

            // save insert/update subscription
            await _settingsRepository.UpsertSubscription(tmpSub);

            // If we have a new/updated password, save it to keyvault
            try
            {
                if (!string.IsNullOrEmpty(tmpPassword))
                {
                    await _keyRepository.UpsertSecret(tmpSub.Id, "password", tmpPassword);
                }
            }
            catch (Exception ex)
            {
                if (doingAdd)
                {
                    await _settingsRepository.DeleteSubscription(tmpSub); // key vault failed, remove added subscription
                }
                else
                {
                    throw new Exception("Failed to update password", ex);
                }
            }

            // return list
            return(new ObjectResult(null)
            {
                StatusCode = 200
            });
        }