FTP, wget, curl and Wi-Fi Tools
What is it?
This roadmap plans the file transfer and download toolbox: an FTP client with interactive shell commands, wget and curl commands with progress bars, a dual-pane graphical FTP client, and a stretch Wi-Fi framework. None of it exists yet. The network stack today stops below TCP, so every tool here waits on the socket and HTTP work in the networking roadmaps.
How does it work?
Today. The kernel network stack ships Ethernet, ARP, IPv4, ICMP, UDP and DHCP (net.h), described in TCP and Network Infrastructure. There is no TCP, no socket API and no HTTP client. The shell (cmd.c) has ping and ifconfig, but no ftp, wget or curl.
Planned design.
- FTP protocol core: connect, log in (anonymous by default), passive mode, list, download and upload in 64 KiB chunks straight to the file system, plus
CWD,PWD,MKD,RMD,SIZEandDELE. - FTP shell commands:
ftp <host>withls,cd,get,put,pwd,mkdir,rmandbye,wget ftp://for anonymous downloads, and one sharedprogress_bar_print()helper that shows KB/s and time remaining on a single updating line. wget:-O,-q,-c(resume with an HTTPRangerequest),-r(a two-level link crawl) and--no-check-certificate.curl:-X,-d,-d @file,-H,-s,-I,-L,-u,-vand-k, with JSON pretty-printing.ftpgui.exe(a stretch): local and remote panes, upload and download buttons with a progress bar, refresh and rename, andftp://paths opened from the File Manager.- Wi-Fi (a stretch): scanning, WPA2 connection and a Wi-Fi tab in the network settings.
What are its interfaces?
| Interface | Status |
|---|---|
ping, ifconfig shell commands; ICMP echo |
Shipped |
Kernel sockets (kern_socket(), kern_connect() and friends) |
Planned in the DNS and Sockets roadmap |
http_get(), https_get() |
Planned in the HTTP and TLS roadmap |
ftp_connect(), ftp_list(), ftp_download(), ftp_upload() |
Planned in this roadmap and in the networking FTP roadmap (see below) |
progress_bar_print() |
Planned in this roadmap, section 2 |
| List view and progress bar controls | Planned in the widget library; today's control set is in controls.h |
How do I use it?
None of these commands exist yet. The nearest thing that runs today is ping <ip> in the shell, which sends four ICMP echo requests through the shipped IP stack.
How does this relate to the other network roadmaps?
Three other roadmaps specify overlapping work, and the overlap has not been settled:
- FTP protocol and shell commands are also specified by the networking SSH, FTP and SMB Clients roadmap, which assigns only the graphical client to this file. The two disagree on header paths, function names and chunk sizes.
wgetandcurlare also specified by the HTTP and TLS roadmap, which writes the output flag as-owhere this file writes-O, and names a different progress helper.- Wi-Fi has its own driver roadmap, Wi-Fi Drivers, which owns the device interface, the 802.11 frames, the WPA2 supplicant and the settings tab. This file's section 6 predates it.
These are filed in section 1 and section 6 so that each piece ends up with one owner. The unique content here is the flag set, the shared progress helper and the dual-pane GUI.
What is not implemented yet?
Nothing in this roadmap has started:
- FTP Protocol Core, which needs TCP sockets
- FTP Shell Commands and
wget ftp:// wgetandcurl, which need the HTTP and TLS client- FTP GUI Client, which needs the list view and progress bar controls
- Wi-Fi Framework, which belongs with the Wi-Fi driver roadmap
How does it compare with Windows 11 and Linux?
Windows 11 includes ftp.exe and, since Windows 10, curl; it has no inbox wget, and users install FileZilla for a graphical FTP client. Wi-Fi is handled by WLAN AutoConfig. Linux distributions ship wget and curl, offer ftp or lftp and FileZilla, and manage Wi-Fi with NetworkManager and wpa_supplicant. The Impossible OS plan puts ftp, wget and curl in the base shell with one shared progress display, and adds its own dual-pane client. It does not exist yet.