Accepting request 55928 from GNOME:Factory

Accepted submit request 55928 from user dimstar

OBS-URL: https://build.opensuse.org/request/show/55928
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libproxy?expand=0&rev=24
This commit is contained in:
Lars Vogdt 2010-12-19 12:08:47 +00:00 committed by Git OBS Bridge
commit 1d34ebd0d7
5 changed files with 222 additions and 1 deletions

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Dec 6 16:32:28 CET 2010 - vuntz@opensuse.org
- Add libproxy-sysconfig-support.patch, to support the proxy
configuration from sysconfig. Part of bnc#655483.
Patch written by Duncan Mac-Vicar <dmacvicar@novell.com>.
-------------------------------------------------------------------
Thu Sep 2 09:38:47 CEST 2010 - dimstar@opensuse.org

View File

@ -1,5 +1,5 @@
#
# spec file for package libproxy-plugins (Version 0.4.6)
# spec file for package libproxy (Version 0.4.6)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -49,6 +49,8 @@ Source: http://libproxy.googlecode.com/files/%{_sourcename}.tar.bz2
# Script used for automatic snapshot updates
Source98: update-from-svn.sh
Source99: baselibs.conf
# PATCH-FEATURE-UPSTREAM libproxy-sysconfig-support.patch bnc#655483 dmacvicar@novell.com -- Add /etc/sysconfig support. Also tracked at http://code.google.com/p/libproxy/issues/detail?id=150
Patch0: libproxy-sysconfig-support.patch
License: GPLv2+ ; LGPLv2.1+
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
@ -289,6 +291,7 @@ about network configuration changes.
%prep
%setup -q -n %{_sourcename}
mkdir build
%patch0 -p0
%build
cd build

View File

