دليل الاستخدام

← Home

بداية سريعة

# إرسال ملف — يتم إنشاء كلمة المرور تلقائيًا، ويُطبع الرابط + كلمة المرور
$ ttl send secret.pdf
No password provided. Generate one? [Y/n]:
Generated password: aB3kL9mX
·✧★◉ Thank goodness, secret.pdf is in orbit (1.2 MB)
IMPORTANT! Save your password — required to download and decrypt the file.
Password: aB3kL9mX
https://ttl.space/aBcDeFgHiJ

# تنزيل — يُطلب إدخال كلمة المرور بشكل تفاعلي
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

يتولى سطر الأوامر التشفير والرفع والتنزيل وفك التشفير. لا يرى الخادم كلمة مرورك أو بياناتك النصية مطلقًا.

التثبيت

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl
$ scoop install ttl

ملف ثنائي جاهز

# قم بالتنزيل لمنصتك من صفحة الإصدارات
$ curl -Lo ttl.tar.gz \
  https://github.com/tweenietomatoes/ttl/releases/latest/download/ttl_linux_amd64.tar.gz
$ tar xzf ttl.tar.gz && sudo mv ttl /usr/local/bin/

Go install

$ go install github.com/tweenietomatoes/ttl/cmd/ttl@latest

من الشيفرة المصدرية

$ git clone https://github.com/tweenietomatoes/ttl
$ cd ttl && go build -o ttl ./cmd/ttl/
$ sudo mv ttl /usr/local/bin/

التحقق

$ ttl version
ttl v1.3.0

إرسال الملفات

إرسال أساسي

# إنشاء كلمة مرور تلقائيًا، مدة صلاحية افتراضية 7 أيام
$ ttl send report.xlsx

عند عدم تحديد كلمة مرور في الطرفية، يسأل سطر الأوامر:

No password provided. Generate one? [Y/n]:

اضغط Enter أو اكتب y للإنشاء التلقائي.

كلمة مرور مخصصة

$ ttl send -p mySecretPass -t 1h document.pdf

حذف بعد القراءة

# يُحذف الملف نهائيًا بعد أول تنزيل
$ ttl send -b photo.jpg

مدة صلاحية مخصصة

$ ttl send -t 5m temp-credentials.txt   # تنتهي خلال 5 دقائق
$ ttl send -t 30m meeting-link.txt      # تنتهي خلال 30 دقيقة
$ ttl send -t 6h backup.tar.gz          # تنتهي خلال 6 ساعات
$ ttl send -t 1d daily-report.pdf       # تنتهي خلال يوم واحد
$ ttl send -t 3d project-archive.zip    # تنتهي خلال 3 أيام
$ ttl send -t 5d design-assets.zip      # تنتهي خلال 5 أيام
$ ttl send report.xlsx                  # تنتهي خلال 7 أيام (افتراضي)

تنزيل الملفات

تفاعلي (طرفية)

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

تُقرأ كلمة المرور بشكل آمن — لا تظهر في الطرفية. يُحفظ اسم الملف الأصلي.

الرمز فقط

# يمكنك استخدام الرمز المكون من 10 أحرف فقط بدلاً من الرابط الكامل
$ ttl get aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

دليل الإخراج

$ ttl get -o ~/Downloads aBcDeFgHiJ

بشكل افتراضي، يتم حفظ الملفات في الدليل الحالي. استخدم -o / --output لتحديد دليل مختلف.

باستخدام علم كلمة المرور

$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ

المتصفح

يمكنك أيضًا تنزيل الملفات وفك تشفيرها في متصفحك عن طريق زيارة الرابط مباشرةً. تستخدم واجهة الويب نفس مكتبة التشفير وتطلب كلمة المرور. لا حاجة لتثبيت برامج.

إدارة كلمة المرور

كلمة المرور هي أساس مفتاح التشفير. لا تغادر جهازك أبدًا ولا تُرسل إلى الخادم مطلقًا. هناك خمس طرق لتوفيرها:

1. إنشاء تلقائي (للإرسال فقط)

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: y
Generated password: aB3kL9mX

يُنشئ كلمة مرور عشوائية تشفيريًا من 8 أحرف من مجموعة [0-9A-Za-z]. متاح فقط أثناء send في الطرفية.

2. المطالبة التفاعلية

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: n
Enter password: ********
Confirm password: ********

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********

لا تُعرض كلمة المرور ولا تُحفظ في سجل الصدفة. أثناء send يُعرض خيار الإنشاء التلقائي أولاً. أثناء get يُطلب الإدخال مباشرة.

