You can use hooks in SolusVM 2 to automatically run custom scripts before or after specific events take place. Hooks should be set under this directory: /usr/local/solus/hooks/, they can be written using Bash, PHP, Python or else.

Basically what it does is whenever there is an event it sends in stdin a json snap with the event and the action (e.g.: new installation, os reinstall, restart, etc) to all files under the hooks’ folder.
Example of JSON code:
{  "action": "server-restart",  "stage": "pre",  "data": {    "uuid": "915b5ca2-ff02-45ab-ba73-2e90793e6819",    "virtualization_type": "vz"  }}

Continue reading

مع كوننا في عصر الرقمنة، فإننا نشهد غياب نماذج رقمية متاحة على مختلف المنصات ولمختلف الفئات للتدرب على الإملاء العربي وتجاوز الأخطاء الشائعة عند الكتابة. وهو مشكل لا يختص بالصغار وإنما يتعدى للكبار خاصة مع انتشار الأخطاء الإملائية عبر وسائل التواصل النصية الحديثة. وإلى جانب ذلك فإن متعلمي العربية من غير الناطقين بها وأصحاب الهمم والبصيرة من المكفوفين مستخدمي قارئ الشاشة، لا يجدون وسائل كافية للتدرب وتحسين إملائهم.

يضاف إلى ذلك: قلة إقبال أو استصعاب شريحة كبيرة من مستخدمي ومتعلمي العربية الرجوع إلى المراجع اللغوية الضابطة للإملاء واستثقالهم للتعليم المباشر لقواعد الإملاء.


Continue reading

Any service that is exposed to the network is a potential target, and SSH being so widely deployed across the internet means that it represents a very predictable attack surface or attack vector through which people can try to gain access.

If you review the logs for your SSH service running on any widely trafficked server, you will often see repeated, systematic login attempts that represent brute force attacks by users and bots alike.

tail /var/log/auth.log
Continue reading

When some users switch to a new email naming policy, they may need to duplicate email content. This process can be very demanding in terms of inodes and memory space.

In my experience, one client had over a hundred addresses. They needed to retain the old email addresses while maintaining a complete history of previous emails and setting up forwarding.

The transitions were as follows:

We use Maildir, and to avoid content redundancy. I wrote a basic script with the understanding that mail operations won’t alter the original emails. As the user can only:

  • Remove the email message, which will result in the removal of the symlink.
  • Or move the email message from one directory to another (e.g., Inbox => Archive, or Trash); which will be interpreted as moving the symbolic link to the directories .archives/cur or .trash/. Since we use full paths to describe the links, this won’t cause any issues and won’t alter the original files.

I have also excluded some maildir system files from being linked, starting usually with dovecot* or maildir*.

The script usage is straightforward:

./ mycpuser [email protected] [email protected]
Continue reading

Many companies primarily use webmails and adhere to specific standards for email format, footer, and font. And while custom fonts can be utilized in local email clients (such as Outlook or ThunderBird), open webmail services predominantly support web-safe fonts. These are fonts that are available across the different web platforms and remain consistent with the original font. Besides this, there might be some variations in their support for other common fonts, such as Times New Roman.

Continue reading

After experiencing an international peering issue that affected some websites for a few hours, we deployed a new experimental service for web hosting named AlwaysUp. This free and optional service can be activated by the customers to ensure their websites will always be accessible. It’s particularly useful for websites that require high read-only availability, such as blogs, magazines, and newspapers. These sites may not be ready to invest in an expensive infrastructure/architecture or in an full-cache CDN, but they can tolerate not being able to edit their content in the event of a failure.

When the service is up, the requests are handled with RR DNS to either the master or the failover, which are geographically distant from each other. The failover proxies the requests to the master and caches them if they don’t include cookies. In case of a failure in reaching the service, the DNS will direct the requests to the failover, which has already cached most of the active pages.

شاركنا قبل أسبوعين في برمجان التطبيقات القرآنية، كوننا نعمل على مشاريع في هذا المجال، وهو تحدٍ استمر لنحو يومين وكان يجب فيها العمل على فكرة محددة تخدم مساقات معينة هي التلعيب والذكاء الاصطناعي وإنترنت الأشياء والواقع الممتد. وينبغي تطوير نموذج تجريبي لها.

Continue reading

King Fahd’s Complex (KFGQPC) has made significant contributions to Quranic fonts. One such example is Warsh’s font, which adheres to the traditional Maghrebi style. This style incorporates:
– Maghrebi calligraphy (الخط) and dotting systems (الإعجام)
– As well as Warsh’s orthography, and diacritics (الضبط).


Continue reading

One of our clients uses a SPIP website and began to lose pages from Google’s index. The Google Search Console reported 500 errors on many of the pages, but the pages were visible to users. When investigating the logs or simulating a Googlebot browser-agent, I found that SPIP was sending HTTP error 429 (too many requests) to Googlebot and other search engine crawlers. This was because SPIP uses the server load average function to determine if it should allow bots’ crawling, however shared hosting providers have usually ultra performant CPUs with a high load value.

Continue reading