[examples] added misc helpers for client side examples;
parent
710bae75e1
commit
291b52d508
@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* Secure X Message Passing Library v2 examples.
|
||||||
|
*
|
||||||
|
* (c) Alexander Vdolainen 2013-2015 <avdolainen@gmail.com>
|
||||||
|
* (c) Alexander Vdolainen 2016 <avdolainen@zoho.com>
|
||||||
|
*
|
||||||
|
* libsxmp is free software: you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* libsxmp is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.";
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int exmps_getaddrs(const char *cline, char **host, char **login, int *port)
|
||||||
|
{
|
||||||
|
int p = 0;
|
||||||
|
char *tb = NULL, *h, *ttb;
|
||||||
|
|
||||||
|
tb = strchr(cline, '@');
|
||||||
|
if(!tb) return 0;
|
||||||
|
|
||||||
|
h = strndup(cline, strlen(cline) - strlen(tb));
|
||||||
|
if(!h) return 0;
|
||||||
|
else p++;
|
||||||
|
*host = h;
|
||||||
|
tb += sizeof(char);
|
||||||
|
|
||||||
|
if(!(ttb = strchr(tb, ':'))) h = strdup(tb);
|
||||||
|
else h = strndup(tb, strlen(tb) - strlen(ttb));
|
||||||
|
|
||||||
|
if(!h) return 0;
|
||||||
|
p++; *login = h;
|
||||||
|
|
||||||
|
if(ttb) {
|
||||||
|
ttb += sizeof(char);
|
||||||
|
*port = atoi(ttb);
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* simple function to read a password.
|
||||||
|
*/
|
||||||
|
char *exmps_getpass(const char *promt)
|
||||||
|
{
|
||||||
|
char *pass = malloc(64);
|
||||||
|
int fd = fileno(stdin), in = 0, c;
|
||||||
|
struct termios tio;
|
||||||
|
|
||||||
|
fprintf(stdout, "%s", promt);
|
||||||
|
|
||||||
|
if(!pass) return NULL;
|
||||||
|
else memset(pass, 0, 64);
|
||||||
|
|
||||||
|
/* set the flag to disable echoing */
|
||||||
|
tcgetattr(fd, &tio);
|
||||||
|
tio.c_lflag &= ~ECHO;
|
||||||
|
tcsetattr(fd, 0, &tio);
|
||||||
|
|
||||||
|
/* read stupid line */
|
||||||
|
while(in <= 64) {
|
||||||
|
c = getchar();
|
||||||
|
if(c == '\n') break;
|
||||||
|
else {
|
||||||
|
pass[in] = c;
|
||||||
|
in++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* enable echo again */
|
||||||
|
tio.c_lflag |= ECHO;
|
||||||
|
tcsetattr(fd, 0, &tio);
|
||||||
|
|
||||||
|
return pass;
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Secure X Message Passing Library v2 examples.
|
||||||
|
*
|
||||||
|
* (c) Alexander Vdolainen 2013-2015 <avdolainen@gmail.com>
|
||||||
|
* (c) Alexander Vdolainen 2016 <avdolainen@zoho.com>
|
||||||
|
*
|
||||||
|
* libsxmp is free software: you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published
|
||||||
|
* by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* libsxmp is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.";
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SXMP_EXAMPLES_MISC_H__
|
||||||
|
#define __SXMP_EXAMPLES_MISC_H__
|
||||||
|
|
||||||
|
int exmps_getaddrs(const char *, char **, char **, int *);
|
||||||
|
|
||||||
|
char *exmps_getpass(const char *);
|
||||||
|
|
||||||
|
#endif /* __SXMP_EXAMPLES_MISC_H__ */
|
Loading…
Reference in New Issue