00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "Serveur.h"
00012
00013
00014 MUTEX MutexEcran;
00015 NetServer Server;
00016
00017 int ThreadGestionClient(NetConnect *pConnect);
00018
00019 int main(int argc, char **argv)
00020 {
00021 Langage LangFile("Serveur.conf");
00022 Ini Fichier("Serveur.conf");
00023 char Key;
00024 BEGIN
00025 LOC("main")
00026 LOG("serveur.log")
00027 LANG(Fichier.GetSection("langage")->GetItem("error")->GetData())
00028
00029 MutexInit(&MutexEcran);
00030
00031 TRY CERROR = Server.Start(
00032 AtoD(Fichier.GetSection("serveur")->GetItem("port")->GetData()),
00033 AtoD(Fichier.GetSection("serveur")->GetItem("limit")->GetData()),
00034 Fichier.GetSection("serveur")->GetItem("pass")->GetData(),
00035 (ROUTINE)ThreadGestionClient
00036 );
00037
00038 TRY do
00039 {
00040 MutexLock(&MutexEcran);
00041 ConsoleClear();
00042 printf("%s : %i/%i\n\n", L_MENU_G1, Server.GetNbClient(), Server.GetLimit());
00043 printf("--- %s ---\n", L_MENU_G2);
00044 printf("\tl : %s\n", L_MENU_G3);
00045 printf("\ta : %s\n", L_MENU_G4);
00046 printf("\to : %s\n", L_MENU_G7);
00047 printf("\tq : %s\n\n", L_MENU_G5);
00048 printf(" %s : ", L_MENU_G6);
00049 MutexUnLock(&MutexEcran);
00050
00051 Key = KeyGet();
00052
00053 switch(Key)
00054 {
00055 case 'l' :
00056 MutexLock(&MutexEcran);
00057 ConsoleClear();
00058 printf("%s : %i\n\n", L_MENU_L1, Server.Connect->Port);
00059 printf("%s : %i\n\n", L_MENU_L2, Server.GetNbClient());
00060 for(int i = 0; i < Server.GetNbClient(); i++)
00061 printf("ID : %s\tIP : %i\n", Server.GetClientNo(i)->GetId(), Server.GetClientNo(i)->Ip);
00062
00063 MutexUnLock(&MutexEcran);
00064 break;
00065 case 'a' :
00066 MutexLock(&MutexEcran);
00067 ConsoleClear();
00068 printf("\t------ %s GestionAsso V%s ------\n\n", L_MENU_A1, VERSION);
00069 printf("\t %s %s\n\n\n", L_MENU_A2, AUTHOR);
00070 MutexUnLock(&MutexEcran);
00071 break;
00072 case 'o' :
00073 MutexLock(&MutexEcran);
00074 ConsoleClear();
00075
00076 MutexUnLock(&MutexEcran);
00077 break;
00078 }
00079
00080 if(Key != 'q')
00081 {
00082 MutexLock(&MutexEcran);
00083 printf("\n%s\n", L_ENTER);
00084 MutexUnLock(&MutexEcran);
00085
00086 Key = KeyGet();
00087 }
00088 }
00089 while((Key != 'q') && !CERROR);
00090
00091 Server.Stop();
00092
00093 MutexStop(&MutexEcran);
00094
00095 PERROR
00096
00097 ENDBEGIN
00098 }
00099
00100 int ThreadGestionClient(NetConnect *pConnect)
00101 {
00102 NetParser Parser(pConnect);
00103 BEGIN
00104 LOC("ThreadGestionClient")
00105
00106 TRY Parser.AddRequest(NET_IDENT, 0, (ROUTINE)RequestIdent, SYNTAX_IDENT);
00107 TRY Parser.AddRequest(NET_SAVE, 0, (ROUTINE)RequestSave, SYNTAX_SAVE);
00108 TRY Parser.AddRequest(NET_RESET, 0, (ROUTINE)RequestReset, SYNTAX_RESET);
00109 TRY Parser.AddRequest(NET_END, 0, (ROUTINE)RequestEnd, SYNTAX_END);
00110 TRY Parser.AddRequest(NET_NBDATA, 0, (ROUTINE)RequestNb, SYNTAX_NB);
00111 TRY Parser.AddRequest(NET_ADDDATA, 0, (ROUTINE)RequestAdd, SYNTAX_ADD);
00112 TRY Parser.AddRequest(NET_DELDATA, 0, (ROUTINE)RequestDel, SYNTAX_DEL);
00113 TRY Parser.AddRequest(NET_GETDATA, 0, (ROUTINE)RequestGet, SYNTAX_GET);
00114
00115 do
00116 {
00117 TRY CERROR = pConnect->Receive();
00118
00119 TRY CERROR = Parser.Parse(pConnect->GetBuffer());
00120 }
00121 while(!CERROR && pConnect->Sock);
00122
00123 Server.KillClient(pConnect->GetId());
00124
00125 PERROR
00126
00127 ThreadExit(CERROR);
00128 }
00129