- // Check if trusted
- if( !Client->bIsTrusted ) {
- if(giDebugLevel)
- Debug(Client, "Untrusted client attempting to AUTHIDENT");
- sendf(Client->Socket, "401 Untrusted\n");
- return ;
+ // Check if trusted (only works with INET sockets at present)
+ len = sizeof(client_addr);
+ if ( ! getpeername(Client->Socket, (struct sockaddr*)&client_addr, &len) ) {
+ // throw an error
+ }
+
+ client_ip = client_addr.sin_addr.s_addr;
+ if ( ! (ntohl(client_ip) == 0x7F000001 || ( (ntohl(client_ip) & IDENT_TRUSTED_NETMASK) == IDENT_TRUSTED_NETWORK ) )) {
+ if(giDebugLevel)
+ Debug(Client, "Untrusted client attempting to AUTHIDENT");
+ sendf(Client->Socket, "401 Untrusted\n");
+ return ;