ssl.me 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. ssl.me - SSL Plugin. This is the interface above SSL providers.
  3. */
  4. Me.load({
  5. targets: {
  6. ssl: {
  7. configurable: true,
  8. description: 'Secure Socket Layer Interface',
  9. discovers: [ 'mbedtls', 'openssl', 'matrixssl', 'nanossl' ],
  10. uses: [ 'mbedtls', 'openssl', 'matrixssl', 'nanossl' ],
  11. config: function (target) {
  12. let provider
  13. for each (p in target.discovers) {
  14. let ptarget = me.targets[p]
  15. if (ptarget.explicit) {
  16. if (ptarget.enable) {
  17. provider = p
  18. break
  19. } else if (ptarget.explicit != 'without') {
  20. throw 'Required SSL provider "' + p + '" is not enabled'
  21. }
  22. }
  23. }
  24. /*
  25. Select an ssl provider
  26. */
  27. for each (p in target.discovers) {
  28. if (p == provider) {
  29. continue
  30. }
  31. if (me.targets[p] && me.targets[p].enable && !provider) {
  32. provider = p
  33. } else if (provider) {
  34. me.targets[p].enable = false
  35. me.targets[p].diagnostic = 'Using the "' + provider + '" SSL provider instead.'
  36. }
  37. }
  38. if (provider) {
  39. let from = me.targets[provider]
  40. target.provider = provider
  41. for each (field in ['defines', 'includes', 'libraries', 'libpaths']) {
  42. if (from[field]) {
  43. target[field] = from[field]
  44. }
  45. }
  46. target.description += ' (' + me.targets[provider].description + ')'
  47. } else {
  48. throw 'No enabled SSL providers.\n'
  49. }
  50. },
  51. without: function(target) {
  52. for each (p in target.discovers) {
  53. me.targets[p].enable = false
  54. me.targets[p].diagnostic = 'configured --without ssl'
  55. }
  56. }
  57. }
  58. }
  59. })