هک‌ها و تشعشعات وجدان آزاد

نوشته‌های سیدمحمدمسعود صدرنژاد

ابزار کاربر

ابزار سایت


مدیاویکی

اکستنشن PDFHandler

شرح مسئله

اگر می‌خواهید فایل‌های پی‌دی‌اف را بدون دسترسی به خود سرور روی مدیاویکی آپلود کنید و کاربر بتواند PDFها را بدون نیاز به دانلود داخل سایت ورق بزند. اگر می‌خواهید بتوانید به یک صفحه خاص از فایل PDF لینک مستقیم دهید. اطلاعات متادیتای فایل PDF را در صفحه آپلود آن مشاهده کنید. بتوانید یک نسخه thumb از هر صفحه فایل PDF در هر کجای سایت و با هر ابعادی داشته باشید. راه‌حل تمام اینها استفاده از اکستنشن PDFHandler است.

تنظیمات مدیاویکی

با دستور زیر محل اسکریپت‌های gs و convert و pdfinfo را مشخص کنید:

which gs convert pdfinfo

اگر از سیستم‌عامل دبیان استفاده کنید و پکیج‌های این اسکریپت‌ها نصب باشد خروجی شبیه این خواهد بود:

/usr/bin/gs
/usr/bin/convert
/usr/bin/pdfinfo

اگر نصب نبود نصب کنید:

apt-get install imagemagick xpdf-utils ghostscript pdfinfo xpdf

فایل Localsetting را باز کنید:

nano wiki/LocalSettings.php

در این فایل باید محل اسکریپت‌های pdfinfo و pdftotext و convert و gs را مشخص کنید. همچنین مشخص کنید سیستم از ImageMagick برای تغییر اندازه عکس‌ها و ساخت بندانگشتی استفاده کند یا از متد دیگری. حجم مموری مورد استفاده برای ساخت فایل‌های بندانگشتی به صورت دیفالت ۱۰۲۴۰۰ است. این سایز خیلی کم است و باید اینجا زیاد شود. (واحدش کیلوبایت است.) همچنین باید به سیستم بگویید که اجازه آپلود فایل را به کاربران بدهد. همچنین باید به مدیاویکی بگویید به فرمت‌های مجاز برای آپلود PDF را هم اضافه کند. برای مثال نوشته شده در بالا به اینصورت در می‌آید:

$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'doc',
    'xls', 'mpp', 'pdf', 'ppt', 'tiff', 'bmp', 'docx', 'xlsx',
    'pptx', 'ps', 'odt', 'ods', 'odp', 'odg'
);
$wgEnableUploads = true;
$wgGenerateThumbnailOnParse = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";
$wgMaxShellMemory = $wgMaxShellMemory = 1024000;
$wgPdfProcessor = '/usr/bin/gs';
$wgPdfPostProcessor = $wgImageMagickConvertCommand;
$wgPdfOutputExtension = "jpg";
$wgPdfInfo = '/usr/bin/pdfinfo';
$wgPdftoText = '/usr/bin/pdftotext';

حالا به شاخه images بروید. در اینجا باید سه دایرکتوری را مشاهده کنید. هر کدام را اگر مشاهده نمی‌کنید بسازید.

temp
thumb
archive

مطمئن باشید وب‌سرور امکان رایت کردن در این دایرکتوری‌ها را دارد.

محدودیت حجم در تنظیمات پی‌اچ‌پی

محل فایل php.ini روی سرور را پیدا کنید:

locate php.ini

اگر از php-fpm استفاده می‌کنید به احتمال زیاد محل این فایل اینجا خواهد بود:

/etc/php5/fpm/php.ini

و اگر از apache استفاده می‌کنید اینجاست:

/etc/php5/apache2/php.ini

اگر فایل‌های PDF شما از محدودیت حجم دیفالت مدیاویکی (۲ مگابایت هر فایل) بیشتر است این خط‌ها را ادیت کنید:

post_max_size = 9M

نصب

به صفحه اکستنشن PdfHandler بروید و مراحل نصب را از آنجا دنبال کنید.

تست

یک فایل PDF آپلود کنید. باید در صفحه‌ای که فایل آپلود شده، نسخه thumb آن را در ابعاد گوناگون به علاوهٔ امکان ورق زدن فایل مشاهده کنید.

