کتابخانه‌ی استاندارد · شبکه

وی‌پی‌ان 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 می‌توانند مقصد دامنه‌ای را هم بسنجند، با پاسخ‌هایی که نگه داشته می‌شوند.
  • درون‌سوهای تروجان کارساز خودشان را راه می‌اندازند؛ نشانی شنودشان از بسته‌ی تروجان پیروی می‌کند.
net-vpn-guide-app.salam
// زبان: فارسی
واردسازی شبکه.ساکس
واردسازی شبکه.تی سی پی
واردسازی شبکه.تونل
واردسازی شبکه.وی‌پی‌ان

ناپایا 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)
پایان
خروجیدر حال شنود: true دست‌دهی SOCKS: true echo:hello

گونه‌ها

گزینه‌ها Options

ساختار گزینه‌ها
تنظیمات ثبت: تکه‌تکه کردن ClientHello در TLS و DNS روی HTTPS.
نامانگلیسیگونهتوضیح
تکه‌تکه کردن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.
net-vpn-Register.salam
// زبان: فارسی
واردسازی شبکه.تونل
واردسازی شبکه.وی‌پی‌ان

تابع ریشه:
    وی‌پی‌ان.ثبت با گزینه‌ها(وی‌پی‌ان.گزینه‌ها { تکه‌تکه کردن = درست، کمینه تکه = 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" }).نام()
پایان
خروجیinbound vless vless inbound vmess vmess inbound trojan trojan inbound socks socks5 inbound http http inbound mixed mixed outbound vless vless outbound vmess vmess outbound trojan trojan outbound shadowsocks shadowsocks outbound ss shadowsocks outbound socks socks5 outbound http http outbound freedom direct router vless

حل‌کننده دی او اچ DohResolver

ساختار حل‌کننده دی او اچ
حل‌کننده‌ی net.doh را به مسیریاب و شماره‌گیر مستقیم وصل می‌کند.
نامانگلیسیگونهتوضیح
حل‌کنندهresolverدی‌اوه‌اچ.حل‌کنندهحل‌کننده‌ی DNS روی HTTPS.
نسخه ششipv6منطقی = درسترکورد AAAA هم پرسیده شود.

جستجو Lookup

تابع جستجو(host: رشته): تونل.نتیجه جستجو
پاسخ‌های A و AAAA یک نام را برمی‌گرداند.

شماره‌گیر انتقال TransportDialer

ساختار شماره‌گیر انتقال
اتصال ساده‌ی انتقال به مقصد باز می‌کند.
نامانگلیسیگونهتوضیح
تنظیماتsettingsانتقال شبکه.تنظیماتتنظیمات شبکه، TLS و تکه‌تکه.
net-vpn-Settings.salam
// زبان: فارسی
واردسازی شبکه.انتقال شبکه
واردسازی شبکه.تونل
واردسازی شبکه.وی‌پی‌ان

تابع ریشه:
    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.درگاه
پایان
خروجیws true cdn.example.com /chat front.example.com ws true vpn.example.com /ws vless vless vmess vmess shadowsocks shadowsocks trojan trojan socks socks5 http http wireguard block example.com 443 example.org 80

اتصال Dial

تابع اتصال(target: تونل.نشانی): dyn تونل.جریان
وصل می‌شود و جریان را برمی‌گرداند.

نام Name

تابع نام(): رشته
transport را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam

شماره‌گیر وی‌لس VlessDialer

ساختار شماره‌گیر وی‌لس
شماره‌گیر برای کارساز وی‌لس.
نامانگلیسیگونهتوضیح
گرهnodeتونل.گرهکارساز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam

اتصال Dial

تابع اتصال(target: تونل.نشانی): dyn تونل.جریان
از راه کارساز به مقصد وصل می‌شود.

نام Name

تابع نام(): رشته
vless را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam

شماره‌گیر وی‌مس VmessDialer

ساختار شماره‌گیر وی‌مس
شماره‌گیر برای کارساز وی‌مس.
نامانگلیسیگونهتوضیح
گرهnodeتونل.گرهکارساز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam

اتصال Dial

تابع اتصال(target: تونل.نشانی): dyn تونل.جریان
از راه کارساز به مقصد وصل می‌شود.

نام Name

تابع نام(): رشته
vmess را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam

شماره‌گیر شدوساکس SsDialer

ساختار شماره‌گیر شدوساکس
شماره‌گیر برای کارساز شدوساکس.
نامانگلیسیگونهتوضیح
گرهnodeتونل.گرهکارساز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam

اتصال Dial

تابع اتصال(target: تونل.نشانی): dyn تونل.جریان
از راه کارساز به مقصد وصل می‌شود.

نام Name

تابع نام(): رشته
shadowsocks را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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

تابع نام(): رشته
vless را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam

دست‌دهی Handshake

تابع دست‌دهی(s: dyn تونل.جریان): تونل.نشست
درخواست را می‌خواند و کاربر را می‌سنجد.

پاسخ Reply

تابع پاسخ(_s: dyn تونل.جریان، sess: تونل.نشست، ok: منطقی)
اگر مقصد در دسترس نبود جریان را می‌بندد.

درون‌سو وی‌مس VmessInbound

ساختار درون‌سو وی‌مس
کارخواه‌های وی‌مس را می‌پذیرد.
نامانگلیسیگونهتوضیح
کاربرانusersوکتور<وی مس.کاربر>کاربران مجاز.
پالایه تکرارreplayوی مس.فیلتر بازپخشدرخواست‌های اخیر را به یاد می‌سپارد تا تکرار نشوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam

نام Name

تابع نام(): رشته
vmess را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam

دست‌دهی Handshake

تابع دست‌دهی(s: dyn تونل.جریان): تونل.نشست
درخواست را می‌خواند و کاربر را می‌سنجد.

پاسخ Reply

تابع پاسخ(_s: dyn تونل.جریان، sess: تونل.نشست، ok: منطقی)
اگر مقصد در دسترس نبود جریان را می‌بندد.

درون‌سو شدوساکس SsInbound

ساختار درون‌سو شدوساکس
کارخواه‌های شدوساکس را می‌پذیرد.
نامانگلیسیگونهتوضیح
کارسازserverشدوساکس.سرورتنظیمات کارساز شدوساکس.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam

نام Name

تابع نام(): رشته
shadowsocks را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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 و ریالیتی) پذیرفته شده و ارتقا انجام شده است.
net-vpn-App.salam
// زبان: فارسی
واردسازی شبکه.ساکس
واردسازی شبکه.تی سی پی
واردسازی شبکه.تونل
واردسازی شبکه.وی‌پی‌ان

ناپایا 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)
پایان
خروجیlistening: true socks handshake: true echo:hello

