节点dbus-native - 使用connMan连接到WiFi服务时传递密码短语

时间:2014-11-21 10:49:26

标签: javascript node.js wifi dbus connman

您好我在过去几天遇到此问题,同时尝试使用dbus连接到受保护的WiFi网络。所以到目前为止我开发的代码是:

注册代理

var dbus = require('dbus-native');
var bus = dbus.systemBus();
bus.invoke({
        destination: 'net.connman',
        path: '/',
        'interface': 'net.connman.Manager',
        member: 'RegisterAgent',
        type: dbus.messageType.methodCall,
        signature: 'o',
        body: [
                '/test/agent'
        ]
}, function(error, response) {
        if (error) {
                console.error('Error', error);
                //process.exit(1);
        } else {
                console.info('Success', response);
               // process.exit(0);
        }
});

输出

> Success

扫描Wifi

var dbus = require('dbus-native');
var bus = dbus.systemBus();
bus.invoke({
        destination: 'net.connman',
        path: '/net/connman/technology/wifi',
        'interface': 'net.connman.Technology',
        member: 'Scan',
        type: dbus.messageType.methodCall,
}, function(error, response) {
        if (error) {
                console.error('Error', error);
                //process.exit(1);
        } else {
                console.info('Success', response);
                //process.exit(0);
        }
});

输出

> Success

连接至WiFi服务

var dbus = require('dbus-native');
var bus = dbus.systemBus();
bus.invoke({
        destination: 'net.connman',
        path: '/net/connman/service/wifi_00e04c81923e_4469676957494649_managed_psk',
        'interface': 'net.connman.Service',
        member: 'Connect',
        type: dbus.messageType.methodCall,
}, function(error, response) {
        if (error) {
                console.error('Error', error);
                //process.exit(1);
        } else {
                console.info('Success', response);
                //process.exit(0);
        }
});

输出

> Error ['Invalid Arguments']

输出fropm connMan日志

  

connmand [1899]:src / agent.c:agent_receive_message()代理0x55640fe8   req 0x55644378

     

connmand [1899]:src / service.c:request_input_cb()RequestInput返回,   0x55649ad0

     

connmand [1899]:SRC / service.c:request_input_cb()错误:org.freedesktop.DBus.Error.UnknownService

     

connmand [1899]:src / service.c:__ connman_service_return_error()服务   0x55649ad0错误22 user_data(nil)

     

connmand [1899]:src / service.c:__ connman_service_set_hidden_​​data()   service 0x55649ad0 pending(nil)

     

connmand [1899]:src / service.c:service_save()service 0x55649ad0 new 1

     

connmand [1899]:src / connection.c:update_order()

     

connmand [1899]:src / service.c:__ connman_service_get_order()服务   0x55640a08名称有线订单1拆分0

     

connmand [1899]:src / connection.c:find_default_gateway()默认值   0x5563b250订单1

     

connmand [1899]:src / connection.c:__ connman_connection_update_gateway()   默认为0x5563b250

     

connmand [1899]:src / service.c:connman_service_unref_debug()0x55649ad0   ref 1 by src / service.c:6945:agent_context_unref()

所以基本上,如果有人能告诉我如何传回包含WiFi网络密码的用户数据,我将非常感激。

任何帮助将不胜感激? (connMan版本1.20)

由于

1 个答案:

答案 0 :(得分:0)

我无法让dbus-native工作。

我的解决方案是在/ lib / connman /中创建一个wifi.config文件,其中包含每个服务的密码:

wifi.config示例

[service_wifi_00e04c819295_4469679972434649_managed_psk] 
Type = wifi
Security = wpa2 
Name = [service_] 
Type = wifi 
Security = wpa2 
Name = WiFiAP
Passphrase = 12345

然后只需使用dbus-native连接到WiFi服务:

连接

var dbus = require('dbus-native');
var bus = dbus.systemBus();
bus.invoke({
        destination: 'net.connman',
        path: '/net/connman/service/wifi_48022aca514f_4469676957494649_managed_psk',
        'interface': 'net.connman.Service',
        member: 'Connect',
        type: dbus.messageType.methodCall,
}, function(error, response) {
        if (error) {
                console.error('Error', error);
                //process.exit(1);
        } else {
                console.info('Success', response);
                //process.exit(0);
        }
});