| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409 | 
							- // This code is derived from jcifs smb client library <jcifs at samba dot org>
 
- // Ported by J. Arturo <webmaster at komodosoft dot net>
 
- //  
 
- // 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
- using System;
 
- using System.IO;
 
- using System.Net;
 
- using System.Security;
 
- using SharpCifs.Util;
 
- using SharpCifs.Util.Sharpen;
 
- namespace SharpCifs
 
- {
 
-     /// <summary>
 
-     /// This class uses a static
 
-     /// <see cref="Properties">Sharpen.Properties</see>
 
-     /// to act
 
-     /// as a cental repository for all jCIFS configuration properties. It cannot be
 
-     /// instantiated. Similar to <code>System</code> properties the namespace
 
-     /// is global therefore property names should be unique. Before use,
 
-     /// the <code>load</code> method should be called with the name of a
 
-     /// <code>Properties</code> file (or <code>null</code> indicating no
 
-     /// file) to initialize the <code>Config</code>. The <code>System</code>
 
-     /// properties will then populate the <code>Config</code> as well potentially
 
-     /// overwriting properties from the file. Thus properties provided on the
 
-     /// commandline with the <code>-Dproperty.name=value</code> VM parameter
 
-     /// will override properties from the configuration file.
 
-     /// 
 
-     /// There are several ways to set jCIFS properties. See
 
-     /// the <a href="../overview-summary.html#scp">overview page of the API
 
-     /// documentation</a> for details.
 
-     /// </summary>
 
-     public class Config
 
-     {        
 
-         /// <summary>The static <code>Properties</code>.</summary>
 
-         /// <remarks>The static <code>Properties</code>.</remarks>
 
-         private static Properties _prp = new Properties();
 
-         private static LogStream _log;
 
-         public static string DefaultOemEncoding = "UTF-8"; //"Cp850";
 
-         static Config()
 
-         {
 
-             int level;
 
-             FileInputStream fis = null;
 
-             _log = LogStream.GetInstance();
 
-             try
 
-             {
 
-                 string filename = Runtime.GetProperty("jcifs.properties");
 
-                 if (filename != null && filename.Length > 1)
 
-                 {
 
-                     fis = new FileInputStream(filename);
 
-                 }
 
-                 Load(fis);
 
-                 if (fis != null)
 
-                 {
 
-                     fis.Close();
 
-                 }
 
-             }
 
-             catch (IOException ioe)
 
-             {
 
-                 if (_log.Level > 0)
 
-                 {
 
-                     Runtime.PrintStackTrace(ioe, _log);
 
-                 }
 
-             }
 
-             if ((level = GetInt("jcifs.util.loglevel", -1)) != -1)
 
-             {
 
-                 _log.SetLevel(level);
 
-             }
 
-             try
 
-             {
 
-                 Runtime.GetBytesForString(string.Empty, DefaultOemEncoding);
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 if (_log.Level >= 2)
 
-                 {
 
-                     _log.WriteLine("WARNING: The default OEM encoding " + DefaultOemEncoding + " does not appear to be supported by this JRE. The default encoding will be US-ASCII."
 
-                         );
 
-                 }
 
-                 //DEFAULT_OEM_ENCODING = "US-ASCII";
 
-             }
 
-             if (_log.Level >= 4)
 
-             {
 
-                 try
 
-                 {
 
-                     _prp.Store(_log);
 
-                 }
 
-                 catch (IOException)
 
-                 {
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// This static method registers the SMB URL protocol handler which is
 
-         /// required to use SMB URLs with the <tt>java.net.URL</tt> class.
 
-         /// </summary>
 
-         /// <remarks>
 
-         /// This static method registers the SMB URL protocol handler which is
 
-         /// required to use SMB URLs with the <tt>java.net.URL</tt> class. If this
 
-         /// method is not called before attempting to create an SMB URL with the
 
-         /// URL class the following exception will occur:
 
-         /// <blockquote><pre>
 
-         /// Exception MalformedURLException: unknown protocol: smb
 
-         /// at java.net.URL.<init>(URL.java:480)
 
-         /// at java.net.URL.<init>(URL.java:376)
 
-         /// at java.net.URL.<init>(URL.java:330)
 
-         /// at jcifs.smb.SmbFile.<init>(SmbFile.java:355)
 
-         /// ...
 
-         /// </pre><blockquote>
 
-         /// </remarks>
 
-         public static void RegisterSmbURLHandler()
 
-         {
 
-             throw new NotImplementedException();
 
-         }
 
-         // supress javadoc constructor summary by removing 'protected'
 
-         /// <summary>Set the default properties of the static Properties used by <tt>Config</tt>.
 
-         /// 	</summary>
 
-         /// <remarks>
 
-         /// Set the default properties of the static Properties used by <tt>Config</tt>. This permits
 
-         /// a different Properties object/file to be used as the source of properties for
 
-         /// use by the jCIFS library. The Properties must be set <i>before jCIFS
 
-         /// classes are accessed</i> as most jCIFS classes load properties statically once.
 
-         /// Using this method will also override properties loaded
 
-         /// using the <tt>-Djcifs.properties=</tt> commandline parameter.
 
-         /// </remarks>
 
-         public static void SetProperties(Properties prp)
 
-         {
 
-             Config._prp = new Properties(prp);
 
-             try
 
-             {
 
-                 Config._prp.PutAll(Runtime.GetProperties());
 
-             }
 
-             catch (SecurityException)
 
-             {
 
-                 if (_log.Level > 1)
 
-                 {
 
-                     _log.WriteLine("SecurityException: jcifs will ignore System properties");
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Load the <code>Config</code> with properties from the stream
 
-         /// <code>in</code> from a <code>Properties</code> file.
 
-         /// </summary>
 
-         /// <remarks>
 
-         /// Load the <code>Config</code> with properties from the stream
 
-         /// <code>in</code> from a <code>Properties</code> file.
 
-         /// </remarks>
 
-         /// <exception cref="System.IO.IOException"></exception>
 
-         public static void Load(InputStream input)
 
-         {
 
-             if (input != null)
 
-             {
 
-                 _prp.Load(input);
 
-             }
 
-             try
 
-             {
 
-                 _prp.PutAll(Runtime.GetProperties());
 
-             }
 
-             catch (SecurityException)
 
-             {
 
-                 if (_log.Level > 1)
 
-                 {
 
-                     _log.WriteLine("SecurityException: jcifs will ignore System properties");
 
-                 }
 
-             }
 
-         }
 
-         /// <exception cref="System.IO.IOException"></exception>
 
-         public static void Store(OutputStream output, string header)
 
-         {
 
-             _prp.Store(output);
 
-         }
 
-         /// <summary>Add a property.</summary>
 
-         /// <remarks>Add a property.</remarks>
 
-         public static void SetProperty(string key, string value)
 
-         {
 
-             _prp.SetProperty(key, value);
 
-         }
 
-         /// <summary>Retrieve a property as an <code>Object</code>.</summary>
 
-         /// <remarks>Retrieve a property as an <code>Object</code>.</remarks>
 
-         public static object Get(string key)
 
-         {
 
-             return _prp.GetProperty(key);
 
-         }
 
-         /// <summary>Retrieve a <code>String</code>.</summary>
 
-         /// <remarks>
 
-         /// Retrieve a <code>String</code>. If the key cannot be found,
 
-         /// the provided <code>def</code> default parameter will be returned.
 
-         /// </remarks>
 
-         public static string GetProperty(string key, string def)
 
-         {
 
-             return (string)_prp.GetProperty(key, def);
 
-         }
 
-         /// <summary>Retrieve a <code>String</code>.</summary>
 
-         /// <remarks>Retrieve a <code>String</code>. If the property is not found, <code>null</code> is returned.
 
-         /// 	</remarks>
 
-         public static string GetProperty(string key)
 
-         {
 
-             return (string)_prp.GetProperty(key);
 
-         }
 
-         /// <summary>Retrieve an <code>int</code>.</summary>
 
-         /// <remarks>
 
-         /// Retrieve an <code>int</code>. If the key does not exist or
 
-         /// cannot be converted to an <code>int</code>, the provided default
 
-         /// argument will be returned.
 
-         /// </remarks>
 
-         public static int GetInt(string key, int def)
 
-         {
 
-             string s = (string)_prp.GetProperty(key);
 
-             if (s != null)
 
-             {
 
-                 try
 
-                 {
 
-                     def = Convert.ToInt32(s);
 
-                 }
 
-                 catch (FormatException nfe)
 
-                 {
 
-                     if (_log.Level > 0)
 
-                     {
 
-                         Runtime.PrintStackTrace(nfe, _log);
 
-                     }
 
-                 }
 
-             }
 
-             return def;
 
-         }
 
-         /// <summary>Retrieve an <code>int</code>.</summary>
 
-         /// <remarks>Retrieve an <code>int</code>. If the property is not found, <code>-1</code> is returned.
 
-         /// 	</remarks>
 
-         public static int GetInt(string key)
 
-         {
 
-             string s = (string)_prp.GetProperty(key);
 
-             int result = -1;
 
-             if (s != null)
 
-             {
 
-                 try
 
-                 {
 
-                     result = Convert.ToInt32(s);
 
-                 }
 
-                 catch (FormatException nfe)
 
-                 {
 
-                     if (_log.Level > 0)
 
-                     {
 
-                         Runtime.PrintStackTrace(nfe, _log);
 
-                     }
 
-                 }
 
-             }
 
-             return result;
 
-         }
 
-         /// <summary>Retrieve a <code>long</code>.</summary>
 
-         /// <remarks>
 
-         /// Retrieve a <code>long</code>. If the key does not exist or
 
-         /// cannot be converted to a <code>long</code>, the provided default
 
-         /// argument will be returned.
 
-         /// </remarks>
 
-         public static long GetLong(string key, long def)
 
-         {
 
-             string s = (string)_prp.GetProperty(key);
 
-             if (s != null)
 
-             {
 
-                 try
 
-                 {
 
-                     def = long.Parse(s);
 
-                 }
 
-                 catch (FormatException nfe)
 
-                 {
 
-                     if (_log.Level > 0)
 
-                     {
 
-                         Runtime.PrintStackTrace(nfe, _log);
 
-                     }
 
-                 }
 
-             }
 
-             return def;
 
-         }
 
-         /// <summary>Retrieve an <code>InetAddress</code>.</summary>
 
-         /// <remarks>
 
-         /// Retrieve an <code>InetAddress</code>. If the address is not
 
-         /// an IP address and cannot be resolved <code>null</code> will
 
-         /// be returned.
 
-         /// </remarks>
 
-         public static IPAddress GetInetAddress(string key, IPAddress def)
 
-         {
 
-             string addr = (string)_prp.GetProperty(key);
 
-             if (addr != null)
 
-             {
 
-                 try
 
-                 {
 
-                     def = Extensions.GetAddressByName(addr);
 
-                 }
 
-                 catch (UnknownHostException uhe)
 
-                 {
 
-                     if (_log.Level > 0)
 
-                     {
 
-                         _log.WriteLine(addr);
 
-                         Runtime.PrintStackTrace(uhe, _log);
 
-                     }
 
-                 }
 
-             }
 
-             return def;
 
-         }
 
-         public static IPAddress GetLocalHost()
 
-         {
 
-             string addr = (string)_prp.GetProperty("jcifs.smb.client.laddr");
 
-             if (addr != null)
 
-             {
 
-                 try
 
-                 {
 
-                     return Extensions.GetAddressByName(addr);
 
-                 }
 
-                 catch (UnknownHostException uhe)
 
-                 {
 
-                     if (_log.Level > 0)
 
-                     {
 
-                         _log.WriteLine("Ignoring jcifs.smb.client.laddr address: " + addr);
 
-                         Runtime.PrintStackTrace(uhe, _log);
 
-                     }
 
-                 }
 
-             }
 
-             return null;
 
-         }
 
-         /// <summary>Retrieve a boolean value.</summary>
 
-         /// <remarks>Retrieve a boolean value. If the property is not found, the value of <code>def</code> is returned.
 
-         /// 	</remarks>
 
-         public static bool GetBoolean(string key, bool def)
 
-         {
 
-             string b = GetProperty(key);
 
-             if (b != null)
 
-             {
 
-                 def = b.ToLower().Equals("true");
 
-             }
 
-             return def;
 
-         }
 
-         /// <summary>
 
-         /// Retrieve an array of <tt>InetAddress</tt> created from a property
 
-         /// value containting a <tt>delim</tt> separated list of hostnames and/or
 
-         /// ipaddresses.
 
-         /// </summary>
 
-         /// <remarks>
 
-         /// Retrieve an array of <tt>InetAddress</tt> created from a property
 
-         /// value containting a <tt>delim</tt> separated list of hostnames and/or
 
-         /// ipaddresses.
 
-         /// </remarks>
 
-         public static IPAddress[] GetInetAddressArray(string key, string delim, IPAddress
 
-             [] def)
 
-         {
 
-             string p = GetProperty(key);
 
-             if (p != null)
 
-             {
 
-                 StringTokenizer tok = new StringTokenizer(p, delim);
 
-                 int len = tok.CountTokens();
 
-                 IPAddress[] arr = new IPAddress[len];
 
-                 for (int i = 0; i < len; i++)
 
-                 {
 
-                     string addr = tok.NextToken();
 
-                     try
 
-                     {
 
-                         arr[i] = Extensions.GetAddressByName(addr);
 
-                     }
 
-                     catch (UnknownHostException uhe)
 
-                     {
 
-                         if (_log.Level > 0)
 
-                         {
 
-                             _log.WriteLine(addr);
 
-                             Runtime.PrintStackTrace(uhe, _log);
 
-                         }
 
-                         return def;
 
-                     }
 
-                 }
 
-                 return arr;
 
-             }
 
-             return def;
 
-         }
 
-     }
 
- }
 
 
  |