معتبر 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
چند اتصال از یک نشانی را Start روی هر درون‌سویی که باز می‌کند همزمان در دست‌دهی می‌پذیرد: ۳۲. کارخواهی که اتصالی باز کند و چیزی نگوید پس از مهلت دست‌دهی رها می‌شود.

تابع‌ها

تنظیمات جریان StreamSettings

تابع تنظیمات جریان(raw: رشته): انتقال شبکه.تنظیمات
شیء streamSettings را می‌خواند: شبکه (tcp، ws، httpupgrade، grpc)، امنیت (none، tls، reality)، tlsSettings، realitySettings (کارخواه: serverName، publicKey، shortId، spiderX، fingerprint؛ سرور: privateKey، dest، serverNames، shortIds)، wsSettings، httpupgradeSettings، grpcSettings (serviceName، multiMode)، timeouts (read و write به میلی‌ثانیه) و fragment (mode، sni، writes، min، max، delay).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Settings.salam

تنظیمات گره NodeSettings

تابع تنظیمات گره(n: تونل.گره): انتقال شبکه.تنظیمات
تنظیمات انتقال برای گره‌ی یک پیوند اشتراک، با کلیدهای ریالیتی و نام سرویس gRPC و گزینه‌های تکه‌تکه و مهلت ثبت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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

تابع ثبت()
خروجی و درون‌سوی socks، http، trojan، vless، vmess و shadowsocks را ثبت می‌کند تا پیکربندی جیسون هر دو سو را اجرا کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam

ساخت شماره‌گیر BuildDialer

تابع ساخت شماره‌گیر(c: تونل.پیکربندی): تونل.شماره‌گیر مسیریاب
مسیریاب و شماره‌گیرهای پیکربندی را می‌سازد و در صورت روشن بودن، حل‌کننده را به مسیریاب می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-Register.salam

سیاست درون‌سو InboundPolicy

تابع سیاست درون‌سو(ib: تونل.پیکربندی درون‌سو): تونل.سیاست مقصد
سیاست مقصد یک درون‌سو را از تنظیمات آن می‌سازد: allowPrivate (فقط روی شنونده‌ی حلقه محلی)، allowCidr، denyCidr، allowDomain، denyDomain.

شروع Start

تابع شروع(ib: تونل.پیکربندی درون‌سو، dialer: dyn تونل.شماره‌گیر، stats: تونل.آمار): شنونده
یک درون‌سو را شروع می‌کند. روی نشانی پیکربندی شنود می‌کند؛ پیش‌فرض 127.0.0.1. برای باز کردن به شبکه 0.0.0.0 بنویسید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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: صحیح)
منتظر Ctrl-C یا پایان مهلت می‌ماند و هر چند ثانیه خلاصه را چاپ می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam

اجرای پیکربندی RunConfig

تابع اجرای پیکربندی(path: رشته، every: صحیح، limit: صحیح): صحیح
پرونده‌ی پیکربندی را بار می‌کند، می‌سنجد، همه چیز را شروع می‌کند و منتظر می‌ماند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: net-vpn-App.salam