Skip to content

Commit 269df44

Browse files
authored
Encode correctly network names (#92)
1 parent 6872aed commit 269df44

File tree

8 files changed

+23
-5
lines changed

8 files changed

+23
-5
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ env_logger = "0.11"
3232
strum = { version = "0.27.2", features = ["derive"] }
3333
strum_macros = "0.27"
3434
libc = "0.2"
35+
hex = "0.4.3"
3536

3637
[profile.release]
3738
strip = true

Release.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## TBA
22

33
- Show all the configured networks
4+
- Encode network names correctly
45

56
## 0.5.0 - 2025-11-21
67

src/mode/station/auth/entreprise.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ fn pad_string(input: &str, length: usize) -> String {
3030
}
3131
}
3232

33+
fn iwd_network_name(name: &str) -> String {
34+
match name
35+
.chars()
36+
.all(|c| c.is_ascii_alphanumeric() || c == '-' || c == '_' || c == ' ')
37+
{
38+
true => name.to_string(),
39+
false => format!("={}", hex::encode(name)),
40+
}
41+
}
42+
3343
#[derive(Debug, Clone, Default)]
3444
struct UserInputField {
3545
field: Input,

src/mode/station/auth/entreprise/peap.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use ratatui::{
1212

1313
use tui_input::backend::crossterm::EventHandler;
1414

15-
use crate::mode::station::auth::entreprise::{ERROR_PADDING, UserInputField};
15+
use crate::mode::station::auth::entreprise::{ERROR_PADDING, UserInputField, iwd_network_name};
1616

1717
fn pad_string(input: &str, length: usize) -> String {
1818
let current_length = input.chars().count();
@@ -182,6 +182,7 @@ impl PEAP {
182182

183183
pub fn apply(&mut self, network_name: &str) -> Result<()> {
184184
self.validate()?;
185+
let network_name = iwd_network_name(network_name);
185186
let mut file = OpenOptions::new()
186187
.write(true)
187188
.read(true)

src/mode/station/auth/entreprise/pwd.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use ratatui::{
1212

1313
use tui_input::{Input, backend::crossterm::EventHandler};
1414

15-
use crate::mode::station::auth::entreprise::ERROR_PADDING;
15+
use crate::mode::station::auth::entreprise::{ERROR_PADDING, iwd_network_name};
1616

1717
fn pad_string(input: &str, length: usize) -> String {
1818
let current_length = input.chars().count();
@@ -101,7 +101,7 @@ impl PWD {
101101

102102
pub fn apply(&mut self, network_name: &str) -> Result<()> {
103103
self.validate()?;
104-
104+
let network_name = iwd_network_name(network_name);
105105
let mut file = OpenOptions::new()
106106
.write(true)
107107
.read(true)

src/mode/station/auth/entreprise/tls.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use ratatui::{
1212

1313
use tui_input::{Input, backend::crossterm::EventHandler};
1414

15-
use crate::mode::station::auth::entreprise::ERROR_PADDING;
15+
use crate::mode::station::auth::entreprise::{ERROR_PADDING, iwd_network_name};
1616

1717
fn pad_string(input: &str, length: usize) -> String {
1818
let current_length = input.chars().count();
@@ -165,6 +165,7 @@ impl TLS {
165165

166166
pub fn apply(&mut self, network_name: &str) -> Result<()> {
167167
self.validate()?;
168+
let network_name = iwd_network_name(network_name);
168169
let mut file = OpenOptions::new()
169170
.write(true)
170171
.read(true)

src/mode/station/auth/entreprise/ttls.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ use ratatui::{
1212

1313
use tui_input::backend::crossterm::EventHandler;
1414

15-
use crate::mode::station::auth::entreprise::{ERROR_PADDING, UserInputField, pad_string};
15+
use crate::mode::station::auth::entreprise::{
16+
ERROR_PADDING, UserInputField, iwd_network_name, pad_string,
17+
};
1618

1719
#[derive(Debug, Clone, PartialEq, Default, strum_macros::Display)]
1820
enum Phase2Method {
@@ -175,6 +177,7 @@ impl TTLS {
175177

176178
pub fn apply(&mut self, network_name: &str) -> Result<()> {
177179
self.validate()?;
180+
let network_name = iwd_network_name(network_name);
178181
let mut file = OpenOptions::new()
179182
.write(true)
180183
.read(true)

0 commit comments

Comments
 (0)