Giter Site home page Giter Site logo

Comments (9)

psanford avatar psanford commented on July 29, 2024

The {BEGIN,END}-VENDOR indicate to the parser that the statements in between are for the given vendor id. You definitely need them.

I tested that dictionary (copied and pasted from the linked page) with both CRLF and LF and had no problem loading it in both cases. This is the test that I used:

var radius = require('radius');

radius.add_dictionary('mikrotik.dict');

var secret = "Joey-jaundices";

var packet = radius.encode({
  code: "Access-Request",
  secret: secret,
  attributes: [
    ['NAS-IP-Address', '10.5.5.5'],
    ['User-Name', 'dealing-deathtraps'],
    ['User-Password', 'your-yammered'],
    ['Vendor-Specific', 14988, [['Mikrotik-Group', 'dairymaids-deprograming']]]
  ]
});

var decoded = radius.decode({
  packet: packet,
  secret: secret
});

console.log(decoded);

If you can give me sample code that is failing for you I can look into it some more.

from node-radius.

 avatar commented on July 29, 2024

It's loaded correctly (I assume) but it goes into error after sending reply.

If the file contain the vendor part this is the error:
Error: Invalid attributes in encode: must give buffer from unknown attribute 'Mikrotik-Rate-Limit'

Then, if I remove the vendor part this is the error:
Error: encode: invalid IP: 150/120

Where 150/120 is the string that must me into the attribute and it is a string not an ip address.

from node-radius.

psanford avatar psanford commented on July 29, 2024

It sounds like the dictionary might have loaded correctly the first time (when you got the invalid attributes in encode) and you are just not generating you packet correctly.

I assume you are trying to set 'Mikrotik-Rate-Limit'. Are you setting it inside the vendor specific section in the attributes list?

attributes: [
 ... 
   ['Vendor-Specific', 14988, [['Mikrotik-Rate-Limit', 'some value']]],
 ...
]

Again, the fastest way to get this resolved will be if you can provide sample code that exhibits the problem.

from node-radius.

 avatar commented on July 29, 2024

`Reply = "Access-Accept";
ResponseAttr[0] = new Array('Reply-Message', 'User-Found');

var ReplyAttr = new Array();

var ratelim='120k/120k';
var recv='1500000';
var FramedRoute='10.10.10.10';

ReplyAttr[ReplyAttrIndex] = new Array('Mikrotik-Rate-Limit', ratelim);
ReplyAttr[ReplyAttrIndex] = new Array('Mikrotik-Recv-Limit', recv);
ReplyAttr[ReplyAttrIndex] = new Array('Framed-Route', FramedRoute);
// etc.....

var AttributeList= new Array();
AttributeList = ReplyArr['Attributes'];
for (var i = 0; i < AttributeList.length; i++)
{
ResponseAttr[i + 1] = AttributeList[i];
}

var response = this.radius.encode_response( {
packet: OriginalRequest['Packet'],
code: Reply,
secret: OriginalRequest['Secret'],
attributes: ResponseAttr
} );

if (OriginalRequest['Code'] == 'Access-Request')
AuthServer.send(response, 0, response.length, OriginalRequest['SourcePort'], OriginalRequest['SourceIP']);
`

from node-radius.

 avatar commented on July 29, 2024

it's just an example taken from the original code that is little bit more complicated

from node-radius.

 avatar commented on July 29, 2024

If I understand, I need to use a "sub array" called vendor specific, wehere all the attributes are listed?

from node-radius.

psanford avatar psanford commented on July 29, 2024

Right, and you need to include the vendor id (in this case 14988 for Mikrotik). The relevant example snippet from the readme:

You can specify Vendor-Specific attributes like so:

attributes: [
  ['Vendor-Specific', <vendor id>, [
    [<attribute name>, <attribute value>],
    [<attribute name>, <attribute value>]
  ],
  ...
]

Or if you want each vendor attribute as a separate attribute, try this:

attributes: [
  ['Vendor-Specific', <vendor id>, [[<attribute name>, <attribute value>]]],
  ['Vendor-Specific', <vendor id>, [[<attribute name>, <attribute value>]]]
  ...
]

from node-radius.

 avatar commented on July 29, 2024

You are great!
It's works.

Thanks a lot.

from node-radius.

rodrigoadachi avatar rodrigoadachi commented on July 29, 2024

I was having trouble adding the Mikrotik-Rate-Limit had the following error:

Error: encode: invalid attributes - must give Buffer for unknown attribute "Mikrotik-Rate-Limit '

Dai looked where he was looking for these values, was where I saw a small piece of code that our psanford friend posted here:

radius.add_dictionary ('mikrotik.dict');

Dai only created a mikrotik.dict file and added the entire contents of the link below
http://wiki.mikrotik.com/wiki/Manual:RADIUS_Client/vendor_dictionary

Thank you friends

from node-radius.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.