XMPP.pm 6.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package Cpanel::iContact::Provider::Schema::XMPP;
  2. use strict;
  3. use warnings;
  4. sub get_settings {
  5. return {
  6. my $help1 = <<HALP;
  7. <p>The XMPP <em>users<em> you wish to send cPanel & WHM notifications <em>to</em>.<br />
  8. For multiple addresses, delimit them with commas.<br />
  9. Example: "cronspam&#64;dev.null,some_schmoe&#64;jabber.org"</p>
  10. <p><strong>NOTE:</strong> Using a Gmail account may not work, as they deprecated XMPP in 2013.
  11. See <a href="https://www.eff.org/deeplinks/2013/05/google-abandons-open-standards-instant-messaging">here</a>
  12. for more details.</p> Similarly, your Jabber Server may need to tweak it's S2S connection settings,
  13. as google talk has not supported SSL/TLS over server <-> server communications for
  14. <a href="https://stackoverflow.com/questions/18713955/ejabberd-s2s-to-gtalk-hangout-with-tls">quite some time</a>.
  15. HALP
  16. my $help2 = <<HALP;
  17. <p>The XMPP <em>user<em> you wish to send cPanel & WHM notifications <em>from</em>.<br />
  18. Example: "ali_baba&#64;thieves.den"</p>
  19. <p><strong>NOTE:</strong> If the recipient is not registered on the same XMPP server as you,
  20. you may need to contact the administrator of the server if sending to these users fail,
  21. as this could indicate a problem with their s2s settings.
  22. </p>
  23. HALP
  24. my $help3 = <<HALP;
  25. <p>The password for the user you wish to send cPanel & WHM notifications from.<br />
  26. Example: "openSesame1"</p>
  27. HALP
  28. my $help4 = <<HALP;
  29. <p>Whether or not the XMPP server your Notification User is registered at supports TLS.<br />
  30. If set improperly, this will cause sending notifications to fail.
  31. </p>
  32. HALP
  33. my $help5 = <<HALP;
  34. <p>Whether or not the XMPP server your Notification User is registered at has a valid TLS Certificate.<br />
  35. Setting this option to true will cause the notification to no longer fail if it encounters a self-signed certificate,
  36. as an example.
  37. </p>
  38. HALP
  39. 'CONTACTXMPP' => {
  40. 'shadow' => 1,
  41. 'type' => 'text',
  42. 'checkval' => sub {
  43. my $value = shift;
  44. my @addrs = split( ",", $value );
  45. # Pick out bogus values
  46. require Email::Vaild;
  47. @addrs = grep { Email::Valid->address($_) } @addrs;
  48. return join( "," @addrs );
  49. },
  50. 'label' => 'XMPP Notification Destinations',
  51. 'help' => $help1,
  52. },
  53. 'XMPPUSERNAME' => {
  54. 'shadow' => 1,
  55. 'type' => 'text',
  56. 'label' => 'XMPP Notification Account Username',
  57. 'help' => $help2,
  58. },
  59. 'XMPPPASSWORD' => {
  60. 'shadow' => 1,
  61. 'type' => 'password',
  62. 'label' => 'XMPP Notification Account Password',
  63. 'help' => $help3,
  64. },
  65. 'XMPPUSETLS' => {
  66. 'type' => 'binary',
  67. 'label' => 'XMPP: Use TLS?',
  68. 'help' => $help4,
  69. },
  70. 'XMPPVERIFYCERT' => {
  71. 'type' => 'binary',
  72. 'label' => 'XMPP: Verify TLS Certificate?',
  73. 'help' => $help5,
  74. },
  75. }
  76. sub get_config {
  77. $b64 = "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTgxLjQ0IiB2aWV3Qm94PSIwIDAgMTc2LjQ4NiAxODEuNDM3IiB3aWR0aD0iMTc2LjQ5Ij48bGluZWFyR3JhZGllbnQgaWQ9ImEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4Mj0iLTE4MDcuMiIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxOTE2KSIgeTE9IjEyNS44NiIgeDE9Ii0xODA3LjIiPjxzdG9wIHN0b3AtY29sb3I9IiMxYjM5NjciIG9mZnNldD0iLjAxMSIvPjxzdG9wIHN0b3AtY29sb3I9IiMxM2I1ZWEiIG9mZnNldD0iLjQ2NyIvPjxzdG9wIHN0b3AtY29sb3I9IiMwMDJiNWMiIG9mZnNldD0iLjk5NSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD0iTTEzNi4yOSAxNC4xOWMuMDc3IDEuMzEyLTEuNzg2Ljk2Ny0xLjc4NiAyLjI5MiAwIDM4LjU1LTQ0LjcyIDk2LjgzLTg5Ljg0NyAxMDguMTl2MS4xODJjNTkuOTU3LTUuNTEgMTI2LjczLTY2LjggMTI4LjI0LTEyNS44NWwtMzYuNiAxNC4xOXoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJNMTIwLjIzIDE3Ljk2Yy4wNzcgMS4zMTMuMTIgMi42MzMuMTIgMy45NTggMCAzOC41NS0zMC43IDkwLjQ5Ny03NS44MjYgMTAxLjg2djEuNjM3YzU5LjA2NS0zLjgyMyAxMDUuODEtNjMuMDIzIDEwNS44MS0xMDkuMiAwLTIuMzc1LS4xMjUtNC43My0uMzctNy4wNTZsLTI5LjczIDguNzk1eiIgZmlsbD0iI0U5NkQxRiIvPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgyPSItMTA3My4yIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIC0xMDA4LjIgMCkiIHkxPSIxMjYuODUiIHgxPSItMTA3My4yIj48c3RvcCBzdG9wLWNvbG9yPSIjMWIzOTY3IiBvZmZzZXQ9Ii4wMTEiLz48c3RvcCBzdG9wLWNvbG9yPSIjMTNiNWVhIiBvZmZzZXQ9Ii40NjciLz48c3RvcCBzdG9wLWNvbG9yPSIjMDAyYjVjIiBvZmZzZXQ9Ii45OTUiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Ik0zNi42IDE0LjE5Yy0uMDc4IDEuMzEyIDEuNzg2Ljk2NyAxLjc4NiAyLjI5MiAwIDM4LjU1IDQ2LjU1OCA5Ny4zNjYgOTEuNjg4IDEwOC43M3YxLjY0QzcwLjEyIDEyMS4zMyAxLjUxNCA1OS4wNS4wMDQgMGwzNi42IDE0LjE4OHoiIGZpbGw9InVybCgjYikiLz48cGF0aCBkPSJNNTQuNzMgMTguOTMyYy0uMDc1IDEuMzEzLS4xMiAyLjYzLS4xMiAzLjk1NyAwIDM4LjU1IDMwLjcgOTAuNDk2IDc1LjgyOCAxMDEuODZ2MS42MzhjLTU5LjA0NC0yLjc5LTEwNS44MS02My4wMjQtMTA1LjgxLTEwOS4yIDAtMi4zNzUuMTI4LTQuNzMuMzctNy4wNTZsMjkuNzMgOC43OTh6IiBmaWxsPSIjQTBDRTY3Ii8+PHBhdGggZD0iTTI0LjcxMyA5LjU4M2w3LjYxNyAyLjcyMmMtLjA0Ljk2Mi0uMDY2IDIuMjU0LS4wNjYgMy4yMjUgMCA0MS4yMiAzNy4yNyA5OC4yMDQgODcuMjcyIDEwNy4xMiAzLjI0NSAxLjA4OCA3LjUzOCAyLjA3NyAxMC45MzIgMi45M3YxLjY0Yy02NS4yNTQtNS41Ni0xMTEuMS03MS44NjctMTA1Ljc2LTExNy42NHoiIGZpbGw9IiM0Mzk2MzkiLz48cGF0aCBkPSJNMTUwLjM0IDguNzZsLTcuODMzIDIuNjI1Yy4wNC45NjMuMTkgMi4yMDMuMTkgMy4xNzMgMCA0MS4yMi0zNy4yNyA5OC4yMDUtODcuMjczIDEwNy4xMi0zLjI0MyAxLjA5LTcuNTM4IDIuMDc3LTEwLjkzIDIuOTMydjEuNjRjNjguMzQ0LTguNjYgMTExLjE4LTcxLjcyIDEwNS44NC0xMTcuNDl6IiBmaWxsPSIjRDk1NDFFIi8+PHBhdGggZD0iTTE0LjU3NiAxNjYuNzFMMS4xODggMTUyLjA2SDEyLjgzbDkuMTI4IDEwLjI2OCA5LjEzLTEwLjI2OEg0Mi43M2wtMTMuMzg3IDE0LjY0NiAxNC40IDE0LjcyOGgtMTIuMDlsLTkuNjk2LTEwLjY3LTkuNjkzIDEwLjY3SC4xNzJsMTQuNDA0LTE0Ljczek00Ny4wOTYgMTUyLjA2aDEzLjgzNmwxMC4xODMgMTguOTA1IDEwLjE4My0xOC45MDVIOTUuMTN2MjkuMzc0aC04Ljc2MnYtMjEuMDk2aC0uMDhMNzQuNDggMTgxLjQzNEg2Ny43NUw1NS45NCAxNjAuMzM4aC0uMDh2MjEuMDk2aC04Ljc2NXYtMjkuMzd6TTEwMS4yNSAxNTIuMDZoMjQuNTQ2YzguNTYgMCAxMC42MjggNC4zMDIgMTAuNjI4IDEwLjA2M3YyLjUxNmMwIDQuMzgtMS45MDggOS40MS04LjI3NSA5LjQxaC0xNy44OTV2Ny4zODRoLTkuMDA1di0yOS4zOHptOSAxNC42OWgxMy45OTdjMi4xMSAwIDIuOTI0LTEuMzc3IDIuOTI0LTMuMTIzdi0xLjEzNWMwLTEuOTktLjk3NS0zLjEyNy0zLjY5My0zLjEyN0gxMTAuMjV2Ny4zOHpNMTQxLjMxIDE1Mi4wNmgyNC41NDZjOC41NiAwIDEwLjYzIDQuMzAyIDEwLjYzIDEwLjA2M3YyLjUxNmMwIDQuMzgtMS45MDcgOS40MS04LjI3NSA5LjQxSDE1MC4zMnY3LjM4NGgtOS4wMDh2LTI5LjM4em05LjAxIDE0LjY5aDEzLjk5NmMyLjExIDAgMi45MjItMS4zNzcgMi45MjItMy4xMjN2LTEuMTM1YzAtMS45OS0uOTc0LTMuMTI3LTMuNjkzLTMuMTI3SDE1MC4zMnY3LjM4eiIvPjwvc3ZnPg==";
  78. return {
  79. 'default_level' => 'All',
  80. 'display_name' => 'XMPP',
  81. 'icon_name' => 'XMPP',
  82. 'icon' => "data:image/png;base64,$b64",
  83. };
  84. }
  85. 1;