Call Flow Studio installs alongside your PBX, not into it. This page lists every file, login and scheduled job the installer adds, what runs as root, what it leaves alone, and what uninstall takes away again. Each item names a place you can look at on your own box.
What it adds
- Its web folder:
/var/www/html/cfstudioon the FreePBX family,/usr/share/vitalpbx/www/cfstudioon VitalPBX. This is the app you open in the browser. - A root-owned copy of its code in
/usr/local/lib/cfstudio. The scheduled job and thecfscommand run from here, never from the web folder, so root never runs a file the web server could change. - Its own database,
cfstudio, next to yourasteriskdatabase: its users, saved layouts, drafts, notes and the record of changes made in it. Your PBX’s existing database login is given access to it; Call Flow Studio doesn’t add a database login of its own, and the installer doesn’t change yourasteriskdatabase. - Its settings folder,
/etc/cfstudio/, readable only by root and your web server’s group. It holds the license key and the manager login’s password. - One scheduled job:
/etc/cron.d/cfs-license-heartbeat, a single line you can read. It runs as your web server’s user (asteriskon the FreePBX family,www-dataon VitalPBX 4,apacheon VitalPBX 3). It checks the license in and, if you’ve turned on Automatic Updates, starts an update when one is out. - One sudo rule:
/etc/sudoers.d/cfstudio. It lets that job start the signed updater as root, with that exact command and nothing else. The installer checks the rule withvisudobefore putting it in place. - One Asterisk manager login, named
cfstudio(cfstudio-apporcfs-mgrif that name is taken). On the FreePBX family it’s a marked block in/etc/asterisk/manager_custom.conf; on VitalPBX it’s its own file,/etc/asterisk/vitalpbx/manager__99-cfstudio.conf. It accepts connections from the PBX itself only (permit=127.0.0.1) and is what Call Flow Studio uses for live status, such as which phones are registered. - A small web server file. FreePBX family:
/etc/apache2/conf-available/cfstudio.conf(/etc/httpd/conf.d/cfstudio.confon older distros), checked before Apache reloads. VitalPBX 4:/etc/nginx/pbx-addons/cfstudio-deny.conf, which only stops the installer’s own files from being served; VitalPBX’s site config isn’t edited. VitalPBX 3: nothing. - A PHP extension some of its files need, only when your PHP doesn’t already have a recent enough one: the extension and its own settings file in PHP’s settings folder, then a restart of the web server so PHP loads it. If your PBX had an older version, that one is set aside, not deleted.
- The
cfscommand:/usr/sbin/cfs, a short script that runs the root-owned copy. See Command-line (cfs). /var/lib/cfstudio/, root-owned, for the last update’s time and the folder an update unpacks into.- Its logs, in
/var/log/cfstudio/. See Log files.
One more thing it touches: a failed sign-in to Call Flow Studio is also written to the log your PBX’s fail2ban already watches for its own admin login (/var/log/asterisk/freepbx_security.log on the FreePBX family, /var/log/vitalpbx/authentications.log on VitalPBX), so the ban rules you already have cover it too.
What it doesn’t add
- No service or daemon. Between runs of the scheduled job, nothing of Call Flow Studio is running unless someone has its pages open.
- Nothing on your calls. Calls never pass through Call Flow Studio. It adds nothing to your dial plan and changes no Asterisk configuration beyond its own manager login.
- No packages. It doesn’t install anything from your distribution’s repositories.
- Not a FreePBX module. It isn’t listed in Module Admin, and FreePBX module updates leave it alone.
Root
The installer needs root, once. So do uninstall.sh and any sudo cfs … command you choose to run.
From version 1.1.0, nothing of Call Flow Studio runs as root after install unless you turn on Automatic Updates, and then only the signed updater. It runs at most once a week, only when an update this PBX may install is out, and it checks both again as root before installing anything. Automatic Updates is off until you turn it on.
The pages you use in the browser run as your web server’s user, with the same access as your PBX’s own admin pages.
Updates
Every update is signed, and Call Flow Studio checks the signature before it installs anything, whether the update came from Automatic Updates or from cfs upgrade. If any step of an update fails, or Call Flow Studio’s page loaded before the update and doesn’t after it, the previous version is put back.
What it sends
The PBX contacts our server for the license check-in, for updates, and for a few things someone starts, such as a password reset email. Nothing about your dial plan goes with any of them. Everything the PBX sends us, and when.
Trying it safely
Looking changes nothing on your PBX. It changes only when someone with editing rights saves a change. Most changes then wait for Apply Config, as they do on FreePBX’s own pages; flipping a day/night toggle and saving a recording or greeting take effect right away, as they do there. Read-only accounts can’t edit at all, and on VitalPBX, Call Flow Studio shows your call flows without changing them.
Uninstalling
FreePBX:
sudo bash /var/www/html/cfstudio/uninstall.sh
VitalPBX:
sudo bash /usr/share/vitalpbx/www/cfstudio/uninstall.sh
One command removes everything in “What it adds” above: the web folder, the root-owned copy, the cfstudio database and your database login’s access to it, /etc/cfstudio/, the scheduled job, the sudo rule, the manager login (then it reloads the manager), the web server file, the PHP extension if it added one (your PHP’s own setting goes back as it was), /var/lib/cfstudio/, and /usr/sbin/cfs (only if it’s ours; a cfs command of your own is left alone).
It keeps two things on purpose:
- The logs in
/var/log/cfstudio/, as the record of who changed what. - A backup in
/tmp/cfstudio-uninstall-YYYYMMDD-HHMMSS/: a copy of the database and of/etc/cfstudio/, made before anything is removed, so a removal can be undone by hand.
It sends one uninstall notice, and if this PBX holds a paid license it offers to release it so the key can go on another PBX (moving a license).