/// <summary>
        /// Moves given <paramref name="entityToMove"/> before given <paramref name="entityToMoveBefore"/>.
        /// </summary>
        /// <typeparam name="TEntity">Moved entity type.</typeparam>
        /// <param name="connection">Tik connection used to move entity.</param>
        /// <param name="entityToMove">Entity to be moved.</param>
        /// <param name="entityToMoveBefore">Entity before which is given <paramref name="entityToMove"/> moved.</param>
        public static void Move <TEntity>(this ITikConnection connection, TEntity entityToMove, TEntity entityToMoveBefore)
        {
            var metadata = TikEntityMetadataCache.GetMetadata <TEntity>();

            EnsureSupportsOrdering(metadata);
            EnsureHasIdProperty(metadata);

            string idToMove       = metadata.IdProperty.GetEntityValue(entityToMove);
            string idToMoveBefore = entityToMoveBefore != null?metadata.IdProperty.GetEntityValue(entityToMoveBefore) : null;

            ITikCommand cmd = connection.CreateCommandAndParameters(metadata.EntityPath + "/move", TikCommandParameterFormat.NameValue,
                                                                    "numbers", idToMove);

            if (entityToMoveBefore != null)
            {
                cmd.AddParameter("destination", idToMoveBefore);
            }

            cmd.ExecuteNonQuery();
        }
示例#2
0
        public ActionResult UpdateMikrotikUser(int ClientDetailsID, int MikrotikID)
        {
            ///first check mikrotik is active or not *******************************************************
            ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api);

            Mikrotik mk = db.Mikrotik.Find(MikrotikID);

            try
            {
                if ((bool)Session["MikrotikOptionEnable"])
                {
                    var clientDetails = db.ClientDetails.Where(s => s.ClientDetailsID == ClientDetailsID).FirstOrDefault();
                    //checking new mikrotik is enable or not
                    connection = ConnectionFactory.OpenConnection(TikConnectionType.Api, mk.RealIP, 8728, mk.MikUserName, mk.MikPassword);

                    // now checking if old client details mikrotik is null then direcet try to insert into mikrotik.
                    if (clientDetails.Mikrotik == null)
                    {
                        clientDetails.MikrotikID      = MikrotikID;
                        db.Entry(clientDetails).State = EntityState.Modified;
                        db.SaveChanges();

                        connection.CreateCommandAndParameters("/ppp/secret/add", "name", clientDetails.LoginName, "password", clientDetails.Password, "profile", clientDetails.Package.PackageName).ExecuteNonQuery();
                    }
                    else
                    {
                        connection = ConnectionFactory.OpenConnection(TikConnectionType.Api, clientDetails.Mikrotik.RealIP, 8728, clientDetails.Mikrotik.MikUserName, clientDetails.Mikrotik.MikPassword);
                        if (clientDetails.MikrotikID == mk.MikrotikID)
                        {
                            // connection.CreateCommandAndParameters("/ppp/secret/set", ".id",clientDetails.LoginName,).ExecuteNonQuery();
                        }
                        else if (clientDetails.MikrotikID != mk.MikrotikID)
                        {
                            //check if new mikrotik has this name then return
                            connection = ConnectionFactory.OpenConnection(TikConnectionType.Api, mk.RealIP, 8728, mk.MikUserName, mk.MikPassword);
                            var checkClientLoginNameExistInNewMikrotik = connection.CreateCommandAndParameters("/ppp/secret/print", "name", clientDetails.LoginName).ExecuteList();
                            if (checkClientLoginNameExistInNewMikrotik.Count() > 0)
                            {
                                return(Json(new { Success = false, MikrotikFailed = true, Message = "secret name already exist in " + mk.MikName + " mikrotik." }, JsonRequestBehavior.AllowGet));
                            }

                            connection.CreateCommandAndParameters("/ppp/secret/remove", ".id", clientDetails.LoginName).ExecuteNonQuery();
                            connection.CreateCommandAndParameters("/ppp/secret/add", "name", clientDetails.LoginName, "password", clientDetails.Password, "service", "pppoe", "profile", clientDetails.Package.PackageName).ExecuteNonQuery();
                        }
                    }



                    //string loginName = db.ClientDetails.Find(ClientClientDetails.ClientDetailsID).LoginName;

                    //var oldIDExistOrNot = connection.CreateCommandAndParameters("/ppp/secret/print", "name", loginName).ExecuteList();
                    ////var oldIDExistOrNot1 = connection.CreateCommandAndParameters("/ppp/secret/print", "name", loginName).ExecuteScalar();
                    ////var oldIDExistOrNot2 = connection.CreateCommandAndParameters("/ppp/secret/print", "name", loginName).ExecuteSingleRow();
                    //if (oldIDExistOrNot.Count() < 1)
                    //{
                    //    return Json(new { Success = false, MikrotikFailed = true, Message = "Old login name: " + loginName + " was not exist in Mikrotik. Please Assign First." },
                    //        JsonRequestBehavior.AllowGet);
                    //}
                }
            }
            catch (Exception ex)
            {
                return(Json(new
                {
                    Success = false,
                    MikrotikFailed = true,
                    Message = ex.Message
                }, JsonRequestBehavior.AllowGet));
            }


            try
            {
                var JSON = Json(new { UpdateSuccess = true, ClientDetailsID = ClientDetailsID, MikrotikName = mk.MikName }, JsonRequestBehavior.AllowGet);
                JSON.MaxJsonLength = int.MaxValue;
                return(JSON);
            }
            catch
            {
                return(Json(new { UpdateSuccess = false, PackageUpdateInformation = "" }, JsonRequestBehavior.AllowGet));
            }
        }
