slackyd & proxy
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
slackyd & proxy
slackyd può passare via proxy?
Ciao
01
Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Re: slackyd & proxy
No, non ancora.
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
Re: slackyd & proxy
mi stavo vedendo il codice per vedere se riesco a sostituire il download con una chiamata a wget. Quel poco di C che so credo dovrebbe bastarmi, ma ho difficoltà ad individuare il punto esatto dove fa il download (sono arrivato ad individuare il name resolving quindi dovrebbe essere da quelle parti)
Ciao
01
Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
Re: slackyd & proxy
Ecco la patch corretta applicata al pacchetto slackyd del 13.0. Aggiunge lo switch -W che significa 'usa wget'
Al momento non gestisce il controllo per file già scaricati, ma almeno è possibile passare via proxy. Basta settare le variabili di ambiente http_proxy e ftp_proxy prima di lanciare slackyd -W
L'ho testata grossolanamente, quindi potrebbe contenere errori.
La metto in allegato perchè il copia/incolla non funge tanto bene.
Ciao,
01
Codice: Seleziona tutto
diff --git slackyd-0.1.13beta/src/func.c b/Downloaded/slackyd-0.1.13beta/src/func.c
index 28172c0..0349f33 100644
--- slackyd-0.1.13beta/src/func.c
+++ slackyd-0.1.13beta/src/func.c
@@ -966,7 +966,7 @@ parse_options (int argc, char **argv)
opt.cache = xstrdup (DATADIR);
}
- while ((c = getopt(argc, argv, "5" "B:D::IL::O::PRSU::VX::" "b:c:d::efg:hl::mnpqr::s::uvw:x")) != -1) {
+ while ((c = getopt(argc, argv, "5" "WB:D::IL::O::PRSU::VX::" "b:c:d::efg:hl::mnpqr::s::uvw:x")) != -1) {
switch (c) {
@@ -1096,6 +1096,9 @@ parse_options (int argc, char **argv)
p_fold.suggest = (opt.check_dep) ? true : false;
p_fold.conflict = true;
break;
+ case 'W':
+ opt.wget = true;
+ break;
case 'h':
usage (argv[0]);
break;
diff --git slackyd-0.1.13beta/src/global.h b/Downloaded/slackyd-0.1.13beta/src/global.h
index f631ce0..c31a150 100644
--- slackyd-0.1.13beta/src/global.h
+++ slackyd-0.1.13beta/src/global.h
@@ -69,6 +69,7 @@ typedef struct options_t {
bool skip_status;
bool blacklist;
bool show_blacklisted;
+ bool wget;
u_short enabled;
diff --git slackyd-0.1.13beta/src/main.c b/Downloaded/slackyd-0.1.13beta/src/main.c
index eea22ce..dd04f80 100644
--- slackyd-0.1.13beta/src/main.c
+++ slackyd-0.1.13beta/src/main.c
@@ -54,6 +54,7 @@ usage(char *prgname)
fprintf (stderr, " -v: Verbose mode. \n");
fprintf (stderr, " -V: Show slackyd info. \n");
fprintf (stderr, " -w: View package info. \n");
+ fprintf (stderr, " -W: Using WGET to download files. \n");
fprintf (stderr, " -x: Disable blacklist. \n");
fprintf (stderr, " -X: Show packages available and blacklisted. \n");
diff --git slackyd-0.1.13beta/src/net.c b/Downloaded/slackyd-0.1.13beta/src/net.c
index d9d4a90..51e219d 100644
--- slackyd-0.1.13beta/src/net.c
+++ slackyd-0.1.13beta/src/net.c
@@ -222,6 +222,24 @@ netstat (int init, time_t pause, unsigned long received, unsigned long filesz)
return buffer;
}
+
+int
+get_file_over_wget (net_t *netpolicy,bool is_http)
+{
+ char buffer[BUFFSIZE0];
+ int out;
+ if(is_http){
+ snprintf(buffer,BUFFSIZE, "/usr/bin/wget -O '%s' 'http://%s/%s'",netpolicy->destpath,netpolicy->hostname,netpolicy->srcpath);
+ }else{
+ snprintf(buffer,BUFFSIZE, "/usr/bin/wget -O '%s' 'ftp://%s/%s'",netpolicy->destpath,netpolicy->hostname,netpolicy->srcpath);
+ }
+ out=system(buffer);
+ if(out==0){
+ return shutdown_net_t(netpolicy, 0, NULL);
+ }else{
+ return shutdown_net_t(netpolicy, out, "Download Error!");
+ }
+}
int
get_file_over_http (net_t *netpolicy)
@@ -579,12 +597,21 @@ get_pkg (pkg_t *package)
snprintf (netpolicy.srcpath, BUFFSIZE, "%s/%s/%s", path, loc, name);
snprintf (netpolicy.destpath, BUFFSIZE, "%s/%s", cache, name);
- switch (REPOS[r].proto_t) {
- case proto_http: return get_file_over_http (&netpolicy); break;
- case proto_ftp: return get_file_over_ftp (&netpolicy); break;
- case proto_file: return get_file_over_fs (&netpolicy); break;
- default: slassert (NULL); break;
- }
+ if(opt.wget){
+ switch (REPOS[r].proto_t) {
+ case proto_http: return get_file_over_wget (&netpolicy,true); break;
+ case proto_ftp: return get_file_over_wget (&netpolicy,false); break;
+ case proto_file: return get_file_over_fs (&netpolicy); break;
+ default: slassert (NULL); break;
+ }
+ }else{
+ switch (REPOS[r].proto_t) {
+ case proto_http: return get_file_over_http (&netpolicy); break;
+ case proto_ftp: return get_file_over_ftp (&netpolicy); break;
+ case proto_file: return get_file_over_fs (&netpolicy); break;
+ default: slassert (NULL); break;
+ }
+ }
return -1;
}
diff --git slackyd-0.1.13beta/src/packages.c b/Downloaded/slackyd-0.1.13beta/src/packages.c
index e796cf6..97d84ea 100644
--- slackyd-0.1.13beta/src/packages.c
+++ slackyd-0.1.13beta/src/packages.c
@@ -2499,13 +2499,21 @@ pkgsrc_get (pkg_t **packages[], unsigned *npackages)
currents[2]->s);
filepath (netpolicy.destpath);
-
- switch (proto) {
- case proto_http: get_file_over_http (&netpolicy); break;
- case proto_ftp: get_file_over_ftp (&netpolicy); break;
- case proto_file: get_file_over_fs (&netpolicy); break;
+ if(opt.wget){
+ switch (proto) {
+ case proto_http: get_file_over_wget (&netpolicy,true); break;
+ case proto_ftp: get_file_over_wget (&netpolicy,false); break;
+ case proto_file: get_file_over_fs (&netpolicy); break;
+ default: slassert (NULL); break;
+ }
+ }else{
+ switch (proto) {
+ case proto_http: get_file_over_http (&netpolicy); break;
+ case proto_ftp: get_file_over_ftp (&netpolicy); break;
+ case proto_file: get_file_over_fs (&netpolicy); break;
default: slassert (NULL); break;
- }
+ }
+ }
currents[0] = currents[0]->next;
currents[1] = currents[1]->next;
diff --git slackyd-0.1.13beta/src/slackyd.h b/Downloaded/slackyd-0.1.13beta/src/slackyd.h
index 0ee747a..7161a9e 100644
--- slackyd-0.1.13beta/src/slackyd.h
+++ slackyd-0.1.13beta/src/slackyd.h
@@ -420,6 +420,8 @@ int check_elf_libs
unsigned *n_missing_libs, char *tgz);
/* net.c */
+int get_file_over_wget
+ (net_t *netpolicy, bool is_http);
int get_file_over_http
(net_t *netpolicy);
int get_file_over_ftp
diff --git slackyd-0.1.13beta/src/update.c b/Downloaded/slackyd-0.1.13beta/src/update.c
index 2c73a94..208c9aa 100644
--- slackyd-0.1.13beta/src/update.c
+++ slackyd-0.1.13beta/src/update.c
@@ -280,13 +280,20 @@ update_get_file (unsigned index, branches branch, const char *file)
break;
}
-
- switch (REPOS[index].proto_t)
- {
- case proto_http: return get_file_over_http (&netpolicy); break;
- case proto_ftp: return get_file_over_ftp (&netpolicy); break;
- case proto_file: return get_file_over_fs (&netpolicy); break;
- default: slassert (NULL); break;
+ if(opt.wget){
+ switch (REPOS[index].proto_t) {
+ case proto_http: return get_file_over_wget (&netpolicy,true); break;
+ case proto_ftp: return get_file_over_wget (&netpolicy,false); break;
+ case proto_file: return get_file_over_fs (&netpolicy); break;
+ default: slassert (NULL); break;
+ }
+ }else{
+ switch (REPOS[index].proto_t) {
+ case proto_http: return get_file_over_http (&netpolicy); break;
+ case proto_ftp: return get_file_over_ftp (&netpolicy); break;
+ case proto_file: return get_file_over_fs (&netpolicy); break;
+ default: slassert (NULL); break;
+ }
}
return 0;
L'ho testata grossolanamente, quindi potrebbe contenere errori.
La metto in allegato perchè il copia/incolla non funge tanto bene.
Ciao,
01
- Allegati
-
- patch-wget.diff.gz
- Patch per aggiungere wget a slackyd
- (1.73 KiB) Scaricato 59 volte
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Re: slackyd & proxy
Molto bene, ho dato una veloce lettura alla patch e sembra tutto corretto. E' un'ottima soluzione per aggirare l'attuale mancanza proxy.
Piu' tardi la applico al programma e faccio qualche test.
Grazie ;)
Piu' tardi la applico al programma e faccio qualche test.
Grazie ;)
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
Re: slackyd & proxy
pecca del fatto che slackyd -u -W non controlla se i file packages.txt&co sono più nuovi o gli stessi, per cui li scarica in ogni caso.
poi la soluzione con -W è stata un ripiego (che poi volevo usare -p che sta per proxy ma era già in uso). in verità la cosa corretta dovrebbe essere il mettere in slackyd.conf una direttiva ,ipo "usa proxy = on" e "usa il proxy = http://...:../" perchè altrimenti si rischia che wget non sappia quale usare. Anzi, la soluzione migliore (però non sò come si fa in C) è prelevare le variabili di ambiente http_proxy e ftp_proxy e usare wget se sono settate o usare il metodo interno se non settate.
Il vantaggio di -W a queste soluzioni è, però, il fatto di poter usarlo anche se non c'è proxy che da il vantaggio di avere la barra di scorrimento.
Oppure metterlo in slackyd.conf alla voce "usa wget = on/off" così tutti quelli che si sono fatti gli script basati su slackyd non devono modificarli. Si, secondo me questa potrebbe essere migliore come soluzione.
L'ultima alternativa è eliminare del tutto il downloader interno e lasciare solo wget
Oppure lasci -W e buonanotte al secchio
Ah, oggi mi ha dato un errore non fatal con slackyd -W -b ... che non so da dove veniva; qualcosa tipo (in inglese) "non riesco a determinare il corrente cwd" in cui tale cwd dovrebbe essere /var/slacky/src/..., ma ha tranquillamente scaricato i file.
Ho verificato (cosa che non avevo fatto quando ho scritto la patch) che in caso di fallimento di wget dice correttamente "Download error" e va avanti con gli altri file.
poi la soluzione con -W è stata un ripiego (che poi volevo usare -p che sta per proxy ma era già in uso). in verità la cosa corretta dovrebbe essere il mettere in slackyd.conf una direttiva ,ipo "usa proxy = on" e "usa il proxy = http://...:../" perchè altrimenti si rischia che wget non sappia quale usare. Anzi, la soluzione migliore (però non sò come si fa in C) è prelevare le variabili di ambiente http_proxy e ftp_proxy e usare wget se sono settate o usare il metodo interno se non settate.
Il vantaggio di -W a queste soluzioni è, però, il fatto di poter usarlo anche se non c'è proxy che da il vantaggio di avere la barra di scorrimento.
Oppure metterlo in slackyd.conf alla voce "usa wget = on/off" così tutti quelli che si sono fatti gli script basati su slackyd non devono modificarli. Si, secondo me questa potrebbe essere migliore come soluzione.
L'ultima alternativa è eliminare del tutto il downloader interno e lasciare solo wget
Oppure lasci -W e buonanotte al secchio
Ah, oggi mi ha dato un errore non fatal con slackyd -W -b ... che non so da dove veniva; qualcosa tipo (in inglese) "non riesco a determinare il corrente cwd" in cui tale cwd dovrebbe essere /var/slacky/src/..., ma ha tranquillamente scaricato i file.
Ho verificato (cosa che non avevo fatto quando ho scritto la patch) che in caso di fallimento di wget dice correttamente "Download error" e va avanti con gli altri file.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Re: slackyd & proxy
viewtopic.php?f=20&t=22612&p=261023#p261023ZeroUno ha scritto: Oppure metterlo in slackyd.conf alla voce "usa wget = on/off" così tutti quelli che si sono fatti gli script basati su slackyd non devono modificarli. Si, secondo me questa potrebbe essere migliore come soluzione.
Sistemato