Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
                    }
                }
            }
        }
Beispiel #3
0
        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;
                }
            }
        }
Beispiel #4
0
        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();
                }
            }
        }