示例#3
0
 internal static void RemoveUserInMikrotik(ITikConnection connection, ClientDetails clientDetails)
 {
     connection.CreateCommandAndParameters("/ppp/secret/remove", ".id", clientDetails.LoginName).ExecuteNonQuery();
 }
示例#4
0
 /// <summary>
 /// Check status of a given busy dynamic lease, and free it in case of no response
 /// </summary>
 public void CheckStatus(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-server/lease/check-status",
                                           TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#5
0
 /// <summary>
 /// Convert a dynamic lease to a static one
 /// </summary>
 public void ResetAlert(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-server/alert/reset-alert",
                                           TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#6
0
        //[ValidateAntiForgeryToken]
        public ActionResult UpdatePackage(Package PackageInfoForUpdate)
        {
            Package package_Check = db.Package.Where(s => s.PackageID != PackageInfoForUpdate.PackageID && s.PackageName.ToLower() == PackageInfoForUpdate.PackageName.Trim().ToLower() && s.PackageForMyOrResellerUser == PackageInfoForUpdate.PackageForMyOrResellerUser).FirstOrDefault();

            if (package_Check != null)
            {
                return(Json(new { UpdateSuccess = false, AlreadyInsert = true }, JsonRequestBehavior.AllowGet));
            }

            if ((bool)Session["MikrotikOptionEnable"])
            {
                Mikrotik mikrotik   = db.Mikrotik.Find(PackageInfoForUpdate.MikrotikID);
                var      ipPoolName = db.IPPool.Find(PackageInfoForUpdate.IPPoolID).PoolName;
                var      oldPackageInfoForUpdate = db.Package.Find(PackageInfoForUpdate.PackageID);

                PackageInfoForUpdate.OldPackageName = oldPackageInfoForUpdate.PackageName;
                try
                {//ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api);
                    ITikConnection connection = ConnectionFactory.OpenConnection(TikConnectionType.Api, mikrotik.RealIP, 8728, mikrotik.MikUserName, mikrotik.MikPassword);
                    connection.CreateCommandAndParameters("/ppp/profile/set", ".id", oldPackageInfoForUpdate.PackageName, "name", PackageInfoForUpdate.PackageName.Trim(), "local-address", PackageInfoForUpdate.LocalAddress, "remote-address", ipPoolName, "incoming-filter", "mypppclients").ExecuteNonQuery();

                    //add profile
                    //var profileadd = connection.CreateCommandAndParameters("ppp/profile/add", "name", "test1", "local-address", "10.0.0.1", "remote-address", "sp", "incoming-filter", "mypppclients");
                    //profileadd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    return(Json(new { Success = false, MikrotikFailed = true, Message = ex.Message }, JsonRequestBehavior.AllowGet));
                }
            }

            try
            {
                var Package = db.Package.Where(s => s.PackageID == PackageInfoForUpdate.PackageID);
                PackageInfoForUpdate.CreatedBy   = Package.FirstOrDefault().CreatedBy;
                PackageInfoForUpdate.CreatedDate = Package.FirstOrDefault().CreatedDate;
                PackageInfoForUpdate.UpdateBy    = "Hasan";
                PackageInfoForUpdate.UpdateDate  = AppUtils.GetDateTimeNow();

                db.Entry(Package.SingleOrDefault()).CurrentValues.SetValues(PackageInfoForUpdate);
                db.SaveChanges();

                var package =
                    new CustomPackage()
                {
                    PackageID     = PackageInfoForUpdate.PackageID,
                    PackageName   = PackageInfoForUpdate.PackageName,
                    BandWith      = PackageInfoForUpdate.BandWith,
                    PackagePrice  = PackageInfoForUpdate.PackagePrice.ToString(),
                    Client        = db.ClientDetails.Where(ss => ss.PackageID == PackageInfoForUpdate.PackageID).Count(),
                    IPPoolName    = (PackageInfoForUpdate.IPPoolID != null) ? db.IPPool.Find(PackageInfoForUpdate.IPPoolID).PoolName : "",
                    LocalAddress  = PackageInfoForUpdate.LocalAddress,
                    MikrotikName  = db.Mikrotik.Find(PackageInfoForUpdate.MikrotikID).MikName,
                    PackageUpdate = ISP_ManagementSystemModel.AppUtils.HasAccessInTheList(ISP_ManagementSystemModel.AppUtils.Update_Package) ? true : false,
                };
                var JSON = Json(new { UpdateSuccess = true, PackageUpdateInformation = package }, JsonRequestBehavior.AllowGet);
                JSON.MaxJsonLength = int.MaxValue;
                return(JSON);
            }
            catch
            {
                return(Json(new { UpdateSuccess = false, PackageUpdateInformation = "" }, JsonRequestBehavior.AllowGet));
            }
        }
示例#7
0
 /// <summary>
 /// Renew current leases. If the renew operation was not successful, client tries to reinitialize lease (i.e. it starts lease request procedure (rebind) as if it had not received an IP address yet)
 /// </summary>
 public void Renew(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-client/renew",
                                           TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#8
0
 internal static void CreateUserInMikrotikDuringUpdate(ITikConnection connection, ClientDetails clientDetails, ClientLineStatus clientLineStatus)
 {
     connection.CreateCommandAndParameters("/ppp/secret/add", "name", clientDetails.LoginName, "password", clientDetails.Password, "service", MikrotikService, "profile", db.Package.Find(clientLineStatus.PackageID).PackageName.Trim() /*,"disabled", "yes"*/).ExecuteNonQuery();
 }
示例#9
0
 internal static void CreateUserInMikrotikByPackageID(ITikConnection connection, ClientDetails clientDetails, int packageID)
 {
     connection.CreateCommandAndParameters("/ppp/secret/add", "name", clientDetails.LoginName, "password", clientDetails.Password, "service", MikrotikService, "profile", db.Package.Find(packageID).PackageName.Trim()).ExecuteNonQuery();
 }
示例#10
0
        internal static /*ITikReSentence*/ int CountNumbeOfUserInActive(ITikConnection connection, ClientDetails clientDetails)
        {
            var countLoginName = connection.CreateCommandAndParameters("/ppp/active/print", "name", clientDetails.LoginName).ExecuteList();

            return(countLoginName.Count() > 0 ? countLoginName.Count() : 0);
        }
示例#11
0
        internal static /*ITikReSentence*/ bool UserIDExistOrNotInMikrotik(ITikConnection connection, ClientDetails clientDetails)
        {
            var checkUserExistOrNot = connection.CreateCommandAndParameters("/ppp/secret/print", "name", clientDetails.LoginName).ExecuteList();

            return(checkUserExistOrNot.Count() > 0 ? true : false);
        }
示例#12
0
 internal static void UpdateMikrotikUserBySingleSingleData(ITikConnection connection, string LoginName, string password, int PackageID)
 {
     connection.CreateCommandAndParameters("/ppp/secret/set", ".id", LoginName, "name", LoginName, "password", password, /*"service", MikrotikService,*/ "profile", db.Package.Find(PackageID).PackageName.Trim()).ExecuteNonQuery();
 }
示例#13
0
 internal static void SetStatusOfUserInMikrotik(ITikConnection connection, string ClientLoginName, string status)
 {
     connection.CreateCommandAndParameters("/ppp/secret/set", "disabled", status.Trim(), TikSpecialProperties.Id, ClientLoginName).ExecuteNonQuery();
 }
示例#14
0
 internal static void RemoveUserInMikrotik(ITikConnection connection, string UserName)
 {
     connection.CreateCommandAndParameters("/ppp/secret/remove", ".id", UserName).ExecuteNonQuery();
 }
示例#15
0
 /// <summary>
 /// Check status of a given busy dynamic lease, and free it in case of no response
 /// </summary>
 public void CheckStatus(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-server/lease/check-status",
         TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#16
0
 //internal static void CreateUserInMikrotikByPackageAndStatus(ITikConnection connection, ClientDetails clientDetails, int packageID, int status)
 //{
 //    connection.CreateCommandAndParameters("/ppp/secret/add", "name", clientDetails.LoginName, "password", clientDetails.Password, "service", MikrotikService, "profile", db.Package.Find(packageID).PackageName.Trim(), "disabled", status == 5 ? AppUtils.MakeUserDisabledInMikrotik : AppUtils.MakeUserEnableInMikrotik).ExecuteNonQuery();
 //}
 internal static void UpdateUserInMikrotikWithPackageInformation(ITikConnection connection, ClientDetails oldClientDetails, ClientDetails newClientDetails, ClientLineStatus clientLineStatus)
 {
     connection.CreateCommandAndParameters("/ppp/secret/set", ".id", oldClientDetails.LoginName, "name", newClientDetails.LoginName, "password", newClientDetails.Password /*, "service", MikrotikService*/, "profile", db.Package.Find(clientLineStatus.PackageID).PackageName.Trim()).ExecuteNonQuery();
 }
示例#17
0
 /// <summary>
 /// Convert a dynamic lease to a static one
 /// </summary>
 public void MakeStatic(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-server/lease/make-static",
         TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#18
0
 internal static void UpdateUserInMikrotikWithPackageAndStatusInformation(ITikConnection connection, ClientDetails oldClientDetails, ClientDetails newClientDetails, ClientLineStatus ClientClientLineStatus, bool?chkStatusFromRunningMonth, bool?chkPackageFromRunningMonth)
 {
     connection.CreateCommandAndParameters("/ppp/secret/set", ".id", oldClientDetails.LoginName, "name", newClientDetails.LoginName, "password", newClientDetails.Password /*, "service", MikrotikService*/, "profile", db.Package.Find(ClientClientLineStatus.PackageID).PackageName.Trim(), "disabled", ClientClientLineStatus.LineStatusID == AppUtils.LineIsLock ? AppUtils.MakeUserDisabledInMikrotik : AppUtils.MakeUserEnableInMikrotik).ExecuteNonQuery();
 }
示例#19
0
        public JsonResult InsertPackage(Package Package)
        {
            Package package_Check = package_Check = db.Package.Where(s => s.PackageName.ToLower() == Package.PackageName.Trim().ToLower() && s.PackageForMyOrResellerUser == Package.PackageForMyOrResellerUser).FirstOrDefault();

            if (package_Check != null)
            {
                return(Json(new { SuccessInsert = false, AlreadyInsert = true }, JsonRequestBehavior.AllowGet));
            }

            if ((bool)Session["MikrotikOptionEnable"])
            {
                Mikrotik mikrotik   = db.Mikrotik.Find(Package.MikrotikID);
                var      ipPoolName = db.IPPool.Find(Package.IPPoolID).PoolName;

                try
                {//ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api);
                    ITikConnection connection = ConnectionFactory.OpenConnection(TikConnectionType.Api, mikrotik.RealIP, 8728, mikrotik.MikUserName, mikrotik.MikPassword);
                    connection.CreateCommandAndParameters("/ppp/profile/add", "name", Package.PackageName.Trim(), "local-address", Package.LocalAddress, "remote-address", ipPoolName, "incoming-filter", "mypppclients").ExecuteNonQuery();

                    //add profile
                    //var profileadd = connection.CreateCommandAndParameters("ppp/profile/add", "name", "test1", "local-address", "10.0.0.1", "remote-address", "sp", "incoming-filter", "mypppclients");
                    //profileadd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    return(Json(new { Success = false, MikrotikFailed = true, Message = ex.Message }, JsonRequestBehavior.AllowGet));
                }
            }
            int packageCount = db.Package.Count();

            try
            {
                Package.CreatedBy   = AppUtils.GetLoginEmployeeName();
                Package.CreatedDate = AppUtils.GetDateTimeNow();

                db.Package.Add(Package);
                db.SaveChanges();
                var PoolName = db.IPPool.Where(s => s.IPPoolID == Package.IPPoolID).FirstOrDefault().PoolName;
                //var packageInsertInformation = AppUtils.IgnoreCircularLoop(PackageInfo);

                CustomPackage PackageInfo = new CustomPackage
                {
                    PackageID     = Package.PackageID,
                    PackageName   = Package.PackageName,
                    BandWith      = Package.BandWith,
                    PackagePrice  = Package.PackagePrice.ToString(),
                    Client        = db.ClientDetails.Where(ss => ss.PackageID == Package.PackageID).Count(),
                    IPPoolName    = (Package.IPPoolID != null) ? Package.IpPool.PoolName : "",
                    LocalAddress  = Package.LocalAddress,
                    MikrotikName  = db.Mikrotik.Find(Package.MikrotikID).MikName,
                    PackageUpdate = ISP_ManagementSystemModel.AppUtils.HasAccessInTheList(ISP_ManagementSystemModel.AppUtils.Update_Package) ? true : false,
                };


                return(Json(new { SuccessInsert = true, PackageInformation = PackageInfo, packageCount = packageCount }, JsonRequestBehavior.AllowGet));
            }
            catch
            {
                return(Json(new { SuccessInsert = false }, JsonRequestBehavior.AllowGet));
            }



            //return Json(new { SuccessInsert = false }, JsonRequestBehavior.AllowGet);
        }
示例#20
0
 internal static void UpdateUserInMikrotikWithOutPackageInformation(ITikConnection connection, ClientDetails oldClientDetails, ClientDetails newClientDetails)
 {
     connection.CreateCommandAndParameters("/ppp/secret/set", ".id", oldClientDetails.LoginName, "name", newClientDetails.LoginName, "password", newClientDetails.Password /*, "service", MikrotikService*/).ExecuteNonQuery();
 }
示例#21
0
 /// <summary>
 /// Convert a dynamic lease to a static one
 /// </summary>
 public void ResetAlert(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-server/alert/reset-alert",
         TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#22
0
 /// <summary>
 /// Reset counters
 /// </summary>
 public void ResetCounters(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-relay/reset-counters",
                                           TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#23
0
 /// <summary>
 /// Convert a dynamic lease to a static one
 /// </summary>
 public void MakeStatic(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-server/lease/make-static",
                                           TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#24
0
 /// <summary>
 /// Renew current leases. If the renew operation was not successful, client tries to reinitialize lease (i.e. it starts lease request procedure (rebind) as if it had not received an IP address yet)
 /// </summary>
 public void Renew(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-client/renew",
         TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }
示例#25
0
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                using (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api))
                {
                    connection.Open(HOST, USER, PASS);

                    int n = 1;

                    var natRule = connection.CreateCommandAndParameters("/ip/route/print", "dst-address", route).ExecuteList();
                    var value   = natRule.Count();
                    if (value == n)
                    {
                        Color colorOn_n = Color.Blue;
                        label1.ForeColor = colorOn_n;
                        label1.Text      = ("Сервер уже включен.");
                        return;
                    }
                }
            }
            catch
            {
                Color colorOff_n = Color.Red;
                label1.ForeColor = colorOff_n;
                label1.Text      = ("Возникло исключение!\nИмя сервера или порт \nне доступты!");
            }

            try
            {
                using (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api))
                {
                    connection.Open(HOST, USER, PASS);

                    int n = 1;

                    var natRule = connection.CreateCommandAndParameters("/ip/route/print", "dst-address", route).ExecuteList();
                    var value   = natRule.Count();
                    if (value == n)
                    {
                        Color colorOn_n = Color.Blue;
                        label1.ForeColor = colorOn_n;
                        label1.Text      = ("Сервер уже включен.");
                        return;
                    }
                }
            }
            catch
            {
                label1.Text = ("Возникло исключение");
            }

            try
            {
                using (ITikConnection connection = ConnectionFactory.CreateConnection(TikConnectionType.Api))
                {
                    connection.Open(HOST, USER, PASS);

                    var natRule    = connection.CreateCommandAndParameters("/ip/address/print", "comment", nameRule).ExecuteList();
                    var id         = natRule.Single().GetId();
                    var enableRule = connection.CreateCommandAndParameters("/ip/address/enable", TikSpecialProperties.Id, id);
                    enableRule.ExecuteNonQuery();

                    Color colorOn = Color.Blue;
                    label1.ForeColor = colorOn;
                    label1.Text      = ("Вы включили сервер.");
                }
            }
            catch
            {
                Color colorOff_n = Color.Red;
                label1.ForeColor = colorOff_n;
                label1.Text      = ("Возникло исключение!\nИмя сервера или порт \nне доступты!");
            }
        }
示例#26
0
 /// <summary>
 /// Reset counters
 /// </summary>
 public void ResetCounters(ITikConnection connection)
 {
     connection.CreateCommandAndParameters("ip/dhcp-relay/reset-counters",
         TikSpecialProperties.Id, Id).ExecuteNonQuery();
 }