erickutcher / httpdownloader

HTTP(S) download manager that uses input/output completion ports (IOCP).
https://erickutcher.github.io/#HTTP_Downloader
558 stars 62 forks source link

Ideas I have for the future #59

Closed erickutcher closed 4 years ago

erickutcher commented 5 years ago

The first thing I want done is a tree list style main window. I have plans to support multi-host/mirrored downloads and to be able to group the hosts of a file seems like a practical design choice.

I want to change the Login Manager to a Site Manager and allow per-site settings to be saved. It would basically allow the program to apply the settings found in the Add URL(s) window as well as proxies to use for each site listed.

Multi-host/mirrored downloads will be able to be added in the Add URL(s) window by grouping URLs with curly brackets { and }.

{
https://www.example.com/test.dat
http://www.mirror.com/test.dat
}

Naming a file before downloading will also be done in the Add URL(s) window by using [ and ] before the URL or the opening curly bracket { of a multi-host/mirrored download.

[foobar.dat]https://www.example.com/test.dat

or

[foobar.dat]{
https://www.example.com/test.dat
http://www.mirror.com/test.dat
}

These are all ideas for the future. Not sure when I'll get to them.

blackcrack commented 5 years ago

or the same file on different domains ?

[foobar.dat]{
https://www.example.com/%1
http://www.mirror.com/%1
}

there exist different filehoster and on this domains maybe search for these files.. if have the same size in bit ... question: .. it is possible to create a md5 if the file online and therewith maybe a possible to create and compare the files on different hoster ?

best Blacky

erickutcher commented 5 years ago

The first URL in the group will be used to determine the filename if one isn't supplied by brackets [ and ]. It'll also be used to determine the size of the file to allocate on the disk. If the other URLs in the group don't match the file size of the first URL, then they'll be ignored (won't be downloaded from that host).

There's no way to create a hash value of the file without having the entire file.

The multi-host/mirrored download feature is going to be a use-at-your-own-risk feature. It'll be on the user to determine whether the files are the same. You can always check the hash of the file after it's been download to confirm whether it's worked or not. That's assuming you know the hash value ahead of time.

blackcrack commented 5 years ago

well, if have the file the same bit size, should it be up to 98% the same.. *imho* just so a idea ... well, it's maybe possible to make it directly as a plugin ?.. For start a plugin"fs" with dll's in a subdir (./plugins or plugins/), for make it able to download dll's and put it in the sub-directory ? (synchronous Mirrors Downloads (smd.dll) Syncronus Hoster Download (shd.dll) maybe something in this direction)
For give the User a possible to the hand for making the Downloader more enhanced and to make it possible for others to writing plugins .. :)

erickutcher commented 4 years ago

I have a working implementation of a tree list view control. It's fast too.

treelistview1

erickutcher commented 4 years ago

I'm releasing a beta version of 1.0.3.2. The format for the download history file and settings file has been changed. It'll change again once I integrate that tree list view control. The beta version has a "portable" file included to prevent any issues with earlier versions.

This beta includes a complete implementation of the site manager that I described above. It can be accessed from the Tools menu. In addition to that, I've added proxy settings to the Add URL(s) and the Update Download windows. The browser extensions include those settings as well. Those settings have the highest priority, followed by the site manager, and then the default settings.

The Firefox WebExtension has theme support. It'll try to match the look of whatever Firefox theme has been installed in the browser.

I've added some new command-line arguments to set per-download proxy settings. --proxy-type [0-4] 0 = Default, 1 = HTTP, 2 = HTTPS, 3 = SOCKS v4, 4 = SOCKS v5 --proxy-ip-address [0.0.0.0-255.255.255.255] --proxy-hostname [string] --proxy-port [1-65535] --proxy-username [string] --proxy-password [string] --proxy-resolve-domain-names

There's also a simple update check. You can have the program check for updates upon startup by enabling it in the General options, or you can manually check for updates in the Help menu. It won't automatically download or install the update for you, but if one is found, then it'll show the link in the Add URL(s) window.

HTTP_Downloader_1.0.3.2b1.zip Extensions.zip

erickutcher commented 4 years ago

This is a second beta. I've integrated the treelistview control into it. I haven't modified the download history file's format in this version, but it'll change in the next release.

I've added a new command-line switch: --shutdown-action [0-8]

It'll perform the same action that's found in the System shutdown action dropdown menu in the Advanced Options window. One of the new actions is to exit the program after all downloads have completed.

HTTP_Downloader_1.0.3.2b2.zip HTTP_Downloader_1.0.3.2b2.zip Extensions.zip

JNavas2 commented 4 years ago

Windows Defender detects: Trojan:Win32/Wacatac.C!ml Tests clean in many other scanners, so I'm guessing it's a false positive, just FYI.

UPDATE: Submitted it to Microsoft, and it's confirmed a false positive, will be removed in signatures 1.319.346.0.

erickutcher commented 4 years ago

Yeah they're going to do that every time I update. I've given up getting it whitelisted.

JNavas2 commented 4 years ago

It's only the 32-bit executable that's being flagged by Windows Defender, not the 64-bit. Chrome likewise blocks your 32-bit download but not your 64-bit download. So maybe there's something in the 32-bit code that needs to be changed.

erickutcher commented 4 years ago

The only thing that separates them are simple math calculations that are done in assembly code. Maybe the compiler optimizations have something to do with it. I'm not too concerned though. If the 32-bit has to be whitelisted, then that's alright.

erickutcher commented 4 years ago

I've got multi-host/mirrored downloads working. You can even mix protocols (HTTP(S) and FTP(S)).

mirrordownloads

erickutcher commented 4 years ago

Here's my final beta version.

This one has multi-host/mirrored download support.

You can test it out with the following:

{
http://www.example.com/index.html
http://www.example.com/index.html
http://www.example.com/index.html
http://www.example.com/index.html
}

The number of hosts between the curly brackets is limited to 100.

HTTP_Downloader_1.0.3.2b3.zip