Add a new "sysadm/users" API class to sysadm for managing users/groups on the system. The "usershow" action is the only one enabled at the present time.
REST Request (example):
-------------------------------
PUT /sysadm/users
{
"action" : "usershow"
}
WebSocket Request:
-------------------------------
{
"namespace" : "sysadm",
"name" : "users",
"id" : "fooid",
"args" : {
"action" : "usershow"
}
}
Response:
-------------------------------
{
"args": {
"_dhcp": {
"change": "0",
"class": "",
"comment": "dhcp programs",
"expire": "0",
"gid": "65",
"home_dir": "/var/empty",
"name": "_dhcp",
"shell": "/usr/sbin/nologin",
"uid": "65"
},
"_ntp": {
"change": "0",
"class": "",
"comment": "NTP Daemon",
"expire": "0",
"gid": "123",
"home_dir": "/var/empty",
"name": "_ntp",
"shell": "/usr/sbin/nologin",
"uid": "123"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
Table of Contents generated with DocToc
SysAdm
Official repo for PC-BSD's sysadm middleware WebSocket & REST server
This middleware acts as the core for controlling a PC-BSD or FreeBSD
system either locally or remotely via WebSockets or REST. It is also the
server component to PC-BSD's SysAdm GUI client.
Required Qt Modules
Qt5 Core (pkg install qt5-core)
Qt5 Concurrent (pkg install qt5-concurrent)
Qt5 Websockets (pkg install qt5-websockets)
Building SysAdm
% git clone https://github.com/pcbsd/sysadm.git
% cd sysadm/src
% /usr/local/lib/qt5/bin/qmake -recursive
% make && sudo make install
Starting SysAdm
SysAdm can be started one of two ways:
- The traditional rc(8) mechanism
- The new jobd(8) mechanism
To run under rc(8):
(For WebSockets - Required for SysAdm Client)
% sudo sysrc -f /etc/rc.conf sysadm_enable="YES"
% sudo service sysadm start
(Optional for REST)
% sudo sysrc -f /etc/rc.conf sysadm_rest_enable="YES"
% sudo service sysadm-rest start
To run under jobd(8):
(For WebSockets - Required for SysAdm Client)
% sudo jobctl org.pcbsd.sysadm enable
(Optional for REST)
% sudo jobctl org.pcbsd.sysadm-rest enable
API Documentation
Contributing new API calls
SysAdm is written using the Qt toolkit, which has excellent reference documentation.
All Qt Core classes (I.E. non-gui) can be used in SysAdm server.
Adding new API calls to the middleware is very straight-forward, simply
add a new function which accepts JSON in, and returns JSON, then connect
it to the backend.
Example:
4d3b590f46
Adding new Classes for API calls
Adding a new API class requires tweaking a few more files than a new API call only.
Example:
1ba65b3388
Testing new API calls / classes
Before committing or sending a pull request, you'll need to run our
"api-test.sh" script and confirm it works properly. To do so, first add
your new call and restart the websocket server. Next do the following:
% cd sysadm/tests
% ./api-test.sh
The api-test script will prompt you to enter username, password, and some
information about which class / API call to run. When that is done, and you
have verified the functionality of your new call you should add the output
of the test script (either from copy-n-paste, or from the file /tmp/api-response)
to your commit. (This will allow us to document the new call / class)