use reqwest::blocking::Client;
use zabbix_api::client::client::{ZabbixApiClient, ZabbixApiClientImpl};
use zabbix_api::error::ZabbixApiError;
use zabbix_api::user::create::{CreateUserRequest, UserGroupId};
use zabbix_api::usergroup::model::CreateUserGroupRequest;
fn generate_unique_name(prefix: &str) -> String {
let timestamp = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_secs();
format!("{}_{}", prefix, timestamp)
}
fn main() -> Result<(), ZabbixApiError> {
let zabbix_api_url = "http://localhost:3080/api_jsonrpc.php".to_string();
let zabbix_api_user = "Admin".to_string();
let zabbix_api_password = "zabbix".to_string();
let http_client = Client::new();
let client = ZabbixApiClientImpl::new(http_client, &zabbix_api_url);
let session = client.get_auth_session(&zabbix_api_user, &zabbix_api_password)?;
println!("Authenticated successfully.");
let user_group_name = generate_unique_name("example_ug_for_user");
let create_group_request = CreateUserGroupRequest {
name: user_group_name.clone(),
..Default::default()
};
let group_id = match client.create_user_group(&session, &create_group_request) {
Ok(id) => {
println!(
"Successfully created user group '{}' with ID: {}",
user_group_name, id
);
id.to_string()
}
Err(e) => {
eprintln!("Error creating user group '{}': {}", user_group_name, e);
return Err(e);
}
};
let user_alias = generate_unique_name("example_user");
let user_password = "Password123!"; let role_id = "2";
let create_user_request = CreateUserRequest {
username: user_alias.clone(),
passwd: user_password.to_string(),
roleid: role_id.to_string(),
usrgrps: vec![UserGroupId {
usrgrpid: group_id.clone(),
}],
name: Some("Example".to_string()),
surname: Some("User".to_string()),
autologin: Some(1), ..Default::default()
};
println!(
"Attempting to create user '{}' in group ID '{}' with role ID '{}'...",
user_alias, group_id, role_id
);
match client.create_user(&session, &create_user_request) {
Ok(user_id) => {
println!(
"Successfully created user '{}' with ID: {}",
user_alias, user_id
);
}
Err(e) => {
eprintln!("Error creating user '{}': {}", user_alias, e);
return Err(e);
}
}
Ok(())
}