juni 2011

You are currently browsing the monthly archive for juni 2011.

I gårdagens post fanns ett regexp med för att matcha en ip-adress:

[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}

Detta regex skulle matcha allt från 0.0.0.0 till 999.999.999.999 och så kan man ju inte ha det 😛

Jag satte mig därför och filade lite till och så här långt har jag kommit

^[1-2]?[0-9]?[0-9]\.[1-2]?[0-9]?[0-9]\.[1-2]?[0-9]?[0-9]\.[1-2]?[0-9]?[0-9]$

Det skulle matcha allt från 0.0.0.0 till 299.299.299.299 så det är fortfarande inte helt bra eftersom man bara vill matcha allt mellan 0.0.0.0 och 255.255.255.255. Utmaningen här är att få in allt i ett regex, det skulle vara lätt att åtgärda genom t.ex. en loop. Finns det nån som har ett bra tips så lämna gärna en kommentar.

EDIT:

Med Mekaniserad apelsins hjälp står nu svaret klart:

^(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$

Cloudflare är en lösning för att förbättra säkerheten för dina webbappar och som samtidigt sägs göra dina siter snabbare genom att fungera som ett slags CDN. Men det är också ett sätt att få gratis dynamisk DNS-hantering för dina domäner på samma sätt som du kan få av t.ex. dyndns.org, fast du där får betala en avgift om du vill använda ditt eget domännamn.

För att sätta upp det här kan du antingen använda Cloudflares moddade ddclient, eller  så kan du göra som jag och använda deras API i ett script som du sedan kör i cron (du behöver lynx och curl för att det ska funka):

#!/bin/bash
TOKEN='<din api token här>'
HOSTS="example.com example.org"
USER="user@example.com"
IPFILE=/opt/cloudflare/ip.log
OLDIP=`cat $IPFILE`
IP=`lynx --dump http://checkip.dyndns.org/ | grep Address | sed 's/.*Address: //' | tr -s ' '`
REGEX='^(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'
if [[ ! $IP =~ $REGEX ]]; then
 echo "could not get ip from dyndns.org, bailing out" 1>&2
 exit 1
fi
if [[ "$OLDIP" != "$IP" ]]; then
 echo "ip has changed"
 for host in $HOSTS; do
 curl "https://www.cloudflare.com/api.html?a=DIUP&hosts=$host&u=$USER&tkn=$TOKEN&ip=$IP"
 done
 echo $IP > $IPFILE
fi
exit 0

 

Edit:

Regexet fixat.

Jag kör en rätt strippad Debian och när jag stoppade i usb-kabeln till min nya Motorola Xoom så hände ingenting. Jag behövde fixa tre enkla grejer för att det skulle funka:

apt-get install mtp-tools mtpfs
mkdir /media/xoom
vim /etc/udev/rules.d/92-motorola-xoom.rules

I filen vim /etc/udev/rules.d/92-motorola-xoom.rules skrev jag in följande:

ACTION=="add", SUBSYSTEM=="usb|usb_device", ATTRS{idVendor}=="22b8", ATTRS{idProduct}=="70a8", RUN+="/sbin/mount.mtpfs -o allow_other /media/xoom"

 

Efter omstart av udev monterades min Xoom lika fint som en usb-sticka.

Switch to our mobile site

Page optimized by WP Minify WordPress Plugin