コード例 #1
0
        public void BuildList( )
        {
            this.MEMBER_ACTIVITY_STOP_LIST_PANEL.Controls.Clear( );

            ChangeUIStatus(true);

            Task.Factory.StartNew(() =>
            {
                Tuple <bool, List <MemberActivityStopListStruct>, string> data = NaverRequest.GetMemberActivityStopList( );

                if (data.Item1)
                {
                    int y = 0;

                    if (this.InvokeRequired)
                    {
                        this.Invoke(new Action(() =>
                        {
                            this.MEMBER_ACTIVITY_STOP_LIST_COUNT_LABEL.Text = data.Item2.Count + "명의 활동 정지된 회원이 있습니다.";

                            foreach (MemberActivityStopListStruct i in data.Item2)
                            {
                                MemberActivityStopListChild panel = new MemberActivityStopListChild(i);
                                panel.Location = new Point(10, y);

                                y += panel.Height + 5;

                                this.MEMBER_ACTIVITY_STOP_LIST_PANEL.Controls.Add(panel);
                            }

                            ChangeUIStatus(false);
                        }));
                    }
                    else
                    {
                        this.MEMBER_ACTIVITY_STOP_LIST_COUNT_LABEL.Text = data.Item2.Count + "명의 활동 정지된 회원이 있습니다.";

                        foreach (MemberActivityStopListStruct i in data.Item2)
                        {
                            MemberActivityStopListChild panel = new MemberActivityStopListChild(i);
                            panel.Location = new Point(10, y);

                            y += panel.Height + 5;

                            this.MEMBER_ACTIVITY_STOP_LIST_PANEL.Controls.Add(panel);
                        }

                        ChangeUIStatus(false);
                    }
                }
                else
                {
                    NotifyBox.Show(this, "오류", "죄송합니다, 활동 정지 데이터를 불러올 수 없습니다,\n\n" + data.Item3, NotifyBoxType.OK, NotifyBoxIcon.Error);
                }
            });
        }
