aboutsummaryrefslogtreecommitdiffstats
path: root/config/frickin/frickin.inc
diff options
context:
space:
mode:
Diffstat (limited to 'config/frickin/frickin.inc')
-rw-r--r--config/frickin/frickin.inc137
1 files changed, 137 insertions, 0 deletions
diff --git a/config/frickin/frickin.inc b/config/frickin/frickin.inc
new file mode 100644
index 00000000..ac7c7572
--- /dev/null
+++ b/config/frickin/frickin.inc
@@ -0,0 +1,137 @@
+<?php
+
+/* $Id$ */
+/*
+ frickin.inc
+ Copyright (C) 2006 Scott Ullrich
+ part of pfSense
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+
+function frickin_custom_php_install_command() {
+ global $config;
+ $fout = fopen("/usr/local/etc/rc.d/frickin.sh", "w");
+ fwrite($fout, "#!/bin/sh\n# This package was automatically generated\n# by the pfSense package system.\n\n");
+ fwrite($fout, "# PACKAGE: Frickin Proxy\n");
+ fwrite($fout, "# EXECUTABLE: frickin\n");
+ fwrite($fout, "/usr/local/bin/frickin");
+ fwrite($fout, " -c /usr/local/etc/frickin.conf");
+ fwrite($fout, " &\n");
+ fclose($fout);
+
+ $fout = fopen("/usr/local/etc/frickin.conf", "w");
+ $frickin_conf = <<<EOD
+
+proxy {
+ user = "nobody";
+ group = "nobody";
+ client {
+ queue = 5; # Maximum connection queue size
+ max = 100; # Maximum number of concurrent clients
+ multiple = FALSE; # Allow multiple connections from same ip
+ }
+ session {
+ connect = 15; # Connect timout (seconds)
+ idle = 60; # Idle timeout (seconds)
+ }
+}
+
+listeners {
+ default {
+ name = "Frickin PPTP Proxy";
+ vendor = "Placid Development";
+ ip = "127.0.0.1";
+ port = 1723;
+ }
+}
+
+EOD;
+
+ fwrite($fout, "{$frickin_conf}");
+ fclose($fout);
+
+ mwexec("/usr/bin/killall frickin");
+ mwexec("chmod a+rx /usr/local/etc/rc.d/frickin.sh");
+ mwexec("/usr/local/etc/rc.d/frickin.sh");
+
+// file_notice("System -> Advanced -> Scrub", "pfSenses scrub option has been disabled. See http://www.openbsd.org/faq/pf/scrub.html for more info.", "Scrub");
+// $config['system']['scrubnodf'] = "enabled";
+// write_config();
+
+ filter_configure();
+}
+
+function frickin_custom_php_deinstall_command() {
+ global $config;
+
+// unset($config['system']['scrubnodf']);
+// file_notice("System -> Advanced -> Scrub", "pfSenses scrub option has been enabled. See http://www.openbsd.org/faq/pf/scrub.html for more info.", "Scrub");
+// write_config();
+
+ unlink_if_exists("/usr/local/etc/rc.d/frickin.sh");
+ unlink_if_exists("/usr/local/bin/frickin");
+
+ mwexec("killall frickin");
+
+ filter_configure();
+}
+
+function frickin_generate_rules($type) {
+ global $config;
+
+ $rules = "";
+
+ $frickin_conf = $config['installedpackages']['frickin']['config'][0];
+ if (!is_process_running('frickin')) {
+ log_error("Frickin is installed but not started. Not installing redirect rules.");
+ return;
+ }
+
+ $ifaces = explode(',', $frickin_conf['active_interface']);
+ $ifaces = array_map('convert_friendly_interface_to_real_interface_name', $ifaces);
+
+ switch($type) {
+ case 'nat':
+ foreach ($ifaces as $iface) {
+ if(!$iface) {
+ //log_error("Not installing frickin pptp proxy rule. Please set it up");
+ //continue;
+ }
+ $rules .= "rdr on $iface proto tcp from any to any port = 1723 -> 127.0.0.1\n";
+ $rules .= "rdr on $iface inet proto gre all -> 127.0.0.1\n";
+ }
+ break;
+ case 'filter':
+ $ext_if = get_real_wan_interface();
+ $rules .= "pass out on $ext_if proto gre from any to any keep state\n";
+ $rules .= "pass in on $ext_if proto gre from any to any keep state\n";
+ break;
+ default:
+ break;
+ }
+
+ return $rules;
+}
+
+?> \ No newline at end of file