• Home
  • Raw
  • Download

Lines Matching refs:ci

286     client_info *ci = (client_info *)calloc(1, sizeof(client_info));  in Accept()  local
287 if (!ci) in Accept()
290 ci->socket = socket; in Accept()
293 sprintf(ci->addr_str, "%s:%d", address, addr.sin_port); in Accept()
295 return ci; in Accept()
330 client_info *ci = (client_info *)client_info_ptr; in ChildToSocket() local
336 if (!ReadFile(ci->hChildOutputRead, in ChildToSocket()
345 Send(ci->socket, buffer, bytes_read); in ChildToSocket()
349 closesocket(ci->socket); in ChildToSocket()
355 client_info *ci = (client_info *)client_info_ptr; in SocketToChild() local
359 AppendMessage("Shell server: new client connected (%s)", ci->addr_str); in SocketToChild()
364 bytes_received = recv(ci->socket, buffer, sizeof(buffer), 0); in SocketToChild()
370 ci->addr_str, formatted_buffer); in SocketToChild()
373 SendMessage(ci->hwnd, WM_CHAR, buffer[i], 0); in SocketToChild()
374 SendMessage(ci->hwnd, WM_SETFOCUS, 0, 0); in SocketToChild()
378 AppendMessage("Shell server: client disconnected (%s)", ci->addr_str); in SocketToChild()
382 sprintf(buffer, "taskkill /PID %d /T /F", ci->pid); in SocketToChild()
385 TerminateJobObject(ci->hJob, 0); in SocketToChild()
387 WaitForSingleObject(ci->hThreadChildToSocket, 10000); in SocketToChild()
389 TerminateThread(ci->hThreadChildToSocket, 0); in SocketToChild()
391 closesocket(ci->socket); in SocketToChild()
394 CloseHandle(ci->hJob); in SocketToChild()
395 CloseHandle(ci->hThreadChildToSocket); in SocketToChild()
396 CloseHandle(ci->hChildOutputRead); in SocketToChild()
397 free(ci); in SocketToChild()
403 void PrepAndLaunchRedirectedChild(client_info *ci, in PrepAndLaunchRedirectedChild() argument
440 ci->pid = pi.dwProcessId; in PrepAndLaunchRedirectedChild()
442 ci->hJob = CreateJobObject(NULL, NULL); in PrepAndLaunchRedirectedChild()
443 AssignProcessToJobObject(ci->hJob, pi.hProcess); in PrepAndLaunchRedirectedChild()
445 ci->hwnd = GetConsoleWindow(); in PrepAndLaunchRedirectedChild()
451 void SpawnSession(client_info *ci) in SpawnSession() argument
490 PrepAndLaunchRedirectedChild(ci, hOutputWrite, hErrorWrite); in SpawnSession()
492 ci->hChildOutputRead = hOutputRead; in SpawnSession()
512 client_info *ci = Accept(ListenSocket); in ShellListenThread() local
513 if (!ci) break; in ShellListenThread()
517 Send(ci->socket, message, strlen(message)); in ShellListenThread()
519 SpawnSession(ci); in ShellListenThread()
521 hThread = CreateThread(NULL, 0, ChildToSocket, (LPVOID)ci, 0, NULL); in ShellListenThread()
524 ci->hThreadChildToSocket = hThread; in ShellListenThread()
526 hThread = CreateThread(NULL, 0, SocketToChild, (LPVOID)ci, 0, NULL); in ShellListenThread()
571 BOOL SendFileChunks(client_info *ci, const char *filename) in SendFileChunks() argument
577 int bytes_read = fread(ci->chunk_buffer, 1, ci->chunk_size, fp); in SendFileChunks()
578 if (!SendPacket(ci->socket, ci->chunk_buffer, bytes_read)) in SendFileChunks()
580 if (bytes_read < ci->chunk_size) { in SendFileChunks()
595 BOOL ReceiveFileChunks(client_info *ci, const char *filename) in ReceiveFileChunks() argument
601 int bytes_received = ReceivePacket(ci->socket, ci->chunk_buffer, in ReceiveFileChunks()
602 ci->chunk_size); in ReceiveFileChunks()
606 if (fwrite(ci->chunk_buffer, bytes_received, 1, fp) < 1) in ReceiveFileChunks()
608 if (bytes_received < ci->chunk_size) { in ReceiveFileChunks()
631 int TerminateTransfer(client_info *ci, const char *message) in TerminateTransfer() argument
635 ci->addr_str); in TerminateTransfer()
636 closesocket(ci->socket); in TerminateTransfer()
637 free(ci->chunk_buffer); in TerminateTransfer()
638 free(ci); in TerminateTransfer()
642 int TerminateWithError(client_info *ci, const char *message) in TerminateWithError() argument
644 SendMsg(ci->socket, RSS_ERROR); in TerminateWithError()
645 SendPacket(ci->socket, message, strlen(message)); in TerminateWithError()
646 return TerminateTransfer(ci, message); in TerminateWithError()
649 int ReceiveThread(client_info *ci) in ReceiveThread() argument
654 AppendMessage("Client (%s) wants to upload files", ci->addr_str); in ReceiveThread()
657 if (!Receive(ci->socket, (char *)&msg, 4)) in ReceiveThread()
658 return TerminateTransfer(ci, "Could not receive further msgs"); in ReceiveThread()
662 if (ReceiveStrPacket(ci->socket, path, sizeof(path)) < 0) in ReceiveThread()
663 return TerminateWithError(ci, in ReceiveThread()
665 AppendMessage("Client (%s) set path to %s", ci->addr_str, path); in ReceiveThread()
667 return TerminateWithError(ci, in ReceiveThread()
672 if (ReceiveStrPacket(ci->socket, filename, sizeof(filename)) < 0) in ReceiveThread()
673 return TerminateWithError(ci, in ReceiveThread()
677 AppendMessage("Client (%s) is uploading %s", ci->addr_str, path); in ReceiveThread()
678 if (!ReceiveFileChunks(ci, path)) in ReceiveThread()
679 return TerminateWithError(ci, in ReceiveThread()
686 if (ReceiveStrPacket(ci->socket, filename, sizeof(filename)) < 0) in ReceiveThread()
687 return TerminateWithError(ci, in ReceiveThread()
694 return TerminateWithError(ci, in ReceiveThread()
698 return TerminateWithError(ci, in ReceiveThread()
709 if (!SendMsg(ci->socket, RSS_OK)) in ReceiveThread()
710 return TerminateTransfer(ci, in ReceiveThread()
715 return TerminateWithError(ci, "Received unexpected msg"); in ReceiveThread()
722 int SendFiles(client_info *ci, const char *pattern) in SendFiles() argument
750 if (!SendMsg(ci->socket, RSS_CREATE_DIR)) { in SendFiles()
752 return TerminateTransfer(ci, in SendFiles()
755 if (!SendPacket(ci->socket, ffd.cFileName, in SendFiles()
758 return TerminateTransfer(ci, "Could not send dirname"); in SendFiles()
760 if (!SendFiles(ci, path)) { in SendFiles()
764 if (!SendMsg(ci->socket, RSS_LEAVE_DIR)) { in SendFiles()
766 return TerminateTransfer(ci, in SendFiles()
775 AppendMessage("Client (%s) is downloading %s", ci->addr_str, path); in SendFiles()
784 if (!SendMsg(ci->socket, RSS_CREATE_FILE)) { in SendFiles()
786 return TerminateTransfer(ci, in SendFiles()
789 if (!SendPacket(ci->socket, ffd.cFileName, in SendFiles()
792 return TerminateTransfer(ci, "Could not send filename"); in SendFiles()
794 if (!SendFileChunks(ci, path)) { in SendFiles()
796 return TerminateTransfer(ci, "Could not send file contents"); in SendFiles()
807 return TerminateWithError(ci, "FindNextFile failed"); in SendFiles()
811 int SendThread(client_info *ci) in SendThread() argument
816 AppendMessage("Client (%s) wants to download files", ci->addr_str); in SendThread()
819 if (!Receive(ci->socket, (char *)&msg, 4)) in SendThread()
820 return TerminateTransfer(ci, "Could not receive further msgs"); in SendThread()
824 if (ReceiveStrPacket(ci->socket, pattern, sizeof(pattern)) < 0) in SendThread()
825 return TerminateWithError(ci, in SendThread()
827 AppendMessage("Client (%s) asked for %s", ci->addr_str, pattern); in SendThread()
829 return TerminateWithError(ci, in SendThread()
831 if (!SendFiles(ci, pattern)) in SendThread()
833 if (!SendMsg(ci->socket, RSS_DONE)) in SendThread()
834 return TerminateTransfer(ci, in SendThread()
839 return TerminateWithError(ci, "Received unexpected msg"); in SendThread()
846 client_info *ci = (client_info *)client_info_ptr; in TransferThreadEntry() local
850 ci->addr_str); in TransferThreadEntry()
852 if (!SendMsg(ci->socket, RSS_MAGIC)) in TransferThreadEntry()
853 return TerminateTransfer(ci, "Could not send greeting message"); in TransferThreadEntry()
854 if (!Receive(ci->socket, (char *)&ci->chunk_size, 4)) in TransferThreadEntry()
855 return TerminateTransfer(ci, "Error receiving chunk size"); in TransferThreadEntry()
856 AppendMessage("Client (%s) set chunk size to %d", ci->addr_str, in TransferThreadEntry()
857 ci->chunk_size); in TransferThreadEntry()
858 if (ci->chunk_size > 1048576 || ci->chunk_size < 512) in TransferThreadEntry()
859 return TerminateWithError(ci, "Client set invalid chunk size"); in TransferThreadEntry()
860 if (!(ci->chunk_buffer = (char *)malloc(ci->chunk_size))) in TransferThreadEntry()
861 return TerminateWithError(ci, "Memory allocation error"); in TransferThreadEntry()
862 if (!Receive(ci->socket, (char *)&msg, 4)) in TransferThreadEntry()
863 return TerminateTransfer(ci, "Error receiving msg"); in TransferThreadEntry()
866 return ReceiveThread(ci); in TransferThreadEntry()
868 return SendThread(ci); in TransferThreadEntry()
869 return TerminateWithError(ci, "Received unexpected msg"); in TransferThreadEntry()
880 client_info *ci = Accept(ListenSocket); in FileTransferListenThread() local
881 if (!ci) break; in FileTransferListenThread()
882 if (!CreateThread(NULL, 0, TransferThreadEntry, (LPVOID)ci, 0, NULL)) in FileTransferListenThread()