(krb4_auth): obtain the `local' address when doing NAT. also turn on
passive mode. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7428 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -241,6 +241,8 @@ krb4_auth(void *app_data, char *host)
|
|||||||
int checksum;
|
int checksum;
|
||||||
u_int32_t cs;
|
u_int32_t cs;
|
||||||
struct krb4_data *d = app_data;
|
struct krb4_data *d = app_data;
|
||||||
|
struct sockaddr_in *localaddr = (struct sockaddr_in *)LOCAL_ADDR;
|
||||||
|
struct sockaddr_in *remoteaddr = (struct sockaddr_in *)REMOTE_ADDR;
|
||||||
|
|
||||||
checksum = getpid();
|
checksum = getpid();
|
||||||
ret = mk_auth(d, &adat, "ftp", host, checksum);
|
ret = mk_auth(d, &adat, "ftp", host, checksum);
|
||||||
@@ -251,7 +253,35 @@ krb4_auth(void *app_data, char *host)
|
|||||||
return AUTH_CONTINUE;
|
return AUTH_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(base64_encode(adat.dat, adat.length, &p) < 0) {
|
if (krb_get_config_bool("nat_in_use")) {
|
||||||
|
struct in_addr natAddr;
|
||||||
|
|
||||||
|
if (krb_get_our_ip_for_realm(krb_realmofhost(host),
|
||||||
|
&natAddr) != KSUCCESS)
|
||||||
|
printf("Can't get address for realm %s\n",
|
||||||
|
krb_realmofhost(host));
|
||||||
|
else {
|
||||||
|
if (natAddr.s_addr != localaddr->sin_addr.s_addr) {
|
||||||
|
printf("Using NAT IP address (%s) for kerberos 4\n",
|
||||||
|
inet_ntoa(natAddr));
|
||||||
|
localaddr->sin_addr = natAddr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This not the best place to do this, but it
|
||||||
|
* is here we know that (probably) NAT is in
|
||||||
|
* use!
|
||||||
|
*/
|
||||||
|
|
||||||
|
passivemode = 1;
|
||||||
|
printf("Setting: Passive mode on.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Local address is %s\n", inet_ntoa(localaddr->sin_addr));
|
||||||
|
printf("Remote address is %s\n", inet_ntoa(remoteaddr->sin_addr));
|
||||||
|
|
||||||
|
if(base64_encode(adat.dat, adat.length, &p) < 0) {
|
||||||
printf("Out of memory base64-encoding.\n");
|
printf("Out of memory base64-encoding.\n");
|
||||||
return AUTH_CONTINUE;
|
return AUTH_CONTINUE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user