🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #194429

Re: Postgresql - dane serwera

#194429
From: Ronald Kuczek
Date: Wed, 29 Apr 2015 21:36
61 lines
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-mail
References: <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