diff options
Diffstat (limited to 'shell/source/backends/macbe/macbelayer.cxx')
-rw-r--r-- | shell/source/backends/macbe/macbelayer.cxx | 440 |
1 files changed, 0 insertions, 440 deletions
diff --git a/shell/source/backends/macbe/macbelayer.cxx b/shell/source/backends/macbe/macbelayer.cxx deleted file mode 100644 index 113f7f964f54..000000000000 --- a/shell/source/backends/macbe/macbelayer.cxx +++ /dev/null @@ -1,440 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_shell.hxx" - -// For MAXHOSTNAMELEN constant -#include <sys/param.h> - -#include <premac.h> -#include <SystemConfiguration/SystemConfiguration.h> -#include <Foundation/NSPathUtilities.h> -#include <postmac.h> - -#include "macbelayer.hxx" - -#include "rtl/ustrbuf.hxx" -#include "osl/file.h" - -#define SPACE ' ' -#define SEMI_COLON ';' - -typedef struct -{ - rtl::OUString Server; - sal_Int32 Port; -} ProxyEntry; - -typedef enum { - sHTTP, - sHTTPS, - sFTP -} ServiceType; - -//------------------------------------------------------------------------ -// helper functions -//------------------------------------------------------------------------ - -namespace // private -{ - -/* - * Returns current proxy settings for selected service type (HTTP or - * FTP) as a C string (in the buffer specified by host and hostSize) - * and a port number. - */ - -bool GetProxySetting(ServiceType sType, char *host, size_t hostSize, UInt16 *port) -{ - bool result; - CFDictionaryRef proxyDict; - CFNumberRef enableNum; - int enable; - CFStringRef hostStr; - CFNumberRef portNum; - int portInt; - - proxyDict = SCDynamicStoreCopyProxies(NULL); - - if (!proxyDict) - return false; - - CFStringRef proxiesEnable; - CFStringRef proxiesProxy; - CFStringRef proxiesPort; - - switch ( sType ) - { - case sHTTP : proxiesEnable = kSCPropNetProxiesHTTPEnable; - proxiesProxy = kSCPropNetProxiesHTTPProxy; - proxiesPort = kSCPropNetProxiesHTTPPort; - break; - case sHTTPS: proxiesEnable = kSCPropNetProxiesHTTPSEnable; - proxiesProxy = kSCPropNetProxiesHTTPSProxy; - proxiesPort = kSCPropNetProxiesHTTPSPort; - break; - default: proxiesEnable = kSCPropNetProxiesFTPEnable; - proxiesProxy = kSCPropNetProxiesFTPProxy; - proxiesPort = kSCPropNetProxiesFTPPort; - break; - } - // Proxy enabled? - enableNum = (CFNumberRef) CFDictionaryGetValue( proxyDict, - proxiesEnable ); - - result = (enableNum != NULL) && (CFGetTypeID(enableNum) == CFNumberGetTypeID()); - - if (result) - result = CFNumberGetValue(enableNum, kCFNumberIntType, &enable) && (enable != 0); - - // Proxy enabled -> get hostname - if (result) - { - hostStr = (CFStringRef) CFDictionaryGetValue( proxyDict, - proxiesProxy ); - - result = (hostStr != NULL) && (CFGetTypeID(hostStr) == CFStringGetTypeID()); - } - - if (result) - result = CFStringGetCString(hostStr, host, (CFIndex) hostSize, kCFStringEncodingASCII); - - // Get proxy port - if (result) - { - portNum = (CFNumberRef) CFDictionaryGetValue( proxyDict, - proxiesPort ); - - result = (portNum != NULL) && (CFGetTypeID(portNum) == CFNumberGetTypeID()); - } - else - { - CFRelease(proxyDict); - return false; - } - - if (result) - result = CFNumberGetValue(portNum, kCFNumberIntType, &portInt); - - if (result) - *port = (UInt16) portInt; - - if (proxyDict) - CFRelease(proxyDict); - - if (!result) - { - *host = 0; - *port = 0; - } - - return result; -} - -} // end private namespace - -//------------------------------------------------------------------------------ - -MacOSXLayer::MacOSXLayer( const uno::Reference<uno::XComponentContext>& xContext) -{ - //Create instance of LayerContentDescriber Service - rtl::OUString const k_sLayerDescriberService( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.configuration.backend.LayerDescriber")); - - typedef uno::Reference<backend::XLayerContentDescriber> LayerDescriber; - uno::Reference< lang::XMultiComponentFactory > xServiceManager = xContext->getServiceManager(); - if( xServiceManager.is() ) - { - m_xLayerContentDescriber = LayerDescriber::query( - xServiceManager->createInstanceWithContext(k_sLayerDescriberService, xContext)); - } - else - { - OSL_TRACE("Could not retrieve ServiceManager"); - } - -} - -//------------------------------------------------------------------------------ - -rtl::OUString CFStringToOUString(const CFStringRef sOrig) { - CFRetain(sOrig); - - CFIndex nStringLen = CFStringGetLength(sOrig)+1; - - // Allocate a c string buffer - char sBuffer[nStringLen]; - - CFStringGetCString(sOrig, sBuffer, nStringLen, kCFStringEncodingASCII); - - CFRelease(sOrig); - - return rtl::OUString::createFromAscii((sal_Char*)sBuffer); -} - -void SAL_CALL MacOSXLayer::readData( - const uno::Reference<backend::XLayerHandler>& xHandler) - throw ( backend::MalformedDataException, - lang::NullPointerException, - lang::WrappedTargetException, - uno::RuntimeException) -{ - - if (m_xLayerContentDescriber.is()) - { - rtl::OUString aProxyBypassList; - - CFArrayRef rExceptionsList; - CFDictionaryRef rProxyDict = SCDynamicStoreCopyProxies(NULL); - - if (!rProxyDict) - rExceptionsList = false; - else - rExceptionsList = (CFArrayRef) CFDictionaryGetValue(rProxyDict, kSCPropNetProxiesExceptionsList); - - if (rExceptionsList) - { - for (CFIndex idx = 0; idx < CFArrayGetCount(rExceptionsList); idx++) - { - CFStringRef rException = (CFStringRef) CFArrayGetValueAtIndex(rExceptionsList, idx); - - if (idx>0) - aProxyBypassList += rtl::OUString::createFromAscii( ";" ); - - aProxyBypassList += CFStringToOUString(rException); - } - } - - if (rProxyDict) - CFRelease(rProxyDict); - - // override default for ProxyType, which is "0" meaning "No proxies". - // CAUTION: if you add properties, please increase the sequence size here ! - uno::Sequence<backend::PropertyInfo> aPropInfoList(8); - sal_Int32 nProperties = 1; - - aPropInfoList[0].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetProxyType") ); - aPropInfoList[0].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "int" ) ); - aPropInfoList[0].Protected = sal_False; - aPropInfoList[0].Value = uno::makeAny( nProperties ); - - // fill proxy bypass list - if( aProxyBypassList.getLength() > 0 ) - { - aPropInfoList[nProperties].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetNoProxy") ); - aPropInfoList[nProperties].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "string" ) ); - aPropInfoList[nProperties].Protected = sal_False; - aPropInfoList[nProperties++].Value = uno::makeAny( aProxyBypassList.replace( SPACE, SEMI_COLON ) ); - } - - ProxyEntry aHttpProxy; - ProxyEntry aHttpsProxy; - ProxyEntry aFtpProxy; - - char host[MAXHOSTNAMELEN]; - UInt16 port; - bool retVal; - - retVal = GetProxySetting(sHTTP, host, 100, &port); - - if (retVal) - { - aHttpProxy.Server = rtl::OUString::createFromAscii( host ); - aHttpProxy.Port = port; - } - - retVal = GetProxySetting(sHTTPS, host, 100, &port); - - if (retVal) - { - aHttpsProxy.Server = rtl::OUString::createFromAscii( host ); - aHttpsProxy.Port = port; - } - - retVal = GetProxySetting(sFTP, host, 100, &port); - - if (retVal) - { - aFtpProxy.Server = rtl::OUString::createFromAscii( host ); - aFtpProxy.Port = port; - } - - // http proxy name - if( aHttpProxy.Server.getLength() > 0 ) - { - aPropInfoList[nProperties].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetHTTPProxyName") ); - aPropInfoList[nProperties].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "string" ) ); - aPropInfoList[nProperties].Protected = sal_False; - aPropInfoList[nProperties++].Value = uno::makeAny( aHttpProxy.Server ); - } - - // http proxy port - if( aHttpProxy.Port > 0 ) - { - aPropInfoList[nProperties].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetHTTPProxyPort") ); - aPropInfoList[nProperties].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "int" ) ); - aPropInfoList[nProperties].Protected = sal_False; - aPropInfoList[nProperties++].Value = uno::makeAny( aHttpProxy.Port ); - } - - // https proxy name - if( aHttpsProxy.Server.getLength() > 0 ) - { - aPropInfoList[nProperties].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetHTTPSProxyName") ); - aPropInfoList[nProperties].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "string" ) ); - aPropInfoList[nProperties].Protected = sal_False; - aPropInfoList[nProperties++].Value = uno::makeAny( aHttpsProxy.Server ); - } - - // https proxy port - if( aHttpsProxy.Port > 0 ) - { - aPropInfoList[nProperties].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetHTTPSProxyPort") ); - aPropInfoList[nProperties].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "int" ) ); - aPropInfoList[nProperties].Protected = sal_False; - aPropInfoList[nProperties++].Value = uno::makeAny( aHttpsProxy.Port ); - } - - // ftp proxy name - if( aFtpProxy.Server.getLength() > 0 ) - { - aPropInfoList[nProperties].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetFTPProxyName") ); - aPropInfoList[nProperties].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "string" ) ); - aPropInfoList[nProperties].Protected = sal_False; - aPropInfoList[nProperties++].Value = uno::makeAny( aFtpProxy.Server ); - } - - // ftp proxy port - if( aFtpProxy.Port > 0 ) - { - aPropInfoList[nProperties].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings/ooInetFTPProxyPort") ); - aPropInfoList[nProperties].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "int" ) ); - aPropInfoList[nProperties].Protected = sal_False; - aPropInfoList[nProperties++].Value = uno::makeAny( aFtpProxy.Port ); - } - - // resize the property info list appropriately - aPropInfoList.realloc(nProperties); - - m_xLayerContentDescriber->describeLayer(xHandler, aPropInfoList); - } - else - { - OSL_TRACE("Could not create com.sun.star.configuration.backend.LayerContentDescriber Service"); - } -} - -//------------------------------------------------------------------------------ - -rtl::OUString SAL_CALL MacOSXLayer::getTimestamp(void) - throw (uno::RuntimeException) -{ - // FIXME: Always new timestamp!? - rtl::OUString aTimestamp = rtl::OUString::valueOf( time(NULL) ); - - return aTimestamp; -} - -//------------------------------------------------------------------------------ - -rtl::OUString GetOUString( NSString* pStr ) -{ - if( ! pStr ) - return rtl::OUString(); - int nLen = [pStr length]; - if( nLen == 0 ) - return rtl::OUString(); - - rtl::OUStringBuffer aBuf( nLen+1 ); - aBuf.setLength( nLen ); - [pStr getCharacters: const_cast<sal_Unicode*>(aBuf.getStr())]; - return aBuf.makeStringAndClear(); -} - -void SAL_CALL MacOSXPathLayer::readData( - const uno::Reference<backend::XLayerHandler>& i_xHandler) - throw ( backend::MalformedDataException, - lang::NullPointerException, - lang::WrappedTargetException, - uno::RuntimeException) -{ - if (m_xLayerContentDescriber.is()) - { - rtl::OUString aDocDir; - NSArray* pPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, true ); - if( pPaths && [pPaths count] > 0 ) - { - aDocDir = GetOUString( [pPaths objectAtIndex: 0] ); - - rtl::OUString aDocURL; - if( aDocDir.getLength() > 0 && - osl_getFileURLFromSystemPath( aDocDir.pData, &aDocURL.pData ) == osl_File_E_None ) - { - uno::Sequence<backend::PropertyInfo> aPropInfoList(1); - - aPropInfoList[0].Name = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Office.Paths/Variables/Work" ) ); - aPropInfoList[0].Type = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( "string" ) ); - aPropInfoList[0].Protected = sal_False; - aPropInfoList[0].Value <<= aDocURL; - - m_xLayerContentDescriber->describeLayer(i_xHandler, aPropInfoList); - } - else - { - OSL_TRACE( "user documents list contains empty file path or conversion failed" ); - } - } - else - { - OSL_TRACE( "Got nil or empty list of user document directories" ); - } - } - else - { - OSL_TRACE("Could not create com.sun.star.configuration.backend.LayerContentDescriber Service"); - } -} - |