Print this page
1575 untangle libmlrpc ... pre2:
Get rid of ndr_rpc_server_{info,os}
1575 untangle libmlrpc ... pre1:
Move srvsvc_timecheck where it belongs
*** 32,44 ****
--- 32,46 ----
* administrator privilege. Also, some functions return NT status
* values while others return Win32 errors codes.
*/
#include <sys/errno.h>
+ #include <sys/tzfile.h>
#include <stdio.h>
#include <time.h>
#include <strings.h>
+ #include <unistd.h>
#include <smbsrv/libsmb.h>
#include <smbsrv/libmlsvc.h>
#include <smbsrv/smbinfo.h>
#include <smbsrv/ndl/srvsvc.ndl>
*** 346,414 ****
srvsvc_close(&handle);
return (0);
}
/*
! * Windows 95+ and Windows NT4.0 both report the version as 4.0.
! * Windows 2000+ reports the version as 5.x.
*/
! int
! srvsvc_net_server_getinfo(char *server, char *domain,
! srvsvc_server_info_t *svinfo)
{
! mlsvc_handle_t handle;
! struct mslm_NetServerGetInfo arg;
! struct mslm_SERVER_INFO_101 *sv101;
! int len, opnum, rc;
! char user[SMB_USERNAME_MAXLEN];
! smb_ipc_get_user(user, SMB_USERNAME_MAXLEN);
! if (srvsvc_open(server, domain, user, &handle) != 0)
! return (-1);
! opnum = SRVSVC_OPNUM_NetServerGetInfo;
! bzero(&arg, sizeof (arg));
! len = strlen(server) + 4;
! arg.servername = ndr_rpc_malloc(&handle, len);
! if (arg.servername == NULL)
! return (-1);
! (void) snprintf((char *)arg.servername, len, "\\\\%s", server);
! arg.level = 101;
! rc = ndr_rpc_call(&handle, opnum, &arg);
! if ((rc != 0) || (arg.status != 0)) {
! srvsvc_close(&handle);
! return (-1);
}
-
- sv101 = arg.result.bufptr.bufptr101;
-
- bzero(svinfo, sizeof (srvsvc_server_info_t));
- svinfo->sv_platform_id = sv101->sv101_platform_id;
- svinfo->sv_version_major = sv101->sv101_version_major;
- svinfo->sv_version_minor = sv101->sv101_version_minor;
- svinfo->sv_type = sv101->sv101_type;
- if (sv101->sv101_name)
- svinfo->sv_name = strdup((char *)sv101->sv101_name);
- if (sv101->sv101_comment)
- svinfo->sv_comment = strdup((char *)sv101->sv101_comment);
-
- if (svinfo->sv_type & SV_TYPE_WFW)
- svinfo->sv_os = NATIVE_OS_WIN95;
- if (svinfo->sv_type & SV_TYPE_WINDOWS)
- svinfo->sv_os = NATIVE_OS_WIN95;
- if ((svinfo->sv_type & SV_TYPE_NT) ||
- (svinfo->sv_type & SV_TYPE_SERVER_NT))
- svinfo->sv_os = NATIVE_OS_WINNT;
- if (svinfo->sv_version_major > 4)
- svinfo->sv_os = NATIVE_OS_WIN2000;
-
- srvsvc_close(&handle);
- return (0);
}
/*
* Synchronize the local system clock with the domain controller.
*/
--- 348,396 ----
srvsvc_close(&handle);
return (0);
}
/*
! * Compare the time here with the remote time on the server
! * and report clock skew.
*/
! void
! srvsvc_timecheck(char *server, char *domain)
{
! char hostname[MAXHOSTNAMELEN];
! struct timeval dc_tv;
! struct tm dc_tm;
! struct tm *tm;
! time_t tnow;
! time_t tdiff;
! int priority;
! if (srvsvc_net_remote_tod(server, domain, &dc_tv, &dc_tm) < 0) {
! syslog(LOG_DEBUG, "srvsvc_net_remote_tod failed");
! return;
! }
! tnow = time(NULL);
! if (tnow > dc_tv.tv_sec)
! tdiff = (tnow - dc_tv.tv_sec) / SECSPERMIN;
! else
! tdiff = (dc_tv.tv_sec - tnow) / SECSPERMIN;
! if (tdiff != 0) {
! (void) strlcpy(hostname, "localhost", MAXHOSTNAMELEN);
! (void) gethostname(hostname, MAXHOSTNAMELEN);
! priority = (tdiff > 2) ? LOG_NOTICE : LOG_DEBUG;
! syslog(priority, "DC [%s] clock skew detected: %u minutes",
! server, tdiff);
! tm = gmtime(&dc_tv.tv_sec);
! syslog(priority, "%-8s UTC: %s", server, asctime(tm));
! tm = gmtime(&tnow);
! syslog(priority, "%-8s UTC: %s", hostname, asctime(tm));
}
}
/*
* Synchronize the local system clock with the domain controller.
*/
*** 541,582 ****
tm->tm_wday = tod->tod_weekday;
}
srvsvc_close(&handle);
return (0);
- }
-
- void
- srvsvc_net_test(char *server, char *domain, char *netname)
- {
- smb_domainex_t di;
- srvsvc_server_info_t svinfo;
-
- (void) smb_tracef("%s %s %s", server, domain, netname);
-
- if (smb_domain_getinfo(&di)) {
- server = di.d_dci.dc_name;
- domain = di.d_primary.di_nbname;
- }
-
- if (srvsvc_net_server_getinfo(server, domain, &svinfo) == 0) {
- smb_tracef("NetServerGetInfo: %s %s (%d.%d) id=%d type=0x%08x",
- svinfo.sv_name ? svinfo.sv_name : "NULL",
- svinfo.sv_comment ? svinfo.sv_comment : "NULL",
- svinfo.sv_version_major, svinfo.sv_version_minor,
- svinfo.sv_platform_id, svinfo.sv_type);
-
- free(svinfo.sv_name);
- free(svinfo.sv_comment);
- }
-
- (void) srvsvc_net_share_get_info(server, domain, netname);
- #if 0
- /*
- * The NetSessionEnum server-side definition was updated.
- * Disabled until the client-side has been updated.
- */
- (void) srvsvc_net_session_enum(server, domain, netname);
- #endif
- (void) srvsvc_net_connect_enum(server, domain, netname, 0);
- (void) srvsvc_net_connect_enum(server, domain, netname, 1);
}
--- 523,528 ----