есть файл 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;
}
собственно вопрос: как им воспользоваться?
т.е. как с помощью консоли с использованием этого файла конвертировать блоклисты?
Я конечно в этом не так сильно разбираюсь, но помойму это исходный код программы на С.
Значит для её использования тебе надо её скомпилировать.
Для компиляции в линукс есть GCC
script@script-laptop:~$ make /home/script/C/btblocklistconverter.c
помойму так, это ты в консоле должен набрать
путь файла измени на свой.
Я gcc не использую, так что если что исправте меня, хотя вроде правильно
команда make
выдаёт
`btblocklistconverter.c' is up to date.
Script
я вот и думаю может это скрипт написаный на Си?
кто знает, как отличить скрипт от программы?
man gcc
напугал обилием информации, куда копать?
если прога то понятно что компиляция нужна,
потом поместить полученный файл в директорию bin,
и сделать файл выполняемым.
а затем можно на здоровье конвертировать блоклисты.
но как всё это проделать я ещё незнаю.
похоже что это один класс из какой то программы, вы вообще где взяли этот файл?
вот собственно отсюда.
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 (//\"http://trac.transmissionbt.com/attachment/ticket/827/btblocklistconverter.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.
эту библиотеку надо положить в исходники Transmission (btorrent client) и собрать с ней из этих исходников после чего сможете формировать свой блоклист (примерная суть того что там написано)
Vicpo
спасибо, испробую этот вариант.
в сорцах есть директория daemon с другими файлами *.c
т.е. нужно файл btblocklistconverter.c поместить туда.
нужно ли править Makefile, или при установке цепляется всё что в есть в daemon?
просто поместить править ничего не надо как я понял