X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fhandler_door.c;h=1341679d5050b963fab8a7b4d4e9a18e83038263;hb=54085f9d3fa0c1b1eeb3a82a0c4a6e3400d9961c;hp=c132e07f8a2b4c46d76303d8095f5bd665e22214;hpb=99cf95b138082d1c02705682ad0dfd8b67a27ac4;p=tpg%2Fopendispense2.git diff --git a/src/server/handler_door.c b/src/server/handler_door.c index c132e07..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) { - char tmp[32], *status; - regmatch_t matches[4]; - + 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; }