التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو من Mikrotik Queue

اخر تحديث في مارس 9, 2024 بواسطة حمدي بانجار

التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو المخبأة من Mikrotik Queue

مواقع الويب التالية يتم اختبارها وتعمل بشكل جيد 🙂

    • General web sites for downloads like filehippo & many others
    • APPLE application downloads  like .ipsw or http://www.felixbruns.de/iPod/firmware/
    • http://www.youtube.com             → Videos Tested
    • http://www.tune.pk                       → Videos Tested [most of videos comes from youtube]
    • http://www.apniisp.com               → Audio & Videos Tested
    • http://www.facebook.com           → Videos Tested [https not supported ***]
    • http://www.vimeo.com                → Videos Tested
    • www.blip.tv                         → Videos Tested
    • http://www.aol.com                      → Videos Tested
    • http://www.msn.com                    → Videos Tested
    • http://www.dailymotion.com      → Partial Working, DM changes video quality as per user internet link speed, which makes prob.
    • http://www.metacafe.com           → Videos Tested
    • some pron sites 😦              →  please block all porn sites Using open dns or other mechanism
    • http://www.tube?.com                → Videos Tested
    • http://www.youjiz?.com/            → Videos Tested
    • http://www.?videos.com            → Videos Tested
    • http://www.por?hub.com            → Videos Tested
    • and many others

ما هو LUSCA / SQUID؟

LUSCA هو إصدار مسبق أو Fork of SQUID 2. يهدف مشروع Lusca إلى إصلاح أوجه القصور في Squid-2.

كما يدعم مجموعة متنوعة من بروتوكولات التجميع. من خلال استخدامه ، يمكنك تخزين بعض المحتويات الديناميكية التي لا يمكنك القيام بها في السابق مع SQUID.

على سبيل المثال [jz] # Video Cachingi.e Youtube / tube etc . . .
# Windows / Linux Updates / Anti-virus , Anti-Malware i.e. Avira/ Avast / MBAM etc . . .
# المواقع المعروفة ، مثل facebook / google / yahoo etch. etch.
# تنزيل التخزين المؤقت لملفات mp3 / mpeg / avi وما إلى ذلك. . .

مزايا التخزين المؤقت لليوتيوب !

في معظم أنحاء العالم ، يكون النطاق الترددي مكلفًا للغاية ، لذلك (في بعض السيناريوهات) مفيد جدًا لمقاطع الفيديو Cache Youtube أو أي فيديوهات فلاش أخرى ، لذلك إذا قام أحد المستخدمين بتنزيل ملف الفيديو / فلاش ، فلماذا المستخدم نفسه أو غيره مرة أخرى لا يمكن للمستخدم تنزيل نفس الملف من ذاكرة التخزين المؤقت ، فلماذا يمتص خط الإنترنت لنفس المحتوى مرة أخرى؟

الأشخاص على نفس الشبكة المحلية ، يشاهدون أحيانًا مقاطع فيديو مماثلة. إذا قمت بوضع رابط فيديو youtube على FACEBOOK أو TWITTER أو بالمثل ، وسيشاهد الجميع هذا الفيديو وسيتم مشاهدة هذا الفيديو بعينه عدة مرات خلال ساعات قليلة.

عادةً ما تتم مشاركة مقاطع الفيديو عبر Facebook أو مواقع شبكات التواصل الاجتماعي الأخرى ، لذا تكون فرص التكرار متعددة لكل مقاطع الفيديو الشائعة لمستخدمي lan / friends / hmdi.

هذا هو السبب في أنني كتبت هذا المقال. لقد قمت بتطبيق Ubuntu مع LUSCA / Squid عليه وعمله رائعًا ، ولكن لتحقيق بعض النتائج ، يلزمك الحصول على بعض السل من محركات التخزين في جهازك الوكيل.

عيوب التخزين المؤقت لليوتيوب!

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

ما هي فرصة قيام مستخدم آخر بالبحث عن نفس الشيء ، والنقر على نفس الرابط / النتيجة؟ يستضيف Youtube أكثر من 10 ملايين مقطع فيديو. وهو أكثر من اللازم للتخزين المؤقت على أي حال.

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

1 # تثبيت SQUID / LUSCA في UBUNTU

أفترض أن مربع أوبونتو الخاص بك يحتوي على واجهات مكونة ، واحدة للشبكة المحلية والثانية لشبكة WAN. لديك مشاركة على الإنترنت مكونة بالفعل. الآن الانتقال إلى تثبيت SQUID / LUSCA.

ها نحن ذا ….

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

