Official eMule-Board: Ipcheck (Final Version Released)Included Fake File Manager - Official eMule-Board

Jump to content


  • (2 Pages)
  • +
  • 1
  • 2

Ipcheck (Final Version Released)Included Fake File Manager emule ipfilter tool - Generate Ipfilter file automatically

#1 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 28 May 2010 - 02:38 AM

Technical details.
Programming language: Visual basic.net 2008

Minimum requirements:
Platform: Intel pentium4, 2.66 ghz
Operating System: Windows xp sp3.
Memory: 512MB.
Note: I do not know if it works on other platforms and operating systems.

Release beta version.
IPCheck enable you to create your own ipfilter.
IPCheck include tutorials that guide you, step by step in the process.
IPCheck also has a English Support website.
You should note that this website is under construction, so be patient, everything will come.
IPCheck is a totally free of charge and open source application.
As with all beta versions, you might find errors in the application, if so, please report it in this thread.

Please note that I am newbie in the programming issues. :angelnot:
You can also download the source code, if you think you can contribute something to the project, you are welcome.
If you have any suggestions, please let me know.
For my part I am open to any constructive criticism, which may help to improve implementation.
If you think the ip filter is not necessary, this application is not for you.
Thanks to everyone who helped me to choose the blacklists, and especially
The words of support. :+1:

IpCheck (beta version, 100% functional), working with Net 3.5
IpCheck

Sources

IpCheck.zip

IpCheck (beta version, 100% functional), working with Net 2.0 (Include Bin)
IpCheck

Uninstall beta version
Go to panel control>add/remove programs>Setup, and follow instructions.

Ipcheck (beta 1), working with Net 2.0 (Include Bin)
beta 1

______________________________________________________________

07/20/2010 - Download from SourceForge
IpCheck Final version 1.0 - installer


IpCheck - final version 1.0 - installer

Bin - Final version 1.0

Mini changelog

Quote

Added another list source, from TBG Blocklists
Added WHOIS feature.
Added Fake file Manager*
Added mini- web browser feature.
Added Guidelines.


* About Fake file Manager

IpCheck does not filtering, nor avoid any download.
IpCheck only give you the chance to manage fake files database.
IpCheck already contain a database with fake files, classifieds by hash file.
You can, in fact you should increase this database, via IpCheck feature called
<Fake file manager>.
You must have one thing in mind, the more you update your database, the higher the effectiveness, and more likely you are to verify the authenticity of a file, before downloading it.
In other words, IPCheck will give you the fishing rod and bait, but it is you who has to catch the fish.
When you find a fake file on the network, add it to your database.
And remember, you are the best filter for emule.
You will find related guidelines via Menu>Help feature.
_________________________________________________________________


08/01/2010 - Go to, bin\Release and run IpCheck.exe.

Bin

Note: Bin contain files to translate to, such as : IpCheckStrings.xml

Added 2 source to get file stats, via web service:
Peerates,http://edk.peerates.net/check.php?hash=#hashid
Shortypower,http://ed2k.shortypower.dyndns.org/?hash=#hashid

about, Power-Portal,http://ed2kstats.power-portal.to/ed2k.php?hash=#hashid,
it's currently out of order, however I have decided to keep it, hoping that it is a temporary incident.
Anyway you can use peerates or Shortypower too.

________________________________________________________________




08/28/2010 - Download from SourceForge
IpCheck Final version 1.0


Installer
Checksum
SHA1: 3de1ff6bb4e1e1f9cc0f2304696e0f836339d450
MD5: f805c5cbaec296e40f8bbfa2bcfa734d

Bin
Checksum
SHA1: 226ee00bb6e2cb3fb2256bb83a265f88cdae5366
MD5: 44d425a875e8559605fe707de6a56ac0

Sources
Checksum
SHA1: 1aee8bdd9b16e9ffe1177da445d9e4d1a9f6b56a
MD5: b4bd9ec94a2cceef3b4c03dcdeedafc6

Download IpCheck v1.0 from ContentDB, using Ed2k link + emule.

Changelog - Data: 08/28/2010

Quote

* Added Option called, Generate ipfilter automatically.
Just one click.
* Increase and improved help guidelines
* added video tutorials than you can display from app itself
* Improved Include/Exclude IP, feature.
* Improved Fake file manager, feature.



If you don't know how IpCheck works, or simply you prefer let IpCheck take controls, does not worry!!!
IpCheck will do it all for you. Just one click, and ipfilter file will be done.

Generate ipfilter automatically.
You've two options, such as:
a- Via Menu>Generating Ipfilter>Generate ipfilter automatically
b- Press firts buttón on toolbar.

IpCheck will do all for you, as follow:

  • IpCheck will use BlueTack blocklist.
  • IpCheck will download list from App website.
  • IpCheck unzip all list downloaded.
  • IpCheck will auto-generate file.
  • Generated file will be save as ipfilter.txt in app folder.
  • Also it will be open in Notepad editor, so you can evaluate results, before save file as ipfilter.dat,in your emule>config folder.


PD: If you want most widely info, please visit website support .
You've link above.

