RSSAmplifier

Blog

Luca Corbo –

Recent content on Luca Corbo

/RSS feed ↗25 posts

Latest posts

Making Lancert a Better ACME Client

When I first introduced Lancert , it answered a fairly specific question: Can publicly trusted TLS certificates be issued for services running on private networks, without exposing those services to the public Internet? Once that part became reliable, the interesting questions changed. Lancert already knew how to issue certificates, cache them and renew them automatically. Users remained…

BeeBuzz Open Source Release and Hosted Access

BeeBuzz has been in private use for a while. The change now is that I’m starting to open the gates: approving users for hosted access and making the source code public under the GNU AGPLv3 . This is a practical release, not a broad product announcement. BeeBuzz is still small, still focused, and still shaped by the same constraint that started the project: send private push notifications to…

BeeBuzz E2E: from a 4KB limit to end-to-end encryption

BeeBuzz E2E is shaped by a hard limit: 4KB. That’s the maximum size of a Web Push payload. You can’t encrypt a full notification and send it directly — it won’t fit. The architecture follows from that constraint. The starting constraint Encrypted content can’t travel inside the push payload. So it doesn’t. The encrypted content is stored as a separate attachment The…

Lancert: Let's Encrypt Certificates for Local Development on Private IPs

I was working on BeeBuzz , a privacy-first push notification service I’m building in my spare time. BeeBuzz is a Progressive Web App — web-only by design, as I explained in the first devlog post . That choice keeps the surface area small and avoids the complexity of native apps. But it also means I depend on the browser for everything — including push notifications. Push notifications on the…

BeeBuzz Architecture: Designing for Minimal Trust

Building BeeBuzz, I kept coming back to one idea: design for the worst case, not the best one. Not because I expect things to go wrong — but because assuming they might forces better decisions. No server is perfect. Dependencies have bugs. People make mistakes. So instead of pretending everything is secure, I designed BeeBuzz to limit the damage if something does break. Keeping Scope Small BeeBuzz…

Building BeeBuzz: A Privacy-First Experiment in the Age of AI

BeeBuzz is a small project that I’m building in my spare time. There’s no VC behind it, no growth roadmap, no team pushing features every week. It started from a very practical need. I use Home Assistant for my automations, and I needed a reliable way to send push notifications. The first step was obvious: look for existing open source solutions. I strongly believe in open source, and…

Cross Compile a Go Project With CGO Dependencies Using Zig

Cross compiling with Go is usually straighforward: set GOOS and GOARCH environement variables and then go build . Unfortunately for projects that uses CGO dependencies things can be harder. Depending on the target architecture it requires to install a C compiler like gcc, clang or x86_64-w64-mingw64-gcc and configure additional environment variables like CC along with the CGO_ENABLED=1 one. In…

Compile PECL extension with phpize (multiple PHP versions)

To compile a PECL extension with phpize we usually do: $ cd extname $ phpize $ ./configure $ make # make install But this could not work if you have multiple PHP installations on your Ubuntu server (i.e. 5.6, 7.0, 7.1). To ensure the extension is installed only for a specific version you have to specify the correct version for the phpize and php-config binaries. Example for version 7.0 $ cd…

Draw Arc Text With EaselJS

Today I’ve released a first version of easeljs-arctext , an EaselJS extension that allows drawing of text along arc path. See below for sample code. // javascript Sample code canvas = document . getElementById ( 'canvas' ); var stage = new Stage ( canvas ); //Draw the text 'Text Arc' with font '20pt Arial', color 'black' and radius 100 var text = new TextArc ( 'Text Arc' , '20pt Arial' ,…

Ubuntu and Ldap Force Authentication During a Bind Request

Default LDAP installation on Ubuntu server allows anonymous binding and directory access. If you want avoid this behavior you may set the olcRequires to authc using the ldif format with the following command: $ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldap_disable_bind_anon.ldif where ldap_disable_bind_anon.ldif is: dn: cn = config changetype: modify add: olcDisallows olcDisallows: bind_anon dn:…

Drupal: Speed Up Simpletest Tests Usign Live Database