apt-get update &&
apt-get install gcc -y &&
apt-get install build-essential -y &&
apt-get install libstdc++6 -y &&
apt-get install unzip -y &&
apt-get install bzip2 -y &&
apt-get install sharutils -y &&
apt-get install ccze -y &&
apt-get install libzip-dev -y &&
apt-get install automake1.9 -y &&
apt-get install acpid -y &&
apt-get install libfile-readbackwards-perl -y &&
apt-get install dnsmasq -y &&
cd /tmp &&
wget -c http://wifismartzone.com/files/linux_related/lusca/LUSCA_HEAD-r14942.tar.gz &&
tar -xvzf LUSCA_HEAD-r14942.tar.gz &&
cd /tmp/LUSCA_HEAD-r14942 &&
./configure \
--prefix=/usr \
--exec_prefix=/usr \
--bindir=/usr/sbin \
--sbindir=/usr/sbin \
--libexecdir=/usr/lib/squid \
--sysconfdir=/etc/squid \
--localstatedir=/var/spool/squid \
--datadir=/usr/share/squid \
--enable-async-io=24 \
--with-aufs-threads=24 \
--with-pthreads \
--enable-storeio=aufs \
--enable-linux-netfilter \
--enable-arp-acl \
--enable-epoll \
--enable-removal-policies=heap \
--with-aio \
--with-dl \
--enable-snmp \
--enable-delay-pools \
--enable-htcp \
--enable-cache-digests \
--disable-unlinkd \
--enable-large-cache-files \
--with-large-files \
--enable-err-languages=English \
--enable-default-err-language=English \
--enable-referer-log \
--with-maxfd=65536 &&
make &&
make install

تحرير ملف SQUID.CONF

الآن قم بتحرير ملف SQUID.CONF باستخدام الأمر التالي :

nano /etc/squid/squid.conf

وحذف جميع الأسطر السابقة ، والصق الأسطر التالية.

تذكر أن اتباع squid.conf ليس أنيقًا ونظيفًا للغاية ، ستجد العديد من إدخالات البريد العشوائي غير الضرورية فيه ، لكن لم يكن لدي الوقت لتنظيفها جميعًا ، لذا يمكنك تنظيفها وفقًا لأهدافك وأهدافك.

الآن الصق البيانات التالية … (في squid.conf)

#######################################################
## Squid_LUSCA configuration Starts from Here ...     #
## Thanks to some INDO friendsfor sharing Configs     #
## Syed.Jahanzaib / 22nd April, 2014                  #
## https://aacable.wordpress.com / [email protected] #
#######################################################
 
# HTTP Port for SQUID Service
http_port 8080 transparent
server_http11 on
 
# Cache Pee, for parent proxy if you ahve any, or ignore it.
#cache_peer x.x.x.x parent 8080 0
 
# Various Logs/files location
pid_filename /var/run/squid.pid
coredump_dir /var/spool/squid/
error_directory /usr/share/squid/errors/English
icon_directory /usr/share/squid/icons
mime_table /etc/squid/mime.conf
access_log daemon:/var/log/squid/access.log squid
cache_log none
#debug_options ALL,1 22,3 11,2 #84,9
referer_log /var/log/squid/referer.log
cache_store_log none
store_dir_select_algorithm  round-robin
logfile_daemon /usr/lib/squid/logfile-daemon
logfile_rotate 1
 
# Cache Policy
cache_mem 6 MB
maximum_object_size_in_memory 0 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
 
minimum_object_size 0 KB
maximum_object_size 10 GB
cache_swap_low 98
cache_swap_high 99
 
# Cache Folder Path, using 5GB for test
cache_dir aufs /cache-1 5000 16 256
 
# ACL Section
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8            # RFC1918 possible internal network
acl localnet src 172.16.0.0/12        # RFC1918 possible internal network
acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
acl localnet src 125.165.92.1        # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80                # http
acl Safe_ports port 21                # ftp
acl Safe_ports port 443                # https
acl Safe_ports port 70                # gopher
acl Safe_ports port 210                # wais
acl Safe_ports port 1025-65535        # unregistered ports
acl Safe_ports port 280                # http-mgmt
acl Safe_ports port 488                # gss-http
acl Safe_ports port 591                # filemaker
acl Safe_ports port 777                # multiling http
acl CONNECT method CONNECT
acl purge method PURGE
acl snmppublic snmp_community public
 
acl range dstdomain .windowsupdate.com
range_offset_limit -1 KB range
 
#===========================================================================
#    Loading Patch
acl DENYCACHE urlpath_regex \.(ini|ui|lst|inf|pak|ver|patch|md5|cfg|lst|list|rsc|log|conf|dbd|db)$
acl DENYCACHE urlpath_regex (notice.html|afs.dat|dat.asp|patchinfo.xml|version.list|iepngfix.htc|updates.txt|patchlist.txt)
acl DENYCACHE urlpath_regex (pointblank.css|login_form.css|form.css|noupdate.ui|ahn.ui|3n.mh)$
acl DENYCACHE urlpath_regex (Loader|gamenotice|sources|captcha|notice|reset)
no_cache deny DENYCACHE
 
range_offset_limit 1 MB !DENYCACHE
uri_whitespace strip
 
#===========================================================================
#    Rules to block few Advertising sites
acl ads url_regex -i .youtube\.com\/ad_frame?
acl ads url_regex -i .(s|s[0-90-9])\.youtube\.com
acl ads url_regex -i .googlesyndication\.com
acl ads url_regex -i .doubleclick\.net
acl ads url_regex -i ^http:\/\/googleads\.*
acl ads url_regex -i ^http:\/\/(ad|ads|ads[0-90-9]|ads\d|kad|a[b|d]|ad\d|adserver|adsbox)\.[a-z0-9]*\.[a-z][a-z]*
acl ads url_regex -i ^http:\/\/openx\.[a-z0-9]*\.[a-z][a-z]*
acl ads url_regex -i ^http:\/\/[a-z0-9]*\.openx\.net\/
acl ads url_regex -i ^http:\/\/[a-z0-9]*\.u-ad\.info\/
acl ads url_regex -i ^http:\/\/adserver\.bs\/
acl ads url_regex -i !^http:\/\/adf\.ly
http_access deny ads
http_reply_access deny ads
#deny_info http://yoursite/yourad,htm ads
#==== End Rules: Advertising ====
 
