Skip to content

Commit

Permalink
Added multi warp endpoints, Warp Best Ping config, IPv6 support for c…
Browse files Browse the repository at this point in the history
…lean IPs and endpoints...
  • Loading branch information
bia-pain-bache committed Jun 28, 2024
1 parent 50fd90f commit 25cf0b8
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 16 deletions.
21 changes: 10 additions & 11 deletions _worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ let proxyIP = proxyIPs[Math.floor(Math.random() * proxyIPs.length)];

let dohURL = 'https://cloudflare-dns.com/dns-query';

let panelVersion = '2.4.1';
let panelVersion = '2.4.3';

if (!isValidUUID(userID)) {
throw new Error('uuid is not valid');
Expand Down Expand Up @@ -807,7 +807,7 @@ const getNormalConfigs = async (env, hostName, client) => {
}&fp=randomized&alpn=${
client === 'singbox' ? 'http/1.1' : 'h2,http/1.1'
}`
: ''}&path=${`/${getRandomPath(16)}${proxyIP ? `/${btoa(proxyIP)}` : ''}`}${
: ''}&path=${`/${getRandomPath(16)}${proxyIP ? `/${encodeURIComponent(btoa(proxyIP))}` : ''}`}${
client === 'singbox'
? '&eh=Sec-WebSocket-Protocol&ed=2560'
: encodeURIComponent('?ed=2560')
Expand Down Expand Up @@ -1256,8 +1256,8 @@ const getWarpConfigs = async (env, client) => {

let xrayWoWConfig = structuredClone(xrayConfigTemp);
let singboxWarpConfig = structuredClone(singboxConfigTemp);
singboxWarpConfig.outbounds[0].outbounds = ['💦 Warp Best Ping 💥'];
singboxWarpConfig.outbounds[1].tag = '💦 Warp Best Ping 💥';
singboxWarpConfig.outbounds[0].outbounds = ['💦 Warp Best Ping 🚀'];
singboxWarpConfig.outbounds[1].tag = '💦 Warp Best Ping 🚀';

for (let i = 0; i < 2; i++) {
let wgConfig = await fetchWgConfig();
Expand Down Expand Up @@ -1810,7 +1810,7 @@ const renderHomePage = async (env, hostName, fragConfigs) => {
justify-content: center;
width: 100%;
white-space: nowrap;
padding: 10px 20px;
padding: 10px 15px;
font-size: 16px;
font-weight: 600;
letter-spacing: 1px;
Expand Down Expand Up @@ -2050,7 +2050,7 @@ const renderHomePage = async (env, hostName, fragConfigs) => {
</div>
<div class="form-control">
<label>🔎 Scanner Script</label>
<button class="button" onclick="copyToClipboard('bash <(curl -fsSL https://raw.githubusercontent.com/Ptechgithub/warp/main/endip/install.sh)', false)">
<button class="button" style="padding: 10px 0;" onclick="copyToClipboard('bash <(curl -fsSL https://raw.githubusercontent.com/Ptechgithub/warp/main/endip/install.sh)', false)">
Copy Script<span class="material-symbols-outlined">terminal</span>
</button>
</div>
Expand Down Expand Up @@ -2410,10 +2410,9 @@ const renderHomePage = async (env, hostName, fragConfigs) => {
const hasSecurity = /security=/.test(chainProxy);
const validSecurityType = /security=(tls|none|reality)/.test(chainProxy);
const validTransmission = /type=(tcp|grpc|ws)/.test(chainProxy);
const validIPDomain = /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
const validIPDomain = /^((?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,})|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|\\[(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,7}:\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,6}:[a-fA-F0-9]{1,4}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,5}(?::[a-fA-F0-9]{1,4}){1,2}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,4}(?::[a-fA-F0-9]{1,4}){1,3}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,3}(?::[a-fA-F0-9]{1,4}){1,4}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,2}(?::[a-fA-F0-9]{1,4}){1,5}\\]|\\[[a-fA-F0-9]{1,4}:(?::[a-fA-F0-9]{1,4}){1,6}\\]|\\[:(?::[a-fA-F0-9]{1,4}){1,7}\\]|\\[\\](?:::[a-fA-F0-9]{1,4}){1,7}\\])$/i;
const checkedPorts = Array.from(document.querySelectorAll('input[name^="port-"]:checked')).map(input => input.name.split('-')[1]);
const validEndpoint = /^(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)):(?:[0-9]{1,5})$/;
const validEndpoint = /^(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|\\[(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,7}:\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,6}:[a-fA-F0-9]{1,4}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,5}(?::[a-fA-F0-9]{1,4}){1,2}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,4}(?::[a-fA-F0-9]{1,4}){1,3}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,3}(?::[a-fA-F0-9]{1,4}){1,4}\\]|\\[(?:[a-fA-F0-9]{1,4}:){1,2}(?::[a-fA-F0-9]{1,4}){1,5}\\]|\\[[a-fA-F0-9]{1,4}:(?::[a-fA-F0-9]{1,4}){1,6}\\]|\\[:(?::[a-fA-F0-9]{1,4}){1,7}\\]|\\[::(?::[a-fA-F0-9]{1,4}){0,7}\\]):(?:[0-9]{1,5})$/;
checkedPorts.forEach(port => formData.append('ports[]', port));
const invalidIPs = [...cleanIPs, proxyIP]?.filter(value => {
Expand Down Expand Up @@ -2828,7 +2827,7 @@ const xrayConfigTemp = {
]
},
observatory: {
probeInterval: "3m",
probeInterval: "30s",
probeURL: "https://api.github.com/_private/browser/stats",
subjectSelector: ["prox"],
EnableConcurrency: true,
Expand Down Expand Up @@ -2998,7 +2997,7 @@ const singboxConfigTemp = {
tag: "💦 Best-Ping 💥",
outbounds: [],
url: "https://www.gstatic.com/generate_204",
interval: "3m",
interval: "30s",
tolerance: 50
},
{
Expand Down
Binary file modified docs/assets/images/Panel.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 12 additions & 2 deletions docs/configuration_fa.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,23 @@
</p>
<br>

### 2-2- کانفیگ‌های Warp و Warp on Warp
### 2-2- سابسکریپشن Warp

<p align="center">
<img src="assets/images/Warp-Configs.jpg">
</p>

این بخش یه کانفیگ Warp میده که IP کلادفلر ایران هست و یه کانفیگ Warp on Warp که IP خارجه. کانفیگ Warp on Warp روی هسنه Xray عملکرد خوبی نداره متاسفانه. در نظر داشته باشید حتما از اسکنر استفاده کنید برای پیدت کردن Endpoint مناسب روی اپراتور خودتون. اسکریپت اسکنر داخل پنل هست، کپی کنید و داخل Termux روی اندروید اجراش کنید. هر بار که ساب Warp رو آپدیت کنید کانفیگ‌های Warp تغییر میکنن ولی از همون Endpoint استفاده میکنن. ترجیحا از اپلیکیشن MahsaNG برای اپراتورهایی که وارپ متصل نمیشه استفاده کنهید.
این بخش یه کانفیگ Warp میده که IP کلادفلر ایران هست و یه کانفیگ Warp on Warp (به اختضار WoW) که IP خارجه و یه کافیگ Warp Best Ping که میاد به سریعترین کانفیگ Warp وصل میشه. بصورت پبشفرض یه کانفیگ Warp بیشتر نیست ولی اگر قسمت Warp Endpoints رو ویرایش کنید به نعداد Endpoint کانفیگ Warp اضافه میشه.

> [!CAUTION]
> 1- دقت کنید وارد کردن Endpoint به صورت IP:Port یا Domain:port هست و باید بینشون ویرگول باشه.
>
> 2- برای وارد کردن IPv6 باید داخل [] قرارش بدید. به مثال زیر دقت کنید:
>
> 123.45.8.6:1701 , engage.cloudflareclient:2408 , [2a06:98c1:3120::3]:939

کانفیگ WoW روی هسنه Xray عملکرد خوبی نداره متاسفانه. در نظر داشته باشید حتما از اسکنر استفاده کنید برای پیدت کردن Endpoint مناسب روی اپراتور خودتون. اسکریپت اسکنر داخل پنل هست، کپی کنید و داخل Termux روی اندروید اجراش کنید. هر بار که ساب Warp رو آپدیت کنید کانفیگ‌های Warp تغییر میکنن ولی از همون Endpoint های شما استفاده میکنن. ترجیحا از اپلیکیشن MahsaNG برای اپراتورهایی که وارپ متصل نمیشه استفاده کنهید.
<br><br>
### 2-3- استفاده از فرگمنت در DESKTOP - Nekoray

Expand Down
9 changes: 6 additions & 3 deletions docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@
<br>

14- پورت‌های non TLS رو فعال کردم ولی وصل نمیشن!
- دقت کنید برای استفاده از کانفیگ‌های non TLS باید به یکی از دو روش زیر دپلوی کنید:
1. از طریق Workers بدون دامنه‌ شخصی یا Custom Domain.
2. از طریق Pages و با دامنه‌ی شخصی.
- دقت کنید برای استفاده از کانفیگ‌های non TLS باید فقط از طریق Workers بدون دامنه‌ شخصی یا Custom Domain دپلوی کرده باشید.
<br>

15- کانفیگ Best Fragment چرا وصل نمیشه یا پینگ میده کار نمیکنه؟
- از تنظیمات `Prefer IPv6` رو خاموش کنید.

0 comments on commit 25cf0b8

Please sign in to comment.