X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fhandler_door.c;h=1341679d5050b963fab8a7b4d4e9a18e83038263;hb=ffc52312097ac25aaca6d20a132242f5f0670c5b;hp=1ffcc857feb599bdb05d0ce9ac03cc4ae05f984d;hpb=dce0ef0f3c15f9e38e57d4a14c904c339affac4e;p=tpg%2Fopendispense2.git diff --git a/src/server/handler_door.c b/src/server/handler_door.c index 1ffcc85..1341679 100644 --- a/src/server/handler_door.c +++ b/src/server/handler_door.c @@ -28,11 +28,12 @@ tHandler gDoor_Handler = { Door_CanDispense, Door_DoDispense }; -//char *gsDoor_SerialPort = "/dev/ttyS0"; +char *gsDoor_Password; +char *gsDoor_Command; // int giDoor_SerialFD; // == CODE === -int Door_InitHandler() +int Door_InitHandler(void) { // printf("connecting to door...\n"); // giDoor_SerialFD = open(gsDoor_SerialPort, O_RDWR); @@ -49,6 +50,12 @@ int Door_CanDispense(int User, int Item) // Sanity please if( Item == 0 ) return -1; + if( !(Bank_GetFlags(User) & USER_FLAG_DOORGROUP) ) + return 1; + + gsDoor_Command = malloc(sizeof("llogin door -w ")+strlen(gsDoor_Password)); + sprintf(gsDoor_Command, "llogin door -w %s", gsDoor_Password); + return 0; } @@ -57,13 +64,24 @@ int Door_CanDispense(int User, int Item) */ int Door_DoDispense(int User, int Item) { - + FILE *pipe; // Sanity please if( Item != 0 ) return -1; // Check if user is in door + if( !(Bank_GetFlags(User) & USER_FLAG_DOORGROUP) ) + return 1; // llogin or other + pipe = popen(gsDoor_Command, "w"); + if( !pipe || pipe == (void*)-1 ) + return -1; + + fputs("ATH1F", pipe); + sleep(1); + fputs("ATH10", pipe); + + pclose(pipe); return 0; }