Recently I needed a simple TCP/UDP port redirector and stumbled upon
this Stackoverflow post. As usual I wasn’t first wanting to this
without using iptables.
There were several alternatives, but since my target was embedded with
limited amount of RAM and flash I wanted something really small. So the
best fit turned out to be redir, which unfortunately only could
handle TCP connections. This is what led me to write uredir to
complement redir. Eventually I ended up adoptiing redir as well,
which meant giving it a bit of a facelift and to give them both the same
look and feel.
Currently they are two separate applications, which in some use-cases
can be beneficial (small size), but I may in the future transplant the
UDP functionality of uredir into redir. We’ll see, right now though
I have several other projects to attend to :-)
So you’re having a problem with the Internet daemon you wrote. You’re convinced the firewall, or some other magic, in your modern Linux distribution is eating your packets.
No.
First, make sure your daemon is actually running and has successfully bound to the address and port in question:
sudo netstat -atnup If your application is not listed there you have a problem with it binding its server socket. Check the return values from bind().
How do you know when your UNIX service (daemon) is ready? Simple, it
has created a PID file, signalling to you how to reach it. Usually this
file is created as /var/run/daemon.pid, or /run/daemon.pid, and has
the PID of daemon as the first and only data in the file. This data
may or may not have a UNIX line ending.
Only trouble is: most UNIX daemons do not re-assert that PID file
properly on SIGHUP (if they support SIGHUP that is). When I send
SIGHUP to a daemon I expect it to re-read its /etc/daemon.conf and
resume operation, basically a quicker way than stop/start.
Annoyingly however, most daemons do not signal us back to tell us when
they’re done with the SIGHUP. Naturally a new movement has risen that
says we should all instrument our daemons with D-bus … I say no.
Simply touch the PID file instead.
After the rm -rf /* disaster that hit me a couple of weeks ago I’ve been rebuilding my setup, restoring the few files I’ve had backed up, and collecting advice from the elders.
Turns out there are a few tricks that can save your home directory from accidents like mine. The first one is rather obvious, but I’m writing it down anyway:
Keep separate accounts. If possible, use separate accounts (with different permissions obviously) for different projects.
Days like these inconspicuously start out just like any other day,
except on days like these you accidentally manage to erase $HOME and
have no real backup to rely on … Maundy Thursday will forever be Black
Thursday for me, from now on.
Best thing your can do, after cursing at yourself constantly for a
couple of hours, is to:
Come up with a useful backup and restore strategy
Read up on undeletion tools for Ext4
Blog about it, naturally
BUT FIRST – QUICK – UNMOUNT OR POWER-OFF YOUR COMPUTER – PULL OUT THE
BATTERY – AND STEP AWAY FROM THE COMPUTER! Must protect the partition
from being accidentally written to – I completely fumbled this step, so
take heed young people!
Recently issue #70 was
reported to pimd. That number of
issues reported is cool in itself, but this was a question about
Docker and pimd.
Up until that point I had only read about this new fad, and played
around with it a bit at work for use as a
stable build environment for cross-compiling. I had no idea people
would want to use a Docker container as a multicast sink. Basically I
was baffled.
The reporter used a Java based tool but simply couldn’t get things to
work properly with pimd running on the host:
For the better part of the last ten years I have been working with
multicast in one way or another. I’ve used many different tools for
testing, but on most systems I usually resort to ping(1) and
tcpdump(1), which are quite sufficient. However, you often need to
tell bridges (switches) to open up multicast in your general direction
for your pings to get through, so you need to send an IGMP “join” first.
Way back in 2006 I stumbled upon a neat tool called mcjoin, written by
David Stevens and announced in
this posting to LKML. I started
improving and adding features to it over the years.
I vanlig ordning bashar vi DNS på jobbet, pga ofungerar hårt över VPN för de flesta. (Ja vi kör alla Linux, utom cheferna som envisas med att använda något ur gamla testamentet.) Här följer ett utdrag från vår IRC:
14:32 <n00b> Success! Äntligen fick jag ordning på DNS via guest wifi -> vpn -> office network. Firar med att skapa lite irc noise. :D 14:32 < rooth>n00b: Du har väl fått den distribuerade /etc/hosts filen?
Back to using the Awesome WM in Ubuntu. This time I’m setting up everything from scratch and first up is fixing keybindings to control my main music player: Spotify!
Edit your ~/.config/awesome/rc.lua with Emacs (obviously). If you do not have an rc file, simply copy the system /etc/xdb/awesome/rc.lua:
globalkeys = awful.util.table.join(globalkeys, awful.key({}, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -D pulse sset Master 5%+", false) end), awful.key({}, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -D pulse sset Master 5%-", false) end), awful.
Sometimes I just cannot help myself. It’s like finding a stray puppy, or abandonded kitten …
… I recently decided to adopt mini-snmpd since the original upstream site had passed into the great beyond. At this point in my life almost everyone I know can tell you I have no warm fuzzy feels for SNMP, at all. So why did I even consider this to begin with?!
Well, I have to confess that there are certain things that SNMP can be really useful for.