diff --git a/cgrates.json b/cgrates.json index 7914cdc..095ea82 100644 --- a/cgrates.json +++ b/cgrates.json @@ -78,7 +78,7 @@ "*default": "CGRateS.org" }, "client_dictionaries": { - "*default": ["/usr/share/cgrates/radius/dict/"] + "*default": ["/usr/share/cgrates/radius/dict/", "/etc/cgrates/dictionary.mikrotik"] } }, diff --git a/dictionary.mikrotik b/dictionary.mikrotik new file mode 100644 index 0000000..a8d64db --- /dev/null +++ b/dictionary.mikrotik @@ -0,0 +1,43 @@ +# MikroTik RADIUS Dictionary +# Standard attributes missing from default dictionary + +# RFC 2869 - RADIUS Extensions +ATTRIBUTE NAS-Port-Id 87 string +ATTRIBUTE Message-Authenticator 80 octets + +# MikroTik Vendor-Specific Attributes (Vendor ID: 14988) +VENDOR Mikrotik 14988 + +BEGIN-VENDOR Mikrotik + +ATTRIBUTE Mikrotik-Recv-Limit 1 integer +ATTRIBUTE Mikrotik-Xmit-Limit 2 integer +ATTRIBUTE Mikrotik-Group 3 string +ATTRIBUTE Mikrotik-Wireless-Forward 4 integer +ATTRIBUTE Mikrotik-Wireless-Skip-Dot1x 5 integer +ATTRIBUTE Mikrotik-Wireless-Enc-Algo 6 integer +ATTRIBUTE Mikrotik-Wireless-Enc-Key 7 string +ATTRIBUTE Mikrotik-Rate-Limit 8 string +ATTRIBUTE Mikrotik-Realm 9 string +ATTRIBUTE Mikrotik-Host-IP 10 ipaddr +ATTRIBUTE Mikrotik-Mark-Id 11 string +ATTRIBUTE Mikrotik-Advertise-URL 12 string +ATTRIBUTE Mikrotik-Advertise-Interval 13 integer +ATTRIBUTE Mikrotik-Recv-Limit-Gigawords 14 integer +ATTRIBUTE Mikrotik-Xmit-Limit-Gigawords 15 integer +ATTRIBUTE Mikrotik-Wireless-PSK 16 string +ATTRIBUTE Mikrotik-Total-Limit 17 integer +ATTRIBUTE Mikrotik-Total-Limit-Gigawords 18 integer +ATTRIBUTE Mikrotik-Address-List 19 string +ATTRIBUTE Mikrotik-Wireless-MPKey 20 string +ATTRIBUTE Mikrotik-Wireless-Comment 21 string +ATTRIBUTE Mikrotik-Delegated-IPv6-Pool 22 string +ATTRIBUTE Mikrotik-DHCP-Option-Set 23 string +ATTRIBUTE Mikrotik-DHCP-Option-Param-STR1 24 string +ATTRIBUTE Mikrotik-DHCP-Option-Param-STR2 25 string +ATTRIBUTE Mikrotik-Wireless-VLANID 26 integer +ATTRIBUTE Mikrotik-Wireless-VLANIDtype 27 integer +ATTRIBUTE Mikrotik-Wireless-Minsignal 28 string +ATTRIBUTE Mikrotik-Wireless-Maxsignal 29 string + +END-VENDOR Mikrotik diff --git a/pppoe_auth.json b/pppoe_auth.json index 0d4afeb..f8f82ba 100644 --- a/pppoe_auth.json +++ b/pppoe_auth.json @@ -32,8 +32,15 @@ "type": "*constant", "value": "*attributes"} ], "reply_fields": [ + {"tag": "RejectCode", "path": "*rep.*radReplyCode", + "filters": ["*notempty:~*cgrep.Error:"], + "type": "*constant", "value": "AccessReject", "blocker": true}, + {"tag": "RejectMessage", "path": "*rep.Reply-Message", + "filters": ["*notempty:~*cgrep.Error:"], + "type": "*variable", "value": "~*cgrep.Error"}, {"tag": "SessionTimeout", "path": "*rep.Session-Timeout", "type": "*variable", - "value": "~*cgrep.MaxUsage{*duration_seconds}", "mandatory": true}, + "value": "~*cgrep.MaxUsage{*duration_seconds}", + "filters": ["*notempty:~*cgrep.MaxUsage:"]}, {"tag": "AcctInterimInterval", "path": "*rep.Acct-Interim-Interval", "type": "*constant", "value": "60"}, {"tag": "FramedIPAddress", "path": "*rep.Framed-IP-Address", "type": "*variable", diff --git a/tariffplans/pppoe/AccountActions.csv b/tariffplans/pppoe/AccountActions.csv index 1d9fbd1..3debbab 100644 --- a/tariffplans/pppoe/AccountActions.csv +++ b/tariffplans/pppoe/AccountActions.csv @@ -1,4 +1,5 @@ #Tenant,Account,ActionPlanId,ActionTriggersId,AllowNegative,Disabled +cgrates.org,test,AP_PPPOE_INIT,,, cgrates.org,pppoe_user1,AP_PPPOE_INIT,,, cgrates.org,pppoe_user2,AP_PPPOE_INIT,,, cgrates.org,pppoe_user3,AP_PPPOE_INIT,,, diff --git a/tariffplans/pppoe/Attributes.csv b/tariffplans/pppoe/Attributes.csv index 364569a..bc2ea87 100644 --- a/tariffplans/pppoe/Attributes.csv +++ b/tariffplans/pppoe/Attributes.csv @@ -1,5 +1,11 @@ #Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight # PPPoE user credentials and RADIUS reply attributes + +# User: test - Test user for MikroTik PPPoE +cgrates.org,ATTR_PPPOE_TEST,*sessions,*string:~*req.Account:test,,,,,,false,20 +cgrates.org,ATTR_PPPOE_TEST,,,,,*req.Password,*constant,test,, +cgrates.org,ATTR_PPPOE_TEST,,,,,*req.RequestType,*constant,*prepaid,, +cgrates.org,ATTR_PPPOE_TEST,,,,,*req.MikrotikRateLimit,*constant,10M/10M,, # User: pppoe_user1 - 10Mbps plan with static IP cgrates.org,ATTR_PPPOE_USER1,*sessions,*string:~*req.Account:pppoe_user1,,,,,,false,20 cgrates.org,ATTR_PPPOE_USER1,,,,,*req.Password,*constant,SecurePass123,, diff --git a/tariffplans/pppoe/RatingProfiles.csv b/tariffplans/pppoe/RatingProfiles.csv index e743db6..c2ae01e 100644 --- a/tariffplans/pppoe/RatingProfiles.csv +++ b/tariffplans/pppoe/RatingProfiles.csv @@ -1,5 +1,6 @@ #Tenant,Category,Subject,ActivationTime,RatingPlanId,RatesFallbackSubject # PPPoE users with time-based billing +cgrates.org,generic,test,2024-01-01T00:00:00Z,RP_DATA_TIME, cgrates.org,generic,pppoe_user1,2024-01-01T00:00:00Z,RP_DATA_TIME, cgrates.org,generic,pppoe_user2,2024-01-01T00:00:00Z,RP_DATA_TIME, cgrates.org,generic,pppoe_user3,2024-01-01T00:00:00Z,RP_DATA_TIME,