strip_query_terms off
 
acl yutub url_regex -i .*youtube\.com\/.*$
acl yutub url_regex -i .*youtu\.be\/.*$
logformat squid1 %{Referer}>h %ru
access_log /var/log/squid/yt.log squid1 yutub
 
# ==== Custom Option REWRITE ====
acl store_rewrite_list urlpath_regex \/(get_video\?|videodownload\?|videoplayback.*id)
 
acl store_rewrite_list urlpath_regex \.(mp2|mp3|mid|midi|mp[234]|wav|ram|ra|rm|au|3gp|m4r|m4a)\?
acl store_rewrite_list urlpath_regex \.(mpg|mpeg|mp4|m4v|mov|avi|asf|wmv|wma|dat|flv|swf)\?
acl store_rewrite_list urlpath_regex \.(jpeg|jpg|jpe|jp2|gif|tiff?|pcx|png|bmp|pic|ico)\?
acl store_rewrite_list urlpath_regex \.(chm|dll|doc|docx|xls|xlsx|ppt|pptx|pps|ppsx|mdb|mdbx)\?
acl store_rewrite_list urlpath_regex \.(txt|conf|cfm|psd|wmf|emf|vsd|pdf|rtf|odt)\?
acl store_rewrite_list urlpath_regex \.(class|jar|exe|gz|bz|bz2|tar|tgz|zip|gzip|arj|ace|bin|cab|msi|rar)\?
acl store_rewrite_list urlpath_regex \.(htm|html|mhtml|css|js)\?
 
acl store_rewrite_list_web url_regex ^http:\/\/([A-Za-z-]+[0-9]+)*\.[A-Za-z]*\.[A-Za-z]*
acl store_rewrite_list_web_CDN url_regex ^http:\/\/[a-z]+[0-9]\.google\.com doubleclick\.net
 
acl store_rewrite_list_path urlpath_regex \.(mp2|mp3|mid|midi|mp[234]|wav|ram|ra|rm|au|3gp|m4r|m4a)$
acl store_rewrite_list_path urlpath_regex \.(mpg|mpeg|mp4|m4v|mov|avi|asf|wmv|wma|dat|flv|swf)$
acl store_rewrite_list_path urlpath_regex \.(jpeg|jpg|jpe|jp2|gif|tiff?|pcx|png|bmp|pic|ico)$
acl store_rewrite_list_path urlpath_regex \.(chm|dll|doc|docx|xls|xlsx|ppt|pptx|pps|ppsx|mdb|mdbx)$
acl store_rewrite_list_path urlpath_regex \.(txt|conf|cfm|psd|wmf|emf|vsd|pdf|rtf|odt)$
acl store_rewrite_list_path urlpath_regex \.(class|jar|exe|gz|bz|bz2|tar|tgz|zip|gzip|arj|ace|bin|cab|msi|rar)$
acl store_rewrite_list_path urlpath_regex \.(htm|html|mhtml|css|js)$
 
acl getmethod method GET
 
storeurl_access deny !getmethod
#this is not related to youtube video its only for CDN pictures
storeurl_access allow store_rewrite_list_web_CDN
storeurl_access allow store_rewrite_list_web store_rewrite_list_path
storeurl_access allow store_rewrite_list
storeurl_access deny all
storeurl_rewrite_program /etc/squid/storeurl.pl
storeurl_rewrite_children 10
storeurl_rewrite_concurrency 40
# ==== End Custom Option REWRITE ====
 
