1 Manager hierarchy 2 ================= 3 4 Service org.chromium.flimflam 5 Interface org.chromium.flimflam.Manager 6 Object path / 7 8 Methods 9 dict GetProperties() 10 11 Return the global system properties specified 12 in the Properties section. 13 14 void SetProperty(string name, variant value) 15 16 Changes the value of the specified property. Only 17 properties that are listed as read-write are 18 changeable. On success a PropertyChanged signal 19 will be emitted. 20 21 Possible Errors: [service].Error.InvalidArguments 22 [service].Error.InvalidProperty 23 24 string GetState() 25 26 Return the connection state of a system. The 27 same value is return via the State property. 28 29 object CreateProfile(string name) 30 31 Create and add new profile with the specified 32 identifier name. The name should either be in the 33 form ``name'' or ``~user/name'' where where ``user'' 34 is the login name of a user suitable for finding 35 their home directory. Both strings must contain 36 only alpha-numeric ASCII characters. 37 38 Profiles created without a user name are stored in 39 a system directory readable only by the connection 40 mananger. Profiles created with a user name are 41 stored in the user's home directory but readable 42 only by the connection manager. 43 44 If any existing profile is specified its contents 45 are reset to a default (minimal) contents. If the 46 profile is already registered with a CreateProfile 47 or PushProfile request then an error is returned. 48 49 Possible Errors: [service].Error.InvalidArguments 50 [service].Error.AlreadyExists 51 52 object PushProfile(string name) 53 54 Push the profile with the specified identifier 55 onto the profile stack. The profile must have 56 previously been created with CreateProfile. 57 The profile becomes the ``active profile'' that 58 is searched first when loading data and to which 59 updates are stored. 60 61 A profile may be pushed only once. 62 63 Possible Errors: [service].Error.InvalidArguments 64 [service].Error.AlreadyExists 65 66 object InsertUserProfile(string name, string user_hash) 67 68 Add the profile with the specified identifier 69 to the profile stack. The profile must have 70 previously been created with CreateProfile. 71 The |user_hash| provided is assigned to the 72 profile and is made visible as a property of 73 the profile. 74 75 A profile may be inserted or pushed only once. 76 77 Possible Errors: [service].Error.InvalidArguments 78 [service].Error.AlreadyExists 79 80 object PopProfile(string name) 81 82 Pop the top-most profile on the profile stack. 83 Any profile beneath this profile becomes the 84 ``active profile''. Any services using configuration 85 from the popped profile are disconnected and the 86 credentials invalidated (the next time 87 credentials are needed they are loaded from the 88 (new) active profile). 89 90 The name must match the identifer of the active 91 profile. This is a safeguard against accidentally 92 removing the wrong profile. 93 94 Note it is valid to pop all profiles from the 95 stack; in this state the connection manager does 96 not write any state to persistent storage. 97 98 Possible Errors: [service].Error.InvalidArguments 99 [service].Error.NotFound 100 101 object PopAnyProfile() 102 103 Like PopProfile but do not check the profile on 104 the top of the stack; pop anything. 105 106 Possible Errors: [service].Error.InvalidArguments 107 108 object PopAllUserProfiles() 109 110 Remove all user profiles from the stack of managed 111 profiles leaving only default profiles if any exist. 112 113 void RemoveProfile(string name) 114 115 Remove the profile with specified identifier. 116 117 The profile may not be resident on the stack. 118 The default profile may not be removed. 119 120 Possible Errors: [service].Error.InvalidArguments 121 [service].Error.AlreadyExists 122 123 void RequestScan(string type) 124 125 Request a scan for the specified technology. If 126 type is the string "" then a scan request is 127 made for each technology. 128 129 Possible Errors: [service].Error.InvalidArguments 130 131 void EnableTechnology(string type) 132 133 Enable all technologies of the specified type. 134 135 Possible Errors: [service].Error.InvalidArguments 136 [service].Error.InProgress 137 [service].Error.AlreadyEnabled 138 [service].Error.PermissionDenied 139 140 void DisableTechnology(string type) 141 142 Disable all technologies of the specified type. 143 144 Possible Errors: [service].Error.InvalidArguments 145 [service].Error.InProgress 146 [service].Error.AlreadyDisabled 147 148 object ConfigureService(dict properties) 149 150 Update the configuration of a service in memory 151 and in the profile. If no matching service exists 152 in memory it is temporarily created to carry out 153 this work and may be removed later. The object 154 path of the created service is returned. 155 156 If a GUID property is specified in properties 157 it is used to find the service; otherwise Type, 158 Security, and type-specific properties such as 159 WiFi.SSID are used to find any existing service. 160 If no service is located in memory a new one is 161 created with the supplied properties. 162 163 All provided parameters are applied to the in 164 memory service regardless of errors. But if an 165 error occurs while setting a property and the 166 service object was created as a result of this 167 call it is removed. In the event of multiple 168 errors the first error code is returned by 169 this call. 170 171 See the Service Properties section for a list of 172 properties and constraints on property values. 173 See also GetService. 174 175 Possible Errors: [service].Error.InvalidArguments 176 [service].Error.NotSupported 177 178 object ConfigureServiceForProfile(object profile, 179 dict properties) 180 181 Create or update the configuration of a WiFi 182 service within a specific profile. This is 183 similar to "ConfigureService" above, except 184 that this might not change the state of the 185 current service. A matching service is found 186 by first looking for a service with matching 187 "GUID" property if specified, then by using 188 the "Mode", "SSID", and "Security" properties 189 from |properties|. 190 191 If a matching service is found but its current 192 profile supersedes the specified profile, a new 193 profile entry is written with the specified 194 properties. This method can be used for 195 configuring a service in the default profile 196 while a separate configuration exists in the 197 user profile. In this scenario, no configured 198 properties in the user profile entry will be 199 copied to the default profile, and the user 200 profile remains unchanged. Moreover, the 201 matching service will still refer to the user 202 profile. 203 204 A second example usage for this method is creating 205 a copy of the current service from the default 206 profile into the user profile. If a matching 207 service exists but its current profile antecedes 208 the specified profile, the configuration of the 209 current service is first copied to the new profile 210 without removing the entry in the default profile. 211 The service is then assigned to the new profile 212 and the specified properties are then applied to 213 the service and saved to the new profile, leaving 214 the original profile intact. This differs from the 215 behavior of setting the "Profile" property on the 216 service via the SetProperty or ConfigureService 217 methods, which remove the configuration from the 218 old profile. 219 220 In situations where a matching service is not found, 221 the service isn't associated with a profile, or the 222 specified profile is already associated with the 223 matched service, the behavior of this method mimics 224 that of ConfigureService. 225 226 Currently this method is only supported for WiFi 227 services. The specified profile must already 228 be loaded and on the Manager's profile stack. 229 If the "Profile" parameter is set in the properties 230 dictionary, it must match the profile parameter. 231 232 This method returns the object path of the created 233 or modified service, in cases where a matching 234 service will refer to the specified profile. 235 Otherwise it returns the special path "/" to signify 236 that although the operation succeeded, there is 237 no matching service that refers to this profile. 238 239 Possible Errors: [service].Error.InternalError 240 [service].Error.InvalidArguments 241 [service].Error.NotFound 242 [service].Error.NotSupported 243 244 void FindMatchingService(dict properties) 245 246 Find a service that matches all the properties 247 and returns the object identifier associated 248 with it. If no service exists in memory that 249 matches these arguments, an error is returned. 250 251 See also GetService and ConfgiureService. 252 253 Possible Errors: [service].Error.NotFound 254 255 object GetService(dict properties) 256 257 Return the object path of a service after 258 applying any requested configuration changes. 259 If no service exists it is created. 260 261 If a GUID property is specified in properties 262 it is used to find the service; otherwise Type, 263 Security, and type-specific properties such as 264 WiFi.SSID are used to find any existing service. 265 If no service is located in memory a new one is 266 created with the supplied properties. 267 268 All provided parameters are applied to the service 269 regardless of errors. But if an error occurs 270 while setting a property and the service was 271 created as a result of this call it is removed. 272 In the event of multiple errors the first error 273 code is returned by this call. 274 275 See the Service Properties section for a list of 276 properties and constraints on property values. 277 See also ConfigureService. 278 279 Possible Errors: [service].Error.InvalidArguments 280 [service].Error.NotSupported 281 [service].Error.PermissionDenied 282 [service].Error.InternalError 283 [service].Error.InvalidNetworkName 284 [service].Error.InvalidPassphrase 285 286 object GetVPNService(dict properties) --DEPRECATED-- 287 288 Like GetService, but only for "vpn" services and 289 without using the GUID property to lookup a service. 290 291 Possible Errors: [service].Error.InvalidArguments 292 [service].Error.NotSupported 293 [service].Error.PermissionDenied 294 [service].Error.InternalError 295 296 object GetWifiService(dict properties) --DEPRECATED-- 297 298 Like GetService, but only for "wifi" services and 299 without using the GUID property to lookup a service. 300 301 Possible Errors: [service].Error.InvalidArguments 302 [service].Error.NotSupported 303 [service].Error.PermissionDenied 304 [service].Error.InternalError 305 [service].Error.InvalidNetworkName 306 [service].Error.InvalidPassphrase 307 308 void SetDebugTags(string taglist) 309 310 Set the debug tags that are enabled for logging to 311 syslog. "taglist" is a list of valid tag names 312 separated by "+". Shill silently ignores 313 invalid flags. 314 315 string GetDebugTags() 316 Get the list of enabled debug tags. The list is 317 represented as a string of tag names separated 318 by "+". 319 320 string ListDebugTags() 321 Get the list of all debug tags that can be enabled. 322 The list is represented as a string of tag names 323 separated by "+". 324 325 string GetServiceOrder() 326 327 Return a ','-separated string listing known technologies 328 in priority ordering. 329 330 For example, the default ordering would be returned as: 331 "ethernet,bluetooth,wifi,wimax,cellular" 332 333 void SetServiceOrder(string mask) 334 335 Set the technology priority based on a provided 336 ','-separated list of technologies, sorted from highest 337 priority to lowest. 338 339 The list may contain the following services: 340 { ethernet, wifi, wimax, bluetooth, cellular } 341 Technologies not included are assigned the lowest 342 priority. 343 344 Technology priority changes occur immediately. 345 346 Possible Errors: [service].Error.InvalidArguments 347 348 void RecheckPortal() 349 350 Retest the portal state of the active service 351 if a check is not currently in progress. This 352 will only have an effect if the active service 353 is currently in the portal state. 354 355 dict GetNetworksForGeolocation() 356 357 Returns an array of dictionaries containing information 358 about visible cellular and WiFi networks which may be 359 then used for Geolocation. 360 Each key is a string, and the value itself is an array 361 of dictionaries mapping string key-value pairs. Each of 362 these (sub) dictionaries contains information about 363 one single network for Geolocation. 364 For more details, see: 365 https://developers.google.com/maps/documentation/business/geolocation/ 366 367 boolean VerifyDestination(string certificate, 368 string public_key 369 string nonce, 370 string signed_data, 371 string destination_udn, 372 string hotspot_ssid, 373 string hotspot_bssid) 374 375 Verify that the given |certificate| refers to a valid 376 destination with attributes as described in 377 |signed_data|. |certificate| is a x509 certificate in 378 PEM format. |public_key| is the base64 encoded public 379 half of a 1024 bit RSA key in DER format. |nonce| is 380 random string of characters. |destination_udn| is the 381 unique device number for the given destination. 382 |hotspot_ssid| and |hotspot_bssid| are self explanatory, 383 but indicate that shill should not require itself to 384 be connected to the destination in question, but instead 385 use the specified values. 386 387 |signed_data| formed as follows: 388 389 Suppose we're connected to a destination with 390 an SSID of ChromeDest1123, a BSSID of 391 00:11::22:33:44:55, a serial number of 392 ABCDEFG-1234-5678, a public key of "MIGJAoGB+", 393 and a nonce like "2ldg8". The device takes 394 that information and joins it together with 395 commas like so: 396 397 "ChromeDest1123,ABCDEFG-1234-5678,00:11:22:33:44:55,MIGJAoGB+,2ldg8" 398 399 The device then takes the SHA-1 hash of that 400 string, and encrypts that hash with its private 401 key. The resulting byte string is base64 402 encoded and passed as |signed_data|. 403 404 This function verifies that the device described by all 405 these pieces of data is a real device by checking that: 406 407 1) The |certificate| is signed by a trusted CA. 408 2) The public key signed by the CA matches to the 409 private key used to encrypt |signed_data|. 410 3) The public key given is tied to the certificate by 411 being included in the |signed_data|. 412 4) A WiFi service is currently connected to the SSID 413 and BSSID in |signed_data|. This check will be 414 skipped if |hotspot_bssid| and |hotspot_ssid| are 415 of non-zero length. 416 417 If all properties hold, this function will return true, 418 otherwise false. 419 420 421 string VerifyAndEncryptCredentials(string certificate, 422 string public_key 423 string nonce, 424 string signed_data, 425 string destination_udn, 426 string hotspot_ssid, 427 string hotspot_bssid, 428 object service) 429 430 Verifies the given credentials as in VerifyDestination, 431 and then uses |public_key| to encrypt the psk for the 432 service identified by |service|. The psk is padded 433 with PKCS#1 v1.5. Returns the base64 encoded, 434 encrypted psk, or an empty string on error. 435 436 string VerifyAndEncryptData(string certificate, 437 string public_key 438 string nonce, 439 string signed_data, 440 string destination_udn, 441 string hotspot_ssid, 442 string hotspot_bssid, 443 string data_to_encrypt) 444 445 Verifies the given credentials as in VerifyDestination, 446 and then uses |public_key| to encrypt 447 |data_to_encrypt|. The data to encrypt is padded as in 448 VerifyAndEncryptCredentials. Returns the base64 encoded, 449 encrypted data, or an empty string on error. 450 451 void ConnectToBestServices() 452 453 For each technology present, connect to the "best" 454 service available, as determined by sorting all 455 services independent of their current connectivity 456 state. As a general rule, shill does not disrupt 457 current connectivity even if "better" connectivity 458 options appear. This method allows this rule to be 459 violated for a single instance for each technology 460 type. 461 462 void CreateConnectivityReport() 463 464 For each connected service, perform a single 465 connectivity trial and report the results to the log. 466 This connectivity test does not affect Service state. 467 468 void ClaimInterface(string claimer_name, string interface_name) 469 470 Assign the ownership of a device |interface_name| to the 471 claimer |claimer_name|. The specified device will be 472 added to the blacklist. Any current connection on that device 473 will be terminated, and shill will stop managing that device. 474 475 void ReleaseInterface(string claimer_name, string interface_name) 476 477 Take the ownership of a device |interface_name| from 478 claimer |claimer_name| back to shill. The specified device 479 will be removed from the blacklist and managed by shill. 480 481 string SetupApModeInterface() 482 483 (Brillo only) Ask WiFi driver to setup an AP mode interface. 484 The driver might teardown the station mode interface as a result 485 of this call. Shill will revert to station mode if the remote 486 service that called this method vanishes. Return an interface name 487 on success, or an empty string on error. 488 489 string SetupStationModeInterface() 490 491 (Brillo only) Ask WiFi driver to setup a station mode interface. 492 The driver might teardown the AP mode interface as a result 493 of this call. Return an interface name on success, or an empty 494 string on error. 495 496 void SetSchedScan(boolean enable) 497 498 Enable/disable scheduled scan for wifi devices. 499 This will also stop any ongoing scheduled scan 500 in wpa_supplicant. 501 502 Signals PropertyChanged(string name, variant value) 503 504 This signal indicates a changed value of the given 505 property. 506 507 StateChanged(string state) 508 509 This signal is similar to the PropertyChanged signal 510 for the State property. 511 512 It exists for application state only care about the 513 current state and so can avoid to be woken up when 514 other details changes. 515 516 Properties string ActiveProfile [readwrite] 517 518 Object path of the current active profile. 519 520 boolean ArpGateway [readwrite] 521 522 Specifies whether the DHCP client should be 523 configured to perform the extra step of performing 524 an ARP of the gateway IP address. This provides 525 a level of assurance that the issued IP address is 526 valid and not blocked in some manner unknown by the 527 DHCP server. 528 529 array{string} AvailableTechnologies [readonly] 530 531 The list of available technologies. The strings 532 are the same as the ones from the service types. 533 534 string CheckPortalList [readwrite] 535 536 The list of technologies for which captive portal 537 checking is enabled. This is a comma-separated 538 string; e.g. "wifi,wimax,vpn". 539 540 array{string} ClaimedDevices [readonly] 541 542 The list of devices that have been claimed by 543 the current DeviceClaimer (if it exists). 544 545 array{string} ConnectedTechnologies [readonly] 546 547 The list of connected technologies. The strings 548 are the same as the ones from the service type. 549 550 string ConnectionState [readonly] 551 552 The state of the highest ranked connected service. 553 The value of this property is "idle" if there are 554 no connected services. Otherwise this can be any 555 of the connected service states, e.g, "portal" or 556 "online". 557 558 string Country [readwrite] 559 560 The ISO 3166 country code. This may not be defined; 561 it is defined if manually set or if it is discovered 562 through a service such as WiFi, Celluar, or GPS. 563 564 string DefaultService [readonly] 565 566 The current connected service with the default route. 567 568 string DefaultTechnology [readonly] 569 570 The current connected technology which holds the 571 default route. 572 573 array{object} Devices [readonly] 574 575 List of device object paths. 576 577 string DHCPProperty.Hostname [readwrite] 578 579 Optional setting to configure DHCP requests. Some DHCP 580 servers may register a DNS entry on behalf of this 581 hostname; others may just make available a table for 582 administrators to tell what machines are on their 583 network. 584 585 The default for this name is empty, which means that the 586 system will not report a hostname. When this property 587 is set it will be persisted in the default profile. 588 589 string DHCPProperty.VendorClass [readwrite] 590 591 Optional setting to configure DHCP requests. This 592 setting can be used to identify the vendor that 593 manufactured the client hardware, the software in use, 594 or an industry consortium to which the vendor belongs. 595 596 The default for this property is empty, which means the 597 system will not report a Vendor Class. When set, this 598 property will override the default setting and be 599 persisted in the default profile. 600 601 bool DisableVHT [readwrite] 602 603 Disables 802.11ac Very High Throughput (VHT) 604 connections, reverting to 802.11n. 605 606 array{string} EnabledTechnologies [readonly] 607 608 The list of enabled technologies. The strings 609 are the same as the ones from the service types. 610 611 string IgnoredDNSSearchPaths [readwrite] 612 613 A comma-separated list of DNS domain suffixes 614 which should be ignored when creating a DNS 615 search list from DHCP-provided parameters. 616 This list will be consulted every time DHCP 617 information is updated (while connecting to 618 a network, or when a DHCP lease is renewed). 619 620 string LinkMonitorTechnologies [readwrite] 621 622 The list of technologies for which thie Link 623 Monitor will be enabled. The Link monitor 624 periodically checks for connectivity to the 625 default gateway using ARP requests. 626 627 string NoAutoConnectTechnologies [readwrite] 628 629 The list of technologies for which auto-connect is 630 disabled. This is a comma-separated string, e.g. 631 "cellular,wimax". 632 633 boolean OfflineMode [readwrite] 634 635 The offline mode indicates the global setting for 636 switching all radios on or off. Changing offline mode 637 to true results in powering down all devices. When 638 leaving offline mode the individual policy of each 639 device decides to switch the radio back on or not. 640 641 During offline mode, it is still possible to switch 642 certain technologies manually back on. For example 643 the limited usage of WiFi or Bluetooth devices might 644 be allowed in some situations. 645 646 string PortalURL [readwrite] 647 648 The URL to use when doing captive portal checking. 649 When a service reaches the "ready" state and 650 captive portal checking is enabled for it; an 651 HTTP GET of this URL is done. If this fails 652 with a 204 error then the service is moved 653 to the "online" state. Otherwise the service 654 is assumed to be not online and marked in a 655 "portal" state. Note that this check may fail 656 for multiple reasons that are indicated in the 657 Error property of the service. 658 659 string ProhibitedTechnologies [readwrite] 660 661 The list of technologies that should be disabled 662 and prohibited from being enabled. This is a 663 comma-separated string, e.g. "cellular,wimax". All 664 devices that are one of these technology types will be 665 immediately disabled persistently, and when a new device 666 of this type appears, it will be disabled by default. 667 Attempts to enable such a device using the 668 EnableTechnology will fail. The strings are the same 669 as the ones from the service types. 670 671 int32 PortalCheckInterval [readwrite] 672 673 The interval in seconds between re-checking a 674 service in the portal state. 675 676 array{string} Profiles [readonly] 677 678 List of profile object paths. 679 680 array{object} Services [readonly] 681 682 List of service object paths that are visible. The 683 list is sorted internally to have the service with 684 the default route always first and then the favorite 685 services followed by scan results. 686 687 This list represents the available services for the 688 current selected profile. If the profile gets changed 689 then this list will be updated. 690 691 The same list is available via the profile object 692 itself. It is just provided here for convenience of 693 applications only dealing with the current active 694 profile. 695 696 array{object} ServiceCompleteList [readonly] 697 698 Complete list of service object paths, including those 699 that are not currently visible. For example, WiFi 700 services that are stored in a loaded profile but 701 cannot currently be connected are presented in this 702 list. 703 704 The services are listed in the same service sorting 705 order as the "Services" property above. Change 706 events for this property are not emitted. 707 708 array{object} ServiceWatchList [readonly] 709 710 List of service object paths that are in a 711 'non-idle' state. This indicates the set of services 712 which are currently listed as associating, configuring, 713 or some other state other than idle, failure or 714 unknown. This allows a caller to use this property 715 indication to track which services should be monitored 716 for state changes. 717 718 The services are listed in the same service sorting 719 order as the "Services" property above, and a change 720 event for this property is emitted every time the 721 Service list is reordered, even if this list has not 722 changed. 723 724 string State [readonly] 725 726 The global connection state of a system. Possible 727 values are "online" if at least one connection exists 728 and "offline" if no device is connected. 729 730 array{string} UninitializedTechnologies [readonly] 731 732 The list of uninitialized technologies. An 733 uninitialized technology is a technology that has at 734 least one device that is not initialized yet (i.e. 735 the Device object is not created yet). The strings 736 are the same as the ones from the service types. 737 738 bool WakeOnLanEnabled [readwrite] 739 740 Specifies whether the Wake on LAN feature should be 741 enabled on new Ethernet links. Currently connected 742 links are un-affected. 743