Find Jobs
Hire Freelancers

Linux Proxy Controller/Forwarder

$250-750 USD

Closed
Posted about 5 years ago

$250-750 USD

Paid on delivery
I need a Linux-based proxy controller/forwarded that will take requests from users, and use a proxy from our database to relay it. Preferably, you would use something out-of-the-box like Squid Proxy Server and modify it to achieve the below. ============================ DB STRUCTURE ============================ Sample DB structure: [login to view URL] ============================ GENERAL OUTLINE ============================ 1. User specifies proxy conditions (ie. “city”) to one of their assigned ports (“PortID”) 2. User specifies {UserID}.[login to view URL]:{PortID} in their browser 3. If more than X concurrent threads for PortID for the particular UserID, deny the request. The proxy controller should be able to limit the number of concurrent threads per port for each user 4. "[login to view URL]" selects working proxy from DB based on PortID conditions in #1 > If requested URL contains “google” but google != 1 for the proxy, then a new proxy is assigned 5. If request fails, new proxy matching conditions in #2 is assigned 6. Repeat #4 until the request is successful 7. "[login to view URL]" passes the response back to user's browser Note that the proxy server should be able to: - Intercept requests (ie. “[login to view URL]”) and change proxy based on it - Query the DB for a proxy to use based on the user’s port conditions - Forward user requests to the selected HTTPs/Socks4/Socks5 proxy from the DB - Limit the number of concurrent threads to forward proxies and user's port ============================ DETAILED WORKFLOW ============================ 1. User sets proxy criteria in the DB ("PortID") > ie. PortID "1" for UserID "a698j64p" is set to country=US, city=New York, isp=Comcast, rotate_seconds=300 >> In the above, user created PortID where they only want proxies from Comcast ISP in New York, and the proxy should rotate every 5 minutes 2. User will configure HTTP(s) or Socks4/5 proxy in their browser that points to: {UserID}.[login to view URL]:{PortID} > ie. [login to view URL] 3. If PortID for UserID has over X simultaneous threads/connections, deny it with an error (we want to limit the number of concurrent threads per port). Otherwise, continue to next step 4. "[login to view URL]" fetches PortID criteria from #1 and selects matching proxies in the DB > ie. SELECT [login to view URL],proxy_ip,proxy_port FROM lists LEFT JOIN logs ON [login to view URL] = [login to view URL] LEFT JOIN ports ON [login to view URL] = [login to view URL] WHERE [login to view URL] LIKE "comcast" AND lists.total_fail_users < 3 AND lists.total_fail_reqs < 3 AND lists.current_threads < lists.max_threads AND ([login to view URL] IS NULL OR logs.last_used < (NOW() - INTERVAL 60 MINUTE) AND ports.userID="a698j64p" AND ports.port=1 SELECT [login to view URL],[login to view URL],[login to view URL] FROM lists LEFT JOIN logs ON [login to view URL] = [login to view URL] LEFT JOIN ports ON lists.port=[login to view URL] WHERE [login to view URL] < 5 OR [login to view URL] IS NULL WHERE: - total_fail_users: # of users that encountered failure on the proxy - total_fail_reqs: #of requests (across all users) that encountered failure on the proxy - current_threads: To not overwhelm proxies, we might have to limit the number of concurrent threads connecting to it. This column will contain the current number of current threads (although I am not sure MySQL is the most optimal to use for this because of the massive amount of reads/writes required) - last_used: When the proxy was last used by the user 5. "[login to view URL]" forwards GET/POST request (with all headers) a) If proxy fails: - "[login to view URL]" updates total_fail_reqs++ and total_fail_users++ - Add "last_used" for proxy with current timestamp - Select different proxy and perform request again (user's connection should not drop) > if no remaining proxies, output error message and continue retrying every X seconds b) If proxy is a success, return response to user - Reset total_fail_reqs and total_fail_users - Add "last_used" for proxy with current timestamp NOTE: Please include your intended stack and any similar projects in the bid.
Project ID: 18661026

About the project

7 proposals
Remote project
Active 5 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
7 freelancers are bidding on average $519 USD for this job
User Avatar
Hi there, I’ve read your brief and can see that you’d like to done a project. My team has 8 years experience designing and developing mobile apps for iPhone and Android and web apps. I would approach your project by starting with wireframes and getting the design completed, before starting the actual development phase. I am highly qualified for this project and would love to speak with you further about taking this project on. If you'd like to view my previous work, take a look at my Portfolio.
$555 USD in 10 days
5.0 (12 reviews)
5.9
5.9
User Avatar
I have 8 years of experience in managing complex linux architectures and managing cloud infrastructures. I have worked on many complex projects ( Private cloud setup on AWS, Load balancing clusters, Replication systems and many more). I have versatile experience in setting up and managing server and also optimising them for best usage and fine tuning the security aspects. I have expertise in below fields :- 1 Linux Administration. 2 Windows Administration (Windows 2008 , 2012 & 2016) and Migration. 3 Cloud computing ( AWS, Azure and Google Cloud). 4 Automation ( Ansible,Puppet and Chef). 5 Application's & Web servers ( Apache, nginx, IIS and Tomcat ). 6 Databases ( Mysql, MsSql, MongoDB, postgresql and Apache CouchDB). 7 Security ( Web Security, Server hardening and IPS && IDS configuration) 8 Virtualization( KVM, Xen, OpenVZ & Parallels Virtuozzo). 9 Control Panels ( Cpanel, website panel, zpanel and parallel plesk panel). 10 Shell scripts, python & Perl etc. 11 Mail servers.
$277 USD in 1 day
5.0 (60 reviews)
5.6
5.6
User Avatar
i am linux administrator and having sound knowledge of ssh / putty / terminal to access files & directories inside linux vps. I have been using Shell Scripting with Sql for more then 20 Years of my career as developer and database administrator. Wrote a monitoring system to monitor Oracle database availability, performance and producing health reports. Done a lot of automated and housekeeping tasks which are all required in depth knowledge of Shell scripting and SQL queries. I will go through and let you know to use putty to access linux server. I am having 7+ year of working experience in this field. Please message me for further discussion.
$457 USD in 10 days
4.9 (27 reviews)
5.0
5.0
User Avatar
Hello sir, I can help you with your project Linux Proxy Controller/Forwarder. I have the good experience in Linux, MySQL, Nginx, Shell Script, Squid Cache. Please see my profile i have delivered here 425 projects with 100% client satisfaction. only take projects which I am sure I can do. Please ping me for the further discussion.
$750 USD in 10 days
4.5 (23 reviews)
5.3
5.3
User Avatar
hello sir i am professional custom php development also following php frameworks Laravel CodeIgniter Symfony Zend Phalcon CakePHP Yii we can deliver you your project beyond your expectation . you can chat with me we can talk more about your project i am having more then 10 years experience of php developed many ERP CRM for different companies
$512 USD in 5 days
0.0 (0 reviews)
0.0
0.0

About the client

Flag of CANADA
Toronto, Canada
5.0
7
Payment method verified
Member since Oct 1, 2013

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.