added video tutorials than you can display from app itself
Added video tutorials that can be viewed from the application.
These video tutorials are hosted on YouTube.
These video tutorials in avi format, can also be viewed using whatever media player.
If you use this option, you should use the full screen option.

Important: If you use Bin, you'll need Framework 2.0 installed.
Does not added video tutorials to app folder, due long file sizes. Anyway, you can download them from application's web site

________________________________________________________________

Blacklists included:

Level - List name

030: iana-multicast.txt
040: iana-private.txt
050: iana-reserverd.txt
060: bogon.txt
070: bogus-as-advertisements.txt
080: possible_bogus_routes.txt
090: level1.txt
095: Fk.txt, (Fake servers)
097: Microsoft.txt
100: hijacked.txt
109: level2.txt
110: level3.txt
111: Spyware.txt
113: ads-trackers-and-bad-pr0n.txt
115: Spider.txt
119: BadPeers.txt
160: fornolandcomputers.txt


Screen Download list tab

Posted Image

Screen add list tab

Posted Image

Screen Include/exclude ip tab

Posted Image

Screen Fake file Manager tab

Posted Image

Screen mini web browser tab

Posted Image


I would be grateful, if you reported any of the following cases:

1 - You use IPCheck on an operating system other than Windows XP, and it works.
2 - You find whatever bug in the operation, of the application.
3 - your computer crashes when using IPCheck.
4 - You have any suggestions for improving the application.
5 - You find an error of translation or grammar. (I'm pretty sure, it'll done :angelnot: )
6 - You find the program useful, and would like to help translate into your language.
8 - You think that the code could be improved, and you know how to. (ty, Avi-3k :flowers: )
9 - You think, I could add new features.
10- You think that the author, is a very ugly man. :P

Thanks in advance for your cooperation. :flowers:
Enjoy IPCheck. :)
elChele.

This post has been edited by ElChele: 10 September 2010 - 09:49 PM

Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#2 User is offline   Eulero 

  • Golden eMule
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 2553
  • Joined: 09-August 07

Posted 28 May 2010 - 08:34 AM

can you host a simple zip or 7z? zipx is not yet supported by many managers of archives. Posted Image
0

#3 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 28 May 2010 - 03:34 PM

View PostEulero, on 28 May 2010 - 10:34 AM, said:

can you host a simple zip or 7z? zipx is not yet supported by many managers of archives. Posted Image


Done. :)
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#4 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 28 May 2010 - 09:13 PM

1) could you release a binaries package and not just an installer?
setup is sometimes redundant (and msi installers are very crappy)

2) could you change the project settings & compile it to allow using with .net v2 (and not 3.5)?

Regards,
Avi3k
retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#5 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 29 May 2010 - 03:00 AM

View PostAvi-3k, on 28 May 2010 - 11:13 PM, said:

1) could you release a binaries package and not just an installer?
setup is sometimes redundant (and msi installers are very crappy)

2) could you change the project settings & compile it to allow using with .net v2 (and not 3.5)?

Regards,
Avi3k


Done :)
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#6 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 29 May 2010 - 09:45 PM

thank you :)

it works ok with .net 2, so that's good,
but i think you could improve a few things...:
  • use full row select in the list ctrl, it will ease the users when choosing filters
  • you can also change the list ctrl to include checkboxes, it's a way to select several filters and download simultaneously
    (another way is allowing multiple selection, the code is very similar in both cases)
  • use a progress bar to indicate progress when possible
    + use threading where needed/possible (like in downloads, heavy file i/o, etc), it will make the gui more responsive
    (my net connection has issues and the app froze on me several times)
  • maybe avoid minimizing the main window when opening a secondary one, it's confusing,
    also set focus on the new window, otherwise it might not be seen at first
  • perhaps use tooltips for controllers instead of tips in a different window/tab
  • for manual editing, i'd suggest using a list ctrl (with paging or a filter textbox like in eMule [in search/shared files])
    you can easily add/edit/remove items and you won't have to divide the file
  • add desctiption to each filter, otherwise the user might not understand its meaning & usage (just 1 more column)
  • add the abilty to translate the gui, i'm sure people would like to help you translate it

(several of these items are already included for upcoming Skinner versions, if not already)

i hope you take my constructive criticism the right way, currently the app is not as intuitive as it can be
and this app can help many users, even devs/computer-geeks like me :lol:
i suggest you'd focus on the gui, one window is enough (use a similar approch like eMule's gui)

btw, nice job, great to see such a tool (long over due)!

Avi3k
retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#7 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 30 May 2010 - 10:24 AM

Quote

use full row select in the list ctrl, it will ease the users when choosing filters

Done

Quote

you can also change the list ctrl to include checkboxes, it's a way to select several filters and download simultaneously
(another way is allowing multiple selection, the code is very similar in both cases)


I am working on it.
In fact, that was my first choice, but I then thought this could mean a problem for those users with limited resources of cpu.
But the application I endowed with the ability to download some or all lists simultaneously.
To do this, simply go to the IpCheck's web browser> Site Link Manager.
Once there, select all the lists and click the button called DownloadList.
Then you just have to go back to the window called SourceList Manager, and process lists of your choice.
In my case, the whole operation means very little time, but the cpu consumption is 100%.
In fact, your next suggestion, confirmed my suspicion.***

