Welcome to Pangolin’s products and solutions. We are committed to providing better dynamic data transmission solutions and technology platforms.
Our newly upgraded products further improve system flexibility and scalability, and avoid problems such as single point of failure caused by relying on a certain technology node. Our innovative architecture allows customers to deploy more flexibly, while ensuring network data transmission performance and bandwidth utilization While maximizing, the privacy of data content is ensured.
Please read this manual in detail to successfully complete system deployment and use, and make full use of Pangolin’s excellent performance. Let’s start.
Notes on calling the Service API
- Service provides 3 HTTP API request (commonly used) release (not commonly used) services
- All API calls need to provide a token parameter. The token is provided by our company and is the base64 encoding of ‘user:password’
- Regarding the IP address of the Service, it is referred to as x.x.x.x below. If it is a Service provided by us, it will be provided by our company. If the Service is deployed by the customer, it should be remembered by the customer (if the customer deploys multiple services, just need to Just remember the IP of one of them)
2 List of Service interfaces and calling methods, all returned data are in JSON format:
Interface | Illustrate | Parameter /Is Required | Call example |
---|---|---|---|
/services | Get all available Services | Token[value: user’s token]/ Required | http://x.x.x.x:2002/services?token=xxxx; |
/resources | Get a list of available countries | Token[value: user’s token]/ Required | http://x.x.x.x:2002/resources?token=xxxx; |
/request | Allocating line resources will select certain lines on all services belonging to the customer. | Token[value: user’s token]/ required, number[value: the number of ports to be applied for]/ not required, the default is 1, expire[value: the use time of the line]/ not required, the default value is 10 , the unit is minutes, region[value: the code of the country where you want to apply for resources]/not required, the default is unknown, resources will be randomly allocated | http://x.x.x.x:2002/request?token=xxxxx&number=3&expire=10®ion=155; |
/release | To release the line resources held by the user, we will limit the maximum value of the lines held by a single user. When the number of lines of the user exceeds the maximum value, they can apply for lines again. This interface can release all the lines held by the user | Token [value: user’s token] / Required | http://x.x.x.x:2002/release?token=xxxx; |
Typical usage steps and code data examples are as follows (the following interfaces are all GET methods unless otherwise specified), and the complete demo is in the tools/demo/python/sample directory:
- Client obtains all available Service addresses. If a single client deploys multiple Services, a list of all available Services will be returned.
Request : http://x.x.x.x:2002/services?token=xxxxx
Response:
{
"message": "success",
"services": [
{
"public": "X.XX.XX.XX:2003"
},
{
"public": "X.X.XX.XXX:2003"
}
]
}
说明
message: Used to return an error message
services: A list of services, where each element represents a service
public: The public network address of the service
- Client obtains the available area and area code
Request : http://127.0.0.1:2002/resources?token=xxxxxxxxxxx
{
"Message": "success",
"resources": [
{ "country": "Iraq", "code": "368" },
{ "country": "India", "code": "356" },
{ "country": "Egypt", "code": "818" },
{ "country": "Turkey", "code": "792" },
{ "country": "Spain", "code": "724" },
{ "country": "Oman", "code": "512" },
{ "country": "South Africa", "code": "710" }
]
}
说明
message: Used to return an error message
resources: Currently available countries and their codes
- Client calls request interface to any Service
Request : http://x.x.x.x:2002/request?token=xxxxx&number=5&expire=10®ion=368
Response:
{
"resources": [
{
"resource": "X.X.XX.XXX:2009"
},
{
"resource": "X.X.XX.XXX:2008"
},
{
"resource": "X.X.XX.XXX:2007"
},
{
"resource": "X.X.XX.XXX:2006"
},
{
"resource": "X.X.XX.XXX:2005"
}
],
"message": "success"
}
Illustrate
message: Used to return an error message
resource: Applied line address
- Client (user program or browser) sets proxy for regular HTTP(S) data communication
- Users can use the resource obtained in the previous step to set up a proxy in the browser or their own program, and then perform regular network access. For example, curl -x http://X.X.X.X:2009 -U : https://ifconfig.me
- If the number of lines held by the user has reached the upper limit and can no longer apply, release resources and apply again
Request : http://x.x.x.x:2002/release?token=xxxx
Response:
{
"message": "success"
}
Illustrate:
message: Error Message
About the proxy data forwarding permission of the resource port:
- All HTTP(S) request headers must contain the request header Proxy-Authorization: Basic for authentication
FAQ
- What will happen if the /release interface is not called to release resources?
- Answer: If the release interface is not called, the service considers that the line resource has been occupied until it expires. If the number of lines exceeds the limit (for example, 1000 lines are held at the same time), no new lines can be allocated, which will cause a decrease in resource utilization. The available bandwidth and the total amount of effective data are reduced. Therefore, it is recommended to call normally after use to release resources.
- What should I do if some line resources become unavailable during use?
- Because Pangolin’s line resources are allocated dynamically, this is a normal situation that may occur. Once this situation is found, you can call the /request interface to reacquire and optimize the available lines.
- Why does the call to the /request interface fail or does not apply for enough lines?
- There are two situations. 1. The call fails. Generally, there is no line to allocate at the backend. 2. The number of lines held by the user is close to or exceeds the limit. At this time, the /release interface needs to be called