Friendica Communications Platform (please note that this is a clone of the repository at github, issues are handled there)
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

auth_ejabberd.php 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/usr/bin/env php
  2. <?php
  3. /*
  4. * ejabberd extauth script for the integration with friendica
  5. *
  6. * Originally written for joomla by Dalibor Karlovic <dado@krizevci.info>
  7. * modified for Friendica by Michael Vogel <icarus@dabo.de>
  8. * published under GPL
  9. *
  10. * Latest version of the original script for joomla is available at:
  11. * http://87.230.15.86/~dado/ejabberd/joomla-login
  12. *
  13. * Installation:
  14. *
  15. * - Change it's owner to whichever user is running the server, ie. ejabberd
  16. * $ chown ejabberd:ejabberd /path/to/friendica/bin/auth_ejabberd.php
  17. *
  18. * - Change the access mode so it is readable only to the user ejabberd and has exec
  19. * $ chmod 700 /path/to/friendica/bin/auth_ejabberd.php
  20. *
  21. * - Edit your ejabberd.cfg file, comment out your auth_method and add:
  22. * {auth_method, external}.
  23. * {extauth_program, "/path/to/friendica/bin/auth_ejabberd.php"}.
  24. *
  25. * - Restart your ejabberd service, you should be able to login with your friendica auth info
  26. *
  27. * Other hints:
  28. * - if your users have a space or a @ in their nickname, they'll run into trouble
  29. * registering with any client so they should be instructed to replace these chars
  30. * " " (space) is replaced with "%20"
  31. * "@" is replaced with "(a)"
  32. *
  33. */
  34. use Friendica\Factory;
  35. use Friendica\Util\ExAuth;
  36. if (sizeof($_SERVER["argv"]) == 0) {
  37. die();
  38. }
  39. $directory = dirname($_SERVER["argv"][0]);
  40. if (substr($directory, 0, 1) != DIRECTORY_SEPARATOR) {
  41. $directory = $_SERVER["PWD"] . DIRECTORY_SEPARATOR . $directory;
  42. }
  43. $directory = realpath($directory . DIRECTORY_SEPARATOR . "..");
  44. chdir($directory);
  45. require dirname(__DIR__) . '/vendor/autoload.php';
  46. $a = Factory\DependencyFactory::setUp('auth_ejabbered', dirname(__DIR__));
  47. if ($a->getMode()->isNormal()) {
  48. $oAuth = new ExAuth();
  49. $oAuth->readStdin();
  50. }