The meanings of them are not important. Please do not switch on any options because they are all untested. If one option proves to be stable enough, it will become the default setting.
Author: lancex
About XTLS protocol
Since the new XTLS is not fully compatible with the old one, LanceX offers three XTLS types for selection:
xtls-rprx-direct
xtls-rprx-vision-1.7.5
, for Xray equal or below 1.7.5xtls-rprx-vision-1.8.0
, for Xray equal or above 1.8.0
What is “Lock Subscription”
There is an option in the subscription called ‘Lock’.
A locked subscription means that there are certain limitations on modifying and sharing it.
- You cannot view or modify the details of a locked subscription, but you can delete it.
- You cannot share a locked subscription unless you have the password for the lock.
- When sharing a locked subscription, you have two options: either requiring a password to import or allowing anyone to import it.
Please note that locking a subscription is a feature exclusive to LanceX. You cannot share the URL with applications other than LanceX.
What’s “Prefer Hostname”?
There is an option in Rule
-> Advance
named Prefer Hostname
. That’s allow the proxy to determine the IP instead of local result.
For example, when you want to access a.com
, and it does not match any domain directives in the rules, it will be resolved by the local DNS. If the IP result matches an IP directive with the target set to PROXY
, it will pass a.com
to the proxy instead of using the locally resolved IP, provided that you have enabled this feature.
Proxy Provider
What is a Proxy Provider?
A Proxy Provider
is an engine used to determine which proxy is used for the current network flow.
In LanceX, the Proxy Provider
chooses a proxy exclusively based on a Regular Expression
. This allows for dynamic updates when adding or removing proxies.
Additionally, a Proxy Provider
can be embedded within another Proxy Provider
, forming a tree map structure.
What are the types of Proxy Provider?
There are four types of Proxy Provider
:
- select: This type allows manual selection of a proxy. However, please note that it may not be accurate if your proxies change.
- fallback: This type selects proxies in a sequential order. If the current proxy is down or times out, the next one in line will be used.
- load_balance: This type efficiently distributes incoming network traffic across a group of proxies.
- url-test: This type selects the proxy to be used by benchmarking the speed to a specific URL.
How to set Proxy Provider?
There are two ways to set Proxy Provider
:
- You can set it globally in
Rule
>Advance
>Default Proxy Parameter
. All routes matchingPROXY
will use theProxy Provider
. Please note that if you set this, the proxy you selected inProxy View
will not affect the connection, and the proxy details in theControl Panel
will also change based on theProxy Provider
results. - You can also set it for individual rules. When you change a rule’s target to
PROXY
, you can choose aProxy Provider
.
What’s “Prepend Script”?
There is an option in Rule
-> Advance
named Prepend Script
. The script you put in will be triggered together with other scripts each time.
So you can:
- Add some code to debug.
- Enhance the script ability.
- Add some util libraries.
- Although we support most of the APIs, some of the scripts use global variables to check the App type, so we can pretend as other runtime, for example Rocket(https://shadowboat.app/lancex/module/rocket.js)
- …
Where can I buy …?
Where can I buy LanceX?
The only way to purchase it is from the Apple Store.
Where can I buy a server?
Please seek suggestions from people in your country. The situation varies between countries, and the servers suggested or provided by others may not meet your specific requirements. Of course, if possible, building it yourself is always a good option.
Do you support trojan-go?
Do you support trojan-go?
Trojan is written by c++, trojan-go is golang version of trojan adding some features.
We supports trojan-go new features:
- Websocket transport
- Shadowsocks aead obfuscation
- trojan-go scheme
Since the trojan protocol in LanceX is rewritten by c and oc, you don’t need to worry about speed and memory.
Scripting
You can use JavaScript to extend the ability of LanceX.
Public API
$done()
function
Since all scripts run asynchronously, $done() should be called to indicate completion, even for scripts that do not require results. Otherwise, the script will print a warning due to a timeout.
Basic Information
$lancex
The object means that you are in the environment of LanceX.
Persistent Store
$persistentStore.write(data<String>, [key<String>])
Save data permanently. Only a string is allowed
$persistentStore.read([key<String>])
Get the saved data. Return a string or null.
Http Request
$httpClient.post(URL<String> or options<Object>, callback<Function>)
Start an HTTP POST request. The first parameter can be a URL or object. An example object may look like that.
{
url: "http://www.example.com/",
headers: {
"Content-Type": "application/json"
},
body: "{}",
timeout: 5,
callback: callback(error, response, data) {
}
}
The url
is always required. body
can be a string or object. When presenting an object, it is encoded to JSON string, and the Content-Type
is set to application/json
automatically.
Similar function: $httpClient.get
, $httpClient.put
,$httpClient.delete
, $httpClient.head
, $httpClient.options
, $httpClient.patch
.
fetch(URL<String>, options<Object>)
It’s an implementation of Fetch API, for example
fetch("http://www.example.com/",{
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: "{}"
}).then(v=>v.text())
.then(v=>console.log(v));
Utilities
console.log(message<String>)
Log to LanceX logfile. Similar function: console.warn
, console.error
, console.info
.
setTimeout(function[, delay])
Same as the setTimeout in browsers. Similar function: setInterval
.
$notification.post(title<String>, subtitle<String>, body<String>, info<Object>)
Post a notification. Please turn on Allow Notifications
before using it. info
allows you to open a url when user clicks the notification. For example:
{
"open-url" : "https://www.example.com"
}
Priority of Rules
I have a lot of rules, what is their priority?
Module
first, domain directives have the following priority: DOMAIN
> DOMAIN-SUFFIX
> DOMAIN-KEYWORD
. IP directives have the following priority: CIDR
> GEO IP
. If multiple rules are hit at the same time, for performance reasons, the current strategy is to select one at random.