Κεφάλαιο 3 Firewall 3.1 Εισαγωγή
4.8 Φόρμα Login in As User
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 116
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 117 Ο κώδικας:
LoginPanel.h
1014. //---
1015. #ifndef LoginPanelH 1016. #define LoginPanelH
1017. //--- 1018. #include <Classes.hpp>
1019. #include <Controls.hpp>
1020. #include <StdCtrls.hpp>
1021. #include <Forms.hpp>
1022. #include "beforelog.h"
1023. #include "afterlog.h"
1024. #include <Menus.hpp>
1025. //--- 1026. class TForm5 : public TForm
1027. {
1028. __published: // IDE-managed Components 1029. TFrame1 *Frame11;
1030. TFrame2 *Frame21;
1031. TMenuItem *Internet1;
1032. TMenuItem *FTP1;
1033. TMenuItem *Sendemail1;
1034. TMenuItem *elnet1;
1035. void __fastcall Frame11Button1Click(TObject *Sender);
1036. void __fastcall Frame21Button1Click(TObject *Sender);
1037. void __fastcall Frame21Button2Click(TObject *Sender);
1038. void __fastcall Frame21Button3Click(TObject *Sender);
1039. void __fastcall Internet1Click(TObject *Sender);
1040. void __fastcall FTP1Click(TObject *Sender);
1041. void __fastcall Sendemail1Click(TObject *Sender);
1042. void __fastcall elnet1Click(TObject *Sender);
1043. private: // User declarations
1044. public: // User declarations 1045. __fastcall TForm5(TComponent* Owner);
1046. int listindex;
1047. };
1048. //--- 1049. extern PACKAGE TForm5 *Form5;
1050. //--- 1051. #endif
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 118 LoginPanel.cpp
1052. //---
1053. #include <vcl.h>
1054. #include <stdio.h> /*gia to reuma tou arxeiou*/
1055. #pragma hdrstop
1056. #include "LoginPanel.h" /* login user */
1057. #include "Console1.h" /* connection with Form3*/
1058. #include "Login.h" /* Sundesh me Form1 thn login toy admin*/
1059. #include "Firewall.h" /* Syndesh me thn Form6 firewall control panel*/
1060. #include "ibrowser.h"
1061. #include "ftp.h" /* Syndesh me thn Form8 Ftp client*/
1062. #include "mail.h" /* Syndesh me thn Form12 Email*/
1063. #include "md5.cpp"* Περιιγράφεται στην ενότητα 4.13
1064. USEFORM("Login.cpp",Form1);
1065. USEFORM("Console1.cpp",Form3);
1066. USEFORM("Firewall.cpp",Form6);
1067. USEFORM("ibrowser.cpp",Form7);
1068. USEFORM("ftp.cpp",Form8);
1069. USEFORM("mail.cpp",Form12);
1070. //--- 1071. #pragma package(smart_init)
1072. #pragma link "beforelog"
1073. #pragma link "afterlog"
1074. #pragma resource "*.dfm"
1075. TForm5 *Form5;
1076. void loggerIn() //function otan kaneis login 1077. {
1078. FILE *fp;
1079. TDateTime today;
1080. today = Now();
1081. int id = Form1->ADOTable2->FieldByName("ID_Users")->AsInteger;
1082. AnsiString usr = Form5->Frame11->Edit1->Text.c_str();
1083. AnsiString dt = DateTimeToStr(today).c_str();
1084. fp = fopen("c:\\Ptyxiakh\\log\\log.txt","a"); // logger
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 119 1085. fprintf(fp,"%d",id);
1086. fprintf(fp,"%s"," ");
1087. fprintf(fp,"%s",usr);
1088. fprintf(fp,"%s"," ");
1089. fprintf(fp,"logged in %s",dt );
1090. fprintf(fp,"\n");
1091. fclose(fp);
1092. Form3->ListBox2->Items->Add("Id:"+IntToStr(id)+" "+usr+" logged in at "+dt);
1093. }
1094. void loggerOut() //function otan kaneis logout 1095. {
1096. FILE *fp;
1097. TDateTime today;
1098. today = Now();
1099. int id = Form1->ADOTable2->FieldByName("ID_Users")->AsInteger;
1100. AnsiString usr = Form5->Frame11->Edit1->Text.c_str();
1101. AnsiString dt = DateTimeToStr(today).c_str();
1102. fp = fopen("c:\\Ptyxiakh\\log\\log.txt","a"); // logger
1103. fprintf(fp,"%d",Form1->ADOTable2->FieldByName("ID_Users")->AsInteger);
1104. fprintf(fp,"%s"," ");
1105. fprintf(fp,"%s",Form5->Frame11->Edit1->Text.c_str());
1106. fprintf(fp,"%s"," ");
1107. fprintf(fp,"logged Out %s",DateTimeToStr(today).c_str() );
1108. fprintf(fp,"\n");
1109. fclose(fp);
1110. Form3->ListBox2->Items->Add("Id:"+IntToStr(id)+" "+usr+" logged out at
"+dt);
1111. }
1112. void loggerError() //function otan ginei eisagwgh lanthasmenoy username h password
1113. {
1114. FILE *fp;
1115. TDateTime today;
1116. today = Now();
1117. int id = Form1->ADOTable2->FieldByName("ID_Users")->AsInteger;
1118. AnsiString usr = Form5->Frame11->Edit1->Text.c_str();
1119. AnsiString dt = DateTimeToStr(today).c_str();
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 120 1120. fp = fopen("c:\\Ptyxiakh\\log\\log.txt","a"); // logger
1121. fprintf(fp,"%d",Form1->ADOTable2->FieldByName("ID_Users")->AsInteger);
1122. fprintf(fp,"%s"," ");
1123. fprintf(fp,"%s",Form5->Frame11->Edit1->Text.c_str());
1124. fprintf(fp,"%s"," ");
1125. fprintf(fp,"Username or Pass missmatch %s",DateTimeToStr(today).c_str() );
1126. fprintf(fp,"\n");
1127. fclose(fp);
1128. Form3->ListBox2->Items->Add("Id:"+IntToStr(id)+" "+usr+" error login at
"+dt);
1129. }
1130. //--- 1131. __fastcall TForm5::TForm5(TComponent* Owner)
1132. : TForm(Owner) 1133. {
1134. listindex=-1;
1135. }
1136. //---
1137. void __fastcall TForm5::Frame11Button1Click(TObject *Sender) 1138. {
1139. TLocateOptions Opts1;
1140. Variant locvalues[2];
1141. Opts1.Clear();
1142. char hash[35];
1143. strcpy(hash,Frame11->Edit2->Text.c_str()); //md5 function 1144. strcpy(hash,md5(hash).c_str());
1145. locvalues[0]=Frame11->Edit1->Text; //username 1146. locvalues[1]=hash; //password
1147. if( Form1->ADOTable2->Locate("Username;MD5 Hash",VarArrayOf(locvalues,1),Opts1))
1148. {
1149. AnsiString username = Frame11->Edit1->Text; //pedio username sthn forma (loginpanel.dfm)
1150. AnsiString password = Frame11->Edit2->Text; //pedio password sthn forma (loginpanel.dfm)
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 121 1151. loggerIn();
1152. Frame11->Hide();
1153. Frame21->Edit1->Text = Frame11->Edit1->Text; //apla metaferei tin timh apo to log sto log in to username
1154. Frame21->Show();
1155. Form3->ListBox1->Items->Add(Form1->ADOTable2-
>FieldByName("ID_Users")->AsString+" "+username+" "+password);
1156. listindex++; // counter gia ta items sthn listbox 1157. }
1158. else 1159. {
1160. ShowMessage("Wrong Username or Password");
1161. loggerError();
1162. } 1163. }
1164. //---
1165. void __fastcall TForm5::Frame21Button1Click(TObject *Sender) 1166. {
1167. /* button logout */
1168. loggerOut(); //katagrafh
1169. Form6->openbrowser=false; //oi metablhtes autes einai dhlwmenes sthn forma 6 ( firewall )
1170. Form6->openmail=false;
1171. Form6->openftp=false;
1172. Form6->opentelnet=false;
1173. Frame21->Edit2->Clear(); //katharizei ta pedia sto frame21 logout kai to kribei
1174. Frame21->Edit1->Clear();
1175. Frame21->Hide();
1176. Frame11->Show(); //emfanizei to frame toy login 1177. Frame11->Edit1->Clear();
1178. Frame11->Edit2->Clear();
1179. Form3->ListBox1->Items->Delete(listindex); // delete an item from listbox 1180. listindex--;
1181. Form8->Close();
1182. Form12->Close();
1183. }
1184. //---
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 122 1185. void __fastcall TForm5::Frame21Button2Click(TObject *Sender)
1186. {
1187. /* open broswer button*/
1188. Form6->openbrowser=true;
1189. }
1190. //---
1191. void __fastcall TForm5::Frame21Button3Click(TObject *Sender) 1192. {
1193. Form6->openmail=true;
1194. }
1195. //--- 1196. void __fastcall TForm5::Internet1Click(TObject *Sender) 1197. {
1198. Form6->openbrowser=true;
1199. FILE *fp;
1200. TDateTime today;
1201. today = Now();
1202. int id = Form1->ADOTable2->FieldByName("ID_Users")->AsInteger;
1203. AnsiString usr = Form5->Frame11->Edit1->Text.c_str();
1204. AnsiString dt = DateTimeToStr(today).c_str();
1205. fp = fopen("c:\\Ptyxiakh\\log\\log.txt","a"); // logger
1206. fprintf(fp,"%d",Form1->ADOTable2->FieldByName("ID_Users")->AsInteger);
//grafei to id
1207. fprintf(fp,"%s"," ");
1208. fprintf(fp,"%s",Form5->Frame11->Edit1->Text.c_str()); //grafei to username 1209. fprintf(fp,"%s"," ");
1210. fprintf(fp,"tried to use Http Service %s",DateTimeToStr(today).c_str() );
//grafei thn hmeromhnia k thn wra 1211. fprintf(fp,"\n");
1212. fclose(fp);
1213. Form3->ListBox2->Items->Add("Id:"+IntToStr(id)+" "+usr+" tried to use Http Service at "+dt);
1214. }
1215. //--- 1216. void __fastcall TForm5::FTP1Click(TObject *Sender) 1217. {
1218. Form6->openftp=true; //flag gia elenxo an anoikse o xrhsths to ftp
1219. FILE *fp;
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 123 1220. TDateTime today;
1221. today = Now();
1222. int id = Form1->ADOTable2->FieldByName("ID_Users")->AsInteger;
1223. AnsiString usr = Form5->Frame11->Edit1->Text.c_str();
1224. AnsiString dt = DateTimeToStr(today).c_str();
1225. fp = fopen("c:\\Ptyxiakh\\log\\log.txt","a"); // logger
1226. fprintf(fp,"%d",Form1->ADOTable2->FieldByName("ID_Users")->AsInteger);
1227. fprintf(fp,"%s"," ");
1228. fprintf(fp,"%s",Form5->Frame11->Edit1->Text.c_str());
1229. fprintf(fp,"%s"," ");
1230. fprintf(fp,"tried to use FTP Service %s",DateTimeToStr(today).c_str() );
1231. fprintf(fp,"\n");
1232. fclose(fp);
1233. Form3->ListBox2->Items->Add("Id:"+IntToStr(id)+" "+usr+" tried to use FTP Service at "+dt);
1234. }
1235. //--- 1236. void __fastcall TForm5::Sendemail1Click(TObject *Sender) 1237. {
1238. Form6->openmail=true;
1239. FILE *fp;
1240. TDateTime today;
1241. today = Now();
1242. int id = Form1->ADOTable2->FieldByName("ID_Users")->AsInteger;
1243. AnsiString usr = Form5->Frame11->Edit1->Text.c_str();
1244. AnsiString dt = DateTimeToStr(today).c_str();
1245. fp = fopen("c:\\Ptyxiakh\\log\\log.txt","a"); // logger
1246. fprintf(fp,"%d",Form1->ADOTable2->FieldByName("ID_Users")->AsInteger);
1247. fprintf(fp,"%s"," ");
1248. fprintf(fp,"%s",Form5->Frame11->Edit1->Text.c_str());
1249. fprintf(fp,"%s"," ");
1250. fprintf(fp,"tried to use Mail Service %s",DateTimeToStr(today).c_str() );
1251. fprintf(fp,"\n");
1252. fclose(fp);
1253. Form3->ListBox2->Items->Add("Id:"+IntToStr(id)+" "+usr+" tried to use Mail Service at"+dt);
1254. Form12->Show();
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 124 1255. }
1256. //---
1257. void __fastcall TForm5::elnet1Click(TObject *Sender) 1258. {
1259. Form6->opentelnet=true;
1260. FILE *fp;
1261. TDateTime today;
1262. today = Now();
1263. int id = Form1->ADOTable2->FieldByName("ID_Users")->AsInteger;
1264. AnsiString usr = Form5->Frame11->Edit1->Text.c_str();
1265. AnsiString dt = DateTimeToStr(today).c_str();
1266. fp = fopen("c:\\Ptyxiakh\\log\\log.txt","a"); // logger
1267. fprintf(fp,"%d",Form1->ADOTable2->FieldByName("ID_Users")->AsInteger);
1268. fprintf(fp,"%s"," ");
1269. fprintf(fp,"%s",Form5->Frame11->Edit1->Text.c_str());
1270. fprintf(fp,"%s"," ");
1271. fprintf(fp,"tried to use Telnet Service %s",DateTimeToStr(today).c_str() );
1272. fprintf(fp,"\n");
1273. fclose(fp);
1274. Form3->ListBox2->Items->Add("Id:"+IntToStr(id)+" "+usr+" tried to use Telnet Service at "+dt);
1275. }
1276. //---
Μπαμπέκος Χρήστος Α.Ε.Μ.:1904 Βουλγαράκη Φωτεινή Α.Ε.Μ:1912 125