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);
}
});