اطلاعرسان
اطلاعرسان (Nexora Notif) افزونهٔ رسمیای است که به کاربرهای پنل شما دربارهٔ حسابشان خبر میدهد: نزدیک شدن تاریخ انقضا، رو به اتمام بودن ترافیک، تمدید، افزایش ترافیک، و پیامهای خودتان به یک کاربر یا یک گروه. از راه تلگرام، بله، سروشپلاس، روبیکا، پیامک، ایمیل، ntfy یا هر API مبتنی بر HTTP میفرستد. این صفحه نصب، پیامرسانها، اینکه چه چیزی و کی فرستاده میشود، و پیامهای خودتان را توضیح میدهد.
هر اعلان، یک تحویل
هر اعلان یک بار نوشته میشود و به ترتیبی که تعیین کردهاید به پیامرسانهای کاربر سپرده میشود. پیامرسان بعدی فقط وقتی امتحان میشود که قبلی نتوانسته برساند: کاربر آنجا نشانی ندارد، پیامرسان رد کرده (رباتی که بلاک شده، شمارهای که وجود ندارد)، یا سه بار شکست خورده است. پیامک پولی فقط وقتی میرود که پیامرسانهای رایگان به کاربر نرسیدهاند، و هیچکس یک اعلان را دو بار نمیگیرد.
اطلاعرسان پنل را با یک توکن محدود میخواند و رویدادهای امضاشدهٔ پنل را میشنود. اتصالهای پیامرسان هر کاربر را در اطلاعات تماس حسابش روی پنل نگه میدارد (telegram_id، bale_id، soroush_id، rubika_id)، جایی که افزونههای دیگر و صفحهٔ کاربران هم آنها را میبینند.
نصب
در پنل: افزونهها ← مرور ← Nexora Notif ← نصب. پنل سؤالهایش را میپرسد و آن را روی سرور خودش یا با SSH روی سرور دیگری نصب میکند، یا دستوری برای اجرا به شما میدهد. همهٔ راههای نصب در دایرکتوری افزونهها آمده است.
| سؤال | چه چیزی را تعیین میکند |
|---|---|
| پورت | به طور پیشفرض 8097. با HTTPS روشن، تنها پورت اطلاعرسان. |
| پایگاه داده | SQLite، یا PostgreSQL با رشتهٔ اتصالش. |
| اولین مدیر | یک نام و یک گذرواژه از ۱۰ نویسه تا ۷۲ بایت. |
| مسیر مدیریت | هر چه اطلاعرسان سرو میکند زیر آن است. تصادفی انتخاب میشود؛ خالی آن را در ریشه میگذارد. |
| آدرس عمومی | جایی که اطلاعرسان را باز میکنید: پروتکل، میزبان و پورت. |
| HTTPS | panel (پیشفرض فرم پنل)، acme، acme-http، self-signed یا off، مثل همهٔ افزونهها (دایرکتوری افزونهها). |
دستی، روی یک سرور لینوکس با root:
sh install.sh --method docker --opt port=8097 --opt admin_password=… \
--panel-url https://panel.example.com --claim-code …--method script به جای Docker باینری را زیر systemd اجرا میکند. اجرای دوبارهٔ همین دستور درجا بهروز میکند؛ --uninstall آن را حذف میکند، و --purge دادههایش را هم پاک میکند.
وقتی اطلاعرسان را تأیید میکنید، دو چیز میخواهد: خواندن حسابها، و نوشتن اتصالهای پیامرسان در اطلاعات تماسشان.
راهاندازی
در آدرس عمومی همراه با مسیر مدیریت وارد شوید، https://<host>:<port>/<path>/. ریشهٔ آدرس هیچ جوابی نمیدهد. راهاندازی چکلیستی از کارهای خود اطلاعرسان است: ورود دومرحلهای، اولین پیامرسان، پشتیبانها. آنچه نصب پنل نادرست گذاشته را هم علامت میزند: آدرسی که نیست یا HTTP ساده است، ثبت در پنل، یا گذرواژهای که هنوز همان گذرواژهٔ نصب است و به صورت متن ساده در .env آن میماند. اول همین گذرواژه را عوض کنید.
گذرواژهٔ گمشده روی سرور بازنشانی میشود:
notif admin reset-password -user admin -pass …پیامرسانها
پیامرسانها پیامرسانهای شما را به ترتیب جایگزینی فهرست میکند. با فلشها جابهجایشان کنید، و یکی را بدون حذف خاموش کنید. هر کدام ارسال امروز و این ماهش را نشان میدهد. آزمایش یک اعلان آزمایشی به یک حساب با نامش میفرستد.
تلگرام، بله و سروشپلاس
هر سه از یک نوع ربات استفاده میکنند. با BotFather هر پیامرسان یک ربات بسازید و توکنش را بچسبانید.
به اطلاعرسان رباتهای مخصوص خودش را بدهید
بهروزرسانیهای یک ربات را فقط یک برنامه میتواند بخواند. توکنی را که فروشگاه یا ابزار دیگری از قبل استفاده میکند نمیشود مشترک کرد؛ اگر چنین باشد، پیامرسان خودش این را میگوید.
- تلگرام: جایی که سرورتان به API تلگرام نمیرسد، یک پروکسی (
socks5://host:port) یا یک آینهٔ Bot API را به عنوان نشانی API بگذارید. پروکسیای که روی همین سرور، میزبان Docker یا شبکهٔ محلیتان است باید هنگام نصب زیر پراکسیهای مجاز ربات نام برده شود. - بله: بله رباتی را که به کاربرانی پیام میدهد که با آن گفتگو نمیکنند کند میکند. API کسبوکار پولی بله برای اعلان ساخته شده است؛ وقتی حساب کسبوکار بلهتان شارژ شد، آن را در پیامرسان روشن کنید.
- سروشپلاس: مثل تلگرام کار میکند، با نشانی API خودش.
روبیکا
روبیکا API ربات خودش را دارد که اطلاعرسان با آن کار میکند. API آن ممکن است سرورهای بیرون از ایران را رد کند: به پیامرسان یک پروکسی داخل ایران بدهید، یا نشانی یک واسط در آنجا.
وصل کردن کاربرها به ربات
ربات فقط به کسی میتواند پیام بدهد که آن را استارت کرده باشد. کاربر با فرستادن لینک اشتراکش به ربات، یا کد اتصالی که در صفحهٔ او زیر حسابها پیدا میکنید، حسابش را وصل میکند. برای تلگرام همان صفحه لینکی هم میدهد که کد را همراه دارد، پس با یک لمس وصل میشود.
- شناسهٔ گفتگو در اطلاعات تماس حساب نوشته میشود، و اگر اطلاعات تماس زبانی نداشته باشد، زبان پیامرسان کاربر هم.
/stopاتصال را قطع میکند. کاربری که ربات را بلاک کند خودکار قطع میشود، و اعلانهایش به پیامرسان بعدی میرود.- پنج تلاش اشتباه در ده دقیقه یک گفتگو را برای مدتی قفل میکند.
پیامک
کاوهنگار و فراز اساماس داخلیاند. هر دو با یک الگوی تأییدشده روی خط خدماتی میفرستند، که به شمارههایی هم میرسد که پیامک تبلیغاتی را بستهاند. الگو را در پنل سرویسدهنده بنویسید و تأییدش را بگیرید، بعد به اطلاعرسان بگویید هر متغیر آن چه چیزی را میبرد، هر خط یکی، مثل token={name}. برای فراز اساماس، طول هر متغیر در الگو را هم بدهید (name=20)؛ اطلاعرسان هر مقدار را به همان طول کوتاه میکند، چون فراز پیام بلندتر را برای بازبینی دستی نگه میدارد و با این حال «ارسال شد» جواب میدهد.
شماره تلفن از phone در اطلاعات تماس میآید، به هر شکلی که اپراتور تایپش کند. سرویسدهندههای دیگر پیامک از راه پیامرسان عمومی HTTP پایینتر کار میکنند.
ایمیل
هر سرور SMTP: میزبان، پورت (۵۸۷ با STARTTLS، ۴۶۵ با TLS)، کاربر، گذرواژه و فرستنده. نامه متن ساده است. نشانی از email در اطلاعات تماس میآید.
از دامنهٔ خودتان بفرستید
برای دامنهٔ فرستنده SPF، DKIM و DMARC تنظیم کنید. QQ Mail، 163، Mail.ru، Yandex و Gmail نامهای را که نتوانند بررسی کنند رد میکنند یا به هرزنامه میبرند.
ntfy
ntfy یک اپ اعلان است که کاربرها خودشان نصب میکنند. ntfy را برای کاربر در صفحهٔ او زیر حسابها روشن کنید: اطلاعرسان موضوعی میسازد که هیچکس نمیتواند حدس بزند، آن را در اطلاعات تماس به نام ntfy نگه میدارد، و نشانیای را که باید به کاربر بدهید نشان میدهد. هر کسی که نشانی را بداند میتواند آن را بخواند، پس فقط به همان کاربر بدهید. روی گوشیهای اندرویدی بدون سرویسهای گوگل، کاربر instant delivery را در اپ روشن میکند.
پیامرسان عمومی HTTP
هر سرویسدهندهای که API از نوع HTTP دارد: یک نشانی، یک روش، هدرها و یک بدنه، هر کدام قالبی روی اعلان، و فیلدی از اطلاعات تماس که نشانی کاربر در آن سرویس است (phone، یا کلیدی از خودتان مثل vk_id). کلید سرویسدهنده در رمز میرود و هرگز در گزارش نمیآید. بدنه JSON، فرم یا هیچ است؛ احراز هویت HTTP Basic هست، یک الگوی موفقیت برای سرویسدهندههایی که به شکست هم 200 جواب میدهند، و یک گواهی CA برای سرویسدهندهٔ خصوصی.
قالبها میتوانند از متن و عنوان اعلان، نشانی و نام کاربر، رمز، یک شناسهٔ مخصوص هر اعلان و متغیرهای اعلان استفاده کنند، با تابعهایی که شماره تلفن را به شکل بینالمللی یا محلی قالببندی میکنند.
قالبهای آماده همه چیز را برای SMS.ru، SMSC، SMS Aero، MTS Exolve، VK، LINE، Matrix و Pushover پر میکنند؛ آنچه با حروف بزرگ نوشته شده را عوض کنید. واتساپ از راه واسطهای که خودتان انتخاب میکنید روی همین پیامرسان در دسترس است.
نشانیهایی که اطلاعرسان رد میکند
نشانی هر پیامرسان (و پروکسی یک ربات) باید روی اینترنت عمومی باشد. برای واسط یا سروری از خودتان روی شبکهٔ خصوصی (LAN، WireGuard، Tailscale، کانتینری کنار اطلاعرسان)، نشانی روی شبکهٔ خودم را در پیامرسان روشن کنید. سرور خود اطلاعرسان و سرویس متادیتای ابر حتی در این حالت هم رد میشوند؛ به جای آن یک واسط محلی روی دستگاه دیگری از شبکهتان اجرا کنید. زیر Docker، با روشن بودن این گزینه، میزبان در host.docker.internal در دسترس است.
اعلانها
اعلانها زمانبندی شما را دارد، یعنی روزهای پیش از انقضا (مثلاً 5, 1) و سهمهایی از ترافیک (مثلاً 80, 95) که کاربر در آنها خبر میگیرد، و همهٔ انواع اعلان را، هر کدام روشن یا خاموش:
| کی | اعلانها |
|---|---|
| طبق زمانبندی شما | نزدیک شدن انقضا، رو به اتمام بودن ترافیک. هر کدام یک بار گفته میشود و با تمدید حساب، افزایش ترافیک یا شروع دورهٔ تازه دوباره فعال میشود. |
| وقتی پنل خبر میدهد | تمدید، انقضا، تمام شدن ترافیک، ساخت حساب (با لینک اشتراک)، تمام شدن سهمیهٔ نماینده، روشن شدن دوباره، شروع پلن، افزوده شدن اشتراک، سقف دستگاه، حذف. |
| وقتی مدیری حساب را تغییر میدهد | افزایش ترافیک، جابهجایی تاریخ، صفر شدن مصرف، خاموش یا روشن شدن دستی. اینها یک دقیقه و نیم صبر میکنند؛ اگر تغییر یک تمدید بوده باشد، اعلان تمدید جایشان را میگیرد. |
متنها متن هر اعلان را برای هر زبان باز میکند و، وقتی یک پیامرسان متن دیگری لازم دارد، مثلاً پیامک کوتاه، برای هر نوع پیامرسان. فیلدی که خالی بماند پیشفرض را نگه میدارد. برای افزودن یک متغیر روی آن بزنید: {name}، {expiry}، {days}، {traffic_total}، {traffic_used}، {traffic_left}، {percent}، {added}، {sub_url}، {group}. پیشنمایش متن را برای یک حساب نمونه نشان میدهد.
زبان کاربر lang در اطلاعات تماس اوست (fa، en، ru یا zh)، و اگر نباشد زبانی که زیر تنظیمات تعیین کردهاید. تاریخها برای فارسی به طور پیشفرض شمسیاند، یا یک تقویم برای همه زیر تاریخها. ساعت سکوت زیر تنظیمات اعلان را تا پایانش نگه میدارد؛ هیچ چیزی دور ریخته نمیشود، و اعلانی که فوری علامت خورده از آن میگذرد.
پیامها
پیامها به یک یا چند حساب پیام میدهد، یا به گروهی که فیلترهای خود پنل انتخاب میکنند: گروه، وضعیت، انقضا تا چند روز، ترافیک مصرفشده، صاحب، قالب، نود، جستوجو.
- شمارش نشان میدهد چند حساب پیدا شد، هر کدام با کدام پیامرسان میرود، چندتا پیامک است و به چندتا هیچ پیامرسانی نمیرسد، همراه با متن پیام آنطور که اولین حساب میخواند.
- ارسال یک بار دیگر، با ذکر تعداد پیامک، تأیید میگیرد.
- پیام در پسزمینه با سرعت مجاز پیامرسانها میرود. آنچه هنوز نرفته قابل لغو است. گزارش میگوید چه چیزی فرستاده شد، از کدام پیامرسان، و چه چیزی شکست خورد.
صفحهٔ هر حساب پیامهایی را که برایش فرستاده شده فهرست میکند.
انتخاب ترتیب پیامرسانها
| کشور | به کاربری با VPN روشن میرسد | به کاربری با VPN خاموش میرسد |
|---|---|---|
| ایران | تلگرام، همهٔ پیامرسانهای دیگر | بله، سروشپلاس، روبیکا، پیامک، ایمیل |
| روسیه | تلگرام، ایمیل، ntfy | ایمیل (Mail.ru و Yandex در حالت فهرست سفید موبایل باز میمانند)؛ پیامک برای اپراتوری که شخصیت حقوقی روسی دارد |
| چین | تلگرام، ntfy، ایمیل | ایمیل (QQ Mail، 163) |
ترتیب خوب، پیامرسان رایگانی را که کاربرها میخوانند اول میگذارد و پیامک یا ایمیل را آخر: در ایران، تلگرام، بعد بله، بعد پیامک؛ در روسیه و چین، تلگرام، بعد ntfy، بعد ایمیل. اعلانها را دربارهٔ حساب نگه دارید: متنهای پیشفرض هیچ قیمت، پیشنهاد یا کلمهٔ VPN ندارند، که جایی که تبلیغ راههای دور زدن فیلتر جریمه دارد و جایی که سرویسدهندههای پیامک آن را ممنوع میکنند مهم است.
گزارش، حریم خصوصی و پشتیبان
گزارش ارسال هر تحویل را با تلاش هر پیامرسان و جوابش فهرست میکند. تحویلهای تمامشده همراه متنشان بعد از روزهایی که زیر تنظیمات تعیین شده (پیشفرض ۹۰) پاک میشوند. اطلاعرسان نسخهای از نام، اطلاعات تماس، انقضا و ترافیک هر حساب را برای تصمیمگیری و نوشتن اعلانها نگه میدارد؛ بخش محرمانهٔ لینک اشتراک فقط به صورت هش نگه داشته میشود.
روی SQLite، اطلاعرسان روزی یک بار پایگاه دادهاش را در <data>/backups کپی میکند و هفت نسخه نگه میدارد. دستی: notif backup -o notif.db، و با اطلاعرسان متوقفشده، notif restore -i notif.db. روی PostgreSQL، با pg_dump از پایگاه داده پشتیبان بگیرید.
وقتی چیزی درست نیست
| آنچه میبینید | معنیاش |
|---|---|
| پیامرسان ربات میگوید برنامهٔ دیگری بهروزرسانیهایش را میخواند | توکن جای دیگری (فروشگاه، یک وبهوک) استفاده میشود. به اطلاعرسان ربات مخصوص خودش را بدهید. |
| بینشانی در گزارش | کاربر در اطلاعات تماسش چیزی برای آن پیامرسان ندارد؛ اعلان به پیامرسان بعدی میرود. |
| هیچ پیامرسانی به کاربر نرسید | همهٔ پیامرسانها امتحان شدند؛ تلاشهای ثبتشده در گزارش میگویند هر کدام چرا شکست خورد. |
| برای یک حساب چیزی در صف نیست | هیچ پیامرسان روشنی نشانیای برای آن ندارد. یک ربات وصل کنید، یا تلفن یا ایمیلی به اطلاعات تماس اضافه کنید. |
| نشانی عمومی نیست برای یک پیامرسان | نشانیاش روی همین سرور یا یک شبکهٔ خصوصی است. نشانیهایی که اطلاعرسان رد میکند را ببینید. |
| نامعلوم در گزارش | سرویسدهنده درخواست را گرفت و جوابش گم شد. ممکن است فرستاده شده باشد، پس دوباره فرستاده نمیشود. |
اگر فروشگاه را هم اجرا میکنید، یادآوریهای حساب خود فروشگاه را خاموش کنید تا مشتریها یک اعلان را دو بار نشنوند.
