11 releases

0.5.2 Aug 15, 2024
0.5.1 Mar 17, 2024
0.5.0 Dec 16, 2023
0.4.2 Aug 5, 2023
0.1.1 Mar 28, 2023

#468 in Network programming

GPL-3.0-or-later

130KB
3K SLoC

ACSRS

A simple ACS written in Rust.

You can get or set datamodel from any CPE managed by this ACS with a simple curl command.

Supported features are:

  • Zero-conf server: The server tries to configure itself securely at first start.
  • HTTP, HTTPs and authentication support.
  • ACS configuration and connected CPEs are persistent.
  • CLI with advanced auto-completion to interact with CPEs.
  • GetParameterValues, SetParameterValues, Upgrade.

Some limitations are:

  • There are no notifications mechanism implemented.
  • It may not be fully compliant with TR-069 standard.

Install ACSRS

The application can be installed directly from cargo

cargo install acsrs

Run ACSRS

Simply start the application without any arguments:

acsrs

It will auto-configure itself by generating new user, password, certificate and CA. Everything is available under $HOME/.acrs directory and can be overrided. Some usefuls files are:

  • config.toml : The ACS configuration.
  • ca.pem : The certificate authority. Install this file on your CPEs to authenticate the ACS.
  • identity.p12: The PKCS12 identity used by the ACS.
  • cert.pem: The ACS Public Certificate.

Note: The ACS Public Certificate Common Name (CN) is derived from your public IP Address by default. It can be overrided by editing $HOME/.acsrs/config.toml and setting your hostname there. You can also disable there the auto-generation certificate mechanism if you wish to install your own certificates.

Usage with acscli

acscli is an interactive UNIX cli for ACSRS

Global commands:

  • help: Display this help
  • exit: Exit this application

Availables command when disconnected:

  • ls: List connected CPEs to this ACS
  • cd|connect [SN] : Connect to CPE specified by this Serial Number
  • monitor : Monitor all Inform messages received by ACS

Availables command when connected to a CPE:

  • disconnect : Disconnect from the current CPE
  • ls [path]: List Parameters under current object
  • cd [path]: Change directory
  • get [path] | [path]? : Get object or parameter value
  • set [path]=value | [path]=value : Set Parameter value
  • add [path] | [path]+ : Add a new object to an object collection.
  • del [path] | [path]- : Delete object.
  • upgrade [filename] : Upgrade CPE to provided firmware

ACS Management APIs

ACS Server is manageable by default on http://127.0.0.1:8000/api url with JSON APIs. JSON APIs are defined in https://github.com/guillaumepellegrino/acsrs/blob/master/src/api.rs

Dependencies

~16–32MB
~500K SLoC