fts-tool 1.0.0__tar.gz

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.
Files changed (37) hide show
  1. fts_tool-1.0.0/LICENSE +21 -0
  2. fts_tool-1.0.0/PKG-INFO +387 -0
  3. fts_tool-1.0.0/README.md +340 -0
  4. fts_tool-1.0.0/pyproject.toml +37 -0
  5. fts_tool-1.0.0/setup.cfg +4 -0
  6. fts_tool-1.0.0/src/__init__.py +0 -0
  7. fts_tool-1.0.0/src/fts/__init__.py +2 -0
  8. fts_tool-1.0.0/src/fts/cli.py +497 -0
  9. fts_tool-1.0.0/src/fts/commands/__init__.py +0 -0
  10. fts_tool-1.0.0/src/fts/commands/chat.py +352 -0
  11. fts_tool-1.0.0/src/fts/commands/misc.py +4 -0
  12. fts_tool-1.0.0/src/fts/commands/sender.py +383 -0
  13. fts_tool-1.0.0/src/fts/commands/server.py +345 -0
  14. fts_tool-1.0.0/src/fts/config.py +30 -0
  15. fts_tool-1.0.0/src/fts/core/__init__.py +0 -0
  16. fts_tool-1.0.0/src/fts/core/aliases.py +210 -0
  17. fts_tool-1.0.0/src/fts/core/defaults.py +60 -0
  18. fts_tool-1.0.0/src/fts/core/detatched.py +186 -0
  19. fts_tool-1.0.0/src/fts/core/log_cleaner.py +211 -0
  20. fts_tool-1.0.0/src/fts/core/logger.py +182 -0
  21. fts_tool-1.0.0/src/fts/core/secure.py +217 -0
  22. fts_tool-1.0.0/src/fts/core/zipper.py +160 -0
  23. fts_tool-1.0.0/src/fts/flags.py +1 -0
  24. fts_tool-1.0.0/src/fts/library/__init__.py +0 -0
  25. fts_tool-1.0.0/src/fts/library/commands.py +193 -0
  26. fts_tool-1.0.0/src/fts/library/discovery.py +210 -0
  27. fts_tool-1.0.0/src/fts/library/map.py +87 -0
  28. fts_tool-1.0.0/src/fts/library/map_manager.py +271 -0
  29. fts_tool-1.0.0/src/fts/library/tree.py +115 -0
  30. fts_tool-1.0.0/src/fts/library/tree_manager.py +169 -0
  31. fts_tool-1.0.0/src/fts/utilities.py +39 -0
  32. fts_tool-1.0.0/src/fts_tool.egg-info/PKG-INFO +387 -0
  33. fts_tool-1.0.0/src/fts_tool.egg-info/SOURCES.txt +35 -0
  34. fts_tool-1.0.0/src/fts_tool.egg-info/dependency_links.txt +1 -0
  35. fts_tool-1.0.0/src/fts_tool.egg-info/entry_points.txt +2 -0
  36. fts_tool-1.0.0/src/fts_tool.egg-info/requires.txt +9 -0
  37. fts_tool-1.0.0/src/fts_tool.egg-info/top_level.txt +2 -0
