47 Commits

Author SHA1 Message Date
Sunil Mohan Adapa
dce51fd6d7
networks: Support configuring IPv6 networks
- Very similar to configuration of IPv4 networks.

- Supports 'auto', 'dhcp', 'manual' and 'ignored' modes as supported by
  network manager.  'shared' mode is not yet implemented by network
  manager.
2016-10-01 07:09:03 -04:00
Sunil Mohan Adapa
fee14b1764
networks: Remove the IP address hack fully 2016-08-11 17:11:23 -04:00
nikhil rayaprolu
43e070972a
networks: Remove hack for fetching IP address 2016-08-11 17:11:17 -04:00
Sunil Mohan Adapa
28a9933fd9
networks: Configure wireless BSSID, band, channel
Select the frequency band (2.4 GHz vs. 5 GHz) is a prerequisite for
selecting the channel.  Channel selection is useful primarily as follow:

- Restrict to a particular access point when multiple access points use
  the same SSID (AP name) but are available on different frequencies.

- Configure for a particular ad-hoc mesh network.

- Setup multiple access points from a single FreedomBox on multiple
  channels to maximize the throughput and number of simultaneous
  clients.

Ability to specify a particular BSSID will help associate with a
particular access point when multiple access points use the same
SSID (AP name).  This is also makes it slightly harder to trick clients
into connection to a malicious device.  Also configuring BATMAN-adv
seems to require setting a particular BSSID.
2016-07-21 19:23:31 -04:00
Sunil Mohan Adapa
04babacafa
networks: Ability to configure generic interfaces
After batman-adv kernel driver takes over the Wi-Fi network interface
and provides a bat0 interface, this interface shows up as device type
'batadv'.  This type is not recognized by network manager is dealt with
as a generic device.  Configuring this device for IPv4/IPv6 in
auto/shared mode etc. works fine.  So, add the ability to configure
generic interfaces.
2016-07-21 19:23:20 -04:00
Sunil Mohan Adapa
4865a64d2b
networks: Allow shared connections to have IPs
Setting IP address on a shared connection can be usefull.  This tells
Network Manager to pick the provided network range (inferred from
IP/netmask) instead of something in 10.42.x.x.  This can be used to give
predicatable IPs, static IPs and to make large static
reservations (instead of the default 8).
2016-06-07 08:12:18 -04:00
Sunil Mohan Adapa
3b7b7881b1
networks: Fix issue when looking up AP details
As reported by Jan Costermans, it is possible that for an access point
scanned by a Wi-Fi device, get_ssid() returns None.  The reported as
follows:

  if access_point.get_ssid().get_data() == ssid:

  AttributeError: 'NoneType' object has no attribute 'get_data'
2016-03-05 16:00:27 -05:00
Sunil Mohan Adapa
db7ed51e53
networks: Minor update to primary connection fix
To make sure 'primary' key is always available in status.
2016-01-08 14:30:14 +05:30
Daniel Steglich
8e4abf282f
networks: fix for primary connection Closes: #334
Check if there is any primary connection available before accessing this
connections parameter.  Otherwise Plinth will raise an exception because
of non existing object.
2016-01-08 14:29:35 +05:30
Sunil Mohan Adapa
42d0198a2e networks: Refactor for simplicity and brevity
- Make connection adding/editing forms inherit from base.

- Make the forms responsible for extracting cleaned data.

- Use dictionaries for passing around settings values while
  adding/editing connections.
2015-12-09 17:56:11 +05:30
Sunil Mohan Adapa
8438bd3f31 networks: Fix issue with setting default netmask
- Minor refactoring of DNS server setting code.
2015-12-09 17:56:11 +05:30
Sunil Mohan Adapa
ba5c7a772d networks: Refactor & fix extracting netmask
- Use host byte ordering instead of big-endian.
2015-12-09 17:55:03 +05:30
Sunil Mohan Adapa
da99a7cb9d networks: Minor indentation fixes 2015-12-09 12:21:38 +05:30
Daniel Steglich
1a1faa8a1b Github issue 314: static IP configuration enhancement
* fixed IP configuration
  * set up a new ipv4settings object to avoid the need of reseting all the values
* extended Static IP configuration:
  * allow configuration of netmask (optional)
  * allow configuration of Gateway (optional)
  * allow configuartion of two DNS Servers (optional)
* extend DHCP configuration:
  * allow configuration of user specific DNS Server
  * DHCP provided DNS Servers will be ignored in that case
