Configuration¶
There is no configuration file and there are no environment variables. Every host, password and path is a constant in the code, and the repository ships placeholders. Edit your own copy, and never push it anywhere public once it holds real credentials.
Database¶
The client lookup and Diagnosis read the RADIUS database over MySQL. The connection is written four times in server.R, once per search button, on lines 25, 74, 486 and 543:
Set user, password and host in all four. The app only reads, so a read-only MySQL user is enough. It reads these tables and columns:
| Table | Columns |
|---|---|
rm_users |
username, firstname, srvid, phone, mobile, address, city, state, expiration, lastlogoff, comment, staticipcpe, createdon |
rm_services |
srvid, srvname |
nas |
nasname, shortname |
radacct |
radacctid, username, nasipaddress, framedipaddress, acctstarttime, acctstoptime, callingstationid, acctinputoctets, acctoutputoctets |
The NAS link in the client table uses the last word of nas.shortname as the router's address.
Routers¶
GetAntena.py logs in to the NAS over the plain (non-TLS) RouterOS API on port 8728 and prints its DHCP leases. Set the API user and password on line 157 (apiros.login("admin", "PASSWORD")). The port is on line 138.
Antennas¶
Diagnosis logs in to the client's antenna over SSH and runs mca-status. The user and password are on server.R line 641 (username="admin", password="PASSWORD").
Two more addresses are derived, not configured: the CPE's web page is the client's IP on port 8080 (server.R lines 112 and 584), and the access point is the address ending in .10 in the antenna's subnet (server.R lines 655 to 657).
DSLAMs¶
data/infoDSLAMs.csv lists the DSLAMs the VDSL tab offers, one per row. A 1 in a board column means that board exists:
Ubicacion is the site name shown in the list. The shipped file has three placeholder rows.
The VDSL tab logs in over SSH as user tecnico. The user is on server.R lines 913 and 1058 (tecnico@%s) and the password on lines 921 and 1066 (child.sendline('PASSWORD')). Each session is logged to data/logSSHsession.txt and data/logSSHanotacion.txt.
Billing alarm scrapers¶
| Setting | GECOselenium.R (mobile) |
GECOfija.R (fixed) |
|---|---|---|
| Portal user | line 36, list("user") |
line 31 |
| Portal password | line 38, list("password") |
line 33 |
| Selenium server port | 4448 (line 16) | 4446 (line 15) |
| PhantomJS port | 4449 (line 13) | 4449 (line 13) |
| Alarm rule | extra over 50% of tariff, or over 5 € with no tariff (lines 81 to 90) | total of 10 € or more (line 77) |
| Interval | 30 minutes (line 96) | 30 minutes (line 83) |
| Output | data/listaEXCEED.csv |
data/listaEXCEEDfijo.csv |
Both scripts use the same PhantomJS port, so run them one at a time or change one of them.
Mail¶
mailR.R sends both alarm lists as attachments. Set from, to, the SMTP host.name, port, user.name and passwd on lines 2 to 10. The shipped values are placeholders for a Gmail account.
Email signatures¶
- The company choices are in
ui.Rlines 54 and 55. - The preview template is in
server.Rfrom line 257, and the downloaded file is built fromfirma.html. Both hold the first company's logo URL, phone numbers, website and social links. - For the other two choices,
server.Rlines 365 to 386 swap those values withgsub. Eachgsubmust match the template text exactly, or the value is not replaced. - Whether the fault line's number appears is handled on line 364.
Diagnosis report¶
RMD/diagnosis.rmd holds the PDF's title, author, greeting, closing and footer link. The pandoc command is on server.R line 833.
Paths and port¶
- The app directory
/home/tecnico/WebServiciosis written in full inserver.R,AtBoot.sh,GeCoMovil.sh,GECOselenium.R,GECOfija.RandmailR.R. To use another directory, replace it in all six. AtBoot.shstarts the app on127.0.0.1:8081. The comment on line 1 ofui.Randserver.Rshows the older0.0.0.0:8080. See How it works before you listen on anything other than localhost.
Files the app does not use¶
ssh.py and VDSL.py are earlier versions of the antenna and DSLAM steps, and nothing calls them. diagnosis.log is a pdfTeX log from a failed report in 2016.