+--------------+
|    setnet    |
+--------------+

Copyleft (C) Vincenzo "KatolaZ" Nicosia <katolaz@freaknet.org>
		  	 2016, 2017

=== DESCRIPTION ===

setnet is a shell script with a dialog UI to configure ethernet and
wifi connections. It is meant to be POSIX-compliant, and has been
tested with bash, busybox, dash, ksh, mksh, posh, and yash. It is
still to be considered beta software, so you should use it AT YOUR OWN
RISK, but it is already fully functional. 

=== LICENSE ===

setnet is Free Software, and can be used and distributed under the
terms of the GNU General Public License, either version 3 of the
licence or, at your option, any later version.

Please see the file LICENSE for more information

=== DEPENDENCIES ===

In order to run setset, you MUST satisfy this (relatively small) set
of dependencies:

 - a posix-compliant shell (bash, busybox, dash, ksh, mksh, posh, and
   	 				 	    yash have been tested)

 - dialog (version 1.2 tested, but it should work with previous
   		  versions as well)

 - dhcp-client (for dhclient, tested with isc-dhcp-client)

 - iproute2 (for ip)

 - wireless-tools (for iwconfig, currently required for interface
   				   identification)

Most of those tools might already be installed in your system anyway.
In particular, setnet uses:

 - dialog: to provide a minimal Text-based User Interface,
 - ip: to configure network interfaces and get information about them,
 - dhclient: for DHCP-based IP configuration
 - iwconfig: to check whether a network device is a wifi adapter

In order to use the full set of functionalities provided by setnet,
you MIGHT also need the following packages:

 - wpa_supplicant (for wifi configuration)

 - net-tools (for netstat, to gather information about network status)

 - iputils-ping (for ping)

 - bind9-nost (for host, used to check DNS configuration)

 - traceroute (to trace the route between your host and any other host
   			   in the Internet)

Again, most of them should be already installed in your system anyway.

=== USAGE ===

setnet is installed under /usr/sbin/setnet.sh. If invoked with "-h",
it provides a list of supported options:

$ ./setnet.sh -h
Usage: setnet.sh [OPTION]
Options:
         -c cfg_file    Load configuration from cfg_file.
         -v  Print version number and exit.
         -h  Show this help.
$

If the argument "-c" is specified, setnet will use the provided
configuration file. Otherwise, it will look for its configuration file
in one of the following locations:

  - /etc/setnetrc
  - ~/.setnetrc
  
in the given order. The following configuration variables should be
defined in setnetrc:


  - WPA_FILE
 	This is the file configuration file used by wpa_supplicant. 

  - LOGNAME
	This is the file used for logging.

  - TRUNCATE_LOG
  	if equal to "yes", the log file will be truncated when setnet
	starts


=== root vs. mortal users ===

Networking is an amdinistration task, and as such should be performed
by the host administrator, i.e., the user with UID 0 (normally called
"root"). However, in many modern GNU/Linux systems it is customary to
allow normal users to perform some administration tasks. There are at
least two concrete possibilities to allow a particular user (in the
following we call such user "fool") to configure network interfaces
using setnet.


-- 1) First approach: using sudo

If sudo is installed in your system, it is sufficient to add the
following line:

  fool     ALL=NOPASSWD: /usr/sbin/setnet.sh

to the file /etc/sudoers, and the user "fool" will be able to run
setnet.sh with effective UID 0 (i.e., as if it was root), by using the
command:

[fool@host]$ sudo /usr/sbin/setnet.sh

and thus will be able to perform all the needed admin tasks to
configure networking.

-- 2) Second approach: using sup

......TO BE DOCUMENTED......