#===========================================================================
#    Custom Option REFRESH PATTERN
#===========================================================================
refresh_pattern (get_video\?|videoplayback\?|videodownload\?|\.flv\?|\.fid\?) 43200 99% 43200 override-expire ignore-reload ignore-must-revalidate ignore-private
refresh_pattern -i (get_video\?|videoplayback\?|videodownload\?) 5259487 999% 5259487 override-expire ignore-reload reload-into-ims ignore-no-cache ignore-private
# -- refresh pattern for specific sites -- #
refresh_pattern ^http://*.jobstreet.com.*/.* 720 100% 10080 override-expire override-lastmod ignore-no-cache
refresh_pattern ^http://*.indowebster.com.*/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-auth
refresh_pattern ^http://*.21cineplex.*/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-auth
refresh_pattern ^http://*.atmajaya.*/.* 720 100% 10080 override-expire ignore-no-cache ignore-auth
refresh_pattern ^http://*.kompas.*/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.theinquirer.*/.* 720 100% 10080 override-expire ignore-no-cache ignore-auth
refresh_pattern ^http://*.blogspot.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.wordpress.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache
refresh_pattern ^http://*.photobucket.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.tinypic.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.imageshack.us/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.kaskus.*/.* 720 100% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://www.kaskus.com/.* 720 100% 28800 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.detik.*/.* 720 50% 2880 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.detiknews.*/*.* 720 50% 2880 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://video.liputan6.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://static.liputan6.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.friendster.com/.* 720 100% 10080 override-expire override-lastmod ignore-no-cache ignore-auth
refresh_pattern ^http://*.facebook.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://apps.facebook.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.fbcdn.net/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://profile.ak.fbcdn.net/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://static.playspoon.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://cooking.game.playspoon.com/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern -i http://[^a-z\.]*onemanga\.com/? 720 80% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://media?.onemanga.com/.* 720 80% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.yahoo.com/.* 720 80% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.google.com/.* 720 80% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.forummikrotik.com/.* 720 80% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
refresh_pattern ^http://*.linux.or.id/.* 720 100% 10080 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-auth
# -- refresh pattern for extension -- #
refresh_pattern -i \.(mp2|mp3|mid|midi|mp[234]|wav|ram|ra|rm|au|3gp|m4r|m4a)(\?.*|$) 5259487 999% 5259487 override-expire ignore-reload reload-into-ims ignore-no-cache ignore-private
refresh_pattern -i \.(mpg|mpeg|mp4|m4v|mov|avi|asf|wmv|wma|dat|flv|swf)(\?.*|$) 5259487 999% 5259487 override-expire ignore-reload reload-into-ims ignore-no-cache ignore-private
refresh_pattern -i \.(jpeg|jpg|jpe|jp2|gif|tiff?|pcx|png|bmp|pic|ico)(\?.*|$) 5259487 999% 5259487 override-expire ignore-reload reload-into-ims ignore-no-cache ignore-private
refresh_pattern -i \.(chm|dll|doc|docx|xls|xlsx|ppt|pptx|pps|ppsx|mdb|mdbx)(\?.*|$) 5259487 999% 5259487 override-expire ignore-reload reload-into-ims ignore-no-cache ignore-private
refresh_pattern -i \.(txt|conf|cfm|psd|wmf|emf|vsd|pdf|rtf|odt)(\?.*|$) 5259487 999% 5259487 override-expire ignore-reload reload-into-ims ignore-no-cache ignore-private
refresh_pattern -i \.(class|jar|exe|gz|bz|bz2|tar|tgz|zip|gzip|arj|ace|bin|cab|msi|rar)(\?.*|$) 5259487 999% 5259487 override-expire ignore-reload reload-into-ims ignore-no-cache ignore-private
refresh_pattern -i \.(htm|html|mhtml|css|js)(\?.*|$) 1440 90% 86400 override-expire ignore-reload reload-into-ims
#===========================================================================
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern ^ftp: 10080 95% 10080 override-lastmod reload-into-ims
refresh_pattern . 0 20% 10080 override-lastmod reload-into-ims
 
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
 
http_access allow localnet
http_access allow all
http_access deny all
 
icp_access allow localnet
icp_access deny all
icp_port 0
 
buffered_logs on
 
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
 
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
 
forwarded_for off
header_access From deny all
header_access Server deny all
header_access Link deny all
header_access Via deny all
header_access X-Forwarded-For deny all
httpd_suppress_version_string on
 
shutdown_lifetime 10 seconds
 
snmp_port 3401
snmp_access allow snmppublic all
dns_timeout 1 minutes
 
dns_nameservers 8.8.8.8 8.8.4.4
 
fqdncache_size 5000    #16384
ipcache_size 5000    #16384
ipcache_low 98
ipcache_high 99
log_fqdn off
log_icp_queries off
memory_pools off
 
maximum_single_addr_tries 2
retry_on_error on
 
icp_hit_stale on
 
strip_query_terms off
 
query_icmp on
reload_into_ims on
emulate_httpd_log off
negative_ttl 0 seconds
pipeline_prefetch on
vary_ignore_expire on
half_closed_clients off
high_page_fault_warning 2
nonhierarchical_direct on
prefer_direct off
cache_mgr [email protected]
cache_effective_user proxy
cache_effective_group proxy
visible_hostname proxy.zaib
unique_hostname syed_jahanzaib
cachemgr_passwd none all
client_db on
max_filedescriptors 8192
 
# ZPH config Marking Cache Hit, so cached contents can be delivered at full lan speed via MT
zph_mode tos
zph_local 0x30
zph_parent 0
zph_option 136

SOTEURL.PL

الآن يتعين علينا إنشاء اسم ملف مهم storeurl.pl ، وهو أمر مهم للغاية وفعلا يفعل
المهمة الرئيسية لإعادة توجيه وسحب الفيديو من ذاكرة التخزين المؤقت.

touch /etc/squid/storeurl.pl
chmod +x /etc/squid/storeurl.pl
nano /etc/squid/storeurl.pl

الآن ألصق الأسطر التالية ، ثم حفظ والخروج.