@ -0,0 +1,201 @@
Index: libproxy/cmake/modules.cmk
===================================================================
--- libproxy/cmake/modules.cmk (revision 775)
+++ libproxy/cmake/modules.cmk (working copy)
@@ -9,6 +9,7 @@
include(cmake/pxmodule.cmk)
include(cmake/pkgconfig.cmk)
include(cmake/modules/config_envvar.cmk)
+include(cmake/modules/config_sysconfig.cmk)
include(cmake/modules/config_gnome.cmk)
include(cmake/modules/config_kde4.cmk)
include(cmake/modules/config_macosx.cmk)
@@ -27,6 +28,7 @@
#
message("MODULES TO BUILD:")
px_module(config_envvar "${ENVVAR_FOUND}" 1)
+px_module(config_sysconfig "${SYSCONFIG_FOUND}" 1)
px_module(config_gnome "${GNOME_FOUND}" 0)
px_module(config_kde4 "${KDE4_FOUND}" 0 ${KDE4_LIBRARIES})
px_module(config_macosx "${SC_FOUND}" 1 ${SC_LIBRARIES} ${CF_LIBRARIES})
Index: libproxy/cmake/modules/config_sysconfig.cmk
===================================================================
--- libproxy/cmake/modules/config_sysconfig.cmk (revision 0)
+++ libproxy/cmake/modules/config_sysconfig.cmk (revision 0)
@@ -0,0 +1,5 @@
+if (NOT WIN32 AND NOT APPLE)
+ if (EXISTS "/etc/sysconfig" AND IS_DIRECTORY "/etc/sysconfig")
+ set(SYSCONFIG_FOUND 1)
+ endif()
+endif()
\ No newline at end of file
Index: libproxy/modules/config_sysconfig.cpp
===================================================================
--- libproxy/modules/config_sysconfig.cpp (revision 0)
+++ libproxy/modules/config_sysconfig.cpp (revision 0)
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * libproxy sysconfig module
+ * Copyright (C) 2010 Novell Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ******************************************************************************/
+
+#include <sys/stat.h>
+#include <cstdlib>
+#include <map>
+#include <fstream>
+
+#include "../extension_config.hpp"
+using namespace libproxy;
+using std::map;
+
+enum Trim {
+ NO_TRIM = 0x00,
+ L_TRIM = 0x01,
+ R_TRIM = 0x02,
+ TRIM = (L_TRIM|R_TRIM)
+};
+
+static std::string trim( const std::string & s, const Trim trim_r = TRIM ) {
+
+ if (s.empty() || trim_r == NO_TRIM)
+ return s;
+
+ std::string ret(s);
+
+ if (trim_r & L_TRIM) {
+ std::string::size_type p = ret.find_first_not_of(" \t\n");
+ if (p == std::string::npos)
+ return std::string();
+
+ ret = ret.substr(p);
+ }
+
+ if (trim_r & R_TRIM) {
+ std::string::size_type p = ret.find_last_not_of(" \t\n");
+ if (p == std::string::npos)
+ return std::string();
+
+ ret = ret.substr(0, p+1);
+ }
+
+ return ret;
+}
+
+static map<string,string> sysconfig_read(const string &_path) {
+
+ map<string,string> ret;
+ string line;
+
+ ifstream in(_path.c_str());
+ if (in.fail()) {
+ return ret;
+ }
+
+ while(getline( in, line)) {
+
+ if (*line.begin() != '#') {
+
+ string::size_type pos = line.find('=', 0);
+
+ if (pos != string::npos) {
+
+ string key = trim(line.substr(0, pos));
+ string value = trim(line.substr(pos + 1, line.length() - pos - 1));
+
+ if (value.length() >= 2
+ && *(value.begin()) == '"'
+ && *(value.rbegin()) == '"') {
+ value = value.substr( 1, value.length() - 2 );
+ }
+
+ if (value.length() >= 2
+ && *(value.begin()) == '\''
+ && *(value.rbegin()) == '\'' ) {
+ value = value.substr( 1, value.length() - 2 );
+ }
+ ret[key] = value;
+ } // '=' found
+
+ } // not comment
+
+ } // while getline
+ return ret;
+}
+
+static bool should_use_sysconfig()
+{
+ struct stat st;
+ if (stat("/etc/sysconfig", &st) == 0)
+ return (getuid() == 0);
+ return false;
+}
+
+class sysconfig_config_extension : public config_extension {
+
+ map<string,string> _data;
+
+public:
+ sysconfig_config_extension()
+ : _data(sysconfig_read("/etc/sysconfig/proxy")) {
+
+ }
+
+ ~sysconfig_config_extension() {
+ }
+
+ url get_config(url url) throw (runtime_error) {
+ map<string,string>::const_iterator it = _data.find("PROXY_ENABLED");
+ if (it != _data.end() && it->second == "no")
+ return libproxy::url("direct://");
+
+ string key;
+ string proxy;
+
+ // If the URL is an ftp url, try to read the ftp proxy
+ if (url.get_scheme() == "ftp")
+ key = "FTP_PROXY";
+ else if (url.get_scheme() == "http")
+ key = "HTTP_PROXY";
+ else if (url.get_scheme() == "https")
+ key = "HTTPS_PROXY";
+
+ it = _data.find(key);
+ if (it != _data.end())
+ proxy = it->second;
+
+ if (proxy.empty())
+ throw runtime_error("Unable to read configuration");
+
+ return libproxy::url(proxy);
+ }
+
+ string get_ignore(url) {
+ map<string,string>::const_iterator it = _data.find("NO_PROXY");
+ if (it != _data.end())
+ return it->second;
+ return "";
+ }
+
+ // if we are running as root, and the module is used, then
+ // make sure this is the first method tried
+ virtual bool operator<(const base_extension&) const {
+ return true;
+ }
+};
+
+MM_MODULE_INIT_EZ(sysconfig_config_extension, should_use_sysconfig(), NULL, NULL);
+

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Dec 6 16:32:28 CET 2010 - vuntz@opensuse.org
- Add libproxy-sysconfig-support.patch, to support the proxy
configuration from sysconfig. Part of bnc#655483.
Patch written by Duncan Mac-Vicar <dmacvicar@novell.com>.
-------------------------------------------------------------------
Thu Sep 2 09:38:47 CEST 2010 - dimstar@opensuse.org

View File

@ -49,6 +49,8 @@ Source: http://libproxy.googlecode.com/files/%{_sourcename}.tar.bz2
# Script used for automatic snapshot updates
Source98: update-from-svn.sh
Source99: baselibs.conf
# PATCH-FEATURE-UPSTREAM libproxy-sysconfig-support.patch bnc#655483 dmacvicar@novell.com -- Add /etc/sysconfig support. Also tracked at http://code.google.com/p/libproxy/issues/detail?id=150
Patch0: libproxy-sysconfig-support.patch
License: GPLv2+ ; LGPLv2.1+
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
@ -289,6 +291,7 @@ about network configuration changes.
%prep
%setup -q -n %{_sourcename}
mkdir build
%patch0 -p0
%build
cd build