====== Operation of Be360 Fimm ====== === Server === Dedicated: Be360fimm (ID: i-0214f1fe3ceffe8ce)\\ Directories: ''/home/admin''\\ OS: Debian 12\\ SSH login: admin@35.158.209.70\\ Hours of operation: 24/7 ---- Fimm has 4 different scripts: * AQP * Como_Acque * 2iReteGas_Lotto_5 * 2iReteGas_Lotto_6 they all work the same way and they all have the same folder structure. \\ ==== Folder structure ==== ├── app.js ├── Storage ├── uploadFtp.sh ├── Certs │   ├── server.cert │   └── server.key ├── wab.log ├── Logs │   ├── Ftp │   └── Webhook ├── node_modules ├── package.json └── package-lock.json ---- === app.js === Application code. It create the endpoint "/webhook/image".\\ Sample request: POST https://wabfimmdemo.ccaas.becloudsolutions.com/webhook/image { "phone":"3519970274", "URL":"https://i.4cdn.org/g/1594686838367.png" } On request, it add "00" in front of the phonenumber, it [[https://nodejs.org/api/fs.html#fscreatewritestreampath-options|create a WriteSteam]] in the ''/Storage'' folder with name pattern ''phone + "_" + timestamp + ".jpg"'' and then download the image from the link in the stream. \\ === Storage === Contains images that are gonna to be sent in the FTP connection. \\ === uploadFtp.sh === Bash script that upload to Fimm's FTP all images sent in the lat 60 minutes using [[https://www.ncftp.com|ncftp]].\\ It runs with a [[https://en.wikipedia.org/wiki/Cron|cronjob]] every second minute of each hours, in order to discriminate if it needs to upload the images in the ''$yesterdayDate'' folder or in the ''$todayDate'' folder.\\ It also handle logs creation and clear ''wab.log''. \\ === Certs === Contains certificates to enable https endpoint in ''app.js''.\\ To create: openssl req -nodes -new -x509 -keyout server.key -out server.cert \\ === wab.log === Pm2 log file. Every hour is cleaned by ''uploadFtp.sh'' and saved in the ''/Logs/Webhook'' folder. \\ === Logs === Contains hourly logs for both FTP and webhooks interactions. \\ === node_modules, package.json, package-lock.json === Standard [[https://nodejs.org/|NodeJS]] stuff.\\ \\ === Nginx config === Located at ''/etc/nginx/sites-available/node.conf'', all endpoints are served in HTTPS.\\ * Port 5000: AQP * Port 5001: ComoAcque * Port 5002: 2iReteGas_Lotto_5 * Port 5003: 2iReteGas_Lotto_6 \\ === Active cronjobs === * Automated SSL certs renewal: ''0 0 25 */2 * sudo certbot --nginx renew --all --force-renewal'' * Automated [[https://www.gnu.org/software/findutils/manual/html_node/find_html/Invoking-updatedb.html#Invoking-updatedb|updatedb]] command: ''*/30 * * * * /usr/bin/updatedb'' * For each Fimm's customer there is a separated cronjob ''2 * * * * /home/admin/be360fimm-*/uploadFtp.sh'' \\ --- //[[lorenzo.cesana@becloudsolutions.com|Lorenzo Cesana]] 2024/03/26 09:25//