3. العلم: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password تظهر في مخرجات ps aux وقد تُحفظ في سجل الصدفة (~/.bash_history). تجنب استخدامها في البيئات المشتركة والنصوص البرمجية. استخدم --password-stdin أو --password-file بدلاً من ذلك.

4. الإدخال القياسي: --password-stdin

# التمرير عبر echo
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# التمرير من مدير كلمات المرور
$ pass show ttl/key | ttl send --password-stdin data.zip

# التمرير من متغير بيئة
$ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ

# heredoc
$ ttl send --password-stdin report.pdf <<<"mySecretPass"

يقرأ السطر الأول من الإدخال القياسي. مفيد في النصوص البرمجية وخطوط أنابيب CI/CD والأتمتة. عندما لا يكون الإدخال القياسي طرفية ولم يُحدد مصدر لكلمة المرور، يخرج سطر الأوامر بخطأ (إلا عند استخدام --json، الذي يُنشئ كلمة مرور تلقائيًا).

5. ملف: --password-file

$ ttl send --password-file /run/secrets/key report.xlsx
$ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ

يقرأ السطر الأول من الملف (يُزال حرف السطر الجديد اللاحق). متوافق مع أسرار Docker (/run/secrets/) وملفات وكيل Vault والأنماط المشابهة.

6. ملف مكتشف تلقائياً: ttl.password

إذا لم يتم تقديم كلمة مرور صريحة، يبحث CLI عن ملف ttl.password بجوار البرنامج، ثم ~/.ttl/password. يُستخدم السطر الأول ككلمة مرور.

يمكن استخدام مصدر كلمة مرور صريح واحد فقط في كل مرة. لا يمكن الجمع بين -p / --password و--password-stdin و--password-file. يتم فحص ملف ttl.password المكتشف تلقائياً فقط عند عدم تقديم أي منها. الحد الأدنى للطول: ٨ أحرف.

مرجع الخيارات

أعلام الإرسال

العلمالوصفالافتراضي
-p, --password Pكلمة مرور التشفيرتفاعلي
--password-stdinقراءة كلمة المرور من الإدخال القياسي
--password-file Fقراءة كلمة المرور من ملف
-t, --ttl مدةمدة الصلاحية7d
-b, --burnحذف بعد القراءة (تنزيل واحد)معطّل
--timeout مدةمهلة النقلتلقائي
--server URLعنوان الخادمhttps://ttl.space
-h3, --http3تجربة HTTP/3 (QUIC)، الرجوع إلى TCPمعطّل
--jsonإخراج JSON إلى stdout (للنصوص البرمجية ووكلاء الذكاء الاصطناعي)إيقاف

أعلام التنزيل

العلمالوصفالافتراضي
-p, --password Pكلمة مرور فك التشفيرتفاعلي
--password-stdinقراءة كلمة المرور من الإدخال القياسي
--password-file Fقراءة كلمة المرور من ملف
-o, --output DIRدليل الإخراجالدليل الحالي
--timeout مدةمهلة النقلتلقائي
-h3, --http3تجربة HTTP/3 (QUIC)، الرجوع إلى TCPمعطّل
--jsonإخراج JSON إلى stdout (للنصوص البرمجية ووكلاء الذكاء الاصطناعي)إيقاف

قيم مدة الصلاحية

مجاني: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d

Orbit يضيف: 14d 15d 28d 30d

المهلة

الافتراضي: تلقائي — يُقدّر من حجم الملف بافتراض 1 ميغابت/ثانية + هامش دقيقتين (5 دقائق كحد أدنى). يمكن تجاوزه بـ --timeout 10m أو --timeout 1h.

أمثلة

نص برمجي: نسخ احتياطي ورفع

#!/bin/bash
tar czf /tmp/backup.tar.gz /data
echo "$BACKUP_KEY" | ttl send --password-stdin -t 6h /tmp/backup.tar.gz
rm /tmp/backup.tar.gz