If you want to speed up Drupal Simpletest bootstrap a simple trick is to use the live database instead of the sandbox enviroment created by Simpletest. To do this simply override setUp and tearDown methods as reported below: <? php class SampleTest extends DrupalWebTestCase { function setUp () { $this -> setup = TRUE ; } function tearDown () { } //Your test here... Please note now you are using…

Drupal7: How Display Block Programmatically

If you want to display a block in your template: <? php $block = block_load ( $module , $delta ); print render ( _block_gAet_renderable_array ( _block_render_blocks ( array ( $block ) ))); where: $module Name of the module that implements the block to load. $delta Unique ID of the block within the context of $module. Pass NULL to return an empty block object for $module. Reference links:…

How Enable The PHP Tidy Extension For MAMP

Download the PHP source in according with your environment: $ php -v PHP 5.2.11 ( cli ) ( built: Dec 12 2009 13:19:08 ) Extract in a temporary folder $ cd ~ & amp ;& amp ; tar zxvf php-5.2.11.tar.gz & amp ;& amp ; cd php-5.2.11 Patch the ext/iconv/iconv.c file remove the lib on #define iconv libiconv so that the code reads like this: #ifdef HAVE_LIBICONV #define iconv iconv #endif Patch the…

Drupal 6: Create a Node With CCK Fields Programmatically

<? php require_once './includes/bootstrap.inc' ; drupal_bootstrap ( DRUPAL_BOOTSTRAP_FULL ); module_load_include ( 'inc' , 'node' , 'node.pages' ); $node = new stdClass (); //Set up default values, if required. node_object_prepare ( $node ); //Specify the content type $node -> type = 'profile' ; //Specify an author for the node $node -> uid = 1 ; //Add the title $node -> title = 'Test' ; //Add the…

Installing jboss eap 4 3 on red hat 5 3

Requirements JDK 1.5 or 1.6 Installer Jboss eap 4.3 or higher Installation Create jboss user ~# adduser jboss && passwd jboss Update ~/.bashrc #JAVA Settings export JAVA_HOME=/usr/java/latest export PATH=$JAVA_HOME/bin:$PATH #JBOSS Settings export JBOSS_HOME=/home/jboss/EnterprisePlatform-4.3.0.GA_CP07/jboss-as export JAVAPTH=$JAVA_HOME/bin export JBOSS_CONF=default export…

Telecom Italia Is Using Ortro

I’ m happy to announce Ortro is also used in Telecom Italia now. An older version of Ortro (updated to the latest version right in these days) was already used in such departments of Telecom Italia as an experimental software for application monitoring. But in the last time I had a confirm Ortro is, as I like to define it, mainly a “ Framework ” helping you to solve the daily problems encountered…

Caching Dynamic Content Using Nginx

If you need a static version of your dynamic web application maybe you may interested to configure Nginx as reverse proxy cache so it can cache also dynamic contents (pages with ? in the URI). Well, if this is your scenario, let&rsquo;s go to configure Nginx. Requirements Nginx up, running and listening on port 80 A web server, like Apache, listening on port 8080 server { listen 80 ; server_name…

Using Pear Auth As Zend Auth Adapter

If you use both Pear and Zend framework you may want to extend the Zend_Auth adapters to use all the containers shipped with the Pear::Auth package. Let&rsquo;s go to create the class implements the Zend_Auth_Adapter_Interface starting from the Zend_Auth_Adapter_Ldap class. My_Zend_Auth_Adapter_PearAuth <? php class My_Zend_Auth_Adapter_PearAuth implements Zend_Auth_Adapter_Interface { /** * The…

Recaptcha With Zend Form

Requirements Zend Framework (1.7.8 at writing time) Valid ReCaptcha keys (public & private) Simple ReCaptcha Zend Form Class <? php class Form_ReCaptcha extends Zend_Form { public function init () { $this -> setMethod ( 'post' ); //Add your elements here... $recaptcha = new Zend_Service_ReCaptcha ( $publickey , $privatekey ); $captcha = new Zend_Form_Element_Captcha ( 'challenge' , array (…

Lighttpd mod_cache on Debian Lenny

~# mkdir ~/tmp && cd ~/tmp ~# apt-get install dpkg-dev ~# apt-get source lighttpd ~# apt-get build-dep lighttpd ~# wget http://www.linux.com.cn/modcache/lighttpd-1.4.19.modcache.v.1.6.0.patch ~# cd lighttpd-1.4.19 ~# patch -p0 < ../lighttpd-1.4.19.modcache.v.1.6.0.patch ~# echo debian/tmp/usr/lib/lighttpd/mod_cache.so > debian/lighttpd.install ~# dpkg-buildpackage -uc -b ~# ls -l ../*.deb Install…

How To Print The Next Line After A Matching Regexp With Sed

~ $ cat example.txt first line second line third line another line ~ $ sed -n '/second/{n;p;}' < example.txt third line ~ $ sed -n '/second/{n;p;n;p;}' < example.txt third line another line

Enabling Fingerprint Scanner On Thinkpad Running Ubuntu Hardy in Four Steps

Install the ThinkFinger utilities and the relative PAM module: ~$ sudo apt-get install thinkfinger-tools libpam-thinkfinger Acquire and test your fingerprint: ~$ sudo tf-tool --acquire ~$ sudo tf-tool --verify Enable the PAM module: ~$ sudo /usr/lib/pam-thinkfinger/pam-thinkfinger-enable Enjoy :-) Resources: wiki.ubuntu.com/ThinkFinger Bug #203973 in thinkfinger (Ubuntu)

discovery hosts and services with php and nmap

Requirements: PHP5 PEAR::Net_Nmap nmap <? php /** * Scan network to retrieve hosts and services information. */ require_once 'Net/Nmap.php' ; //Define the target to scan $target = array ( '127.0.0.1' , 'www.yourserver.com' ); $options = array ( 'nmap_binary' => '/usr/local/bin/nmap' ); try { $nmap = new Net_Nmap ( $options ); //Enable nmap options $nmap_options = array ( 'os_detection' => true ,…

Execute Sql Script From a File Using PHP

The code below allows to retrieve and execute all SQL statements defined in a SQL script file removing all comments. <? php $sql_file = 'test.sql' ; $contents = file_get_contents ( $sql_file ); // Remove C style and inline comments $comment_patterns = array ( '/\/\*.*(\n)*.*(\*\/)?/' , //C comments '/\s*--.*\n/' , //inline comments start with -- '/\s*#.*\n/' , //inline comments start with # );…

Execute Commands on Folder and Files Containing Spaces

On Linux or Unix systems perform recursively a command on items might contain white space, quote marks, or backslashes can be a problem when using find | xargs combination. To solve this you may use: find -type d -print0 | xargs -0 <command> find -type f -print0 | xargs -0 <command> For example to fix recursively permission: find -type d -print0 | xargs -0 chmod 755 find -type f -print0 | xargs -0…