Article View: pl.comp.bazy-danych
Article #194429Re: Postgresql - dane serwera
From: Ronald Kuczek
Date: Wed, 29 Apr 2015 21:36
Date: Wed, 29 Apr 2015 21:36
61 lines
3183 bytes
3183 bytes
W dniu 18.04.2015 o 10:13, Melwinek pisze:
> Czy da się w jakiś sposób z poziomu SQL wydobyć np. adres mac karty sieciowej serwera lub numer seryjny dysku twardego?
> Lub jakiś podobny parametr.
> Szukam prostego i skutecznego sposobu na zabezpieczenie programu przed kopiowaniem.
>
Wątek lekko stary, ale może moja odpowiedź na coś się przyda.
Postgres ma świetne możliwości dołączania zewnętrznych funkcji.
Wyciągnięcie MAC, IP, nazwy stacji czy innych interesujących danych z
poziomu C to nie powinien być większy problem , coćby tak:
#include <sys/ioctl.h>
#include <net/if.h>
#include <unistd.h>
#include <netinet/in.h>
#include <string.h>
int main()
{
struct ifreq ifr;
struct ifconf ifc;
char buf[1024];
int success = 0;
int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
if (sock == -1) { /* handle error*/ };
ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = buf;
if (ioctl(sock, SIOCGIFCONF, &ifc) == -1) { /* handle error */ }
struct ifreq* it = ifc.ifc_req;
const struct ifreq* const end = it + (ifc.ifc_len / sizeof(struct
ifreq));
for (; it != end; ++it) {
strcpy(ifr.ifr_name, it->ifr_name);
if (ioctl(sock, SIOCGIFFLAGS, &ifr) == 0) {
if (! (ifr.ifr_flags & IFF_LOOPBACK)) { // don't count loopback
if (ioctl(sock, SIOCGIFHWADDR, &ifr) == 0) {
success = 1;
break;
}
}
}
else { /* handle error */ }
}
unsigned char mac_address[6];
if (success) memcpy(mac_address, ifr.ifr_hwaddr.sa_data, 6);
}
a zadeklarowanie odpowiedniej funkcji w Postgresie, podłączenie
biblioteki, by mieć dowolną możliwość wywoływania jej z poziomu SQL to
już dziecinnie proste. Jakieś 15 lat temu napisałem biblioteki w C,
które korzystały ze SWISH-a i podłączyłem je do PostgreSQL zanim jeszcze
ktokolwiek słyszał o fulltekscie w tej bazie danych. Żeby było
śmieszniej to rozwiązanie działa do dzisiaj w kilku sporych firmach i
nikt nie narzeka. Poczytaj o SPI, naprawdę można cuda robić.
Pozdrawiam
Rony
Technical Details
Message-ID:
<55414ef3$0$27517$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<fe0e5934-696f-458a-a4fb-36b4de38e552@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Date: Wed, 29 Apr 2015 23:36:51 +0200 From: Ronald Kuczek <kuczek@kuczek.pl> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 Newsgroups: pl.comp.bazy-danych Subject: Re: Postgresql - dane serwera References: <fe0e5934-696f-458a-a4fb-36b4de38e552@googlegroups.com> In-Reply-To: <fe0e5934-696f-458a-a4fb-36b4de38e552@googlegroups.com> Lines: 61 Message-ID: <55414ef3$0$27517$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 80.53.131.214 X-Trace: 1430343411 unt-rea-a-02.news.neostrada.pl 27517 80.53.131.214:47881 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit