Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sdk:ftp2sms [2015/05/06 12:47]
sdk:ftp2sms [2021/08/04 09:20] (current)
Line 1: Line 1:
 +====== Forward File Content of Files on FTP Server via SMS ======
 +<code c ftp2sms.are>​
 +printf("​This script does not speak here, see syslog instead"​);​
 +nb_syslog('​starting'​);​
 +SITE = "​https://​share.netmodule.com/​router/​test";​
 +
 +USR = "​anonymous";​
 +PWD = "​anonymous";​
 +FTPINTERVAL = 30;
 +MAXSERVERITEMS = 100;
 +MAXSENTITEMS = 200;
 +ALARMNUMBER = "​+4178949****";​
 +
 +// processed SMS
 +sentSMS = mkarray();
 +
 +// main
 +while (1) {
 +    nb_syslog("​checking %s for messages",​ SITE);
 +    nb_syslog("​number of sent items is %s", length(sentSMS));​
 +    if (length(sentSMS) > MAXSENTITEMS) {
 +        for (i = 0; i < length(sentSMS);​ i++) {
 +            if (i < length(sentSMS)-MAXSENTITEMS) { 
 +                nb_syslog("​setting element %s to void", i);
 +                sentSMS[i] = (); // set oldest elements to void, i.e. delete them
 +            }
 +        }
 +        sentSMS = array_compact(sentSMS);​ // remove voids from array
 +        nb_syslog("​number of sent items is %s after compacting",​ length(sentSMS));​
 +    }
 +    files = nb_transfer_list(USR,​ PWD, SITE);
 +
 +    if (files) {
 +        if (length(files) > MAXSERVERITEMS) {
 +            id = nb_sms_send(ALARMNUMBER,​ sprintf("​Caution,​ more than %s files on server",​ MAXSERVERITEMS));​
 +        }
 +        filesarray = mkarray(); ​  
 +        for (i = 0; i < length(files);​ i++) {
 +            file = files[i];
 +            filesarray[i] = file.name;
 +            url = sprintf("​%s/​%s",​ SITE, filesarray[i]);​
 +            path = "/​tmp/​tempmsg";​
 +            if (nb_transfer_get(USR,​ PWD, url, path) == 0) {
 +                fp = fopen(path, "​r"​);​
 +                if (fp) {
 +                    phonenumber = trim(fgets(fp));​ // first line is phone number
 +                    content = fread(fp,​file.size);​ // read rest of file  ​
 +                    // check new SMS
 +                    if (is_void(array_search(sentSMS,​ filesarray[i]))){
 +                        // send SMS
 +                        id = nb_sms_send(phonenumber,​ content);
 +                        if (id) {
 +                            nb_syslog("​SMS to %s (origin %s) has been spooled\n",​ phonenumber,​ filesarray[i]);​
 +                                sentSMS = array_merge(sentSMS,​ filesarray[i]);​
 +                                nb_syslog("​added %s to sent items",​ filesarray[i]);​
 +                        } else {
 +                            nb_syslog("​Unable to send SMS to %s\n", phonenumber);​
 +                        }       
 +                    } else {
 +                        nb_syslog("​file %s already processed, ignoring it", filesarray[i]);​
 +                    }
 +                    unlink(path);​
 +                }
 +                else {
 +                    nb_syslog("​download of '​%s'​ failed",​ url);
 +                }
 +            }
 +        }
 +    } else {
 +        nb_syslog("​could not access '​%s'​ or no files in directory",​ SITE);
 +    }
 +    sleep(FTPINTERVAL);​
 +}
 +exit(0);
 +</​code>​