index.html 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794
  1. <!doctype html>
  2. <html lang="en" class="no-js">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="description" content="A remote monitoring and management tool">
  7. <meta name="author" content="Ylianst">
  8. <link rel="canonical" href="https://ylianst.github.io/MeshCentral/meshcentral/plugins/">
  9. <link rel="prev" href="../devicetabs/">
  10. <link rel="next" href="../SSLnletsencrypt/">
  11. <link rel="icon" href="../../images/favicon.ico">
  12. <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.40">
  13. <title>Plugins - MeshCentral Documentation</title>
  14. <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
  15. <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
  16. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  17. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
  18. <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
  19. <link rel="stylesheet" href="../../stylesheets/extra.css">
  20. <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
  21. </head>
  22. <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo">
  23. <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
  24. <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
  25. <label class="md-overlay" for="__drawer"></label>
  26. <div data-md-component="skip">
  27. <a href="#plugins-installation-usage" class="md-skip">
  28. Skip to content
  29. </a>
  30. </div>
  31. <div data-md-component="announce">
  32. </div>
  33. <header class="md-header" data-md-component="header">
  34. <nav class="md-header__inner md-grid" aria-label="Header">
  35. <a href="../.." title="MeshCentral Documentation" class="md-header__button md-logo" aria-label="MeshCentral Documentation" data-md-component="logo">
  36. <img src="../../images/favicon.ico" alt="logo">
  37. </a>
  38. <label class="md-header__button md-icon" for="__drawer">
  39. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
  40. </label>
  41. <div class="md-header__title" data-md-component="header-title">
  42. <div class="md-header__ellipsis">
  43. <div class="md-header__topic">
  44. <span class="md-ellipsis">
  45. MeshCentral Documentation
  46. </span>
  47. </div>
  48. <div class="md-header__topic" data-md-component="header-topic">
  49. <span class="md-ellipsis">
  50. Plugins
  51. </span>
  52. </div>
  53. </div>
  54. </div>
  55. <label class="md-header__button md-icon" for="__search">
  56. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
  57. </label>
  58. <div class="md-search" data-md-component="search" role="dialog">
  59. <label class="md-search__overlay" for="__search"></label>
  60. <div class="md-search__inner" role="search">
  61. <form class="md-search__form" name="search">
  62. <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
  63. <label class="md-search__icon md-icon" for="__search">
  64. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
  65. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
  66. </label>
  67. <nav class="md-search__options" aria-label="Search">
  68. <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
  69. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
  70. </button>
  71. </nav>
  72. </form>
  73. <div class="md-search__output">
  74. <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
  75. <div class="md-search-result" data-md-component="search-result">
  76. <div class="md-search-result__meta">
  77. Initializing search
  78. </div>
  79. <ol class="md-search-result__list" role="presentation"></ol>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="md-header__source">
  86. <a href="https://github.com/Ylianst/MeshCentral" title="Go to repository" class="md-source" data-md-component="source">
  87. <div class="md-source__icon md-icon">
  88. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  89. </div>
  90. <div class="md-source__repository">
  91. Ylianst/MeshCentral
  92. </div>
  93. </a>
  94. </div>
  95. </nav>
  96. </header>
  97. <div class="md-container" data-md-component="container">
  98. <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
  99. <div class="md-grid">
  100. <ul class="md-tabs__list">
  101. <li class="md-tabs__item">
  102. <a href="../.." class="md-tabs__link">
  103. Home
  104. </a>
  105. </li>
  106. <li class="md-tabs__item">
  107. <a href="../../install/" class="md-tabs__link">
  108. Install
  109. </a>
  110. </li>
  111. <li class="md-tabs__item md-tabs__item--active">
  112. <a href="../" class="md-tabs__link">
  113. MeshCentral2
  114. </a>
  115. </li>
  116. <li class="md-tabs__item">
  117. <a href="../../design/" class="md-tabs__link">
  118. Design and Architecture
  119. </a>
  120. </li>
  121. <li class="md-tabs__item">
  122. <a href="../../meshcmd/" class="md-tabs__link">
  123. MeshCmd
  124. </a>
  125. </li>
  126. <li class="md-tabs__item">
  127. <a href="../../meshctrl/" class="md-tabs__link">
  128. MeshCtrl
  129. </a>
  130. </li>
  131. <li class="md-tabs__item">
  132. <a href="../../meshrouter/" class="md-tabs__link">
  133. Mesh Router
  134. </a>
  135. </li>
  136. <li class="md-tabs__item">
  137. <a href="../../intelamt/" class="md-tabs__link">
  138. Intel AMT
  139. </a>
  140. </li>
  141. <li class="md-tabs__item">
  142. <a href="../../how-to-contribute/" class="md-tabs__link">
  143. How to Contribute
  144. </a>
  145. </li>
  146. <li class="md-tabs__item">
  147. <a href="../../other/adfs_sso_guide/" class="md-tabs__link">
  148. Other
  149. </a>
  150. </li>
  151. </ul>
  152. </div>
  153. </nav>
  154. <main class="md-main" data-md-component="main">
  155. <div class="md-main__inner md-grid">
  156. <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
  157. <div class="md-sidebar__scrollwrap">
  158. <div class="md-sidebar__inner">
  159. <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
  160. <label class="md-nav__title" for="__drawer">
  161. <a href="../.." title="MeshCentral Documentation" class="md-nav__button md-logo" aria-label="MeshCentral Documentation" data-md-component="logo">
  162. <img src="../../images/favicon.ico" alt="logo">
  163. </a>
  164. MeshCentral Documentation
  165. </label>
  166. <div class="md-nav__source">
  167. <a href="https://github.com/Ylianst/MeshCentral" title="Go to repository" class="md-source" data-md-component="source">
  168. <div class="md-source__icon md-icon">
  169. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  170. </div>
  171. <div class="md-source__repository">
  172. Ylianst/MeshCentral
  173. </div>
  174. </a>
  175. </div>
  176. <ul class="md-nav__list" data-md-scrollfix>
  177. <li class="md-nav__item">
  178. <a href="../.." class="md-nav__link">
  179. <span class="md-ellipsis">
  180. Home
  181. </span>
  182. </a>
  183. </li>
  184. <li class="md-nav__item md-nav__item--nested">
  185. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
  186. <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
  187. <span class="md-ellipsis">
  188. Install
  189. </span>
  190. <span class="md-nav__icon md-icon"></span>
  191. </label>
  192. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
  193. <label class="md-nav__title" for="__nav_2">
  194. <span class="md-nav__icon md-icon"></span>
  195. Install
  196. </label>
  197. <ul class="md-nav__list" data-md-scrollfix>
  198. <li class="md-nav__item">
  199. <a href="../../install/" class="md-nav__link">
  200. <span class="md-ellipsis">
  201. Quick Start Guide
  202. </span>
  203. </a>
  204. </li>
  205. <li class="md-nav__item">
  206. <a href="../../install/install2/" class="md-nav__link">
  207. <span class="md-ellipsis">
  208. Full Install Guide
  209. </span>
  210. </a>
  211. </li>
  212. </ul>
  213. </nav>
  214. </li>
  215. <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
  216. <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
  217. <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
  218. <span class="md-ellipsis">
  219. MeshCentral2
  220. </span>
  221. <span class="md-nav__icon md-icon"></span>
  222. </label>
  223. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
  224. <label class="md-nav__title" for="__nav_3">
  225. <span class="md-nav__icon md-icon"></span>
  226. MeshCentral2
  227. </label>
  228. <ul class="md-nav__list" data-md-scrollfix>
  229. <li class="md-nav__item">
  230. <a href="../" class="md-nav__link">
  231. <span class="md-ellipsis">
  232. MeshCentral2 Guide
  233. </span>
  234. </a>
  235. </li>
  236. <li class="md-nav__item">
  237. <a href="../config/" class="md-nav__link">
  238. <span class="md-ellipsis">
  239. All Configuration Options
  240. </span>
  241. </a>
  242. </li>
  243. <li class="md-nav__item">
  244. <a href="../agents/" class="md-nav__link">
  245. <span class="md-ellipsis">
  246. Agent Information
  247. </span>
  248. </a>
  249. </li>
  250. <li class="md-nav__item">
  251. <a href="../assistant/" class="md-nav__link">
  252. <span class="md-ellipsis">
  253. Assistant
  254. </span>
  255. </a>
  256. </li>
  257. <li class="md-nav__item">
  258. <a href="../codesigning/" class="md-nav__link">
  259. <span class="md-ellipsis">
  260. Code Signing
  261. </span>
  262. </a>
  263. </li>
  264. <li class="md-nav__item">
  265. <a href="../debugging/" class="md-nav__link">
  266. <span class="md-ellipsis">
  267. Debugging
  268. </span>
  269. </a>
  270. </li>
  271. <li class="md-nav__item">
  272. <a href="../devicetabs/" class="md-nav__link">
  273. <span class="md-ellipsis">
  274. Device Tabs
  275. </span>
  276. </a>
  277. </li>
  278. <li class="md-nav__item md-nav__item--active">
  279. <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
  280. <label class="md-nav__link md-nav__link--active" for="__toc">
  281. <span class="md-ellipsis">
  282. Plugins
  283. </span>
  284. <span class="md-nav__icon md-icon"></span>
  285. </label>
  286. <a href="./" class="md-nav__link md-nav__link--active">
  287. <span class="md-ellipsis">
  288. Plugins
  289. </span>
  290. </a>
  291. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  292. <label class="md-nav__title" for="__toc">
  293. <span class="md-nav__icon md-icon"></span>
  294. Table of contents
  295. </label>
  296. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  297. <li class="md-nav__item">
  298. <a href="#use-cases" class="md-nav__link">
  299. <span class="md-ellipsis">
  300. Use Cases
  301. </span>
  302. </a>
  303. </li>
  304. <li class="md-nav__item">
  305. <a href="#list-of-publically-available-plugins" class="md-nav__link">
  306. <span class="md-ellipsis">
  307. List of publically available plugins
  308. </span>
  309. </a>
  310. </li>
  311. <li class="md-nav__item">
  312. <a href="#installation-of-a-plugin" class="md-nav__link">
  313. <span class="md-ellipsis">
  314. Installation of a plugin
  315. </span>
  316. </a>
  317. </li>
  318. </ul>
  319. </nav>
  320. </li>
  321. <li class="md-nav__item">
  322. <a href="../SSLnletsencrypt/" class="md-nav__link">
  323. <span class="md-ellipsis">
  324. SSL
  325. </span>
  326. </a>
  327. </li>
  328. <li class="md-nav__item">
  329. <a href="../security/" class="md-nav__link">
  330. <span class="md-ellipsis">
  331. Security
  332. </span>
  333. </a>
  334. </li>
  335. <li class="md-nav__item">
  336. <a href="../tokens/" class="md-nav__link">
  337. <span class="md-ellipsis">
  338. Tokens
  339. </span>
  340. </a>
  341. </li>
  342. <li class="md-nav__item">
  343. <a href="../faq/" class="md-nav__link">
  344. <span class="md-ellipsis">
  345. FAQ
  346. </span>
  347. </a>
  348. </li>
  349. <li class="md-nav__item">
  350. <a href="../tipsntricks/" class="md-nav__link">
  351. <span class="md-ellipsis">
  352. Tips n Tricks
  353. </span>
  354. </a>
  355. </li>
  356. <li class="md-nav__item">
  357. <a href="../../messaging/" class="md-nav__link">
  358. <span class="md-ellipsis">
  359. Messaging
  360. </span>
  361. </a>
  362. </li>
  363. <li class="md-nav__item">
  364. <a href="../customization/" class="md-nav__link">
  365. <span class="md-ellipsis">
  366. Customization
  367. </span>
  368. </a>
  369. </li>
  370. <li class="md-nav__item">
  371. <a href="../openidConnectStrategy/" class="md-nav__link">
  372. <span class="md-ellipsis">
  373. openidConnectStrategy
  374. </span>
  375. </a>
  376. </li>
  377. </ul>
  378. </nav>
  379. </li>
  380. <li class="md-nav__item md-nav__item--nested">
  381. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
  382. <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
  383. <span class="md-ellipsis">
  384. Design and Architecture
  385. </span>
  386. <span class="md-nav__icon md-icon"></span>
  387. </label>
  388. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
  389. <label class="md-nav__title" for="__nav_4">
  390. <span class="md-nav__icon md-icon"></span>
  391. Design and Architecture
  392. </label>
  393. <ul class="md-nav__list" data-md-scrollfix>
  394. <li class="md-nav__item">
  395. <a href="../../design/" class="md-nav__link">
  396. <span class="md-ellipsis">
  397. Design and Architecture
  398. </span>
  399. </a>
  400. </li>
  401. </ul>
  402. </nav>
  403. </li>
  404. <li class="md-nav__item md-nav__item--nested">
  405. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
  406. <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
  407. <span class="md-ellipsis">
  408. MeshCmd
  409. </span>
  410. <span class="md-nav__icon md-icon"></span>
  411. </label>
  412. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
  413. <label class="md-nav__title" for="__nav_5">
  414. <span class="md-nav__icon md-icon"></span>
  415. MeshCmd
  416. </label>
  417. <ul class="md-nav__list" data-md-scrollfix>
  418. <li class="md-nav__item">
  419. <a href="../../meshcmd/" class="md-nav__link">
  420. <span class="md-ellipsis">
  421. MeshCmd
  422. </span>
  423. </a>
  424. </li>
  425. </ul>
  426. </nav>
  427. </li>
  428. <li class="md-nav__item md-nav__item--nested">
  429. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
  430. <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
  431. <span class="md-ellipsis">
  432. MeshCtrl
  433. </span>
  434. <span class="md-nav__icon md-icon"></span>
  435. </label>
  436. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
  437. <label class="md-nav__title" for="__nav_6">
  438. <span class="md-nav__icon md-icon"></span>
  439. MeshCtrl
  440. </label>
  441. <ul class="md-nav__list" data-md-scrollfix>
  442. <li class="md-nav__item">
  443. <a href="../../meshctrl/" class="md-nav__link">
  444. <span class="md-ellipsis">
  445. MeshCtrl
  446. </span>
  447. </a>
  448. </li>
  449. </ul>
  450. </nav>
  451. </li>
  452. <li class="md-nav__item md-nav__item--nested">
  453. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
  454. <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
  455. <span class="md-ellipsis">
  456. Mesh Router
  457. </span>
  458. <span class="md-nav__icon md-icon"></span>
  459. </label>
  460. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
  461. <label class="md-nav__title" for="__nav_7">
  462. <span class="md-nav__icon md-icon"></span>
  463. Mesh Router
  464. </label>
  465. <ul class="md-nav__list" data-md-scrollfix>
  466. <li class="md-nav__item">
  467. <a href="../../meshrouter/" class="md-nav__link">
  468. <span class="md-ellipsis">
  469. MeshCentral Router
  470. </span>
  471. </a>
  472. </li>
  473. </ul>
  474. </nav>
  475. </li>
  476. <li class="md-nav__item md-nav__item--nested">
  477. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8" >
  478. <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
  479. <span class="md-ellipsis">
  480. Intel AMT
  481. </span>
  482. <span class="md-nav__icon md-icon"></span>
  483. </label>
  484. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
  485. <label class="md-nav__title" for="__nav_8">
  486. <span class="md-nav__icon md-icon"></span>
  487. Intel AMT
  488. </label>
  489. <ul class="md-nav__list" data-md-scrollfix>
  490. <li class="md-nav__item">
  491. <a href="../../intelamt/" class="md-nav__link">
  492. <span class="md-ellipsis">
  493. Intel AMT
  494. </span>
  495. </a>
  496. </li>
  497. </ul>
  498. </nav>
  499. </li>
  500. <li class="md-nav__item md-nav__item--nested">
  501. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9" >
  502. <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
  503. <span class="md-ellipsis">
  504. How to Contribute
  505. </span>
  506. <span class="md-nav__icon md-icon"></span>
  507. </label>
  508. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
  509. <label class="md-nav__title" for="__nav_9">
  510. <span class="md-nav__icon md-icon"></span>
  511. How to Contribute
  512. </label>
  513. <ul class="md-nav__list" data-md-scrollfix>
  514. <li class="md-nav__item">
  515. <a href="../../how-to-contribute/" class="md-nav__link">
  516. <span class="md-ellipsis">
  517. Contribute to MeshCentral
  518. </span>
  519. </a>
  520. </li>
  521. </ul>
  522. </nav>
  523. </li>
  524. <li class="md-nav__item md-nav__item--nested">
  525. <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_10" >
  526. <label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
  527. <span class="md-ellipsis">
  528. Other
  529. </span>
  530. <span class="md-nav__icon md-icon"></span>
  531. </label>
  532. <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
  533. <label class="md-nav__title" for="__nav_10">
  534. <span class="md-nav__icon md-icon"></span>
  535. Other
  536. </label>
  537. <ul class="md-nav__list" data-md-scrollfix>
  538. <li class="md-nav__item">
  539. <a href="../../other/adfs_sso_guide/" class="md-nav__link">
  540. <span class="md-ellipsis">
  541. ADFS SSO Guide
  542. </span>
  543. </a>
  544. </li>
  545. <li class="md-nav__item">
  546. <a href="../../other/meshcentral_satellite/" class="md-nav__link">
  547. <span class="md-ellipsis">
  548. MeshCentral Satellite
  549. </span>
  550. </a>
  551. </li>
  552. </ul>
  553. </nav>
  554. </li>
  555. </ul>
  556. </nav>
  557. </div>
  558. </div>
  559. </div>
  560. <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
  561. <div class="md-sidebar__scrollwrap">
  562. <div class="md-sidebar__inner">
  563. <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  564. <label class="md-nav__title" for="__toc">
  565. <span class="md-nav__icon md-icon"></span>
  566. Table of contents
  567. </label>
  568. <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
  569. <li class="md-nav__item">
  570. <a href="#use-cases" class="md-nav__link">
  571. <span class="md-ellipsis">
  572. Use Cases
  573. </span>
  574. </a>
  575. </li>
  576. <li class="md-nav__item">
  577. <a href="#list-of-publically-available-plugins" class="md-nav__link">
  578. <span class="md-ellipsis">
  579. List of publically available plugins
  580. </span>
  581. </a>
  582. </li>
  583. <li class="md-nav__item">
  584. <a href="#installation-of-a-plugin" class="md-nav__link">
  585. <span class="md-ellipsis">
  586. Installation of a plugin
  587. </span>
  588. </a>
  589. </li>
  590. </ul>
  591. </nav>
  592. </div>
  593. </div>
  594. </div>
  595. <div class="md-content" data-md-component="content">
  596. <article class="md-content__inner md-typeset">
  597. <h1 id="plugins-installation-usage">Plugins - Installation &amp; Usage<a class="headerlink" href="#plugins-installation-usage" title="Permanent link">&para;</a></h1>
  598. <div class="admonition note">
  599. <p class="admonition-title">Note</p>
  600. <p>Plugins as such receive <strong>no support</strong> by the main developers of MeshCentral. If you experience problems with MeshCentral please make sure to <strong>disable all plugins before further troubleshooting</strong>!</p>
  601. </div>
  602. <h2 id="use-cases">Use Cases<a class="headerlink" href="#use-cases" title="Permanent link">&para;</a></h2>
  603. <p>Certain feature requests may not be suitable for all MeshCentral users and thus are available as a plugin. Furthermore users can develop their own plugins - as described further below - to extend functionality or benefit from integrating MeshCentral into their existing application environment.</p>
  604. <h2 id="list-of-publically-available-plugins">List of publically available plugins<a class="headerlink" href="#list-of-publically-available-plugins" title="Permanent link">&para;</a></h2>
  605. <p><a href="https://github.com/topics/meshcentral-plugin">https://github.com/topics/meshcentral-plugin</a></p>
  606. <h2 id="installation-of-a-plugin">Installation of a plugin<a class="headerlink" href="#installation-of-a-plugin" title="Permanent link">&para;</a></h2>
  607. <ol>
  608. <li>First please make sure that you enable plugins in the configuration<blockquote>
  609. <p>"plugins": {
  610. "enabled": true
  611. },</p>
  612. </blockquote>
  613. </li>
  614. <li>Restart MeshCentral if you needed to change the configuration.</li>
  615. <li>Log into MeshCentral as full administrator.</li>
  616. <li>Go my <code>My Server</code> -&gt; <code>Plugins</code>, then hit the Download plugin button.</li>
  617. <li>A dialog opens requesting a URL, e.g. put in: <a href="https://github.com/ryanblenis/MeshCentral-ScriptTask">https://github.com/ryanblenis/MeshCentral-ScriptTask</a></li>
  618. <li>The plugin pops up in the plugin list below the download button, you can now configure and enable/disable it.</li>
  619. </ol>
  620. <h1 id="plugins-development-hooks">Plugins - Development &amp; Hooks<a class="headerlink" href="#plugins-development-hooks" title="Permanent link">&para;</a></h1>
  621. <div class="admonition note">
  622. <p class="admonition-title">Note</p>
  623. <p>Plugins as such receive <strong>no support</strong> by the main developers of MeshCentral. If you experience problems with MeshCentral please make sure to <strong>disable all plugins before further troubleshooting</strong>!</p>
  624. </div>
  625. <h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
  626. <p>Not all feature requests may be suitable for all MeshCentral users and thus can't be integrated into MeshCentral directly. Hwoever, Instead of maintaining a complete fork of MeshCentral it is much easier to extend MeshCentral's functionality using hooks and writing plugins for it.</p>
  627. <h2 id="anatomy-of-a-plugin">Anatomy of a plugin:<a class="headerlink" href="#anatomy-of-a-plugin" title="Permanent link">&para;</a></h2>
  628. <div class="highlight"><pre><span></span><code>- plugin_name/
  629. -- config.json
  630. -- plugin_name.js
  631. -- modules_meshcore/ // optional
  632. --- plugin_name.js // optional
  633. </code></pre></div>
  634. <h2 id="plugin-configuration-file">Plugin Configuration File<a class="headerlink" href="#plugin-configuration-file" title="Permanent link">&para;</a></h2>
  635. <p>A valid JSON object within a file named <code>config.json</code> in the root folder of your project. An example:</p>
  636. <div class="highlight"><pre><span></span><code>{
  637. &quot;name&quot;: &quot;Plugin Name&quot;,
  638. &quot;shortName&quot;: &quot;plugin_name&quot;,
  639. &quot;version&quot;: &quot;0.0.0&quot;,
  640. &quot;author&quot;: &quot;Author Name&quot;,
  641. &quot;description&quot;: &quot;Short Description of the plugin&quot;,
  642. &quot;hasAdminPanel&quot;: false,
  643. &quot;homepage&quot;: &quot;https://www.example.com&quot;,
  644. &quot;changelogUrl&quot;: &quot;https://raw.githubusercontent.com/User/Project/master/changelog.md&quot;,
  645. &quot;configUrl&quot;: &quot;https://raw.githubusercontent.com/User/Project/master/config.json&quot;,
  646. &quot;downloadUrl&quot;: &quot;https://github.com/User/Project/archive/master.zip&quot;,
  647. &quot;repository&quot;: {
  648. &quot;type&quot;: &quot;git&quot;,
  649. &quot;url&quot;: &quot;https://github.com/User/Project.git&quot;
  650. },
  651. &quot;versionHistoryUrl&quot;: &quot;https://api.github.com/repos/User/Project/tags&quot;,
  652. &quot;meshCentralCompat&quot;: &quot;&gt;0.4.3&quot;
  653. }
  654. </code></pre></div>
  655. <h2 id="configuration-file-properties">Configuration File Properties<a class="headerlink" href="#configuration-file-properties" title="Permanent link">&para;</a></h2>
  656. <table>
  657. <thead>
  658. <tr>
  659. <th>Field</th>
  660. <th>Required</th>
  661. <th>Type</th>
  662. <th>Description</th>
  663. </tr>
  664. </thead>
  665. <tbody>
  666. <tr>
  667. <td>name</td>
  668. <td>Yes</td>
  669. <td>string</td>
  670. <td>a human-readable name for the plugin</td>
  671. </tr>
  672. <tr>
  673. <td>shortName</td>
  674. <td>Yes</td>
  675. <td>string</td>
  676. <td>an alphanumeric, unique short identifier for the plugin (will be used to access your functions throughout the project</td>
  677. </tr>
  678. <tr>
  679. <td>version</td>
  680. <td>Yes</td>
  681. <td>string</td>
  682. <td>the current version of the plugin</td>
  683. </tr>
  684. <tr>
  685. <td>author</td>
  686. <td>No</td>
  687. <td>string</td>
  688. <td>the author's name</td>
  689. </tr>
  690. <tr>
  691. <td>description</td>
  692. <td>Yes</td>
  693. <td>string</td>
  694. <td>a short, human-readable description of what the plugin does</td>
  695. </tr>
  696. <tr>
  697. <td>hasAdminPanel</td>
  698. <td>Yes</td>
  699. <td>boolean</td>
  700. <td><code>true</code> or <code>false</code>, indicates whether or not the plugin will offer its own administrative interface</td>
  701. </tr>
  702. <tr>
  703. <td>homepage</td>
  704. <td>Yes</td>
  705. <td>string</td>
  706. <td>the URL of the projects homepage</td>
  707. </tr>
  708. <tr>
  709. <td>changelogUrl</td>
  710. <td>Yes</td>
  711. <td>string</td>
  712. <td>the URL to the changelog of the project</td>
  713. </tr>
  714. <tr>
  715. <td>configUrl</td>
  716. <td>Yes</td>
  717. <td>string</td>
  718. <td>the URL to the config.json of the project</td>
  719. </tr>
  720. <tr>
  721. <td>downloadUrl</td>
  722. <td>Yes</td>
  723. <td>string</td>
  724. <td>the URL to a ZIP of the project (used for installation/upgrades)</td>
  725. </tr>
  726. <tr>
  727. <td>repository</td>
  728. <td>Yes</td>
  729. <td>JSON object</td>
  730. <td>contains the following attributes</td>
  731. </tr>
  732. <tr>
  733. <td>repository.type</td>
  734. <td>Yes</td>
  735. <td>string</td>
  736. <td>valid values are <code>git</code> and in the future, <code>npm</code> will also be supported.</td>
  737. </tr>
  738. <tr>
  739. <td>repository.url</td>
  740. <td>Yes</td>
  741. <td>string</td>
  742. <td>the URL to the project's repository</td>
  743. </tr>
  744. <tr>
  745. <td>versionHistoryUrl</td>
  746. <td>No</td>
  747. <td>string</td>
  748. <td>the URL to the project's versions/tags</td>
  749. </tr>
  750. <tr>
  751. <td>meshCentralCompat</td>
  752. <td>Yes</td>
  753. <td>string</td>
  754. <td>the minimum version string of required compatibility with the MeshCentral server, can be formatted as "0.1.2-c" or "&gt;=0.1.2-c". Currently only supports minimum version, not full semantic checking.</td>
  755. </tr>
  756. </tbody>
  757. </table>
  758. <h2 id="plugin-hooks">Plugin Hooks<a class="headerlink" href="#plugin-hooks" title="Permanent link">&para;</a></h2>
  759. <p>In essence, hooks are locations in the code which enable developers to tap into a module to either provide alternative behavior or to respond to an event.</p>
  760. <p>These are separated into the following categories depending on the type of functionality the plugin should offer.</p>
  761. <ul>
  762. <li>Web UI, to modify the MeshCentral admin interface</li>
  763. <li>Back End, to modify core functionality of the server and communicate with the Web UI layer as well as the Mesh Agent (Node) layer to send commands and data</li>
  764. <li>Mesh Agent (Node), to introduce functionality to each agent</li>
  765. </ul>
  766. <h3 id="web-ui-hooks">Web UI Hooks<a class="headerlink" href="#web-ui-hooks" title="Permanent link">&para;</a></h3>
  767. <ul>
  768. <li><code>onDeviceRefreshEnd</code>: called when a device is selected in the MeshCentral web interface</li>
  769. <li><code>registerPluginTab</code>: callable when a device is selected in the MeshCentral web interface to register a new tab for plugin data, if required. Accepts an object, or function that returns an object, with the following properties: { tabId: "yourShortNameHere", tabTitle: "Your Display Name"}. A tab and div with the associated ID and title will be created for your use</li>
  770. <li><code>onDesktopDisconnect</code>: called when a remote desktop session is disconnected</li>
  771. <li><code>onWebUIStartupEnd</code>: called when the page has loaded for the first time after a login / refresh</li>
  772. <li><code>goPageStart</code>: called before page changes take effect. Passes 2 arguments (<page number> : int, <event> : Event)</li>
  773. <li><code>goPageEnd</code>: called after page changes take effect. Passes 2 arguments (<page number> : int, <event> : Event)</li>
  774. </ul>
  775. <h4 id="exports">Exports<a class="headerlink" href="#exports" title="Permanent link">&para;</a></h4>
  776. <p>Any function can be exported to the Web UI layer by adding the name of the function to an <code>exports</code> array in the plugin object.</p>
  777. <h3 id="back-end-hooks">Back End Hooks<a class="headerlink" href="#back-end-hooks" title="Permanent link">&para;</a></h3>
  778. <ul>
  779. <li><code>server_startup</code>: called once when the server starts (or when the plugin is first installed)</li>
  780. <li><code>hook_agentCoreIsStable</code>: called once when an agent initially checks in</li>
  781. <li><code>hook_processAgentData</code>: called each time an agent transmits data back to the server</li>
  782. <li><code>hook_userLoggedIn</code>: called when a user has logged into the web interface</li>
  783. <li><code>hook_setupHttpHandlers</code>: called before all http handlers are setup</li>
  784. </ul>
  785. <h3 id="mesh-agent">Mesh Agent<a class="headerlink" href="#mesh-agent" title="Permanent link">&para;</a></h3>
  786. <p>Use of the optional file <code>plugin_name.js</code> in the optional folder <code>modules_meshcore</code> will include the file in the default meshcore file sent to each endpoint. This is useful to add functionality on each of the endpoints.</p>
  787. <h2 id="structure">Structure<a class="headerlink" href="#structure" title="Permanent link">&para;</a></h2>
  788. <p>Much of MeshCentral revolves around returning objects for your structures, and plugins are no different. Within your plugin you can traverse all the way up to the web server and MeshCentral Server classes to access all the functionality those layers provide. This is done by passing the current object to newly created objects, and assigning that reference to a <code>parent</code> variable within that object.</p>
  789. <h2 id="versioning">Versioning<a class="headerlink" href="#versioning" title="Permanent link">&para;</a></h2>
  790. <p>Versioning your plugin correctly and consistently is essential to ensure users of your plugin are prompted to upgrade when it is available. Semantic versioning is recommended.</p>
  791. <h2 id="changelog">Changelog<a class="headerlink" href="#changelog" title="Permanent link">&para;</a></h2>
  792. <p>A changelog is highly recommended so that your users know what's changed since their last version.</p>
  793. <h2 id="sample-plugin">Sample Plugin<a class="headerlink" href="#sample-plugin" title="Permanent link">&para;</a></h2>
  794. <p><a href="https://github.com/ryanblenis/MeshCentral-Sample">MeshCentral-Sample</a> is a simple plugin that, upon disconnecting from remote desktop, prompts the user to enter a manual event (note), pre-filled in with the date and timestamp.</p>
  795. </article>
  796. </div>
  797. <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
  798. </div>
  799. <button type="button" class="md-top md-icon" data-md-component="top" hidden>
  800. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
  801. Back to top
  802. </button>
  803. </main>
  804. <footer class="md-footer">
  805. <div class="md-footer-meta md-typeset">
  806. <div class="md-footer-meta__inner md-grid">
  807. <div class="md-copyright">
  808. </div>
  809. </div>
  810. </div>
  811. </footer>
  812. </div>
  813. <div class="md-dialog" data-md-component="dialog">
  814. <div class="md-dialog__inner md-typeset"></div>
  815. </div>
  816. <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.expand", "navigation.top", "navigation.instant"], "search": "../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
  817. <script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
  818. </body>
  819. </html>