Per Stenebo
2013-01-03 19:49:33
2017-06-26 09:42:42
Manual BendIP
Manual för applikationen BendIP i BendCMS.
Beskrivning
En samling av sidor för att hantera information om vilken IP-adress en värd har för tillfället.
Tjänsten kan jämföras med befintliga tjänster som DynDNS, yi.org mfl, fast denna använder bara IP-adressen (tex 192.0.43.10), inte domännamnet (tex example.com).
Ändamålet är tex att en viss adress alltid omdirigeras till den IP-adress som värden har för tillfället. Det kan vara speciellt användbart för värdar som har en dynamiskt tilldelad IP-adress (dom flesta hem och företag med ADSL-anslutning).
Funktioner
- Skapa och hantera BendIP-konton
- Visa klientens aktuella (senast inrapporterade) externa ip.
- Visa klientens ip-historik.
- Ta emot och spara uppdatering av IP (v4).
- Automatisk omdirigering till aktuell ip för vald identitet.
- Visa besökarens externa ip utan krav på IP-konto.
- Svara ip-förfrågan med enbart ip på en i övrigt blank sida, utan krav på IP-konto.
Direkt i en webbläsare, klistra in adressen:
http://bends.se/?page=whatsmyip
eller ge kommando i bash:
curl --max-time 100 "http://bends.se/?page=whatsmyip"
eller i php:
$arr = file(http://bends.se/?page=whatsmyip);
$myip = implode('', $arr);
$myip = trim($myip);
Säkerhet
Sidor
Sidan BendIP
Visar aktuell (senast lagrade) IP, historik för valt IP-konto och annan relaterad information.
Sidan BendIP-konto
Klienten som ska utnyttja tjänsten BendIP behöver ha ett BendIP-konto på den mottagande servern.
När man skapar eller redigerar ett BendIP-konto anges även standardvärde för när IP ska uppdateras (update), se mer nedan under Uppdatera IP.
BendIP-konto är en variant av sidan Servicekonto och delar flera filer.
Sidan Uppdatera IP
Ändamål: Uppdatera datafil med aktuell IP-adress.
Sidan har inget grafiskt gränssnitt och visas inte i menyn, den är avsedd för automatiserad uppdatering.
Informationen lagras i textfilen ~/pageData/BendIP/ipData_n.csv där det sista n ersätts med kontots id-nummer.
Filen innehåller en datapost per rad med kommaseparerade datafält i varje rad.
Filen skapas vid första uppdateringen.
Minimalt exempel:
http://example.com?page=bendip/update-ip&aid=23&pwd=mypass
Exempel med alla variabler:
http://example.com?page=bendip/update-ip&aid=23&pwd=mypass&ip=192.0.43.10&com=test&update=onchange
Variabler
?
Avdelare mellan url och variabler.
&
Avdelare mellan variabelpar namn=värde
page=bendip/update-ip
Öppna sidan Uppdatera IP i BendCMS.
aid=23
Uppdatera IP-konto med id 23. Det är alltså IP-kontots id-nummer och inget annat som avses.
pwd=mypass
Lösenordet till angivet konto är mypass
ip=192.0.43.10
IP-adressen som skall sparas. Om denna variablen är tom eller utelämnas används den IP-adress som servern har i php-variablen $_SERVER['REMOTE_ADDR']
com=test
En valfri kommentar till uppdateringen, tex cronUpdate.
update=onchange
betyder att uppdateringen bara sparas om IP-adressen har ändrats sedan sist.
update=always
betyder att varje uppdatering skrivs till datafilen.
Om variablen update utelämnas används kontots standard-värde.
Returvärde
Resultatet skrivs ut i klartext, utan html-kod.
Skript
Skapa ett kommandoradsskript som innehåller kod för uppdatering, detta kan sparas som ipUpdate.sh (.sh för linux).
Exempel i Bash med wget (laddar ner en fil innehållande svaret, filen sparas som ipUpdate.txt):
wget --output-document ipUpdate.txt "http://example.com?page=bendip/update-ip&aid=23&pwd=mypass&com=test"
Exempel i Bash med curl (svaret visas i klartext på skärmen/stdout):
curl --max-time 100 "http://example.com?page=bendip/update-ip&aid=23&pwd=mypass&com=test"
Cron
För att IP skall uppdateras automatiskt behöver vi skapa ett schemalagt jobb, i linux används Cron för detta, exempel för Ubuntu Server:
Skapa en crontab:
crontab -e
Lägg till ett cronjobb, exemplet kommer att köra skriptet /home/per/ipUpdate.sh klockan 06,30 varje dag, modifiera texten efter din situation:
# Uppdatera IP-info
30 06 * * * /home/per/ipUpdate.sh
Sidan Visa enbart IP
Ändamål: Returnera aktuell IP-adress.
Sidan har inget grafiskt gränssnitt och visas inte i menyn, den är avsedd för automatiserad hämtning.
Minimalt exempel:
http://example.com?page=whatsmyip
Exempel med alla variabler:
http://example.com?page=whatsmyip&aid=23&pwd=mypass
Om aid och pwd utelämnas läses klientens (externa) ip-adress av med PHP-variablen $_SERVER['REMOTE_ADDR']
.
Om kontot kan identifieras och verifieras korrekt hämtas den senast lagrade IP-adressen från datafilen som tillhör angivet konto.
Variabler
page=whatsmyip
Öppna sidan Visa enbart IP i BendCMS.
aid=23
IP-konto med id 23. Det är alltså IP-kontots id-nummer och inget annat som avses.
pwd=mypass
Lösenordet till angivet konto är mypass
Returvärde
IP-adressen skrivs ut i klartext, utan html-kod, om inga fel påträffas.
Sidan Omdirigera
Automatisk omdirigering till senast lagrade IP för angivet IP-konto.
Sidan har inget grafiskt gränssnitt och visas inte i menyn.
Exempel:
http://example.com?page=bendip/redirect&aid=23&pwd=mypass
Om något går snett returneras meddelanden i klartext, utan html-kod.
Ingående filer
Filer i BendCMS som enbart används till BendIP.
~/sysConfig/BendIPAccountConfig.php
~/sysConfig/BendIPDataConfig.php
~/phpFunctions/getBendIpData.php
~/pageLogic/bendIpAccount.php
~/pageLogic/bendIpInfo.php
~/pageLogic/bendIpRedirect.php
~/pageLogic/bendIpShow.php
~/pageLogic/bendIpUpdate.php
~/pageContent/61.php till 65.php
~/pageConfig/61.php till 65.php
~/pageData/BendIP/accounts.csv
~/pageData/BendIP/ipData_n.csv (n byts mot BendIP-kontots id-nummer)