Quote

use a progress bar to indicate progress when possible


I already use the progress bar in the window called SourceList Manager. I will implement in the others, if that's what you're talking about.

Quote

+ use threading where needed/possible (like in downloads, heavy file i/o, etc), it will make the gui more responsive
(my net connection has issues and the app froze on me several times)***


First of all, you remember that I'm quite a beginner in the programming world, for this reason I have some doubts, I comment on, such as:
I assume you are talking about Thread.Sleep(0), but calling before to Application.DoEvents(), maybe onto a try/Cach/End try statement,when looping, in order to keeps the CPU cool.
Although I'm not entirely sure of its effectiveness, since,
Application.DoEvents() will empty the entire message queue, but Sleep(0) only releases the CPU (time slot) and reinsert the thread at the back of the active queue. If Sleep() is called from the UI thread, not a single further message has been processed when it returns.
Please Tell me if I am wrong, if so, can you suggest me another solution?, perhaps some procedure working in background mode?.

Quote

maybe avoid minimizing the main window when opening a secondary one, it's confusing,
also set focus on the new window, otherwise it might not be seen at first


Done

Quote

perhaps use tooltips for controllers instead of tips in a different window/tab


The tips allow for a graphic explanation, much wider, and therefore much easier to understand by the user.
However all buttons already incorporate tooltips feature.

Quote

for manual editing, i'd suggest using a list ctrl (with paging or a filter textbox like in eMule [in search/shared files])
you can easily add/edit/remove items and you won't have to divide the file


If you are talking about Include/Exclude manager feature, divide file feature it is focused to users with low cpu/mem resources.
Anyway, about Divide file feature related to manual editing, the user can choose whether to use or not, ( of course, depending of user cpu resources).

Quote

add description to each filter, otherwise the user might not understand its meaning & usage (just 1 more column)


Please, here let me know ¿if you are talking about listview ctrl, in Source list manager windows?,
if so, the application web site include a wide explanation about each list, in the help file.

Quote

add the abilty to translate the gui, i'm sure people would like to help you translate it


We're talking about satellite assemblies, as well as the cooperation of third parties.
I fear that this will take some time.

Quote

i hope you take my constructive criticism the right way,


Of course my friend!, in fact all your suggestion, they are wellcome. :+1:

Quote

currently the app is not as intuitive as it can be

I agree with you. :)

Quote

i suggest you'd focus on the gui, one window is enough (use a similar approch like eMule's gui)


Do you mean midi/child windows?

Quote

btw, nice job, great to see such a tool (long over due)

Thanks.
I really hope that this tool can help many people.
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#8 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 30 May 2010 - 09:21 PM

:)
happy to help

i've made a basic gui example
Posted Image

as you can see, most/all functions can be available in the main screen,
just add toolbar buttons, menu items, tabs, etc... for each function.
one of the few advantages of .net is that you can do this easily and add the proper
event handler so all you have to do after creating such a gui is copy-paste the code in the right place

also, the gui can look simple but you can add advanced features later on,
that way it will be efficient for both novice and skilled users.
some features can be automatic and adv. handling can be done in a different window if needed,
e.g: opening zip files, you don't have to add a window just to open a zipped ipfilter,
simply check the file's extension and operate accordingly, it's the same with saving zip (if you want to make it possible)

Quote

First of all, you remember that I'm quite a beginner in the programming world, for this reason I have some doubts, I comment on, such as:
I assume you are talking about Thread.Sleep(0), but calling before to Application.DoEvents(), maybe onto a try/Cach/End try statement,when looping, in order to keeps the CPU cool.
Although I'm not entirely sure of its effectiveness, since,
Application.DoEvents() will empty the entire message queue, but Sleep(0) only releases the CPU (time slot) and reinsert the thread at the back of the active queue. If Sleep() is called from the UI thread, not a single further message has been processed when it returns.
Please Tell me if I am wrong, if so, can you suggest me another solution?, perhaps some procedure working in background mode?.

not sure about that one, i'm not sure how threading is handles in .net and i'm not familiar with it.
if you're a beginner, don't handle threads and harder coding styles,
you should read a lot about it and practice first before actually coding it to ip check.

Quote

Please, here let me know ¿if you are talking about listview ctrl, in Source list manager windows?

yes, i did, 'cause sometimes users won't check and this is important for the flow of the app
(even if it's in the help, next to the list itself will make it way easier than you might think)

Quote

Quote

add the abilty to translate the gui, i'm sure people would like to help you translate it

We're talking about satellite assemblies, as well as the cooperation of third parties.

you can use xml files, very easy, very fast to code (read it, insert to a hashtable collection and use labeling in the code)

Quote

If you are talking about Include/Exclude manager feature, divide file feature it is focused to users with low cpu/mem resources.

you can avoid spliting it, if the user wants to manually edit, he/she can use dedicated editors like notepad++
(edit: you can even add a pref+command to do so, like eMule does with web-services)
if you want to keep it light, simply use paging/display-filters in the display and let the user choose (e.g: 100/1000/10000 per page)
you can convert the ip from strings to ints, it will save a lot of memory (but will consume a little cpu and might take a bit longer)


if you know c/c++ a little, i suggest you check eMule ip-filter code, it will help you with ip-check :)
sorry if i didn't answer everything, but this is a good start for you to work on and to learn from.

