Jump to content

maximus

Members
  • Posts

    42
  • Joined

  • Last visited

  • Days Won

    13

Everything posted by maximus

  1. wirewall periodically intercepts scanning of .env files, be safe
  2. It will be difficult to do all this even if you use AI to create what you need. First of all, you need to understand how it all works in ProcessWire and have skills in working with ProFields, Repeater, Repeater Matrix, Selector, and other basic modules. There is nothing complicated about it, but the time you spend creating a solution from scratch is better spent finding a ready-made solution and removing what you don't need. To understand how these systems work, I suggest you start by studying https://processwire.com/modules/site-invoices/
  3. if possible, can you fix underline for new theme?
  4. i try update to new version use Upgrades module and receive this message:
  5. I’d like to bring attention to a long-standing organizational issue that affects projects with many template files. As projects grow, the /site/templates/ directory becomes cluttered with dozens (or even hundreds) of PHP files, making it difficult to maintain and navigate. The Problem Currently, ProcessWire doesn’t natively support organizing template files into subdirectories. For example, if you want to organize templates like this: /site/templates/ ├── warehouse/ │ ├── dashboard.php │ ├── packing.php │ └── packages.php ├── customer/ │ ├── dashboard.php │ └── packages.php └── sso/ ├── login.php └── callback.php You currently face several challenges: Alternate Template Filename field is unreliable - The admin interface often strips or resets the path when saving, especially if the file doesn’t exist at that exact moment No automatic discovery - You must manually configure each template’s file path Hooks don’t work as expected - Attempts to hook TemplateFile::getFilename or Template::getFilename don’t fire reliably Current Workarounds The existing workarounds are less than ideal: 1. Bridge files as suggested by @LostKobrakai // site/templates/warehouse-dashboard.php <?php namespace ProcessWire; include(__DIR__ . '/warehouse/dashboard.php'); This creates file duplication and maintenance overhead. 2. Manual Alternate Template Filename for each template: - Requires clicking through every template - Path validation often fails - No bulk operations Previous Discussions This has been requested multiple times over the years: Does PW support organizing Template files in sub Dirs? (2016) Template file in other folder than /site/template (2017) How do I organize a lot of templates? (2017) Proposed Solution I’ve opened a GitHub feature request with detailed suggestions: https://github.com/processwire/processwire-requests/issues/575 The core ideas: 1. Path persistence - The Alternate Template Filename field should reliably save paths like folder/filename.php 2. Automatic discovery - If a template named warehouse-dashboard isn’t found, check for /warehouse/dashboard.php 3. Template grouping in admin - Visual organization in Setup → Templates based on folder structure Why This Matters Large projects - Sites with 50+ templates become unmanageable Team development - Clear organization helps multiple developers Module development - Modules could bundle template files cleanly Modern standards - Most frameworks support organized file structures Use Cases This would benefit: Multi-role applications (admin, customer, warehouse staff interfaces) Projects with many page types Module developers who want to bundle templates Anyone with SSO/OAuth files, API endpoints, or admin tools What Can You Do? If you’ve faced this issue or would like this feature: 1. 👍 React to the GitHub issue 2. Share your use cases below 3. Suggest implementation approaches @ryan - Would love to hear your thoughts on this! Is this something that could be considered for a future release? Thanks for reading, and I hope this resonates with others who’ve felt this pain!
  6. Hello! Which browser your use ? more details if possible
  7. WireWall v1.3.2 – Advanced Traffic Firewall Released: January 4, 2026 Stable release with major improvements in data persistence, IPv6 support, and configuration reliability. What's New in v1.3.2 Permanent data persistence GeoLite2 databases, Composer vendor folder, and composer files are now safely stored in /site/assets/WireWall/ → No more data loss or reinstallation needed after module updates Automatic migration from older versions When upgrading from ≤1.2.0, old files from /site/modules/WireWall/ are automatically moved to the new location Full IPv6 CIDR support Complete IPv6 range matching for both blocking and whitelisting Enhanced exception system New configuration fields: • Custom Trusted AJAX Paths • Custom API Paths (bypass for ALL HTTP methods – GET/POST/PUT/DELETE/etc.) Robust checkbox handling All toggle options now reliably save as 0/1 (fixes old config issues after updates/reinstalls) Improved configuration interface New colorful "Setup Information" section with current paths, migration guide, and clear installation instructions Recommended post-update steps Go to Modules → WireWall → Configure Verify GeoIP databases are located at: /site/assets/WireWall/geoip/GeoLite2-*.mmdb If you have GeoLite2-City.mmdb → enable City & Subdivision blocking Add any custom paths you need in: • Custom Trusted AJAX Paths • Custom API Paths Requirements ProcessWire ≥ 3.0.200 PHP ≥ 8.1 Strongly recommended: MaxMind GeoLite2 databases (Country + ASN required, City optional for detailed logging) Downloads WireWall.module.php Full module archive (zip) Full documentation → README Website → wirewall.org Thanks to everyone testing and providing feedback! Stay secure! 🛡️
  8. Happy 2026 everyone! 🎉 TL;DR: I made 2048 game for ProcessWire admin. Install it, ignore your inbox, get high scores. Why? Because it's January 1st and: ✅ You're probably hungover ✅ Nobody expects you to work ✅ You're definitely checking your admin anyway ✅ Why not play some 2048 while you're there? What's inside? 🎮 Classic 2048 (arrow keys or swipe) 🏆 Leaderboard (compete with your team!) 🔊 Sound effects (mutable, we know your head hurts) 📱 Works on phone (for bathroom breaks) ⚙️ Configurable grid (3x3 to 12x12 if you hate yourself) Download https://github.com/mxmsmnv/Process2048 Install Upload to /site/modules/Process2048/ Modules → Refresh → Install Setup → 2048 Start procrastinating! Screenshot: Cheers 🥂
      • 10
      • Like
      • Haha
      • Thanks
  9. As we close out 2025, I'm pleased to share a new module that I've been using in production: FieldtypeTimezone / InputfieldTimezone. 🎯 What It Does A straightforward timezone fieldtype that handles the complexity of timezones automatically - no configuration needed, just install and use. Key Features: Dynamic UTC offsets - automatically calculates current offsets with DST support Simple format - displays as "Country → City (UTC+X)" Intelligent caching - 24-hour cache for optimal performance Production-ready - strict validation at all levels Complete coverage - all major world timezones included 💡 Why I Built This Working on global websites (wine shop, news portal), I needed a reliable way to handle user timezones without complexity. The module automatically adjusts UTC offsets for DST: America/New_York: UTC-5 in winter, UTC-4 in summer Europe/London: UTC+0 in winter, UTC+1 in summer 🚀 Basic Usage <?php // Display date in a nice English format $timezone = $page->tz; // e.g., "America/New_York" if ($timezone) { $tz = new \DateTimeZone($timezone); $datetime = new \DateTime('now', $tz); echo $datetime->format('F j, Y \a\t g:i A T'); } ?> Perfect for: User profiles with timezone preferences Event calendars with automatic time conversion Global applications requiring accurate time display Any site serving users across multiple timezones 📋 Requirements ProcessWire 3.0.0+ PHP 8.1+ 📦 Installation GitHub: https://github.com/mxmsmnv/FieldtypeTimezone cd /path/to/processwire/site/modules/ git clone https://github.com/mxmsmnv/FieldtypeTimezone.git Or download and extract to /site/modules/FieldtypeTimezone/ Then install via Modules → Site → FieldtypeTimezone 📖 Documentation Full documentation with practical examples, API methods, and advanced usage scenarios is available in the GitHub repository. 🤝 Feedback Welcome The module has been tested in production on several sites, but I'd appreciate any feedback, suggestions, or bug reports from the community. Happy New Year to the ProcessWire community! 🎉
  10. I'm back, happy to present a module that makes square images. https://github.com/mxmsmnv/SquareImages I welcome any feedback.
  11. WireNPS is a comprehensive module for collecting and analyzing customer feedback via a modern Net Promoter Score (NPS) popup interface. Key Features: Elegant NPS Widget: A non-intrusive, mobile-friendly popup for ratings (0-10) and text feedback. Real-time Analytics: Dashboard featuring NPS score calculation, score distribution charts, and 30-day trend graphs. Multilingual Support: Built-in support for English, German, French, and Chinese with automatic browser/user language detection. Flexible Access: Support for both logged-in users and guests (Public/Private modes). Data Export: CSV export functionality for external analysis. Privacy Control: Configurable IP/User Agent tracking and cookie management. Requirements: ProcessWire 3.0+ PHP 8.2+ Quick Installation: Download or git clone into /site/modules/WireNPS/. Install via the ProcessWire admin. Create an AJAX handler page using the provided template. GitHub: https://github.com/mxmsmnv/WireNPS
      • 9
      • Like
      • Thanks
  12. New version, added Stats & Page Structure Hierarchy. How to install: Create template (like lego.php) with name lego Create page /lego_1234/ with select template Open your path in browser lego.php Demo:
  13. Hi everyone! You’ve probably seen embedded product cards directly in articles on sites like Allegro, PriceRunner? I was using Hanna Code but found its capabilities limiting for my needs, so I decided to fork it and create Embedr - a more feature-rich version: Key Features: 🎯 Dynamic content blocks via ProcessWire selectors (not just static code) 🔄 Live preview directly in admin interface 🎨 Built-in visual card builder (UIKit-based) - no PHP required! 📝 Custom PHP templates for full control when needed 🏷️ Reusable embed types system 🔍 Debug mode with comprehensive logging ✅ Guest-safe - works for all users out of the box Quick Example: Create an embed with a selector: Name: featured-products Selector: template=product, featured=1, limit=6 Type: products Insert in text: ((featured-products)) Done! The module automatically finds pages and renders product cards. Need custom design? Just create a PHP template at /site/templates/components/products.php GitHub: https://github.com/mxmsmnv/Embedr Give it a try and let me know what you think! 🚀
      • 12
      • Like
      • Thanks
  14. Please try manually making changes to the module code in the relevant lines and, if possible, let us know whether it works or not.
  15. I don't think you need a disguise to view your website, but you can always add exceptions. Also this week, I updated the module to version 1.1.9, where, in addition to prohibitions, exception fields have been added: for search robots (user agent), ASN and IP. Thanks a lot, I've corrected it everywhere. Yes, I see that access to the site is blocked when javascript is disabled. I'll think about how to solve it.
  16. Check out more on website - https://wirewall.org
  17. Hello ! 👋 I'm excited to share WireWall, a comprehensive security firewall module I've been developing for ProcessWire. After months of real-world testing on production sites (including blocking 99.98% of malicious traffic on my e-commerce platform), I'm ready to release it to the community. What is WireWall? WireWall is a ProcessWire-native security module that provides enterprise-grade protection with granular geographic and network-level blocking. Unlike traditional firewalls that only block by country, WireWall lets you block by city, region (state/province), VPN/Proxy/Tor, ASN, and more. Key Features Geographic Blocking: City-level blocking - Block specific cities worldwide (e.g., "Philadelphia", "Beijing", "Tokyo") Region blocking - Block entire states/provinces (e.g., "Pennsylvania", "California", "Tokyo Prefecture") Country blocking - Traditional country-level controls with whitelist/blacklist modes Network Protection: VPN/Proxy/Tor detection - Multi-API detection system with intelligent fallback Datacentre detection - Block AWS, Google Cloud, DigitalOcean, and other hosting providers ASN blocking - Block entire autonomous systems by ASN number Rate limiting - Per-IP rate limits with automatic temporary bans AI bot blocking - Automatically block GPTBot, ClaudeBot, and other AI scrapers Performance & Scalability: File-based cache - Scales to 1M+ IPs with zero database overhead Lightning-fast lookups - 0.5-2ms with MaxMind databases HTTP fallback - Works without MaxMind databases (though less performant) Smart caching - GeoIP cached for 30 days, VPN checks for 7 days Developer-Friendly: Priority-based system - 14 security layers evaluated in order JavaScript challenge - Detect and block headless browsers Comprehensive logging - Debug mode with detailed request information Cache management UI - Built-in interface to view stats and clear cache Triple admin protection - Logged-in users, IP whitelist, admin area bypass Real-World Results On my e-commerce site (LQRS.com), WireWall has been running for several months with impressive results: 99.98% blocking rate - Nearly all malicious traffic blocked Zero false positives - Legitimate customers unaffected Significant reduction in AWS/cloud-based automated attacks Complete elimination of VPN/proxy fraud attempts Installation cd /site/modules/ git clone https://github.com/mxmsmnv/WireWall.git Then in ProcessWire admin: Modules → Refresh Install WireWall Configure your blocking rules You're protected! How It Works - Priority System WireWall processes every request through 14 prioritised security layers: Admin Area → ALLOW (ProcessWire admin always accessible) IP Whitelist → ALLOW (manual whitelist bypass) Rate Limiting → BLOCK (excessive requests) IP Blacklist → BLOCK (permanent blocks) JavaScript Challenge → CHALLENGE (suspicious requests) VPN/Proxy/Tor → BLOCK (anonymous services) Datacentre Detection → BLOCK (cloud hosting) ASN Blocking → BLOCK (autonomous systems) Global Rules → BLOCK (known patterns) Country Blocking → BLOCK (country rules) City Blocking → BLOCK (city rules) Region Blocking → BLOCK (region rules) Country-specific Rules → BLOCK (custom rules) Default → ALLOW ✓ First match wins - once a rule triggers, evaluation stops. MaxMind Integration WireWall works best with MaxMind GeoLite2 databases (free): GeoLite2-Country.mmdb - Country detection GeoLite2-City.mmdb - City and region detection GeoLite2-ASN.mmdb - Network/ISP detection Without MaxMind, it falls back to ip-api.com HTTP API (slower, with rate limits). City and region blocking require the MaxMind City database. Download MaxMind databases from: https://dev.maxmind.com/geoip/geolite2-free-geolocation-data Technical Details ProcessWire: 3.0.200 or higher PHP: 8.1 or higher Optional: MaxMind GeoLite2 databases (Country, ASN, City) Optional: Composer (for MaxMind GeoIP2 library) Why Another Firewall Module? I needed something specifically for ProcessWire that: Scales efficiently - File-based cache handles millions of IPs without database bloat Provides granular control - City and region blocking isn't available in other solutions Works offline - MaxMind databases work without external API calls Integrates natively - Built specifically for ProcessWire's architecture Stays free - Open source, no premium tiers or upsells Other solutions like Wordfence (WordPress), Sucuri (paid service), and ModSecurity (server-level) either don't integrate well with ProcessWire or lack the geographic granularity needed for fraud prevention. Resources GitHub Repository: https://github.com/mxmsmnv/WireWall Documentation: Full README with installation, configuration, and troubleshooting Landing Page: https://wirewall.org Licence: MIT (free for commercial use) Quick Start TL;DR # Install cd site/modules && git clone https://github.com/mxmsmnv/WireWall.git # Activate in ProcessWire admin Modules → Install → WireWall # Configure - Enable module - Set blocking rules (cities/regions/countries) - Enable VPN detection - Configure rate limiting - Save # Monitor Setup → Logs → wirewall.txt I'm happy to answer any questions! Has anyone else been working on security solutions for ProcessWire? I'd love to hear about your approaches and challenges. Best regards, Maxim
  18. Yes, I tried to solve this problem yesterday,but there are two options you can use: https://images.weserv.nl/ or https://github.com/thumbor/thumbor Cloudflare Transformations didn't work for sundomains. You may use ProCache module by Ryan for caching images with CDN.
  19. Live demo running here: https://media.smnv.org/ Attached below is the full, ready-to-go 2025 site profile https://github.com/mxmsmnv/site-media It’s the complete real-world implementation of FieldtypeFileB2: videos served straight from Backblaze B2, zero bandwidth cost via Cloudflare, everything polished and production-ready. Grab it, use it, butcher it — whatever you need.
  20. I’ve been working on a module to store ProcessWire files directly on Backblaze B2, and wanted to share it with the community. Why I Built This I needed to host video content without breaking the bank on storage costs. AWS S3 was too expensive, and I wanted something that integrates seamlessly with ProcessWire’s existing file fields. Key Features 🚀 Direct B2 Upload - Files go straight to Backblaze, no local storage needed 💰 Dirt Cheap - $6/TB/month (AWS S3 costs 5x more) 🌐 Custom Domain Support - Use your own CDN domain ⚡ Cloudflare Integration - Combine with Cloudflare for FREE bandwidth 📦 Works with Repeaters - Multiple files per repeater item 🎬 Perfect for Video - Tested with Plyr, Video.js, and HTML5 video Real Cost Savings Here’s what I’m actually paying for 500GB of video storage: Backblaze B2 + Cloudflare: - Storage: $3/month - Bandwidth: $0 (free via Cloudflare Bandwidth Alliance) - Total: $3/month AWS S3 (same usage): - Storage: $11.50/month - Bandwidth: $450/month (5TB) - Total: $461.50/month That’s a 99% savings on bandwidth costs! How It Works The module extends ProcessWire’s file fields to upload directly to Backblaze B2. You can use it just like regular file fields: // Single video <video controls> <source src="<?= $page->b2_video->url ?>" type="video/mp4"> </video> // Multiple videos in repeater <?php foreach($page->videos as $item): ?> <?php foreach($item->b2_video as $video): ?> <video controls> <source src="<?= $video->b2url ?>" type="video/mp4"> </video> <?php endforeach; ?> <?php endforeach; ?> Cloudflare CDN Integration Want free bandwidth? Here’s the magic setup: CNAME: cdn.yourdomain.com → f005.backblazeb2.com (with Cloudflare proxy) Transform Rule: Rewrite paths to include /file/bucket-name/ Module setting: Enable custom domain Now all files serve through Cloudflare’s global CDN with zero bandwidth costs thanks to the Bandwidth Alliance partnership. Setup is Simple Create Backblaze B2 bucket Configure module with API keys Create field (type: FieldtypeFileB2) Add field to template Upload files - they go straight to B2! Optional: Add Cloudflare for free bandwidth and caching. Use Cases Video hosting (my use case) Large image galleries Audio files / podcasts Downloadable resources Any high-bandwidth file hosting Technical Details Works with public and private buckets Supports custom Cache-Control headers Files are deleted from local server after upload Can use custom domains via Cloudflare CORS configurable for cross-domain access Try It Out GitHub: https://github.com/mxmsmnv/FieldtypeFileB2
  21. AgeWire is a powerful, fully customizable age verification module for ProcessWire, built with modern web standards and powered by Tailwind CSS. Perfect for sites requiring age gates (alcohol, tobacco, adult content, etc.). Key Features Two Verification Modes: Simple Yes/No buttons Date Picker with separate MM/DD/YYYY inputs (bot-resistant) 13 Stunning Themes: Modern, Dark, Classic, Minimal, Gradient, Neon, Elegant, Corporate, Vibrant, Nature, Sunset, Ocean, Purple 4 Smooth Animations: Fade In, Slide Up, Zoom In, Bounce In International Date Formats: MM/DD/YYYY (US) DD/MM/YYYY (EU) YYYY/MM/DD (ISO) Advanced Security: Secure, HttpOnly, SameSite cookies Configurable lifetime (1 day to 6 months) Bot protection via manual date entry Smart Exclusions: Skip verification on specific templates or pages Admin pages auto-excluded Privacy & Compliance: Optional Terms & Privacy Policy checkbox Custom links to your legal pages Fully Responsive – Mobile-first design Custom CSS support Tailwind CDN integration (no build required) Installation Download from GitHub Place AgeWire folder in /site/modules/ Go to Modules > Refresh Install AgeWire GitHub: https://github.com/mxmsmnv/AgeWire Download: https://github.com/mxmsmnv/AgeWire/archive/refs/tags/v1.0.9.zip Perfect for: Wineries & breweries Vape & tobacco shops Adult content sites Age-restricted events Feedback, bug reports, and pull requests are welcome! If you like AgeWire, please ⭐ star it on GitHub! Made with ❤️ for the ProcessWire community.
      • 15
      • Like
      • Thanks
×
×
  • Create New...