function generateClientConfig(Peer $peer){ $config = "# AUTOGENERATED FILE - DO NOT EDIT # This file uses wg-quick format. # See https://man7.org/linux/man-pages/man8/wg-quick.8.html#CONFIGURATION [Interface] # For user {$peer->getUsername()} # Peer type: client # Core settings PrivateKey = {$peer->getPrivateKey()} Address = {$peer->getIp()} # Misc. settings (optional) DNS = 10.10.10.10, tigermedia.local, ~virtualdatacenter.nu # Interface hooks (optional) [Peer] PublicKey = MMRV3GzdVaA/tx2pOiMqB7xp0PBlCU3MyPtZEVYBdB4= AllowedIPs = 10.10.10.0/24, 10.10.100.0/24, 185.149.228.0/27, 185.149.228.32/30, 185.149.228.37/32, 185.149.228.38/31, 185.149.228.40/29, 185.149.228.48/28, 185.149.228.64/26, 185.149.228.128/25 PresharedKey = {$peer->getPresharedKey()} PersistentKeepalive = 16"; return $config; } function authenticate($username, $password) { if($username == '' || $password == '') return false; //only use for tigermedia logins. if(stristr($username, '@tigermedia.dk') == FALSE) return false; //remove tigermedia.dk part $username = str_replace('@tigermedia.dk', '', $username); if(strlen($username) <= 3) { //check agenst global LDAP $ldap = ldap_connect("ldap://adm01"); $basedn = "cn=users,cn=accounts,dc=tigermedia,dc=local"; $dn = "uid={$username},{$basedn}"; ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); ldap_set_option($ldap, LDAP_OPT_NETWORK_TIMEOUT, 2); /* 2 second timeout */ $bind = @ldap_bind($ldap, $dn, $password); if ($bind) { return true; }else{ return false; } } return false; } function loadPeer($username){ global $currentPeers; parseWgFile(); /** @var Peer $peer */ foreach ($currentPeers as $peer){ if($peer->getUsername() == $username){ return $peer; } } return null; }