use std::collections::HashSet; use sqlx::{Pool, Sqlite}; use std::env; use ldap3::{LdapConn, Mod}; use tide::prelude::*; use skynet_ldap_server::{Config, get_config}; /* https://ticketbooking.dublincoach.ie/MobileAPI/MobileBooking/GetTrackToStageName?FromStage=University%20of%20Limerick https://ticketbooking.dublincoach.ie/MobileAPI/MobileBooking/GetJourneyList?FromStageName=University%20of%20Limerick&ToStageName=Red%20Cow%20LUAS&JourneyType=0&RouteID=0&JrEndStageID=0&IsStageSelection=1 From University of Limerick To Dublin City Ennis Killarney Tralee */ #[async_std::main] async fn main() -> tide::Result<()> { let config = get_config(); //update_users(&config).await; update_admin(&config).await?; Ok(()) } //async fn update_users(config: &Config) { //} fn uid_to_dn(uid: &str) -> String{ format!("uid={},ou=users,dc=skynet,dc=ie", uid) } async fn update_admin(config: &Config) -> tide::Result<()>{ let mut ldap = LdapConn::new(&config.ldap_host)?; // use the admin account ldap.simple_bind(&config.ldap_admin, &config.ldap_admin_pw)?.success()?; // read from config file let users = vec!["silver", "evanc", "eoghanconlon73", "pio"]; let dn_skynet_admins = "cn=skynet-admins,ou=groups,dc=skynet,dc=ie"; let skynet_admins = users.clone().into_iter().map(|uid| uid_to_dn(uid)).collect(); let mods = vec![Mod::Replace("member".to_string(), skynet_admins)]; ldap.modify(&dn_skynet_admins, mods)?.success()?; let dn_skynet_admins_linux = "cn=skynet-admins-linux,ou=groups,dc=skynet,dc=ie"; let skynet_admins_linux = users.clone().into_iter().map(|uid| uid.to_string()).collect(); let mods = vec![Mod::Replace("memberUid".to_string(), skynet_admins_linux)]; ldap.modify(&dn_skynet_admins_linux, mods)?.success()?; ldap.unbind()?; Ok(()) }