good luck ;)
Avi3k

This post has been edited by Avi-3k: 30 May 2010 - 09:24 PM

retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#9 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 03 June 2010 - 11:22 AM

Quote

some features can be automatic and adv. handling can be done in a different window if needed,
e.g: opening zip files, you don't have to add a window just to open a zipped ipfilter,
simply check the file's extension and operate accordingly, it's the same with saving zip (if you want to make it possible)


The application already does that.
When user clicks on the link for a list either on the tab called Source list, the following occurs:
Let's take as example, file called "Level1.txt"

1 - The application checks if that file already exists.
(C:\IpFilterTool\IpCheck\BLM_List\Unzipped Lists\Level1.txt)

If the file exists:
The application processes and add it, to the ipfilter.

If the file does not exist as txt:
2 - The application checks if the file exists, in zip format.

If the file exists as zip.
a- The aplication automatically decompress file.
b- The application processes and add it, to the ipfilter.

3 - If the file does not exist as either plain text or zip format.
a- The application will inform the user of this, and suggest he/she, to download it.
To do this, the user only has to go to the tab called download lists, select the file in question, and click on the button called download list.
Once done, return to the tab called Source list and try again.

PS.This scenario assumes that it has not happened, the reason is that the application informs to the user,that the first step to generate the ip filter, is to download the lists of their choice, for further processing.
However, this can happen, in which case the situation is already provided and covered.

The reason for including this feature as many others, is none other than avoiding the user having to open other applications. In other words, a kind of all_in_one.
Nowaday, most people have installed an application that handles zip files.
However, there is always someone who does not have, in which case this event is covered with function, compress and decompress files.
This also applies to edit / modify any list in plain text format.
You can do this without having to open an external text editor such as Notepad,
because all of this, the User can do so, within the application itself.
Same here, with IpCheck's web browser feature.(In fact, I am using it now to posting)
Anyway I agree with you, that a most compact app is needed.
Although my first impulse was to get a user interface, more carefree and happy.
I think I'll keep the two versions of the application, and each user to choose which he/she want to use.

Quote

if you're a beginner, don't handle threads and harder coding styles


Sorry friend, I can not avoid it. :)
threading.Sleep() here is too expensive in process time,let's take an scenario as example:

Using threading.Sleep() and Level1.txt file, (approximate size 12mb).
Lowest cpu usage, but longer time process, (approximate 12 minute).
This is insane, and the only thing you can get through this, is a user thinking about suicide or worse. :D

Without Using threading.Sleep() and same file.
Hight cpu usage, but lowest time process, (approximate 2 minutes).I think user don't notice those 2 minutes.

Instead I use another function to refresh memory, such as, threading.thread.memorybarrier().
However we must not lose sight of the fact that data resides in cache, so it is normal that the application uses ram memory.
For this reason the data are not permanent, and are destroyed, once the ip filter file is generated .

Quote

