Commandline blocklist converter

Автор turbo, 20 Июня 2008, 23:49

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

turbo

есть файл btblocklistconverter.c с содержимым
/*
 * Copyright 2007 Ryan Walklin, All Rights Reserved
 *
 * This file may be used or modified without the need for a license.
 *
 * Redistribution of this file in either its original form, or in an
 * updated form may be done under the terms of the GNU GENERAL
 * PUBLIC LICENSE.  If this license is unacceptable to you then you
 * may not redistribute this work.
 *
 * See the file COPYING for details.
 */

/* btblocklistimporter.c */


//#include <curl/curl.h>
//#include <curl/easy.h>

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/stat.h>

#include "blocklistquery.h"
#include "fgetline.h"


/* functions */

int64_t filesize(char* filename)
{
struct stat statbuf;
stat(filename, &statbuf);
return statbuf.st_size;
}


int main(int argc, char **argv)
{
int success = 1, result = 0;
char *filename;
FILE *list, *convertedList;

/* main */
if(argc!=2) goto usage;
if(argv[1][0]=='-') goto usage;

filename=argv[1];

if ((list = fopen(filename, "r")) == NULL)
{
perror(filename);
return 1;
}
else
{
if ((convertedList = fopen("./level1.dat", "w")) == NULL)
{
perror("level1.dat");
fclose(list);
return 1;
}
else
{
// convert
int64_t blockListSize = filesize(filename);

int64_t lineLength, lineCount = 0, parsedLength = 0;
ipBlock convertedIPBlock;
char *iprange, *ipend, *ipstart;
struct in_addr tempIP;

while ((iprange = fgetline(list)))
{
// 1 byte short to deal with Win32 CRLF line endings - ? dangerous - lets hope they don't change the format
lineCount++;
parsedLength += (lineLength = strlen(iprange));

if (lineLength == 0) break;

ipend = calloc(1, lineLength+1);
strncpy(ipend, iprange, lineLength);
free(iprange);

strsep(&ipend,":");
ipstart = strsep(&ipend, "-");

inet_aton(ipstart, &tempIP);
convertedIPBlock.startIP = ntohl(tempIP.s_addr);

inet_aton(ipend, &tempIP);
convertedIPBlock.endIP = ntohl(tempIP.s_addr);

//write
if (fwrite(&convertedIPBlock, sizeof(ipBlock), 1, convertedList) != 1)
{
// notify with error
success = 0;
break;
}
if (lineCount % 200 == 0)
{
fprintf(stdout, "%79sr", " ");
fprintf(stdout, "Converting - %.2f%% complete", parsedLength * 100.0 / blockListSize);
}
}
fclose(list);
fclose(convertedList);
// close files
if (success)
{
fprintf(stdout, "%79sr", " ");
fprintf(stdout, "Converting - 100%% completen");
}
}
}
return result;

usage:
fprintf(stderr, "Usage: %s blocklistfilen", argv[0]);
fprintf(stderr, "Version: %.2fn", VERSION);
return 1;
}

собственно вопрос: как им воспользоваться?
т.е. как с помощью консоли с использованием этого файла конвертировать блоклисты?

Script

Я конечно в этом не так сильно разбираюсь, но помойму это исходный код программы на С.
Значит для её использования тебе надо её скомпилировать.
Для компиляции в линукс есть GCC

script@script-laptop:~$ make /home/script/C/btblocklistconverter.c

помойму так,  это ты в консоле должен набрать
путь файла измени на свой.
Я gcc не использую, так что если что исправте меня, хотя вроде правильно
"Ubuntu" is an ancient African word, meaning "I can't configure Gentoo" © Davidov                   -----     фриЛСДшник

turbo

команда make
выдаёт
`btblocklistconverter.c' is up to date.
Script
я вот и думаю может это скрипт написаный на Си?
кто знает, как отличить скрипт от программы?

man gcc
напугал обилием информации, куда копать?

если прога то понятно что компиляция нужна,
потом поместить полученный файл в директорию bin,
и сделать файл выполняемым.
а затем можно на здоровье конвертировать блоклисты.
но как всё это проделать я ещё незнаю.

Vicpo

похоже что это один класс из какой то программы, вы вообще где взяли этот файл?

turbo

вот собственно отсюда.

I think for most people the blocklist from Bluetack provides adequate protection against malicious peers.

If you want to provide your own blocklist, the command-line converter at http://trac.transmissionbt.com/attachment/...listconverter.c will convert a blocklist in Bluetack format to the binary format Transmission uses. You can then replace ~/Library/Application Support/Transmission/blocklist with your file.

Vicpo

эту библиотеку надо положить в исходники Transmission (btorrent client) и собрать с ней из этих исходников после чего сможете формировать свой блоклист (примерная суть того что там написано)

turbo

Vicpo
спасибо, испробую этот вариант.

в сорцах есть директория daemon с другими файлами *.c
т.е. нужно файл btblocklistconverter.c поместить туда.
нужно ли править Makefile, или при установке цепляется всё что в есть в daemon?

Vicpo

просто поместить править ничего не надо как я понял