Node dbus-native - Передача парольной фразы при подключении к сервису WiFi с помощью connMan.

Привет, у меня была эта проблема в течение последних нескольких дней, когда я пытался подключиться к защищенной сети Wi-Fi, используя dbus. Итак, код, который я разработал до сих пор:

Зарегистрировать агента

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

Сканирование Wi-Fi

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 () agent 0x55640fe8 req 0x55644378

connmand [1899]: src /service.c:request_input_cb() запрос RequestInput, 0x55649ad0

connmand [одна тысяча восемьсот девяносто девять]: SRC /service.c:request_input_cb() Ошибка: org.freedesktop.DBus.Error.UnknownService

connmand [1899]: src / service.c: __ connman_service_return_error () service 0x55649ad0 error 22 user_data (nil)

connmand [1899]: src / service.c: __ connman_service_set_hidden_data () служба 0x55649ad0 в ожидании (ноль)

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 () service 0x55640a08 name Проводной заказ 1 split 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 от src/service.c:6945:agent_context_unref()

В общем, я был бы очень признателен, если бы кто-нибудь показал мне, как передать обратно пользовательские данные, содержащие фразу-пароль для сети WiFi.

Любая помощь будет принята с благодарностью? (версия 1.20 connMan)

Спасибо

1 ответ

Я не смог заставить работать dbus-native.

Мое решение состояло в том, чтобы создать файл wifi.config в /lib/connman/, который содержит фразу-пароль для каждого сервиса:

пример 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);
        }
});
Другие вопросы по тегам