2015-12-09 10:28:53 +05:30
Daniel Steglich
ff412c2af1 network: Fix changing addressing method (GH #307)
When changing the addressing method from manual to automatic, the IP
addresses where removed from connection object without removing the
Gateway property.  This causes a networkmanager error.

Create new SettingIP4Config object to avoid the need to reset all
propertys when changing methods
2015-12-06 18:01:49 +05:30
Sunil Mohan Adapa
cc858bbd6a Use pgi only when gi is not available
- Write a convenience utility to handle the import process.
2015-11-16 09:55:20 +05:30
Nik Nyby
608897b9ec Test on python 3.3 and 3.4 with travis
Python 3.2.x is deprecated, so I thought it would be
good to get tests running on some newer pythons. I've
switched from the python3-gi package to using 'pgi' from
pypi, because the apt-installed python3-gi was having trouble
importing.

pgi required python 3.3+ (see: https://pypi.python.org/pypi/pgi),
so I've removed python 3.2 from the test matrix. Let me know if
we're using python 3.2 anywhere, but as far as I know plinth is
run on python 3.4.3 with debian sid on the freedombox image.
2015-11-16 08:44:01 +05:30
Sunil Mohan Adapa
3df1a88824 Switch to Django i18n for code strings
Django i18n layer is on top of gettext and provide may crucial features
such as per-request locales, lazy translations etc.
2015-11-13 22:08:43 +05:30
Sunil Mohan Adapa
11bf585025 networks: Show network diagram
- As discussed in the first boot redesign proposal.

- Images are taken from Tango icon set, GNOME icons or created.

- Responsive, works for very small widths also.

- First cut, special cases of network connectivity are not handled.
2015-10-28 20:02:56 -04:00
Sunil Mohan Adapa
96b98fae9f networks: Handle unavailability of device 2015-10-28 20:02:56 -04:00
Sunil Mohan Adapa
2ef22ec1b4 Require library version for GObject introspection
Specify the version of a library before importing it using GObject
introspection.  Mainly to avoid warnings with recent version of
pygobject.  Closes #247.
2015-10-17 21:13:35 -04:00
Sunil Mohan Adapa
fc19b0fd3d networks: Refactor code for showing connection
- Fix showing configured IP address in edit form.

- Combine the retrival functions and organize them according to where
  the information is being retrived from connection/device/active
  connection/access point.

- Add more fields to show such as ether speed, default ipv4/ipv6
  connection, wifi mode, etc.

- Re-format the page.  Separate ipv4/ipv6 sections. Separate device
  information and connection information sections.

- Take the action buttons to the top.

- Make the activate/deactivate button work with new POST only CSRF
  requirement.

- Update Firewall zone description messages.

- Show all IP addresses of the device.
2015-10-11 16:28:55 +05:30
Sunil Mohan Adapa
682e5d7c2d networks: Prefill proper Wi-Fi device in add form
Add access points found on a particular Wi-Fi device only to that device
as it is not gauranteed that other Wi-Fi devices will be able to find
them.  For example, an access point operating in 5 GHz frequency will
only be found and used by Wi-Fi devices capable for 5 GHz communication.
2015-10-11 16:28:55 +05:30
Daniel Steglich
408aa8910a wi-fi network connection: Fixed error message when entering the form
- When selecting an existing WiFi on the "scan" page, the user will be redirected to the "WiFi add" form.
  This form did not contain a WiFi capable Interface as default selection, for this reason the user get a
  invalid form message when entering the form.
2015-10-11 16:28:55 +05:30
Daniel Steglich
3c47dfb6ef Minor coding styleguide fix
- fixed a pep8 error (line too long)
2015-10-11 16:28:55 +05:30
Daniel Steglich
c3e5753b52 Network Status pages: added status pages
- implemented network status page which supports:
 * show IP address and netmask
 * show MAC address
 * show device name
 * show firewall zone name
 * show DNS server information
 * show default gateway
 * show wifi information
 * shows if connection is shared or not and if connection is the default connection

- when clicking on a cennection on the overview page go to the status page, not to the
  editing page

- ToDo: if connection is disabled and re-enabled again, no information are visible anymore (Bug)
2015-10-11 16:28:55 +05:30
Sunil Mohan Adapa
ef156dab91 networks: Minor styling and comments update
- Add comment about PPP peers possibly not responding to echo requests.
2015-08-22 21:14:21 +05:30
Sunil Mohan Adapa
2c23b0ecb4 networks: During activation raise device not found
When an interface assigned to a connection is not available in list of
devices, raise a proper error that device is not found.
2015-08-22 21:13:36 +05:30
Sunil Mohan Adapa
e7214b7586 networks: Refactor common settings updation
Since IPv4 address settings are not relavent for PPPoE and the command
settings take them, split the common setting updation into basic
settings and IPv4 settings.
2015-08-22 21:11:13 +05:30
Sunil Mohan Adapa
21ee2de998 networks: Don't re-add settings if they exist
- This is a probable reason why a phantom new connection show up
  sometimes.
2015-08-22 21:11:13 +05:30
Sunil Mohan Adapa
a66275bdf7 networks: Make types sorted during creation
- So that less frequently used 'PPPoE' connection is not shown as
  default.
2015-08-22 21:11:13 +05:30
Daniel Steglich
58a10cdbca refactored connection activation
rafactoring of activate_connection function:
as we now know the interface name of a connection we can pick the connection
by this value and activate the connection.
2015-08-22 13:03:00 +05:30
Daniel Steglich
286caf8917 Added a new network connection type to handle PPPoE connections
* Added a new choice to main selectbox for adding Network Connections (network.py)
* Added a new form which asks for name, interface, firewall zone, username and password (forms.py, urls.py)
* Added new helper functions to create PPPoE based connection object (network.py)
2015-08-22 13:03:00 +05:30
Sunil Mohan Adapa
acf3a919f6 networks: Improvements to interface binding
- Fetch network interfaces list at the time of form creation instead of
  during definition.

- Add help text to interfaces list choice field.

- Don't write an explict check for requiring interface
  selection. required=True, which is default, takes care of that.

- Internationalize the empty selection text.

- Update the empty selection text.

- Re-order interface parameter in the same order of priority/appearance.
2015-07-27 22:03:02 +05:30
Daniel Steglich
378d6b8d84 networks: Always bind connections to a device 2015-07-27 22:03:02 +05:30
Sunil Mohan Adapa
03049b666a network: Minor fix when getting connection and styling 2015-05-21 23:42:11 +05:30
James Valleroy
b00a634647 Update network tests, minor fixes to network.py.
Return UUID when adding a connection.
Have get_connection raise an exception instead of returning None.
2015-05-16 15:39:26 -04:00
Sunil Mohan Adapa
ef17bd8306 networks: Use libnm instead of python-networkmanager 2015-05-05 16:00:25 +05:30
Sunil Mohan Adapa
0cb8b4a5fc network: Cleanup, minor fixes and refactoring
- Make network-manager package get installed when accessing the index page of
  networks.  Also freedombox-setup shold actually pull network-manager package
  as dependency and use it for configuring the initial networks.

- Remove the /connect page and re-use the /add_wifi page for that purpose.

- Fix add connection page titles.

- Handle the case when network-manager returned empty string for SSID.

- Don't explictly URL encode the Wi-Fi SSID when adding a new Wi-Fi network.
  Django automatically handles this in 'url' tag and decodes before url
  routing.  Relax the regex that matches SSID as part of the URL to handle all
  possible SSIDs.
2015-04-06 22:21:29 +05:30
Sunil Mohan Adapa
bc4ac58f2e network: Use uuids for identifying connections
- Name for a network connection is not unique.  UUIDs are much less likely to
  change compared to name of the connection.  No necessity to perform URL
  encoding too.

- Move UI error message strings to view module instead of the network module
  for proper separation.

- Minor refactoring.
2015-04-06 22:21:29 +05:30
James Valleroy
ed4e6eddc1 Update dependency list and pep8 fixes. 2015-04-06 22:21:29 +05:30
James Valleroy
2441caf647 Add AP and adhoc wifi modes, and shared IPv4 addressing mode. 2015-04-06 22:21:29 +05:30
James Valleroy
45086ff003 Add firewall zone selection for networks. 2015-04-06 22:21:29 +05:30
James Valleroy
f0c5cd080c Add wifi security settings. 2015-04-06 22:21:29 +05:30
James Valleroy
f63d8d29de Connect to network selected from scan page. 2015-04-06 22:21:29 +05:30
James Valleroy
c0cd01221e Add wifi scan page to networks module. 2015-04-06 22:21:28 +05:30
James Valleroy
9b201a2daf Rename network module to networks.
Move networkmanager helper functions into a new file.
Add some network tests.
2015-04-06 22:21:28 +05:30