Skip to content

Commit 3eda4ce

Browse files
author
root
committed
[Client]완전삭제버튼 기능 추가완료
1 parent ddd9dd8 commit 3eda4ce

File tree

2 files changed

+165
-10
lines changed

2 files changed

+165
-10
lines changed

src/glade/bxr_plover

4.66 KB
Binary file not shown.

src/glade/main.c

Lines changed: 165 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
#define MAX_ERROR_MSG 0x1000
2626
#define MAX_CNTF 50 // 최대 검출 파일 개수 //
27+
#define ERASER_SIZE 512 //1k
28+
#define ERASER_ENC_SIZE 896 //1k
2729

2830
typedef struct Data_storage
2931
{
@@ -42,17 +44,20 @@ typedef struct Data_storage
4244
data_storage ds[MAX_CNTF]; // 파일기준의 data구조체 //
4345

4446
static gchar *path; // 검사 파일경로 //
45-
static gchar *vsf_path; // 검사결과 리스트 선택 파일경로 //
47+
4648
static int cntf = 0; // 파일개수 cnt //
4749
static char chk_fname[20]; // 정규식돌고있는 파일이름 //
50+
static char chk_fpath[1024]; // 검출 결과에서 선택한 파일경로 //
51+
static uint chk_fsize; // 검출 결과에서 선택한 파일크기 //
4852
static int chk_tf; // chk_true or false //
4953
//uint data_flag = 1; // 민감정보 종류 확인 flag //
5054

5155

5256
GtkWidget *detect_window,
5357
*setting_window,
5458
*d_progressbar_status,
55-
*d_progressbar;
59+
*d_progressbar,
60+
*window;
5661

5762
GtkEntry *d_detect_entry;
5863

@@ -712,6 +717,126 @@ int detect_func(gchar *path)
712717
}
713718
/* end of detect_func(); */
714719