#!/usr/bin/perl
#######################################################
## Squid_LUSCA storeurl.pl starts from Here ...     #
## Thanks to Mr. Safatah [INDO] for sharing Configs  #
## Syed.Jahanzaib / 22nd April, 2014 #
## https://aacable.wordpress.com / [email protected] #
#######################################################
$|=1;
while (<>) {
@X = split;
$x = $X[0] . " ";
##=================
## Encoding YOUTUBE
##=================
if ($X[1] =~ m/^http\:\/\/.*(youtube|google).*videoplayback.*/){
@itag = m/[&?](itag=[0-9]*)/;
@CPN = m/[&?]cpn\=([a-zA-Z0-9\-\_]*)/;
@IDS = m/[&?]id\=([a-zA-Z0-9\-\_]*)/;
$id = &GetID($CPN[0], $IDS[0]);
@range = m/[&?](range=[^\&\s]*)/;
print $x . "http://fathayu/" . $id . "&@itag@range\n";
} elsif ($X[1] =~ m/(youtube|google).*videoplayback\?/ ){
@itag = m/[&?](itag=[0-9]*)/;
@id = m/[&?](id=[^\&]*)/;
@redirect = m/[&?](redirect_counter=[^\&]*)/;
print $x . "http://fathayu/";
# ==========================================================================
#    VIMEO
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/av\.vimeo\.com\/\d+\/\d+\/(.*)\?/) {
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/pdl\.vimeocdn\.com\/\d+\/\d+\/(.*)\?/) {
print $x . "http://fathayu/" . $1 . "\n";
# ==========================================================================
#    DAILYMOTION
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/proxy-[0-9]{1}\.dailymotion\.com\/(.*)\/(.*)\/video\/\d{3}\/\d{3}\/(.*.flv)/) {
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/vid[0-9]\.ak\.dmcdn\.net\/(.*)\/(.*)\/video\/\d{3}\/\d{3}\/(.*.flv)/) {
print $x . "http://fathayu/" . $1 . "\n";
# ==========================================================================
#   YIMG
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/(.*yimg.com)\/\/(.*)\/([^\/\?\&]*\/[^\/\?\&]*\.[^\/\?\&]{3,4})(\?.*)?$/) {
print $x . "http://fathayu/" . $3 . "\n";
# ==========================================================================
#   YIMG DOUBLE
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/(.*?)\.yimg\.com\/(.*?)\.yimg\.com\/(.*?)\?(.*)/) {
print $x . "http://fathayu/" . $3 . "\n";
# ==========================================================================
#   YIMG WITH &sig=
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/(.*?)\.yimg\.com\/(.*)/) {
@y = ($1,$2);
$y[0] =~ s/[a-z]+[0-9]+/cdn/;
$y[1] =~ s/&sig=.*//;
print $x . "http://fathayu/" . $y[0] . ".yimg.com/" . $y[1] . "\n";
# ==========================================================================
#    YTIMG
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/i[1-4]\.ytimg\.com(.*)/) {
print $x . "http://fathayu/" . $1  . "\n";
# ==========================================================================
#   PORN Movies
# ==========================================================================
} elsif (($X[1] =~ /maxporn/) && (m/^http:\/\/([^\/]*?)\/(.*?)\/([^\/]*?)(\?.*)?$/)) {
print $x . "http://" . $1 . "/SQUIDINTERNAL/" . $3 . "\n";
#   Domain/path/.*/path/filename
} elsif (($X[1] =~ /fucktube/) && (m/^http:\/\/(.*?)(\.[^\.\-]*?[^\/]*\/[^\/]*)\/(.*)\/([^\/]*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})(\?.*?)$/)) {
@y = ($1,$2,$4,$5,$6);
$y[0] =~ s/(([a-zA-A]+[0-9]+(-[a-zA-Z])?$)|([^\.]*cdn[^\.]*)|([^\.]*cache[^\.]*))/cdn/;
print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "/" . $y[3] . "." . $y[4] . "\n";
#   Like porn hub variables url and center part of the path, filename etention 3 or 4 with or without ? at the end
} elsif (($X[1] =~ /tube8|pornhub|xvideos/) && (m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?(\.[a-z]*)?)\.([a-z]*[0-9]?\.[^\/]{3}\/[a-z]*)(.*?)((\/[a-z]*)?(\/[^\/]*){4}\.[^\/\?]{3,4})(\?.*)?$/)) {
print $x . "http://cdn." . $4 . $6 . "\n";
} elsif (($u =~ /tube8|redtube|hardcore-teen|pornhub|tubegalore|xvideos|hostedtube|pornotube|redtubefiles/) && (m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?(\.[a-z]*)?)\.([a-z]*[0-9]?\.[^\/]{3}\/[a-z]*)(.*?)((\/[a-z]*)?(\/[^\/]*){4}\.[^\/\?]{3,4})(\?.*)?$/)) {
print $x . "http://cdn." . $4 . $6 . "\n";
#   acl store_rewrite_list url_regex -i \.xvideos\.com\/.*(3gp|mpg|flv|mp4)
#   refresh_pattern -i \.xvideos\.com\/.*(3gp|mpg|flv|mp4) 1440 99% 14400 override-expire override-lastmod ignore-no-cache ignore-private reload-into-ims ignore-must-revalidate ignore-reload store-stale
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/.*\.xvideos\.com\/.*\/([\w\d\-\.\%]*\.(3gp|mpg|flv|mp4))\?.*/){
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\d]+\.[\d]+\.[\d]+\.[\d]+\/.*\/xh.*\/([\w\d\-\.\%]*\.flv)/){
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\d]+\.[\d]+\.[\d]+\.[\d]+.*\/([\w\d\-\.\%]*\.flv)\?start=0/){
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/.*\.youjizz\.com.*\/([\w\d\-\.\%]*\.(mp4|flv|3gp))\?.*/){
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\w\d\-\.\%]*\.keezmovies[\w\d\-\.\%]*\.com.*\/([\w\d\-\.\%]*\.(mp4|flv|3gp|mpg|wmv))\?.*/){
print $x . "http://fathayu/" . $1 . $2 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\w\d\-\.\%]*\.tube8[\w\d\-\.\%]*\.com.*\/([\w\d\-\.\%]*\.(mp4|flv|3gp|mpg|wmv))\?.*/) {
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\w\d\-\.\%]*\.youporn[\w\d\-\.\%]*\.com.*\/([\w\d\-\.\%]*\.(mp4|flv|3gp|mpg|wmv))\?.*/){
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\w\d\-\.\%]*\.spankwire[\w\d\-\.\%]*\.com.*\/([\w\d\-\.\%]*\.(mp4|flv|3gp|mpg|wmv))\?.*/) {
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\w\d\-\.\%]*\.pornhub[\w\d\-\.\%]*\.com.*\/([[\w\d\-\.\%]*\.(mp4|flv|3gp|mpg|wmv))\?.*/){
print $x . "http://fathayu/" . $1 . "\n";
} elsif ($X[1] =~ m/^http:\/\/[\w\d\-\_\.\%\/]*.*\/([\w\d\-\_\.]+\.(flv|mp3|mp4|3gp|wmv))\?.*cdn\_hash.*/){
print $x . "http://fathayu/" . $1 . "\n";
} elsif (($X[1] =~ /maxporn/) && (m/^http:\/\/([^\/]*?)\/(.*?)\/([^\/]*?)(\?.*)?$/)) {
print $x . "http://fathayu/" . $1 . "/SQUIDINTERNAL/" . $3 . "\n";
} elsif (($X[1] =~ /fucktube/) && (m/^http:\/\/(.*?)(\.[^\.\-]*?[^\/]*\/[^\/]*)\/(.*)\/([^\/]*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})(\?.*?)$/)) {
@y = ($1,$2,$4,$5,$6);
$y[0] =~ s/(([a-zA-Z]+[0-9]+(-[a-zA-Z])?$)|([^\.]*cdn[^\.]*)|([^\.]*cache[^\.]*))/cdn/;
print $x . "http://fathayu/" . $y[0] . $y[1] . "/" . $y[2] . "/" . $y[3] . "." . $y[4] . "\n";
} elsif (($X[1] =~ /media[0-9]{1,5}\.youjizz/) && (m/^http:\/\/(.*?)(\.[^\.\-]*?\.[^\/]*)\/(.*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})(\?.*?)$/)) {
@y = ($1,$2,$4,$5);
$y[0] =~ s/(([a-zA-Z]+[0-9]+(-[a-zA-Z])?$)|([^\.]*cdn[^\.]*)|([^\.]*cache[^\.]*))/cdn/;
print $x . "http://fathayu/" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";
# ==========================================================================
#   Filehippo
# ==========================================================================
} elsif (($X[1] =~ /filehippo/) && (m/^http:\/\/(.*?)\.(.*?)\/(.*?)\/(.*)\.([a-z0-9]{3,4})(\?.*)?/)) {
@y = ($1,$2,$4,$5);
$y[0] =~ s/[a-z0-9]{2,5}/cdn./;
print $x . "http://fathayu/" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";
} elsif (($X[1] =~ /filehippo/) && (m/^http:\/\/(.*?)(\.[^\/]*?)\/(.*?)\/([^\?\&\=]*)\.([\w\d]{2,4})\??.*$/)) {
@y = ($1,$2,$4,$5);
$y[0] =~ s/([a-z][0-9][a-z]dlod[\d]{3})|((cache|cdn)[-\d]*)|([a-zA-Z]+-?[0-9]+(-[a-zA-Z]*)?)/cdn/;
print $x . "http://fathayu/" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";
} elsif ($X[1] =~ m/^http:\/\/.*filehippo\.com\/.*\/([\d\w\%\.\_\-]+\.(exe|zip|cab|msi|mru|mri|bz2|gzip|tgz|rar|pdf))/){
$y=$1;
for ($y) {
s/%20//g;
}
print $x . "http://fathayu//" . $y . "\n";
} elsif (($X[1] =~ /filehippo/) && (m/^http:\/\/(.*?)\.(.*?)\/(.*?)\/(.*)\.([a-z0-9]{3,4})(\?.*)?/)) {
@y = ($1,$2,$4,$5);
$y[0] =~ s/[a-z0-9]{2,5}/cdn./;
print $x . "http://fathayu/" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";
# ==========================================================================
#   4shared preview
# ==========================================================================
} elsif ($X[1] =~ m/^http:\/\/[a-z]{2}\d{3}\.4shared\.com\/img\/\d+\/\w+\/dlink__2Fdownload_2F.*_3Ftsid_(\w+)-\d+-\w+_26lgfp_3D1000_26sbsr_\w+\/preview.mp3/) {
print $x . "http://fathayu/" . $3 . "\n";
 
} else {
print $x . $X[1] . "\n";
}
}
 
