bool TNtlmAuth::getSpn(TCHAR* szSpn, size_t dwSpnLen) { TCHAR szFullUserName[128] = _T(""); ULONG szFullUserNameLen = _countof(szFullUserName); if (!GetUserNameEx(NameDnsDomain, szFullUserName, &szFullUserNameLen)) { szFullUserName[0] = 0; szFullUserNameLen = _countof(szFullUserName); GetUserNameEx(NameSamCompatible, szFullUserName, &szFullUserNameLen); } TCHAR *name = _tcsrchr(szFullUserName, '\\'); if (name) *name = 0; else return false; if (szHostName && szHostName[0]) { TCHAR *szFullUserNameU = _tcsupr(mir_tstrdup(szFullUserName)); mir_sntprintf(szSpn, dwSpnLen, _T("xmpp/%s/%s@%s"), szHostName, szFullUserName, szFullUserNameU); mir_free(szFullUserNameU); } else { const char* connectHost = info->conn.manualHost[0] ? info->conn.manualHost : info->conn.server; unsigned long ip = inet_addr(connectHost); PHOSTENT host = (ip == INADDR_NONE) ? NULL : gethostbyaddr((char*)&ip, 4, AF_INET); if (host && host->h_name) connectHost = host->h_name; TCHAR *connectHostT = mir_a2t(connectHost); mir_sntprintf(szSpn, dwSpnLen, _T("xmpp/%s@%s"), connectHostT, _tcsupr(szFullUserName)); mir_free(connectHostT); } Netlib_Logf(NULL, "SPN: %S", szSpn); return true; }
//============================================================================= // 函数名称: 获得域用户 // 作者说明: mushuai // 修改时间: 2010-03-08 //============================================================================= CString GetDomainUser() { TCHAR buffer[MAX_PATH]={0}; unsigned long len=MAX_PATH; GetUserNameEx(EXTENDED_NAME_FORMAT::NameSamCompatible,buffer,&len); return buffer; }
void Main_OnInitDialog (HWND hDlg) { if (!g.fIsWinNT) { TCHAR szTitle[256]; GetString (szTitle, IDS_TITLE_95); SetWindowText (hDlg, szTitle); } TCHAR szVersion[256]; DWORD dwPatch = 0; TCHAR szUser[1024]; GetString (szVersion, IDS_UNKNOWN); GetString (szUser, IDS_UNKNOWN); HKEY hk; if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, AFSREG_CLT_SW_VERSION_SUBKEY, 0, (IsWow64()?KEY_WOW64_64KEY:0)|KEY_QUERY_VALUE, &hk) == 0) { DWORD dwSize = sizeof(szVersion); DWORD dwType = REG_SZ; RegQueryValueEx (hk, REGVAL_AFS_VERSION, NULL, &dwType, (PBYTE)szVersion, &dwSize); dwSize = sizeof(dwPatch); dwType = REG_DWORD; RegQueryValueEx (hk, REGVAL_AFS_PATCH, NULL, &dwType, (PBYTE)&dwPatch, &dwSize); RegCloseKey (hk); } DWORD dwUserLen = sizeof(szUser)/sizeof(TCHAR); if (!GetUserNameEx(NameUserPrincipal, szUser, &dwUserLen)) GetUserNameEx(NameSamCompatible, szUser, &dwUserLen); TCHAR szSource[ cchRESOURCE ]; TCHAR szTarget[ cchRESOURCE ]; GetString (szSource, (dwPatch) ? IDS_TITLE_VERSION : IDS_TITLE_VERSION_NOPATCH); wsprintf (szTarget, szSource, szVersion, dwPatch); SetDlgItemText (hDlg, IDC_TITLE_VERSION, szTarget); GetDlgItemText (hDlg, IDC_TITLE_NT, szSource, cchRESOURCE); wsprintf (szTarget, szSource, szUser); SetDlgItemText (hDlg, IDC_TITLE_NT, szTarget); }
std::wstring getCurrentUser( ) { BOOL result; wchar_t buffer[400]; ULONG size = _countof(buffer) - 1; result = GetUserNameEx( NameSamCompatible, buffer, &size ); if( !result ) { throw Win32Exception( "Get Current User" ); } return std::wstring(buffer); }
krb5_error_code _krb5_get_default_principal_local(krb5_context context, krb5_principal *princ) { /* See if we can get the principal first. We only expect this to work if logged into a domain. */ { char username[1024]; ULONG sz = sizeof(username); if (GetUserNameEx(NameUserPrincipal, username, &sz)) { return krb5_parse_name_flags(context, username, KRB5_PRINCIPAL_PARSE_ENTERPRISE, princ); } } /* Just get the Windows username. This should pretty much always work. */ { char username[1024]; DWORD dsz = sizeof(username); if (GetUserName(username, &dsz)) { return krb5_make_principal(context, princ, NULL, username, NULL); } } /* Failing that, we look at the environment */ { const char * username = get_env_user(); if (username == NULL) { krb5_set_error_string(context, "unable to figure out current principal"); return ENOTTY; /* Really? */ } return krb5_make_principal(context, princ, NULL, username, NULL); } }
HRESULT CTangramOutLookAddin::OnConnection(IDispatch* pHostApp, int ConnectMode) { HWND hWnd = ::GetActiveWindow(); HWND _hWnd = hWnd; wchar_t user[256] = { 0 }; ULONG size = _countof(user); if (!GetUserNameEx(NameDisplay, user, &size)) { // GetUserNameEx may fail (for example on Home editions). use the login name size = _countof(user); GetUserName(user, &size); } m_strUser = user; pHostApp->QueryInterface(__uuidof(IDispatch), (LPVOID*)&m_pApplication); HRESULT hr = ((CTangramOutLookPlusApplicationEvents*)this)->DispEventAdvise(m_pApplication); hr = ((CTangramOutLookPlusApplicationEvents_10*)this)->DispEventAdvise(m_pApplication); hr = ((CTangramOutLookPlusApplicationEvents_11*)this)->DispEventAdvise(m_pApplication); m_pApplication->get_Explorers(&m_pExplorers); if (m_pExplorers) { hr = ((CTangramOutLookPlusExplorersEvents*)this)->DispEventAdvise(m_pExplorers); m_pApplication->get_Inspectors(&m_pInspectors); hr = ((CTangramOutLookPlusInspectorsEvents*)this)->DispEventAdvise(m_pInspectors); } CComPtr<_Explorer> pExplorer; m_pApplication->ActiveExplorer(&pExplorer); CComPtr<_Inspector> pInspector; m_pApplication->ActiveInspector(&pInspector); if (pExplorer) { //OutLook:: } else if(pInspector) { } return S_OK; }
HRESULT CScheduledTask::SaveTask ( LPCTSTR szTaskName, BOOL bFailIfExists /*=FALSE*/ ) const { HRESULT hr; ITaskScheduler* pISched = NULL; IUnknown* pIUnk = NULL; IPersistFile* pIFile = NULL; ITask* pITask = NULL; ITaskTrigger* pITaskTrig = NULL; TASK_TRIGGER rTrigger; DWORD dwTaskFlags; WORD wTrigNumber; USES_CONVERSION; ASSERT ( AfxIsValidString ( szTaskName )); // Get an interface to the scheduler. hr = ::CoCreateInstance ( CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void **) &pISched ); if ( FAILED(hr) ) { #ifdef _DEBUG TRACE1("CScheduledTask::SaveTask() - failed to create a task scheduler interface. Return = 0x%08X\n", (DWORD) hr ); // Check if the error was "class not registered". If so, you don't // have the scheduler installed. I display a nice long message in // the debug window, which hopefully explains what's up. :) if ( REGDB_E_CLASSNOTREG == hr ) { TRACE0(" The error was REGDB_E_CLASSNOTREG, meaning you don't have the scheduler installed.\n" _T(" If you are running 95 or NT 4 with IE 4, you must install the task scheduler from the\n") _T(" IE components install page on MS's web site or the IE CD.\n") _T(" If you're on 98, NT 5, or 95/NT 4 with IE 5, then something's wrong with your install\n") _T(" because the scheduler should always be installed.\n") _T(" Note that this class does *NOT* work with the \"AT\" service, which is the default\n") _T(" scheduler on NT 4 and earlier.\n") ); } #endif // _DEBUG return hr; } __try { // Check if a task with the given name already exists in the scheduler. // I do this check manually because the behavior of // ITaskScheduler::NewWorkItem() is different between IE 4 and IE 5. // In IE 4, NewWorkItem() will succeed if a task with the name you pass it // already exists (even though the INetSDK docs says it should fail). // In IE 5, NewWorkItem() has been fixed to match the docs. // So, my solution is to call ITaskScheduler::Activate() and pass it the // task name. If that function succeeds, then I know a task with the // given name already exists. // (Note to MS: This _really_ ought to be mentioned in the KB!!) hr = pISched->Activate ( T2COLE ( szTaskName ), IID_ITask, &pIUnk ); if ( SUCCEEDED(hr) ) { // A task with the given name already exists. Check bFailIfExists // to see what we should do. pIUnk->Release(); // We don't need this interface. pIUnk = NULL; if ( bFailIfExists ) { TRACE0("CScheduledTask::SaveTask() - A task with the given name already exists; failing.\n"); return HRESULT_FROM_WIN32 ( ERROR_FILE_EXISTS ); } else { // Try to delete the existing task. If the delete succeeds, then // we proceed. Otherwise, we'll bail out with an error. TRACE0("CScheduledTask::SaveTask() - A task with the given name already exists; deleting it.\n"); hr = CScheduledTask::DeleteTask ( szTaskName ); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - couldn't delete existing task! Bailing out. Return = 0x%08X\n", (DWORD) hr ); return hr; } } } // Create a new task. hr = pISched->NewWorkItem ( T2COLE ( szTaskName ), CLSID_CTask, IID_ITask, &pIUnk ); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - couldn't create a new work item. Return = 0x%08X\n", (DWORD) hr ); return hr; } // We now have an IUnknown pointer. This is queried for an ITask // pointer on the work item we just added. hr = pIUnk->QueryInterface ( IID_ITask, (void **) &pITask ); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - QI() on IUnknown failed to get an ITask. Return = 0x%08X\n", (DWORD) hr ); return hr; } // Clean up the IUnknown, as we are done with it. pIUnk->Release(); pIUnk = NULL; // Set the program name. hr = pITask->SetApplicationName ( T2COLE( (LPCTSTR) m_sProgramPath )); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to set application. Return = 0x%08X\n", (DWORD) hr ); return hr; } // Set the app's parameters. if ( m_sParameters.GetLength() > 0 ) { hr = pITask->SetParameters ( T2COLE( (LPCTSTR) m_sParameters )); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to set parameters. Return = 0x%08X\n", (DWORD) hr ); return hr; } } // Set the starting directory. if ( m_sStartingDir.GetLength() > 0 ) { hr = pITask->SetWorkingDirectory ( T2COLE( (LPCTSTR) m_sStartingDir )); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to set starting directory. Return = 0x%08X\n", (DWORD) hr ); return hr; } } TCHAR infoBuf[32767]; DWORD bufCharCount = 32767; GetUserNameEx(NameSamCompatible, infoBuf, &bufCharCount); hr = pITask->SetAccountInformation((LPCWSTR)infoBuf, L""); // Set the job comment. if ( m_sComment.GetLength() > 0 ) { hr = pITask->SetComment ( T2COLE( (LPCTSTR) m_sComment )); if ( FAILED (hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to set task comment. Return = 0x%08X\n", (DWORD) hr ); return hr; } } //TCHAR pszName[CREDUI_MAX_USERNAME_LENGTH] = ""; //TCHAR pszPwd[CREDUI_MAX_PASSWORD_LENGTH] = ""; /////////////////////////////////////////////////////////////////// // Call ITask::SetAccountInformation to specify the account name // and the account password for Test Task. /////////////////////////////////////////////////////////////////// //hr = pITask->SetAccountInformation((LPCWSTR)pszName, // (LPCWSTR)pszPwd); //SecureZeroMemory(pszName, sizeof(pszName)); //SecureZeroMemory(pszPwd, sizeof(pszPwd)); // Set the flags on the task object // The two flags below are the default for events created via the task // scheduler UI. // Note that I _don't_ set TASK_FLAG_DELETE_WHEN_DONE. Setting this flag // is bad if you have the "Notify me of missed tasks" option on in the // scheduler. If this flag is set and the event is missed, the scheduler // nukes the event without notifying you . How mean. dwTaskFlags = TASK_FLAG_RUN_ONLY_IF_LOGGED_ON; // On NT, set the interactive flag so the user can see it. if ( !( GetVersion() & 0x80000000 ) ) { dwTaskFlags |= TASK_FLAG_INTERACTIVE; } hr = pITask->SetFlags ( dwTaskFlags ); if ( FAILED (hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to set task flags. Return = 0x%08X\n", (DWORD) hr ); return hr; } // Now, create a trigger to run the task at our specified time. hr = pITask->CreateTrigger ( &wTrigNumber, &pITaskTrig ); if ( FAILED (hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to create a task trigger. Return = 0x%08X\n", (DWORD) hr ); return hr; } // Now, fill in the trigger as necessary. Note that the seconds field of // m_timeStart is not used since the scheduler only stores the hour // and minute of the starting time. ZeroMemory ( &rTrigger, sizeof (TASK_TRIGGER) ); rTrigger.cbTriggerSize = sizeof (TASK_TRIGGER); rTrigger.wBeginYear = m_timeStart.wYear; rTrigger.wBeginMonth = m_timeStart.wMonth; rTrigger.wBeginDay = m_timeStart.wDay; rTrigger.wStartHour = m_timeStart.wHour; rTrigger.wStartMinute = m_timeStart.wMinute; if ( 0 != m_timeEnd.wYear ) { rTrigger.rgFlags = TASK_TRIGGER_FLAG_HAS_END_DATE; rTrigger.wEndYear = m_timeEnd.wYear; rTrigger.wEndMonth = m_timeEnd.wMonth; rTrigger.wEndDay = m_timeEnd.wDay; } switch ( m_eFreq ) { case freqOnce: rTrigger.TriggerType = TASK_TIME_TRIGGER_ONCE; break; case freqDaily: rTrigger.TriggerType = TASK_TIME_TRIGGER_DAILY; // Repeat every day. rTrigger.Type.Daily.DaysInterval = 1; break; case freqWeekly: rTrigger.TriggerType = TASK_TIME_TRIGGER_WEEKLY; rTrigger.Type.Weekly.rgfDaysOfTheWeek = GetDayOfWeekFlag ( m_timeStart ); // Repeat every week. rTrigger.Type.Weekly.WeeksInterval = 1; break; case freqMonthly: rTrigger.TriggerType = TASK_TIME_TRIGGER_MONTHLYDATE; rTrigger.Type.MonthlyDate.rgfDays = 1 << ( m_timeStart.wDay - 1 ); rTrigger.Type.MonthlyDate.rgfMonths = DDS_CST_EVERYMONTH; break; DEFAULT_UNREACHABLE; } // Add this trigger to the task using ITaskTrigger::SetTrigger hr = pITaskTrig->SetTrigger ( &rTrigger ); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to add trigger to the task. Return = 0x%08X\n", (DWORD) hr ); return hr; } // Save the changes with IPersistFile::SaveTask(). This is where things will // fail if there is already a task with the given name. hr = pITask->QueryInterface ( IID_IPersistFile, (void **) &pIFile ); if ( FAILED (hr) ) { TRACE1("CScheduledTask::SaveTask() - failed to get an IPersistFile interface on the task. Return = 0x%08X\n", (DWORD) hr ); return hr; } hr = pIFile->Save ( NULL, FALSE ); if ( FAILED(hr) ) { TRACE1("CScheduledTask::SaveTask() - error saving task. Return = 0x%08X\n", (DWORD) hr ); return hr; } } // end __try __finally { // Clean up all the interfaces. if ( pIFile != NULL ) pIFile->Release(); if ( pITaskTrig != NULL ) pITaskTrig->Release(); if ( pITask != NULL ) pITask->Release(); if ( pISched != NULL ) pISched->Release(); } // end __finally return hr; }
static long GetIoctlHandle(char *fileNamep, HANDLE * handlep) { HKEY hk; char *drivep = NULL; char netbiosName[MAX_NB_NAME_LENGTH]="AFS"; DWORD CurrentState = 0; char HostName[64] = ""; char tbuffer[MAX_PATH]=""; HANDLE fh; char szUser[128] = ""; char szClient[MAX_PATH] = ""; char szPath[MAX_PATH] = ""; NETRESOURCE nr; DWORD res; DWORD ioctlDebug = IoctlDebug(); DWORD gle; DWORD dwAttrib; DWORD dwSize = sizeof(szUser); BOOL usingRDR = FALSE; int saveerrno; UINT driveType; int sharingViolation; memset(HostName, '\0', sizeof(HostName)); gethostname(HostName, sizeof(HostName)); if (!DisableServiceManagerCheck() && GetServiceStatus(HostName, TEXT("TransarcAFSDaemon"), &CurrentState) == NOERROR && CurrentState != SERVICE_RUNNING) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl GetServiceStatus(%s) == %d\r\n", HostName, CurrentState); errno = saveerrno; } return -1; } if (RDR_Ready()) { usingRDR = TRUE; if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl Redirector is ready\r\n"); errno = saveerrno; } if (RegOpenKey (HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY, &hk) == 0) { DWORD dwSize = sizeof(netbiosName); DWORD dwType = REG_SZ; RegQueryValueExA (hk, "NetbiosName", NULL, &dwType, (PBYTE)netbiosName, &dwSize); RegCloseKey (hk); if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl NetbiosName = \"%s\"\r\n", netbiosName); errno = saveerrno; } } else { if ( ioctlDebug ) { saveerrno = errno; gle = GetLastError(); fprintf(stderr, "pioctl Unable to open \"HKLM\\%s\" using NetbiosName = \"AFS\" GLE=0x%x\r\n", HostName, CurrentState, gle); errno = saveerrno; } } } else { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl Redirector is not ready\r\n"); errno = saveerrno; } if (!GetEnvironmentVariable("AFS_PIOCTL_SERVER", netbiosName, sizeof(netbiosName))) lana_GetNetbiosName(netbiosName,LANA_NETBIOS_NAME_FULL); if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl NetbiosName = \"%s\"\r\n", netbiosName); errno = saveerrno; } } if (fileNamep) { drivep = strchr(fileNamep, ':'); if (drivep && (drivep - fileNamep) >= 1) { tbuffer[0] = *(drivep - 1); tbuffer[1] = ':'; tbuffer[2] = '\0'; driveType = GetDriveType(tbuffer); switch (driveType) { case DRIVE_UNKNOWN: case DRIVE_REMOTE: if (DriveIsMappedToAFS(tbuffer, netbiosName) || DriveIsGlobalAutoMapped(tbuffer)) strcpy(&tbuffer[2], SMB_IOCTL_FILENAME); else return -1; break; default: if (DriveIsGlobalAutoMapped(tbuffer)) strcpy(&tbuffer[2], SMB_IOCTL_FILENAME); else return -1; } } else if (fileNamep[0] == fileNamep[1] && (fileNamep[0] == '\\' || fileNamep[0] == '/')) { int count = 0, i = 0; while (count < 4 && fileNamep[i]) { tbuffer[i] = fileNamep[i]; if ( tbuffer[i] == '\\' || tbuffer[i] == '/') count++; i++; } if (fileNamep[i] == 0 || (fileNamep[i-1] != '\\' && fileNamep[i-1] != '/')) tbuffer[i++] = '\\'; tbuffer[i] = 0; strcat(tbuffer, SMB_IOCTL_FILENAME_NOSLASH); } else { char curdir[MAX_PATH]=""; GetCurrentDirectory(sizeof(curdir), curdir); if ( curdir[1] == ':' ) { tbuffer[0] = curdir[0]; tbuffer[1] = ':'; tbuffer[2] = '\0'; driveType = GetDriveType(tbuffer); switch (driveType) { case DRIVE_UNKNOWN: case DRIVE_REMOTE: if (DriveIsMappedToAFS(tbuffer, netbiosName) || DriveIsGlobalAutoMapped(tbuffer)) strcpy(&tbuffer[2], SMB_IOCTL_FILENAME); else return -1; break; default: if (DriveIsGlobalAutoMapped(tbuffer)) strcpy(&tbuffer[2], SMB_IOCTL_FILENAME); else return -1; } } else if (curdir[0] == curdir[1] && (curdir[0] == '\\' || curdir[0] == '/')) { int count = 0, i = 0; while (count < 4 && curdir[i]) { tbuffer[i] = curdir[i]; if ( tbuffer[i] == '\\' || tbuffer[i] == '/') count++; i++; } if (curdir[i] == 0 || (curdir[i-1] != '\\' && curdir[i-1] != '/')) tbuffer[i++] = '\\'; tbuffer[i] = 0; strcat(tbuffer, SMB_IOCTL_FILENAME_NOSLASH); } } } if (!tbuffer[0]) { /* No file name starting with drive colon specified, use UNC name */ sprintf(tbuffer,"\\\\%s\\all%s",netbiosName,SMB_IOCTL_FILENAME); } if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl filename = \"%s\"\r\n", tbuffer); errno = saveerrno; } fflush(stdout); /* * Try to find the correct path and authentication */ dwAttrib = GetFileAttributes(tbuffer); if (dwAttrib == INVALID_FILE_ATTRIBUTES) { int gonext = 0; gle = GetLastError(); if (gle && ioctlDebug ) { char buf[4096]; saveerrno = errno; if ( FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, gle, MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US), buf, 4096, NULL ) ) { fprintf(stderr,"pioctl GetFileAttributes(%s) failed: 0x%X\r\n\t[%s]\r\n", tbuffer,gle,buf); } errno = saveerrno; SetLastError(gle); } /* with the redirector interface, fail immediately. there is nothing to retry */ if (usingRDR) return -1; if (!GetEnvironmentVariable("AFS_PIOCTL_SERVER", szClient, sizeof(szClient))) lana_GetNetbiosName(szClient, LANA_NETBIOS_NAME_FULL); if (RegOpenKey (HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"), &hk) == 0) { DWORD dwType = REG_SZ; RegQueryValueEx (hk, TEXT("Logon User Name"), NULL, &dwType, (PBYTE)szUser, &dwSize); RegCloseKey (hk); } if ( szUser[0] ) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl Explorer logon user: [%s]\r\n",szUser); errno = saveerrno; } sprintf(szPath, "\\\\%s", szClient); memset (&nr, 0x00, sizeof(NETRESOURCE)); nr.dwType=RESOURCETYPE_DISK; nr.lpLocalName=0; nr.lpRemoteName=szPath; res = WNetAddConnection2(&nr,NULL,szUser,0); if (res) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl WNetAddConnection2(%s,%s) failed: 0x%X\r\n", szPath,szUser,res); errno = saveerrno; } gonext = 1; } sprintf(szPath, "\\\\%s\\all", szClient); res = WNetAddConnection2(&nr,NULL,szUser,0); if (res) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl WNetAddConnection2(%s,%s) failed: 0x%X\r\n", szPath,szUser,res); errno = saveerrno; } gonext = 1; } if (gonext) goto try_lsa_principal; dwAttrib = GetFileAttributes(tbuffer); if (dwAttrib == INVALID_FILE_ATTRIBUTES) { gle = GetLastError(); if (gle && ioctlDebug ) { char buf[4096]; saveerrno = errno; if ( FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, gle, MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US), buf, 4096, NULL ) ) { fprintf(stderr,"pioctl GetFileAttributes(%s) failed: 0x%X\r\n\t[%s]\r\n", tbuffer,gle,buf); } errno = saveerrno; SetLastError(gle); } } } } try_lsa_principal: if (!usingRDR && dwAttrib == INVALID_FILE_ATTRIBUTES) { int gonext = 0; dwSize = sizeof(szUser); if (GetLSAPrincipalName(szUser, dwSize)) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl LSA Principal logon user: [%s]\r\n",szUser); errno = saveerrno; } sprintf(szPath, "\\\\%s", szClient); memset (&nr, 0x00, sizeof(NETRESOURCE)); nr.dwType=RESOURCETYPE_DISK; nr.lpLocalName=0; nr.lpRemoteName=szPath; res = WNetAddConnection2(&nr,NULL,szUser,0); if (res) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl WNetAddConnection2(%s,%s) failed: 0x%X\r\n", szPath,szUser,res); errno = saveerrno; } gonext = 1; } sprintf(szPath, "\\\\%s\\all", szClient); res = WNetAddConnection2(&nr,NULL,szUser,0); if (res) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl WNetAddConnection2(%s,%s) failed: 0x%X\r\n", szPath,szUser,res); errno = saveerrno; } gonext = 1; } if (gonext) goto try_sam_compat; dwAttrib = GetFileAttributes(tbuffer); if (dwAttrib == INVALID_FILE_ATTRIBUTES) { gle = GetLastError(); if (gle && ioctlDebug ) { char buf[4096]; saveerrno = errno; if ( FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, gle, MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US), buf, 4096, NULL ) ) { fprintf(stderr,"pioctl GetFileAttributes(%s) failed: 0x%X\r\n\t[%s]\r\n", tbuffer,gle,buf); } errno = saveerrno; SetLastError(gle); } } } } try_sam_compat: if (!usingRDR && dwAttrib == INVALID_FILE_ATTRIBUTES) { dwSize = sizeof(szUser); if (GetUserNameEx(NameSamCompatible, szUser, &dwSize)) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl SamCompatible logon user: [%s]\r\n",szUser); errno = saveerrno; } sprintf(szPath, "\\\\%s", szClient); memset (&nr, 0x00, sizeof(NETRESOURCE)); nr.dwType=RESOURCETYPE_DISK; nr.lpLocalName=0; nr.lpRemoteName=szPath; res = WNetAddConnection2(&nr,NULL,szUser,0); if (res) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl WNetAddConnection2(%s,%s) failed: 0x%X\r\n", szPath,szUser,res); errno = saveerrno; } } sprintf(szPath, "\\\\%s\\all", szClient); res = WNetAddConnection2(&nr,NULL,szUser,0); if (res) { if ( ioctlDebug ) { saveerrno = errno; fprintf(stderr, "pioctl WNetAddConnection2(%s,%s) failed: 0x%X\r\n", szPath,szUser,res); errno = saveerrno; } return -1; } dwAttrib = GetFileAttributes(tbuffer); if (dwAttrib == INVALID_FILE_ATTRIBUTES) { gle = GetLastError(); if (gle && ioctlDebug ) { char buf[4096]; saveerrno = errno; if ( FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, gle, MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US), buf, 4096, NULL ) ) { fprintf(stderr,"pioctl GetFileAttributes(%s) failed: 0x%X\r\n\t[%s]\r\n", tbuffer,gle,buf); } errno = saveerrno; } return -1; } } else { fprintf(stderr, "GetUserNameEx(NameSamCompatible) failed: 0x%X\r\n", GetLastError()); return -1; } } if ( dwAttrib != (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM)) { fprintf(stderr, "GetFileAttributes(%s) returned: 0x%08X\r\n", tbuffer, dwAttrib); return -1; } /* tbuffer now contains the correct path; now open the file */ sharingViolation = 0; do { if (sharingViolation) Sleep(100); fh = CreateFile(tbuffer, FILE_READ_DATA | FILE_WRITE_DATA, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, NULL); sharingViolation++; } while (fh == INVALID_HANDLE_VALUE && GetLastError() == ERROR_SHARING_VIOLATION && sharingViolation < 100); fflush(stdout); if (fh == INVALID_HANDLE_VALUE) return -1; /* return fh and success code */ *handlep = fh; return 0; }
void smpd_get_account_and_password(char *account, char *password) { size_t len; #ifdef HAVE_WINDOWS_H char default_username[100] = ""; ULONG default_len = 100; #endif smpd_enter_fn(FCNAME); #ifdef HAVE_WINDOWS_H if (!GetUserNameEx(NameSamCompatible, default_username, &default_len)) { default_username[0] = '\0'; } #endif do { do { #ifdef HAVE_WINDOWS_H if (default_username[0] != '\0') { fprintf(stderr, "account (domain\\user) [%s]: ", default_username); } else { fprintf(stderr, "account (domain\\user): "); } #else fprintf(stderr, "account (domain\\user): "); #endif fflush(stderr); *account = '\0'; fgets(account, 100, stdin); while (strlen(account)) { len = strlen(account); if (account[len-1] == '\r' || account[len-1] == '\n') account[len-1] = '\0'; else break; } #ifdef HAVE_WINDOWS_H if ((strlen(account) == 0) && (default_username[0] != '\0')) { strcpy(account, default_username); } #endif } while (strlen(account) == 0); fprintf(stderr, "password: "******"MPICH2 is unable to manage jobs using credentials with a blank password.\nPlease enter another account.\n"); } } while (strlen(password) == 0); smpd_exit_fn(FCNAME); }
void XSLTReport::ProjectReport(HWND hwnd, TCHAR *pProjXML, TCHAR *pXSLTName, DataManager *pDataMan) { BOOL bResult = FALSE; short sResult = FALSE; HRESULT hr; MSXML2::IXMLDOMDocument2 *pStyleSheet=NULL; MSXML2::IXMLDOMDocument2 *pDOMObject=NULL; MSXML2::IXMLDOMDocument2 *pIXMLDOMDocument = NULL; MSXML2::IXSLTemplate *pIXSLTemplate=NULL; MSXML2::IXSLProcessor *pIXSLProcessor=NULL; VARIANT varValue; BSTR xslStr = SysAllocString(pXSLTName); try { hr = CoCreateInstance(__uuidof(MSXML2::XSLTemplate60), NULL, CLSCTX_SERVER, __uuidof(MSXML2::IXSLTemplate), (LPVOID*)(&pIXSLTemplate)); SUCCEEDED(hr) ? 0 : throw hr; if(pIXSLTemplate) { OutputDebugString(_T("xform 1\n")); hr=CoCreateInstance(__uuidof(MSXML2::FreeThreadedDOMDocument60), NULL, CLSCTX_SERVER, __uuidof(MSXML2::IXMLDOMDocument2), (LPVOID*)(&pStyleSheet)); SUCCEEDED(hr) ? 0 : throw hr; if(pStyleSheet) { OutputDebugString(_T("xform 2\n")); hr=pStyleSheet->put_async(VARIANT_FALSE); if(SUCCEEDED(hr)) { VARIANTARG varg; VariantInit(&varg); varg.vt = VT_BSTR; varg.bstrVal = xslStr; hr=pStyleSheet->load(varg, &sResult); if(sResult == VARIANT_FALSE) { OutputError(pStyleSheet); } if(SUCCEEDED(hr) && (sResult==VARIANT_TRUE)) { hr=pIXSLTemplate->putref_stylesheet(pStyleSheet); if(FAILED(hr)) { OutputError(pStyleSheet); OutErrorInfo(pStyleSheet); } if(SUCCEEDED(hr)) { OutputDebugString(_T("xform 4\n")); hr=pIXSLTemplate->createProcessor(&pIXSLProcessor); SUCCEEDED(hr) ? 0 : throw hr; if(pIXSLProcessor) { OutputDebugString(_T("xform 5\n")); hr=CoCreateInstance(__uuidof(MSXML2::FreeThreadedDOMDocument60), NULL, CLSCTX_SERVER, __uuidof(MSXML2::IXMLDOMDocument2), (LPVOID*)(&pIXMLDOMDocument)); SUCCEEDED(hr) ? 0 : throw hr; if(pIXMLDOMDocument) { hr=pIXMLDOMDocument->put_async(VARIANT_FALSE); if(SUCCEEDED(hr)) { BSTR projXML = SysAllocString(pProjXML); hr=pIXMLDOMDocument->loadXML(projXML, &sResult); SysFreeString(projXML); if(sResult == VARIANT_FALSE) { OutputError(pIXMLDOMDocument); } else if(SUCCEEDED(hr) && (sResult==VARIANT_TRUE)) { hr=pIXSLProcessor->put_input(_variant_t(pIXMLDOMDocument)); if(SUCCEEDED(hr)) { StringBuffer sbFriendlyName(512); unsigned long nameBufferLen = 512; GetUserNameEx(NameDisplay, sbFriendlyName, &nameBufferLen); sbFriendlyName.setLength(nameBufferLen); BSTR friendlyName = SysAllocString(sbFriendlyName); BSTR fnameParam = SysAllocString(_T("friendly-name")); BSTR blank = SysAllocString(_T("")); BSTR userParam = SysAllocString(_T("username")); BSTR userValue = SysAllocString(pDataMan->GetUsername()); DayManager *pDayMan = pDataMan->GetDayManagerInstance(); unsigned __int64 activeDate = pDayMan->GetActiveDate(); unsigned __int64 endDate = ModelUtils::UNITS_PER_DAY + activeDate; BSTR dayParam = SysAllocString(_T("day-of-report")); StringBuffer sb(2048); ModelUtils::toHexString(activeDate, sb); BSTR dayValue = SysAllocString(sb); BSTR startParam = SysAllocString(_T("start-of-report")); ModelUtils::toHexString(activeDate, sb); BSTR startValue = SysAllocString(sb); BSTR endParam = SysAllocString(_T("end-of-report")); ModelUtils::toHexString(endDate, sb); BSTR endValue = SysAllocString(sb); hr=pIXSLProcessor->addParameter(fnameParam, _variant_t(friendlyName), blank); hr=pIXSLProcessor->addParameter(userParam, _variant_t(userValue), blank); hr=pIXSLProcessor->addParameter(dayParam, _variant_t(dayValue), blank); hr = pIXSLProcessor->addParameter(startParam, _variant_t(startValue), blank); hr = pIXSLProcessor->addParameter(endParam, _variant_t(endValue), blank); if(SUCCEEDED(hr))bResult=TRUE; SysFreeString(blank); SysFreeString(userParam); SysFreeString(userValue); SysFreeString(dayParam); SysFreeString(dayValue); SysFreeString(startParam); SysFreeString(startValue); SysFreeString(endParam); SysFreeString(endValue); SysFreeString(friendlyName); SysFreeString(fnameParam); hr=pIXSLProcessor->transform(&sResult); if(SUCCEEDED(hr)&&(sResult==VARIANT_TRUE)) { OutputDebugString(_T("xform 11\n")); pIXSLProcessor->get_output( &varValue); /* ::MessageBox(NULL, _bstr_t(varValue), _T("Transformed Output"), MB_OK);*/ SYSTEMTIME st = ModelUtils::I64ToSystemTime(activeDate); sb.flush(); TCHAR *pReportFilename = CreateProjectName(st, pDataMan->GetUsername(), sb); HANDLE hFile = CreateFile(pReportFilename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if(hFile != INVALID_HANDLE_VALUE) { // _bstr_t html(varValue); DWORD length = _tcslen(varValue.bstrVal) * sizeof(TCHAR); DWORD written = 0; BOOL b = WriteFile(hFile, varValue.bstrVal, length, &written, NULL); CloseHandle(hFile); if(b && written == length) { ShellExecute(hwnd, _T("open"), pReportFilename, _T(""), _T("C:\\"), SW_SHOWNORMAL); } } } } } } RELEASE(pIXMLDOMDocument); } } } } } RELEASE(pStyleSheet); } RELEASE(pIXSLTemplate); } } catch(...) { OutputDebugString(_T("Caught XSLT Exception....\n")); CHECK_AND_RELEASE(pIXSLTemplate); CHECK_AND_RELEASE(pStyleSheet); CHECK_AND_RELEASE(pIXMLDOMDocument); CHECK_AND_RELEASE(pDOMObject); } SysFreeString(xslStr); }
void process_msgs(char* inbuf, FILE* outfile) { char *p = inbuf; char *msg_txt; int msg_id; int at_end_of_file = 0; int reached_end_of_msg; int year, month, day, hour, minute; char userName[256]; size_t userNameLen = sizeof(userName); const char *filehdr = "//\n" "// Values are 32 bit values layed out as follows:\n" "//\n" "// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1\n" "// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0\n" "// +---+-+-+-----------------------+-------------------------------+\n" "// |Sev|C|R| Facility | Code |\n" "// +---+-+-+-----------------------+-------------------------------+\n" "//\n" "// where\n" "//\n" "// Sev - is the severity code\n" "//\n" "// 00 - Success\n" "// 01 - Informational\n" "// 10 - Warning\n" "// 11 - Error\n" "//\n" "// C - is the Customer code flag\n" "//\n" "// R - is a reserved bit\n" "//\n" "// Facility - is the facility code\n" "//\n" "// Code - is the facility's status code\n" "//\n" "//\n" "// Define the facility codes\n" "//\n\n\n" "//\n" "// Define the severity codes\n" "//\n\n\n"; const char *msg_fmt1 = "//\n" "// MessageId: MSG_%d\n" "//\n" "// MessageText:\n" "//\n"; const char *msg_fmt2 = "//\n" "#define MSG_%-5d 0x%08XL\n\n"; struct tm *tm_p; time_t curtime; time(&curtime); tm_p = localtime(&curtime); year = tm_p->tm_year + 1900; month = tm_p->tm_mon; day = tm_p->tm_mday; hour = tm_p->tm_hour; minute = tm_p->tm_min; #ifdef _MSC_VER GetUserNameEx(NameSamCompatible, userName, &userNameLen); #else struct passwd *my_pwd; my_pwd = getpwuid(getuid()); if (my_pwd) strncpy(userName, my_pwd->pw_name, userNameLen); else strcpy(userName, "UnknownUser"); #endif /* Write the file header to the output file */ fprintf(outfile, "%s", filehdr); /* * Now write MSG_10 to the header. This contains the time the message file * header was generated and who generated it. */ fprintf(outfile, msg_fmt1, 10); fprintf(outfile, "// 00000 99999 UUUUUUUU UUUUU UUUUUUU Message file version: " "{%d-%02d-%02d %02d:%02d %s}.\n", year, month, day, hour, minute, userName); fprintf(outfile, msg_fmt2, 10, 10); /* Now process the intput file that has been read into a buffer */ while (*p != '0') { if (!isdigit(*p)) break; msg_id = atoi(p); while (*p != ' ' && *p != '\0') p++; /* Write the first part of the message header to the output file */ fprintf(outfile, msg_fmt1, msg_id); if (*p != ' ') { fprintf(stderr, "mkmsghdr: Error in input file for msg %d (1)\n", msg_id); break; } while (*p == ' ') p++; /* The "p" pointer is now pointing to the first part of the message text. * The message text can consist of multiple lines so we need to handle * a line at a time in a loop. */ reached_end_of_msg = 0; while (!reached_end_of_msg) { msg_txt = p; while (*p != '\n' && *p != '\r' && *p != '\0') p++; if (p[-1] == '\\') p[-1] = '\0'; else reached_end_of_msg = 1; if (*p == '\0') at_end_of_file = 1; *p = '\0'; fprintf(outfile, "// %s\n", msg_txt); /* Skip any extra new-lines or carriage returns */ if (!at_end_of_file) { p++; while (*p == '\n' || *p == '\r') p++; } } fprintf(outfile, msg_fmt2, msg_id, msg_id); /* Skip until a digit is seen */ while (*p != '\0' && !isdigit(*p)) p++; } }