720+
// gtk_dialog_modal
721+
int func_gtk_dialog_modal(int type, GtkWidget *widget, char *message)
722+
{
723+
GtkWidget *dialog, *label, *content_area;
724+
GtkDialogFlags flags = GTK_DIALOG_MODAL;
725+
int rtn = GTK_RESPONSE_REJECT;
726+
727+
switch(type)
728+
{
729+
case 0 :
730+
dialog = gtk_dialog_new_with_buttons("Dialog", GTK_WINDOW(widget), flags,
731+
("_OK"), GTK_RESPONSE_ACCEPT, NULL );
732+
break;
733+
734+
case 1 :
735+
dialog = gtk_dialog_new_with_buttons("Dialog", GTK_WINDOW(widget), flags,
736+
("_OK"), GTK_RESPONSE_ACCEPT,
737+
("_Cancel"), GTK_RESPONSE_REJECT, NULL );
738+
break;
739+
740+
default :
741+
break;
742+
}
743+
744+
label=gtk_label_new(message);
745+
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
746+
gtk_container_add (GTK_CONTAINER (content_area), label);
747+
gtk_widget_show_all(dialog);
748+
749+
rtn = gtk_dialog_run(GTK_DIALOG(dialog));
750+
gtk_widget_destroy(dialog);
751+
return(rtn);
752+
}
753+
754+
// 삭제 //
755+
int func_file_eraser(int type)
756+
{
757+
FILE *fp;
758+
int mode = R_OK | W_OK;
759+
char MsgTmp[5];
760+
gdouble size = 0.0;
761+
char *msize;
762+
763+
if( access( chk_fpath, mode ) != 0 )
764+
{
765+
func_gtk_dialog_modal(0, window, "\n 파일이 삭제 가능한 상태가 아닙니다. \n");
766+
}
767+
768+
else
769+
{
770+
msize = malloc(ERASER_SIZE);
771+
fp = fopen(chk_fpath, "w");
772+
773+
for( int i=0 ; i < type ; i++ )
774+
{
775+
size = 0;
776+
777+
while (size<chk_fsize)
778+
{
779+
switch(i)
780+
{
781+
case 0 :
782+
MsgTmp[0] = 'A';
783+
memset( msize, MsgTmp[0], ERASER_SIZE );
784+
break;
785+
786+
case 1 :
787+
MsgTmp[0] = '^';
788+
memset( msize, MsgTmp[0], ERASER_SIZE );
789+
break;
790+
791+
case 2 :
792+
srand(time(NULL));
793+
if( size < ERASER_SIZE )
794+
for( int j=0 ; j < ERASER_SIZE ; j++ )
795+
msize[j] = 'A' + (random() % 26);
796+
break;
797+
798+
case 3 :
799+
MsgTmp[0] = 'Z';
800+
memset( msize, MsgTmp[0], ERASER_SIZE );
801+
break;
802+
803+
case 4 :
804+
MsgTmp[0] = 'A';
805+
memset( msize, MsgTmp[0], ERASER_SIZE );
806+
break;
807+
808+
case 5 :
809+
MsgTmp[0] = '^';
810+
memset( msize, MsgTmp[0], ERASER_SIZE );
811+
break;
812+
813+
case 6 :
814+
srand(time(NULL));
815+
if( size < ERASER_SIZE )
816+
for( int j=0 ; j < ERASER_SIZE ; j++ )
817+
msize[j] = 'A' + (random() % 26);
818+
break;
819+
820+
default :
821+
break;
822+
}
823+
}
824+
825+
fseek( fp, 0L, SEEK_SET );
826+
}
827+
828+
fclose(fp);
829+
free(msize);
830+
}
831+
832+
remove( chk_fpath );
833+
func_gtk_dialog_modal(0, window, "\n 삭제가 완료되었습니다. \n");
834+
835+
return( TRUE );
836+
}
837+
// end of func_file_eraser(); //
838+
839+
715840
// 계정이 있는지 확인: TRUE(1)=있다 FALSE(0)=없다 //
716841
int chk_user()
717842
{
@@ -807,22 +932,29 @@ view_selection_func (GtkTreeSelection *selection,
807932
gpointer userdata)
808933
{
809934
GtkTreeIter iter;
810-
935+
gchar *vs_fpath;
936+
guint vs_fsize = 0;
937+
811938
if (gtk_tree_model_get_iter(model, &iter, path))
812939
{
813-
gtk_tree_model_get(model, &iter, d_treeview_filelocation, &vsf_path, -1);
940+
gtk_tree_model_get(model, &iter, d_treeview_filelocation, &vs_fpath, -1);
941+
gtk_tree_model_get(model, &iter, d_treeview_size, vs_fsize, -1);
814942

815943
if (!path_currently_selected)
816944
{
817-
g_print ("%s 선택.\n", vsf_path);
945+
g_print ("%s 선택.\n", vs_fpath);
818946
}
819947

820948
else
821949
{
822-
g_print ("%s 선택 해제.\n", vsf_path);
950+
g_print ("%s 선택 해제.\n", vs_fpath);
823951
}
824-
825-
g_free(vsf_path);
952+
953+
strcpy(chk_fpath ,vs_fpath);
954+
chk_fsize = vs_fsize;
955+
956+
g_free(vs_fpath);
957+
vs_fsize = 0;
826958
}
827959

828960
return TRUE; /* allow selection state to change */
@@ -1003,8 +1135,29 @@ void d_encrypt_btn_clicked (GtkButton *d_encrypt_btn, gpointer *data)//미구현
10031135
return;
10041136
}
10051137

1006-
void d_delete_btn_clicked (GtkButton *d_delete_btn, gpointer *data)//미구현//
1138+
void d_delete_btn_clicked (GtkButton *d_delete_btn, gpointer *data)
10071139
{
1140+
char message[1024];
1141+
1142+
if( chk_fpath[0] == 0x00 )
1143+
{
1144+
func_gtk_dialog_modal(0, window, "\n 대상파일이 선택되지 않았습니다. \n");
1145+
}
1146+
else
1147+
{
1148+
sprintf( message,
1149+
"\n 삭제 후에 복구가 불가능 합니다.\n 아래 파일을 삭제하시겠습니까?\n [ %s ] \n", chk_fpath);
1150+
1151+
if( func_gtk_dialog_modal(1, window, message) == GTK_RESPONSE_ACCEPT)
1152+
{
1153+
func_file_eraser(3);
1154+
}
1155+
else
1156+
{
1157+
printf("취소 되었습니다.\n");
1158+
}
1159+
}
1160+
10081161
return;
10091162
}
10101163

@@ -1050,7 +1203,7 @@ void s_cloese_btn_clicked (GtkButton *setting_window, gpointer *data)
10501203
// main //
10511204
int main (int argc, char *argv[])
10521205
{
1053-
GtkBuilder *builder;
1206+
GtkBuilder *builder;
10541207
GtkWidget *main_window,
10551208
*enrollment_window;
10561209

@@ -1089,6 +1242,8 @@ int main (int argc, char *argv[])
10891242
gtk_widget_show(main_window);
10901243
gtk_main();
10911244
}
1245+
1246+
gtk_widget_show(window);
10921247

10931248
return 0;
10941249
}

0 commit comments

Comments
 (0)