The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"rbl (host & dig & gethostbyname)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"rbl (host & dig & gethostbyname)"  
Сообщение от grif (ok) on 19-Янв-06, 21:19 
пытаюсь внедрить в свою программу проверку на чЁрные листы, например через  dnsbl.sorbs.net, если писать в консоле host xxx.xxx.xxx.xxx.dnsbl.sorbs.net - то проверяеться нормально, через dig - тоже, написал прогу на с:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>

typedef unsigned char uchar;

extern int h_errno;

char *getip(const char *hostname){
    if(!hostname) return NULL;

    struct hostent *ipaddr = gethostbyname(hostname);

    if(!ipaddr) return NULL;
    return ipaddr->h_addr_list[0];
}

int rbl_checkip(const char *hostname, const char *rbl){
    if(!hostname || !rbl) return -1;

    char *hostip = getip(hostname);
    if(hostip){
        char *rblhostname = (char*)malloc(18+strlen(rbl));
        if(rblhostname){
            sprintf(rblhostname, "%d.%d.%d.%d.%s", (uchar)hostip[3], (uchar)hostip[2], (uchar)hostip[1], (uchar)hostip[0], rbl);
            fprintf(stderr, "rblhostname=%s\n", rblhostname);
            char *rblip = getip(rblhostname);
            free(rblhostname);
            if(rblip){
                printf("ip=%d.%d.%d.%d\n", (uchar)rblip[0], (uchar)rblip[1], (uchar)rblip[2], (uchar)rblip[3]);
                printf("rezult=%d\n", (uchar)rblip[3]);
                return 1;
            }
            printf("ok\n");
            return h_errno==HOST_NOT_FOUND?0:-1;
        }
        return -1;
    }
    return h_errno==HOST_NOT_FOUND?1:-1;
}

int main(int argc, char *argv[]){
    if(argc > 1) printf("rez=%d\n", rbl_checkip(argv[1], "dnsbl.sorbs.net"));
    return 0;
}

тоже вроде работает, запускаю на другой машине - выдаЁт непонятный IP, хотя через host или dig - работает.

в чЁм я ошибся или есть альтернатива gethostbyname в си? и почему на одной машине работает на другой нет, железо одинаковое(x86_64) - операционка тоже(RHEL3)? но разный интернет.

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "rbl (host & dig & gethostbyname)"  
Сообщение от grif (ok) on 19-Янв-06, 22:28 
проблему решил, в /etc/resolv.conf закоментировал search domain.org, и кто еЁ туда вписал?:)))
Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "rbl (host & dig & gethostbyname)"  
Сообщение от ra (??) on 20-Янв-06, 10:08 
не надо использовать эти списки - однажды огребетесь. и не надо защищаться путем ресолва вторичной зоны. заеб..ли такие меры - "...а зато у нас спама почти нет!"
http://www.antispam.ru/sh?act=msg&id=1081337178
Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "rbl (host & dig & gethostbyname)"  
Сообщение от grif (ok) on 20-Янв-06, 15:56 
да, но можнож не только сорбом пользоваться
Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру