LINUX.ORG.RU

что такое прикрутить я так и не догоняю ..
что ты хочешь видеть? типа
+OK wgetting document please wait ..
1oOoO2oOoO3 .. oOoO100 - DONE!
и высвечивается документ. или ты хочешь
чтобы если линк допустим указывает на xxxx-0.0.tar.gz то вызывать
wget -c для скачки этого говна?

какой в этом во всем смысл? links нужен для бравзинга - wget для скачки
зачем корову с курицей скрещивать? получиться здоровая дура которая жрет
траву и сидит на жердочке

lg ★★
()

Est' usera, kotoryj spustja gody zaimeli privychki i kotorye ja im menjat' ne sobirajus'. Objasnjat' kagdomy chto takoe wget i kak s nim rabotat' tozhe ne hochu. Raz v links-e est' menushka v kotoroj napisano (kstati po russki) zakachat' ssylku, to pust' ona uzhe budet skachena bez obryvov i bez bespokojstva po etomu povodu menja. Tak kak zastavit' links skachivat' wget-om?

anonymous
()

гнило все это .. пропиши у links прокси куда надо
а вот этот самый прокси - который wgetом будет тебе все выливать ..

/*
* (c) 2002 lg
* NOT TESTED. USE ON YOUR OWN RISK!
*/
#include <sys/types.h>
#include <sys/wait.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include <sys/select.h>
#include <signal.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#define LOCAL_ADDR INADDR_ANY
#define LOCAL_PORT 3838

int
proxy_fds(int fd1, int fd2)
{
#define SKBUFLEN 1024
fd_set rfd;
char skbuf[SKBUFLEN+1];
int n, len=0;

for(;;) {
FD_ZERO(&rfd);
FD_SET(fd1, &rfd);
FD_SET(fd2, &rfd);

n = select(FD_SETSIZE, &rfd, 0, 0, NULL);
if (n < 0 && errno != EINTR)
break;

if (FD_ISSET(fd1, &rfd)) {
len = read(fd1, skbuf, SKBUFLEN);

if (len <= 0)
break;

if (write(fd2, skbuf, len) < 0)
break;
}

if (FD_ISSET(fd2, &rfd)) {
len = read(fd2, skbuf, SKBUFLEN);
if (len <= 0)
break;

if (write(fd1, skbuf, len) < 0)
break;
if (write(1, skbuf, len) < 0)
break;
}
}

return len;
#undef SKBUFLEN
}

void
fuckchilds(void)
{
union wait status;

while( wait3((int*)&status, WNOHANG, 0) > 0);
}

int
main(int ac, char **av)
{
int lfd, cfd, rfd, llen, pid, err, clen;
struct sockaddr_in lsa, csa;

lfd = socket(AF_INET, SOCK_STREAM, 0);
if (lfd == -1) {
perror("socket");
exit(-1);
}

lsa.sin_family = AF_INET;
lsa.sin_addr.s_addr = LOCAL_ADDR;
lsa.sin_port = htons(LOCAL_PORT);
bzero(lsa.sin_zero, 8);

{
int sru;
setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &sru, sizeof(sru));
}

llen = sizeof(lsa);
err = bind(lfd, (struct sockaddr *)&lsa, llen);
if (err == -1) {
perror("bind");
exit(-2);
}

err= listen(lfd, 10);
if (err == -1) {
perror("listen");
exit(-3);
}

signal(SIGCHLD, (sig_t)fuckchilds); /* rip childs */

while(1) {

clen = sizeof(struct sockaddr);
cfd = accept(lfd, (struct sockaddr *)&csa, &clen);

pid = fork();

switch (pid) {
case -1:
perror("fork");
break;
case 0: {
/* child */
FILE *ff;
int rb;
char buf[1024+1];
char exec_cmd[1024+1];
char *get, *url, *http_ver;

close(lfd);

if ((rb = read(cfd, buf, 1024)) <= 0)
exit(0);

buf[rb] = 0;
get = strtok(buf, " ");
url = strtok(NULL, " ");
http_ver = strtok(NULL, " ");
snprintf(exec_cmd, 1024, \
"wget \"%s\" -c -s -O /dev/stdout 2>/dev/null", url);

ff = popen(exec_cmd, "r");
if (ff == NULL)
exit(0);
rfd = fileno(ff);
proxy_fds(rfd, cfd);

exit(0);
/* not reached */
break;
}
default:
/* parent */
close(cfd);
break;
}
}
}

lg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.