Author: ckm
Date: 2008-10-12 23:08:05 +0200 (Sun, 12 Oct 2008)
New Revision: 1523
Modified:
trunk/openvas-plugins/ChangeLog
trunk/openvas-plugins/scripts/version_func.inc
Log:
* scripts/version_func.inc: changed function find_file
to improve performance, case insensitive search.
Socket can be passed to functions to avoid multiple
connections to target host.
Changed find_bin function using case insensitive search.
Modified: trunk/openvas-plugins/ChangeLog
===================================================================
--- trunk/openvas-plugins/ChangeLog 2008-10-12 20:38:34 UTC (rev 1522)
+++ trunk/openvas-plugins/ChangeLog 2008-10-12 21:08:05 UTC (rev 1523)
@@ -1,3 +1,11 @@
+2008-10-12 Carsten Koch-Mauthe <[EMAIL PROTECTED]>.
+
+ * scripts/version_func.inc: changed function find_file
+ to improve performance, case insensitive search.
+ Socket can be passed to functions to avoid multiple
+ connections to target host.
+ Changed find_bin function using case insensitive search.
+
2008-10-12 Tim Brown <[EMAIL PROTECTED]>
* scripts/aix_maintenance_level.nasl,
Modified: trunk/openvas-plugins/scripts/version_func.inc
===================================================================
--- trunk/openvas-plugins/scripts/version_func.inc 2008-10-12 20:38:34 UTC
(rev 1522)
+++ trunk/openvas-plugins/scripts/version_func.inc 2008-10-12 21:08:05 UTC
(rev 1523)
@@ -3,28 +3,29 @@
#
# This script is released under the GNU GPLv2
#
-# $Revision: 8 $
+# $Revision: 9 $
# XXX: the version tests should be eventually consolidated with
# the methods from revisions-lib.inc.
include("ssh_func.inc");
-function find_bin(prog_name) {
- local_var r, whe, whi, sock;
+function find_bin(prog_name, sock) {
+ local_var r, whe, whi;
whe = "";
whi = "";
if (islocalhost()) {
- r = split(pread(cmd:"locate", argv:make_list("locate",
"*bin/"+prog_name)) );
+ r = split(pread(cmd:"locate", argv:make_list("locate", "-i",
"*bin/"+prog_name)) );
whe = pread(cmd: "whereis", argv:make_list("whereis", "-b", prog_name));
whi = pread(cmd:"which", argv:make_list("which", "-a", prog_name));
} else {
- sock = ssh_login_or_reuse_connection();
- if (sock) {
- r = split(ssh_cmd(socket:sock, cmd:"locate *bin/"+prog_name,
timeout:60));
+ if(! sock) {
+ sock = ssh_login_or_reuse_connection();
+ }
+ if(sock) {
+ r = split(ssh_cmd(socket:sock, cmd:"locate -i *bin/"+prog_name,
timeout:60));
whe = ssh_cmd(socket:sock, cmd:"whereis -b "+prog_name, timeout:60);
whi = ssh_cmd(socket:sock, cmd:"which -a "+prog_name, timeout:60);
- ssh_close_connection();
} else {
r = NULL;
}
@@ -46,24 +47,33 @@
return (r);
}
-function find_file(file_name, file_path) {
- local_var r, f, sock, fname;
+function find_file(file_name, file_path, useregex, regexpar, sock ) {
+ local_var r, f, fname, lparam;
r = NULL;
+ if( useregex ) {
+ lparam = "-ir";
+ } else {
+ lparam = "-i";
+ }
if (islocalhost()) {
- r = split(pread(cmd:"locate", argv:make_list("locate",
file_path+file_name)) );
+ r = split(pread(cmd:"locate", argv:make_list("locate", lparam,
file_path+file_name+regexpar )) );
if(! isnull(file_path) ) {
- f = split(pread(cmd:"find", argv:make_list("find", file_path , "-name",
file_name, "-type", "f")));
+ f = split(pread(cmd:"find", argv:make_list("find", file_path ,
"-maxdepth", "7",
+ "-mindepth", "1", "-name", file_name, "-type",
"f")));
}
} else {
- sock = ssh_login_or_reuse_connection();
- if (sock) {
- r = split(ssh_cmd(socket:sock, cmd:"locate
"+raw_string(0x22)+file_path+file_name+raw_string(0x22), timeout:60));
+ if(! sock) {
+ sock = ssh_login_or_reuse_connection();
+ }
+ if(sock) {
+ r = split(ssh_cmd(socket:sock, cmd:"locate "+lparam+"
"+raw_string(0x22)+file_path+file_name+
+ regexpar+raw_string(0x22),
timeout:60));
if(!isnull(file_path) ) {
f = split(ssh_cmd(socket:sock, cmd:"find
"+raw_string(0x22)+file_path+raw_string(0x22)+
- " -name
"+raw_string(0x22)+file_name+raw_string(0x22)+" -type f"));
+ " -maxdepth 7 -mindepth 1"+"
-name "+raw_string(0x22)+
+ file_name+raw_string(0x22)+"
-type f", timeout:60));
}
- ssh_close_connection();
}
}
fname = ereg_replace(pattern:"\*.+", string:file_name, replace:"");
@@ -77,17 +87,18 @@
return (r);
}
-function get_bin_version(full_prog_name, version_argv, ver_pattern) {
- local_var loc_version, r, sock, report;
+function get_bin_version(full_prog_name, version_argv, ver_pattern, sock) {
+ local_var loc_version, r, report;
if (islocalhost()) {
r = pread(cmd:full_prog_name, argv:make_list(full_prog_name,
version_argv) );
} else {
- sock = ssh_login_or_reuse_connection();
- if (sock) {
- r = ssh_cmd(socket:sock, cmd:full_prog_name +" "+version_argv,
timeout:60);
- ssh_close_connection();
- }
+ if(! sock) {
+ sock = ssh_login_or_reuse_connection();
+ }
+ if(sock) {
+ r = ssh_cmd(socket:sock, cmd:full_prog_name +" "+version_argv,
timeout:60);
+ }
}
loc_version = eregmatch(pattern:ver_pattern, string:r);
if(loc_version != NULL) loc_version[max_index(loc_version)] = r;
_______________________________________________
Openvas-commits mailing list
[email protected]
http://lists.wald.intevation.org/mailman/listinfo/openvas-commits