The program must be written in C and needs to be compiled with gcc to use with different architectures (intel/amd, x86, ARM, 32/64bit) to run on normal linux pcs as well as on embedded devices like Netgear ReadyNAS, Rasperry Pi, AVM FritzBox and alike.
The daemon must have a config file, in which the following settings must be made:
- usb device (eg. /dev/usb01)
- api_key (some string of any length provided to each install of the daemon individually)
- local port the daemon listens on (eg. 6055)
The daemon does 3 things:
1. on startup and after that every 5 minutes, calls a remote url ([url removed, login to view]) to retrieve the public ip address of the computer it is running on. If the daemon just started or the ip address has changed compared to a previous check, it will call another remote url with the new ip address and the api_key over a SSL encrypted call ([url removed, login to view];api_key=xyz)
2. Establish a connection to the usb device (which basically behaves like a serial modem) and listens to it. Every time the usb device sends something, the data is pushed over an SSL encrypted call to a remote url (eg. [url removed, login to view];data=abc)
3. Listen on the configured port for incoming SSL encrypted socket connection which contains the valid api_key and data to be handed to the usb device.
The code must be easy to maintain (eg. change the remote urls; not via the config!), well documented and follow best practices in c programming as well as design principles.
The usb device uses this protocol: FHZ 1000 ([url removed, login to view])
Please check our PM. We are a team of high qualified programmers, all senior students of Computer Science Engineering at a world-class university. Thank You, «« SOLID PROGRAMMING Group. »»