ਮੈਂ ਆਪਣਾ ਖੁਦ ਦਾ ਟਨਲਿੰਗ ਪਲੇਟਫਾਰਮ ਬਣਾਇਆ

ਮੈਂ ਆਪਣੇ ਲੈਪਟਾਪ 'ਤੇ ਇੱਕ ਵੈੱਬ ਐਪ ਨੂੰ ਨਿਖਾਰਨ ਵਿੱਚ ਤਿੰਨ ਦਿਨ ਲਗਾਏ। ਇਹ ਬਿਲਕੁਲ ਵਧੀਆ ਲੱਗ ਰਹੀ ਸੀ। ਫਿਰ ਮੈਂ ਇਸਨੂੰ ਆਪਣੇ ਫ਼ੋਨ 'ਤੇ ਟੈਸਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਸਭ ਕੁਝ ਟੁੱਟ ਗਿਆ।

ਜਦੋਂ ਤੁਹਾਨੂੰ ਦੂਜੇ ਡਿਵਾਈਸ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਤਾਂ ਲੋਕਲ ਡਿਵੈਲਪਮੈਂਟ (Local development) ਉਲਝਣ ਭਰਪੂਰ ਹੋ ਜਾਂਦੀ ਹੈ। ਫਾਇਰਵਾਲ (firewalls) ਅਤੇ HTTPS ਸਰਟੀਫਿਕੇਟ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਕਾਰਨ ਲੋਕਲ IP ਸਾਂਝਾ ਕਰਨਾ ਅਸਫਲ ਰਹਿੰਦਾ ਹੈ।

ਮੈਂ Ngrok ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ, ਪਰ ਇਸਦਾ ਮੁਫ਼ਤ ਵਰਜ਼ਨ (free tier) ਕਨੈਕਸ਼ਨ ਤੋੜ ਦਿੰਦਾ ਹੈ। URL ਵੀ ਬਹੁਤ ਮਾੜੇ ਲੱਗਦੇ ਹਨ। a1b2-34-56.ngrok-free.app ਵਰਗੇ ਰੈਂਡਮ ਸਟ੍ਰਿੰਗਸ (random strings) ਕਲਾਇੰਟਸ ਜਾਂ ਟੀਮਾਂ ਨਾਲ ਸਾਂਝਾ ਕਰਨ ਲਈ ਚੰਗੇ ਨਹੀਂ ਹੁੰਦੇ।

ਮੈਂ ਸਾਫ਼ ਅਤੇ ਪੜ੍ਹਨਯੋਗ URL ਵਾਲਾ ਇੱਕ ਟਨਲ ਚਾਹੁੰਦਾ ਸੀ। ਇਸ ਲਈ ਮੈਂ ਆਪਣਾ ਖੁਦ ਦਾ ਬਣਾਇਆ।

ਮੈਂ ਇੱਕ ਕਸਟਮ ਟਨਲ ਨੂੰ URL ਸ਼ਾਰਟਨਰ (URL shortener) ਨਾਲ ਜੋੜ ਦਿੱਤਾ। ਮੈਂ ਸਮਾਰਟ ਸਲੱਗਸ (smart slugs) ਬਣਾਉਣ ਲਈ AI ਜੋੜਿਆ ਅਤੇ ਸੁਰੱਖਿਆ ਪ੍ਰਬੰਧ (security protections) ਵੀ ਬਣਾਏ।

ਟੈਕ ਸਟੈਕ (The tech stack): • Tunnel / Proxy: Django Channels, Daphne, WebSockets, Python & Node.js CLI • Frontend: Next.js, TailwindCSS, Shadcn/UI • Backend: Django 5, Graphene GraphQL • Database: PostgreSQL (Neon) • Auth: JWT, bcrypt • AI: Google Gemini • Security: MaxMind GeoLite2, Google Safe Browsing API

ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ:

  • ਦੋ-ਪਾਸੇ (Bi-directional) WebSocket ਟਨਲਿੰਗ। ਇੱਕ ਲੋਕਲ CLI ਏਜੰਟ HTTP ਰਿਕੁਐਸਟਾਂ ਨੂੰ ਫਾਰਵਰਡ ਕਰਨ ਲਈ Django ਸਰਵਰ ਨਾਲ ਜੁੜਦਾ ਹੈ।
  • Race-condition ਤੋਂ ਬਚਾਅ। ਐਨਾਲਿਟਿਕਸ (analytics) ਨੂੰ ਸਹੀ ਰੱਖਣ ਲਈ ਮੈਂ ਐਟੋਮਿਕ ਅਪਡੇਟਸ (atomic updates) ਲਈ Django F() expressions ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹਾਂ।
  • Non-blocking ਟੈਲੀਮੈਟਰੀ (telemetry)। ਲੇਟੈਂਸੀ (latency) ਨੂੰ ਘੱਟ ਰੱਖਣ ਲਈ ਲੋਕੇਸ਼ਨ ਅਤੇ OS ਦੀਆਂ ਲੁੱਕਅੱਪਸ ਬੈਕਗ੍ਰਾਊਂਡ ਥ੍ਰੈਡਸ ਵਿੱਚ ਚਲਦੀਆਂ ਹਨ।
  • AI ਸਲੱਗਸ। Gemini ਰੈਂਡਮ ਟੈਕਸਟ ਦੀ ਬਜਾਏ ਇੱਕ ਅਰਥਪੂਰਨ ਸਲੱਗ ਬਣਾਉਣ ਲਈ ਟਾਰਗੇਟ URL ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ।
  • ਸਰਗਰਮ ਸੁਰੱਖਿਆ (Proactive security)। ਮੈਂ ਕਿਸੇ ਵੀ ਲਿੰਕ ਨੂੰ ਸੇਵ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪ੍ਰਾਈਵੇਟ IP ਰੇਂਜਾਂ ਨੂੰ ਬਲੌਕ ਕਰਦਾ ਹਾਂ ਅਤੇ Google Safe Browsing ਚੈੱਕ ਚਲਾਉਂਦਾ ਹਾਂ।

