discos 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/PRIVACY_POLICY.md +29 -0
- package/.github/TERMS_OF_SERVICE.md +56 -0
- package/LICENSE +201 -0
- package/README.md +70 -0
- package/dist/common.d.ts +157 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +226 -0
- package/dist/common.js.map +1 -0
- package/dist/config.d.ts +18 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +20 -0
- package/dist/config.js.map +1 -0
- package/dist/ext/langMap.d.ts +2 -0
- package/dist/ext/langMap.d.ts.map +1 -0
- package/dist/ext/langMap.js +275 -0
- package/dist/ext/langMap.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/admin.d.ts +4 -0
- package/dist/modules/admin.d.ts.map +1 -0
- package/dist/modules/admin.js +281 -0
- package/dist/modules/admin.js.map +1 -0
- package/dist/modules/clear.d.ts +3 -0
- package/dist/modules/clear.d.ts.map +1 -0
- package/dist/modules/clear.js +82 -0
- package/dist/modules/clear.js.map +1 -0
- package/dist/modules/command.d.ts +5 -0
- package/dist/modules/command.d.ts.map +1 -0
- package/dist/modules/command.js +89 -0
- package/dist/modules/command.js.map +1 -0
- package/dist/modules/debug.d.ts +4 -0
- package/dist/modules/debug.d.ts.map +1 -0
- package/dist/modules/debug.js +47 -0
- package/dist/modules/debug.js.map +1 -0
- package/dist/modules/file.d.ts +7 -0
- package/dist/modules/file.d.ts.map +1 -0
- package/dist/modules/file.js +141 -0
- package/dist/modules/file.js.map +1 -0
- package/dist/modules/watch.d.ts +4 -0
- package/dist/modules/watch.d.ts.map +1 -0
- package/dist/modules/watch.js +63 -0
- package/dist/modules/watch.js.map +1 -0
- package/dist/shared/consts.d.ts +3 -0
- package/dist/shared/consts.d.ts.map +1 -0
- package/dist/shared/consts.js +6 -0
- package/dist/shared/consts.js.map +1 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +19 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/interfaces.d.ts +13 -0
- package/dist/shared/interfaces.d.ts.map +1 -0
- package/dist/shared/interfaces.js +3 -0
- package/dist/shared/interfaces.js.map +1 -0
- package/dist/slash-commands.d.ts +2 -0
- package/dist/slash-commands.d.ts.map +1 -0
- package/dist/slash-commands.js +242 -0
- package/dist/slash-commands.js.map +1 -0
- package/dist/startup.d.ts +2 -0
- package/dist/startup.d.ts.map +1 -0
- package/dist/startup.js +200 -0
- package/dist/startup.js.map +1 -0
- package/dist/tools/backend.d.ts +5 -0
- package/dist/tools/backend.d.ts.map +1 -0
- package/dist/tools/backend.js +155 -0
- package/dist/tools/backend.js.map +1 -0
- package/dist/tools/ipcServer.d.ts +4 -0
- package/dist/tools/ipcServer.d.ts.map +1 -0
- package/dist/tools/ipcServer.js +83 -0
- package/dist/tools/ipcServer.js.map +1 -0
- package/dist/tools/queue-utils.d.ts +9 -0
- package/dist/tools/queue-utils.d.ts.map +1 -0
- package/dist/tools/queue-utils.js +70 -0
- package/dist/tools/queue-utils.js.map +1 -0
- package/dist/tools/validateDb.d.ts +2 -0
- package/dist/tools/validateDb.d.ts.map +1 -0
- package/dist/tools/validateDb.js +111 -0
- package/dist/tools/validateDb.js.map +1 -0
- package/dist/tools/validateDotenv.d.ts +2 -0
- package/dist/tools/validateDotenv.d.ts.map +1 -0
- package/dist/tools/validateDotenv.js +117 -0
- package/dist/tools/validateDotenv.js.map +1 -0
- package/dist/types/db.d.ts +9 -0
- package/dist/types/db.d.ts.map +1 -0
- package/dist/types/db.js +3 -0
- package/dist/types/db.js.map +1 -0
- package/dist/types/queues.d.ts +6 -0
- package/dist/types/queues.d.ts.map +1 -0
- package/dist/types/queues.js +3 -0
- package/dist/types/queues.js.map +1 -0
- package/package.json +71 -0
- package/setup/install.sh +527 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Privacy Policy
|
|
2
|
+
|
|
3
|
+
## 1. Introduction
|
|
4
|
+
|
|
5
|
+
This Privacy Policy is an extension of the [DiscOS Terms of Service](https://github.com/BrNi05/DiscOS/blob/main/.github/TERMS_OF_SERVICE.md). By using DiscOS clones, you agree to comply with both the Terms of Service and this Privacy Policy.
|
|
6
|
+
|
|
7
|
+
## 2. Discord's terms
|
|
8
|
+
|
|
9
|
+
By using DiscOS clones, you agree to [Discord's Privacy Policy](https://discord.com/privacy).
|
|
10
|
+
|
|
11
|
+
## 3. Data collection
|
|
12
|
+
|
|
13
|
+
By default, DiscOS clones do not collect or store any user data, neither do they log user activity.
|
|
14
|
+
|
|
15
|
+
## 4. Instance specific policy
|
|
16
|
+
|
|
17
|
+
DiscOS clone admins are solely responsible for informing their users and complying with relevant data protection laws (such as GDPR).
|
|
18
|
+
|
|
19
|
+
Admins can reference this Privacy Policy, but should always clearly state custom policies for users (before any data collection occurs).
|
|
20
|
+
|
|
21
|
+
## 5. Admin-configurable logging
|
|
22
|
+
|
|
23
|
+
By using an external backend, admins have means to enable logging or analytics (without modifying the source code, thus ToS continues to apply).
|
|
24
|
+
|
|
25
|
+
Admins are encouraged to follow the principle of minimal logging as well as security and data protection best practices.
|
|
26
|
+
|
|
27
|
+
## 6. Version history
|
|
28
|
+
|
|
29
|
+
- 2025.08.30: first edition
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Terms of Service
|
|
2
|
+
|
|
3
|
+
## 1. Introduction
|
|
4
|
+
|
|
5
|
+
DiscOS refers to the source code (the product) found in this repository.
|
|
6
|
+
|
|
7
|
+
These Terms of Service ("terms") govern the use of any Discord bots ("DiscOS clones", "bot") that use DiscOS.
|
|
8
|
+
|
|
9
|
+
Modifying the source code creates a new product, so these terms do not apply to bots using the modified DiscOS source code.
|
|
10
|
+
|
|
11
|
+
You agree to comply with these terms when using DiscOS with your bot.
|
|
12
|
+
|
|
13
|
+
## 2. Extending the scope of admin
|
|
14
|
+
|
|
15
|
+
In the following, admin can mean any person, who is the owner of the bot, in the owner team, has root privileges on the host or has access to `admos` commands.
|
|
16
|
+
|
|
17
|
+
## 3. Usage of DiscOS clones
|
|
18
|
+
|
|
19
|
+
You must comply with Discord's [Terms of Service](https://discord.com/terms) and [Community Guidelines](https://discord.com/guidelines) when using the bot.
|
|
20
|
+
|
|
21
|
+
You agree not to use the bot for unlawful, unethical, harmful or disruptive purposes.
|
|
22
|
+
|
|
23
|
+
Bot admins must follow the relevant ethical and professional guidelines when working with the bot.
|
|
24
|
+
|
|
25
|
+
Bot users agree not to abuse bugs and security issues of the bot. Instead, they are asked to [open a ticket](https://github.com/BrNi05/DiscOS/issues).
|
|
26
|
+
|
|
27
|
+
## 4. Liability
|
|
28
|
+
|
|
29
|
+
DiscOS source code is provided free of charge and without a warranty of any kind.
|
|
30
|
+
|
|
31
|
+
The developer (@BrNi05), the contributors and admins are not liable for damages, loss of data, or any issues caused by the bot.
|
|
32
|
+
|
|
33
|
+
## 5. Termination
|
|
34
|
+
|
|
35
|
+
The developer (@BrNi05) reserves the right to discontinue support, updates, or access to this repository at any time.
|
|
36
|
+
|
|
37
|
+
Admins may remove the bot from their servers at any time. Custom regulations may apply.
|
|
38
|
+
|
|
39
|
+
Admins may use the bot's access control commands at any time. Custom regulations may apply.
|
|
40
|
+
|
|
41
|
+
## 6. License
|
|
42
|
+
|
|
43
|
+
These terms do not replace or limit the [Apache 2.0 license](https://github.com/BrNi05/DiscOS/blob/main/LICENSE).
|
|
44
|
+
The use of DiscOS source code is subject to the Apache 2.0 License in addition to these terms.
|
|
45
|
+
|
|
46
|
+
## 7. Privacy Policy
|
|
47
|
+
|
|
48
|
+
The [Privacy Policy](https://github.com/BrNi05/DiscOS/blob/main/.github/PRIVACY_POLICY.md) is an extension of the terms, inheriting all clauses of it.
|
|
49
|
+
|
|
50
|
+
## 8. Changes of terms
|
|
51
|
+
|
|
52
|
+
These terms may be updated at any time. Continued use of the bot after updates constitutes agreement to the new terms.
|
|
53
|
+
|
|
54
|
+
## 9. Version history
|
|
55
|
+
|
|
56
|
+
- 2025.08.30: first edition
|
package/LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright [yyyy] [name of copyright owner]
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# DiscOS
|
|
2
|
+
|
|
3
|
+
DiscOS is a secure interaction bridge between Discord and Linux servers, letting admins manage and users access their machines effortlessly. It’s easier to set up than SSH, and offers a richer set of features than traditional remote desktop solutions.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
**You can use `/dcos` slash commands to:**
|
|
8
|
+
|
|
9
|
+
- Execute almost any command on the server as your local user
|
|
10
|
+
- Live-monitor (periodically execute) almost any command with the watch module
|
|
11
|
+
- Clear the previous replies for a smooth experience
|
|
12
|
+
- Send any type of file from your machine to the server
|
|
13
|
+
- Send any type of file from the server to your machine (to a Discord channel)
|
|
14
|
+
- Decide if the reply should only be visible to you, or everybody on the channel
|
|
15
|
+
|
|
16
|
+
**Admins can use `/admos` slash commands to:**
|
|
17
|
+
|
|
18
|
+
- Switch between standalone and external backend mode
|
|
19
|
+
- Enable or disable safemode
|
|
20
|
+
- Clear the previous replies for any user (or all users)
|
|
21
|
+
- Enable or disable users to use DiscOS
|
|
22
|
+
- Enable or disable DiscOS to be used on specific channels
|
|
23
|
+
- List all channels and users that can use DiscOS
|
|
24
|
+
- Manage admin access and list admins
|
|
25
|
+
- Enable lockdown mode (only admins can use DiscOS commands)
|
|
26
|
+
- Execute almost any command on the server as root
|
|
27
|
+
- Kill DiscOS
|
|
28
|
+
|
|
29
|
+
**You can use environment variables to:**
|
|
30
|
+
|
|
31
|
+
- Configure essential security features
|
|
32
|
+
- Limit maximum file and reply size
|
|
33
|
+
- Configure some amazing display options
|
|
34
|
+
- Configure bot and connection settings
|
|
35
|
+
|
|
36
|
+
**These security features keep you and your server safe:**
|
|
37
|
+
|
|
38
|
+
- All user input are escaped, so the shell cannot be abused
|
|
39
|
+
- Users can decide if the reply for their command is ephemeral or visible for all server users (who have permission to view the channel)
|
|
40
|
+
- In external backend mode, you can use an IPC server to validate payloads with DiscOS
|
|
41
|
+
- The one and only secret DiscOS uses is the bot token. No others keys or secrets needed
|
|
42
|
+
- Minimal logging - users deserve privacy
|
|
43
|
+
- DiscOS is open-source - see what's under the hood
|
|
44
|
+
- No need for open ports - DiscOS will make a secure outbound connection to Discord servers
|
|
45
|
+
- Files are sent over HTTPS through Discord CDN. The URL is not recorded, so only you can see what was sent
|
|
46
|
+
- The Discord API and Discord.js are used by millions of bots and users - DiscOS is built on a solid and reliable foundation
|
|
47
|
+
|
|
48
|
+
## Limitations
|
|
49
|
+
|
|
50
|
+
- Commands that are interactive (require user input) are not supported
|
|
51
|
+
- Discord API limitations apply
|
|
52
|
+
- Each command runs a fresh login shell, so no environment, working directory, or state is preserved between executions
|
|
53
|
+
- Shell initialization files for interactive, non-login shells (e.g. `.bashrc`, `.zshrc`) are not read (but there is a workaround)
|
|
54
|
+
|
|
55
|
+
## Ways to use
|
|
56
|
+
|
|
57
|
+
- As a Systemd service
|
|
58
|
+
- As an `npm` package
|
|
59
|
+
- In a Docker container (**non-rootless mode**)
|
|
60
|
+
- Compile the code and create an own solution
|
|
61
|
+
|
|
62
|
+
## Notice
|
|
63
|
+
|
|
64
|
+
Using DiscOS means you’re cool with the [Terms of Service](https://github.com/BrNi05/DiscOS/blob/main/.github/TERMS_OF_SERVICE.md) and the [Privacy Policy](https://github.com/BrNi05/DiscOS/blob/main/.github/PRIVACY_POLICY.md).
|
|
65
|
+
|
|
66
|
+
## Getting started
|
|
67
|
+
|
|
68
|
+
Please visit [DiscOS Wiki](https://github.com/BrNi05/DiscOS/wiki/01.-Home) for detailed documentation on setup and usage.
|
|
69
|
+
|
|
70
|
+
**Have fun using DiscOS!**
|
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
export declare function ENV_MISSING_VAR(missingVars: string[]): string;
|
|
2
|
+
export declare const ENV_TOKEN = "DiscOS ERROR: BOT_TOKEN must be at least 59 characters long.";
|
|
3
|
+
export declare const ENV_APPID = "DiscOS ERROR: APP_ID must be a numeric string with at least 17 characters.";
|
|
4
|
+
export declare const ENV_GUILDS = "DiscOS ERROR: GUILD_IDS must be comma-separated numeric strings with at least 17 characters.";
|
|
5
|
+
export declare const ENV_VER = "DiscOS ERROR: VERSION must be a non-empty string in format x.y.z (e.g., 1.0.0).";
|
|
6
|
+
export declare const ENV_QUEUE_MAX = "DiscOS ERROR: CMD_QUEUE_MAX_SIZE must be a positive integer.";
|
|
7
|
+
export declare const ENV_BACKEND = "DiscOS ERROR: BACKEND must be a non-empty string.";
|
|
8
|
+
export declare const ENV_FILE_MAX = "DiscOS ERROR: FILE_MAX_SIZE must be a positive integer less than or equal to 1000.";
|
|
9
|
+
export declare const ENV_BIN_OVERRIDE = "DiscOS ERROR: READ_BIN_OVERRIDE must be a non-empty comma-separated list of binaries.";
|
|
10
|
+
export declare const ENV_QUICK_VIEW = "DiscOS ERROR: QUICK_VIEW must be a non-empty comma-separated list of file extensions. '?' as extension is not allowed.";
|
|
11
|
+
export declare const ENV_QUICK_VIEW_MAX_LENGTH = "DiscOS ERROR: QUICK_VIEW_MAX_LENGTH must be a positive integer between 0 and 2000.";
|
|
12
|
+
export declare const DB_ERR = "DiscOS ERROR: Database file is invalid or missing.";
|
|
13
|
+
export declare const DB_USER_ERR = "DiscOS ERROR: users must be an object with numeric string keys (Discord UIDs) and string values (local users).";
|
|
14
|
+
export declare const DB_USERS_EMPTY = "DiscOS WARN: No users found in database.";
|
|
15
|
+
export declare const DB_USERS_INVALID = "User IDs must be numeric strings at least 17 characters long";
|
|
16
|
+
export declare const DB_ADMIN_ERR = "DiscOS ERROR: adminUsers must be an array of numeric strings with at least 17 characters.";
|
|
17
|
+
export declare const DB_NO_ADMIN = "DiscOS ERROR: There must be at least one admin user in the database.";
|
|
18
|
+
export declare const DB_ADMIN_INVALID = "DiscOS ERROR: adminUsers must be a non-empty array of numeric strings with at least 17 characters.";
|
|
19
|
+
export declare const DB_ALLOWED_CHANNELS_ARRAY = "DiscOS ERROR: allowedChannels must be a non-empty array.";
|
|
20
|
+
export declare const DB_ALLOWED_CH_EMPTY = "DiscOS WARN: No allowed channels found in database.";
|
|
21
|
+
export declare const DB_ALLOWED_CH_INVALID = "DiscOS ERROR: allowedChannels must contain numeric strings with at least 17 characters.";
|
|
22
|
+
export declare const DB_BOOLEAN_ERR = "DiscOS ERROR: Database boolean fields must be true or false.";
|
|
23
|
+
export declare const CMD_REG_1 = "Slash commands registered on guild (server):";
|
|
24
|
+
export declare const CMD_REG_2 = "Failed to register slash commands on guild (server):";
|
|
25
|
+
export declare const CMD_REG_ERR = "Error during slash command registration:";
|
|
26
|
+
export declare const DCOS = "dcos";
|
|
27
|
+
export declare const DCOS_DESC = "Use DiscOS";
|
|
28
|
+
export declare const HIDE = "hide";
|
|
29
|
+
export declare const SUCCESS_VERBOSE = "Whether to receive a success reply. Default: false.";
|
|
30
|
+
export declare const HIDE_REPLY = "Hide command reply. Default: true.";
|
|
31
|
+
export declare const VERBOSE = "verbose";
|
|
32
|
+
export declare const EXEC = "exec";
|
|
33
|
+
export declare const EXEC_DESC = "Execute a Linux command on the server.";
|
|
34
|
+
export declare const CMD = "cmd";
|
|
35
|
+
export declare const CMD_DESC = "The Linux command to execute on the server.";
|
|
36
|
+
export declare const CLEAR = "clear";
|
|
37
|
+
export declare const CLEAR_DESC = "Clears the (unhidden) command history.";
|
|
38
|
+
export declare const LOOKBACK = "lookback";
|
|
39
|
+
export declare const LOOKBACK_DESC = "How many messages to clear (from newest to oldest). Default: all.";
|
|
40
|
+
export declare const READ = "read";
|
|
41
|
+
export declare const READ_DESC = "Reads a file from the server and sends it as an attachment.";
|
|
42
|
+
export declare const PATH = "path";
|
|
43
|
+
export declare const PATH_DESC_READ = "The path to the file on the server. Should contain the file name (and extension). CWD: ~";
|
|
44
|
+
export declare const WRITE = "write";
|
|
45
|
+
export declare const WRITE_DESC = "Uploads any type of file to the server as an attachment.";
|
|
46
|
+
export declare const FILE = "file";
|
|
47
|
+
export declare const FILE_DESC = "The file to upload.";
|
|
48
|
+
export declare const PATH_DESC_WRITE = "Destination path on the server. Default: uploaded file's name in CWD (~). Creates or overwrites.";
|
|
49
|
+
export declare const WATCH = "watch";
|
|
50
|
+
export declare const WATCH_DESC = "Periodically executes the given command.";
|
|
51
|
+
export declare const TARGET = "target";
|
|
52
|
+
export declare const TARGET_DESC = "The binary to execute.";
|
|
53
|
+
export declare const INTERVAL = "interval";
|
|
54
|
+
export declare const INTERVAL_DESC = "Time between two calls in ms. Default: 1000ms (1s). Min: 500ms. Max: 5000ms.";
|
|
55
|
+
export declare const REPEAT = "repeat";
|
|
56
|
+
export declare const REPEAT_DESC = "Number of calls to make. Default: 20. Min: 1. Max: 100.";
|
|
57
|
+
export declare const DEBUG = "debug";
|
|
58
|
+
export declare const DEBUG_DESC = "Display various debug infos about the DiscOS instance.";
|
|
59
|
+
export declare const DEFAULT_HIDDEN = true;
|
|
60
|
+
export declare const DEFAULT_LOOKBACK = -1;
|
|
61
|
+
export declare const DEFAULT_INTERVAL = 1000;
|
|
62
|
+
export declare const DEFAULT_REPEAT = 20;
|
|
63
|
+
export declare const DEFAULT_DEBUG_VERBOSE = false;
|
|
64
|
+
export declare const FALLBACK_CMD = "echo \"No command entered.\"";
|
|
65
|
+
export declare const ADMOS = "admos";
|
|
66
|
+
export declare const ADMOS_DESC = "DiscOS Admin commands";
|
|
67
|
+
export declare const KILL = "kill";
|
|
68
|
+
export declare const KILL_DESC = "Shuts down the DiscOS instance.";
|
|
69
|
+
export declare const SHUTDOWN_MSG = "DiscOS instance is shutting down...";
|
|
70
|
+
export declare const MODE = "mode";
|
|
71
|
+
export declare const MODE_DESC = "Toggle to use an external backend or use DiscOS's own backend solution.";
|
|
72
|
+
export declare const STANDALONE = "standalone";
|
|
73
|
+
export declare const STANDALONE_DESC = "True: Use DiscOS's own backend solution. False: Use an external backend.";
|
|
74
|
+
export declare const SAFEMODE = "safemode";
|
|
75
|
+
export declare const SAFEMODE_DESC = "Applies to standalone mode only. Spoofing protection feature.";
|
|
76
|
+
export declare const CMD_VAL = "enabled";
|
|
77
|
+
export declare const CMD_VAL_DESC = "True: Enable command validation. False: Disable command validation.";
|
|
78
|
+
export declare const ADMIN_CLEAR_DESC = "Clear the (unhidden) command history for any user/all.";
|
|
79
|
+
export declare const CLEAR_USER = "user";
|
|
80
|
+
export declare const CLEAR_USER_DESC = "Which user's command history to clear. Default/empty: all.";
|
|
81
|
+
export declare const USER_MGMT = "usermgmt";
|
|
82
|
+
export declare const USER_MGMT_DESC = "Allow/disallow a user to use DiscOS commands.";
|
|
83
|
+
export declare const ADMIN_MGMT = "adminmgmt";
|
|
84
|
+
export declare const ADMIN_MGMT_DESC = "Allow/disallow a user to use admin commands.";
|
|
85
|
+
export declare const USER = "user";
|
|
86
|
+
export declare const OPERATION = "operation";
|
|
87
|
+
export declare const LOCAL_USER = "local_user";
|
|
88
|
+
export declare const LOCAL_USER_DESC = "Select the user account on the server that is to be used by the user.";
|
|
89
|
+
export declare const LSU = "lsu";
|
|
90
|
+
export declare const LSU_DESC = "List all server users and their Discord names.";
|
|
91
|
+
export declare const LSA = "lsa";
|
|
92
|
+
export declare const LSA_DESC = "List all admins and their Discord names.";
|
|
93
|
+
export declare const CH_MGMT = "chmgmt";
|
|
94
|
+
export declare const CH_MGMT_DESC = "Allow/disallow DiscOS to be used on a channel.";
|
|
95
|
+
export declare const CHANNEL = "channel";
|
|
96
|
+
export declare const CHANNEL_DESC = "Select the channel that will be affected by the command.";
|
|
97
|
+
export declare const LOCKDOWN = "lockdown";
|
|
98
|
+
export declare const LOCKDOWN_DESC = "Turn on lockdown mode (only admin commands can be executed).";
|
|
99
|
+
export declare const ENABLED = "enabled";
|
|
100
|
+
export declare const LOCKDOWN_ENABLED = "True: enable. False: disable.";
|
|
101
|
+
export declare const ROOT = "root";
|
|
102
|
+
export declare const ROOT_DESC = "Execute a command as root on the server.";
|
|
103
|
+
export declare const ADDRM = "True: add. False: remove.";
|
|
104
|
+
export declare const USER_SEL = "Select the user that will be affected by the command.";
|
|
105
|
+
export declare const GUILD_ERR = "DiscOS commands can only be used on a server (guild).";
|
|
106
|
+
export declare const CHANNEL_ERR = "DiscOS commands cannot be used on this channel.";
|
|
107
|
+
export declare const USER_ERR = "You are currently not allowed to use DiscOS commands.";
|
|
108
|
+
export declare const DISCOS_OVERLOADED = "DiscOS is overloaded. Try again later...";
|
|
109
|
+
export declare const LOCKDOWN_ERR = "DiscOS is in lockdown mode. Only admins can use commands.";
|
|
110
|
+
export declare const DISCOS_NON_ADMIN = "DiscOS ERROR: You are not an admin user. Only admins can use this command.";
|
|
111
|
+
export declare const DUPLICATE_ERR = "Command (or similar one) is already being processed for user @";
|
|
112
|
+
export declare const DISCOS_GENERIC_ERR = "DiscOS ERROR:";
|
|
113
|
+
export declare const DISCOS_GENERIC_ERR2 = "DiscOS encountered an error. User: @";
|
|
114
|
+
export declare const DISCOS_CONN_FAIL = "Connection to Discord failed:";
|
|
115
|
+
export declare const LISTENING = "DiscOS IPC server is listening on port ";
|
|
116
|
+
export declare function CMD_EXEC_AS_MSG(userCmd: string, username: string): string;
|
|
117
|
+
export declare function CMD_EXEC_AS_MSG2(username: string): string;
|
|
118
|
+
export declare const WRITE_CMD: string;
|
|
119
|
+
export declare const READ_CMD: string;
|
|
120
|
+
export declare const WATCH_CMD: string;
|
|
121
|
+
export declare function RW_USE_DEDICATED(replyPrefix?: string): string;
|
|
122
|
+
export declare function WATCH_USE_DEDICATED(replyPrefix?: string): string;
|
|
123
|
+
export declare const BACKEND_EXEC_ERR = "Error opening terminal: unknown.";
|
|
124
|
+
export declare const BACKEND_EXEC_ERR_OVERRIDE = "DiscOS ERROR: Interactive terminal commands are not supported.";
|
|
125
|
+
export declare const UNKNOWN_ERR = "DiscOS ERROR: Execution failed. Unknown error occurred.";
|
|
126
|
+
export declare const FETCH_ERR: string;
|
|
127
|
+
export declare const MSG_CLR_FOR = "Cleared all messages for @";
|
|
128
|
+
export declare const MSG_CLR_PRE = "Cleared the last ";
|
|
129
|
+
export declare const MSG_CLR_POST = " messages for ";
|
|
130
|
+
export declare function FILE_CORRUPT_ERR(username: string): string;
|
|
131
|
+
export declare function FILE_SIZE_ERR(maxSize: number): string;
|
|
132
|
+
export declare function OS_ERR_MSG(username: string): string;
|
|
133
|
+
export declare function READ_FILE(path: string, username: string): string;
|
|
134
|
+
export declare function READ_FILE_QUICK(path: string, username: string): string;
|
|
135
|
+
export declare const READ_FILE_QUICK_LENGTH = 50;
|
|
136
|
+
export declare function WRITE_FILE(path: string, username: string): string;
|
|
137
|
+
export declare function BACKEND_ERR_MSG(username: string, statusCode: number, resString: string): string;
|
|
138
|
+
export declare function WATCH_CMD_BUILD(target: string, interval: number, i: number, repeat: number): string;
|
|
139
|
+
export declare const TOO_MANY_REQ = "Too many requests. Please try again later...";
|
|
140
|
+
export declare const WATCH_TERM = "Watch is terminated.";
|
|
141
|
+
export declare const UNKNOWN_USER = "Non-server member user";
|
|
142
|
+
export declare function MODE_REPLY(standalone: boolean): string;
|
|
143
|
+
export declare function SAFEMODE_REPLY(safemode: boolean): string;
|
|
144
|
+
export declare function LOCKDOWN_REPLY(enabled: boolean): string;
|
|
145
|
+
export declare const CLEAR_ALL_USER = "?";
|
|
146
|
+
export declare const CLEAR_ALL_USER_REPLY = "ALL USERS";
|
|
147
|
+
export declare function AT_LEAST_ONE_ERR(type: string): string;
|
|
148
|
+
export declare function CH_OPERATION(channelName: string, op: boolean): string;
|
|
149
|
+
export declare function ADMIN_OPERATION(username: string, op: boolean): string;
|
|
150
|
+
export declare function ADMIN_OPS(username: string, localUser: string, op: boolean, overr: boolean): string;
|
|
151
|
+
export declare const ADMIN = "admin";
|
|
152
|
+
export declare const SPAWN_ERR = "DiscOS CRITICAL ERROR: cmdex is broken.";
|
|
153
|
+
export declare const DIR_ERR = "The provided path is an existing directory.";
|
|
154
|
+
export declare const PERM_ERR = "No permission to write to the file (or to enter the directories).";
|
|
155
|
+
export declare const DOWNLOAD_ERR = "Failed to download file from Discord CDN.";
|
|
156
|
+
export declare const SET_PERM_ERR = "Failed to set file permissions.";
|
|
157
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|