yes, i did, 'cause sometimes users won't check and this is important for the flow of the app
(even if it's in the help, next to the list itself will make it way easier than you might think)


I agree.
In fact, the application will load a help file, with the necessary information, when the user requires.
Also load a txt file, with the description of each of the blacklists used by the application, instead of using the column called description, as you suggest above.
The reason is that frequently related information, is very broad as to include in a single row.
This file will be load, pressing a button called view list decription, in toolbar.
Of course, every buttons includes tooltips.

Quote

you can use xml files, very easy, very fast to code (read it, insert to a hashtable collection and use labeling in the code)


Here I have used localized resource files.
For now, I've tested with four languages, such as, Spanish, English, French, and German.
In the case of French and German language, but I have only translated the text of three commands buttons, in order to create the appropriate resource files.
The reason to translate only three buttons, is because I do not trust much of the online translators, to translate whole application gui.
Of course this is provisional and may become permanent, if the users are encouraged to help with the translation, of the application interface.
Because I have no operating system with all these languages, what I do is change the anguage setting via code, in order to test if it works, and actually it works fine.

Quote

you can avoid spliting it, if the user wants to manually edit, he/she can use dedicated editors like notepad++


Here I am not totally agree with you, and I'll explain why.

Take a small portion of the ip filter file such as:

140.239.255.017 - 140.239.255.030 , 109 , [L2]PEEK FINANCIAL SERVICES, INC
140.239.255.033 - 140.239.255.046 , 109 , [L2]BOSTON MEDICAL EVLAUATION - 10 HIGH ST
140.240.000.000 - 140.240.255.255 , 060 , [BG]Bogon
140.241.000.000 - 140.241.255.255 , 090 , [L1]City of Boston

And suppose the user wants to exclude the following IP range:
140.240.000.185 - 140.240.000.185

So open your notebook to find the ip range, (140.240.000.185 - 140.240.000.185).
In this case, the notebook will inform the user that the range does not exist, and indeed is theoretically the case, since this range does not exist physically in the file.

But in fact if it exists, because it is in the range: 140.240.000.000 - 140.240.255.255, (between IpStart through IpEnd)

Here you need code to find the range, through to get it I use the philosophy of
divide and conquer algorithm.
since it say:
Copy & Paste.

Quote

A divide and conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same (or related) type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem.

This technique is the basis of efficient algorithms for all kinds of problems, such as sorting (e.g., quicksort, merge sort)....


Source

For this reason the application divides the file ipfilter in two new files.
Thus, if the range ip proposed by the user it is between 0 and X, the application looks in the file ipfilter_a.txt.
Otherwise, if greater than X, seeking in the file Ipfilter_b.txt, minimizing the processing time.

Also, the application goes directly to the line that begins with the first octet of the range in question (140), to begin searching, and skipping the rest of lines, further minimizing the processing time.
Once app locate the container range, the application creates two new ranges, in order to exclude the ip range in question.
Obviously if the first octet does not exist, it means that range either does not exist, and the application inform about that, to the user.

Returning to the example above, solution would be as follow:

Range proposed by the user: 140.240.000.185 - 140.240.000.185
Range container: 140.240.000.000 - 140.240.255.255
Rango1: 140.240.000.000 - 140.240.000.184
Range2: 140.240.000.186 - 140.240.255.255

Finally:

140.239.255.017 - 140.239.255.030 , 109 , [L2]PEEK FINANCIAL SERVICES, INC
140.239.255.033 - 140.239.255.046 , 109 , [L2]BOSTON MEDICAL EVLAUATION - 10 HIGH ST
140.240.000.000 - 140.240.000.184 , 060 , [BG]Bogon
140.240.000.186 - 140.240.255.255 , 060 , [BG]Bogon
140.241.000.000 - 140.241.255.255 , 090 , [L1]City of Boston

I trust you will agree with me that do that, with notepad as described above, need for expertise, and we are talking about scheduling an application that be fully functional, for novice users, and for skilled users.
For this reason, it is preferable that the application handle this event, and that the user just has to fill in a few text boxes, and clicking a button in toolbar.
Obviously, if the user keeps these two files, the application will not have to create them again, for future operations that require their use. Minimizing the processing time.

PS. Both files are deleted when a new ipfilter file has been created,in order to get them updated, when the user or application requires.

Once the user has finished to include or exclude ranges, the following occurs:
a-Both files, they are merged again, in order to create a new ipfilter file, with changes included.
b-The application creates a backup of the replaced file. (If the results suit you, you can delete this backup)
c-Both files are maintained for future operations, that require them.

Quote

if you know c/c++ a little, i suggest you check eMule ip-filter code, it will help you with ip-check


Unfortunately this is not the case, at least currently.
However, if I had looked at the code that you suggest.
Anyway, we should bear in mind that emule handles ipfilter file already created, while IPCheck creates the file from different blacklists.
Although emule code includes functions that are helpful here, such as, split, merge, etc.
For that reazon and because ipfilter users suggestion, I decide avoid those feature.

Imagine a case scenario:

140.239.255.017 - 140.239.255.020 , 110 , [L2]PEEK FINANCIAL SERVICES, INC
140.239.255.021 - 140.239.255.026 , 109 , [L2]BOSTON MEDICAL EVLAUATION - 10 HIGH ST
140.239.255.027 - 140.239.255.034 , 080 , [BG]Bogon as for testing only
140.239.255.035 - 140.239.255.046 , 060 , [BG]Bogon

In this case, obviously the ranges are adjacent, but different levels and description.
Notwithstanding the application will keep those ranges as they are, in order to keep the information related to them.
Anyway merge ranges here is needed, but emule already do that.
In this case emule code take lower value as level, such as:

140.239.255.017 - 140.239.255.046 , 060 , [BG]Bogon

Conclusion.
a- Ipfilter file retains all related information, to be viewed by the user when required.
b- emule extracts the necessary information from the ipfilter file.
c- emule merge/split ranges when needed.

And everybody happy here. :)

Thanks for the help. :+1:
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#10 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 04 June 2010 - 09:45 PM

Quote

Using threading.Sleep() and Level1.txt file, (approximate size 12mb).
Lowest cpu usage, but longer time process, (approximate 12 minute).
This is insane, and the only thing you can get through this, is a user thinking about suicide or worse. :D

Without Using threading.Sleep() and same file.
Hight cpu usage, but lowest time process, (approximate 2 minutes).I think user don't notice those 2 minutes.

obviously i meant don't use real threading code (creating/manipulating threads, shared objects, threaded io etc)
you can use whatever you already know as you see fit


Quote

Quote

some features can be automatic and adv. handling can be done in a different window if needed,
e.g: opening zip files, you don't have to add a window just to open a zipped ipfilter,
simply check the file's extension and operate accordingly, it's the same with saving zip (if you want to make it possible)

The application already does that.


yes, i know, what i meant was there's no need for the new window "Compress & Decompress list",
e.g: in Skinner you can open an existing skin for editing, if it's zipped, it is automatically extracted to the folder.
so in IpCheck, you'll have a button to allow importing an existing ipfilter and extract it if it's zipped
(you should also consider adding support to rar files if possible, since some mods use them, at least for decompressing)


Quote