ਬੈਕਐਂਡ ਅਤੇ ਟਨਲਿੰਗ ਲੌਜਿਕ ਸਥਿਰ ਹਨ। ਫਰੰਟਐਂਡ ਅਜੇ ਵੀ ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ।

ਮੈਂ ਇਸ ਸਮੇਂ IITM ਵਿੱਚ ਪ੍ਰੀਖਿਆਵਾਂ ਦੀ ਤਿਆਰੀ ਕਰ ਰਿਹਾ ਹਾਂ। ਮੈਂ ਆਪਣੀ ਪੜ੍ਹਾਈ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਨ ਲਈ ਨਵੇਂ ਫੀਚਰਾਂ ਨੂੰ ਰੋਕ ਰਿਹਾ ਹਾਂ। ਕੋਡ ਨੂੰ ਇੰਝ ਹੀ ਪਿਆ ਰਹਿਣ ਦੇਣ ਦੀ ਬਜਾਏ, ਮੈਂ ਇਸਨੂੰ ਰਿਵਿਊ (review) ਲਈ ਖੋਲ੍ਹ ਰਿਹਾ ਹਾਂ।

ਮੈਨੂੰ ਕੁਝ ਚੀਜ਼ਾਂ 'ਤੇ ਤੁਹਾਡੇ ਫੀਡਬੈਕ ਦੀ ਲੋੜ ਹੈ:

  • Latency: ਮੈਂ ਉੱਚ ਪੱਧਰ (high scale) 'ਤੇ ਰੀਡਾਇਰੈਕਟਸ (redirects) ਨੂੰ 10ms ਤੋਂ ਘੱਟ ਕਿਵੇਂ ਰੱਖ ਸਕਦਾ ਹਾਂ?
  • Security: SSRF ਮਿਟੀਗੇਸ਼ਨ (mitigation) ਨੂੰ ਮਜ਼ਬੂਤ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਵਧੀਆ ਤਰੀਕਾ ਕੀ ਹੈ?
  • Scalability: ਕੀ ਮੈਨੂੰ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਚੱਲਣ ਵਾਲੇ ਟਨਲਜ਼ ਲਈ WebSockets ਜਾਂ TCP ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ?
  • Observability: ਟਨਲ ਦੀ ਸਿਹਤ ਲਈ ਮੈਨੂੰ ਕਿਹੜੇ ਮੈਟ੍ਰਿਕਸ (metrics) ਨੂੰ ਟ੍ਰੈਕ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ?

ਜੇਕਰ ਤੁਹਾਨੂੰ ਪ੍ਰੌਕਸੀ ਵਰਕਰਾਂ (proxy workers) ਜਾਂ ਸਿਸਟਮ ਡਿਜ਼ਾਈਨ (system design) ਦਾ ਅਨੁਭਵ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਵਿਚਾਰ ਸਾਂਝੇ ਕਰੋ।

ਪੂਰਾ ਸਿਸਟਮ ਡਿਜ਼ਾਈਨ ਬ੍ਰੇਕਡਾਊਨ: [Link] ਕੋਡਬੇਸ (Codebase): [Link]

ਤੁਸੀਂ ਲੋਕਲ ਡਿਵੈਲਪਮੈਂਟ ਦੌਰਾਨ ਮੋਬਾਈਲ ਪਰਮਿਸ਼ਨਾਂ ਦੀ ਟੈਸਟਿੰਗ ਕਿਵੇਂ ਕਰਦੇ ਹੋ? ਕੀ ਤੁਸੀਂ Third-party ਟਨਲਜ਼ ਜਾਂ ਕਸਟਮ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ?

ਸੋਮਾ (Source): https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d