ویپیان net.vpn
یک فراخوانی که همهی پروتکلهای پراکسی را در شبکه.تونل ثبت میکند تا پیکربندی JSON به سبک V2Ray هر دو سو را اجرا کند.
واردسازی شبکه.ویپیان
نام آرگومانها شناسهی خود کد است و معادل فارسی ندارد؛ گونهها، کلیدواژهها و نام بستهها با معادل فارسی نوشته میشوند.
این بسته تونل را به همهی بستههای پروتکل وصل میکند: ساکس، پراکسی اچتیتیپی، تروجان، وی لس، وی مس و شدوساکس، همراه با تنظیمات جریان V2Ray در انتقال شبکه (tcp، tls، ws، httpupgrade و تکهتکه کردن ClientHello در TLS). با یک فراخوانی ثبت، پیکربندی JSON به سبک V2Ray اجرا میشود، هم درونسوها و هم خروجیها.
ثبتیاثبت با گزینههاسازندهها را نصب میکند. پس از آنتونل.ساخت درونسو،تونل.ساخت خروجیوتونل.ساخت شمارهگیرهمهی پروتکلهای بالا را میفهمند.شروع همههمهی درونسوهای یک پیکربندی را شروع میکند واجرای پیکربندییک برنامهی کامل است: بارگذاری، بررسی، شروع و انتظار برای Ctrl-C.- بهطور پیشفرض محلی. درونسو روی
127.0.0.1شنود میکند مگر فیلدlistenچیز دیگری بگوید. برای کارسازی که ماشینهای دیگر به آن وصل میشوند"listen": "0.0.0.0"بنویسید. - با
use_dohنام کارسازها با DNS روی HTTPS حل میشود و قاعدههای بازهی IP میتوانند مقصد دامنهای را هم بسنجند، با پاسخهایی که نگه داشته میشوند. - درونسوهای تروجان کارساز خودشان را راه میاندازند؛ نشانی شنودشان از بستهی تروجان پیروی میکند.
// زبان: فارسی
واردسازی شبکه.ساکس
واردسازی شبکه.تی سی پی
واردسازی شبکه.تونل
واردسازی شبکه.ویپیان
ناپایا echo_srv := تی سی پی.سرور {}
تابع echo_once():
c := تی سی پی.پذیرش(echo_srv)
s := تونل.پوشاندن تی سی پی(c)
data := s.خواندن(100)
s.نوشتن("echo:" + data)
s.بستن()
پایان
تابع ریشه:
echo_srv = تی سی پی.پیوند(0)
_t := نخساز(echo_once)
ویپیان.ثبت()
cfg := تونل.تجزیه پیکربندی(`{"inbounds":[{"tag":"in","port":0,"protocol":"mixed"}],"outbounds":[{"tag":"direct","protocol":"freedom"}]}`)
stats := تونل.آمار جدید()
listeners := ویپیان.شروع همه(cfg، stats)
سرچاپ "در حال شنود:"، ویپیان.معتبر(listeners[0])
s := تونل.اتصال تی سی پی("127.0.0.1"، listeners[0].درگاه، 3000)
r := ساکس.دستدهی کلاینت(s، ساکس.کلاینت { نسخه = 5 }، ساکس.فرمان اتصال، "127.0.0.1"، تی سی پی.درگاه(echo_srv))
سرچاپ "دستدهی SOCKS:"، r.موفق
s.نوشتن("hello")
سرچاپ s.خواندن(100)
s.بستن()
ویپیان.توقف(listeners[0])
تی سی پی.بستن سرور(echo_srv)
پایانگونهها
گزینهها Options
ساختار گزینهها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| تکهتکه کردن | fragment | منطقی = نادرست | ClientHello در TLS اتصالهای خروجی به تکههای کوچک شکسته شود. |
| کمینه تکه | fragment_min | صحیح = 4 | کوچکترین تکه به بایت. |
| بیشینه تکه | fragment_max | صحیح = 12 | بزرگترین تکه به بایت. |
| تاخیر تکه | fragment_delay_ms | صحیح = 5 | مکث میان تکهها. |
| حالت تکه تکه کردن | fragment_mode | رشته = "tcp" | چه چیز تکه میشود: "tcp"، "tls" یا "both". |
| برش نام سرور | fragment_sni | منطقی = نادرست | در میانهی نام سرور هم برش میزند. |
| شمار نوشتن های تکه شده | fragment_writes | صحیح = 1 | چند نوشتن اول دستدهی تکه میشود. |
| مهلت بی کاری خواندن | read_timeout_ms | صحیح = 0 | مهلت بیکاری خواندن اتصالهای خروجی. ۰ یعنی همیشه منتظر. |
| مهلت بی کاری نوشتن | write_timeout_ms | صحیح = 0 | مهلت بیکاری نوشتن اتصالهای خروجی. ۰ یعنی همیشه منتظر. |
| استفاده از دی او اچ | use_doh | منطقی = نادرست | نام کارسازها با حلکنندهی زیر حل شود. |
| حلکننده | resolver | دیاوهاچ.حلکننده | حلکنندهی DNS روی HTTPS. |
// زبان: فارسی
واردسازی شبکه.تونل
واردسازی شبکه.ویپیان
تابع ریشه:
ویپیان.ثبت با گزینهها(ویپیان.گزینهها { تکهتکه کردن = درست، کمینه تکه = 2، بیشینه تکه = 8 })
هر proto در ["vless"، "vmess"، "trojan"، "socks"، "http"، "mixed"]:
ib := تونل.ساخت درونسو(تونل.پیکربندی درونسو { پروتکل = proto، تنظیمات = `{"clients":[{"id":"0b3a8c6e-1f3d-4d7e-9a50-3f8e6a1c2b44","password":"secret"}],"method":"aes-128-gcm","password":"secret"}` })
سرچاپ "inbound"، proto، ib.نام()
پایان
هر proto در ["vless"، "vmess"، "trojan"، "shadowsocks"، "ss"، "socks"، "http"، "freedom"]:
ob := تونل.ساخت خروجی(تونل.پیکربندی خروجی { پروتکل = proto، تنظیمات = `{"address":"vpn.example.com","port":443}` })
سرچاپ "outbound"، proto، ob.نام()
پایان
cfg := تونل.تجزیه پیکربندی(`{"inbounds":[{"tag":"in","port":0,"protocol":"mixed"}],"outbounds":[{"tag":"direct","protocol":"freedom"},{"tag":"out","protocol":"socks","settings":{"address":"127.0.0.1","port":1080}}]}`)
dialer := ویپیان.ساخت شمارهگیر(cfg)
سرچاپ dialer.نام()
ویپیان.ثبت()
سرچاپ تونل.ساخت درونسو(تونل.پیکربندی درونسو { پروتکل = "vless" }).نام()
پایانحلکننده دی او اچ DohResolver
ساختار حلکننده دی او اچ| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| حلکننده | resolver | دیاوهاچ.حلکننده | حلکنندهی DNS روی HTTPS. |
| نسخه شش | ipv6 | منطقی = درست | رکورد AAAA هم پرسیده شود. |
جستجو Lookup
تابع جستجو(host: رشته): تونل.نتیجه جستجوشمارهگیر انتقال TransportDialer
ساختار شمارهگیر انتقال| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| تنظیمات | settings | انتقال شبکه.تنظیمات | تنظیمات شبکه، TLS و تکهتکه. |
// زبان: فارسی
واردسازی شبکه.انتقال شبکه
واردسازی شبکه.تونل
واردسازی شبکه.ویپیان
تابع ریشه:
raw := `{"network":"ws","security":"tls","tlsSettings":{"serverName":"cdn.example.com"},"wsSettings":{"path":"/chat","headers":{"Host":"front.example.com"}}}`
s := ویپیان.تنظیمات جریان(raw)
سرچاپ s.شبکه، s.تی ال اس، s.نام سرور، s.مسیر، s.سربرگ میزبان
node := تونل.گره { پروتکل = "vless"، میزبان = "vpn.example.com"، درگاه = 443، شبکه = "ws"، تی ال اس = درست، نام سرور = "vpn.example.com"، مسیر = "/ws" }
n := ویپیان.تنظیمات گره(node)
سرچاپ n.شبکه، n.تی ال اس، n.نام سرور، n.مسیر
هر proto در ["vless"، "vmess"، "shadowsocks"، "trojan"، "socks"، "http"، "wireguard"]:
سرچاپ proto، ویپیان.شمارهگیر از گره(تونل.گره { پروتکل = proto، میزبان = "vpn.example.com"، درگاه = 443 }).نام()
پایان
t := ویپیان.نشانی تونل از انتقال(انتقال شبکه.نشانی جدید("example.com"، 443))
سرچاپ t.میزبان، t.درگاه
back := ویپیان.نشانی انتقال از تونل(تونل.نشانی جدید("example.org"، 80))
سرچاپ back.میزبان، back.درگاه
پایاناتصال Dial
تابع اتصال(target: تونل.نشانی): dyn تونل.جریاننام Name
تابع نام(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
شمارهگیر ویلس VlessDialer
ساختار شمارهگیر ویلس| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| گره | node | تونل.گره | کارساز. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
اتصال Dial
تابع اتصال(target: تونل.نشانی): dyn تونل.جریاننام Name
تابع نام(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
شمارهگیر ویمس VmessDialer
ساختار شمارهگیر ویمس| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| گره | node | تونل.گره | کارساز. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
اتصال Dial
تابع اتصال(target: تونل.نشانی): dyn تونل.جریاننام Name
تابع نام(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
شمارهگیر شدوساکس SsDialer
ساختار شمارهگیر شدوساکس| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| گره | node | تونل.گره | کارساز. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
اتصال Dial
تابع اتصال(target: تونل.نشانی): dyn تونل.جریاننام Name
تابع نام(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
خروجیساز OutMaker
ساختار خروجیساز| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| پروتکل | proto | رشته = "" | نام پروتکل. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
پروتکل Protocol
تابع پروتکل(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
ساخت Make
تابع ساخت(cfg: تونل.پیکربندی خروجی): dyn تونل.شمارهگیرنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
درونسو ویلس VlessInbound
ساختار درونسو ویلس| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| کاربران | users | وکتور<وی لس.کاربر> | کاربران مجاز. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
نام Name
تابع نام(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
دستدهی Handshake
تابع دستدهی(s: dyn تونل.جریان): تونل.نشستپاسخ Reply
تابع پاسخ(_s: dyn تونل.جریان، sess: تونل.نشست، ok: منطقی)درونسو ویمس VmessInbound
ساختار درونسو ویمس| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| کاربران | users | وکتور<وی مس.کاربر> | کاربران مجاز. |
| پالایه تکرار | replay | وی مس.فیلتر بازپخش | درخواستهای اخیر را به یاد میسپارد تا تکرار نشوند. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
نام Name
تابع نام(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
دستدهی Handshake
تابع دستدهی(s: dyn تونل.جریان): تونل.نشستپاسخ Reply
تابع پاسخ(_s: dyn تونل.جریان، sess: تونل.نشست، ok: منطقی)درونسو شدوساکس SsInbound
ساختار درونسو شدوساکس| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| کارساز | server | شدوساکس.سرور | تنظیمات کارساز شدوساکس. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
نام Name
تابع نام(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
دستدهی Handshake
تابع دستدهی(s: dyn تونل.جریان): تونل.نشستپاسخ Reply
تابع پاسخ(_s: dyn تونل.جریان، sess: تونل.نشست، ok: منطقی)درونسوساز InMaker
ساختار درونسوساز| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| پروتکل | proto | رشته = "" | نام پروتکل. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
پروتکل Protocol
تابع پروتکل(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
ساخت Make
تابع ساخت(cfg: تونل.پیکربندی درونسو): dyn تونل.پذیرندهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
اتصال انتقال در انتظار TransportPending
ساختار اتصال انتقال در انتظار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| خام | raw | انتقال شبکه.اتصال | اتصال خام. |
| تنظیمات | settings | انتقال شبکه.تنظیمات | شیوهی ارتقا. |
| ارتقا یافته | upgraded | منطقی = نادرست | درست وقتی اتصال با transport.Accept (gRPC و ریالیتی) پذیرفته شده و ارتقا انجام شده است. |
// زبان: فارسی
واردسازی شبکه.ساکس
واردسازی شبکه.تی سی پی
واردسازی شبکه.تونل
واردسازی شبکه.ویپیان
ناپایا echo_srv := تی سی پی.سرور {}
تابع echo_once():
c := تی سی پی.پذیرش(echo_srv)
s := تونل.پوشاندن تی سی پی(c)
data := s.خواندن(100)
s.نوشتن("echo:" + data)
s.بستن()
پایان
تابع ریشه:
echo_srv = تی سی پی.پیوند(0)
_t := نخساز(echo_once)
ویپیان.ثبت()
cfg := تونل.تجزیه پیکربندی(`{"inbounds":[{"tag":"in","port":0,"protocol":"mixed"}],"outbounds":[{"tag":"direct","protocol":"freedom"}]}`)
stats := تونل.آمار جدید()
listeners := ویپیان.شروع همه(cfg، stats)
سرچاپ "listening:"، ویپیان.معتبر(listeners[0])
s := تونل.اتصال تی سی پی("127.0.0.1"، listeners[0].درگاه، 3000)
r := ساکس.دستدهی کلاینت(s، ساکس.کلاینت { نسخه = 5 }، ساکس.فرمان اتصال، "127.0.0.1"، تی سی پی.درگاه(echo_srv))
سرچاپ "socks handshake:"، r.موفق
s.نوشتن("hello")
سرچاپ s.خواندن(100)
s.بستن()
ویپیان.توقف(listeners[0])
تی سی پی.بستن سرور(echo_srv)
پایانمعتبر Valid
تابع معتبر(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
گشودن Open
تابع گشودن(): dyn تونل.جریاننمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
رها کردن Abort
تابع رها کردن()نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
مبدا Remote
تابع مبدا(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
پذیرنده انتقال TransportAcceptor
ساختار پذیرنده انتقال| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شنونده | listener | انتقال شبکه.شنونده | شنونده. |
| تنظیمات | settings | انتقال شبکه.تنظیمات | تنظیمات شبکه و TLS. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
پذیرش Accept
تابع پذیرش(): dyn تونل.اتصال در انتظارنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
درگاه Port
تابع درگاه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
معتبر Ok
تابع معتبر(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
بستن Close
تابع بستن()نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
شنونده Listener
ساختار شنونده| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| کارساز | server | تونل.کارساز پذیرش | کارساز پذیرش. |
| کارساز دارد | has_server | منطقی = نادرست | برای درونسوی تروجان که کارساز خودش را دارد نادرست است. |
| تروجان | trojan | تروجان.کارساز | کارساز تروجان. |
| درگاه | port | صحیح = 0 | درگاه در حال استفاده. |
| برچسب | tag | رشته = "" | برچسب درونسو. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
پایاها و متغیرها
سقف دست دادن مبدا PENDING_PER_SOURCE
پایا سقف دست دادن مبدا: صحیح۳۲ = 32تابعها
تنظیمات جریان StreamSettings
تابع تنظیمات جریان(raw: رشته): انتقال شبکه.تنظیماتنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
تنظیمات گره NodeSettings
تابع تنظیمات گره(n: تونل.گره): انتقال شبکه.تنظیماتثبت.نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
شمارهگیر از گره DialerFromNode
تابع شمارهگیر از گره(n: تونل.گره): dyn تونل.شمارهگیرنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
نشانی تونل از انتقال ToTunnelAddr
تابع نشانی تونل از انتقال(a: انتقال شبکه.نشانی): تونل.نشانینمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
نشانی انتقال از تونل ToTransportAddr
تابع نشانی انتقال از تونل(a: تونل.نشانی): انتقال شبکه.نشانینمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam
ثبت با گزینهها RegisterWith
تابع ثبت با گزینهها(o: گزینهها)نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
ثبت Register
تابع ثبت()نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
ساخت شمارهگیر BuildDialer
تابع ساخت شمارهگیر(c: تونل.پیکربندی): تونل.شمارهگیر مسیریابنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam
سیاست درونسو InboundPolicy
تابع سیاست درونسو(ib: تونل.پیکربندی درونسو): تونل.سیاست مقصدallowPrivate (فقط روی شنوندهی حلقه محلی)، allowCidr، denyCidr، allowDomain، denyDomain.شروع Start
تابع شروع(ib: تونل.پیکربندی درونسو، dialer: dyn تونل.شمارهگیر، stats: تونل.آمار): شنوندهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
شروع با مسیریاب StartRouted
تابع شروع با مسیریاب(ib: تونل.پیکربندی درونسو، rd: تونل.شمارهگیر مسیریاب، stats: تونل.آمار): شنوندهStart برای یک مسیریاب: نامهایی که مسیریاب مستقیم میفرستد یک بار تفکیک میشوند، با سیاست درونسو سنجیده میشوند و به نشانی سنجیدهشده وصل میشوند.شروع همه StartAll
تابع شروع همه(c: تونل.پیکربندی، stats: تونل.آمار): وکتور<شنونده>نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
معتبر Ok
تابع معتبر(l: شنونده): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
توقف Stop
تابع توقف(l: شنونده)نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
خلاصه Summary
تابع خلاصه(st: تونل.آمار): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
انتظار Wait
تابع انتظار(st: تونل.آمار، every: صحیح، limit: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam
اجرای پیکربندی RunConfig
تابع اجرای پیکربندی(path: رشته، every: صحیح، limit: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam