{"library":"node-radius-utils","title":"Node Radius Utils","description":"node-radius-utils is a utility package designed to simplify working with RADIUS protocols in Node.js environments. It provides comprehensive access to FreeRADIUS server dictionary files, including all standard dictionaries like RFC2865, as well as vendor-specific ones like Nokia. The library is currently at version 1.2.0, indicating a stable release without frequent breaking changes. It offers typed locations for dictionary files, typed attributes, and typed values, significantly enhancing the developer experience, especially for TypeScript users. A key feature is the `attributesToArray` utility function, which facilitates converting a plain JavaScript object of RADIUS attributes into the specific array-of-arrays format required by libraries such as `node-radius`. While no explicit release cadence is documented, typical open-source practices suggest bug fixes via patch versions and new features via minor versions. Its primary differentiator is the pre-packaged and highly typed dictionary definitions, saving developers from the laborious task of manually parsing or maintaining these complex configuration files. It is explicitly designed to be used as a companion to a full-fledged RADIUS protocol implementation like `node-radius`, rather than being a standalone client or server.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install node-radius-utils"],"cli":null},"imports":["import { dictionaries } from 'node-radius-utils';","import { attributesToArray } from 'node-radius-utils';","import { dictionaries } from 'node-radius-utils';\nconst { values: { PACKET_TYPE } } = dictionaries.freeradius_internal;"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import radius from 'radius'; // npm i radius\nimport {\n  dictionaries: {\n    all,\n    rfc2865,\n    nokia,\n    freeradius_internal,\n  },\n  attributesToArray,\n} from 'node-radius-utils';\n\n// Use the default dictionary which includes all dictionary files.\n// Resolves to node_modules/radius-utils/dictionaries/default\nradius.add_dictionary(all.file);\n\n// Use a specific dictionary\n// Resolves to node_modules/radius-utils/dictionaries/dictionary.rfc2865\nradius.add_dictionary(rfc2865.file);\n\n// Use a specific dictionary\n// Resolves to node_modules/radius-utils/dictionaries/dictionary.nokia\nradius.add_dictionary(nokia.file);\n\nconst { values: { PACKET_TYPE } } = freeradius_internal;\n\n// Example of encoding a RADIUS packet\nconst encodedPacket = radius.encode({\n  code: PACKET_TYPE.ACCESS_REQUEST, // resolves to Access-Request\n  secret: 'super-secret',\n  attributes: attributesToArray({\n    // resolves to Nas-Ip-Address\n    [rfc2865.attributes.NAS_IP_ADDRESS]: '192,168.1.123',\n    // resolves to User-Name\n    [rfc2865.attributes.USER_NAME]: 'bob',\n    // resolves to User-Password\n    [rfc2865.attributes.USER_PASSWORD]: 'hunter2',\n    // resolves to Calling-Station-Id\n    [rfc2865.attributes.CALLING_STATION_ID]: 'AA:BB:CC:DD:EE:FF',\n    // resloves to Nokia-Service-Name\n    [nokia.attributes.NOKIA_SERVICE_NAME]: 'SuperService',\n  }),\n});\n\nconsole.log('Encoded RADIUS packet:', encodedPacket);","lang":"typescript","description":"Demonstrates importing dictionary files and the `attributesToArray` utility, then using them with the `radius` library to encode a RADIUS Access-Request packet with various attributes.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}