Here I have used localized resource files.
For now, I've tested with four languages, such as, Spanish, English, French, and German.
In the case of French and German language, but I have only translated the text of three commands buttons, in order to create the appropriate resource files.
The reason to translate only three buttons, is because I do not trust much of the online translators, to translate whole application gui.
Of course this is provisional and may become permanent, if the users are encouraged to help with the translation, of the application interface.
Because I have no operating system with all these languages, what I do is change the anguage setting via code, in order to test if it works, and actually it works fine.

yes, .net is quite easier when it comes to localization, but you should check other complex langs like hebrew (since it's right-to-left), chinese/japanese/... because of their symbols.
i can help with the hebrew if you'd like :)


Quote

Quote

you can avoid spliting it, if the user wants to manually edit, he/she can use dedicated editors like notepad++

Here I am not totally agree with you, and I'll explain why...


i read you explanation, you are right about the scenario, but you could search much faster if you'd perform the following:
1. read the ipfilter into the memory and keep it there, it's faster than opening files over and over again
(true there's a memory overhead, but as i wrote above, you can convert the IPs from strings to uint32 to save memory, that's what eMule does)
2. use an advanced Abstract data type, e.g: Assoc. array/Hash table with the first octet of the start ip as the index, the class is called Hashtable in .net (there are other types but this is much easier in .net)
3. write functions that take advantage of the above assoc. array to search the ipfilter for ips, ranges, add new ranges, delete existing ranges, editing
and other functionalities needed to manipulate, access, save, open (from file) etc... the ipfilter list.

for the example you described, you'll benefit if you avoid splitting, the reason is that if the file is 20mb,
you perform massive i/o operations just to search for a single entry while in memory it'll be much faster,
the user will be able to do so within the application like you said, just move the option to the editing window instead of a new one

Regards,
Avi3k
retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#11 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 06 June 2010 - 07:43 PM

Quote

yes, .net is quite easier when it comes to localization, but you should check other complex langs like hebrew (since it's right-to-left), chinese/japanese/... because of their symbols.
i can help with the hebrew if you'd like :)


Yes I know :cry2:, ¿Why you does not change text direction?, it would be so easier for me. :D
Of course I will need help, with the hebrew. :+1:


Quote

to save memory, that's what eMule does)
2. use an advanced Abstract data type, e.g: Assoc. array/Hash table with the first octet of the start ip as the index, the class is called Hashtable in .net (there are other types but this is much easier in .net)


Yes, in fact I had tried it, but using sortedlist.
But there is a problem here, since both reject duplicate keys, and a lot of ranges startwith same octect.
The Add method throws an exception if the new key is already in the hash table.

Imports System
Imports System.Collections
Imports System.IO
Imports System.Net

Module IPHandler
    Public IpStartList As New Hashtable()
    Public IpEndList As New Hashtable()
    Public PathFile As String = Application.StartupPath
    Public PathBLM_List As String = Path.Combine(PathFile, "BLM_List\")
    Public PathUnZipDir As String = Path.Combine(PathBLM_List, "Unzipped Lists\")
    Public PathFileValue As String = Path.Combine(PathUnZipDir, "Ipfilter.txt")

    Sub Main(ByVal IpStart As String, ByVal IpEnd As String)
'Here caller sent both param.
        Dim StdFormat As Integer() = {33, 9, -1}
        
        Using MyReader As New  _
       Microsoft.VisualBasic.FileIO.TextFieldParser(PathFileValue)
            MyReader.TextFieldType = FileIO.FieldType.FixedWidth
            MyReader.FieldWidths = StdFormat
            Dim CurrentRow As String

            While Not MyReader.EndOfData
                Try
                    CurrentRow = MyReader.ReadLine()
                    If Not CurrentRow.StartsWith("#") Then
                        IpStart = CurrentRow.Substring(0, 15)
                        IpEnd = CurrentRow.Substring(18, 15)
                    End If

                    Dim IP_Start As IPAddress = Nothing
                    Dim IP_End As IPAddress = Nothing
                    If Not IPAddress.TryParse(IpStart, IP_Start) Then Throw New Exception("Dirección IP no valida: " & IpStart)
                    If Not IPAddress.TryParse(IpEnd, IP_End) Then Throw New Exception("Dirección IP no valida: " & IpEnd)

                    Dim IPs() As Byte = IP_Start.GetAddressBytes 'get the octets, IP_Start
                    Dim IPe() As Byte = IP_End.GetAddressBytes 'get the octets, IP_End
                    Dim IPx, IPy, CounterValue As UInt32

                    'handle ip_Start
                    For x As Integer = 0 To 3
                        IPx = IPx Or (CUInt(IPs(x)) << (3 - x) * 8)
                        If Not IpStartList.ContainsKey(IPs(x)) Then
                            IpStartList.Add(IPs(0), IPx)
                        End If
                    Next

                    'handle Ip_End
                    For y As Integer = 0 To 3
                        IPy = IPy Or (CUInt(IPe(y)) << (3 - y) * 8)
                        If Not IpEndList.ContainsKey(IPe(y)) Then
                            IpStartList.Add(IPe(0), IPy)
                        End If
                    Next

                    If IPx = IPy Then
                        CounterValue += 1
                    Else
                        CounterValue += IPy - IPx
                    End If

                Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                    MsgBox("Line " & MyReader.ErrorLine & " is not valid and will be         skipped.")
                Finally
                    If MyReader Is Nothing Then
                        MyReader.Close()
                        MyReader.Dispose()
                    End If
                End Try
            End While
        End Using

        CompareIP(IpStartList)
 End Sub



    Public Function CompareIP(ByVal addrList As Hashtable) As UInt32

        Dim valueStart As Integer = 0
        Dim valueEnd As Integer = 0
        Dim str As String = frmLists.txtSearchFor.Text.Trim
        Dim userIP As IPAddress = Nothing
        If Not IPAddress.TryParse(str, userIP) Then Throw New Exception("Dirección IP no valida: " & str)

        Dim IPuser() As Byte = userIP.GetAddressBytes 'get the octets, IPuser
        Dim IPux As UInt32

        'handle ip_Start
        For x As Integer = 0 To 3
            IPux = IPux Or (CUInt(IPuser(x)) << (3 - x) * 8)
        Next

        For Each ds As DictionaryEntry In addrList
            valueStart = ds.Key
        Next ds

        For Each de As DictionaryEntry In IpEndList
            valueEnd = de.Key
        Next de
        If IPuser(0) >= valueStart <= valueEnd Then
            ' enter code further here, to search ip in range... currently using msg or Debug, for testing only
            MsgBox(IPuser(0) & " - " & valueStart & " - " & valueEnd)
        End If

        Return str
        Return valueStart
        Return valueEnd

    End Function

End Module




And in this case, hashtable is much faster than sortedlist, specially with larger data.
I wonder what am I missing here? :confused:
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#12 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 09 June 2010 - 09:44 PM

Quote

Yes I know :cry2:, ¿Why you does not change text direction?, it would be so easier for me. :D

yeah sure, why the hell not, after thousands of years it's time for a change :P


Quote

...
Yes, in fact I had tried it, but using sortedlist.
But there is a problem here, since both reject duplicate keys, and a lot of ranges startwith same octect.
The Add method throws an exception if the new key is already in the hash table.


sorry, i mixed some things up a little (hazards of multitasking :lol: )...
what i thought about was this definition

Quote

private System.Collections.Generic.SortedList<unsigned int, IPEntry>[] ipfilterList = new SortedList<unsigned int, IPEntry>[256];

(this is in C#, the code should be similar in VB)
ipfilterList is an array of sorted lists, each sorted list stores entries (class/structure of IPEntry, in green) for ips where the first octet of the start ip is used as the array's index.
in purple is the namespace to include, in red the type of index for the sorted list (this will be the start ip of the entry), in blue is the array definition.
i.e: for the next ipfilter

Quote

140.239.255.017 - 140.239.255.030 , 109 , [L2]PEEK FINANCIAL SERVICES, INC
140.239.255.033 - 140.239.255.046 , 109 , [L2]BOSTON MEDICAL EVLAUATION - 10 HIGH ST
140.240.000.000 - 140.240.255.255 , 060 , [BG]Bogon
141.241.000.000 - 141.241.255.255 , 090 , ...

the first 3 will be stored in ipfilterList[140] list in the order they appear, and the last entry in ipfilterList[141] list

that way, you improve the search for a specific ip significantly and operations can be executed more easily
than splitting the file into 2 parts and working on each part.


hope this clears what i meant (i don't know how to define this in VB, sorry),
if not, you can use a simple sorted array for a while until we'll find a way to fix/improve this.

regards,
Avi3k

This post has been edited by Avi-3k: 09 June 2010 - 09:44 PM

retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#13 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 22 June 2010 - 09:55 PM

Working with arraylist, specially include/exclude ip statement.
Cuarrently translating gui to english.
coming soon. :)
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#14 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 24 June 2010 - 06:02 AM

Quote

if not, you can use a simple sorted array for a while until we'll find a way to fix/improve this.

As said above, fixed using arraylist, storing each line as object, splitting them to get ipstart and ipend.
Coverting them to int32, implementing Icomparable and Ienumerable functions.
Using that to make searches, comparisons, including/excluding ranges, etc.
using the whole ip filter file , non split it, and so on. :)
Link to download, above in the main post.
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#15 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 25 June 2010 - 09:38 PM

saw the new version, nice work :)
the gui is much better now, much easier to work with.

a few things...:
* there's a bug in the include/explode IPs, you should change the input for the level
so it will only accept numbers without the commas (i'm guessing this was copied from the previous gui)

* ipcheck is unlikely to crash the computer (maybe the app itself can crash from bugs, but not the entire OS)

* you should release the installer and the binaries separately, with version in the file's name,
that way people will know which file is the latest release (similar to eMule releases and DL page)

* when you have a translation file ready, let me know and i'll translate to Hebrew
(changing the gui to allow right-to-left display is not a priority atm)

Quote

8 - You think that the code could be improved, and you know how to. (ty, Avi-3k :flowers: )

you're welcome ;)

regards,
Avi3k
retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#16 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 26 June 2010 - 04:43 PM

Quote

a few things...:
* there's a bug in the include/explode IPs, you should change the input for the level
so it will only accept numbers without the commas (i'm guessing this was copied from the previous gui)


I'm not quite sure, I understand your point of view. :unsure:
IPCheck go through all the values entered by the user, in order to validate them before starting the process.
If any of these values is not correct, or it does not exists, the application notifies the user through a dialog. In level case something like that:
Please, enter a valid level value.
I have entered default values, to serve as a guide.
In the case of the level, the default value is ", 000 ,"
Note that you only have to enter the numeric value. For example in the case of level 030, you just have to change the middle zero by 3.

Posted Image

The user can enter the value he/she want, but one thing is certain, the process will not start until the user enters the correct values.
If you enter a value that does not correspond to an IP address, the process is carried out, and the application it will alert you.
I'm not quite sure if emule uses the comma, as a delimiter.

Quote

when you have a translation file ready, let me know and i'll translate to Hebrew


I'm working on it. :)

Quote

you should release the installer and the binaries separately, with version in the file's name,
that way people will know which file is the latest release (similar to eMule releases and DL page)


I agree, Although at the moment I prefer to wait a bit, if there are new changes.

Quote

(changing the gui to allow right-to-left display is not a priority atm)

I agree with you. :)
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#17 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 02 July 2010 - 09:28 PM

Quote

I'm not quite sure, I understand your point of view. :unsure:
IPCheck go through all the values entered by the user, in order to validate them before starting the process.
If any of these values is not correct, or it does not exists, the application notifies the user through a dialog. In level case something like that:
Please, enter a valid level value.
I have entered default values, to serve as a guide.
In the case of the level, the default value is ", 000 ,"
Note that you only have to enter the numeric value. For example in the case of level 030, you just have to change the middle zero by 3.

The user can enter the value he/she want, but one thing is certain, the process will not start until the user enters the correct values.
If you enter a value that does not correspond to an IP address, the process is carried out, and the application it will alert you.
I'm not quite sure if emule uses the comma, as a delimiter.

yes, i saw that it works as you described, but some users won't understand that...
you should make is more simple, if you have a number, allow only digits,
you can also use the NumericUpDown controller to make input even easier:
Posted Image
that way you can limit the input to 0-255, you wouldn't need to validate the input
and it uses a common controller that users already understand, here's the code (in C#)
System.Windows.Forms.NumericUpDown nudLevel = new NumericUpDown();
nudLevel.Maximum = 255;
nudLevel.Minimum = 0;
nudLevel.Increment = 5; //or whatever you want
nudLevel.Value = 127;

when a user clicks the add button, just copy the nudLevel.Value to the proper place and that's it ;)


Avi3k
retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#18 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 05 July 2010 - 08:25 PM

Quote

you can also use the NumericUpDown controller to make input even easier:


Done, but using CheckedListBox.
If we have the range 0-255, and assign values to the levels, the rest becomes possibilities for error.
Using CheckedListBox, the values are fixed and zero chance of being wrong.
Of course working with numeric values as you point to.

New release contain new features, such as, look up ip and fake files handler, coming soon. :)
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

#19 User is offline   Avi-3k 

  • hebMule [retired] dev
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 1127
  • Joined: 25-June 03

Posted 09 July 2010 - 10:05 PM

if you want the user to choose one value out of a set
(i.e: level from the group {0, 90, 115, 170} for example)
better use a combobox or radio buttons
checkedlistbox is very bad idea, since the user might think he can choose multiple values or doesn't have to select any

with the combobox (or radio buttons) you can use a default value that will be used (in this case 127)
and you can add description for each level so the user understand each level's relevance.
i still think NumericUpDown is the best choise (with a tooltip for description of levels) for both novice and adv. users...

Avi3k
retired developer of hebMule and eMule Skinner...
hebMule site and topic.
hebMule2 unique features: AntiLeech, AntiVirus, Fake Check, ServerFilter, WebSearches, Export Searches, Relative Priority, ModID and much much more...

eMule Skinner is an application to create/edit skins for eMule,
it's multilingual, supports mods, easy-to-use design, integrates to hebMule & Windows and lots more...

code fixes/improvements: #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11 (to check/verify: #12, #13).
0

#20 User is offline   ElChele 

  • Miembro con emule 0.50a
  • PipPipPipPipPipPipPip
  • Group: Members
  • Posts: 7295
  • Joined: 02-September 04

Posted 10 July 2010 - 01:46 AM

Quote

checkedlistbox is very bad idea, since the user might think he can choose multiple values or doesn't have to select any


Several conditions must be met, so that a level value be considered, by the application.
a-The value must be selected and checked.
b-CheckedListBox1.SelectionMode = One. (Indicates the ListBox is to be single-select)
Above statement means that does not possible, two level values to be selected and cheKed, at same time.
c- Application take as level, the visible + selected + checked value.

And something else ....

Posted Image

Anyway combobox and radio buttons, both are good options. :)

PS: Actually adding more sources to download lists, but the app it is ready, and file for translation too.
Regards :flowers:
Posted Image Make your own ipfilter file, and manage fake files. Take in count, You are the best filter for emule.
0

  • Member Options

  • (2 Pages)
  • +
  • 1
  • 2

5 User(s) are reading this topic
0 members, 5 guests, 0 anonymous users