نسخ الرابط إلى الحافظة (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

نسخ الرابط إلى الحافظة (Linux)

$ ttl send -p mypass123 file.pdf | xclip -sel clip

حذف بعد القراءة: سر لمرة واحدة

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# الرابط يعمل مرة واحدة فقط، وتنتهي صلاحيته خلال 5 دقائق

وضع JSON (النصوص البرمجية & وكلاء الذكاء الاصطناعي)

# إرسال — يتم إنشاء كلمة المرور تلقائياً في وضع JSON
$ ttl --json send report.pdf
{"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"}

# تنزيل
$ ttl --json get -p aB3kL9mX xK9mQ2vLpA
{"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"}

# الأخطاء تعيد ok:false
{"ok":false,"error":"Link not found"}

في وضع --json، تكون جميع المخرجات JSON منظم على stdout. إذا لم يتم تقديم كلمة مرور أثناء الإرسال، يتم إنشاء واحدة تلقائياً وتضمينها في الاستجابة. رمز الخروج هو 0 عند النجاح و1 عند الخطأ.

خطة Orbit

Orbit يفتح ملفات أكبر (١٠ جيجابايت)، واحتفاظ أطول (٣٠ يوماً)، وإدارة الملفات (القائمة والحذف).

يتم اكتشاف مفتاح API تلقائياً: متغير البيئة TTL_API_KEY، ttl.key بجوار البرنامج أو ~/.ttl/key. استخدم ttl activate لحفظ المفتاح أو اكتبه يدوياً في أي من هذه المواقع.

# تفعيل المفتاح
$ ttl activate ttl_orbit_aBcDeFgHiJ...
Orbit plan activated. Key saved to /usr/local/bin/ttl.key

# التحقق من الخطة والاستخدام
$ ttl plan
Plan: orbit
Max file size: 10.0 GB
Max TTL: 30 days
Uploads per day: Unlimited

Usage:
  Uploads today: 3
  Active storage: 1.2 GB / 250.0 GB

# الإرسال مع TTL ممتد
$ ttl send -t 30d large-backup.tar.gz

# عرض التحميلات الأخيرة
$ ttl list
  xK9mQ2vLpA    4.2 MB  2026-03-16 10:30 → 2026-04-15 10:30  [active]
  https://ttl.space/xK9mQ2vLpA
  rT7bNw3KpF  912.0 KB  2026-03-15 14:20 → 2026-03-17 14:20  [active (burn)]
  https://ttl.space/rT7bNw3KpF

# حذف ملف
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# إزالة المفتاح المحفوظ
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

HTTP API

يتطلب التحميل والتنزيل خط أنابيب التشفير الخاص بـ CLI (Argon2id + XChaCha20-Poly1305 + AEAD كتلي). للنصوص البرمجية، استخدم ttl send / ttl get أو وضع --json. نقاط النهاية أدناه لإدارة ملفات Orbit.

قائمة الملفات (Orbit)

$ curl https://ttl.space/v1/files -H "X-API-Key: ttl_orbit_..."
{"files":[{"token":"xK9mQ2vLpA","link":"https://ttl.space/xK9mQ2vLpA","size_bytes":1048576,"created_at":1711800600,"expires_at":1714392600,"burn":false,"expired":false}]}

يُرجع جميع الملفات المحمّلة بهذا المفتاح. يتطلب خطة Orbit.

حذف ملف (Orbit)

$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."

يُرجع 204 No Content عند النجاح. يتطلب خطة Orbit. يجب أن ينتمي الملف لهذا المفتاح.

استجابات الخطأ

الحالةالمعنى
401مفتاح API غير صالح أو منتهي الصلاحية
403الميزة تتطلب خطة Orbit
404الملف غير موجود أو لا ينتمي لهذا المفتاح
429تم تجاوز حد الطلبات

الحدود

القيدمجانيOrbit
الحد الأقصى لحجم الملف٢ جيجابايت١٠ جيجابايت
الحد الأقصى لـ TTL٧ أيام٣٠ يوماً
التحميلات يومياً١٠٥٠
حصة التخزين١٠٠ جيجابايت
القائمة والحذف
الحد الأدنى لطول كلمة المرور٨ أحرف
الطلبات لكل IP٣٠ لكل ١٠ ثوانٍ
الاتصالات لكل IP١٠ متزامنة

التشفير

تُشفّر الملفات على جهازك قبل الرفع. يخزّن الخادم النص المشفر فقط ولا يمكنه فك تشفير ملفاتك.

المكوّنالخوارزمية / القيمة
اشتقاق المفتاحArgon2id (time=3, memory=64 MB, parallelism=1)
التشفيرXChaCha20-Poly1305 AEAD

أي تعديل على النص المشفر يتسبب في فشل فك التشفير. يتحقق الخادم من أن المُنزِّل يعرف كلمة المرور الصحيحة قبل إصدار النص المشفر، باستخدام رمز أحادي الاتجاه مشتق من مفتاح التشفير.