private void SelectPage(int pptNum) { lockPptNum = pptNum; lockPageNum = ppt[pptNum].ActiveWindow.Selection.SlideRange.SlideNumber; ///lock한 ppt와page 넘버 서버에게전송 //packetType = LOCK try { Console.WriteLine("select"); byte[] buffer = new byte[1024 * 4]; lockPacket = new LockPacket(); lockPacket.type = (int)PacketType.LOCK; lockPacket.pptNum = pptNum; lockPacket.pageNum = lockPageNum; Packet.Serialize(lockPacket).CopyTo(buffer, 0); stream.Write(buffer, 0, buffer.Length); stream.Flush(); } catch (Exception e) { Console.WriteLine("SelectPage() 에러 : " + e.Message); } }
public void Run() { BlindSocket socket; socket = _Main.lockPortSock.AcceptWithECDH(); IPEndPoint iep = (IPEndPoint)(socket.socket.RemoteEndPoint); logger = new Logger(_cid, iep.Address.ToString(), LogService.ScreenLock); while (true) { byte[] data = socket.CryptoReceiveMsg(); if (data == null) { socket.Close(); logger.Log(LogRank.INFO, "BlindLock Disconnected"); return; } //인증 여기서 LockPacket packet = BlindNetUtil.ByteToStruct <LockPacket>(data); if (packet.Type == lockType.INFO) { logger.Log(LogRank.INFO, "Unlock try from out of Local"); LockInfo info = BlindNetUtil.ByteToStruct <LockInfo>(packet.data); if (CheckUserValid(info.userName, info.password)) { logger.Log(LogRank.INFO, "Unlock try Succeed!"); packet.Type = lockType.SUCCESS; packet.data = new byte[60]; data = BlindNetUtil.StructToByte(packet); socket.CryptoSend(data, PacketType.MSG); } else { logger.Log(LogRank.WARN, "Unlock try Failed!"); packet.Type = lockType.FAILED; packet.data = new byte[60]; data = BlindNetUtil.StructToByte(packet); socket.CryptoSend(data, PacketType.MSG); } } } }
private void btn_Unlock_Click(object sender, EventArgs e) { if (!isInner)//vpn으로 연결되어 있는 경우 { MessageBox.Show("VPN용 락"); //서버로 정보 전송 LockInfo info = new LockInfo(); info.userName = UserID; info.password = tb_Password.Text; byte[] data = BlindNetUtil.StructToByte(info); LockPacket packet = new LockPacket(); packet.Type = lockType.INFO; packet.data = data; MessageBox.Show("패킷 생성"); byte[] packetData = BlindNetUtil.StructToByte(packet); lockSock.CryptoSend(packetData, PacketType.Info); MessageBox.Show("send msg"); //서버로부터 받은 성공여부로 스크린락 해제 data = lockSock.CryptoReceiveMsg(); MessageBox.Show("received msg"); packet = BlindNetUtil.ByteToStruct <LockPacket>(data); if (packet.Type == lockType.SUCCESS) { tb_Password.Text = ""; ActivateWhenUnlock(); } else { MessageBox.Show("서버로부터의 인증에 실패하셨습니다."); tb_Password.Text = ""; tb_Password.Focus(); return; } } else//로컬에서 인증하는 경우 { int token; bool result; if (tb_Password.Text == "unlock") { result = true; } else { result = LogonUser(Environment.UserName, "Blind2A", tb_Password.Text, 8, 0, out token); } if (result) { tb_Password.Text = ""; ActivateWhenUnlock(); } else { MessageBox.Show("로컬에서 인증을 실패하셨습니다."); return; } } }
public void handle() { try { int nRead = 0; byte[] buffer = new byte[1024 * 4]; while (true) { networkStream.Flush(); nRead = 0; nRead = networkStream.Read(buffer, 0, buffer.Length); Packet packet = (Packet)Packet.Desserialize(buffer); if (packet == null) { Console.WriteLine("handle null "); } switch ((int)packet.type) { case (int)PacketType.LISTVIEW: { listPacket = (ListPacket)Packet.Desserialize(buffer); this.name = listPacket.listName; isAddName = true; Console.WriteLine("handle listviewtype " + listPacket.listName); break; } case (int)PacketType.UPLOAD: { Console.WriteLine("handle upload type"); Upload(2); break; } case (int)PacketType.LOCK: { lockPacket = (LockPacket)Packet.Desserialize(buffer); lockPageNum = lockPacket.pageNum; lockPptNum = lockPacket.pptNum; Console.WriteLine("handle lock type" + lockPacket.pageNum); askLock = true; break; } case (int)PacketType.SAVE: { Console.WriteLine("handle client : save "); savePacket = (SavePacket)Packet.Desserialize(buffer); isAddSlide = savePacket.isAdd; savePptNum = savePacket.pptNum; savePageNum = savePacket.pageNum; long fileSize = savePacket.fileSize; //저장할슬라이드가있는 피피티파일을 읽어와 'slide_handle.pptx'생성후 저장 string _Path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); byte[] myReadBuffer = new byte[fileSize]; int numberOfBytesRead = 0; saveFileName = _Path + @"\" + "slide_handle.pptx"; FileInfo fileInfo = new FileInfo(saveFileName); if (fileInfo.Exists == true) { File.Delete(this.saveFileName); } FileStream fs = new FileStream(saveFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length); fs.Write(myReadBuffer, 0, numberOfBytesRead); fs.Close(); askSave = true; break; } } } } catch { if (client.Connected == false) { Console.WriteLine("connected end"); isConnect = false; thread.Abort(); client.Close(); } } }