web/modules
by Justin Sherrill
web/modules/pxt/PXT/Request.pm | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
New commits:
commit ce7a2f530271da6e519369c45c9d962a377d6bc8
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Fri May 29 15:45:24 2009 -0400
501784 - fixed issue with timed out logins that required cookie deletion to log in again
issue resolved around the fact that we are no longer setting the domain in the java stack, but still was in the perl coupled with the fact the expire time on the perl side was using the config value session_cookie_lifetime which was not set, resulting in a cookie that would only expire when the browser was closed
diff --git a/web/modules/pxt/PXT/Request.pm b/web/modules/pxt/PXT/Request.pm
index 7dbc235..dd66184 100644
--- a/web/modules/pxt/PXT/Request.pm
+++ b/web/modules/pxt/PXT/Request.pm
@@ -437,7 +437,7 @@ sub cookie_jar {
@secure = (-secure => 1)
if $self->ssl_available;
- my $timeout = PXT::Config->get("session_cookie_lifetime");
+ my $timeout = PXT::Config->get("session_database_lifetime");
my @expire;
@expire = (-expires => $timeout)
@@ -456,7 +456,8 @@ sub cookie_jar {
my $session_cookie = new Apache2::Cookie $self->{apr},
-name => $self->session_cookie_name,
-value => $self->session->key,
- -domain => PXT::Config->get("base_domain"),
+ #-domain => PXT::Config->get("base_domain"),
+ # Don't set the cookie's domain, as it will cause issues since we aren't setting it in the java stack
@expire,
@secure,
-path => "/";
14 years, 10 months
Branch 'VADER' - java/code search-server/src
by John Matthews
java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java | 4 +++-
search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java | 2 ++
2 files changed, 5 insertions(+), 1 deletion(-)
New commits:
commit 143000384eb4509922777146f282fb512aa98958
Author: John Matthews <jmatthew(a)redhat.com>
Date: Fri May 29 15:06:08 2009 -0400
487014 - SystemSearch reducing scrore threshold for a single result to redirect to SDC page
diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java
index 43d0fb5..80f74b0 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java
@@ -168,16 +168,18 @@ public class SystemSearchSetupAction extends RhnAction implements Listable {
helper.execute();
List results = (List)request.getAttribute(getDataSetName());
+ log.info("SystemSearch results.size() = " + results.size());
if ((results != null) && (results.size() == 1)) {
SystemSearchResult s = (SystemSearchResult) results.get(0);
Double score = s.getScore();
+ log.info("SystemSearch s.getScore() = " + s.getScore());
if (score != null) {
/** Adding a rule so we only redirect to a specific system id
* when we are pretty sure the search result is what the user
* expects. We are using the lucene score for this result to
* gauge this.
*/
- if (score > 0.85) {
+ if (score > 0.50) {
try {
response.sendRedirect(
"/rhn/systems/details/Overview.do?sid=" +
diff --git a/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java b/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java
index 8f1e848..48e7b94 100644
--- a/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java
+++ b/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java
@@ -184,6 +184,8 @@ public abstract class GenericIndexTask implements Job {
log.info("GenericIndexTask<" + super.getClass().toString() +
" last processed id = " + sid + ", lastRun was " + lastRun);
retval = srvrQuery.loadList(params);
+ log.info("GenericIndexTask<" + super.getClass().toString() +
+ " number of results returned = " + retval.size());
}
finally {
srvrQuery.close();
14 years, 10 months
java/code search-server/src
by John Matthews
java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java | 4 +++-
search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java | 2 ++
2 files changed, 5 insertions(+), 1 deletion(-)
New commits:
commit db538084615708f9e45270793470e4bb0cbccc55
Author: John Matthews <jmatthew(a)redhat.com>
Date: Fri May 29 15:06:08 2009 -0400
487014 - SystemSearch reducing scrore threshold for a single result to redirect to SDC page
diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java
index 43d0fb5..80f74b0 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/SystemSearchSetupAction.java
@@ -168,16 +168,18 @@ public class SystemSearchSetupAction extends RhnAction implements Listable {
helper.execute();
List results = (List)request.getAttribute(getDataSetName());
+ log.info("SystemSearch results.size() = " + results.size());
if ((results != null) && (results.size() == 1)) {
SystemSearchResult s = (SystemSearchResult) results.get(0);
Double score = s.getScore();
+ log.info("SystemSearch s.getScore() = " + s.getScore());
if (score != null) {
/** Adding a rule so we only redirect to a specific system id
* when we are pretty sure the search result is what the user
* expects. We are using the lucene score for this result to
* gauge this.
*/
- if (score > 0.85) {
+ if (score > 0.50) {
try {
response.sendRedirect(
"/rhn/systems/details/Overview.do?sid=" +
diff --git a/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java b/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java
index 8f1e848..48e7b94 100644
--- a/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java
+++ b/search-server/src/java/com/redhat/satellite/search/scheduler/tasks/GenericIndexTask.java
@@ -184,6 +184,8 @@ public abstract class GenericIndexTask implements Job {
log.info("GenericIndexTask<" + super.getClass().toString() +
" last processed id = " + sid + ", lastRun was " + lastRun);
retval = srvrQuery.loadList(params);
+ log.info("GenericIndexTask<" + super.getClass().toString() +
+ " number of results returned = " + retval.size());
}
finally {
srvrQuery.close();
14 years, 10 months
backend/server
by Pradeep Kilambi
backend/server/rhnChannel.py | 46 ++++++++++++++++++++++++++++++++++---------
1 file changed, 37 insertions(+), 9 deletions(-)
New commits:
commit f17b9d5348b27d224434533a4406ab195416ba19
Author: James Bowes <jbowes(a)redhat.com>
Date: Wed May 27 13:44:36 2009 -0400
Show all available eus channels during registration
There were two problems with the existing logic for getting applicable
eus base channels during registration:
- The rpm release version was compared exactly to the row in the db, vs
using the first X parts (where X is 1 for rhel 4 and 3 for everything
else), meaning if the redhat-release rpm was bumped during an EUS
lifetime, you would see no EUS channels with the new rpm.
- If your redhat-release version did match an EUS channel, the code
would only return that matching channel, instead of that matching channel
and all newer EUS versions.
- The newest EUS channel was always the 'default' channel, meaning that
when registering to EUS with rhnreg_ks, the help desk for the
--use-eus-channel option was wrong.
In practice, during registration a user would either only see the newest
EUS channel, or no EUS channels at all. Fix the code to display all
relevant EUS channels.
diff --git a/backend/server/rhnChannel.py b/backend/server/rhnChannel.py
index 1198cb7..292783f 100644
--- a/backend/server/rhnChannel.py
+++ b/backend/server/rhnChannel.py
@@ -1075,6 +1075,11 @@ def base_channel_for_rel_arch(release, server_arch, org_id=-1,
def base_eus_channel_for_ver_rel_arch(version, release, server_arch,
org_id=-1, user_id=None):
+ """
+ given a redhat-release version, release, and server arch, return a list
+ of dicts containing the details of the channel z streams either match the
+ version/release pair, or are greater.
+ """
log_debug(4, version, release, server_arch, org_id, user_id)
@@ -1082,8 +1087,7 @@ def base_eus_channel_for_ver_rel_arch(version, release, server_arch,
select c.id,
c.label,
c.name,
- rcm.is_default,
- c.receiving_updates
+ rcm.release
from
rhnChannelPermissions cp,
rhnChannel c,
@@ -1092,7 +1096,6 @@ def base_eus_channel_for_ver_rel_arch(version, release, server_arch,
rhnReleaseChannelMap rcm
where
rcm.version = :version
- and rcm.release = :release
and scac.server_arch_id = sa.id
and sa.label = :server_arch
and scac.channel_arch_id = rcm.channel_arch_id
@@ -1104,18 +1107,43 @@ def base_eus_channel_for_ver_rel_arch(version, release, server_arch,
"""
eus_channels_prepared = rhnSQL.prepare(eus_channels_query)
- eus_channels_prepared.execute(release = release,
- version = version,
+ eus_channels_prepared.execute(version = version,
server_arch = server_arch,
user_id = user_id,
org_id = org_id)
- eus_channels = eus_channels_prepared.fetchall_dict()
+ channels = []
+ while True:
+ channel = eus_channels_prepared.fetchone_dict()
+ if channel is None:
+ break
- log_debug(4, "EUS Channels are: %s" % str(eus_channels))
+ # the release part of redhat-release for rhel 4 is like
+ # 6.1 or 7; we just look at the first digit.
+ # for rhel 5 and up it's the full release number of rhel, followed by
+ # the true release number of the rpm, like 5.0.0.9 (for the 9th
+ # version of the redhat-release rpm, for RHEL GA)
+ db_release = channel['release']
+ if version in ['4AS', '4ES']:
+ parts = 1
+ else:
+ parts = 3
+
+ server_rel = '.'.join(release.split('.')[:parts])
+ channel_rel = '.'.join(db_release.split('.')[:parts])
+
+ # XXX we're no longer using the is_default column from the db
+ if rpm.labelCompare(('0', server_rel, '0'),
+ ('0', channel_rel, '0')) == 0:
+ channel['is_default'] = 'Y'
+ channels.append(channel)
+ if rpm.labelCompare(('0', server_rel, '0'),
+ ('0', channel_rel, '0')) < 0:
+ channel['is_default'] = 'N'
+ channels.append(channel)
+
+ return channels
- return eus_channels
-
def get_channel_for_release_arch(release, server_arch):
log_debug(3, release, server_arch)
14 years, 10 months
Branch 'VADER' - 2 commits - java/code web/html
by Miroslav Suchý
java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java | 14 ----------
web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml | 9 ------
2 files changed, 23 deletions(-)
New commits:
commit c3f81fadb12613dedac43442266fd3009086fc82
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri May 29 15:39:32 2009 +0200
501797 - no need to install Monitoring service
Monitoring service is now installed by spacewalk-setup and is always on (in chkconfig terminology)
whether it will start or not is detected inside the startup scripts
Therefore we can safely remove the installation from here
(cherry picked from commit 0e11c024fd79f7e626a50dbfc4cbe20636ea7fb7)
diff --git a/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java b/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java
index ec70bf4..bc89e07 100644
--- a/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java
@@ -308,20 +308,6 @@ public class ConfigureSatelliteCommand extends BaseConfigureCommand
lookupConfigMacroByName("RHN_SAT_WEB_PORT");
setConfigMacroDefault(port, "443");
- // Setup the Monitoring Service
- e = getExecutor();
- args.clear();
- args.add("/usr/bin/sudo");
- args.add("/etc/rc.d/np.d/step");
- args.add("Monitoring");
- args.add("install");
- exitcode = e.execute((String[]) args.toArray(new String[0]));
- if (exitcode != 0) {
- String message = "Not able to execute: [" +
- args.toString() + "] got back exit code: " + exitcode;
- logger.error(message);
- throw new RuntimeException(message);
- }
if (logger.isDebugEnabled()) {
logger.debug("enableMonitoring() - end");
}
commit 7fc14a12a5161989bc6a962441079dedd5f3726b
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri May 29 15:32:04 2009 +0200
501797 - remove /etc/rc.d/np.d/step MonitoringScout install
it is obsolete by <action-name>Enable ${app.name} services</action-name> action
(cherry picked from commit f8510568495380d2a71eeeb3154231e8febc315d)
diff --git a/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml b/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml
index b786ef7..b32a29c 100644
--- a/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml
+++ b/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml
@@ -625,15 +625,6 @@ fi
<configfile acl="global_config(ssl_available);session_data_true(enable_osad)">/etc/jabberd/sm.xml</configfile>
</deploy-configs>
- <run-script acl="session_data_true(enable_monitoring)">
- <action-name>Enable Monitoring Services</action-name>
- <script>
-#!/bin/sh
-
-/etc/rc.d/np.d/step MonitoringScout install
- </script>
- </run-script>
-
<run-script>
<action-name>Allow Proxy service to read Satellite Configuration</action-name>
<script>
14 years, 10 months
java/code
by Miroslav Suchý
java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java | 14 ----------
1 file changed, 14 deletions(-)
New commits:
commit 0e11c024fd79f7e626a50dbfc4cbe20636ea7fb7
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri May 29 15:39:32 2009 +0200
501797 - no need to install Monitoring service
Monitoring service is now installed by spacewalk-setup and is always on (in chkconfig terminology)
whether it will start or not is detected inside the startup scripts
Therefore we can safely remove the installation from here
diff --git a/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java b/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java
index ec70bf4..bc89e07 100644
--- a/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/satellite/ConfigureSatelliteCommand.java
@@ -308,20 +308,6 @@ public class ConfigureSatelliteCommand extends BaseConfigureCommand
lookupConfigMacroByName("RHN_SAT_WEB_PORT");
setConfigMacroDefault(port, "443");
- // Setup the Monitoring Service
- e = getExecutor();
- args.clear();
- args.add("/usr/bin/sudo");
- args.add("/etc/rc.d/np.d/step");
- args.add("Monitoring");
- args.add("install");
- exitcode = e.execute((String[]) args.toArray(new String[0]));
- if (exitcode != 0) {
- String message = "Not able to execute: [" +
- args.toString() + "] got back exit code: " + exitcode;
- logger.error(message);
- throw new RuntimeException(message);
- }
if (logger.isDebugEnabled()) {
logger.debug("enableMonitoring() - end");
}
14 years, 10 months
3 commits - monitoring/SatConfig web/html
by Miroslav Suchý
monitoring/SatConfig/general/Monitoring.pm | 13 ++-----------
web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml | 9 ---------
2 files changed, 2 insertions(+), 20 deletions(-)
New commits:
commit f8510568495380d2a71eeeb3154231e8febc315d
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri May 29 15:32:04 2009 +0200
501797 - remove /etc/rc.d/np.d/step MonitoringScout install
it is obsolete by <action-name>Enable ${app.name} services</action-name> action
diff --git a/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml b/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml
index b786ef7..b32a29c 100644
--- a/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml
+++ b/web/html/applications/rhn-proxy/5.3/install-rhn-proxy.xml
@@ -625,15 +625,6 @@ fi
<configfile acl="global_config(ssl_available);session_data_true(enable_osad)">/etc/jabberd/sm.xml</configfile>
</deploy-configs>
- <run-script acl="session_data_true(enable_monitoring)">
- <action-name>Enable Monitoring Services</action-name>
- <script>
-#!/bin/sh
-
-/etc/rc.d/np.d/step MonitoringScout install
- </script>
- </run-script>
-
<run-script>
<action-name>Allow Proxy service to read Satellite Configuration</action-name>
<script>
commit fd376e82dbe5c2718ee4829bebed47fa0169d89d
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri May 29 14:25:23 2009 +0200
remove unused code
diff --git a/monitoring/SatConfig/general/Monitoring.pm b/monitoring/SatConfig/general/Monitoring.pm
index ab37e36..28e6267 100644
--- a/monitoring/SatConfig/general/Monitoring.pm
+++ b/monitoring/SatConfig/general/Monitoring.pm
@@ -46,7 +46,6 @@ sub startActions
my $pxtconf = new PXT::Config("web");
my $startMIABServices = $pxtconf->get("is_monitoring_backend");
my $startScoutServices = $pxtconf->get("is_monitoring_scout");
- #my $separateWebserver = 0;
my $configIsInstalled;
if ( $startMIABServices or $startScoutServices ) {
@@ -66,12 +65,6 @@ sub startActions
$self->startModule(Notifier);
$self->startModule(AckProcessor);
$self->startModule(TSDBLocalQueue);
- # Next is a fall-back in the event that the single apache instance proves to
- # be instable, overburdened, etc. Fully enabling this will require that
- # some indication of which IP and/or port to bind to is provided somewhere.
- #if ($separateWebserver) {
- # $self->startModule(Apache);
- #}
} else {
$self->addError('Monitoring configuration not loaded - not starting MOC functions!');
}
commit 82b5e6bb6deee8414f3eae88b8ecddd3946ea414
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri May 29 14:24:34 2009 +0200
fix formating
diff --git a/monitoring/SatConfig/general/Monitoring.pm b/monitoring/SatConfig/general/Monitoring.pm
index 4fdaaa6..ab37e36 100644
--- a/monitoring/SatConfig/general/Monitoring.pm
+++ b/monitoring/SatConfig/general/Monitoring.pm
@@ -17,8 +17,6 @@ use TrapReceiver;
use NOCpulse::NOCpulseini;
use PXT::Config;
-
-
sub overview
{
return 'Starts up monitoring functionality. What it starts depends on web.is_monitoring_backend and web.is_monitoring_scout in /etc/rhn/rhn.conf';
@@ -26,7 +24,7 @@ sub overview
sub printStatus
{
- my ($self,@params) = @_;
+ my ($self,@params) = @_;
my $pxtconf = new PXT::Config("web");
if ($pxtconf->get("is_monitoring_backend")) {
$self->dprint(1," ++++ Monitoring backend functionality is enabled");
@@ -62,7 +60,7 @@ sub startActions
if ($configIsInstalled) {
# REQUIRE that NOCpulse.ini is installed, else bad stuff could happen if
# MOC services start.
- $self->startModule(GenerateNotifConfig);
+ $self->startModule(GenerateNotifConfig);
$self->startModule(NotifEscalator);
$self->startModule(NotifLauncher);
$self->startModule(Notifier);
14 years, 10 months
Branch 'VADER' - selinux/spacewalk-monitoring-selinux
by Jan Pazdziora
selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec | 1 +
1 file changed, 1 insertion(+)
New commits:
commit 844507bd1263de55878897ceff0a31b55be62ea6
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri May 29 15:30:27 2009 +0200
501546 - Require tsdb so that /var/log/nocpulse/TSDBLocalQueue already exists when we run restorecon.
(cherry picked from commit 2fa4874741b1448560eaf20175987ad8f4840a62)
diff --git a/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec b/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec
index 117ca7a..1cef412 100644
--- a/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec
+++ b/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec
@@ -33,6 +33,7 @@ Requires(postun): /usr/sbin/semodule, /sbin/restorecon
Requires: SatConfig-general
Requires: NPalert
Requires: oracle-instantclient-selinux
+Requires: tsdb
%description
SELinux policy module supporting Spacewalk monitoring.
14 years, 10 months
selinux/spacewalk-monitoring-selinux
by Jan Pazdziora
selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec | 1 +
1 file changed, 1 insertion(+)
New commits:
commit 2fa4874741b1448560eaf20175987ad8f4840a62
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri May 29 15:30:27 2009 +0200
501546 - Require tsdb so that /var/log/nocpulse/TSDBLocalQueue already exists when we run restorecon.
diff --git a/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec b/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec
index 00b14db..f1601d3 100644
--- a/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec
+++ b/selinux/spacewalk-monitoring-selinux/spacewalk-monitoring-selinux.spec
@@ -33,6 +33,7 @@ Requires(postun): /usr/sbin/semodule, /sbin/restorecon
Requires: SatConfig-general
Requires: NPalert
Requires: oracle-instantclient-selinux
+Requires: tsdb
%description
SELinux policy module supporting Spacewalk monitoring.
14 years, 10 months
Branch 'VADER' - schema/spacewalk
by Milan Zazrivec
schema/spacewalk/spacewalk-schema-upgrade | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
New commits:
commit b950d09b45b8aee9ce5c94510e4a025535d5e329
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Fri May 29 14:49:20 2009 +0200
no need to add whitespace to upgrade script
diff --git a/schema/spacewalk/spacewalk-schema-upgrade b/schema/spacewalk/spacewalk-schema-upgrade
index 946d0a8..20fe969 100755
--- a/schema/spacewalk/spacewalk-schema-upgrade
+++ b/schema/spacewalk/spacewalk-schema-upgrade
@@ -199,10 +199,10 @@ EOF
close FILE;
$f_in =~ s!\[\[.*?\]\]|__.*?__!$default_tablespace!g;
$in .= <<EOF;
- set echo on
- spool $logfile append
- whenever sqlerror exit sql.sqlcode
- select '$dir/$name' from dual;
+set echo on
+spool $logfile append
+whenever sqlerror exit sql.sqlcode
+select '$dir/$name' from dual;
EOF
$in .= $f_in;
$in .= "commit;\n";
14 years, 10 months