Network
إيقاف حسابات البرودباند (PPP) تلقائياً بعد انتهاء المدة — 6
يوقف حسابات PPP عند انتهاء مدتها. المدة بالأيام هي الرقم في بداية اسم البروفايل (30@512.co تعني 30 يوم) وتاريخ البداية هو تاريخ أول دخول المسجل في كومنت الحساب (انظر سكربت 'ختم تاريخ أول دخول PPP'). كما يفصل الجلسة الحالية. يعمل يومياً من الـ Scheduler.
RouterOS 6
/system script add name=ppp_expiry_check source={
# EN: Month names/lengths used to turn a date into a day number (leap years ignored)
# AR: أسماء الشهور وأيامها لتحويل التاريخ إلى رقم يوم (بدون حساب السنة الكبيسة)
:local monthNames {"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"};
:local monthLens {31;28;31;30;31;30;31;31;30;31;30;31};
# EN: Helper: converts "mmm/dd/yyyy" (RouterOS v6 date format) to a day number
# AR: دالة تحول التاريخ بصيغة mmm/dd/yyyy (صيغة v6) إلى رقم يوم
:local toDays do={
:local m [:find $names [:pick $d 0 3]];
:local total ([:tonum [:pick $d 4 6]] + ([:tonum [:pick $d 7 11]] * 365));
:if ($m > 0) do={
:for k from=0 to=($m - 1) do={ :set total ($total + [:pick $lens $k]) }
}
:return $total;
}
# EN: Today as a day number | AR: تاريخ اليوم كرقم
:local today [$toDays d=[/system clock get date] names=$monthNames lens=$monthLens];
:foreach s in=[/ppp secret find where disabled=no] do={
:local profName [/ppp secret get $s profile];
:local note [/ppp secret get $s comment];
# EN: Validity (days) is the number before "@" in the profile name, e.g. 30@512.co
# AR: المدة بالأيام هي الرقم قبل علامة @ في اسم البروفايل مثل 30@512.co
:local at [:find $profName "@"];
:if ([:len $note] > 11 && [:typeof $at] = "num") do={
:if ($at > 0 && [:pick $note 3 4] = "/") do={
:local validity [:tonum [:pick $profName 0 $at]];
:if ([:typeof $validity] = "num") do={
# EN: First-login date is stored at the start of the comment | AR: تاريخ أول دخول مخزن في بداية الكومنت
:local startDay [$toDays d=[:pick $note 0 11] names=$monthNames lens=$monthLens];
:if (($startDay + $validity) < $today) do={
:local who [/ppp secret get $s name];
# EN: Disable the account and kick its live session | AR: تعطيل الحساب وفصل الجلسة الحالية
/ppp secret disable $s;
/ppp active remove [find where name=$who];
:log info ("PPP expired: disabled " . $who);
}
}
}
}
}
}
# EN: Run it once a day | AR: تشغيله مرة كل يوم
/system scheduler add name=ppp_expiry_daily interval=1d on-event=ppp_expiry_check start-time=00:05:00