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.
- syslog support not yet implemented.
- Logging is quite messy.
The application can be installed directly from cargo
cargo install 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.
acscli is an interactive UNIX cli for ACSRS
- help: Display this help
- exit: Exit this application
- ls: List connected CPEs to this ACS
- cd|connect [SN] : Connect to CPE specified by this Serial Number
- 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
- upgrade [filename] : Upgrade CPE to provided firmware
curl 127.0.0.1:8000/list
curl 127.0.0.1:8000/gpv/{CPE_SERIAL_NUMBER} -d Device.ManagementServer.
curl 127.0.0.1:8000/spv/{CPE_SERIAL_NUMBER} -d "Device.WiFi.NeighboringWiFiDiagnostic.DiagnosticsState<string>=Requested"
curl 127.0.0.1:8000/gpv/{CPE_SERIAL_NUMER} -d Device.ManagementServer.;Device.Time.