Sailfish OS
  • Info
  • User Experience
  • Cases
  • Community
  • Developers
  • Contact
  • Get Sailfish OS
Select Page
  • Info
  • User Experience
  • Cases
  • Community
  • Developers
  • Contact
  • Get Sailfish OS

API Documentation

Documentation for developing SailfishOS applications
  • API Documentation
  • Libsailfishapp
  • Sailfish Silica
    • Documentation
    • Icon Reference
  • Sailfish Components
    • Sailfish Accounts
    • Sailfish Bluetooth
    • Sailfish Contacts
    • Sailfish Crypto
    • Sailfish Gallery
    • Sailfish Media
    • Sailfish Pickers
    • Sailfish Secrets
    • Sailfish Share
    • Sailfish Telephony
    • Sailfish Webview
    • Amber Web Authorization
    • Amber MPRIS
  • Nemo QML Plugins
    • Configuration
    • Contacts
    • D-Bus
    • Keepalive
    • Notifications
    • Thumbnailer
  • Sailfish Middleware
    • MDM Framework
    • MDM Policy Framework
    • User Manager Daemon
  • API Documentation
  • Libsailfishapp
  • Sailfish Silica
    • Documentation
    • Icon Reference
  • Sailfish Components
    • Sailfish Accounts
    • Sailfish Bluetooth
    • Sailfish Contacts
    • Sailfish Crypto
    • Sailfish Gallery
    • Sailfish Media
    • Sailfish Pickers
    • Sailfish Secrets
    • Sailfish Share
    • Sailfish Telephony
    • Sailfish Webview
    • Amber Web Authorization
    • Amber MPRIS
  • Nemo QML Plugins
    • Configuration
    • Contacts
    • D-Bus
    • Keepalive
    • Notifications
    • Thumbnailer
  • Sailfish Middleware
    • MDM Framework
    • MDM Policy Framework
    • User Manager Daemon

Contents

  • Provisioning networks
  • Add network
  • Set automatic proxy
  • Set manual proxy
  • Set manual IPv4 address
  • Access network object

WLAN Provisioning

WLAN provisioning and network access control is handled through Connman connection manager.

Provisioning networks

You can add new networks using asynchronous createService() or synchronous createServiceSync() methods in NetworkManager API.

Add network

 NetworkManager *manager = NetworkManagerFactory::createInstance();

 auto createService = [manager] {
     QVariantMap settings;
     settings.insert("Name", "MyNetwork");
     settings.insert("Security", "ieee8021x");
     settings.insert("EAP", "peap");
     settings.insert("Hidden", "true");
     settings.insert("Identity", "myidentity");
     settings.insert("Passphrase", "mypassphrase");
     settings.insert("AutoConnect", "true");
     settings.insert("Access", "sailfish:1;*=deny;GetProperty(Access)=allow;user(sailfish-mdm)=allow");
     QString path = manager->createServiceSync(settings, "wifi");
     qInfo() << "Created network" << path;
 };

 if (manager->isAvailable()) {
     createService();
 } else {
     QObject::connect(manager, &NetworkManager::availabilityChanged, createService);
 }

where the fields are

  • SSID - 802.11 SSID in a hexadecimal form
  • Name - SSID in a string form
  • Security - Used security type "none", "web", "psk" (WPA/WPA2 PSK), "ieee8021x" (WPA EAP)
  • EAP - EAP authentication method, currently only "peap" is supported
  • Identity - Identity string for EAP
  • Passphrase - RSN/WPA/WPA2 Passphrase
  • Hidden - "true" if hidden
  • AutoConnect - "true" if the device should connect automatically when in range
  • Access - Access control rules

You can also define proxy settings and manual IPv4 address for the client.

Set automatic proxy

 settings.insert("Proxy.Method", "auto")
 settings.insert("Proxy.URL", "http://www.proxy.net")

Set manual proxy

 settings.insert("Proxy.Method", "manual")
 settings.insert("Proxy.Servers", "http://example.proxy.net:8080")
 settings.insert("Proxy.Excludes", "domain1.net;domain2.net")

Set manual IPv4 address

 settings.insert("IPv4.method", "manual")
 settings.insert("IPv4.netmask_prefixlen", "255")
 settings.insert("IPv4.local_address", "192.168.1.30")
 settings.insert("IPv4.gateway", "192.168.1.1")
 settings.insert("Nameservers", "nameserver1.net;nameserver2.net")
 settings.insert("Domains", "defaultdomain1.net;defaultdomain2.net")
 settings.insert("TimeServers", "10.2.3.4;192.168.1.99")

Access network object

You can access the service object of your provisioned network from the saved services list.

 NetworkManager *manager = NetworkManagerFactory::createInstance();
 QObject::connect(manager, &NetworkManager::servicesListChanged, [manager, &app] {
     QVector<NetworkService*> services = manager->getSavedServices("wifi");
     foreach (NetworkService *service, services) {
         if (service->name() == ssid) {
             qInfo() << "Found network" << service->name();
             break;
         }
     }
 };

NetworkService API provides methods to request connection, fetch information about the network, remove the network from saved services list, and so on. Services added by device management should have managed property set to true. See the Connman Service API documentation for more information about the supported methods.

  • Legal
  • Contact Us
  • Jollyboys Ltd © 2024

  • Facebook
  • Twitter
  • Mastodon
  • YouTube
  • LinkedIn