મેં મારું પોતાનું ટનલિંગ પ્લેટફોર્મ બનાવ્યું
મેં મારા લેપટોપ પર વેબ એપને સુધારવામાં ત્રણ દિવસ વિતાવ્યા. તે એકદમ પરફેક્ટ દેખાતી હતી. પછી મેં તેને મારા ફોન પર ટેસ્ટ કરવાનો પ્રયાસ કર્યો. બધું જ બગડી ગયું.
જ્યારે તમારે બીજા ઉપકરણની જરૂર હોય ત્યારે લોકલ ડેવલપમેન્ટ અસ્તવ્યસ્ત થઈ જાય છે. ફાયરવોલ અને HTTPS સર્ટિફિકેટની સમસ્યાઓને કારણે લોકલ IP શેર કરવામાં નિષ્ફળતા મળે છે.
મેં Ngrok અજમાવ્યું. તે કામ કરે છે, પરંતુ તેનું ફ્રી ટિયર કનેક્શન તોડી નાખે છે. URL પણ ખૂબ ખરાબ દેખાય છે. a1b2-34-56.ngrok-free.app જેવા રેન્ડમ સ્ટ્રિંગ્સ ક્લાયન્ટ્સ અથવા ટીમો સાથે શેર કરવા માટે સારા નથી.
મારે ક્લીન અને વાંચી શકાય તેવા URL સાથેનું ટનલ જોઈતું હતું. તેથી મેં મારું પોતાનું બનાવ્યું.
મેં કસ્ટમ ટનલને URL શોર્ટનર સાથે જોડ્યું. મેં સ્માર્ટ સ્લગ્સ (slugs) બનાવવા માટે AI ઉમેર્યું અને સુરક્ષા રક્ષણ (security protections) પણ બનાવ્યું.
ટેક સ્ટેક: • 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 ટનલિંગ. HTTP રિક્વેસ્ટ ફોરવર્ડ કરવા માટે એક લોકલ CLI એજન્ટ Django સર્વર સાથે કનેક્ટ થાય છે.
- Race-condition પ્રોટેક્શન. એનાલિટિક્સ સચોટ રાખવા માટે હું એટોમિક અપડેટ્સ માટે Django F() એક્સપ્રેશન્સનો ઉપયોગ કરું છું.
- Non-blocking ટેલિમેટ્રી. લેટન્સી (latency) ઓછી રાખવા માટે લોકેશન અને OS માટેના લુકઅપ્સ બેકગ્રાઉન્ડ થ્રેડ્સમાં ચાલે છે.
- AI સ્લગ્સ. Gemini રેન્ડમ ટેક્સ્ટને બદલે અર્થપૂર્ણ સ્લગ બનાવવા માટે ટાર્ગેટ URL વાંચે છે.
- પ્રોએક્ટિવ સિક્યુરિટી. કોઈપણ લિંક સેવ કરતા પહેલા હું પ્રાઇવેટ IP રેન્જ બ્લોક કરું છું અને Google Safe Browsing ચેક્સ ચલાવું છું.
બેકએન્ડ અને ટનલિંગ લોજિક સ્ટેબલ છે. ફ્રન્ટએન્ડ હજુ પણ કામ ચાલુ છે (work in progress).
હું હાલમાં IITM માં પરીક્ષાઓ માટે અભ્યાસ કરી રહ્યો છું. હું મારા અભ્યાસ પર ધ્યાન કેન્દ્રિત કરવા માટે નવા ફીચર્સ અટકાવી રહ્યો છું. કોડને એમ જ પડ્યો રહેવા દેવાને બદલે, હું તેને રિવ્યુ માટે ખોલી રહ્યો છું.
મારે કેટલીક બાબતો પર તમારા ફીડબેકની જરૂર છે:
- Latency: હાઈ સ્કેલ પર હું રીડાયરેક્ટ્સને 10ms થી નીચે કેવી રીતે રાખી શકું?
- Security: SSRF મિટિગેશનને મજબૂત બનાવવાનો શ્રેષ્ઠ રસ્તો કયો છે?
- Scalability: લાંબા સમય સુધી ચાલતા ટનલ્સ માટે મારે WebSockets વાપરવા જોઈએ કે TCP?
- Observability: ટનલ હેલ્થ માટે મારે કયા મેટ્રિક્સ ટ્રેક કરવા જોઈએ?
જો તમને પ્રોક્સી વર્કર્સ અથવા સિસ્ટમ ડિઝાઇન સાથેનો અનુભવ હોય, તો કૃપા કરીને તમારા વિચારો શેર કરો.
સંપૂર્ણ સિસ્ટમ ડિઝાઇન બ્રેકડાઉન: [Link] Codebase: [Link]
તમે લોકલ ડેવલપમેન્ટ દરમિયાન મોબાઈલ પરમિશન ટેસ્ટિંગ કેવી રીતે હેન્ડલ કરો છો? શું તમે થર્ડ-પાર્ટી ટનલ્સ અથવા કસ્ટમ ટૂલ્સનો ઉપયોગ કરો છો?
Source: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d
