summaryrefslogtreecommitdiffstats
path: root/rubbos/app/httpd-2.0.64/support/win32
diff options
context:
space:
mode:
Diffstat (limited to 'rubbos/app/httpd-2.0.64/support/win32')
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.c1945
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.dsp143
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.h78
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.icobin1078 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.rc97
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/apache_header.bmpbin6498 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/aprun.icobin318 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/apstop.icobin318 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/srun.bmpbin246 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/sstop.bmpbin246 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/wintty.c375
-rw-r--r--rubbos/app/httpd-2.0.64/support/win32/wintty.dsp123
12 files changed, 0 insertions, 2761 deletions
diff --git a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.c b/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.c
deleted file mode 100644
index 6d97fb7b..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.c
+++ /dev/null
@@ -1,1945 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* ====================================================================
- * ApacheMonitor.c Simple program to manage and monitor Apache services.
- *
- * Contributed by Mladen Turk <mturk mappingsoft.com>
- *
- * 05 Aug 2001
- * ====================================================================
- */
-
-#define _WIN32_WINNT 0x0500
-#ifndef STRICT
-#define STRICT
-#endif
-#ifndef OEMRESOURCE
-#define OEMRESOURCE
-#endif
-
-#if defined(_MSC_VER) && _MSC_VER >= 1400
-#define _CRT_SECURE_NO_DEPRECATE
-#endif
-
-#include <windows.h>
-#include <windowsx.h>
-#include <commctrl.h>
-#include <objbase.h>
-#include <shlobj.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <WtsApi32.h>
-#include <tchar.h>
-#include "ApacheMonitor.h"
-
-#ifndef AM_STRINGIFY
-/** Properly quote a value as a string in the C preprocessor */
-#define AM_STRINGIFY(n) AM_STRINGIFY_HELPER(n)
-/** Helper macro for AM_STRINGIFY */
-#define AM_STRINGIFY_HELPER(n) #n
-#endif
-
-#define OS_VERSION_WIN9X 1
-#define OS_VERSION_WINNT 2
-#define OS_VERSION_WIN2K 3
-
-/* Should be enough */
-#define MAX_APACHE_SERVICES 128
-#define MAX_APACHE_COMPUTERS 32
-
-#define WM_TRAYMESSAGE (WM_APP+1)
-#define WM_UPDATEMESSAGE (WM_USER+1)
-#define WM_MANAGEMESSAGE (WM_USER+2)
-#define WM_TIMER_REFRESH 10
-#define WM_TIMER_RESCAN 11
-#define SERVICE_APACHE_RESTART 128
-#define XBITMAP 16
-#define YBITMAP 16
-#define MAX_LOADSTRING 100
-#define REFRESH_TIME 2000 /* service refresh time (ms) */
-#define RESCAN_TIME 20000 /* registry rescan time (ms) */
-
-typedef struct _st_APACHE_SERVICE
-{
- LPTSTR szServiceName;
- LPTSTR szDisplayName;
- LPTSTR szDescription;
- LPTSTR szImagePath;
- LPTSTR szComputerName;
- DWORD dwPid;
-} ST_APACHE_SERVICE;
-
-typedef struct _st_MONITORED_COMPUTERS
-{
- LPTSTR szComputerName;
- HKEY hRegistry;
-} ST_MONITORED_COMP;
-
-/* Global variables */
-HINSTANCE g_hInstance = NULL;
-TCHAR *g_szTitle; /* The title bar text */
-TCHAR *g_szWindowClass; /* Window Class Name */
-HICON g_icoStop;
-HICON g_icoRun;
-UINT g_bUiTaskbarCreated;
-DWORD g_dwOSVersion;
-BOOL g_bDlgServiceOn = FALSE;
-BOOL g_bConsoleRun = FALSE;
-ST_APACHE_SERVICE g_stServices[MAX_APACHE_SERVICES];
-ST_MONITORED_COMP g_stComputers[MAX_APACHE_COMPUTERS];
-
-HBITMAP g_hBmpStart, g_hBmpStop;
-HBITMAP g_hBmpPicture, g_hBmpOld;
-BOOL g_bRescanServices;
-HWND g_hwndServiceDlg;
-HWND g_hwndMain;
-HWND g_hwndStdoutList;
-HWND g_hwndConnectDlg;
-HCURSOR g_hCursorHourglass;
-HCURSOR g_hCursorArrow;
-
-HANDLE g_hpipeOutRead;
-HANDLE g_hpipeOutWrite;
-HANDLE g_hpipeInRead;
-HANDLE g_hpipeInWrite;
-HANDLE g_hpipeStdError;
-LANGID g_LangID;
-PROCESS_INFORMATION g_lpRedirectProc;
-CRITICAL_SECTION g_stcSection;
-LPTSTR g_szLocalHost;
-
-/* locale language support */
-static TCHAR *g_lpMsg[IDS_MSG_LAST - IDS_MSG_FIRST + 1];
-
-
-void am_ClearServicesSt()
-{
- int i;
- for (i = 0; i < MAX_APACHE_SERVICES; i++)
- {
- if (g_stServices[i].szServiceName) {
- free(g_stServices[i].szServiceName);
- }
- if (g_stServices[i].szDisplayName) {
- free(g_stServices[i].szDisplayName);
- }
- if (g_stServices[i].szDescription) {
- free(g_stServices[i].szDescription);
- }
- if (g_stServices[i].szImagePath) {
- free(g_stServices[i].szImagePath);
- }
- if (g_stServices[i].szComputerName) {
- free(g_stServices[i].szComputerName);
- }
-
- }
- memset(g_stServices, 0, sizeof(ST_APACHE_SERVICE) * MAX_APACHE_SERVICES);
-
-}
-
-
-void am_ClearComputersSt()
-{
- int i;
- for (i = 0; i < MAX_APACHE_COMPUTERS; i++) {
- if (g_stComputers[i].szComputerName) {
- free(g_stComputers[i].szComputerName);
- RegCloseKey(g_stComputers[i].hRegistry);
- }
- }
- memset(g_stComputers, 0, sizeof(ST_MONITORED_COMP) * MAX_APACHE_COMPUTERS);
-
-}
-
-
-BOOL am_IsComputerConnected(LPTSTR szComputerName)
-{
- int i = 0;
- while (g_stComputers[i].szComputerName != NULL) {
- if (_tcscmp(g_stComputers[i].szComputerName, szComputerName) == 0) {
- return TRUE;
- }
- ++i;
- }
- return FALSE;
-}
-
-
-void am_DisconnectComputer(LPTSTR szComputerName)
-{
- int i = 0, j;
- while (g_stComputers[i].szComputerName != NULL) {
- if (_tcscmp(g_stComputers[i].szComputerName, szComputerName) == 0) {
- break;
- }
- ++i;
- }
- if (g_stComputers[i].szComputerName != NULL) {
- free(g_stComputers[i].szComputerName);
- RegCloseKey(g_stComputers[i].hRegistry);
- for (j = i; j < MAX_APACHE_COMPUTERS - 1; j++) {
- g_stComputers[j].szComputerName= g_stComputers[j+1].szComputerName;
- g_stComputers[j].hRegistry = g_stComputers[j+1].hRegistry;
- }
- g_stComputers[j].szComputerName = NULL;
- g_stComputers[j].hRegistry = NULL;
- }
-}
-
-
-void ErrorMessage(LPCTSTR szError, BOOL bFatal)
-{
- LPVOID lpMsgBuf = NULL;
- if (szError) {
- MessageBox(NULL, szError, g_lpMsg[IDS_MSG_ERROR - IDS_MSG_FIRST],
- MB_OK | (bFatal ? MB_ICONERROR : MB_ICONEXCLAMATION));
- }
- else {
- FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, GetLastError(), g_LangID,
- (LPTSTR) &lpMsgBuf, 0, NULL);
- MessageBox(NULL, (LPCTSTR)lpMsgBuf,
- g_lpMsg[IDS_MSG_ERROR - IDS_MSG_FIRST],
- MB_OK | (bFatal ? MB_ICONERROR : MB_ICONEXCLAMATION));
- LocalFree(lpMsgBuf);
- }
- if (bFatal) {
- PostQuitMessage(0);
- }
-}
-
-
-int am_RespawnAsUserAdmin(HWND hwnd, DWORD op, LPCTSTR szService,
- LPCTSTR szComputerName)
-{
- TCHAR args[MAX_PATH + MAX_COMPUTERNAME_LENGTH + 12];
-
- if (g_dwOSVersion < OS_VERSION_WIN2K) {
- ErrorMessage(g_lpMsg[IDS_MSG_SRVFAILED - IDS_MSG_FIRST], FALSE);
- return 0;
- }
-
- _sntprintf(args, sizeof(args) / sizeof(TCHAR),
- _T("%d \"%s\" \"%s\""), op, szService,
- szComputerName ? szComputerName : _T(""));
- if (!ShellExecute(hwnd, _T("runas"), __targv[0], args, NULL, SW_NORMAL)) {
- ErrorMessage(g_lpMsg[IDS_MSG_SRVFAILED - IDS_MSG_FIRST],
- FALSE);
- return 0;
- }
-
- return 1;
-}
-
-
-BOOL am_ConnectComputer(LPTSTR szComputerName)
-{
- int i = 0;
- HKEY hKeyRemote;
- TCHAR szTmp[MAX_PATH];
-
- while (g_stComputers[i].szComputerName != NULL) {
- if (_tcscmp(g_stComputers[i].szComputerName, szComputerName) == 0) {
- return FALSE;
- }
- ++i;
- }
- if (i > MAX_APACHE_COMPUTERS - 1) {
- return FALSE;
- }
- if (RegConnectRegistry(szComputerName, HKEY_LOCAL_MACHINE, &hKeyRemote)
- != ERROR_SUCCESS) {
- _sntprintf(szTmp, sizeof(szTmp) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_ECONNECT - IDS_MSG_FIRST],
- szComputerName);
- ErrorMessage(szTmp, FALSE);
- return FALSE;
- }
- else {
- g_stComputers[i].szComputerName = _tcsdup(szComputerName);
- g_stComputers[i].hRegistry = hKeyRemote;
- return TRUE;
- }
-}
-
-
-LPTSTR GetStringRes(int id)
-{
- static TCHAR buffer[MAX_PATH];
-
- buffer[0] = 0;
- LoadString(GetModuleHandle(NULL), id, buffer, MAX_PATH);
- return buffer;
-}
-
-
-BOOL GetSystemOSVersion(LPDWORD dwVersion)
-{
- OSVERSIONINFO osvi;
- /*
- Try calling GetVersionEx using the OSVERSIONINFOEX structure.
- If that fails, try using the OSVERSIONINFO structure.
- */
- memset(&osvi, 0, sizeof(OSVERSIONINFO));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-
- if (!GetVersionEx(&osvi)) {
- return FALSE;
- }
-
- switch (osvi.dwPlatformId)
- {
- case VER_PLATFORM_WIN32_NT:
- if (osvi.dwMajorVersion >= 5)
- *dwVersion = OS_VERSION_WIN2K;
- else
- *dwVersion = OS_VERSION_WINNT;
- break;
-
- case VER_PLATFORM_WIN32_WINDOWS:
- *dwVersion = OS_VERSION_WIN9X;
- break;
-
- case VER_PLATFORM_WIN32s:
- default:
- *dwVersion = 0;
- return FALSE;
- }
- return TRUE;
-}
-
-
-static VOID ShowNotifyIcon(HWND hWnd, DWORD dwMessage)
-{
- NOTIFYICONDATA nid;
- int i = 0, n = 0;
-
- memset(&nid, 0, sizeof(nid));
- nid.cbSize = sizeof(NOTIFYICONDATA);
- nid.hWnd = hWnd;
- nid.uID = 0xFF;
- nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
- nid.uCallbackMessage = WM_TRAYMESSAGE;
-
- while (g_stServices[i].szServiceName != NULL)
- {
- if (g_stServices[i].dwPid != 0) {
- ++n;
- }
- ++i;
- }
- if (dwMessage != NIM_DELETE)
- {
- if (n) {
- nid.hIcon = g_icoRun;
- }
- else {
- nid.hIcon = g_icoStop;
- }
- }
- else {
- nid.hIcon = NULL;
- }
- if (n == i && n > 0) {
- _tcscpy(nid.szTip, g_lpMsg[IDS_MSG_RUNNINGALL - IDS_MSG_FIRST]);
- }
- else if (n) {
- _sntprintf(nid.szTip, sizeof(nid.szTip) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_RUNNING - IDS_MSG_FIRST], n, i);
- }
- else if (i) {
- _sntprintf(nid.szTip, sizeof(nid.szTip) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_RUNNINGNONE - IDS_MSG_FIRST], i);
- }
- else {
- _tcscpy(nid.szTip, g_lpMsg[IDS_MSG_NOSERVICES - IDS_MSG_FIRST]);
- }
- Shell_NotifyIcon(dwMessage, &nid);
-}
-
-
-void appendMenuItem(HMENU hMenu, UINT uMenuId, LPTSTR szName,
- BOOL fDefault, BOOL fEnabled)
-{
- MENUITEMINFO mii;
-
- memset(&mii, 0, sizeof(MENUITEMINFO));
- mii.cbSize = sizeof(MENUITEMINFO);
- mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
- if (_tcslen(szName))
- {
- mii.fType = MFT_STRING;
- mii.wID = uMenuId;
- if (fDefault) {
- mii.fState = MFS_DEFAULT;
- }
- if (!fEnabled) {
- mii.fState |= MFS_DISABLED;
- }
- mii.dwTypeData = szName;
- }
- else {
- mii.fType = MFT_SEPARATOR;
- }
- InsertMenuItem(hMenu, uMenuId, FALSE, &mii);
-}
-
-
-void appendServiceMenu(HMENU hMenu, UINT uMenuId,
- LPTSTR szServiceName, BOOL fRunning)
-{
- MENUITEMINFO mii;
- HMENU smh;
-
- smh = CreatePopupMenu();
-
- appendMenuItem(smh, IDM_SM_START + uMenuId,
- g_lpMsg[IDS_MSG_SSTART - IDS_MSG_FIRST], FALSE, !fRunning);
- appendMenuItem(smh, IDM_SM_STOP + uMenuId,
- g_lpMsg[IDS_MSG_SSTOP - IDS_MSG_FIRST], FALSE, fRunning);
- appendMenuItem(smh, IDM_SM_RESTART + uMenuId,
- g_lpMsg[IDS_MSG_SRESTART - IDS_MSG_FIRST], FALSE, fRunning);
-
- memset(&mii, 0, sizeof(MENUITEMINFO));
- mii.cbSize = sizeof(MENUITEMINFO);
- mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE | MIIM_SUBMENU
- | MIIM_CHECKMARKS;
- mii.fType = MFT_STRING;
- mii.wID = uMenuId;
- mii.hbmpChecked = g_hBmpStart;
- mii.hbmpUnchecked = g_hBmpStop;
- mii.dwTypeData = szServiceName;
- mii.hSubMenu = smh;
- mii.fState = fRunning ? MFS_CHECKED : MFS_UNCHECKED;
- InsertMenuItem(hMenu, IDM_SM_SERVICE + uMenuId, FALSE, &mii);
-}
-
-
-void ShowTryPopupMenu(HWND hWnd)
-{
- /* create popup menu */
- HMENU hMenu = CreatePopupMenu();
- POINT pt;
-
- if (hMenu)
- {
- appendMenuItem(hMenu, IDM_RESTORE,
- g_lpMsg[IDS_MSG_MNUSHOW - IDS_MSG_FIRST],
- TRUE, TRUE);
- if (g_dwOSVersion >= OS_VERSION_WINNT) {
- appendMenuItem(hMenu, IDC_SMANAGER,
- g_lpMsg[IDS_MSG_MNUSERVICES - IDS_MSG_FIRST],
- FALSE, TRUE);
- }
- appendMenuItem(hMenu, 0, _T(""), FALSE, TRUE);
- appendMenuItem(hMenu, IDM_EXIT,
- g_lpMsg[IDS_MSG_MNUEXIT - IDS_MSG_FIRST],
- FALSE, TRUE);
-
- if (!SetForegroundWindow(hWnd)) {
- SetForegroundWindow(NULL);
- }
- GetCursorPos(&pt);
- TrackPopupMenu(hMenu, TPM_LEFTALIGN|TPM_RIGHTBUTTON,
- pt.x, pt.y, 0, hWnd, NULL);
- DestroyMenu(hMenu);
- }
-}
-
-
-void ShowTryServicesMenu(HWND hWnd)
-{
- /* create services list popup menu and submenus */
- HMENU hMenu = CreatePopupMenu();
- POINT pt;
- int i = 0;
-
- if (hMenu)
- {
- while (g_stServices[i].szServiceName != NULL)
- {
- appendServiceMenu(hMenu, i, g_stServices[i].szDisplayName,
- g_stServices[i].dwPid != 0);
- ++i;
- }
- if (i)
- {
- if (!SetForegroundWindow(hWnd)) {
- SetForegroundWindow(NULL);
- }
- GetCursorPos(&pt);
- TrackPopupMenu(hMenu, TPM_LEFTALIGN|TPM_RIGHTBUTTON,
- pt.x, pt.y, 0, hWnd, NULL);
- DestroyMenu(hMenu);
- }
- }
-}
-
-
-BOOL CenterWindow(HWND hwndChild)
-{
- RECT rChild, rWorkArea;
- int wChild, hChild;
- int xNew, yNew;
- BOOL bResult;
-
- /* Get the Height and Width of the child window */
- GetWindowRect(hwndChild, &rChild);
- wChild = rChild.right - rChild.left;
- hChild = rChild.bottom - rChild.top;
-
- /* Get the limits of the 'workarea' */
- bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT),
- &rWorkArea, 0);
- if (!bResult) {
- rWorkArea.left = rWorkArea.top = 0;
- rWorkArea.right = GetSystemMetrics(SM_CXSCREEN);
- rWorkArea.bottom = GetSystemMetrics(SM_CYSCREEN);
- }
-
- /* Calculate new X and Y position*/
- xNew = (rWorkArea.right - wChild) / 2;
- yNew = (rWorkArea.bottom - hChild) / 2;
- return SetWindowPos(hwndChild, HWND_TOP, xNew, yNew, 0, 0,
- SWP_NOSIZE | SWP_SHOWWINDOW);
-}
-
-
-static void addListBoxItem(HWND hDlg, LPTSTR lpStr, HBITMAP hBmp)
-{
- LRESULT nItem;
-
- nItem = SendMessage(hDlg, LB_ADDSTRING, 0, (LPARAM)lpStr);
- SendMessage(hDlg, LB_SETITEMDATA, nItem, (LPARAM)hBmp);
-}
-
-
-static void addListBoxString(HWND hListBox, LPTSTR lpStr)
-{
- static int nItems = 0;
- if (!g_bDlgServiceOn) {
- return;
- }
- ++nItems;
- if (nItems > MAX_LOADSTRING)
- {
- SendMessage(hListBox, LB_RESETCONTENT, 0, 0);
- nItems = 1;
- }
- ListBox_SetCurSel(hListBox,
- ListBox_AddString(hListBox, lpStr));
-
-}
-
-
-#ifndef UNICODE
-#define addListBoxStringA addListBoxString
-#else
-static void addListBoxStringA(HWND hListBox, LPSTR lpStr)
-{
- static int nItems = 0;
- TCHAR WStr[16384];
-
- if (!g_bDlgServiceOn) {
- return;
- }
- if (!MultiByteToWideChar(CP_ACP, 0, lpStr, (int)strlen(lpStr) + 1,
- WStr, (int) (sizeof(WStr) / sizeof(TCHAR))))
- return;
- ++nItems;
- if (nItems > MAX_LOADSTRING)
- {
- SendMessage(hListBox, LB_RESETCONTENT, 0, 0);
- nItems = 1;
- }
- ListBox_SetCurSel(hListBox,
- ListBox_AddString(hListBox, WStr));
-}
-#endif
-
-
-static DWORD WINAPI ConsoleOutputThread(LPVOID lpThreadParameter)
-{
- static BYTE lpBuffer[MAX_PATH+1];
- int nPtr = 0;
- BYTE ch;
- DWORD dwReaded;
-
- while (ReadFile(g_hpipeOutRead, &ch, 1, &dwReaded, NULL) == TRUE)
- {
- if (dwReaded > 0)
- {
- if (ch == '\n' || nPtr >= MAX_PATH)
- {
- lpBuffer[nPtr] = '\0';
- addListBoxStringA(g_hwndStdoutList, lpBuffer);
- nPtr = 0;
- }
- else if (ch == '\t' && nPtr < (MAX_PATH - 4))
- {
- int i;
- for (i = 0; i < 4; ++i) {
- lpBuffer[nPtr++] = ' ';
- }
- }
- else if (ch != '\r') {
- lpBuffer[nPtr++] = ch;
- }
- }
- }
- CloseHandle(g_hpipeInWrite);
- CloseHandle(g_hpipeOutRead);
- CloseHandle(g_hpipeStdError);
- return 0;
-}
-
-
-DWORD WINAPI ConsoleWaitingThread(LPVOID lpThreadParameter)
-{
- WaitForSingleObject(g_lpRedirectProc.hThread, INFINITE);
- CloseHandle(g_lpRedirectProc.hThread);
- MessageBeep(100);
- g_bConsoleRun = FALSE;
- SetCursor(g_hCursorArrow);
- return 0;
-}
-
-
-BOOL RunRedirectedConsole(LPTSTR szCmdLine)
-{
- DWORD dwThreadId;
- HANDLE hProc;
- STARTUPINFO stInfo;
- BOOL bResult;
-
- memset(&stInfo, 0, sizeof(stInfo));
- stInfo.cb = sizeof(stInfo);
- stInfo.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
- stInfo.wShowWindow = SW_HIDE;
-
- hProc = GetCurrentProcess();
-
- if (!CreatePipe(&g_hpipeInRead, &g_hpipeInWrite, NULL, MAX_PATH)) {
- ErrorMessage(NULL, TRUE);
- }
- if (!CreatePipe(&g_hpipeOutRead, &g_hpipeOutWrite, NULL, MAX_PATH*8)) {
- ErrorMessage(NULL, TRUE);
- }
- DuplicateHandle(hProc, g_hpipeInRead, hProc, &g_hpipeInRead, 0, TRUE,
- DUPLICATE_CLOSE_SOURCE|DUPLICATE_SAME_ACCESS);
- DuplicateHandle(hProc, g_hpipeOutWrite, hProc, &g_hpipeOutWrite, 0, TRUE,
- DUPLICATE_CLOSE_SOURCE|DUPLICATE_SAME_ACCESS);
- DuplicateHandle(hProc, g_hpipeOutWrite, hProc, &g_hpipeStdError, 0, TRUE,
- DUPLICATE_SAME_ACCESS);
- if (!g_hpipeInRead && !g_hpipeOutWrite && !g_hpipeStdError) {
- ErrorMessage(NULL, TRUE);
- }
- stInfo.hStdInput = g_hpipeInRead;
- stInfo.hStdOutput = g_hpipeOutWrite;
- stInfo.hStdError = g_hpipeStdError;
-
- bResult = CreateProcess(NULL,
- szCmdLine,
- NULL,
- NULL,
- TRUE,
- CREATE_SUSPENDED,
- NULL,
- NULL,
- &stInfo,
- &g_lpRedirectProc);
-
-
- CloseHandle(g_hpipeInRead);
- CloseHandle(g_hpipeOutWrite);
- CloseHandle(g_hpipeStdError);
-
- if (!bResult)
- {
- CloseHandle(g_hpipeInWrite);
- CloseHandle(g_hpipeOutRead);
- CloseHandle(g_hpipeStdError);
- return FALSE;
- }
-
- CloseHandle(CreateThread(NULL, 0, ConsoleOutputThread,
- 0, 0, &dwThreadId));
- ResumeThread(g_lpRedirectProc.hThread);
- CloseHandle(CreateThread(NULL, 0, ConsoleWaitingThread,
- 0, 0, &dwThreadId));
-
- return TRUE;
-}
-
-
-BOOL RunAndForgetConsole(LPTSTR szCmdLine, BOOL bRedirectConsole)
-{
- STARTUPINFO stInfo;
- PROCESS_INFORMATION prInfo;
- BOOL bResult;
-
- if (bRedirectConsole) {
- return RunRedirectedConsole(szCmdLine);
- }
-
- memset(&stInfo, 0, sizeof(stInfo));
- stInfo.cb = sizeof(stInfo);
- stInfo.dwFlags = STARTF_USESHOWWINDOW;
- stInfo.wShowWindow = SW_HIDE;
-
- bResult = CreateProcess(NULL,
- szCmdLine,
- NULL,
- NULL,
- TRUE,
- CREATE_NEW_CONSOLE,
- NULL,
- NULL,
- &stInfo,
- &prInfo);
-
- if (!bResult) {
- return FALSE;
- }
- if (g_dwOSVersion == OS_VERSION_WIN9X) {
- /* give some time to rescan the status */
- Sleep(2000);
- }
- CloseHandle(prInfo.hThread);
- CloseHandle(prInfo.hProcess);
- return TRUE;
-}
-
-
-BOOL ApacheManageService(LPCTSTR szServiceName, LPCTSTR szImagePath,
- LPTSTR szComputerName, DWORD dwCommand)
-{
- TCHAR szBuf[MAX_PATH];
- TCHAR szMsg[MAX_PATH];
- LPTSTR sPos;
- BOOL retValue;
- BOOL serviceFlag = TRUE;
- SC_HANDLE schService;
- SC_HANDLE schSCManager;
- SERVICE_STATUS schSStatus;
- int ticks;
-
- if (g_dwOSVersion == OS_VERSION_WIN9X)
- {
- sPos = _tcsstr(szImagePath, _T("-k start"));
- if (sPos)
- {
- _tcsncpy(szBuf, szImagePath, (int)(sPos - szImagePath));
- switch (dwCommand)
- {
- case SERVICE_CONTROL_STOP:
- _tcscat(szBuf, _T(" -k shutdown -n "));
- break;
-
- case SERVICE_CONTROL_CONTINUE:
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVSTART - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
- _tcscat(szBuf, _T(" -k start -n "));
- serviceFlag = FALSE;
- break;
-
- case SERVICE_APACHE_RESTART:
- _tcscat(szBuf, _T(" -k restart -n "));
- break;
-
- default:
- return FALSE;
- }
- _tcscat(szBuf, szServiceName);
- }
- else {
- return FALSE;
- }
- g_bConsoleRun = TRUE;
- SetCursor(g_hCursorHourglass);
- if (!RunAndForgetConsole(szBuf, serviceFlag))
- {
- ErrorMessage(NULL, FALSE);
- g_bConsoleRun = FALSE;
- SetCursor(g_hCursorArrow);
- return FALSE;
- }
- else if (!serviceFlag)
- {
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVSTARTED - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
- g_bConsoleRun = FALSE;
- SetCursor(g_hCursorArrow);
- return TRUE;
- }
- }
- else
- {
- schSCManager = OpenSCManager(szComputerName, NULL,
- SC_MANAGER_CONNECT);
- if (!schSCManager) {
- ErrorMessage(g_lpMsg[IDS_MSG_SRVFAILED - IDS_MSG_FIRST],
- FALSE);
- return FALSE;
- }
-
- schService = OpenService(schSCManager, szServiceName,
- SERVICE_QUERY_STATUS | SERVICE_START |
- SERVICE_STOP | SERVICE_USER_DEFINED_CONTROL);
- if (schService == NULL)
- {
- /* Avoid recursion of ImagePath NULL (from this Respawn) */
- if (szImagePath) {
- am_RespawnAsUserAdmin(g_hwndMain, dwCommand,
- szServiceName, szComputerName);
- }
- else {
- ErrorMessage(g_lpMsg[IDS_MSG_SRVFAILED - IDS_MSG_FIRST],
- FALSE);
- }
- CloseServiceHandle(schSCManager);
- return FALSE;
- }
- else
- {
- retValue = FALSE;
- g_bConsoleRun = TRUE;
- SetCursor(g_hCursorHourglass);
- switch (dwCommand)
- {
- case SERVICE_CONTROL_STOP:
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVSTOP - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
- if (ControlService(schService, SERVICE_CONTROL_STOP,
- &schSStatus)) {
- Sleep(1000);
- while (QueryServiceStatus(schService, &schSStatus))
- {
- if (schSStatus.dwCurrentState == SERVICE_STOP_PENDING)
- {
- Sleep(1000);
- }
- else {
- break;
- }
- }
- }
- if (QueryServiceStatus(schService, &schSStatus))
- {
- if (schSStatus.dwCurrentState == SERVICE_STOPPED)
- {
- retValue = TRUE;
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVSTOPPED - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
- }
- }
- break;
-
- case SERVICE_CONTROL_CONTINUE:
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVSTART - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
-
- if (StartService(schService, 0, NULL))
- {
- Sleep(1000);
- while (QueryServiceStatus(schService, &schSStatus))
- {
- if (schSStatus.dwCurrentState == SERVICE_START_PENDING)
- {
- Sleep(1000);
- }
- else {
- break;
- }
- }
- }
- if (QueryServiceStatus(schService, &schSStatus))
- {
- if (schSStatus.dwCurrentState == SERVICE_RUNNING)
- {
- retValue = TRUE;
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVSTARTED - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
- }
- }
- break;
-
- case SERVICE_APACHE_RESTART:
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVRESTART - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
- if (ControlService(schService, SERVICE_APACHE_RESTART,
- &schSStatus))
- {
- ticks = 60;
- while (schSStatus.dwCurrentState == SERVICE_START_PENDING)
- {
- Sleep(1000);
- if (!QueryServiceStatus(schService, &schSStatus))
- {
- CloseServiceHandle(schService);
- CloseServiceHandle(schSCManager);
- g_bConsoleRun = FALSE;
- SetCursor(g_hCursorArrow);
- return FALSE;
- }
- if (!--ticks) {
- break;
- }
- }
- }
- if (schSStatus.dwCurrentState == SERVICE_RUNNING)
- {
- retValue = TRUE;
- _sntprintf(szMsg, sizeof(szMsg) / sizeof(TCHAR),
- g_lpMsg[IDS_MSG_SRVRESTARTED - IDS_MSG_FIRST],
- szServiceName);
- addListBoxString(g_hwndStdoutList, szMsg);
- }
- break;
- }
- CloseServiceHandle(schService);
- CloseServiceHandle(schSCManager);
- if (!retValue) {
- ErrorMessage(g_lpMsg[IDS_MSG_SRVFAILED - IDS_MSG_FIRST],
- FALSE);
- }
- g_bConsoleRun = FALSE;
- SetCursor(g_hCursorArrow);
- return retValue;
- }
- return FALSE;
- }
-
- return FALSE;
-}
-
-
-BOOL IsServiceRunning(LPCTSTR szServiceName, LPCTSTR szComputerName,
- LPDWORD lpdwPid)
-{
- DWORD dwPid;
- HWND hWnd;
- SC_HANDLE schService;
- SC_HANDLE schSCManager;
- SERVICE_STATUS schSStatus;
-
- if (g_dwOSVersion == OS_VERSION_WIN9X)
- {
- hWnd = FindWindow(_T("ApacheWin95ServiceMonitor"), szServiceName);
- if (hWnd && GetWindowThreadProcessId(hWnd, &dwPid))
- {
- *lpdwPid = 1;
- return TRUE;
- }
- else {
- return FALSE;
- }
- }
- else
- {
- dwPid = 0;
- schSCManager = OpenSCManager(szComputerName, NULL,
- SC_MANAGER_CONNECT);
- if (!schSCManager) {
- return FALSE;
- }
-
- schService = OpenService(schSCManager, szServiceName,
- SERVICE_QUERY_STATUS);
- if (schService != NULL)
- {
- if (QueryServiceStatus(schService, &schSStatus))
- {
- dwPid = schSStatus.dwCurrentState;
- if (lpdwPid) {
- *lpdwPid = 1;
- }
- }
- CloseServiceHandle(schService);
- CloseServiceHandle(schSCManager);
- return dwPid == SERVICE_RUNNING ? TRUE : FALSE;
- }
- else {
- g_bRescanServices = TRUE;
- }
- CloseServiceHandle(schSCManager);
- return FALSE;
-
- }
-
- return FALSE;
-}
-
-
-BOOL FindRunningServices(void)
-{
- int i = 0;
- DWORD dwPid;
- BOOL rv = FALSE;
- while (g_stServices[i].szServiceName != NULL)
- {
- if (!IsServiceRunning(g_stServices[i].szServiceName,
- g_stServices[i].szComputerName, &dwPid)) {
- dwPid = 0;
- }
- if (g_stServices[i].dwPid != dwPid) {
- rv = TRUE;
- }
- g_stServices[i].dwPid = dwPid;
- ++i;
- }
- return rv;
-}
-
-
-BOOL GetApacheServicesStatus()
-{
- TCHAR szKey[MAX_PATH];
- TCHAR achKey[MAX_PATH];
- TCHAR szImagePath[MAX_PATH];
- TCHAR szBuf[MAX_PATH];
- TCHAR szTmp[MAX_PATH];
- HKEY hKey, hSubKey, hKeyRemote;
- DWORD retCode, rv, dwKeyType;
- DWORD dwBufLen = MAX_PATH;
- int i, stPos = 0;
- int computers = 0;
-
- g_bRescanServices = FALSE;
-
- am_ClearServicesSt();
- while (g_stComputers[computers].szComputerName != NULL) {
- hKeyRemote = g_stComputers[computers].hRegistry;
- retCode = RegOpenKeyEx(hKeyRemote,
- _T("System\\CurrentControlSet\\Services\\"),
- 0, KEY_READ, &hKey);
- if (retCode != ERROR_SUCCESS)
- {
- ErrorMessage(NULL, FALSE);
- return FALSE;
- }
- for (i = 0, retCode = ERROR_SUCCESS; retCode == ERROR_SUCCESS; i++)
- {
- retCode = RegEnumKey(hKey, i, achKey, MAX_PATH);
- if (retCode == ERROR_SUCCESS)
- {
- _tcscpy(szKey, _T("System\\CurrentControlSet\\Services\\"));
- _tcscat(szKey, achKey);
-
- if (RegOpenKeyEx(hKeyRemote, szKey, 0,
- KEY_QUERY_VALUE, &hSubKey) == ERROR_SUCCESS)
- {
- dwBufLen = MAX_PATH;
- rv = RegQueryValueEx(hSubKey, _T("ImagePath"), NULL,
- &dwKeyType, (LPBYTE)szImagePath, &dwBufLen);
-
- if (rv == ERROR_SUCCESS
- && (dwKeyType == REG_SZ
- || dwKeyType == REG_EXPAND_SZ)
- && dwBufLen)
- {
- _tcscpy(szBuf, szImagePath);
- CharLower(szBuf);
- /* the service name could be httpd*.exe or Apache*.exe */
- if (((_tcsstr(szBuf, _T("\\apache")) != NULL)
- || (_tcsstr(szBuf, _T("\\httpd")) != NULL))
- && _tcsstr(szBuf, _T(".exe"))
- && (_tcsstr(szBuf, _T("--ntservice")) != NULL
- || _tcsstr(szBuf, _T("-k ")) != NULL))
- {
- g_stServices[stPos].szServiceName = _tcsdup(achKey);
- g_stServices[stPos].szImagePath = _tcsdup(szImagePath);
- g_stServices[stPos].szComputerName =
- _tcsdup(g_stComputers[computers].szComputerName);
- dwBufLen = MAX_PATH;
- if (RegQueryValueEx(hSubKey, _T("Description"), NULL,
- &dwKeyType, (LPBYTE)szBuf, &dwBufLen)
- == ERROR_SUCCESS) {
- g_stServices[stPos].szDescription = _tcsdup(szBuf);
- }
- dwBufLen = MAX_PATH;
- if (RegQueryValueEx(hSubKey, _T("DisplayName"), NULL,
- &dwKeyType, (LPBYTE)szBuf, &dwBufLen)
- == ERROR_SUCCESS)
- {
- if (_tcscmp(g_stComputers[computers]
- .szComputerName, g_szLocalHost) != 0)
- {
- _tcscpy(szTmp, g_stComputers[computers]
- .szComputerName + 2);
- _tcscat(szTmp, _T("@"));
- _tcscat(szTmp, szBuf);
- }
- else {
- _tcscpy(szTmp, szBuf);
- }
- g_stServices[stPos].szDisplayName = _tcsdup(szTmp);
-
- }
- ++stPos;
- if (stPos >= MAX_APACHE_SERVICES) {
- retCode = !ERROR_SUCCESS;
- }
- }
- }
- RegCloseKey(hSubKey);
- }
- }
- }
- ++computers;
- RegCloseKey(hKey);
- }
- FindRunningServices();
- return TRUE;
-}
-
-
-LRESULT CALLBACK ConnectDlgProc(HWND hDlg, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- TCHAR szCmp[MAX_COMPUTERNAME_LENGTH+4];
- switch (message)
- {
- case WM_INITDIALOG:
- ShowWindow(hDlg, SW_HIDE);
- g_hwndConnectDlg = hDlg;
- CenterWindow(hDlg);
- ShowWindow(hDlg, SW_SHOW);
- SetFocus(GetDlgItem(hDlg, IDC_COMPUTER));
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDOK:
- memset(szCmp, 0, sizeof(szCmp));
- _tcscpy(szCmp, _T("\\\\"));
- SendMessage(GetDlgItem(hDlg, IDC_COMPUTER), WM_GETTEXT,
- (WPARAM) MAX_COMPUTERNAME_LENGTH,
- (LPARAM) szCmp+2);
-
- _tcsupr(szCmp);
- if (_tcslen(szCmp) < 3) {
- EndDialog(hDlg, TRUE);
- return TRUE;
- }
- am_ConnectComputer(szCmp);
- SendMessage(g_hwndMain, WM_TIMER, WM_TIMER_RESCAN, 0);
-
- case IDCANCEL:
- EndDialog(hDlg, TRUE);
- return TRUE;
-
- case IDC_LBROWSE:
- {
- BROWSEINFO bi;
- ITEMIDLIST *il;
- LPMALLOC pMalloc;
- memset(&bi, 0, sizeof(BROWSEINFO));
- SHGetSpecialFolderLocation(hDlg, CSIDL_NETWORK, &il);
-
- bi.lpszTitle = _T("ApacheMonitor :\nSelect Network Computer!");
- bi.pszDisplayName = szCmp;
- bi.hwndOwner = hDlg;
- bi.ulFlags = BIF_BROWSEFORCOMPUTER;
- bi.lpfn = NULL;
- bi.lParam = 0;
- bi.iImage = 0;
- bi.pidlRoot = il;
-
- if (SHBrowseForFolder(&bi) != NULL) {
- SendMessage(GetDlgItem(hDlg, IDC_COMPUTER),
- WM_SETTEXT,
- (WPARAM) NULL, (LPARAM) szCmp);
- }
- if (SHGetMalloc(&pMalloc)) {
- pMalloc->lpVtbl->Free(pMalloc, il);
- pMalloc->lpVtbl->Release(pMalloc);
- }
- return TRUE;
- }
- }
- break;
-
- case WM_QUIT:
- case WM_CLOSE:
- EndDialog(hDlg, TRUE);
- return TRUE;
-
- default:
- return FALSE;
- }
- return FALSE;
-
-}
-
-
-LRESULT CALLBACK ServiceDlgProc(HWND hDlg, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- TCHAR szBuf[MAX_PATH];
- HWND hListBox;
- static HWND hStatusBar;
- TEXTMETRIC tm;
- int i, y;
- HDC hdcMem;
- RECT rcBitmap;
- LRESULT nItem;
- LPMEASUREITEMSTRUCT lpmis;
- LPDRAWITEMSTRUCT lpdis;
-
- memset(szBuf, 0, sizeof(szBuf));
- switch (message)
- {
- case WM_INITDIALOG:
- ShowWindow(hDlg, SW_HIDE);
- g_hwndServiceDlg = hDlg;
- SetWindowText(hDlg, g_szTitle);
- Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), FALSE);
- SetWindowText(GetDlgItem(hDlg, IDC_SSTART),
- g_lpMsg[IDS_MSG_SSTART - IDS_MSG_FIRST]);
- SetWindowText(GetDlgItem(hDlg, IDC_SSTOP),
- g_lpMsg[IDS_MSG_SSTOP - IDS_MSG_FIRST]);
- SetWindowText(GetDlgItem(hDlg, IDC_SRESTART),
- g_lpMsg[IDS_MSG_SRESTART - IDS_MSG_FIRST]);
- SetWindowText(GetDlgItem(hDlg, IDC_SMANAGER),
- g_lpMsg[IDS_MSG_SERVICES - IDS_MSG_FIRST]);
- SetWindowText(GetDlgItem(hDlg, IDC_SCONNECT),
- g_lpMsg[IDS_MSG_CONNECT - IDS_MSG_FIRST]);
- SetWindowText(GetDlgItem(hDlg, IDC_SEXIT),
- g_lpMsg[IDS_MSG_MNUEXIT - IDS_MSG_FIRST]);
- if (g_dwOSVersion < OS_VERSION_WINNT)
- {
- ShowWindow(GetDlgItem(hDlg, IDC_SMANAGER), SW_HIDE);
- ShowWindow(GetDlgItem(hDlg, IDC_SCONNECT), SW_HIDE);
- ShowWindow(GetDlgItem(hDlg, IDC_SDISCONN), SW_HIDE);
- }
- hListBox = GetDlgItem(hDlg, IDL_SERVICES);
- g_hwndStdoutList = GetDlgItem(hDlg, IDL_STDOUT);
- hStatusBar = CreateStatusWindow(0x0800 /* SBT_TOOLTIPS */
- | WS_CHILD | WS_VISIBLE,
- _T(""), hDlg, IDC_STATBAR);
- if (GetApacheServicesStatus())
- {
- i = 0;
- while (g_stServices[i].szServiceName != NULL)
- {
- addListBoxItem(hListBox, g_stServices[i].szDisplayName,
- g_stServices[i].dwPid == 0 ? g_hBmpStop
- : g_hBmpStart);
- ++i;
- }
- }
- CenterWindow(hDlg);
- ShowWindow(hDlg, SW_SHOW);
- SetFocus(hListBox);
- SendMessage(hListBox, LB_SETCURSEL, 0, 0);
- return TRUE;
- break;
-
- case WM_MANAGEMESSAGE:
- ApacheManageService(g_stServices[LOWORD(wParam)].szServiceName,
- g_stServices[LOWORD(wParam)].szImagePath,
- g_stServices[LOWORD(wParam)].szComputerName,
- LOWORD(lParam));
-
- return TRUE;
- break;
-
- case WM_UPDATEMESSAGE:
- hListBox = GetDlgItem(hDlg, IDL_SERVICES);
- SendMessage(hListBox, LB_RESETCONTENT, 0, 0);
- SendMessage(hStatusBar, SB_SETTEXT, 0, (LPARAM)_T(""));
- Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), FALSE);
- i = 0;
- while (g_stServices[i].szServiceName != NULL)
- {
- addListBoxItem(hListBox, g_stServices[i].szDisplayName,
- g_stServices[i].dwPid == 0 ? g_hBmpStop : g_hBmpStart);
- ++i;
- }
- SendMessage(hListBox, LB_SETCURSEL, 0, 0);
- /* Dirty hack to bring the window to the foreground */
- SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0,
- SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
- SetWindowPos(hDlg, HWND_NOTOPMOST, 0, 0, 0, 0,
- SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
- SetFocus(hListBox);
- return TRUE;
- break;
-
- case WM_MEASUREITEM:
- lpmis = (LPMEASUREITEMSTRUCT) lParam;
- lpmis->itemHeight = YBITMAP;
- return TRUE;
-
- case WM_SETCURSOR:
- if (g_bConsoleRun) {
- SetCursor(g_hCursorHourglass);
- }
- else {
- SetCursor(g_hCursorArrow);
- }
- return TRUE;
-
- case WM_DRAWITEM:
- lpdis = (LPDRAWITEMSTRUCT) lParam;
- if (lpdis->itemID == -1) {
- break;
- }
- switch (lpdis->itemAction)
- {
- case ODA_SELECT:
- case ODA_DRAWENTIRE:
- g_hBmpPicture = (HBITMAP)SendMessage(lpdis->hwndItem,
- LB_GETITEMDATA,
- lpdis->itemID, (LPARAM) 0);
-
- hdcMem = CreateCompatibleDC(lpdis->hDC);
- g_hBmpOld = SelectObject(hdcMem, g_hBmpPicture);
-
- BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,
- lpdis->rcItem.right - lpdis->rcItem.left,
- lpdis->rcItem.bottom - lpdis->rcItem.top,
- hdcMem, 0, 0, SRCCOPY);
- SendMessage(lpdis->hwndItem, LB_GETTEXT,
- lpdis->itemID, (LPARAM) szBuf);
-
- GetTextMetrics(lpdis->hDC, &tm);
- y = (lpdis->rcItem.bottom + lpdis->rcItem.top - tm.tmHeight) / 2;
-
- SelectObject(hdcMem, g_hBmpOld);
- DeleteDC(hdcMem);
-
- rcBitmap.left = lpdis->rcItem.left + XBITMAP + 2;
- rcBitmap.top = lpdis->rcItem.top;
- rcBitmap.right = lpdis->rcItem.right;
- rcBitmap.bottom = lpdis->rcItem.top + YBITMAP;
-
- if (lpdis->itemState & ODS_SELECTED)
- {
- if (g_hBmpPicture == g_hBmpStop)
- {
- Button_Enable(GetDlgItem(hDlg, IDC_SSTART), TRUE);
- Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);
- }
- else if (g_hBmpPicture == g_hBmpStart)
- {
- Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), TRUE);
- Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), TRUE);
- }
- else {
- Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);
- Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);
- }
- if (_tcscmp(g_stServices[lpdis->itemID].szComputerName,
- g_szLocalHost) == 0) {
- Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), FALSE);
- }
- else {
- Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), TRUE);
- }
-
- if (g_stServices[lpdis->itemID].szDescription) {
- SendMessage(hStatusBar, SB_SETTEXT, 0,
- (LPARAM)g_stServices[lpdis->itemID].szDescription);
- }
- else {
- SendMessage(hStatusBar, SB_SETTEXT, 0, (LPARAM)_T(""));
- }
- SetTextColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
- SetBkColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHT));
- FillRect(lpdis->hDC, &rcBitmap, (HBRUSH)(COLOR_HIGHLIGHTTEXT));
- }
- else
- {
- SetTextColor(lpdis->hDC, GetSysColor(COLOR_MENUTEXT));
- SetBkColor(lpdis->hDC, GetSysColor(COLOR_WINDOW));
- FillRect(lpdis->hDC, &rcBitmap, (HBRUSH)(COLOR_WINDOW+1));
- }
- TextOut(lpdis->hDC, XBITMAP + 6, y, szBuf, (int)_tcslen(szBuf));
- break;
-
- case ODA_FOCUS:
- break;
- }
- return TRUE;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDL_SERVICES:
- switch (HIWORD(wParam))
- {
- case LBN_DBLCLK:
- /* if started then stop, if stopped then start */
- hListBox = GetDlgItem(hDlg, IDL_SERVICES);
- nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);
- if (nItem != LB_ERR)
- {
- g_hBmpPicture = (HBITMAP)SendMessage(hListBox,
- LB_GETITEMDATA,
- nItem, (LPARAM) 0);
- if (g_hBmpPicture == g_hBmpStop) {
- SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,
- SERVICE_CONTROL_CONTINUE);
- }
- else {
- SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,
- SERVICE_CONTROL_STOP);
- }
-
- }
- return TRUE;
- }
- break;
-
- case IDOK:
- EndDialog(hDlg, TRUE);
- return TRUE;
-
- case IDC_SSTART:
- Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);
- hListBox = GetDlgItem(hDlg, IDL_SERVICES);
- nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);
- if (nItem != LB_ERR) {
- SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,
- SERVICE_CONTROL_CONTINUE);
- }
- Button_Enable(GetDlgItem(hDlg, IDC_SSTART), TRUE);
- return TRUE;
-
- case IDC_SSTOP:
- Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);
- hListBox = GetDlgItem(hDlg, IDL_SERVICES);
- nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);
- if (nItem != LB_ERR) {
- SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,
- SERVICE_CONTROL_STOP);
- }
- Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), TRUE);
- return TRUE;
-
- case IDC_SRESTART:
- Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);
- hListBox = GetDlgItem(hDlg, IDL_SERVICES);
- nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);
- if (nItem != LB_ERR) {
- SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,
- SERVICE_APACHE_RESTART);
- }
- Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), TRUE);
- return TRUE;
-
- case IDC_SMANAGER:
- if (g_dwOSVersion >= OS_VERSION_WIN2K) {
- ShellExecute(hDlg, _T("open"), _T("services.msc"), _T("/s"),
- NULL, SW_NORMAL);
- }
- else {
- WinExec("Control.exe SrvMgr.cpl Services", SW_NORMAL);
- }
- return TRUE;
-
- case IDC_SEXIT:
- EndDialog(hDlg, TRUE);
- SendMessage(g_hwndMain, WM_COMMAND, (WPARAM)IDM_EXIT, 0);
- return TRUE;
-
- case IDC_SCONNECT:
- DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_DLGCONNECT),
- hDlg, (DLGPROC)ConnectDlgProc);
- return TRUE;
-
- case IDC_SDISCONN:
- hListBox = GetDlgItem(hDlg, IDL_SERVICES);
- nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);
- if (nItem != LB_ERR) {
- am_DisconnectComputer(g_stServices[nItem].szComputerName);
- SendMessage(g_hwndMain, WM_TIMER, WM_TIMER_RESCAN, 0);
- }
- return TRUE;
- }
- break;
-
- case WM_SIZE:
- switch (LOWORD(wParam))
- {
- case SIZE_MINIMIZED:
- EndDialog(hDlg, TRUE);
- return TRUE;
- break;
- }
- break;
-
- case WM_QUIT:
- case WM_CLOSE:
- EndDialog(hDlg, TRUE);
- return TRUE;
-
- default:
- return FALSE;
- }
- return FALSE;
-}
-
-
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
- WPARAM wParam, LPARAM lParam)
-{
- if (message == g_bUiTaskbarCreated)
- {
- /* restore the tray icon on shell restart */
- ShowNotifyIcon(hWnd, NIM_ADD);
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- switch (message)
- {
- case WM_CREATE:
- GetApacheServicesStatus();
- ShowNotifyIcon(hWnd, NIM_ADD);
- SetTimer(hWnd, WM_TIMER_REFRESH, REFRESH_TIME, NULL);
- SetTimer(hWnd, WM_TIMER_RESCAN, RESCAN_TIME, NULL);
- break;
-
- case WM_TIMER:
- switch (wParam)
- {
- case WM_TIMER_RESCAN:
- {
- int nPrev = 0, nNew = 0;
- EnterCriticalSection(&g_stcSection);
- if (FindRunningServices() || g_bRescanServices)
- {
- ShowNotifyIcon(hWnd, NIM_MODIFY);
- if (g_hwndServiceDlg)
- PostMessage(g_hwndServiceDlg, WM_UPDATEMESSAGE, 0, 0);
- }
- /* check if services list changed */
- while (g_stServices[nPrev].szServiceName != NULL)
- ++nPrev;
- GetApacheServicesStatus();
- while (g_stServices[nNew].szServiceName != NULL)
- ++nNew;
- if (nPrev != nNew)
- {
- ShowNotifyIcon(hWnd, NIM_MODIFY);
- if (g_hwndServiceDlg) {
- PostMessage(g_hwndServiceDlg, WM_UPDATEMESSAGE, 0, 0);
- }
- }
- LeaveCriticalSection(&g_stcSection);
- break;
- }
-
- case WM_TIMER_REFRESH:
- {
- int nPrev = 0, nNew = 0;
- EnterCriticalSection(&g_stcSection);
- if (g_bRescanServices)
- {
- GetApacheServicesStatus();
- ShowNotifyIcon(hWnd, NIM_MODIFY);
- if (g_hwndServiceDlg) {
- PostMessage(g_hwndServiceDlg, WM_UPDATEMESSAGE, 0, 0);
- }
- }
- else if (FindRunningServices())
- {
- ShowNotifyIcon(hWnd, NIM_MODIFY);
- if (g_hwndServiceDlg) {
- PostMessage(g_hwndServiceDlg, WM_UPDATEMESSAGE, 0, 0);
- }
- }
- LeaveCriticalSection(&g_stcSection);
- break;
- }
- }
- break;
-
- case WM_QUIT:
- ShowNotifyIcon(hWnd, NIM_DELETE);
- break;
-
- case WM_TRAYMESSAGE:
- switch (lParam)
- {
- case WM_LBUTTONDBLCLK:
- if (!g_bDlgServiceOn)
- {
- g_bDlgServiceOn = TRUE;
- DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_DLGSERVICES),
- hWnd, (DLGPROC)ServiceDlgProc);
- g_bDlgServiceOn = FALSE;
- g_hwndServiceDlg = NULL;
- }
- else if (IsWindow(g_hwndServiceDlg))
- {
- /* Dirty hack to bring the window to the foreground */
- SetWindowPos(g_hwndServiceDlg, HWND_TOPMOST, 0, 0, 0, 0,
- SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
- SetWindowPos(g_hwndServiceDlg, HWND_NOTOPMOST, 0, 0, 0, 0,
- SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
- SetFocus(g_hwndServiceDlg);
- }
- break;
-
- case WM_LBUTTONUP:
- ShowTryServicesMenu(hWnd);
- break;
-
- case WM_RBUTTONUP:
- ShowTryPopupMenu(hWnd);
- break;
- }
- break;
-
- case WM_COMMAND:
- if ((LOWORD(wParam) & IDM_SM_START) == IDM_SM_START)
- {
- ApacheManageService(g_stServices[LOWORD(wParam)
- - IDM_SM_START].szServiceName,
- g_stServices[LOWORD(wParam)
- - IDM_SM_START].szImagePath,
- g_stServices[LOWORD(wParam)
- - IDM_SM_START].szComputerName,
- SERVICE_CONTROL_CONTINUE);
- return TRUE;
- }
- else if ((LOWORD(wParam) & IDM_SM_STOP) == IDM_SM_STOP)
- {
- ApacheManageService(g_stServices[LOWORD(wParam)
- - IDM_SM_STOP].szServiceName,
- g_stServices[LOWORD(wParam)
- - IDM_SM_STOP].szImagePath,
- g_stServices[LOWORD(wParam)
- - IDM_SM_STOP].szComputerName,
- SERVICE_CONTROL_STOP);
- return TRUE;
- }
- else if ((LOWORD(wParam) & IDM_SM_RESTART) == IDM_SM_RESTART)
- {
- ApacheManageService(g_stServices[LOWORD(wParam)
- - IDM_SM_RESTART].szServiceName,
- g_stServices[LOWORD(wParam)
- - IDM_SM_RESTART].szImagePath,
- g_stServices[LOWORD(wParam)
- - IDM_SM_RESTART].szComputerName,
- SERVICE_APACHE_RESTART);
- return TRUE;
- }
- switch (LOWORD(wParam))
- {
- case IDM_RESTORE:
- if (!g_bDlgServiceOn)
- {
- g_bDlgServiceOn = TRUE;
- DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_DLGSERVICES),
- hWnd, (DLGPROC)ServiceDlgProc);
- g_bDlgServiceOn = FALSE;
- g_hwndServiceDlg = NULL;
- }
- else if (IsWindow(g_hwndServiceDlg)) {
- SetFocus(g_hwndServiceDlg);
- }
- break;
-
- case IDC_SMANAGER:
- if (g_dwOSVersion >= OS_VERSION_WIN2K) {
- ShellExecute(NULL, _T("open"), _T("services.msc"), _T("/s"),
- NULL, SW_NORMAL);
- }
- else {
- WinExec("Control.exe SrvMgr.cpl Services", SW_NORMAL);
- }
- return TRUE;
-
- case IDM_EXIT:
- ShowNotifyIcon(hWnd, NIM_DELETE);
- PostQuitMessage(0);
- return TRUE;
- }
-
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
-
- return FALSE;
-}
-
-
-static int KillAWindow(HWND appwindow)
-{
- HANDLE appproc;
- DWORD procid;
- BOOL postres;
-
- SetLastError(0);
- GetWindowThreadProcessId(appwindow, &procid);
- if (GetLastError())
- return(2);
-
- appproc = OpenProcess(SYNCHRONIZE, 0, procid);
- postres = PostMessage(appwindow, WM_COMMAND, IDM_EXIT, 0);
- if (appproc && postres) {
- if (WaitForSingleObject(appproc, 10 /* seconds */ * 1000)
- == WAIT_OBJECT_0) {
- CloseHandle(appproc);
- return (0);
- }
- }
- if (appproc)
- CloseHandle(appproc);
-
- if ((appproc = OpenProcess(PROCESS_TERMINATE, 0, procid)) != NULL) {
- if (TerminateProcess(appproc, 0)) {
- CloseHandle(appproc);
- return (0);
- }
- CloseHandle(appproc);
- }
-
- /* Perhaps we were short of permissions? */
- return (2);
-}
-
-
-static int KillAllMonitors(void)
-{
- HWND appwindow;
- int exitcode = 0;
- PWTS_PROCESS_INFO tsProcs;
- DWORD tsProcCount, i;
- DWORD thisProcId;
-
- /* This is graceful, close our own Window, clearing the icon */
- if ((appwindow = FindWindow(g_szWindowClass, g_szTitle)) != NULL)
- exitcode = KillAWindow(appwindow);
-
- if (g_dwOSVersion < OS_VERSION_WIN2K)
- return exitcode;
-
- thisProcId = GetCurrentProcessId();
-
- if (!WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1,
- &tsProcs, &tsProcCount))
- return exitcode;
-
- /* This is ungraceful; close other Windows, with a lingering icon.
- * Since on terminal server it's not possible to post the message
- * to exit across sessions, we have to suffer this side effect
- * of a taskbar 'icon' which will evaporate the next time that
- * the user hovers over it or when the taskbar area is updated.
- */
- for (i = 0; i < tsProcCount; ++i) {
- if (_tcscmp(tsProcs[i].pProcessName, _T(AM_STRINGIFY(BIN_NAME))) == 0
- && tsProcs[i].ProcessId != thisProcId)
- WTSTerminateProcess(WTS_CURRENT_SERVER_HANDLE,
- tsProcs[i].ProcessId, 1);
- }
- WTSFreeMemory(tsProcs);
- return exitcode;
-}
-
-
-/* Create main invisible window */
-HWND CreateMainWindow(HINSTANCE hInstance)
-{
- HWND hWnd = NULL;
- WNDCLASSEX wcex;
-
- wcex.cbSize = sizeof(WNDCLASSEX);
-
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = (WNDPROC)WndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_APSRVMON),
- IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
- wcex.hCursor = g_hCursorArrow;
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = 0;
- wcex.lpszClassName = g_szWindowClass;
- wcex.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_APSRVMON),
- IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
-
- if (RegisterClassEx(&wcex)) {
- hWnd = CreateWindow(g_szWindowClass, g_szTitle,
- 0, 0, 0, 0, 0,
- NULL, NULL, hInstance, NULL);
- }
- return hWnd;
-}
-
-
-#ifndef UNICODE
-/* Borrowed from CRT internal.h for _MBCS argc/argv parsing in this GUI app */
-int __cdecl _setargv(void);
-#endif
-
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
- LPSTR lpCmdLine, int nCmdShow)
-{
- TCHAR szTmp[MAX_LOADSTRING];
- TCHAR szCmp[MAX_COMPUTERNAME_LENGTH+4];
- MSG msg;
- /* existing window */
- HWND appwindow;
- DWORD dwControl;
- int i;
- DWORD d;
-
- if (!GetSystemOSVersion(&g_dwOSVersion))
- {
- ErrorMessage(NULL, TRUE);
- return 1;
- }
-
- g_LangID = GetUserDefaultLangID();
- if ((g_LangID & 0xFF) != LANG_ENGLISH) {
- g_LangID = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
- }
- for (i = IDS_MSG_FIRST; i <= IDS_MSG_LAST; ++i) {
- LoadString(hInstance, i, szTmp, MAX_LOADSTRING);
- g_lpMsg[i - IDS_MSG_FIRST] = _tcsdup(szTmp);
- }
- LoadString(hInstance, IDS_APMONITORTITLE, szTmp, MAX_LOADSTRING);
- d = MAX_COMPUTERNAME_LENGTH+1;
- _tcscpy(szCmp, _T("\\\\"));
- GetComputerName(szCmp + 2, &d);
- _tcsupr(szCmp);
- g_szLocalHost = _tcsdup(szCmp);
-
- memset(g_stComputers, 0, sizeof(ST_MONITORED_COMP) * MAX_APACHE_COMPUTERS);
- g_stComputers[0].szComputerName = _tcsdup(szCmp);
- g_stComputers[0].hRegistry = HKEY_LOCAL_MACHINE;
- g_szTitle = _tcsdup(szTmp);
- LoadString(hInstance, IDS_APMONITORCLASS, szTmp, MAX_LOADSTRING);
- g_szWindowClass = _tcsdup(szTmp);
-
- appwindow = FindWindow(g_szWindowClass, g_szTitle);
-
-#ifdef UNICODE
- __wargv = CommandLineToArgvW(GetCommandLineW(), &__argc);
-#else
- _setargv();
-#endif
-
- if ((__argc == 2) && (_tcscmp(__targv[1], _T("--kill")) == 0))
- {
- /* Off to chase and close up every ApacheMonitor taskbar window */
- return KillAllMonitors();
- }
- else if ((__argc == 4) && (g_dwOSVersion >= OS_VERSION_WIN2K))
- {
- dwControl = _ttoi(__targv[1]);
- if ((dwControl != SERVICE_CONTROL_CONTINUE) &&
- (dwControl != SERVICE_APACHE_RESTART) &&
- (dwControl != SERVICE_CONTROL_STOP))
- {
- return 1;
- }
-
- /* Chase down and close up our session's previous window */
- if ((appwindow) != NULL)
- KillAWindow(appwindow);
- }
- else if (__argc != 1) {
- return 1;
- }
- else if (appwindow)
- {
- ErrorMessage(g_lpMsg[IDS_MSG_APPRUNNING - IDS_MSG_FIRST], FALSE);
- return 0;
- }
-
- g_icoStop = LoadImage(hInstance, MAKEINTRESOURCE(IDI_ICOSTOP),
- IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
- g_icoRun = LoadImage(hInstance, MAKEINTRESOURCE(IDI_ICORUN),
- IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
- g_hCursorHourglass = LoadImage(NULL, MAKEINTRESOURCE(OCR_WAIT),
- IMAGE_CURSOR, LR_DEFAULTSIZE,
- LR_DEFAULTSIZE, LR_SHARED);
- g_hCursorArrow = LoadImage(NULL, MAKEINTRESOURCE(OCR_NORMAL),
- IMAGE_CURSOR, LR_DEFAULTSIZE,
- LR_DEFAULTSIZE, LR_SHARED);
- g_hBmpStart = LoadImage(hInstance, MAKEINTRESOURCE(IDB_BMPRUN),
- IMAGE_BITMAP, XBITMAP, YBITMAP,
- LR_DEFAULTCOLOR);
- g_hBmpStop = LoadImage(hInstance, MAKEINTRESOURCE(IDB_BMPSTOP),
- IMAGE_BITMAP, XBITMAP, YBITMAP,
- LR_DEFAULTCOLOR);
-
- memset(g_stServices, 0, sizeof(ST_APACHE_SERVICE) * MAX_APACHE_SERVICES);
- CoInitialize(NULL);
- InitCommonControls();
- g_hInstance = hInstance;
- g_hwndMain = CreateMainWindow(hInstance);
- g_bUiTaskbarCreated = RegisterWindowMessage(_T("TaskbarCreated"));
- InitializeCriticalSection(&g_stcSection);
- g_hwndServiceDlg = NULL;
- if (g_hwndMain != NULL)
- {
- /* To avoid recursion, pass ImagePath NULL (a noop on NT and later) */
- if ((__argc == 4) && (g_dwOSVersion >= OS_VERSION_WIN2K))
- ApacheManageService(__targv[2], NULL, __targv[3], dwControl);
-
- while (GetMessage(&msg, NULL, 0, 0) == TRUE)
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- am_ClearServicesSt();
- }
- am_ClearComputersSt();
- DeleteCriticalSection(&g_stcSection);
- DestroyIcon(g_icoStop);
- DestroyIcon(g_icoRun);
- DestroyCursor(g_hCursorHourglass);
- DestroyCursor(g_hCursorArrow);
- DeleteObject(g_hBmpStart);
- DeleteObject(g_hBmpStop);
- CoUninitialize();
- return 0;
-}
-
diff --git a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.dsp b/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.dsp
deleted file mode 100644
index 84369aaa..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.dsp
+++ /dev/null
@@ -1,143 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ApacheMonitor" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Application" 0x0101
-
-CFG=ApacheMonitor - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ApacheMonitor.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ApacheMonitor.mak" CFG="ApacheMonitor - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ApacheMonitor - Win32 Release" (based on "Win32 (x86) Application")
-!MESSAGE "ApacheMonitor - Win32 Debug" (based on "Win32 (x86) Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ApacheMonitor - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
-# ADD CPP /nologo /MD /W3 /EHsc /O2 /Oy- /Zi /I "../../include" /I "../../srclib/apr/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "STRICT" /Fd"Release/ApacheMonitor_src" /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /i "../../include" /I "../../srclib/apr/include" /d "NDEBUG" /d "APP_FILE"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib wtsapi32.lib /nologo /subsystem:windows
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib wtsapi32.lib /nologo /subsystem:windows /debug /opt:ref
-# Begin Special Build Tool
-TargetPath=.\Release\ApacheMonitor.exe
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "ApacheMonitor - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "../../include" /I "../../srclib/apr/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "STRICT" /Fd"Debug/ApacheMonitor_src" /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /i "../../include" /I "../../srclib/apr/include" /d "_DEBUG" /d "APP_FILE"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib wtsapi32.lib /nologo /subsystem:windows /debug
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib wtsapi32.lib /nologo /subsystem:windows /incremental:no /debug
-# Begin Special Build Tool
-TargetPath=.\Debug\ApacheMonitor.exe
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "ApacheMonitor - Win32 Release"
-# Name "ApacheMonitor - Win32 Debug"
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=.\apache_header.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=.\ApacheMonitor.ico
-# End Source File
-# Begin Source File
-
-SOURCE=.\aprun.ico
-# End Source File
-# Begin Source File
-
-SOURCE=.\apstop.ico
-# End Source File
-# Begin Source File
-
-SOURCE=.\srun.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=.\sstop.bmp
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\ApacheMonitor.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\ApacheMonitor.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\ApacheMonitor.rc
-# End Source File
-# End Target
-# End Project
diff --git a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.h b/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.h
deleted file mode 100644
index 085c45f8..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @file ApacheMonitor.h
- * @brief Resource definitions for ApacheMonitor.rc and ApacheMonitor.c
- */
-#define BIN_NAME ApacheMonitor.exe
-
-#define IDD_DLGSERVICES 101
-#define IDS_APMONITORTITLE 102
-#define IDS_APMONITORCLASS 103
-#define IDM_RESTORE 104
-#define IDM_EXIT 105
-#define IDI_APSRVMON 106
-#define IDI_ICOSTOP 107
-#define IDI_ICORUN 108
-#define IDC_STATBAR 109
-#define IDC_SSTATUS 110
-#define IDB_BMPSTOP 111
-#define IDB_BMPRUN 112
-#define IDB_BMPHEADER 114
-#define IDL_SERVICES 115
-#define IDL_STDOUT 116
-#define IDC_SSTART 117
-#define IDC_SSTOP 118
-#define IDC_SRESTART 119
-#define IDC_SEXIT 120
-#define IDC_SMANAGER 121
-#define IDD_DLGCONNECT 122
-#define IDC_LREMOTE 123
-#define IDC_LBROWSE 124
-#define IDC_COMPUTER 125
-#define IDC_SCONNECT 126
-#define IDC_SDISCONN 127
-#define IDS_MSG_FIRST 256
-#define IDS_MSG_APPRUNNING 256
-#define IDS_MSG_ERROR 257
-#define IDS_MSG_RUNNINGALL 258
-#define IDS_MSG_RUNNING 259
-#define IDS_MSG_RUNNINGNONE 260
-#define IDS_MSG_NOSERVICES 261
-#define IDS_MSG_MNUSERVICES 262
-#define IDS_MSG_MNUSHOW 263
-#define IDS_MSG_MNUEXIT 264
-#define IDS_MSG_SRVSTART 265
-#define IDS_MSG_SRVSTARTED 266
-#define IDS_MSG_SRVSTOP 267
-#define IDS_MSG_SRVSTOPPED 268
-#define IDS_MSG_SRVRESTART 269
-#define IDS_MSG_SRVRESTARTED 270
-#define IDS_MSG_SRVFAILED 271
-#define IDS_MSG_SSTART 272
-#define IDS_MSG_SSTOP 273
-#define IDS_MSG_SRESTART 274
-#define IDS_MSG_SERVICES 275
-#define IDS_MSG_CONNECT 276
-#define IDS_MSG_ECONNECT 277
-#define IDS_MSG_LAST 277
-#define IDM_SM_SERVICE 0x1100
-#define IDM_SM_START 0x1200
-#define IDM_SM_STOP 0x1400
-#define IDM_SM_RESTART 0x1800
-#define IDC_STATIC -1
-
diff --git a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.ico b/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.ico
deleted file mode 100644
index cd28dc52..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.ico
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.rc b/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.rc
deleted file mode 100644
index 099934e6..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/ApacheMonitor.rc
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <windows.h>
-
-#include "ApacheMonitor.h"
-
-IDI_APSRVMON ICON DISCARDABLE "ApacheMonitor.ico"
-IDI_ICOSTOP ICON DISCARDABLE "apstop.ico"
-IDI_ICORUN ICON DISCARDABLE "aprun.ico"
-
-IDD_DLGSERVICES DIALOGEX 0, 0, 350, 188
-STYLE DS_MODALFRAME | DS_SETFOREGROUND | WS_MINIMIZEBOX | WS_VISIBLE |
- WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU
-EXSTYLE WS_EX_CONTROLPARENT
-CAPTION "Apache Service Monitor"
-FONT 8, "MS Sans Serif"
-BEGIN
- DEFPUSHBUTTON "&OK",IDOK,298,49,50,14
- LTEXT "Service St&atus :",IDC_SSTATUS,3,40,272,8
- LISTBOX IDL_SERVICES,2,49,285,73,LBS_OWNERDRAWFIXED |
- LBS_HASSTRINGS | LBS_USETABSTOPS | LBS_NOINTEGRALHEIGHT |
- LBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP
- LISTBOX IDL_STDOUT,2,124,285,51,LBS_NOINTEGRALHEIGHT |
- LBS_DISABLENOSCROLL | LBS_NOSEL | WS_VSCROLL
- PUSHBUTTON "&Start",IDC_SSTART,298,65,50,14
- PUSHBUTTON "S&top",IDC_SSTOP,298,81,50,14
- PUSHBUTTON "&Restart",IDC_SRESTART,298,97,50,14
- PUSHBUTTON "Ser&vices",IDC_SMANAGER,298,113,50,14
- CONTROL IDB_BMPHEADER,IDC_STATIC,"Static",SS_BITMAP,0,0,349,38
- PUSHBUTTON "&Connect",IDC_SCONNECT,298,129,50,14
- PUSHBUTTON "&Disconnect",IDC_SDISCONN,298,145,50,14
- PUSHBUTTON "E&xit",IDC_SEXIT,298,161,50,14
-END
-
-IDD_DLGCONNECT DIALOGEX 0, 0, 240, 54
-STYLE DS_MODALFRAME | DS_SETFOREGROUND | WS_VISIBLE | WS_CLIPCHILDREN |
- WS_CAPTION | WS_SYSMENU
-EXSTYLE WS_EX_CONTROLPARENT
-CAPTION "Connect To A Remote Computer"
-FONT 8, "MS Sans Serif"
-BEGIN
- LTEXT "Computer &Name:",IDC_LREMOTE,7,4,155,8
- EDITTEXT IDC_COMPUTER,7,14,169,14,ES_AUTOHSCROLL
- DEFPUSHBUTTON "&OK",IDOK,183,14,50,14
- PUSHBUTTON "&Cancel",IDCANCEL,183,34,50,14
- PUSHBUTTON "&Browse",IDC_LBROWSE,7,34,50,14
-END
-
-IDB_BMPSTOP BITMAP DISCARDABLE "sstop.bmp"
-IDB_BMPRUN BITMAP DISCARDABLE "srun.bmp"
-IDB_BMPHEADER BITMAP DISCARDABLE "apache_header.bmp"
-
-STRINGTABLE DISCARDABLE
-BEGIN
- IDS_APMONITORTITLE "Apache Service Monitor"
- IDS_APMONITORCLASS "ApacheServiceMonitorClass"
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- IDS_MSG_APPRUNNING "Apache monitor is already started"
- IDS_MSG_ERROR "Error"
- IDS_MSG_RUNNINGALL "Running all Apache services"
- IDS_MSG_RUNNING "Running %d of %d Apache services"
- IDS_MSG_RUNNINGNONE "Running none of %d Apache services"
- IDS_MSG_NOSERVICES "No services installed"
- IDS_MSG_MNUSERVICES "Open &Services"
- IDS_MSG_MNUSHOW "&Open Apache Monitor"
- IDS_MSG_MNUEXIT "E&xit"
- IDS_MSG_SRVSTART "The %s service is starting."
- IDS_MSG_SRVSTARTED "The %s service has started."
- IDS_MSG_SRVSTOP "The %s service is stopping."
- IDS_MSG_SRVSTOPPED "The %s service has stopped."
- IDS_MSG_SRVRESTART "The %s service is restarting."
- IDS_MSG_SRVRESTARTED "The %s service has restarted."
- IDS_MSG_SRVFAILED "The requested operation has failed!"
- IDS_MSG_SSTART "&Start"
- IDS_MSG_SSTOP "S&top"
- IDS_MSG_SRESTART "&Restart"
- IDS_MSG_SERVICES "Ser&vices"
- IDS_MSG_CONNECT "&Connect"
- IDS_MSG_ECONNECT "Unable to connect to the remote registry on %s"
-END
diff --git a/rubbos/app/httpd-2.0.64/support/win32/apache_header.bmp b/rubbos/app/httpd-2.0.64/support/win32/apache_header.bmp
deleted file mode 100644
index 7340fac2..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/apache_header.bmp
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/support/win32/aprun.ico b/rubbos/app/httpd-2.0.64/support/win32/aprun.ico
deleted file mode 100644
index dbd58326..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/aprun.ico
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/support/win32/apstop.ico b/rubbos/app/httpd-2.0.64/support/win32/apstop.ico
deleted file mode 100644
index fba49ad2..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/apstop.ico
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/support/win32/srun.bmp b/rubbos/app/httpd-2.0.64/support/win32/srun.bmp
deleted file mode 100644
index 90ecd46f..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/srun.bmp
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/support/win32/sstop.bmp b/rubbos/app/httpd-2.0.64/support/win32/sstop.bmp
deleted file mode 100644
index ba73d87a..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/sstop.bmp
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/support/win32/wintty.c b/rubbos/app/httpd-2.0.64/support/win32/wintty.c
deleted file mode 100644
index 21391bdd..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/wintty.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* --------------------------------------------------------------------
- *
- * wintty : a Apache/WinNT support utility for monitoring and
- * reflecting user feedback from the Apache process via
- * stdin/stdout, even as running within the service context.
- *
- * Originally contributed by William Rowe <wrowe covalent.net>
- *
- * Note: this implementation is _very_ experimental, and error handling
- * is far from complete. Using it as a cgi or pipe process allows the
- * programmer to discover if facilities such as reliable piped logs
- * are working as expected, or answer operator prompts that would
- * otherwise be discarded by the service process.
- *
- * Also note the isservice detection semantics, which far exceed any
- * mechanism we have discovered thus far.
- *
- * --------------------------------------------------------------------
- */
-
-#define WIN32_LEAN_AND_MEAN
-
-#if defined(_MSC_VER) && _MSC_VER >= 1400
-#define _CRT_SECURE_NO_DEPRECATE
-#pragma warning(disable: 4996)
-#endif
-
-#include <windows.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-const char *options =
-"\nwintty: a utility for echoing the stdin stream to a new console window,\n"
-"\teven when invoked from within a service (such as the Apache server.)\n"
-"\tAlso reflects the console input back to the stdout stream, allowing\n"
-"\tthe operator to respond to prompts from the context of a service.\n\n"
-"Syntax: %s [opts] [-t \"Window Title\"]\n\n"
-" opts: -c{haracter} or -l{ine} input\n"
-"\t-q{uiet} or -e{cho} input\n"
-"\t-u{nprocessed} or -p{rocessed} input\n"
-"\t-n{owrap} or -w{rap} output lines\n"
-"\t-f{ormatted} or -r{aw} output lines\n"
-"\t-O{output} [number of seconds]\n"
-"\t-v{erbose} error reporting (for debugging)\n"
-"\t-? for this message\n\n";
-
-BOOL verbose = FALSE;
-
-void printerr(char *fmt, ...)
-{
- char str[1024];
- va_list args;
- if (!verbose)
- return;
- va_start(args, fmt);
- wvsprintf(str, fmt, args);
- OutputDebugString(str);
-}
-
-DWORD WINAPI feedback(LPVOID args);
-
-typedef struct feedback_args_t {
- HANDLE in;
- HANDLE out;
-} feedback_args_t;
-
-int main(int argc, char** argv)
-{
- char str[1024], *contitle = NULL;
- HANDLE hproc, thread;
- HANDLE hwinsta = NULL, hsavewinsta;
- HANDLE hdesk = NULL, hsavedesk = NULL;
- HANDLE conin, conout;
- HANDLE hstdin, hstdout, hstderr, hdup;
- feedback_args_t feed;
- DWORD conmode;
- DWORD newinmode = 0, notinmode = 0;
- DWORD newoutmode = 0, notoutmode = 0;
- DWORD tid;
- DWORD len;
- DWORD timeout = INFINITE;
- BOOL isservice = FALSE;
- char *arg0 = argv[0];
-
- while (--argc) {
- ++argv;
- if (**argv == '/' || **argv == '-') {
- switch (tolower((*argv)[1])) {
- case 'c':
- notinmode |= ENABLE_LINE_INPUT; break;
- case 'l':
- newinmode |= ENABLE_LINE_INPUT; break;
- case 'q':
- notinmode |= ENABLE_ECHO_INPUT; break;
- case 'e':
- newinmode |= ENABLE_ECHO_INPUT; break;
- case 'u':
- notinmode |= ENABLE_PROCESSED_INPUT; break;
- case 'p':
- newinmode |= ENABLE_PROCESSED_INPUT; break;
- case 'n':
- notoutmode |= ENABLE_WRAP_AT_EOL_OUTPUT; break;
- case 'w':
- newoutmode |= ENABLE_WRAP_AT_EOL_OUTPUT; break;
- case 'r':
- notoutmode |= ENABLE_PROCESSED_OUTPUT; break;
- case 'f':
- newoutmode |= ENABLE_PROCESSED_OUTPUT; break;
- case 'o':
- if (*(argv + 1) && *(argv + 1)[0] != '-') {
- *(++argv);
- timeout = atoi(*argv) / 1000;
- --argc;
- }
- else {
- timeout = 0;
- }
- break;
- case 'v':
- verbose = TRUE;
- break;
- case 't':
- contitle = *(++argv);
- --argc;
- break;
- case '?':
- printf(options, arg0);
- exit(1);
- default:
- printf("wintty option %s not recognized, use -? for help.\n\n", *argv);
- exit(1);
- }
- }
- else {
- printf("wintty argument %s not understood, use -? for help.\n\n", *argv);
- exit(1);
- }
- }
-
- hproc = GetCurrentProcess();
- hsavewinsta = GetProcessWindowStation();
- if (!hsavewinsta || hsavewinsta == INVALID_HANDLE_VALUE) {
- printerr("GetProcessWindowStation() failed (%d)\n", GetLastError());
- }
- else if (!GetUserObjectInformation(hsavewinsta, UOI_NAME, str, sizeof(str), &len)) {
- printerr("GetUserObjectInfoformation(hWinSta) failed (%d)\n", GetLastError());
- }
- else if (strnicmp(str, "Service-", 8) == 0) {
- printerr("WindowStation Name %s is a service\n", str);
- isservice = TRUE;
- }
- SetLastError(0);
-
- hstdin = GetStdHandle(STD_INPUT_HANDLE);
- if (!hstdin || hstdin == INVALID_HANDLE_VALUE) {
- printerr("GetStdHandle(STD_INPUT_HANDLE) failed (%d)\n",
- GetLastError());
- }
- else if (DuplicateHandle(hproc, hstdin, hproc, &hdup, 0,
- isservice, DUPLICATE_SAME_ACCESS)) {
- CloseHandle(hstdin);
- hstdin = hdup;
- }
- else {
- printerr("DupHandle(stdin [%x]) failed (%d)\n",
- hstdin, GetLastError());
- }
-
- hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
- if (!hstdout || hstdout == INVALID_HANDLE_VALUE) {
- printerr("GetStdHandle(STD_OUTPUT_HANDLE) failed (%d)\n",
- GetLastError());
- }
- else if (DuplicateHandle(hproc, hstdout, hproc, &hdup, 0,
- isservice, DUPLICATE_SAME_ACCESS)) {
- CloseHandle(hstdout);
- hstdout = hdup;
- }
- else {
- printerr("DupHandle(stdout [%x]) failed (%d)\n",
- hstdout, GetLastError());
- }
-
- hstderr = GetStdHandle(STD_ERROR_HANDLE);
- if (!hstderr || hstderr == INVALID_HANDLE_VALUE) {
- printerr("GetStdHandle(STD_ERROR_HANDLE) failed (%d)\n",
- GetLastError());
- }
- else if (DuplicateHandle(hproc, hstderr, hproc, &hdup, 0,
- isservice, DUPLICATE_SAME_ACCESS)) {
- CloseHandle(hstderr);
- hstderr = hdup;
- }
- else {
- printerr("DupHandle(stderr [%x]) failed (%d)\n",
- hstderr, GetLastError());
- }
-
- /* You can't close the console till all the handles above were
- * rescued by DuplicateHandle()
- */
- if (!FreeConsole())
- printerr("FreeConsole() failed (%d)\n", GetLastError());
-
- if (isservice) {
-#ifdef WE_EVER_FIGURE_OUT_WHY_THIS_DOESNT_WORK
- hsavedesk = GetThreadDesktop(GetCurrentThreadId());
- if (!hsavedesk || hsavedesk == INVALID_HANDLE_VALUE) {
- printerr("GetThreadDesktop(GetTID()) failed (%d)\n", GetLastError());
- }
- CloseWindowStation(hwinsta);
- hwinsta = OpenWindowStation("WinSta0", TRUE, MAXIMUM_ALLOWED);
- if (!hwinsta || hwinsta == INVALID_HANDLE_VALUE) {
- printerr("OpenWinSta(WinSta0) failed (%d)\n", GetLastError());
- }
- else if (!SetProcessWindowStation(hwinsta)) {
- printerr("SetProcWinSta(WinSta0) failed (%d)\n", GetLastError());
- }
- hdesk = OpenDesktop("Default", 0, TRUE, MAXIMUM_ALLOWED);
- if (!hdesk || hdesk == INVALID_HANDLE_VALUE) {
- printerr("OpenDesktop(Default) failed (%d)\n", GetLastError());
- }
- else if (!SetThreadDesktop(hdesk)) {
- printerr("SetThreadDesktop(Default) failed (%d)\n", GetLastError());
- }
-#else
- PROCESS_INFORMATION pi;
- STARTUPINFO si;
- DWORD exitcode = 1;
- char appbuff[MAX_PATH];
- char *appname = NULL;
- char *cmdline = GetCommandLine();
-
- if (!GetModuleFileName(NULL, appbuff, sizeof(appbuff))) {
- appname = appbuff;
- }
-
- memset(&si, 0, sizeof(si));
- si.cb = sizeof(si);
- si.dwFlags = STARTF_USESHOWWINDOW
- | STARTF_USESTDHANDLES;
- si.lpDesktop = "WinSta0\\Default";
- si.wShowWindow = 1; /* SW_SHOWNORMAL */
- si.hStdInput = hstdin;
- si.hStdOutput = hstdout;
- si.hStdError = hstderr;
-
- /* Instantly, upon creating the new process, we will close our
- * copies of the handles so our parent isn't confused when the
- * child closes their copy of the handle. Without this action,
- * we would hold a copy of the handle, and the parent would not
- * receive their EOF notification.
- */
- if (CreateProcess(appname, cmdline, NULL, NULL, TRUE,
- CREATE_SUSPENDED | CREATE_NEW_CONSOLE,
- NULL, NULL, &si, &pi)) {
- CloseHandle(si.hStdInput);
- CloseHandle(si.hStdOutput);
- CloseHandle(si.hStdError);
- ResumeThread(pi.hThread);
- CloseHandle(pi.hThread);
- WaitForSingleObject(pi.hProcess, INFINITE);
- GetExitCodeProcess(pi.hProcess, &exitcode);
- CloseHandle(pi.hProcess);
- return exitcode;
- }
- return 1;
-#endif
- }
-
- if (!AllocConsole()) {
- printerr("AllocConsole(Default) failed (%d)\n", GetLastError());
- }
-
- if (contitle && !SetConsoleTitle(contitle)) {
- printerr("SetConsoleTitle() failed (%d)\n", GetLastError());
- }
-
- conout = CreateFile("CONOUT$", GENERIC_READ | GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- FALSE, OPEN_EXISTING, 0, NULL);
- if (!conout || conout == INVALID_HANDLE_VALUE) {
- printerr("CreateFile(CONOUT$) failed (%d)\n", GetLastError());
- }
- else if (!GetConsoleMode(conout, &conmode)) {
- printerr("GetConsoleMode(CONOUT) failed (%d)\n", GetLastError());
- }
- else if (!SetConsoleMode(conout, conmode = ((conmode | newoutmode)
- & ~notoutmode))) {
- printerr("SetConsoleMode(CONOUT, 0x%x) failed (%d)\n",
- conmode, GetLastError());
- }
-
- conin = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- FALSE, OPEN_EXISTING, 0, NULL);
- if (!conin || conin == INVALID_HANDLE_VALUE) {
- printerr("CreateFile(CONIN$) failed (%d)\n", GetLastError());
- }
- else if (!GetConsoleMode(conin, &conmode)) {
- printerr("GetConsoleMode(CONIN) failed (%d)\n", GetLastError());
- }
- else if (!SetConsoleMode(conin, conmode = ((conmode | newinmode)
- & ~notinmode))) {
- printerr("SetConsoleMode(CONIN, 0x%x) failed (%d)\n",
- conmode, GetLastError());
- }
-
- feed.in = conin;
- feed.out = hstdout;
- thread = CreateThread(NULL, 0, feedback, (LPVOID)&feed, 0, &tid);
-
- while (ReadFile(hstdin, str, sizeof(str), &len, NULL))
- if (!len || !WriteFile(conout, str, len, &len, NULL))
- break;
-
- printerr("[EOF] from stdin (%d)\n", GetLastError());
-
- CloseHandle(stdout);
- if (!GetConsoleTitle(str, sizeof(str))) {
- printerr("SetConsoleTitle() failed (%d)\n", GetLastError());
- }
- else {
- strcat(str, " - [Finished]");
- if (!SetConsoleTitle(str)) {
- printerr("SetConsoleTitle() failed (%d)\n", GetLastError());
- }
- }
-
- WaitForSingleObject(thread, timeout);
- FreeConsole();
- if (isservice) {
- if (!SetProcessWindowStation(hsavewinsta)) {
- len = GetLastError();
- }
- if (!SetThreadDesktop(hsavedesk)) {
- len = GetLastError();
- }
- CloseDesktop(hdesk);
- CloseWindowStation(hwinsta);
- }
- return 0;
-}
-
-
-DWORD WINAPI feedback(LPVOID arg)
-{
- feedback_args_t *feed = (feedback_args_t*)arg;
- char *str[1024];
- DWORD len;
-
- while (ReadFile(feed->in, str, sizeof(str), &len, NULL))
- if (!len || !WriteFile(feed->out, str, len, &len, NULL))
- break;
-
- printerr("[EOF] from Console (%d)\n", GetLastError());
-
- return 0;
-}
diff --git a/rubbos/app/httpd-2.0.64/support/win32/wintty.dsp b/rubbos/app/httpd-2.0.64/support/win32/wintty.dsp
deleted file mode 100644
index 17e7c33c..00000000
--- a/rubbos/app/httpd-2.0.64/support/win32/wintty.dsp
+++ /dev/null
@@ -1,123 +0,0 @@
-# Microsoft Developer Studio Project File - Name="wintty" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=wintty - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "wintty.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "wintty.mak" CFG="wintty - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "wintty - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "wintty - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "wintty - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "APR_DECLARE_STATIC" /D "APU_DECLARE_STATIC" /FD /c
-# ADD CPP /nologo /MD /W3 /Zi /O2 /I "../srclib/apr/include" /I "../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "APR_DECLARE_STATIC" /D "APU_DECLARE_STATIC" /Fd"Release/wintty_src" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console
-# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /opt:ref
-
-!ELSEIF "$(CFG)" == "wintty - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "APR_DECLARE_STATIC" /D "APU_DECLARE_STATIC" /FD /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../srclib/apr/include" /I "../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "APR_DECLARE_STATIC" /D "APU_DECLARE_STATIC" /Fd"Debug/wintty_src" /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /incremental:no /debug
-# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /incremental:no /debug
-
-!ENDIF
-
-# Begin Target
-
-# Name "wintty - Win32 Release"
-# Name "wintty - Win32 Debug"
-# Begin Source File
-
-SOURCE=..\..\build\win32\win32ver.awk
-
-!IF "$(CFG)" == "wintty - Win32 Release"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Creating Version Resource
-InputPath=..\..\build\win32\win32ver.awk
-
-".\wintty.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- awk -f ../../build/win32/win32ver.awk wintty.exe "wintty Console Utility" ../../include/ap_release.h > .\wintty.rc
-
-# End Custom Build
-
-!ELSEIF "$(CFG)" == "wintty - Win32 Debug"
-
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build - Creating Version Resource
-InputPath=..\..\build\win32\win32ver.awk
-
-".\wintty.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- awk -f ../../build/win32/win32ver.awk wintty.exe "wintty Console Utility" ../../include/ap_release.h > .\wintty.rc
-
-# End Custom Build
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=.\wintty.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\wintty.rc
-# End Source File
-# End Target
-# End Project