SASL.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. // +-----------------------------------------------------------------------+
  3. // | Copyright (c) 2002-2003 Richard Heyes |
  4. // | All rights reserved. |
  5. // | |
  6. // | Redistribution and use in source and binary forms, with or without |
  7. // | modification, are permitted provided that the following conditions |
  8. // | are met: |
  9. // | |
  10. // | o Redistributions of source code must retain the above copyright |
  11. // | notice, this list of conditions and the following disclaimer. |
  12. // | o Redistributions in binary form must reproduce the above copyright |
  13. // | notice, this list of conditions and the following disclaimer in the |
  14. // | documentation and/or other materials provided with the distribution.|
  15. // | o The names of the authors may not be used to endorse or promote |
  16. // | products derived from this software without specific prior written |
  17. // | permission. |
  18. // | |
  19. // | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
  20. // | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
  21. // | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
  22. // | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
  23. // | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
  24. // | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
  25. // | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
  26. // | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
  27. // | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
  28. // | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
  29. // | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
  30. // | |
  31. // +-----------------------------------------------------------------------+
  32. // | Author: Richard Heyes <richard@php.net> |
  33. // +-----------------------------------------------------------------------+
  34. //
  35. // $Id: SASL.php 286825 2009-08-05 06:23:42Z cweiske $
  36. /**
  37. * Client implementation of various SASL mechanisms
  38. *
  39. * @author Richard Heyes <richard@php.net>
  40. * @access public
  41. * @version 1.0
  42. * @package Auth_SASL
  43. */
  44. require_once('PEAR.php');
  45. class Auth_SASL
  46. {
  47. /**
  48. * Factory class. Returns an object of the request
  49. * type.
  50. *
  51. * @param string $type One of: Anonymous
  52. * Plain
  53. * CramMD5
  54. * DigestMD5
  55. * Types are not case sensitive
  56. */
  57. function &factory($type)
  58. {
  59. switch (strtolower($type)) {
  60. case 'anonymous':
  61. $filename = 'Auth/SASL/Anonymous.php';
  62. $classname = 'Auth_SASL_Anonymous';
  63. break;
  64. case 'login':
  65. $filename = 'Auth/SASL/Login.php';
  66. $classname = 'Auth_SASL_Login';
  67. break;
  68. case 'plain':
  69. $filename = 'Auth/SASL/Plain.php';
  70. $classname = 'Auth_SASL_Plain';
  71. break;
  72. case 'external':
  73. $filename = 'Auth/SASL/External.php';
  74. $classname = 'Auth_SASL_External';
  75. break;
  76. case 'crammd5':
  77. $filename = 'Auth/SASL/CramMD5.php';
  78. $classname = 'Auth_SASL_CramMD5';
  79. break;
  80. case 'digestmd5':
  81. $filename = 'Auth/SASL/DigestMD5.php';
  82. $classname = 'Auth_SASL_DigestMD5';
  83. break;
  84. default:
  85. return PEAR::raiseError('Invalid SASL mechanism type');
  86. break;
  87. }
  88. require_once($filename);
  89. $obj = new $classname();
  90. return $obj;
  91. }
  92. }
  93. ?>