Commit Graph

120 Commits

Author SHA1 Message Date
777b589946 feat: speed up validation 2026-01-05 07:22:05 +01:00
72013a9a08 test: add DNS cache coverage 2025-12-29 16:11:31 +01:00
e6fc9c919f feat: add DNS cache and subprocess resolution 2025-12-29 16:11:24 +01:00
39bead9da1 test: expect 400 for invalid short code 2025-12-29 16:03:45 +01:00
699f660ec2 fix: respond_once uses stash flag 2025-12-29 16:03:35 +01:00
2c28b603da test: adjust validation expectations for redirects 2025-12-29 15:46:10 +01:00
76fa8a7334 fix: correct IPv6 private range checks 2025-12-29 15:45:52 +01:00
8495d6ab26 fix: validate redirect targets to prevent SSRF via redirect chains 2025-12-29 15:37:17 +01:00
b203bcad78 refactor: normalize range checks into one clear path 2025-12-29 15:34:33 +01:00
7005e0852a refactor: use respond_once helper in async handlers 2025-12-29 15:31:59 +01:00
af5a924ae3 refactor: add respond_once helper and refactor async handlers to use it 2025-12-29 15:31:43 +01:00
4730c577fa test: cover head/get fallback 2025-12-29 15:25:24 +01:00
940f60e471 test: add UTF-8 path case 2025-12-29 15:25:16 +01:00
407289cd2a fix: head/get reachability fallback 2025-12-29 15:25:08 +01:00
b5ab00ef93 fix: decode UTF-8 after url_unescape 2025-12-29 15:24:56 +01:00
0b277a3e65 fix: use Socket getaddrinfo for host resolution 2025-12-29 15:13:46 +01:00
e9c298110d test: update validation specs for DNS SSRF logic 2025-12-29 15:08:53 +01:00
ae1dab8116 feat: add DNS-based SSRF checks 2025-12-29 15:08:46 +01:00
eb4c4e4c4c feat: use secure RNG for short codes 2025-12-29 15:08:35 +01:00
e2c4916565 fix: guard async responses with local flag 2025-12-29 15:08:26 +01:00
15f082fcdc deps: lock Bytes::Random::Secure and transitive deps 2025-12-29 15:08:05 +01:00
8e6665971e deps: add Bytes::Random::Secure 2025-12-29 15:07:58 +01:00
09a0fe017a fix: use $c->rendered instead of stash->{rendered} 2025-12-29 14:48:06 +01:00
9fc620130c fix: use $c->rendered instead of stash->{rendered} 2025-12-29 14:47:59 +01:00
2903aa51ff revert: cpanfile.snapshot 2025-12-29 08:59:41 +01:00
bf9579ab14 fix: deploy templates/public but not cpanfile.snapshot 2025-12-29 08:57:39 +01:00
48f2b8448a docs: update readme 2025-12-29 08:56:43 +01:00
10fd579d0b docs: update readme 2025-12-29 08:48:53 +01:00
4810966b1c feat: add version in /health 2025-12-29 08:43:55 +01:00
8c62bff80b clean: remove div 2025-12-29 08:43:05 +01:00
17857a6b56 feat: add brand-version to display version bottom right 2025-12-29 08:42:59 +01:00
4053b89cf4 feat: title top left, version bottom right 2025-12-29 08:42:48 +01:00
331dba9211 feat: setup version 2025-12-29 08:42:27 +01:00
bd4c6c9a1d test: add unit testing for URL.pm 2025-12-28 19:40:50 +01:00
6f40a4569a clean: shorten title 2025-12-28 19:32:47 +01:00
9f8570eea2 test: add unit testing for App.pm 2025-12-28 19:30:37 +01:00
611a25c88d fix: center the box and its button 2025-12-28 17:59:08 +01:00
801b09ac83 feat: favicon 2025-12-28 17:55:55 +01:00
39fd9d5c20 feat: add our favicon 2025-12-28 17:55:51 +01:00
b15b473033 clean: remove useless label 2025-12-28 17:53:58 +01:00
e9969841b1 feat: add brand-mark class to place "urupam" 2025-12-28 17:53:41 +01:00
edc1c8cd66 refactor: extract shared styles to app.css 2025-12-28 17:48:58 +01:00
fcbb8f8e5e feat: adopt layout and improve error handling 2025-12-28 17:48:37 +01:00
d8c43cd29b feat: add a shared html layout 2025-12-28 17:48:17 +01:00
2ae22a271b feat: use shared layout 2025-12-28 17:48:05 +01:00
6912495a04 test: use perl.org for reachability edge case 2025-12-28 17:46:49 +01:00
aa9f557aa0 docs: remove warning 2025-12-28 17:37:57 +01:00
fb500c7799 feat: create main template 2025-12-28 17:37:50 +01:00
d9b05bab33 feat: render our new main template 2025-12-28 17:37:43 +01:00
6ce43f4608 feat: use HTML templates for public errors 2025-12-28 17:32:25 +01:00