Browse Source

initial commit

hmt 3 years ago
commit
76146e48c9
1 changed files with 104 additions and 0 deletions
  1. 104 0
      MDM.svelte

+ 104 - 0
MDM.svelte

@@ -0,0 +1,104 @@
+<script>
+  const https = require("https");
+  let id = "";
+  let devices;
+  let policy;
+  export let privat;
+  function fetch_json(id) {
+    const url = encodeURI(
+      `https://${privat.MDMSERVER}/relution/api/v1/autoenrollments?getNonpagedCount=true&limit=1&filter={"type":"containsString","fieldName":"serialNumber","contains":"${id}"}&field=uuid`
+    );
+    const options = { headers: { "X-User-Access-Token": privat.MDMKEY } };
+    https.get(url, options, async (res) => {
+      try {
+        let body = "";
+        res.setEncoding("utf-8");
+        for await (const chunk of res) {
+          body += chunk;
+        }
+        devices = JSON.parse(body);
+      } catch (e) {
+        console.log(e);
+      }
+    });
+  }
+  function get_policies() {
+    const url = encodeURI(
+      `https://${privat.MDMSERVER}/relution/api/v1/policies?getNonpagedCount=true&limit=100&offset=0&sortOrder=-modificationDate&filter={"type":"logOp","operation":"AND","filters":[{"type":"stringEnum","fieldName":"platform","values":["IOS"]},{"type":"boolean","fieldName":"versions.published","value":true},{"type":"string","fieldName":"deletionDate","value":"NULL"}]}`
+    );
+    const options = { headers: { "X-User-Access-Token": privat.MDMKEY } };
+    return new Promise((resolve, reject) => {
+      https.get(url, options, async (res) => {
+        try {
+          let body = "";
+          res.setEncoding("utf-8");
+          for await (const chunk of res) {
+            body += chunk;
+          }
+          resolve(JSON.parse(body));
+        } catch (e) {
+          reject(e);
+        }
+      });
+    });
+  }
+  function set_policy(device) {
+    console.log("SET");
+    if (devices.total !== 1 && !policy) return;
+    device.defaultPolicy = { uuid: policy };
+    const data = JSON.stringify(device);
+    console.log(data);
+    const options = {
+      hostname: privat.MDMSERVER,
+      port: 443,
+      path: `/relution/api/v1/autoenrollments/${device.uuid}`,
+      method: "PUT",
+      headers: {
+        "Content-Type": "application/json",
+        "Content-Length": data.length,
+        "X-User-Access-Token": privat.MDMKEY,
+      },
+    };
+    const req = https.request(options, (res) => {
+      console.log(`statusCode: ${res.statusCode}`);
+      if (res.statusCode === 200) {
+        id = "";
+        devices = undefined;
+      }
+    });
+    req.on("error", (error) => {
+      console.error(error);
+    });
+    req.write(data);
+    req.end();
+  }
+</script>
+
+Verfügbare Policies:
+{#await get_policies() then policies}
+  {#each policies.results as p}
+    <br /><input type="radio" bind:group={policy} value={p.uuid} />{p.name}
+  {/each}
+  <br />ausgewählt {policies.results.find((p) => p.uuid === policy)?.name ||
+    "keine"}
+{/await}
+<br />
+<br /><input
+  type="text"
+  bind:value={id}
+  on:keyup={(e) =>
+    e.code === "Enter" ? set_policy(devices.results[0]) : fetch_json(id)}
+/>
+
+{#if devices}
+  {#if devices.total > 1}
+    {devices.total} Ergebnisse
+  {:else if devices.total === 0}
+    keine Ergebnisse
+  {:else if devices.total === 1}
+    <br />{devices.results[0].uuid}
+    <br />{devices.results[0].serialNumber}
+    <br />{devices.results[0].description}
+  {:else}Fehler
+  {/if}
+{/if}