mirror of
https://github.com/bobbimanners/emailler.git
synced 2024-11-18 21:07:03 +00:00
196 lines
3.0 KiB
C
196 lines
3.0 KiB
C
#include <cc65.h>
|
|
#include <fcntl.h>
|
|
#include <ctype.h>
|
|
#include <conio.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#ifdef __APPLE2__
|
|
#include <apple2_filetype.h>
|
|
#endif
|
|
|
|
#include "../inc/ip65.h"
|
|
#include "ifttt.h"
|
|
|
|
char key[80 + 1];
|
|
char text[280 + 1];
|
|
|
|
void error_exit(void)
|
|
{
|
|
printf("- %s\n", ip65_strerror(ip65_error));
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
void confirm_exit(void)
|
|
{
|
|
printf("\nPress any key ");
|
|
cgetc();
|
|
}
|
|
|
|
unsigned char cols(void)
|
|
{
|
|
unsigned char cols, rows;
|
|
|
|
screensize(&cols, &rows);
|
|
return cols;
|
|
}
|
|
|
|
void input(char* str, unsigned int max, const char* tag)
|
|
{
|
|
char chr;
|
|
uint8_t row;
|
|
uint16_t len = max / cols() + 1;
|
|
|
|
for (row = len; --row; row)
|
|
{
|
|
putchar('\n');
|
|
}
|
|
row = wherey() - len;
|
|
len = 0;
|
|
|
|
while (true)
|
|
{
|
|
str[len] = '\0';
|
|
|
|
gotoxy(0, row);
|
|
cprintf("%s (%d/%d) \r\n%s", tag, len, max, str);
|
|
|
|
cursor(1);
|
|
chr = cgetc();
|
|
cursor(0);
|
|
|
|
if (chr == CH_ENTER)
|
|
{
|
|
break;
|
|
}
|
|
if (chr == CH_DEL)
|
|
{
|
|
if (len == 0)
|
|
{
|
|
continue;
|
|
}
|
|
if (wherex() > 0)
|
|
{
|
|
gotox(wherex() - 1);
|
|
}
|
|
else
|
|
{
|
|
gotoxy(cols() - 1, wherey() - 1);
|
|
}
|
|
cputc(' ');
|
|
--len;
|
|
continue;
|
|
}
|
|
if (len == max)
|
|
{
|
|
continue;
|
|
}
|
|
if (isprint(chr))
|
|
{
|
|
str[len++] = chr;
|
|
}
|
|
}
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int retval;
|
|
uint8_t eth_init = ETH_INIT_DEFAULT;
|
|
|
|
if (doesclrscrafterexit())
|
|
{
|
|
atexit(confirm_exit);
|
|
}
|
|
|
|
{
|
|
int file;
|
|
|
|
printf("\nLoading key ");
|
|
file = open("ifttt.key", O_RDONLY);
|
|
if (file != -1)
|
|
{
|
|
read(file, key, sizeof(key));
|
|
close(file);
|
|
printf("- Ok\n");
|
|
}
|
|
else
|
|
{
|
|
printf("- Failed\n\n\n");
|
|
input(key, sizeof(key) - 1, "IFTTT webhook key");
|
|
if (*key == '\0')
|
|
{
|
|
printf("\n");
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
printf("\n\nSaving key ");
|
|
#ifdef __APPLE2__
|
|
_filetype = PRODOS_T_TXT;
|
|
#endif
|
|
file = open("ifttt.key", O_WRONLY | O_CREAT | O_TRUNC);
|
|
if (file != -1)
|
|
{
|
|
write(file, key, sizeof(key));
|
|
close(file);
|
|
printf("- Ok\n");
|
|
}
|
|
else
|
|
{
|
|
printf("- ");
|
|
perror(NULL);
|
|
}
|
|
}
|
|
}
|
|
|
|
#ifdef __APPLE2__
|
|
{
|
|
int file;
|
|
|
|
printf("\nSetting slot ");
|
|
file = open("ethernet.slot", O_RDONLY);
|
|
if (file != -1)
|
|
{
|
|
read(file, ð_init, 1);
|
|
close(file);
|
|
eth_init &= ~'0';
|
|
}
|
|
printf("- %d\n", eth_init);
|
|
}
|
|
#endif
|
|
|
|
printf("\nInitializing ");
|
|
if (ip65_init(eth_init))
|
|
{
|
|
error_exit();
|
|
}
|
|
|
|
printf("- Ok\n\nObtaining IP address ");
|
|
if (dhcp_init())
|
|
{
|
|
error_exit();
|
|
}
|
|
|
|
printf("- Ok\n\n\n");
|
|
input(text, sizeof(text) - 1, "Text");
|
|
if (*text == '\0')
|
|
{
|
|
printf("\n");
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
printf("\n\nSending tweet ");
|
|
retval = ifttt_trigger(key, "tweet", text, NULL, NULL);
|
|
|
|
if (retval < 0)
|
|
{
|
|
error_exit();
|
|
}
|
|
if (retval != 200)
|
|
{
|
|
printf("- Error (HTTP status %d)\n", retval);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
printf("- Ok\n");
|
|
return EXIT_SUCCESS;
|
|
}
|