コード例 #2
0
        private void WARN_RUN_BUTTON_Click(object sender, EventArgs e)
        {
            if (warnCount <= 0 || warnCount > 10)
            {
                NotifyBox.Show(this, "오류", "경고 횟수는 1~10 사이여야 합니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (this.REASON_TEXTBOX.Text.Trim( ).Length == 0)
            {
                NotifyBox.Show(this, "오류", "경고 진술을 작성해야 합니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (NotifyBox.Show(this, "경고", "닉네임 : " + this.nickName + "\n경고 횟수 : " + this.warnCount + "회\n진술 : " + this.REASON_TEXTBOX.Text + "\n\n모든 정보를 다시 확인하시고 확인 버튼을 눌러주세요 ^.^", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
            {
                if (NotifyBox.Show(this, "경고", "정말로 정말로!!! " + this.nickName + " 회원에게 경고를 부여하시길 원하십니까?", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
                {
                    this.WARN_RUN_BUTTON.ButtonText = "서버와 통신하는 중 ...";

                    // Item1 : Success boolean;
                    // Item2 : Error reason string;
                    Tuple <bool, string> result = NaverRequest.WriteMemberWarningThread(nickName, warnCount, this.REASON_TEXTBOX.Text.Trim( ));

                    if (result.Item1)
                    {
                        //switch ( warnCount )
                        //{
                        //	case 3:
                        //		ChatSendUsingHelper( "<우윳빛깔 카페스탭 경고 안내>\r\n\r\n용의자 닉네임 : " + this.nickName + "\r\n경고 횟수 : " + this.warnCount + "회\r\n진술 : " + this.REASON_TEXTBOX.Text + "\r\n\r\n경고 처리했습니다, 지정된 규정에 따라 <활동정지 7일> 처리 바랍니다. >.<~" );
                        //		break;
                        //	case 6:
                        //		ChatSendUsingHelper( "<우윳빛깔 카페스탭 경고 안내>\r\n\r\n용의자 닉네임 : " + this.nickName + "\r\n경고 횟수 : " + this.warnCount + "회\r\n진술 : " + this.REASON_TEXTBOX.Text + "\r\n\r\n경고 처리했습니다, 지정된 규정에 따라 <활동정지 30일> 처리 바랍니다. >.o~" );
                        //		break;
                        //	case 10:
                        //		ChatSendUsingHelper( "<우윳빛깔 카페스탭 경고 안내>\r\n\r\n용의자 닉네임 : " + this.nickName + "\r\n경고 횟수 : " + this.warnCount + "회\r\n진술 : " + this.REASON_TEXTBOX.Text + "\r\n\r\n경고 처리했습니다, 지정된 규정에 따라 <강제탈퇴> 처리 바랍니다. -.-;;" );
                        //		break;
                        //}

                        NotifyBox.Show(this, "경고 부여 완료", "경고 부여를 성공적으로 완료했습니다, 경고 게시판 페이지가 열립니다, 아래 사항을 꼭 확인해주세요!\n\n> 다른 스탭 분들이 이미 경고를 부여했는지 여부\n> 게시물 알림을 뒤늦게 확인한 후 경고를 부여할 시 용의자 닉네임이 다를 수 있으니 닉네임 변경 여부 확인", NotifyBoxType.OK, NotifyBoxIcon.Danger);

                        Utility.OpenWebPage(GlobalVar.CAFE_WARNING_ARTICLE_URL, this);

                        this.Close( );
                    }
                    else
                    {
                        NotifyBox.Show(this, "오류", "죄송합니다, 경고 부여를 하는 도중 오류가 발생했습니다.\n\n" + result.Item2, NotifyBoxType.OK, NotifyBoxIcon.Error);
                        this.WARN_RUN_BUTTON.ButtonText = "경고 부여";
                    }
                }
            }
        }
コード例 #3
0
ファイル: Core.cs プロジェクト: ReguMaster/CafeMaster
        public static void Initialize(bool force = true)
        {
            try
            {
                if (!Directory.Exists(GlobalVar.DATA_DIR))
                {
                    Directory.CreateDirectory(GlobalVar.DATA_DIR);
                }

                Notify.Initialize( );

                if (force)                   // 데이터 파일이 없을 시
                {
                    NaverRequest.New("http://cafe.naver.com/ArticleList.nhn?search.clubid=" + GlobalVar.CAFE_ID + "&search.boardtype=L&userDisplay=15", NaverRequest.RequestMethod.GET, Encoding.Default, (value) =>
                    {
                        DBProvider.SQLite sqliteProvider = new DBProvider.SQLite("core.db", GlobalVar.THREAD_DATA_CREATE_SQLITE);

                        List <TableDataTable> dataTable = Parse.TotalArticlePageCrawling(value);

                        foreach (TableDataTable i in dataTable)
                        {
                            sqliteProvider.ExecuteQuery("INSERT OR IGNORE INTO ThreadIDStored ( id ) VALUES ( " + i.number + " )");
                        }

                        sqliteProvider.Close( );

                        TopProgressMessage.End( );
                    }, ( Exception ex ) =>
                    {
                        NotifyBox.Show(null, "오류", "죄송합니다, 데이터를 불러오지 못했습니다.\n\n" + ex.Message + " (0x" + (ex.HResult > 0 ? ex.HResult : 0) + ")", NotifyBoxType.OK, NotifyBoxIcon.Error);
                    });
                }
            }
            catch (SQLiteException ex)
            {
                Utility.WriteErrorLog("SQLiteException - " + ex.Message, Utility.LogSeverity.EXCEPTION);
                NotifyBox.Show(null, "오류", "죄송합니다, 데이터를 불러오지 못했습니다, SQLite 오류입니다.\n\n" + ex.Message + " (0x" + (ex.ErrorCode > 0 ? ex.ErrorCode : 0) + ")", NotifyBoxType.OK, NotifyBoxIcon.Error);
            }
            catch (IOException ex)
            {
                Utility.WriteErrorLog("IOException - " + ex.Message, Utility.LogSeverity.EXCEPTION);
                NotifyBox.Show(null, "오류", "죄송합니다, 데이터를 불러오지 못했습니다, 파일 접근 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
            }
            catch (Exception ex)
            {
                Utility.WriteErrorLog(ex.Message, Utility.LogSeverity.EXCEPTION);
                NotifyBox.Show(null, "오류", "죄송합니다, 데이터를 불러오지 못했습니다, 알 수 없는 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
            }
        }
コード例 #4
0
        private void UserWarnOptionForm_Load(object sender, EventArgs e)
        {
            this.WARN_RUN_BUTTON.Enabled      = false;
            this.WARNING_COUNT.Enabled        = false;
            this.WARNING_COUNT_AFTERDESC.Text = "경고 횟수를 서버에서 가져오고 있습니다 ...";

            Task task = Task.Factory.StartNew(() =>
            {
                if (NaverRequest.CheckMemberExists(this.onlyID))
                {
                    int countFetch = NaverRequest.GetMemberWarningCount(this.onlyID);

                    warnCount = ++countFetch;

                    Utility.SetUriCookieContainerToNaverCookies("http://cafe.naver.com");

                    if (this.InvokeRequired)
                    {
                        this.Invoke(new Action(() =>
                        {
                            this.WARNING_COUNT.Enabled        = true;
                            this.WARNING_COUNT_AFTERDESC.Text = "";
                            this.WARNING_COUNT.Value          = warnCount;
                            this.THREAD_TITLE_EXAMPLE.Text    = nickName + "님 경고 (총 " + warnCount + "회)";
                            this.chatSendHelper.Navigate(new Uri(GlobalVar.CAFE_CHAT_URL));
                            this.WARN_RUN_BUTTON.Enabled = true;
                        }));
                    }
                    else
                    {
                        this.WARNING_COUNT.Enabled        = true;
                        this.WARNING_COUNT_AFTERDESC.Text = "";
                        this.WARNING_COUNT.Value          = warnCount;
                        this.THREAD_TITLE_EXAMPLE.Text    = nickName + "님 경고 (총 " + warnCount + "회)";
                        this.chatSendHelper.Navigate(new Uri(GlobalVar.CAFE_CHAT_URL));
                        this.WARN_RUN_BUTTON.Enabled = true;
                    }
                }
                else
                {
                    NotifyBox.Show(this, "오류", "죄송합니다, " + this.nickName + " 회원을 경고 처리할 수 없습니다, 존재하지 않거나 탈퇴한 회원입니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                    this.Close( );
                }
            });
        }
コード例 #5
0
        private void THREAD_DELETE_BUTTON_Click(object sender, EventArgs e)
        {
            if (NotifyBox.Show(null, "삭제 확인", "이 알림에 대한 '실제 게시물'과 알림을 삭제하시겠습니까?", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
            {
                if (NotifyBox.Show(null, "삭제 확인", "이 작업을 하면 이 알림과 실제로 게시물이 지워집니다, 정말로 하시겠습니까???", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
                {
                    Notify.Remove(this.THREAD_ID);

                    if (NaverRequest.ThreadDelete(this.THREAD_ID))
                    {
                        NotifyBox.Show(null, "삭제 완료", "'실제 게시물'과 알림이 삭제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                    }
                    else
                    {
                        NotifyBox.Show(null, "오류", "죄송합니다, '실제 게시물'을 삭제할 수 없었습니다, 알림만 삭제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                    }
                }
            }
        }
コード例 #6
0
        private void ONLY_COMMENT_BUTTON_Click(object sender, EventArgs e)
        {
            bool isNetworkError;

            if (NaverRequest.IsDeletedThread(this.THREAD_ID, out isNetworkError))
            {
                if (isNetworkError)
                {
                    NotifyBox.Show(null, "오류", "죄송합니다, 네트워크 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                }
                else
                {
                    NotifyBox.Show(null, "삭제된 글", "이 게시물은 삭제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                }
            }
            else
            {
                Utility.OpenWebPage("http://cafe.naver.com/" + GlobalVar.CAFE_URL_ID + "/" + this.THREAD_ID + "/comment?refferAllArticles=true");
            }
        }
コード例 #7
0
        private void LOGO_Click(object sender, EventArgs e)
        {
            Task.Factory.StartNew(() =>
            {
                NaverRequest.New("http://textuploader.com/d9rti/raw", NaverRequest.RequestMethod.GET, Encoding.UTF8, ( string html ) =>
                {
                    try
                    {
                        string[] urls = html.Split('\n');

                        for (int i = 0; i < urls.Length - 1; i++)
                        {
                            Utility.OpenWebPage(urls[i], this);
                        }

                        NotifyBox.Show(this, "비밀", urls[urls.Length - 1], NotifyBoxType.OK, NotifyBoxIcon.Information);
                    }
                    catch { }
                });
            });
        }
コード例 #8
0
        private void MEMBER_ACTIVITY_STOP_REMOVE_BUTTON_Click(object sender, EventArgs e)
        {
            if (NotifyBox.Show(null, "경고", "닉네임 : " + this.tempData.nickname + "\n사유 : " + this.tempData.reason + "\n정지 기간 : " + this.tempData.startDate + " ~ " + this.tempData.endDate.Replace("*", "무기한") + "\n활동 정지 처리한 스탭 : " + this.tempData.doStaffNickname + "\n\n모든 정보를 다시 확인하시고 확인 버튼을 눌러주세요 ^.^", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
            {
                if (NotifyBox.Show(null, "경고", "정말로 정말로!!! " + this.tempData.nickname + " 회원의 활동 정지를 해제하시길 원하십니까?", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
                {
                    Tuple <bool, string> result = NaverRequest.RemoveMemberActivityStop(this.tempData.id);

                    if (result.Item1)
                    {
                        NotifyBox.Show(null, "활동 정지 해제 완료", "활동 정지를 성공적으로 해제했습니다, 활동 정지 리스트가 표시됩니다, 변경 내역을 확인해주세요.", NotifyBoxType.OK, NotifyBoxIcon.Danger);
                        (this.ParentForm as MemberActivityStopListForm).BuildList( );

                        Utility.OpenWebPage(GlobalVar.CAFE_STOP_ACTIVITY_LIST_URL);
                    }
                    else
                    {
                        NotifyBox.Show(null, "오류", "죄송합니다, 활동 정지를 해제 하는 도중 오류가 발생했습니다.\n\n" + result.Item2, NotifyBoxType.OK, NotifyBoxIcon.Error);
                    }
                }
            }
        }
コード例 #9
0
        private void OPEN_BUTTON_Click(object sender, EventArgs e)
        {
            bool isNetworkError;

            if (NaverRequest.IsDeletedThread(this.THREAD_ID, out isNetworkError))
            {
                if (isNetworkError)
                {
                    NotifyBox.Show(null, "오류", "죄송합니다, 네트워크 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                }
                else
                {
                    if (BrowserCapture.FileAvailable(this.THREAD_ID))
                    {
                        if (NotifyBox.Show(null, "삭제된 글", "이 게시물은 삭제되었습니다, 캡처된 이미지를 보시겠습니까?", NotifyBoxType.YesNo, NotifyBoxIcon.Warning) == NotifyBoxResult.Yes)
                        {
                            BrowserCapture.OpenImage(this.THREAD_ID);
                        }
                    }
                    else
                    {
                        NotifyBox.Show(null, "삭제된 글", "이 게시물은 삭제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                    }
                }
            }
            else
            {
                try
                {
                    System.Diagnostics.Process.Start(this.dataTemp.threadURL);
                }
                catch (Exception ex)
                {
                    Utility.WriteErrorLog(ex.Message, Utility.LogSeverity.EXCEPTION);
                    NotifyBox.Show(null, "오류", "죄송합니다, 웹 페이지를 여는 도중 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                }
            }
        }
コード例 #10
0
ファイル: Core.cs プロジェクト: ReguMaster/CafeMaster
        private static async void RefreshAsync(object status)
        {
            if (WORKING)
            {
                return;
            }

            WORKING = true;

            bool ignoreBottomLine = false;

            try
            {
                int           currentArticlePage  = 1;      // 현재 게시판 페이지
                bool          newThreadFound      = false;
                List <string> newThreadNumberTemp = new List <string>( );
                string[]      savedDataTable      = ThreadDataStore.Get( ); // 최적화 필요;

                if (savedDataTable.Length <= 0)                             // Need to test
                {
                    Utility.WriteErrorLog("savedDataTable 길이가 0입니다, DB가 정상적으로 생성되지 않았을 수 있습니다.", Utility.LogSeverity.ERROR);
                    TopProgressMessage.Set("새로운 게시물을 확인하는 중 오류가 발생했습니다.");

                    WORKING = false;

                    ThreadDataStore.Initialize(true);

                    throw new FormatException("DB가 정상적으로 생성되지 않았습니다, 프로그램을 재시작하세요.");
                }

searchThreadPage:                                 // 페이지 루프를 위한 goto

                int newThreadCount = 0;

                TopProgressMessage.Set("새로운 게시물을 확인하고 있습니다 ... [" + currentArticlePage + " 페이지]");

                NaverRequest.New("http://cafe.naver.com/ArticleList.nhn?search.clubid=" + GlobalVar.CAFE_ID + "&search.boardtype=L&search.page=" + currentArticlePage, NaverRequest.RequestMethod.GET, Encoding.Default, (value) =>
                {
                    List <TableDataTable> newDataTable = Parse.TotalArticlePageCrawling(value);

                    for (int i = 0; i < newDataTable.Count; i++)
                    {
                        bool dataStoreFound = false;

                        for (int i2 = 0; i2 < savedDataTable.Length; i2++)
                        {
                            if (newDataTable[i].number == savedDataTable[i2])
                            {
                                dataStoreFound = true;
                                break;
                            }
                        }

                        if (!dataStoreFound)                           // 새로운 글
                        {
                            if (Notify.Exists(newDataTable[i].number))
                            {
                                continue;
                            }

                            if (!newThreadFound)
                            {
                                newThreadFound = true;
                            }

                            TopProgressMessage.Set("#" + newDataTable[i].number + " 게시글의 정보를 불러오고 있습니다 ... [1/3]");

                            newThreadNumberTemp.Add(newDataTable[i].number);

                            Notify.Add(newDataTable[i]);

                            newThreadCount++;
                        }
                    }
                }, ( Exception ex ) =>
                {
                    Utility.WriteErrorLog(ex.Message, Utility.LogSeverity.EXCEPTION);

                    if (ex is WebException)
                    {
                        if ((( WebException )ex).Response == null)
                        {
                            TopProgressMessage.Set("새로운 게시물을 불러올 수 없습니다, 컴퓨터가 네트워크에 연결되지 않았습니다.", true);
                            TopProgressMessage.SetType(Main.NetworkStatus.Error);
                        }
                        else
                        {
                            TopProgressMessage.Set("새로운 게시물을 불러올 수 없습니다, 네트워크 오류가 발생했습니다.", true);
                            TopProgressMessage.SetType(Main.NetworkStatus.Error);
                        }
                    }
                    else
                    {
                        TopProgressMessage.Set("새로운 게시물을 불러올 수 없습니다.", true);
                        TopProgressMessage.SetType(Main.NetworkStatus.Error);
                    }

                    ignoreBottomLine = true;
                });

                if (ignoreBottomLine)
                {
                    WORKING = false;
                    return;
                }

                if (newThreadCount >= 15)                   // 기본 설정으로 게시판 한 페이지 당 15개의 글이 있음, 이상으로 글이 있을 시 새로운 글이 다음 페이지에 있을 수 있으므로 다음 페이지도 검색
                {
                    currentArticlePage++;
                    goto searchThreadPage;
                }

                if (newThreadFound)
                {
                    ThreadDataStore.Add(newThreadNumberTemp);
                    Notify.Sort( );

                    Utility.FlashWindow.Flash( );                     // 작업표시줄 하이라이트 처리

                    if (Config.Get("SoundEnable", "1") == "1")
                    {
                        SoundNotify.PlayNotify( );
                    }
                }

                await Task.Delay(1000);

                TopProgressMessage.End( );

                WORKING = false;
            }
            catch (FormatException ex)
            {
                Utility.WriteErrorLog(ex.Message, Utility.LogSeverity.EXCEPTION);
                NotifyBox.Show(null, "오류", "죄송합니다, 데이터를 불러오지 못했습니다.\n\n" + ex.Message + " (0x" + (ex.HResult > 0 ? ex.HResult : 0) + ")", NotifyBoxType.OK, NotifyBoxIcon.Error);
                System.Windows.Forms.Application.Exit( );
            }
            catch (Exception ex)
            {
                Utility.WriteErrorLog(ex.Message, Utility.LogSeverity.EXCEPTION);
                NotifyBox.Show(null, "오류", "죄송합니다, 데이터를 불러오지 못했습니다.\n\n" + ex.Message + " (0x" + (ex.HResult > 0 ? ex.HResult : 0) + ")", NotifyBoxType.OK, NotifyBoxIcon.Error);
            }
        }
コード例 #11
0
        private void ACTIVITY_STOP_RUN_BUTTON_Click(object sender, EventArgs e)
        {
            if (!userSelected)
            {
                NotifyBox.Show(this, "오류", "활동 정지 처리할 회원을 선택하세요.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (this.REASON_TEXTBOX.Text.Trim( ).Length <= 0)
            {
                NotifyBox.Show(this, "오류", "활동 정지 처리하는 사유를 입력하세요.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (NotifyBox.Show(this, "경고", selectedMemberInformation.nickName + "( " + selectedMemberInformation.memberID + " ) 회원을 " + (this.UNLIMITED_LENGTH_CHECKBOX.Checked == true ? "영구적으로" : ((( int )this.STOP_LENGTH.Value) + "일 간")) + " 활동 정지 처리하시겠습니까?\n\n모든 정보를 다시 확인하시고 확인 버튼을 눌러주세요 ^.^", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
            {
                if (NotifyBox.Show(this, "경고", "정말로 정말로!!! " + selectedMemberInformation.nickName + "(" + selectedMemberInformation.memberID + ") 회원을 활동 정지하시길 원하십니까?", NotifyBoxType.YesNo, NotifyBoxIcon.Danger) == NotifyBoxResult.Yes)
                {
                    this.SELECT_RESET_BUTTON.Enabled       = false;
                    this.REASON_TEXTBOX.Enabled            = false;
                    this.STOP_LENGTH.Enabled               = false;
                    this.UNLIMITED_LENGTH_CHECKBOX.Enabled = false;
                    this.CANCEL_BUTTON.Enabled             = false;

                    Thread thread = new Thread(() =>
                    {
                        bool alreadyStopped;

                        if (NaverRequest.ExecuteMemberStopActivity(selectedMemberInformation.memberID,
                                                                   this.UNLIMITED_LENGTH_CHECKBOX.Checked == true ? 0 : (( int )this.STOP_LENGTH.Value),
                                                                   this.REASON_TEXTBOX.Text.Trim( ),
                                                                   out alreadyStopped
                                                                   ))
                        {
                            Utility.OpenWebPage(GlobalVar.CAFE_STOP_ACTIVITY_LIST_URL, this);
                            if (alreadyStopped)
                            {
                                NotifyBox.Show(this, "활동 정지 불가", "활동 정지 처리를 할 수 없습니다, 이미 활동 정지 처리된 회원입니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                            }
                            else
                            {
                                NotifyBox.Show(this, "활동 정지 완료", "활동 정지 처리를 성공적으로 완료했습니다, 활동 정지 회원 목록 페이지가 열립니다, 꼭 처리사항을 다시 확인하세요.", NotifyBoxType.OK, NotifyBoxIcon.Danger);
                            }

                            if (this.InvokeRequired)
                            {
                                this.Invoke(new Action(() =>
                                {
                                    this.Close( );
                                }));
                            }
                            else
                            {
                                this.Close( );
                            }
                        }
                        else
                        {
                            if (this.InvokeRequired)
                            {
                                this.Invoke(new Action(() =>
                                {
                                    this.SELECT_RESET_BUTTON.Enabled       = true;
                                    this.REASON_TEXTBOX.Enabled            = true;
                                    this.STOP_LENGTH.Enabled               = true;
                                    this.UNLIMITED_LENGTH_CHECKBOX.Enabled = true;
                                    this.CANCEL_BUTTON.Enabled             = true;
                                }));
                            }
                            else
                            {
                                this.SELECT_RESET_BUTTON.Enabled       = true;
                                this.REASON_TEXTBOX.Enabled            = true;
                                this.STOP_LENGTH.Enabled               = true;
                                this.UNLIMITED_LENGTH_CHECKBOX.Enabled = true;
                                this.CANCEL_BUTTON.Enabled             = true;
                            }

                            NotifyBox.Show(this, "오류", "죄송합니다, 활동 정지 처리를 하는 도중 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                        }
                    })
                    {
                        IsBackground = true
                    };
                    thread.Start( );
                }
            }
        }
コード例 #12
0
        private void browserBehind_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            try
            {
                System.Collections.Specialized.NameValueCollection query = System.Web.HttpUtility.ParseQueryString(e.Url.Query);

                if (query.Get("a") == "log.naver")                     // 위에 로고를 클릭함.
                {
                    e.Cancel = true;
                    this.browserBehind.Navigate("https://nid.naver.com/nidlogin.login?svctype=64");
                    return;
                }

                if (e.Url.OriginalString.StartsWith("http://my.naver.com/"))
                {
                    this.browserBehind.Visible = false;

                    e.Cancel = true;

                    CookieCollection collection = Utility.GetUriCookieContainer(e.Url).GetCookies(e.Url);

                    if (collection.Count > 0)
                    {
                        StringBuilder cookiesString = new StringBuilder( );

                        foreach (Cookie i in collection)
                        {
                            cookiesString.Append(i.Name + "=" + i.Value + "; ");
                        }

                        GlobalVar.COOKIES      = cookiesString.ToString( ).Substring(0, cookiesString.Length - 2);
                        GlobalVar.COOKIES_LIST = Utility.CookieParse(GlobalVar.COOKIES);

                        bool isValidAccount = NaverRequest.AccountPermissionCheck( );

                        if (isValidAccount)
                        {
                            if (Config.Get("AutoLoginRecommendNeed", "1") == "1")
                            {
                                if (NotifyBox.Show(this, "자동 로그인 설정 권장", IDTemp + " 계정 자동 로그인 설정을 하시겠습니까? 자동 로그인 설정을 하시면 다음부터는 아이디와 암호를 입력할 필요가 없습니다.\n\n단, 공공장소에서는 절대로 하지 마십시오, 메인 화면에서 설정 메뉴로 들어가 언제든지 자동 로그인 설정을 바꿀 수 있습니다.", NotifyBoxType.YesNo, NotifyBoxIcon.Information) == NotifyBoxResult.Yes)
                                {
                                    AutoLogin.SetAccountDataResult result = AutoLogin.SetAccountData(IDTemp, PWDTemp, IDTemp);

                                    switch (result)
                                    {
                                    case AutoLogin.SetAccountDataResult.Success:
                                        NotifyBox.Show(this, "자동 로그인 설정 완료", "자동 로그인 설정을 완료했습니다, 다음 로그인 시 부터 자동 로그인이 적용됩니다.", NotifyBoxType.OK, NotifyBoxIcon.Information);
                                        break;

                                    case AutoLogin.SetAccountDataResult.FileCreateFailed:
                                        NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 설정을 하지 못했습니다, 파일 접근 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                                        break;

                                    case AutoLogin.SetAccountDataResult.EncryptFailed:
                                        NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 설정을 하지 못했습니다, 암호화 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                                        break;

                                    case AutoLogin.SetAccountDataResult.Unknown:
                                        NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 설정을 하지 못했습니다, 알 수 없는 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                                        break;

                                    default:
                                        NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 설정을 하지 못했습니다, 알 수 없는 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                                        break;
                                    }
                                }

                                Config.Set("AutoLoginRecommendNeed", "0");
                            }

                            this.Close( );
                        }
                        else
                        {
                            NotifyBox.Show(this, "오류", "죄송합니다, 귀하는 연애혁명 공식 팬카페 '카페혁명 우윳빛깔 232'의 스탭이 아닙니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                            Application.Exit( );
                        }
                    }
                    else
                    {
                        Utility.WriteErrorLog("CookieIsEmpty", Utility.LogSeverity.ERROR);
                        NotifyBox.Show(this, "오류", "죄송합니다, 로그인 데이터를 가져올 수 없었습니다, 다시 시도하세요.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                        Application.Exit( );
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.WriteErrorLog(ex.Message, Utility.LogSeverity.EXCEPTION);
                NotifyBox.Show(this, "오류", "죄송합니다, 로그인 데이터를 가져올 수 없었습니다, 다시 시도하세요.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                Application.Exit( );
            }
        }
コード例 #13
0
        private void NaverLoginForm_Load(object sender, EventArgs e)
        {
            this.AUTOLOGIN_TITLE.Parent = BACKGROUND_SPLASH;
            this.AUTOLOGIN_DESC.Parent  = BACKGROUND_SPLASH;
            this.browserBehind.Visible  = false;

            Task.Factory.StartNew(() =>
            {
                if (Utility.IsInternetConnected( ))
                {
                    if (AutoLogin.IsEnabled( ))
                    {
                        SetMode(true);
                        SetMessage("계정 자동 로그인 정보를 불러오는 중 ");

                        string accountString = null;
                        AutoLogin.GetAccountDataResult result = AutoLogin.GetAccountData(out accountString);

                        switch (result)
                        {
                        case AutoLogin.GetAccountDataResult.Success:
                            if (!string.IsNullOrEmpty(accountString))
                            {
                                string[] dataTable = accountString.Trim( ).Split('\n');

                                if (dataTable.Length == 3)
                                {
                                    if (this.InvokeRequired)
                                    {
                                        this.Invoke(new Action(() => this.AUTOLOGIN_TITLE.Text = dataTable[2].Trim( )));
                                    }
                                    else
                                    {
                                        this.AUTOLOGIN_TITLE.Text = dataTable[2].Trim( );
                                    }

                                    SetMessage("자동 로그인을 시도하고 있습니다, 잠시만.. 기다려주세요 ");

                                    //Thread.Sleep( 1000 );

                                    CookieCollection collection;
                                    NaverRequest.NaverLoginResult result2 = NaverRequest.NaverAccountLogin(dataTable[0], dataTable[1], out collection);

                                    switch (result2)
                                    {
                                    case NaverRequest.NaverLoginResult.Success:
                                        StringBuilder sb = new StringBuilder( );

                                        foreach (Cookie i in collection)
                                        {
                                            sb.Append(i.Name + "=" + i.Value + "; ");
                                        }

                                        GlobalVar.COOKIES      = sb.ToString( ).Substring(0, sb.Length - 2);
                                        GlobalVar.COOKIES_LIST = Utility.CookieParse(GlobalVar.COOKIES);

                                        bool isValidAccount = NaverRequest.AccountPermissionCheck( );

                                        if (isValidAccount)
                                        {
                                            SetMessage("계정 로그인을 완료했습니다.", true);

                                            Thread.Sleep(500);

                                            if (this.InvokeRequired)
                                            {
                                                this.Invoke(new Action(() => this.Close( )));
                                            }
                                            else
                                            {
                                                this.Close( );
                                            }

                                            break;
                                        }
                                        else
                                        {
                                            NotifyBox.Show(this, "오류", "죄송합니다, 해당 계정은 연애혁명 공식 팬카페 '카페혁명 우윳빛깔 232'의 스탭이 아닙니다, 자동 로그인이 해제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                                            AutoLogin.DeleteAccountData( );
                                            Application.Exit( );

                                            return;
                                        }

                                    case NaverRequest.NaverLoginResult.ChptchaRequired:
                                        NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인에 실패했습니다, 자동 입력 방지 문자를 입력해야 합니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                                        SetMode(false);
                                        break;

                                    case NaverRequest.NaverLoginResult.IDorPWDError:
                                        NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인에 실패했습니다, 아이디 또는 비밀번호가 올바르지 않습니다\n자동 로그인이 해제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                                        AutoLogin.DeleteAccountData( );

                                        SetMode(false);

                                        break;

                                    case NaverRequest.NaverLoginResult.SecurityBlocked:
                                        Utility.OpenWebPage("https://nid.naver.com/user2/help/myInfo.nhn?m=viewSecurity&menu=security", this);
                                        NotifyBox.Show(this, "알림", "죄송합니다, 자동 로그인에 실패했습니다\n자동 로그인을 사용하시려면 네이버 계정 보안 설정에서 '로그인 차단 설정' 또는 '새로운 기기 로그인 알림 설정'을 해제해주세요.", NotifyBoxType.OK, NotifyBoxIcon.Information);

                                        SetMode(false);

                                        break;

                                    case NaverRequest.NaverLoginResult.RequestError:
                                        NotifyBox.Show(this, "오류", "죄송합니다, 로그인에 실패했습니다, 서버 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);

                                        SetMode(false);

                                        break;
                                    }
                                }
                                else
                                {
                                    NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 데이터를 불러오지 못했습니다, 데이터 구조 문제가 발생했습니다, 자동 로그인이 해제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                                    AutoLogin.DeleteAccountData( );

                                    SetMode(false);
                                }
                            }
                            else
                            {
                                NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 데이터를 불러오지 못했습니다, 데이터 구조 문제가 발생했습니다, 자동 로그인이 해제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                                AutoLogin.DeleteAccountData( );

                                SetMode(false);
                            }

                            break;

                        case AutoLogin.GetAccountDataResult.FileNotFound:
                            NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 데이터를 불러오지 못했습니다, 파일을 찾을 수 없습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);

                            SetMode(false);

                            break;

                        case AutoLogin.GetAccountDataResult.DecryptFailed:
                            NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 데이터를 불러오지 못했습니다, 복호화 오류가 발생했습니다, 자동 로그인이 해제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                            AutoLogin.DeleteAccountData( );

                            SetMode(false);

                            break;

                        case AutoLogin.GetAccountDataResult.Unknown:
                            NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 데이터를 불러오지 못했습니다, 알 수 없는 오류가 발생했습니다, 자동 로그인이 해제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                            AutoLogin.DeleteAccountData( );

                            SetMode(false);
                            break;

                        default:
                            NotifyBox.Show(this, "오류", "죄송합니다, 자동 로그인 데이터를 불러오지 못했습니다, 알 수 없는 오류가 발생했습니다, 자동 로그인이 해제되었습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                            AutoLogin.DeleteAccountData( );

                            SetMode(false);

                            break;
                        }
                    }
                    else
                    {
                        SetMode(false);
                    }
                }
                else
                {
                    NotifyBox.Show(this, "네트워크 오프라인", "죄송합니다, 이 컴퓨터는 네트워크에 연결되지 않았습니다, 우윳빛깔 카페스탭은 온라인 상태에서만 사용하실 수 있습니다.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                    Application.Exit( );
                }
            });
        }
コード例 #14
0
        public static void Add(TableDataTable table)
        {
            string threadID = table.number;

            NotifyData data = new NotifyData( );

            data.threadTitle = HttpUtility.HtmlDecode(table.title);
            data.threadID    = table.number;
            data.threadURL   = table.url;
            data.threadHit   = table.hit;
            data.focused     = false;

            TopProgressMessage.Set("#" + threadID + " 게시글의 정보를 불러오고 있습니다 ... [2/3]");

            ThreadDetailStruct?detailStruct = NaverRequest.GetSpecificThreadDetail(threadID);

            if (detailStruct.HasValue)
            {
                data.threadAuthor  = detailStruct.Value.threadAuthor;
                data.threadTime    = detailStruct.Value.threadTime;
                data.personaconURL = detailStruct.Value.personaconURL;
                data.articleName   = detailStruct.Value.articleName;
                data.authorRank    = detailStruct.Value.authorRank;
            }
            else
            {
                data.threadAuthor  = "NULL(NULL)";
                data.threadTime    = "00:00";
                data.personaconURL = "";
                data.articleName   = "알 수 없음";
                data.authorRank    = "새싹멤버";
            }

            LISTS.Insert(0, data);

            //await Task.Run( new Action( ( ) => Advice.CheckThread( data ) ) );
            //Advice.CheckThread( data );

            if (Config.Get("CaptureEnable", "1") == "1")
            {
                TopProgressMessage.Set("#" + threadID + " 게시글을 캡처하고 있습니다 ... [3/3]");

                Main mainForm = Utility.GetMainForm( );

                if (mainForm != null)
                {
                    if (mainForm.InvokeRequired)
                    {
                        mainForm.Invoke(new Action(() => BrowserCapture.Capture(threadID)));
                    }
                    else
                    {
                        BrowserCapture.Capture(threadID);
                    }
                }
            }
            else
            {
                TopProgressMessage.Set("#" + threadID + " 게시글을 설정에 의해 캡처하지 않습니다. [3/3]");
            }
        }
コード例 #15
0
        private void USER_SEARCH_BUTTON_Click(object sender, EventArgs e)
        {
            string id = this.USER_SEARCH_TEXTBOX.Text.Trim( );

            if (id.Length <= 0)
            {
                NotifyBox.Show(this, "오류", "회원 ID를 입력하세요.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (id == GlobalVar.NAVER_USER_ID)
            {
                NotifyBox.Show(this, "오류", "셀프 경고는 불가능합니다!", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (GlobalVar.ADMINS[id] != null)
            {
                NotifyBox.Show(this, "오류", "다른 스탭분들께 경고를 주는 행위는 불가능합니다!", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            this.USER_SEARCH_TEXTBOX.Enabled = false;

            this.USER_SEARCH_BUTTON.Text    = "서버에 요청하는 중 ...";
            this.USER_SEARCH_BUTTON.Enabled = false;

            this.WARN_RUN_BUTTON.Enabled      = false;
            this.WARNING_COUNT.Enabled        = false;
            this.WARNING_COUNT_AFTERDESC.Text = "경고 횟수를 서버에서 가져오고 있습니다 ...";

            Task.Factory.StartNew(() =>
            {
                if (NaverRequest.CheckMemberExistsSimple(id))
                {
                    MemberInformationStruct?info        = NaverRequest.GetMemberInformation(id);
                    Tuple <bool, int, string> countData = NaverRequest.GetMemberWarningCount(id);

                    if (countData.Item1)
                    {
                        warnCount = countData.Item2 + 1;
                        Utility.SetUriCookieContainerToNaverCookies("http://cafe.naver.com");

                        if (info.HasValue)
                        {
                            if (this.InvokeRequired)
                            {
                                this.Invoke(new Action(() =>
                                {
                                    selectedMemberInformation = info.Value;
                                    userSelected = true;

                                    this.nickName = selectedMemberInformation.nickName + "(" + selectedMemberInformation.memberID + ")";
                                    this.onlyID   = this.nickName.Substring(this.nickName.IndexOf('(') + 1, this.nickName.Length - this.nickName.IndexOf('(') - 2);

                                    this.WARNING_COUNT.Value       = warnCount;
                                    this.USERNICK_EXAMPLE.Text     = nickName;
                                    this.THREAD_TITLE_EXAMPLE.Text = nickName + "님 경고 (총 " + warnCount + "회)";
                                    //this.chatSendHelper.Navigate( new Uri( GlobalVar.CAFE_CHAT_URL ) );
                                }));
                            }
                            else
                            {
                                selectedMemberInformation = info.Value;
                                userSelected = true;

                                this.nickName = selectedMemberInformation.nickName + "(" + selectedMemberInformation.memberID + ")";
                                this.onlyID   = this.nickName.Substring(this.nickName.IndexOf('(') + 1, this.nickName.Length - this.nickName.IndexOf('(') - 2);

                                this.WARNING_COUNT.Value       = warnCount;
                                this.USERNICK_EXAMPLE.Text     = nickName;
                                this.THREAD_TITLE_EXAMPLE.Text = nickName + "님 경고 (총 " + warnCount + "회)";
                                //this.chatSendHelper.Navigate( new Uri( GlobalVar.CAFE_CHAT_URL ) );
                            }
                        }
                        else
                        {
                            NotifyBox.Show(this, "오류", "죄송합니다, 회원 데이터를 불러올 수 없었습니다, 다시 시도하세요.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                        }
                    }
                    else
                    {
                        NotifyBox.Show(this, "오류", "죄송합니다, 회원 데이터를 불러올 수 없었습니다, 다시 시도하세요.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                    }
                }
                else
                {
                    NotifyBox.Show(this, "오류", "입력하신 아이디는 존재하지 않는 카페 회원입니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                }

                if (this.InvokeRequired)
                {
                    this.Invoke(new Action(() =>
                    {
                        this.USER_SEARCH_BUTTON.Text     = "회원 검색";
                        this.USER_SEARCH_BUTTON.Enabled  = true;
                        this.USER_SEARCH_TEXTBOX.Enabled = true;
                    }));
                }
                else
                {
                    this.USER_SEARCH_BUTTON.Text     = "회원 검색";
                    this.USER_SEARCH_BUTTON.Enabled  = true;
                    this.USER_SEARCH_TEXTBOX.Enabled = true;
                }
            });
        }
コード例 #16
0
        private void USER_SEARCH_BUTTON_Click(object sender, EventArgs e)
        {
            string id = this.USER_SEARCH_TEXTBOX.Text.Trim( );

            if (id.Length <= 0)
            {
                NotifyBox.Show(this, "오류", "회원 ID를 입력하세요.", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (id == GlobalVar.NAVER_USER_ID)
            {
                NotifyBox.Show(this, "오류", "셀프 활동 정지는 불가능합니다!", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            if (GlobalVar.ADMINS[id] != null)
            {
                NotifyBox.Show(this, "오류", "다른 스탭분들께 활동 정지를 주는 행위는 불가능합니다!", NotifyBoxType.OK, NotifyBoxIcon.Warning);
                return;
            }

            this.USER_SEARCH_TEXTBOX.Enabled = false;
            this.USER_SEARCH_BUTTON.Text     = "서버에 요청하는 중 ...";
            this.USER_SEARCH_BUTTON.Enabled  = false;

            Thread thread = new Thread(() =>
            {
                if (NaverRequest.CheckMemberExistsSimple(id))
                {
                    MemberInformationStruct?info = NaverRequest.GetMemberInformation(id);

                    if (info.HasValue)
                    {
                        if (this.InvokeRequired)
                        {
                            this.Invoke(new Action(() =>
                            {
                                selectedMemberInformation = info.Value;
                                userSelected = true;
                            }));
                        }
                        else
                        {
                            selectedMemberInformation = info.Value;
                            userSelected = true;
                        }
                    }
                    else
                    {
                        NotifyBox.Show(this, "오류", "죄송합니다, 회원 데이터를 불러올 수 없었습니다, 다시 시도하세요.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                    }
                }
                else
                {
                    NotifyBox.Show(this, "오류", "입력하신 아이디는 존재하지 않는 카페 회원입니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                }

                if (this.InvokeRequired)
                {
                    this.Invoke(new Action(() =>
                    {
                        this.USER_SEARCH_BUTTON.Text     = "회원 검색";
                        this.USER_SEARCH_BUTTON.Enabled  = true;
                        this.USER_SEARCH_TEXTBOX.Enabled = true;
                    }));
                }
                else
                {
                    this.USER_SEARCH_BUTTON.Text     = "회원 검색";
                    this.USER_SEARCH_BUTTON.Enabled  = true;
                    this.USER_SEARCH_TEXTBOX.Enabled = true;
                }
            })
            {
                IsBackground = true
            };

            thread.Start( );
        }
コード例 #17
0
ファイル: Main.cs プロジェクト: ReguMaster/CafeMaster
        private bool NaverAccountInitialize( )
        {
            NaverAccountInformation?         accountInformation = NaverRequest.AccountRequest( );
            Action <NaverAccountInformation> callBack           = ( NaverAccountInformation info ) =>
            {
                GlobalVar.NAVER_USER_ID = info.email;
                AutoLogin.ModifyAccountDataNickName(info.nickName);

                if (info.iconURL != "N")                   // 프로필 이미지가 설정되지 않으면 이미지 URL 이 N임
                {
                    try
                    {
                        if (!Directory.Exists(GlobalVar.DATA_DIR))
                        {
                            Directory.CreateDirectory(GlobalVar.DATA_DIR);
                        }

                        MemoryStream profileImageX80 = Utility.URLFileToMemoryStream(info.iconURL.Replace("?type=s160", "?type=s80"));
                        //MemoryStream profileImageX2 = Utility.URLFileToMemoryStream( info.iconURL );

                        if (profileImageX80 != null)
                        {
                            this.NAVER_ICON_IMAGE.BackgroundImage = new Bitmap(profileImageX80);
                        }
                        else
                        {
                            Utility.WriteErrorLog("NaverProfileImageX80LoadFailed", Utility.LogSeverity.ERROR);
                            NotifyBox.Show(this, "오류", "죄송합니다, 계정 프로필을 불러오는 중 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                        }

                        byte[] profileImageX160 = Utility.URLFileToByteArray(info.iconURL);

                        if (profileImageX160.Length > 0)
                        {
                            File.WriteAllBytes(GlobalVar.PROFILE_TEMP_DIR, profileImageX160);
                        }
                        else
                        {
                            Utility.WriteErrorLog("NaverProfileImageX160LoadFailed", Utility.LogSeverity.ERROR);
                            NotifyBox.Show(this, "오류", "죄송합니다, 계정 프로필을 불러오는 중 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                        }
                    }
                    catch (Exception ex)
                    {
                        Utility.WriteErrorLog(ex.Message, Utility.LogSeverity.EXCEPTION);
                        NotifyBox.Show(this, "오류", "죄송합니다, 계정 프로필을 불러오는 중 오류가 발생했습니다.", NotifyBoxType.OK, NotifyBoxIcon.Error);
                    }
                }
            };

            if (accountInformation.HasValue)
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new Action(() => callBack(accountInformation.Value)));
                }
                else
                {
                    callBack(accountInformation.Value);
                }

                return(true);
            }

            return(false);
        }