روبات‌های JS و ابرابزار ویکیپدیا

شرح مسئله

ویکی‌پدیا دو دسته روبات دارد. یکی روبات‌هاییست که سمت سرور کار می‌کنند. کد این روبات‌ها را کاربرانی که سطوح دسترسی بالایی دارند می‌نویسند و ممکن است روی دیتابیس‌های ویکیپدیا query اجرا کنند یا صفحات را کراول کنند و به صورت خودکار ویرایش انجام دهند. مسئولیت این روبات‌ها با صاحبانشان است. دسته دیگر روبات‌هاییست که عموما کد آن‌ها JS هست و سمت کاربر کار می‌کنند. overhead اجرای این روبات‌ها روی کامپیوتر کاربر است نه سرورهای ویکیپدیا. این ابزارها قابلیت اجرا روی مدیاویکی را نیز دارند. برای این منظور باید افزونه گدجتس مدیاویکی را نصب کنید و بعد یک صفحه ایجاد و سورس روبات را از ویکیپدیا برداشته و در آن کپی کنید. نحوهٔ نصب و پیاده‌سازی این افزونه و پیاده‌سازی ابرابزار ویکیپدیا روی آن موضوع این مقاله است. پیشنهاد می‌شود حتما پیش از شروع مطالعه این مقاله برای آشنایی با نحوه استفاده، کاربرد و نحوه نمایش این ابزار در مدیاویکی صفحهٔ راهنمای آن را مطالعه کنید.

نصب اکستنشن پشتیبانی از ابزارهای JS

۱- نصب اکستنشن را طبق راهنمایی که در صفحه افزونه Gadgets نوشته شده دنبال کنید.

پیاده‌سازی ابرابزار

برای نصب این ابرابزارها روی ویکی خودتون باید طبق راهنمای زیر عمل کنید:

۲- این صفحات را ایجاد کنید و سورس مربوط به هر کدام را از ویکیپدیا در آنها کپی کنید:

  • نام صفحه مدیاویکی:Gadget-Extra-Editbuttons.js، سورس آن اینجا است و وظیفه آن تعریف دکمه‌های ادیتور است.
  • نام صفحه مدیاویکی:Gadget-Extra-Editbuttons-persiantools.js، سورس آن اینجا است و وظیفه آن تعریف ابزارهای عمومی فارسی است.
  • نام صفحه مدیاویکی:Gadget-Extra-Editbuttons-persianwikitools.js، سورس آن اینجا و وظیفه آن تعریف ابزارهای مخصوص ویکی (به استفاده از عملگرهای عمومی) است.
  • نام صفحه مدیاویکی:Gadget-Extra-Editbuttons-dictionary.js، سورس آن اینجا و وظیفه آن تعریف واژه‌نامه‌ها است.
  • نام صفحه مدیاویکی:Gadget-Extra-Editbuttons-autoed.js، سورس آن اینجا و وظیفه آن تعریف فانکشنالیتی کلید ابرابزار است.

۳- فراخوانی آنها به جای آنکه درون کدها باشد از صفحهٔ مدیاویکی:Gadgets-definition خواهد بود. صفحه فوق را ایجاد کنید کد زیر را در آن کپی کنید:

== ابرابزار ==
* Extra-Editbuttons[ResourceLoader]|Extra-Editbuttons.js|Extra-Editbuttons-persiantools.js|Extra-Editbuttons-persianwikitools.js|Extra-Editbuttons-dictionary.js|Extra-Editbuttons-autoed.js

۴- صفحهٔ مدیاویکی:Gadget-Extra-Editbuttons را ایجاد و توضیحاتی درباره پلاگین در آن بنویسید. این توضیحات در صفحهٔ ترجیحات کاربر نمایش داده می‌شود.

فعال‌سازی

۵- کاربرها برای مشاهده این امکانات باید در ترجیحات کاربر آن را فعال کنند. برای این منظور به صفحهٔ ویژه:ترجیحات بروید. سپس تب ابزارها و تیک ابرابزار را بزنید.

مدیاویکی.txt · آخرین ویرایش: 2019/07/17 17:03 (ویرایش خارجی)