public void Execute()
        {
            if (IsActiveAccount() == false)
            {
                throw new Exceptions.AccountNotActiveException("To generate a new open vpn cert you first activate your account by making a payment.");
            }

            ActionLog.Log_BackgroundThread(string.Format("OpenVpn Generate Command Start - {0}", vpnData.Description),
                                           this.userData.Id);

            ulong num = 0;

            using (var db = InitializeSettings.DbFactory)
            {
                db.Open();
                using (var txn = db.BeginTransaction())
                {
                    num = Counters.GetSetVpnNum(txn, db);
                    txn.Commit();
                }
            }

            string randomString = Guid.NewGuid().ToString().Split('-')[0];
            string certName     = string.Format("{0}{1}-{2}", num, randomString, userData.Email);

            // First things first, revoke any old certificates on the server
            var revoke = new CertsOpenVpnRevokeCommand(userData.Id, sshClientRevokeServer);

            revoke.Execute();

            // now generate the new certificate
            CreateUserCerts(certName);

            ActionLog.Log_BackgroundThread("OpenVpn Generate Command Finished", this.userData.Id);
        }
        public void Execute()
        {
            string certName = "";

            LibPoco.VpnServers vpnData = null;
            using (var db = Setup.DbFactory)
            {
                db.Open();
                var certData = db.Query <LibPoco.UserOpenVpnCerts>("SELECT * FROM UserOpenVpnCerts WHERE UserId=@UserId",
                                                                   new { UserId = userData.Id });
                if (certData.Count() == 1)
                {
                    certName = certData.First().CertName;
                    vpnData  = db.Get <LibPoco.VpnServers>(certData.First().VpnServersId);
                }
                else if (certData.Count() >= 1)
                {
                    throw new InvalidDataException("Invalid data in the UserOpenVpnCerts for user " + userData.Id);
                }
            }

            if (certName == "")
            {
                return;
            }

            ActionLog.Log_BackgroundThread("OpenVpn Revoke Start", this.userData.Id);

            RevokeUserCert(vpnData.Address, certName);

            ActionLog.Log_BackgroundThread("OpenVpn Revoke Finished", this.userData.Id);
        }