fix wireguard set configuration

This commit is contained in:
Guillermo Roche 2024-11-03 13:03:09 +01:00
parent f5986a83f2
commit 97a5b5c7cb
2 changed files with 23 additions and 10 deletions

View File

@ -24,12 +24,10 @@ pub fn set_params(mut wg_pub_key: [u8; 32],
CString::new(peer_ip).unwrap().into_raw(), CString::new(peer_ip).unwrap().into_raw(),
51820); 51820);
println!("crea la semilla");
let mut device = wireguard_wrapper::generate_new_device(&mut wg_priv_key, let mut device = wireguard_wrapper::generate_new_device(&mut wg_priv_key,
CString::new(interface_name).unwrap().into_raw(), CString::new(interface_name).unwrap().into_raw(),
51820, peer); 51820, peer);
println!("crea la interfaz de red");
//let status_add_device = wireguard_wrapper::wg_add_device(device.name.as_ptr()); //let status_add_device = wireguard_wrapper::wg_add_device(device.name.as_ptr());
let status_set_device = wireguard_wrapper::wg_set_device(&mut device); let status_set_device = wireguard_wrapper::wg_set_device(&mut device);
//println!("dispositivo: {}", CString::from_raw(device.name.as_mut_ptr()).to_str().unwrap()); //println!("dispositivo: {}", CString::from_raw(device.name.as_mut_ptr()).to_str().unwrap());
@ -40,6 +38,7 @@ pub fn set_params(mut wg_pub_key: [u8; 32],
}*/ }*/
//ret = status_add_device >= 0 && status_set_device >= 0; //ret = status_add_device >= 0 && status_set_device >= 0;
ret = status_set_device >= 0; ret = status_set_device >= 0;
log::debug!("Status: {}", ret);
wireguard_wrapper::clean_device(&mut peer); wireguard_wrapper::clean_device(&mut peer);
} }
ret ret

View File

@ -19,15 +19,18 @@ wg_peer generate_new_peer(wg_key *pub_key, char *ip, unsigned short port) {
ipv4->next_allowedip = ipv6; ipv4->next_allowedip = ipv6;
wg_peer new_peer = { wg_peer new_peer = {
.flags = WGPEER_HAS_PUBLIC_KEY | WGPEER_REPLACE_ALLOWEDIPS, .flags = WGPEER_HAS_PUBLIC_KEY,
//.public_key = pub_key, //.public_key = pub_key,
.first_allowedip = ipv4, .first_allowedip = ipv4,
.last_allowedip = ipv6, .last_allowedip = ipv6,
.endpoint = generate_endponit (ip, port), .endpoint = generate_endponit (ip, port),
}; };
printf("protocol 0.101: %d\n",new_peer.endpoint.addr.sa_family);
strcpy(new_peer.public_key, pub_key); printf("protocol 0.102: %d\n",new_peer.endpoint.addr4.sin_family);
//strcpy(new_peer.public_key, pub_key);
memcpy(new_peer.public_key, pub_key, sizeof (wg_key));
printf("protocol 0.111: %d\n",new_peer.endpoint.addr.sa_family);
printf("protocol 0.112: %d\n",new_peer.endpoint.addr4.sin_family);
return new_peer; return new_peer;
} }
@ -43,14 +46,22 @@ wg_device generate_new_device(wg_key *priv_key,
.first_peer = &peer, .first_peer = &peer,
.last_peer = &peer, .last_peer = &peer,
}; };
strcpy(new_device.name, device_name); memcpy(new_device.name, device_name, sizeof (char[IFNAMSIZ]));
strcpy(new_device.private_key, priv_key); //strcpy(new_device.name, device_name);
memcpy(new_device.private_key, priv_key, sizeof (wg_key));
//strcpy(new_device.private_key, priv_key);
printf("str2: %s\n",new_device.name); printf("str2: %s\n",new_device.name);
wg_key_b64_string key, key2; wg_key_b64_string key, key2;
wg_key_to_base64(key, new_device.first_peer->public_key); wg_key_to_base64(key, new_device.first_peer->public_key);
printf("str2: %s\n",key); printf("str2: %s\n",key);
wg_key_to_base64(key2, new_device.private_key); wg_key_to_base64(key2, new_device.private_key);
printf("str3: %s\n",key2); printf("str3: %s\n",key2);
printf("port: %d\n",new_device.first_peer->endpoint.addr4.sin_port);
printf("protocol 1: %d\n",new_device.first_peer->endpoint.addr.sa_family);
printf("protocol 2: %d\n",new_device.first_peer->endpoint.addr4.sin_family);
char str[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &(new_device.first_peer->endpoint.addr4.sin_addr), str, INET_ADDRSTRLEN);
printf("ip: %s\n", str);
return new_device; return new_device;
} }
@ -59,7 +70,7 @@ wg_endpoint generate_endponit(char *ip, unsigned short port) {
inet_pton (AF_INET, ip, &ipv4); inet_pton (AF_INET, ip, &ipv4);
struct sockaddr_in address = { struct sockaddr_in address = {
.sin_family = AF_INET, .sin_family = AF_INET,
.sin_port = port, .sin_port = htons(port),
.sin_addr = ipv4, .sin_addr = ipv4,
}; };
@ -67,6 +78,9 @@ wg_endpoint generate_endponit(char *ip, unsigned short port) {
.addr4 = address, .addr4 = address,
}; };
printf("protocol 0.1: %d\n",ret.addr.sa_family);
printf("protocol 0.2: %d\n",ret.addr4.sin_family);
return ret; return ret;
} }