1
0
mirror of https://github.com/taigrr/tplinkController synced 2025-01-18 04:43:13 -08:00

small formatting changes

This commit is contained in:
Jason Benaim 2018-11-24 21:17:15 -08:00
parent f870b6458d
commit 4bbecdaea0
3 changed files with 47 additions and 45 deletions

55
comms.c
View File

@ -12,15 +12,15 @@
bool hs100_encrypt(uint8_t *d, uint8_t *s, size_t len) bool hs100_encrypt(uint8_t *d, uint8_t *s, size_t len)
{ {
if(d == NULL) if( d == NULL)
return false; return false;
if(s == NULL) if (s == NULL)
return false; return false;
if(len == 0) if (len == 0)
return false; return false;
uint8_t key = 0xab; uint8_t key = 0xab;
for(size_t i=0; i<len; i++) { for (size_t i = 0; i < len; i++) {
uint8_t temp = key ^ s[i]; uint8_t temp = key ^ s[i];
key = temp; key = temp;
d[i] = temp; d[i] = temp;
@ -30,13 +30,13 @@ bool hs100_encrypt(uint8_t *d, uint8_t *s, size_t len)
bool hs100_decrypt(uint8_t *d, uint8_t *s, size_t len) bool hs100_decrypt(uint8_t *d, uint8_t *s, size_t len)
{ {
if(d == NULL) if (d == NULL)
return false; return false;
if(s == NULL) if (s == NULL)
return false; return false;
if(len == 0) if (len == 0)
return false; return false;
uint8_t key = 0xab; uint8_t key = 0xab;
for(size_t i=0; i<len; i++) { for(size_t i=0; i<len; i++) {
uint8_t temp = key ^ s[i]; uint8_t temp = key ^ s[i];
@ -48,13 +48,15 @@ bool hs100_decrypt(uint8_t *d, uint8_t *s, size_t len)
uint8_t *hs100_encode(size_t *outlen, char *srcmsg) uint8_t *hs100_encode(size_t *outlen, char *srcmsg)
{ {
if(srcmsg == NULL) return NULL; if (srcmsg == NULL)
return NULL;
size_t srcmsg_len = strlen(srcmsg); size_t srcmsg_len = strlen(srcmsg);
*outlen = srcmsg_len + 4; *outlen = srcmsg_len + 4;
uint8_t *d = calloc(1, *outlen); uint8_t *d = calloc(1, *outlen);
if(d == NULL) return NULL; if (d == NULL)
if(!hs100_encrypt(d+4, (uint8_t *)srcmsg, srcmsg_len)) { return NULL;
if (!hs100_encrypt(d + 4, (uint8_t *) srcmsg, srcmsg_len)) {
free(d); free(d);
return NULL; return NULL;
} }
@ -66,20 +68,22 @@ uint8_t *hs100_encode(size_t *outlen, char *srcmsg)
char *hs100_decode(uint8_t *s, size_t s_len) char *hs100_decode(uint8_t *s, size_t s_len)
{ {
if(s == NULL) return NULL; if (s == NULL)
if(s_len <= 4) return NULL; return NULL;
if (s_len <= 4)
return NULL;
uint32_t in_s_len; uint32_t in_s_len;
memcpy(&in_s_len, s, 4); memcpy(&in_s_len, s, 4);
in_s_len = ntohl(in_s_len); in_s_len = ntohl(in_s_len);
if((s_len - 4) < in_s_len) { if ((s_len - 4) < in_s_len) {
// packet was cut short- adjust in_s_len // packet was cut short- adjust in_s_len
in_s_len = s_len - 4; in_s_len = s_len - 4;
} }
char *outbuf = calloc(1,in_s_len+1); char *outbuf = calloc(1, in_s_len + 1);
if(!hs100_decrypt((uint8_t*)outbuf, s+4, in_s_len)) { if (!hs100_decrypt((uint8_t*) outbuf, s + 4, in_s_len)) {
free(outbuf); free(outbuf);
return NULL; return NULL;
} }
@ -91,22 +95,23 @@ char *hs100_send(char *servaddr, char *msg)
{ {
size_t s_len; size_t s_len;
uint8_t *s = hs100_encode(&s_len, msg); uint8_t *s = hs100_encode(&s_len, msg);
if(s == NULL) if (s == NULL)
return NULL; return NULL;
int sock = socket(AF_INET, SOCK_STREAM, 0); int sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0) return NULL; if (sock < 0)
return NULL;
struct sockaddr_in address; struct sockaddr_in address;
memset(&address, '0', sizeof(struct sockaddr_in)); memset(&address, '0', sizeof(struct sockaddr_in));
address.sin_family = AF_INET; address.sin_family = AF_INET;
address.sin_port = htons(9999); address.sin_port = htons(9999);
if(inet_pton(AF_INET, servaddr, &address.sin_addr)<=0) if (inet_pton(AF_INET, servaddr, &address.sin_addr) <= 0)
return NULL; return NULL;
if(connect(sock, (struct sockaddr *)&address, if (connect(sock, (struct sockaddr *)&address,
sizeof(struct sockaddr_in)) < 0) sizeof(struct sockaddr_in)) < 0)
return NULL; return NULL;
@ -115,7 +120,7 @@ char *hs100_send(char *servaddr, char *msg)
uint8_t recvbuf[RECV_BUF_SIZE]; uint8_t recvbuf[RECV_BUF_SIZE];
size_t received_size = recv(sock, recvbuf, RECV_BUF_SIZE, 0); size_t received_size = recv(sock, recvbuf, RECV_BUF_SIZE, 0);
close(sock); close(sock);
if(received_size == 0) if (received_size == 0)
return NULL; return NULL;
char *recvmsg = hs100_decode(recvbuf, received_size); char *recvmsg = hs100_decode(recvbuf, received_size);
return recvmsg; return recvmsg;

View File

@ -6,7 +6,7 @@
char *handler_associate(int argc, char *argv[]) char *handler_associate(int argc, char *argv[])
{ {
if(argc < 6) { if (argc < 6) {
fprintf(stderr, "not enough arguments\n"); fprintf(stderr, "not enough arguments\n");
exit(1); exit(1);
} }
@ -18,7 +18,7 @@ char *handler_associate(int argc, char *argv[])
errno = 0; errno = 0;
char *endptr; char *endptr;
int key_type_num = (int)strtol(key_type, &endptr, 10); int key_type_num = (int)strtol(key_type, &endptr, 10);
if(errno || endptr == key_type) { if (errno || endptr == key_type) {
fprintf(stderr, "invalid key type: %s\n", key_type); fprintf(stderr, "invalid key type: %s\n", key_type);
exit(1); exit(1);
} }
@ -41,7 +41,7 @@ char *handler_associate(int argc, char *argv[])
char *handler_set_server(int argc, char *argv[]) char *handler_set_server(int argc, char *argv[])
{ {
if(argc < 4) { if (argc < 4) {
fprintf(stderr, "not enough arguments\n"); fprintf(stderr, "not enough arguments\n");
exit(1); exit(1);
} }

31
hs100.c
View File

@ -12,7 +12,7 @@ struct cmd_s {
char *command; char *command;
char *help; char *help;
char *json; char *json;
char *(*handler)(int argc, char *argv[]); char *(*handler) (int argc, char *argv[]);
int end; int end;
}; };
struct cmd_s cmds[] = { struct cmd_s cmds[] = {
@ -67,9 +67,8 @@ struct cmd_s cmds[] = {
struct cmd_s *get_cmd_from_name(char *needle) struct cmd_s *get_cmd_from_name(char *needle)
{ {
int cmds_index = 0; int cmds_index = 0;
while(!cmds[cmds_index].end) while (!cmds[cmds_index].end) {
{ if (!strcmp(cmds[cmds_index].command, needle))
if(!strcmp(cmds[cmds_index].command, needle))
return &cmds[cmds_index]; return &cmds[cmds_index];
cmds_index++; cmds_index++;
} }
@ -78,16 +77,14 @@ struct cmd_s *get_cmd_from_name(char *needle)
void print_usage() void print_usage()
{ {
fprintf(stderr, "hs100 version " VERSION_STRING ", Copyright (C) 2018 Jason Benaim.\n" fprintf(stderr, "hs100 version " VERSION_STRING
"A tool for using certain wifi smart plugs.\n" ", Copyright (C) 2018 Jason Benaim.\n"
"\n" "A tool for using certain wifi smart plugs.\n\n"
"usage: hs100 <ip> <command>\n" "usage: hs100 <ip> <command>\n\n"
"\n"
"Commands:\n" "Commands:\n"
); );
int cmds_index = 0; int cmds_index = 0;
while(!cmds[cmds_index].end) while (!cmds[cmds_index].end) {
{
fprintf(stderr, "\t%s\n\n", cmds[cmds_index].help); fprintf(stderr, "\t%s\n\n", cmds[cmds_index].help);
cmds_index++; cmds_index++;
} }
@ -96,7 +93,7 @@ void print_usage()
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
if(argc < 3) { if (argc < 3) {
print_usage(); print_usage();
return 1; return 1;
} }
@ -105,17 +102,17 @@ int main(int argc, char *argv[])
char *response = NULL; char *response = NULL;
struct cmd_s *cmd = get_cmd_from_name(cmd_string); struct cmd_s *cmd = get_cmd_from_name(cmd_string);
if(cmd != NULL) { if (cmd != NULL) {
if(cmd->handler != NULL) if (cmd->handler != NULL)
response = cmd->handler(argc, argv); response = cmd->handler(argc, argv);
else if(cmd->json != NULL) else if (cmd->json != NULL)
response = hs100_send(plug_addr, cmd->json); response = hs100_send(plug_addr, cmd->json);
} else { } else {
// command not recognized, so send it to the plug raw // command not recognized, so send it to the plug raw
response = hs100_send(plug_addr, cmd_string); response = hs100_send(plug_addr, cmd_string);
} }
if(response == NULL) { if (response == NULL) {
fprintf(stderr, "failed to send command\n"); fprintf(stderr, "failed to send command\n");
return 1; return 1;
} }