X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=src%2Fserver%2Fhandler_door.c;h=1341679d5050b963fab8a7b4d4e9a18e83038263;hb=d5281ab72f8a105cdc849e4efa602f9fa5c33170;hp=a819d779c0a12aa067a1147502257f874b02ebe0;hpb=2402457fd4ea286febae34182d9a9f3b63cb6565;p=tpg%2Fopendispense2.git diff --git a/src/server/handler_door.c b/src/server/handler_door.c index a819d77..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); @@ -51,6 +52,9 @@ int Door_CanDispense(int User, int Item) 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; } @@ -60,6 +64,7 @@ int Door_CanDispense(int User, int Item) */ int Door_DoDispense(int User, int Item) { + FILE *pipe; // Sanity please if( Item != 0 ) return -1; @@ -68,6 +73,15 @@ int Door_DoDispense(int User, int Item) 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; }