sub GetID
{
$id = "";
use File::ReadBackwards;
my $lim = 200 ;
my $ref_log = File::ReadBackwards->new('/var/log/squid/referer.log');
while (defined($line = $ref_log->readline))
{
if ($line =~ m/.*youtube.*\/watch\?.*v=([a-zA-Z0-9\-\_]*).*\s.*id=$IDS[0].*/){
$id = $1;
last;
}
if ($line =~ m/.*youtube.*\/.*cpn=$CPN[0].*[&](video_id|docid|v)=([a-zA-Z0-9\-\_]*).*/){
$id = $2;
last;
}
if ($line =~ m/.*youtube.*\/.*[&?](video_id|docid|v)=([a-zA-Z0-9\-\_]*).*cpn=$CPN[0].*/){
$id = $2;
last;
}
last if --$lim <= 0;
}
if ($id eq ""){
$id = $IDS[0];
}
$ref_log->close();
return $id;
}
### STOREURL.PL ENDS HERE ###

تهيئة ذاكرة التخزين المؤقت ومجلد السجل …

الآن إنشاء مجلد CACHE (هنا كنت تستخدم اختبار في محرك الأقراص المحلي)

# Log Folder and assign permissions
mkdir /var/log/squid
chown proxy:proxy /var/log/squid/
 
