{"id":1740,"date":"2011-11-25T21:48:11","date_gmt":"2011-11-25T20:48:11","guid":{"rendered":"http:\/\/www.sentinelx.de\/blog\/?p=1740"},"modified":"2011-11-25T21:48:11","modified_gmt":"2011-11-25T20:48:11","slug":"ip-check-addon-fur-chrome","status":"publish","type":"post","link":"http:\/\/www.sentinelx.de\/blog\/?p=1740","title":{"rendered":"ip check addon f\u00fcr chrome"},"content":{"rendered":"<p>ich bin gerade hart am prokrastinieren. das ist die beste atmosph\u00e4re um ein paar kleinigkeiten zu programmieren. <\/p>\n<p>heute kam dabei heraus: ein chrome addon das die IP des benutzers anzeigt und eine aufl\u00f6sung der IP nach region vornimmt und sich selbst aktualisieren kann, wenn ich eine neue version hochlade.<br \/>\n<!--more--><br \/>\nweil es mir wichtig war, dass das alles bei mir bleibt und ich nicht von irgendeinem externen dienstanbieter abh\u00e4ngig bin, habe ich das alles auf &#8220;eigener&#8221; infrastruktur realisiert. genaugenommen ist es nat\u00fcrlich auch nicht meine eigene infrastruktur, sondern eine angemietete, aber dem webspace bei hosteurope vertraue ich soweit ausreichend. <\/p>\n<p>konzeptionell bestehen die meisten ip-anzeige-addons aus einer client- und serverkomponente. was der user als addon runterl\u00e4dt\/installiert ist in diesen f\u00e4llen dann kaum mehr der verweis wo das addon f\u00fcr updates zu finden ist, ein kleines html-file was auf den serverteil verweist und die signatur. der serverteil ist im einfachsten fall nur die php-funktion <em>echo getenv(&#8220;REMOTE_ADDR&#8221;)<\/em>. einige kompliziertere addons gucken in einer datenbank nach woher diese ip wahrscheinlich kommt und machen dann noch einen link zu einer karten-applikation, andere malen eine l\u00e4nderflagge dazu. <\/p>\n<p>dieses kleine bonbon der regionsaufl\u00f6sung stellte sich bei genauerer betrachtung als gar nicht so aufw\u00e4ndig heraus. au\u00dferdem war es auch der anlass mich anf\u00e4nglich mit dem thema zu besch\u00e4ftigen &#8211; ich wollte wissen aus welchem land ich gerade komme. <\/p>\n<p>also habe ich ein kleines script geschrieben welches die IP des users feststellt und habe die l\u00e4nderaufl\u00f6sung auch gleich noch \u00fcber den eigenen webspace realisiert. hilfreich war dabei die kostenlose version der <a href=\"http:\/\/www.maxmind.com\/app\/geolitecountry\">maxmind-geo-ip-datenbank<\/a> und die gro\u00dfe suchmaschine f\u00fcr codesnippets und anregungen. den direkten link auf das script gibt es <a href=\"http:\/\/www.sentinelx.de\/caliipcheck\/ip.php\" rel=\"highslide-iframe\">hier<\/a>.  <\/p>\n<p>weil mir gerade in der testphase das st\u00e4ndige rumgeklicke beim hochladen tierisch auf den zeiger ging, habe ich im backend (also lokal) noch ein paar kommandozeilen in batchfiles getippert, die das ganze automatisch in das addon verpacken und signieren und mittels kommandozeilen-ftp hochladen.<br \/>\nund weil ein automatischer upload nutzlos ist, wenn nicht auch die versionsnummer hochgez\u00e4hlt wird, habe ich gleich noch ein lokales script f\u00fcr &#8220;mache versionsnummer aus datum und uhrzeit&#8221; geschrieben, das die neue versionnummer automatisch in die addondateien und update-trigger reinschreibt, bevor sie verpackt und hochgeladen werden. <\/p>\n<p>man k\u00f6nnte sagen ich hatte langeweile. hatte ich aber nicht. so sieht angestrengtes prokrastinieren auf h\u00f6chstem niveau aus. <\/p>\n<p>wer das addon auch benutzen will, kann es hier laden: <a href=\"http:\/\/www.sentinelx.de\/caliipcheck\/Cali-IP.crx\" title=\"Cali IP Check for Chrome\" target=\"_blank\">cali IP check<\/a> (f\u00fcr chrome)<\/p>\n<p>verbesserungsvorschl\u00e4ge und fragen k\u00f6nnen gerne in den kommentaren gestellt werden. angesichts der entstehungsgeschichte ist es aber unwahrscheinlich dass noch gro\u00dfartige features hinzukommen. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>ich bin gerade hart am prokrastinieren. das ist die beste atmosph\u00e4re um ein paar kleinigkeiten zu programmieren. heute kam dabei heraus: ein chrome addon das die IP des benutzers anzeigt und eine aufl\u00f6sung der IP nach region vornimmt und sich selbst aktualisieren kann, wenn ich eine neue version hochlade.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,4],"tags":[],"class_list":["post-1740","post","type-post","status-publish","format-standard","hentry","category-gedanken","category-technik"],"_links":{"self":[{"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1740","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1740"}],"version-history":[{"count":0,"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1740\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1740"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1740"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sentinelx.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1740"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}