From b784fbbdda91bdd67701c8f2f9ce0d06572d8a8a Mon Sep 17 00:00:00 2001 From: Ryan Wagoner Date: Fri, 24 Nov 2006 14:49:50 +0000 Subject: adding imspector package --- packages/imspector/imspector.inc | 161 +++++++++++++++++++++++++++++++++++++++ packages/imspector/imspector.xml | 136 +++++++++++++++++++++++++++++++++ 2 files changed, 297 insertions(+) create mode 100644 packages/imspector/imspector.inc create mode 100644 packages/imspector/imspector.xml (limited to 'packages/imspector') diff --git a/packages/imspector/imspector.inc b/packages/imspector/imspector.inc new file mode 100644 index 00000000..15aacbdf --- /dev/null +++ b/packages/imspector/imspector.inc @@ -0,0 +1,161 @@ + 127.0.0.1 port 16667\n"; + } + + function imspector_pf_rule($iface, $port) { + return "pass in quick on {$iface} inet proto tcp from any to any port {$port} keep state\n"; + } + + function imspector_proto_to_port ($proto) + { + switch ($proto) { + case "msn": + return 1863; + case "icqaim": + return 5190; + case "yahoo": + return 5050; + case "irc": + return 6667; + default: + return NULL; + } + } + + function imspector_remove_rules() { + $anchor = "imspector"; + exec("/sbin/pfctl -a " . $anchor . " -Fr"); + exec("/sbin/pfctl -a " . $anchor . " -Fn"); + } + + function before_form_imspector($pkg) { + global $config; + + } + + function validate_form_imspector($post, $input_errors) { + + } + + function sync_package_imspector() { + global $config; + global $input_errors; + $configfile = "/usr/local/etc/imspector.conf"; + $proto=""; + $pf_rules=""; + + imspector_notice("Syncing package"); + + imspector_remove_rules(); + + conf_mount_rw(); + config_lock(); + + if(imspector_config("proto_msn")) $proto .= "msn,"; + if(imspector_config("proto_icqaim")) $proto .= "icqaim,"; + if(imspector_config("proto_yahoo")) $proto .= "yahoo,"; + if(imspector_config("proto_irc")) $proto .= "irc,"; + + if($proto != "") + $proto_array = explode(",",$proto); + + if(imspector_config("iface_array")) + $iface_array = explode(",",imspector_config("iface_array")); + + if($iface_array && $proto_array) { + for($i=1;$i<=2;$i++) { + foreach($iface_array as $iface) { + $if = convert_friendly_interface_to_real_interface_name($iface); + /* above function returns iface if fail */ + if($if!=$iface) { + $addr = find_interface_ip($if); + /* non enabled interfaces are displayed in list on imspector settings page */ + /* check that the interface has an ip address before adding parameters */ + if($addr) { + foreach($proto_array as $proto) { + if($i==1 && imspector_proto_to_port($proto)) + $pf_rules .= imspector_pf_rdr($if,imspector_proto_to_port($proto)); + elseif ($i==2 && imspector_proto_to_port($proto)) + $pf_rules .= imspector_pf_rule($if,imspector_proto_to_port($proto)); + } + } + } + } + } + + if($pf_rules != "") { + exec("echo \"{$pf_rules}\" | /sbin/pfctl -a imspector -f -"); + + $configtext = "plugin_dir=/usr/local/lib/imspector\n"; + if(imspector_config("log_file")) + $configtext .= "file_logging_dir=/var/log/imspector\n"; + write_imspector_config($configfile,$configtext); + + $stop = << "imspector.sh", + "start" => $start, + "stop" => $stop + ) + ); + } + + if((int)exec("pgrep imspector | wc -l") == 0 || $_POST['iface_array']) { + imspector_notice("Starting service"); + if(imspector_config("log_file")) + exec("mkdir -p /var/log/imspector"); + start_service("imspector"); + } + } + + if(!$iface_array || !$proto_array || $pf_rules = "") { + /* no parameters user does not want imspector running */ + /* lets stop the service and remove the rc file */ + + stop_service("imspector"); + imspector_warn("No interfaces and/or protocols stopping service"); + exec("rm -f /usr/local/etc/rc.d/imspector*"); + exec("rm -f {$configfile}"); + } + + config_unlock(); + conf_mount_ro(); + } +?> diff --git a/packages/imspector/imspector.xml b/packages/imspector/imspector.xml new file mode 100644 index 00000000..1beb085e --- /dev/null +++ b/packages/imspector/imspector.xml @@ -0,0 +1,136 @@ + + + Services: IMSpector + imspector + 0.2 + Change + /usr/local/pkg/imspector.inc + /pkg_edit.php?xml=imspector.xml&id=0 + + IMSpector + Set IMSpector settings such as protocols to listen on. +
Services
+ /pkg_edit.php?xml=imspector.xml&id=0 +
+ + http://www.pfsense.org/packages/config/imspector/imspector.inc + /usr/local/pkg/ + 0755 + + + /usr/local/sbin/ + 0755 + http://www.pfsense.com/packages/config/imspector/sbin/imspector + + + /usr/local/lib/ + 0755 + http://www.pfsense.com/packages/config/imspector/lib/libimspector.so + + + /usr/local/lib/imspector + 0755 + http://www.pfsense.com/packages/config/imspector/lib/debugloggingplugin.so + + + /usr/local/lib/imspector + 0755 + http://www.pfsense.com/packages/config/imspector/lib/fileloggingplugin.so + + + /usr/local/lib/imspector + 0755 + http://www.pfsense.com/packages/config/imspector/lib/icqprotocolplugin.so + + + /usr/local/lib/imspector + 0755 + http://www.pfsense.com/packages/config/imspector/lib/ircprotocolplugin.so + + + /usr/local/lib/imspector + 0755 + http://www.pfsense.com/packages/config/imspector/lib/msnprotocolplugin.so + + + /usr/local/lib/imspector + 0755 + http://www.pfsense.com/packages/config/imspector/lib/yahooprotocolplugin.so + + + /usr/lib + 0755 + http://www.pfsense.com/packages/config/imspector/lib/libstdc++.a + + + /usr/lib + 0755 + http://www.pfsense.com/packages/config/imspector/lib/libstdc++.so + + + /usr/lib + 0755 + http://www.pfsense.com/packages/config/imspector/lib/libstdc++.so.5 + + + /usr/lib + 0755 + http://www.pfsense.com/packages/config/imspector/lib/libstdc++_p.a + + + imspector + imspector.sh + imspector + + + + Interface (generally LAN) + iface_array + lan + true + 3 + interfaces_selection + + + Listen on MSN protocol + proto_msn + checkbox + + + Listen on ICQ/AIM protocol + proto_icqaim + checkbox + + + Listen on Yahoo protocol + proto_yahoo + checkbox + + + Listen on IRC protocol + proto_irc + checkbox + + + Enable file logging + log_file + checkbox + + + + before_form_imspector(&$pkg); + + + validate_form_imspector($_POST, &$input_errors); + + + sync_package_imspector(); + + + sync_package_imspector(); + + + exec("rm -f /usr/local/etc/rc.d/imspector*"); + exec("rm -f /usr/local/etc/imspector.conf"); + +
-- cgit v1.2.3