Archive for 27. veebr. 2012

PostgreSQL: kasutajad dünaamilise IP aadressi pealt

veebruar 27, 2012

Kuna tasapisi arendan raamatupidamistarkvara Stiigot, siis seoses sellega tekkis vajadus, et raamatupidajad saaksid ka dünaamilise IP aadressi pealt andmebaasi logida.

Ei pea veel ennast PosgreSQL tippspetsialistiks, siis mõtlesin uurin maad kuidas seda teostada:
võimatu…, ei saa, pole võimalik, ei saa kuidagi“. Ja need olid tüüpvastused, mis tekitasid minus tõelist hämmingut.

Ma ei saa nõuda raamatupidajatelt, et nad kõik teeks omale staatilised IP’d (samuti liiguvad nad maailmas ringi). Iga kulu on kulu … 9-10€ maksab staatilise IP teenus.

Seda nippi teadsin juba ammu, kuid mulle tõesti ei meeldi, et terve küla käiks mu serverit testimas 🙂

host andmebaas kasutaja 0.0.0.0/0 md5

või siis natuke “turvalisem”

hostssl andmebaas kasutaja 0.0.0.0/0 md5

On ka OpenSSH variant teha, aga seda tavakasutajale selgeks teha pole just kerge. Selletõttu liigume edasi.

No mitte kuidagit kohe ei istu selline asi, kus küla laamendab, ou wait a second…lugesin enda blogi, ma ju programmeerija. Vahel kipub ununema 😉
—–

Lahendus nr 2, mis sobis mulle tunduvalt paremini.Võtsin kasutusele dünaamilise DNSi ehk raamatupidajatel tarkvara, mis siis teavitab nende IP muudatustest.

http://www.no-ip.com/services/managed_dns/free_dynamic_dns.html
või
See pole enam tasuta, aga 20$ aasta peale pole ka katastroof:
http://dyn.com/dns

—–

Üldiselt raamatupidajatel dün. DNSs konfitud; malle.hopto.org, kalle.hopto.org jne nüüd mul olemas nende aadressid.

Järgmine samm on püsti panna monitoorimine, iga 5 min tagant küsitakse IP aadresse ja vajadusel muudetakse pg_hba.conf faili ning antakse käsk Postgres serverile seaded uuesti laadida.

Kuna ta natuke Stiigoga seotud, siis peate enda andmebaasi looma tabeli, kus ära kirjeldatud aadressid, mille pealt peaks saama andmebaasi logida.

CREATE TABLE dynamicdnshost
(
id serial NOT NULL,
dynhostname character varying(1024) NOT NULL,
customername character varying(128) NOT NULL DEFAULT '',
current_ip character varying(40) NOT NULL DEFAULT '',
previous_ip character varying(40) NOT NULL DEFAULT '',
iptype character varying(5) NOT NULL DEFAULT 'ipv4',
rec_changed timestamp with time zone NOT NULL DEFAULT now(),
active boolean NOT NULL DEFAULT true,
databasename character varying(1024) NOT NULL DEFAULT ''
CONSTRAINT dynamicdnshost_pkey PRIMARY KEY (id)
)

ntx kirjed
insert into dynamicdnshost(dynhostname ,databasename)
values(‘malle.hopto.org’,’estbk’)

või

insert into dynamicdnshost(dynhostname ,databasename)
values(‘ssl:kalle.hopto.org’,’estbk’)

märkus: siin on ssl sisemine marker, et tekitataks rida hostssl

Järgmine küsimus oleks, aga mis edasi…sellest tuleb tõmmata programm:

dyndnspostgres.exe

PS. enne programmi käivitamist tehke koopia hetke pg_hba.conf failist, sest programm võib eksida…

Ja näide väljakutsest:

dyndnspostgres.exe -d estbk -u postgres -p saladus -h 127.0.0.1 -t 5432

Igatahes minul töötab rakendus PostgreSQL 8.4 versiooniga ja “kahjuks” Windows masinal. Aga saaks ka Linuxi peale kompileerida rakenduse, kuid see juba kokkuleppe küsimus.

Loodame, et lahendasime jälle ühe “ei saa, võimatu olukorra”. Seniks järgmiste võimatute asjadeni 😉

Advertisements