slackyd & proxy
Inviato: lun 19 ott 2009, 17:17
slackyd può passare via proxy?
Ciao
01
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;
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.