# Cache Folder
mkdir /cache-1
chown proxy:proxy /cache-1
#Now initialize cache dir by
squid -z

بدء خدمة السكويد كاش

الآن بدء تشغيل خدمة السكويد باتباع الأمر :

squid

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

ps aux |grep squid

شيء مثل أدناه …

التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو المخبأة من Mikrotik Queue

تلميح:

لبدء خادم SQUID في وضع التصحيح ، للتحقق من أي أخطاء ، استخدم ما يلي

squid -d1N

وقت الاختبار ….

لقد حان الوقت للتغلب على الطريق وإجراء بعض الاختبارات …

اختبار يوتيوب

افتح Youtube وشاهد أي فيديو. بعد التنزيل الكامل ، تحقق من الفيديو نفسه من عميل آخر. ستلاحظ أنه يتم تنزيله بسرعة كبيرة (يتم حفظ مقطع فيديو youtueb بمساحة 1.7 ميجابايت لكل منهما ، لذلك بعد إكمال المقطع الأول ، سيتوقف ، إذا استمر المستخدم في مشاهدة مقطع الفيديو نفسه ، فسيتم عرض المقطع الثاني وما إلى ذلك ، يمكن مشاهدة الشريط يتحرك بسرعة دون استخدام بيانات الإنترنت.
كما هو موضح في المثال أدناه. . .

التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو المخبأة من Mikrotik Queue

التخزين المؤقت لليوتيوب

FILEHIPPO TEST

FILEHIPPO TEST

كما هو موضح في المثال أدناه. . .

filhippo

MUSIC DOWNLOAD TEST

الآن اختبار أي تنزيل الموسيقى. على سبيل المثال الذهاب إلى

http://www.apniisp.com/songs/indian-movie-songs/ladies-vs-ricky-bahl/690/1.html

كما هو موضح في المثال أدناه. . .

وتنزيل أي أغنية ، بعد تنزيلها ، انتقل إلى جهاز الكمبيوتر العميل الثاني ، وتنزيل نفس الأغنية ، ومراقبة Squid access LOG. سترى ذاكرة التخزين المؤقت تصل إلى TPC_HIT لهذه الأغنية.

كما هو موضح في المثال أدناه. . .

EXE / برنامج تنزيل اختبار

الآن اختبار أي تنزيل ملف. exe.
انتقل إلى http://www.rarlabs.com وقم بتنزيل أي حزمة. بعد اكتمال التنزيل ، انتقل إلى جهاز الكمبيوتر العميل الثاني ، وقم بتنزيل الملف نفسه مرة أخرى. ومراقبة سجل الوصول الحبار. سترى ذاكرة التخزين المؤقت تصل إلى TPC_HIT لهذا الملف.

كما هو موضح في المثال أدناه. . .

winrar-download-page

SQUID LOGS

MIKROTIK with SQUID/ZPH: how to bypass Squid Cache HIT object with Queues Tree in RouterOS 5.x and 6.x

التخزين المؤقت لليوتيوب

التخزين المؤقت لليوتيوب

باستخدام Mikrotik ، يمكننا إعادة توجيه حركة مرور HTTP إلى خادم وكيل SQUID ، ويمكننا أيضًا التحكم في عرض النطاق الترددي للمستخدم ، ولكن من الجيد توصيل المحتوى المخزن بالفعل إلى المستخدم بأقصى سرعة الشبكة المحلية ، ولهذا السبب نقوم بإعداد خادم ذاكرة التخزين المؤقت من أجل حفظ النطاق الترددي يتمتع بتجربة تصفح سريعة ، على اليمين: p ، فكيف يمكننا القيام بذلك في mikrotik أنه ينبغي تسليم محتوى ذاكرة التخزين المؤقت إلى المستخدمين بسرعة غير محدودة ، بدون قائمة انتظار على محتوى ذاكرة التخزين المؤقت. ها نحن ذا.

باستخدام توجيهات ZPH ، سنقوم بتمييز محتوى ذاكرة التخزين المؤقت ، بحيث يمكن اختياره لاحقًا بواسطة Mikrotik.

الشرط الأساسي هو أن Squid يجب أن يعمل في وضع شفاف ، ويمكن القيام به عن طريق iptables وتوجيهات squid.conf.
أنا أستخدم UBUNTU squid 2.7 ، (في أوبونتو ، سيقوم apt-get install squid بتثبيت الحبار 2.7 افتراضيًا وهو gr8 لعملنا)
إضافة هذه الأسطر في SQUID.CONF

#===============================================================================
#ZPH for SQUID 2.7 (Default in ubuntu 10.4) / Syed Jahanzaib [email protected]
#===============================================================================
tcp_outgoing_tos 0x30 lanuser [lanuser is ACL for local network, change it to match your's]
zph_mode tos
zph_local 0x30
zph_parent 0
zph_option 136

استخدم التالي إذا كان لديك squid  3.1.19

#======================================================
#ZPH for SQUID 3.1.19 (Default in ubuntu 12.4) / Syed Jahanzaib [email protected]
#======================================================
 
# ZPH for Squid 3.1.19
qos_flows local-hit=0x30

هذا كل شيء من أجل SQUID، والآن ننتقل إلى مربع Mikrotik ،
إضافة القواعد التالية :

# وضع علامات على الحزم باستخدام DSCP (لـ MT 5.x) لمحتوى ذاكرة التخزين المؤقت الذي تم الوصول إليه من SQUID Proxy

/ip firewall mangle add action=mark-packet chain=prerouting disabled=no dscp=12 new-packet-mark=proxy-hit passthrough=no comment="Mark Cache Hit Packets / [email protected]"
/queue tree add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=pmark packet-mark=

# تمييز الحزم باستخدام DSCP (لـ MT 6.x) لمحتوى ذاكرة التخزين المؤقت الذي تم الوصول إليه من SQUID Proxy

/ip firewall mangle add action=mark-packet chain=prerouting comment="MARK_CACHE_HIT_FROM_PROXY_ZAIB" disabled=no dscp=12 new-packet-mark=proxy passthrough=no
/queue simple
add max-limit=100M/100M name="ZPH-Proxy Cache Hit Simple Queue / Syed Jahanzaib >[email protected]" packet-marks=zph-hit priority=1/1 target="" total-priority=1

تأكد من تحريك قائمة QUEUE البسيطة فوق جميع قوائم QUEUES  الأخرى 😀
.

الآن ، سيتم تسليم كل حزمة تحمل علامة SQUID CACHE_HIT ، إلى المستخدم بأقصى سرعة الشبكة المحلية ، وسيتم تقييد بقية حركة المرور من قبل قائمة QUEUE المستخدم.

استكشاف الأخطاء وإصلاحها:

تم اختبار التكوين أعلاه تمامًا باستخدام UBUNTU SQUID 2.7 و FEDORA 10 باستخدام LUSCA

تأكد من قيام SQUID بوضع علامة على TOS لحزم الوصول إلى ذاكرة التخزين المؤقت. يمكنك التحقق من ذلك عبر TCPDUMP

tcpdump -vni eth0 | grep ‘tos 0×30′

(eht0 = LAN connected interface)

Can you see something like ???

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
20:25:07.961722 IP (tos 0×30, ttl 64, id 45167, offset 0, flags [DF], proto TCP (6), length 409)
20:25:07.962059 IP (tos 0×30, ttl 64, id 45168, offset 0, flags [DF], proto TCP (6), length 1480)
192 packets captured
195 packets received by filter
0 packets dropped by kernel

أنتهى … التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو المخبأة من Mikrotik Queue

التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو المخبأة من Mikrotik Queue

ملاحظة :

قد تكون المقالة محمية ضد النقل وبالتالي لنسخ الاكواد ان وجدت انقر على علامة + بأعلى يمين الكود والتي تظهر عند تمرير الماوس على الكود .

الى هنا نكون وصلنا الى نهاية موضوعنا اليوم التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو المخبأة من Mikrotik Queue

والذي نتمنى ان ينال رضاكم واعجابكم والى اللقاء في موضوع جديد شيق ورائع

وحتى ذلك الحين لاتنسو الاهتمام بصحتكم وحفظكم الله …

اذا اعجبك الموضوع التخزين المؤقت لليوتيوب مع SQUID / LUSCA وتجاوز ملفات الفيديو المخبأة من Mikrotik Queue لاتبخل علينا بمشاركتة على مواقع التواصل الاجتماعي ليستفيذ منه الغير,

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

كما يمكنكم رفع ملفاتكم مجانا على مركز ملفات حضرموت التقنية بالضغط هنا ولاتترددو في وضع أي استفسارات للرد عليكم .

دمتم بكل ود والسلام عليكم ورحمة الله وبركاتة  … حضرموت التقنية

حول حمدي بانجار

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

تحقق أيضا

مواصفات تشغيل سيرفر امبي - تعرف على مواصفات الجهاز لتثبيت سيرفر امبي عليه

مواصفات تشغيل سيرفر امبي – تعرف على مواصفات الجهاز لتثبيت سيرفر امبي عليه

اخر تحديث في مايو 27, 2023 بواسطة حمدي بانجار مواصفات تشغيل سيرفر امبي – تعرف …

اترك تعليقاً