fts_tool-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Terabase-Studios
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,387 @@
1
+ Metadata-Version: 2.4
2
+ Name: fts-tool
3
+ Version: 1.0.0
4
+ Summary: Peer-to-peer file and directory transfer system
5
+ Author-email: Terabase Studios <terabasestudios@gmail.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2025 Terabase-Studios
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Keywords: file transfer,cli,LAN,chat,fts
29
+ Classifier: Programming Language :: Python :: 3
30
+ Classifier: License :: OSI Approved :: MIT License
31
+ Classifier: Operating System :: Microsoft :: Windows
32
+ Classifier: Topic :: Communications :: File Sharing
33
+ Classifier: Topic :: Utilities
34
+ Requires-Python: >=3.13
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE
37
+ Requires-Dist: aiofiles>=24.1.0
38
+ Requires-Dist: argcomplete>=3.6.2
39
+ Requires-Dist: cryptography>=45.0.7
40
+ Requires-Dist: psutil>=7.0.0
41
+ Requires-Dist: tqdm>=4.67.1
42
+ Requires-Dist: prompt_toolkit>=3.0.52
43
+ Requires-Dist: argparse-interface>=0.2.0
44
+ Requires-Dist: filelock>=3.19.1
45
+ Requires-Dist: psutil>=7.0.0
46
+ Dynamic: license-file
47
+
48
+ # FTS
49
+
50
+ **FTS** (File Transfer System) is a lightweight CLI tool for file transfers, chatrooms, and more.
51
+ It’s designed for fast local-network sharing, simple chat creation, and utility management in a single binary.
52
+
53
+ > \[!CAUTION]
54
+ > FTS should NEVER be run on a public network without permission from the **proper authorities**; there are safeguards in place to prevent fts from running on public networks
55
+
56
+ ---
57
+
58
+ ## Features
59
+
60
+ * Fast local-network file transfers (files or directories)
61
+ * Lightweight chatrooms for easy communication
62
+ * Discover and manage libraries for easy file sharing
63
+ * Aliases and default settings for quick operations
64
+ * Progress bars, rate limiting, and background servers
65
+ * Security via trusted connections and public-network safeguards
66
+
67
+ > [!IMPORTANT]
68
+ > FTS has currently only been tested on Windows. Other operating systems may not be supported.
69
+ ---
70
+
71
+ ## Table of Contents
72
+
73
+ - [Features](#features)
74
+ - [Installation](#installation)
75
+ - [Usage](#usage)
76
+ - [Example use](#example-use)
77
+ - [Project State](#project-state)
78
+ - [Contributing](#contributing)
79
+ - [License](#license)
80
+ - [Commands](#commands)
81
+ - [`open`](#open)
82
+ - [`send`](#send)
83
+ - [`send-dir`](#send-dir)
84
+ - [`close`](#close)
85
+ - [`version`](#version)
86
+ - [`trust`](#trust)
87
+ - [`chat-create`](#chat-create)
88
+ - [`chat-join`](#chat-join)
89
+ - [`library`](#library)
90
+ - [`alias`](#alias)
91
+ - [`defaults`](#defaults)
92
+
93
+ ---
94
+
95
+ ## Installation
96
+
97
+ Install FTS globally using pip:
98
+
99
+ ```bash
100
+ pip install fts-tool
101
+ ````
102
+
103
+ To uninstall:
104
+
105
+ ```bash
106
+ pip uninstall fts-tool
107
+ ```
108
+
109
+ > \[!WARNING]
110
+ > Python must be installed and added to your system PATH to run `fts` from the terminal.
111
+
112
+ ---
113
+
114
+ ## Usage
115
+
116
+ ```bash
117
+ fts [--logfile FILE] [-q] [-v] COMMAND [OPTIONS]
118
+ ```
119
+
120
+ Run `fts -h` to see all global options.
121
+ Each command has its own `-h/--help` flag.
122
+
123
+ > \[!CAUTION]
124
+ > FTS is executed as `fts` in the terminal, but the pip package is named `fts-tool`.
125
+
126
+ ---
127
+
128
+ ## Example Use
129
+
130
+ ```bash
131
+ # Start server
132
+ fts open downloads --progress
133
+
134
+ # Send a file
135
+ fts send C:\Users\Public\Pictures\family_photo.png 192.168.1.42 --progress
136
+ ```
137
+ One computer opens the sever and the other sends the file
138
+
139
+ ---
140
+
141
+ ## Project State
142
+
143
+ FTS development is temporarily slowed but will resume in 2–4 weeks. The project is very much alive.
144
+
145
+ ### Upcoming Features
146
+
147
+ * Address any remaining issues in the current Windows build.
148
+ * Include troubleshooting tips (e.g., firewall or network issues).
149
+ * Support for common Linux systems.
150
+ * Limit FTS usage on public networks instead of disabling it entirely.
151
+ * Improve support for directory aliases in the GUI.
152
+ * Implement file checksums to detect corrupted transfers.
153
+ * Add scheduled or automated file transfers.
154
+ * Enable transfer resuming for interrupted downloads.
155
+ * Allow third-party extensions (e.g., custom compressors, encryption layers, notifications).
156
+
157
+ ---
158
+
159
+ ## Contributing
160
+
161
+ Pull requests are welcome! For major changes, please open an issue first to discuss what you’d like to change.
162
+
163
+ ---
164
+
165
+ ## License
166
+
167
+ [MIT](LICENSE)
168
+
169
+ &#8203;
170
+
171
+ &#8203;
172
+ <hr style="height:10px; border:none; background-color:#333;">
173
+ &#8203;
174
+
175
+ &#8203;
176
+
177
+ ## Commands
178
+
179
+ ### `open`
180
+
181
+ Start a server and listen for incoming transfers.
182
+
183
+ ```bash
184
+ fts open OUTPUT_PATH [OPTIONS]
185
+ ```
186
+
187
+ **Arguments:**
188
+
189
+ * `OUTPUT_PATH` — Directory to save incoming transfers (required)
190
+
191
+ **Options:**
192
+
193
+ * `-d, --detached` — Run server in the background
194
+ * `-l, --limit SIZE` — Transfer rate limit (e.g. `500KB`, `2MB`, `1GB`)
195
+ * `-x, --extract` — Automatically extract transferred archives
196
+ * `--progress` — Show progress bars during operations
197
+ * `-p, --port PORT` — Override port used (0-65535)
198
+ * `--ip ADDR` — Restrict requests to IP or hostname
199
+
200
+ ---
201
+
202
+ ### `send`
203
+
204
+ Send a file to a target host.
205
+
206
+ ```bash
207
+ fts send PATH IP [OPTIONS]
208
+ ```
209
+
210
+ **Arguments:**
211
+
212
+ * `PATH` — File to send (required)
213
+ * `IP` — Target IP or hostname (required)
214
+
215
+ **Options:**
216
+
217
+ * `-n, --name NAME` — Send file under a different name
218
+ * `-p, --port PORT` — Override port used (0-65535)
219
+ * `-l, --limit SIZE` — Transfer rate limit Transfer rate limit (e.g. `500KB`, `2MB`, `1GB`)
220
+ * `--nocompress` — Skip compression (faster, larger transfers)
221
+ * `--progress` — Show progress bars
222
+
223
+ > \[!NOTE]
224
+ > FTS automatically skips compression for files that are already compressed. Enable this option only if FTS still attempts to compress such files.
225
+ ---
226
+
227
+ ### `send-dir`
228
+
229
+ Send a directory recursively.
230
+
231
+ ```bash
232
+ fts send-dir PATH IP [OPTIONS]
233
+ ```
234
+
235
+ **Arguments:**
236
+
237
+ * `PATH` — Directory to send (required)
238
+ * `IP` — Target IP or hostname (required)
239
+
240
+ **Options:**
241
+
242
+ * `-n, --name NAME` — Send directory under a different name
243
+ * `-p, --port PORT` — Override port used (0-65535)
244
+ * `-l, --limit SIZE` — Transfer rate limit Transfer rate limit (e.g. `500KB`, `2MB`, `1GB`)
245
+ * `--pyzip` — Use Python’s built-in compression instead of OS-level compression
246
+ * `--progress` — Show progress bars
247
+
248
+ > [!WARNING]
249
+ > The target directory will rezip after every send request;
250
+ > If this becomes a problem, it is recommended to **pre-zip** directories.
251
+
252
+ ---
253
+
254
+ ### `close`
255
+
256
+ Close a detached server.
257
+
258
+ ```bash
259
+ fts close PROCESS
260
+ ```
261
+
262
+ **Arguments:**
263
+
264
+ * `PROCESS` — One of `all`, `receiving`, or `library`
265
+
266
+ ---
267
+
268
+ ### `version`
269
+
270
+ Displays the FTS version
271
+
272
+ ```bash
273
+ fts version
274
+ ```
275
+
276
+ ---
277
+
278
+ ### `trust`
279
+
280
+ Trust an IP certificate, if a certificate has changed.
281
+
282
+ ```bash
283
+ fts trust IP
284
+ ```
285
+
286
+ **Arguments:**
287
+
288
+ * `IP` — IP address whose certificate should be trusted
289
+
290
+ ---
291
+
292
+ ### `chat-create`
293
+
294
+ Create a new chatroom.
295
+
296
+ ```bash
297
+ fts chat-create NAME [OPTIONS]
298
+ ```
299
+
300
+ **Arguments:**
301
+
302
+ * `NAME` — Your username (required)
303
+
304
+ **Options:**
305
+
306
+ * `-p, --port PORT` — Override port
307
+
308
+ ---
309
+
310
+ ### `chat-join`
311
+
312
+ Join an existing chatroom.
313
+
314
+ ```bash
315
+ fts chat-join NAME IP [OPTIONS]
316
+ ```
317
+
318
+ **Arguments:**
319
+
320
+ * `NAME` — Your username (required)
321
+ * `IP` — IP to join (required)
322
+
323
+ **Options:**
324
+
325
+ * `-p, --port PORT` — Override port
326
+
327
+ ---
328
+
329
+ ### `library`
330
+
331
+ Download and manage local file directories.
332
+
333
+ ```bash
334
+ fts library TASK [OPTIONS]
335
+ ```
336
+
337
+ **Arguments:**
338
+
339
+ * `TASK` — One of `find`, `open`, `manage`
340
+ * `OUTPUT_PATH` — Directory for incoming transfers (required for `find`)
341
+
342
+ **Options:**
343
+
344
+ * `-d, --detached` — Run library server in the background (`open` only)
345
+
346
+ > [!TIP]
347
+ > The find command will automatically find open libraries on your local network
348
+
349
+ ---
350
+
351
+ ### `alias`
352
+
353
+ Manage aliases.
354
+
355
+ ```bash
356
+ fts alias ACTION [ARGS]
357
+ ```
358
+
359
+ **Arguments:**
360
+
361
+ * `ACTION` — One of `add`, `remove`, `list`
362
+ * `NAME` — Alias name (required for `add/remove`)
363
+ * `VALUE` — Alias value (required for `add`)
364
+ * `TYPE` — One of `ip` or `dir` (required for `add`)
365
+
366
+ > [!NOTE]
367
+ > Directory aliases are not supported when selecting commands in the gui
368
+
369
+ ---
370
+
371
+ ### `defaults`
372
+
373
+ Manage default settings.
374
+
375
+
376
+ ```bash
377
+ fts defaults [OUTPUT_PATH]
378
+ ```
379
+
380
+ **Arguments:**
381
+
382
+ * `OUTPUT_PATH` — Directory to save incoming transfers
383
+
384
+ > [!NOTE]
385
+ > Saved defaults exist even if they don’t appear in the GUI. Leaving the argument blank will use your default values.
386
+
387
+ ---