Find Jobs
Hire Freelancers

Develop a STATIC COMPILED Go (golang) app linked to musl libc

$250-750 USD

Closed
Posted over 6 years ago

$250-750 USD

Paid on delivery
This project is to convert an existing 500 line Python script that runs on Linux servers to Golang. Before bidding, please provide a specific response detailing similar projects that you have done in the past or your academic qualifications to embark on this project. This is a smaller project (probably will take several days) but may still be very difficult even for expert developers; if you do not have significant C, Golang, and operating system (i.e., forking and shell) experience, you will probably not be able to complete this project satisfactorily. This project will eventually be compiled against VC++ or similar windows environment and may also need to make registry entries, so if you are able to assist with that, then please say so and we will add milestones for that at the end that you can take on if you feel up to the challenge. Like the regular golang app for Linux above, the windows version should not require any external dependencies. (One issue that we currently have is that the python version requires python, which is often not available in containers and lightweight distros.) If you are unable to help with Windows, that's ok, because the Linux version is much more important right now and Windows can come later. Security is very important, and both clarity and consistency of code and lots of comments are very important, to encourage outside participation and contributions and to ensure correctness of operation. This app includes the following attributes: 1) Start up one process as a master process. 2) Start another process (secondary process) that accesses an HTTPS rest api endpoint. The HTTPS connection needs to be switchable to either check or not check the CA certificates. 3) (secondary process) logs in using HTTP basic authentication and credentials stored in a configuration file and downloads some JSON data. After parsing that JSON data and sequentially executing local system commands and/or parsing or modifying local system files, that process goes to sleep for a period of time as specified in the JSON data received from the server. The etag (HTTP header) from this step should be stored in a local file and used to ensure that the same data isn't repeatedly downloaded, but the step itself should be idempotent anyway. 4) Another process is started (tertiary process) that downloads a plugin data from the server. This data will be parsed, and additional processes launched to execute these plugins (similar to step 2 and 3 above). These processes should be monitored externally, stdin and stdout captured from these processes, and status/stdin/stdout sent back to a REST endpoint. (this step is not in the current Python source.) 5) Please provide a working golang compilation environment (perhaps a docker container, perhaps using something like Alpine Linux which is already build on musl) to compile it in production with a Makefile. The current code is a public Github repository and this will also eventually become a Github public repo. More specific details will be provided based on your detailed response.
Project ID: 15269050

About the project

4 proposals
Remote project
Active 6 yrs ago

Looking to make some money?

Benefits of bidding on Freelancer

Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs

About the client

Flag of UNITED STATES
The Woodlands, United States
5.0
22
Payment method verified
Member since Apr 30, 2012

Client Verification

Thanks! We’ve emailed you a link to claim your free credit.
Something went wrong while sending your email. Please try again.
Registered Users Total Jobs Posted
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Loading preview
Permission granted for Geolocation.
Your login session has expired and you have been logged out. Please log in again.