mirror of https://github.com/dirtbags/moth.git
Rewrite octopus to not use tokend
This commit is contained in:
parent
d14302b199
commit
e4c252ef4e
|
@ -1 +0,0 @@
|
|||
S゙*郢シ緩ミ7<EFBE90>k<13>
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
Àñõ®¶'çå6Œ™²¤Y=
|
|
@ -1 +0,0 @@
|
|||
偦轎奫^,5嗥贠教
|
|
@ -1 +0,0 @@
|
|||
<EFBFBD><EFBFBD>t322<EFBFBD>/<2F>0<EFBFBD>g<EFBFBD><67>ji
|
|
@ -1 +0,0 @@
|
|||
qð°VA.SF´Ö¨,.}²
|
|
@ -1 +0,0 @@
|
|||
U'0絤騺q<1B>p
|
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
|
||||
port=8888
|
||||
host=10.0.0.8
|
||||
host=${1:-10.0.0.8}
|
||||
|
||||
blooper=$(tempfile)
|
||||
trap "rm $blooper" 0
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
build: octopus
|
||||
|
||||
octopus: octopus.o token.o
|
||||
octopus: octopus.o
|
||||
|
||||
clean:
|
||||
rm -f octopus *.o
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <netinet/in.h>
|
||||
#include <netinet/tcp.h>
|
||||
#include <arpa/inet.h>
|
||||
#include "token.h"
|
||||
|
||||
#define OUTPUT_MAX 1024
|
||||
#define INPUT_MAX 1024
|
||||
|
@ -20,6 +19,9 @@
|
|||
#define max(a,b) (((a)>(b))?(a):(b))
|
||||
#endif
|
||||
|
||||
char token[80];
|
||||
size_t tokenlen;
|
||||
|
||||
uint8_t const key[] = {0x99, 0x5f, 0xcb, 0xde,
|
||||
0xf9, 0x6d, 0x02, 0xf3,
|
||||
0x47, 0x60, 0x0a, 0xe0,
|
||||
|
@ -47,7 +49,7 @@ char const octopus[] =
|
|||
);
|
||||
|
||||
const char *friends[8] = {
|
||||
("Welcome to Olive Octopus's house! Olive lives at 00021270.\n"
|
||||
("Welcome to Olive Octopus's house!\n"
|
||||
"Help Olive visit all 8 of her friends to receive a prize!\n"
|
||||
"Hurry though, things change quickly in the ocean!\n"
|
||||
"Next friend: %08o\n"
|
||||
|
@ -208,17 +210,8 @@ int
|
|||
rebind(struct in_addr *addr)
|
||||
{
|
||||
static int offset = 0;
|
||||
char token[200];
|
||||
size_t tokenlen;
|
||||
int i;
|
||||
|
||||
tokenlen = read_token("octopus",
|
||||
key, sizeof(key),
|
||||
token, sizeof(token));
|
||||
if (-1 == tokenlen) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; i += 1) {
|
||||
int ret;
|
||||
int last_guy;
|
||||
|
@ -317,8 +310,6 @@ loop()
|
|||
FD_SET(bound_ports[i].fd, &rfds);
|
||||
}
|
||||
|
||||
/* Wait forever. There's no need to switch ports if nobody's doing
|
||||
anything. */
|
||||
while (-1 == select(nfds+1, &rfds, NULL, NULL, &timeout)) {
|
||||
if (EINTR == errno) {
|
||||
continue;
|
||||
|
@ -340,11 +331,12 @@ main(int argc, char *argv[])
|
|||
{
|
||||
int ret;
|
||||
int i;
|
||||
time_t last = time(NULL);
|
||||
time_t last_bind = 0;
|
||||
time_t last_token = 0;
|
||||
struct in_addr addr;
|
||||
|
||||
/* The random seed isn't super important here. */
|
||||
srand(last);
|
||||
srand(time(NULL));
|
||||
|
||||
if (argc > 1) {
|
||||
if (-1 == inet_aton(argv[1], &addr)) {
|
||||
|
@ -365,20 +357,26 @@ main(int argc, char *argv[])
|
|||
for (i = 1; i < PORTS; i += 1) {
|
||||
bound_ports[i].fd = -1;
|
||||
}
|
||||
if (-1 == rebind(&addr)) {
|
||||
perror("initial binding");
|
||||
return EX_IOERR;
|
||||
}
|
||||
|
||||
while (loop()) {
|
||||
do {
|
||||
time_t now = time(NULL);
|
||||
|
||||
if (last + 4 < now) {
|
||||
last = now;
|
||||
if (last_token + 60 < now) {
|
||||
last_token = now;
|
||||
while (NULL == fgets(token, sizeof(token), stdin)) {
|
||||
if (-1 == fseek(stdin, 0, SEEK_SET)) {
|
||||
/* Non-seekable stdin: we're done. */
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
for (tokenlen = 0; token[tokenlen] && (token[tokenlen] != '\n'); tokenlen += 1);
|
||||
}
|
||||
|
||||
if (last_bind + 4 < now) {
|
||||
last_bind = now;
|
||||
if (-1 == rebind(&addr)) break;
|
||||
}
|
||||
}
|
||||
} while (loop());
|
||||
|
||||
perror("main loop");
|
||||
return EX_IOERR;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
../../../include/token.c
|
|
@ -1 +0,0 @@
|
|||
../../../include/token.h
|
|
@ -1 +0,0 @@
|
|||
octopus
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
Àñõ®¶'çå6Œ™²¤Y=
|
|
@ -1,3 +0,0 @@
|
|||
™_ËÞùmóG`
|
||||
à
|
||||
%M
|
Loading…
Reference in New Issue