|
Lines 77-82
static DBusHandlerResult request_message
Link Here
|
| 77 |
DBusMessage *reply; |
77 |
DBusMessage *reply; |
| 78 |
const char *path, *address; |
78 |
const char *path, *address; |
| 79 |
dbus_bool_t numeric; |
79 |
dbus_bool_t numeric; |
|
|
80 |
char *buffer; |
| 81 |
FILE *pin; |
| 82 |
unsigned int buflen; |
| 83 |
int status; |
| 84 |
char *s_passkey; |
| 80 |
|
85 |
|
| 81 |
if (!passkey) |
86 |
if (!passkey) |
| 82 |
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; |
87 |
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; |
|
Lines 95-102
static DBusHandlerResult request_message
Link Here
|
| 95 |
} |
100 |
} |
| 96 |
|
101 |
|
| 97 |
printf("Passkey request for device %s\n", address); |
102 |
printf("Passkey request for device %s\n", address); |
|
|
103 |
buflen=strlen(passkey)+256; |
| 104 |
if(buflen<=256) |
| 105 |
{ |
| 106 |
fprintf(stderr, "Invalid pin-helper argument, aborting."); |
| 107 |
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; |
| 108 |
} |
| 109 |
buffer=malloc(buflen); |
| 110 |
if(buffer==NULL) |
| 111 |
{ |
| 112 |
fprintf(stderr, "Error allocating memory (malloc), aborting."); |
| 113 |
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; |
| 114 |
} |
| 115 |
sprintf(buffer, "%s %s %s", passkey, "in", address); |
| 116 |
pin=popen(buffer, "r"); |
| 117 |
wait(&status); |
| 118 |
fgets(buffer, 256, pin); |
| 119 |
pclose(pin); |
| 120 |
if(buffer[0]!='P' || buffer[1]!='I' || buffer[2]!='N' || buffer[3]!=':') |
| 121 |
{ |
| 122 |
free(buffer); |
| 123 |
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; |
| 124 |
} |
| 125 |
s_passkey=&buffer[4]; |
| 126 |
if(s_passkey[strlen(s_passkey)-1]=='\n') s_passkey[strlen(s_passkey)-1]='\0'; |
| 127 |
fprintf(stderr, "Found passkey: \"%s\"\n", s_passkey); |
| 98 |
|
128 |
|
| 99 |
dbus_message_append_args(reply, DBUS_TYPE_STRING, &passkey, |
129 |
|
|
|
130 |
dbus_message_append_args(reply, DBUS_TYPE_STRING, &s_passkey , |
| 100 |
DBUS_TYPE_INVALID); |
131 |
DBUS_TYPE_INVALID); |
| 101 |
|
132 |
|
| 102 |
dbus_connection_send(conn, reply, NULL); |
133 |
dbus_connection_send(conn, reply, NULL); |
|
Lines 104-110
static DBusHandlerResult request_message
Link Here
|
| 104 |
dbus_connection_flush(conn); |
135 |
dbus_connection_flush(conn); |
| 105 |
|
136 |
|
| 106 |
dbus_message_unref(reply); |
137 |
dbus_message_unref(reply); |
| 107 |
|
138 |
free(buffer); |
| 108 |
return DBUS_HANDLER_RESULT_HANDLED; |
139 |
return DBUS_HANDLER_RESULT_HANDLED; |
| 109 |
} |
140 |
} |
| 110 |
|
141 |
|
|
Lines 334-343
static int unregister_agent(DBusConnecti
Link Here
|
| 334 |
|
365 |
|
| 335 |
static void usage(void) |
366 |
static void usage(void) |
| 336 |
{ |
367 |
{ |
| 337 |
printf("Bluetooth passkey agent ver %s\n\n", VERSION); |
368 |
printf("Bluetooth passkey agent ver %s with \"exec\" patch from Marco Gulino (http://www.kmobiletools.org/node/228)\n\n", VERSION); |
| 338 |
|
369 |
|
| 339 |
printf("Usage:\n" |
370 |
printf("Usage:\n" |
| 340 |
"\tpasskey-agent [--default] [--path agent-path] <passkey> [address]\n" |
371 |
"\tpasskey-agent {-d|--default} [{-p|--path} agent-path] <path-to-pin-helper>\n" |
|
|
372 |
"\tpasskey-agent [{-p|--path} agent-path] <path-to-pin-helper> address\n" |
| 373 |
"\n" |
| 374 |
"\tDefault for agent-path: /org/bluez/passkey_agent_<program pid>\n" |
| 341 |
"\n"); |
375 |
"\n"); |
| 342 |
} |
376 |
} |
| 343 |
|
377 |
|