همه‌ی نوشته‌های Sae13

محدود کردن فرم گراویتی‌فرمز به کد ملی‌های مشخص شده

خوب من دیروز می‌بایست یه فرم ثبت نام تحویل می‌دادم که فقط اشخاصی حق داشتند پرش کنند که از قبل ثبت‌نام کرده بودن. وقت قالب فرزند یا افزونه هم نداشتم

برای این‌کار من یه فیلد متنی قرار دادم. شما اگه میخواید ولیدیت کد ملی هم داشته باشید می‌تونید فیلد کد ملی گراویتی فرمز فارسی رو قرار بدید.

کد فرم و کد فیلد رو درنظر داشته باشید بعدن لازمشون داریم.

اومدم از

قسمت نمایش

قسمت ویرایشگر پوسته

از بالا سمت چپ قالب فعالم رو انتخاب کردم

بالا سمت چپ سمت چپ فایل توابع پوسته functions.php رو انتخاب کردم

و کد زیر رو کپی کردم.

try {
	function validate_code( $result, $value, $form, $field){
		$g3=array('1234567890', '1234567898', '2345678909' )
		if (in_array($value,$g3) ){}
		else {
			$result['is_valid'] = false;
			$result['message'] = "شما در این گروه نیستید";
			}
	return $result;
		}
	add_filter( 'gform_field_validation_4_35', 'validate_code', 10, 4 );
	}
catch (Exception $e) {var_dump($e);}

داخلش یه آرایه هست از کد ملی ها. البته من سه هزارتا کد ملی داشتم.

$g3=array('1234567890', '1234567898', '2345678909' )

پایین هم برای add_filter به ترتیب شماره فرمم و شماره فیلدم رو قرار دادم. اون ده و چهار آخر خط هم مال اولویت فیلتر هستن فک کنم.

add_filter( 'gform_field_validation_4_35', 'validate_code', 10, 4 );

حالا اگه کد ملی توی لیست نباشه خطا می‌گیریم

چند تا نکته:

  1. وقتی قالبتون رو به روز کنید فانکشنتون پاک میشه!
  2. برای نگه داشتن فانکشنتون بعد از به روز شدن قالب خیلی راحت یه قالب فرزند درست کنید. من فقط برای یک روز نیازش داشتم به همین خاطر بهم اهمیتی نداشت.
  3. ساختن فایل افزونه حتی از ساختن قالب فرزند هم ساده تره.

پسندها(1)شاکی(0)

kvm qemu libvirt

sudo pacman -S libvirt nftables
 ✘  ~  cat br10.xml 
<network>
  <name>br10</name>
  <uuid>4c2ce191-a0e3-4916-842e-a7cdc2012332</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='br10' stp='on' delay='0'/>
  <mac address='52:54:00:5f:d2:40'/>
  <ip address='172.18.0.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='172.18.0.100' end='172.18.0.200'/>
    </dhcp>
  </ip>
</network>
sudo virsh net-define br10.xml
sudo virsh net-list --all
 sudo virsh net-start br10
 sudo virt-install --name debian11 --memory 2048 --disk size=4 --cdrom Downloads/debian-11.0.0-amd64-netinst.iso --network bridge=br10
sudo virsh start debian11

پسندها(0)شاکی(0)

دکوراتورها تو پایتون

دکوراتورها یه متد رو میگیرن و قبل از اجرای اون یه سری بلا سرش میارن. البته این برداشت منه که ایشالله درسته

دکوراتور به عنوان متد
به صورت کلاس و به صورت فانکشن میشه نوشت


def saeb(func: Callable) -> Callable:
    def b(*arg, **kwarg):
        func(*arg, kwarg)

    return b


@saeb
def a(*args, **kwargs):
    print(args, kwargs)


پسندها(0)شاکی(0)

تاحالا شده باربری یی دبه در نکنه؟

امروز اثاث‌کشی داشتم از یوسف اباد به استاد معین.

توی اسنپ مشخصات زدم گفت ۵۸۰ تومن. مستاجر جدید خونه یوسف‌آباد گفت که من با جهان‌آرا بار آوردم خیلی راضی بودم خیلی مواظب بودن منم گفتم چرا روزه شک‌دار بگیرم. بذار با همونا بیارم خیالمم راحت باشه. زنگشون زدم جزئیات دادم گفتن هفتصد. گفتم خیلی خوب قرار گذاشتیم ب فرداش، امروز یک ساعت زودتر زنگ زدم و باز تاکید کردم که من مشکل مالی دارم به همین خاطر دارم از اینجا می‌رم بیشتر از هفتصد نشه‌ها ندارم اصلن. گفتن نه خیالت راحت.

اومدن نصف بار رو که بردن گفتن فریزر جداست. گفتم که نه من صحبت کردم وضعم رو گفتم. گفتن که نه دیگه جداست. زن زدم جهان‌آرابار گفتم بابا من تاکید کردم مشکل مالی دارم بیشتر نمی‌شه! گفتن تو گفتی یخچال فریزر ما فک کردیم نصف یخچال نصف فریز! هرچند من هم دیروز هم امروز ظهر زنگ زدم و جزئیات دادم.

اثاث کشی خره، خرترین قسمتش دبه در آوردن باربریاست.

پسندها(0)شاکی(0)

همه لینک‌های دانلود یک ژانر یا یه صفحه والا مووی

می‌خواستم همه لینک‌های دانلود دوبله ژانر مستند سایت والا مووی رو در بیارم بهش اسکریپت پایتونی نوشتم. هرچند اگه می‌رفتم از سایتش کپی می‌کردم سریع‌تر می‌شد.

ولی خوب شد این اسکریپت :

پسندها(3)شاکی(0)

کار با reverse ssh

توی این پست می‌خوام چیزهایی که خودم از reverse ssh بلدم رو به اشتراک بذارم.

کاربردش چیه؟ خیلی چیزا

کاربردی به من داشت این بود که سایت‌های شبکه داخلی شرکتمون رو پروکسی می‌کنم به کامپیوتر خونه. یا بدون آی پی ولید به کامپیوتر شرکت یا خونه یا حتی مبایلم ssh می‌زنم.

پیش نیازش چیه؟ یه ماشین با آی پی ولید. مثلا یه ماشین مجازی vps

خوب من سه تا ماشین دارم.

یکی کامپیوتر دفتر کارم

یکی وی پی اسم

یکی هم لب تابی که خونه باهاش کار می کنم

خوب به مرحله اول می‌از کامپیوتر شرکت وصل می‌شم به وی پی اس

خوب این دستور چیه می‌گه؟ میگه که هر درخواستی که به پورت ۱۰۰۲۲ سرور میاد پروکسیش کن به پورت ۲۲ کامپیوتر سر کار.

✘ saeb-work  ~  ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667

 -R برای -R (Remotely forwarded ports)

و چون من پورت پیش‌فرض ssh رو از ۲۲ به 667 تغییر دادم با -p 667 گفتم که به پورت ۶۶۷ ssh بزن و این ربطی به آموزشمون نداره.

الان من توقع دارم که اگه توی وی پی اس به پورت ۱۰۰۲۲ اس اس اچ بزنم بتونم وصل شم کامپیوتر شرکتمون.

بعد از این‌که با کامپیوترم از سر کار ریموت پروکسی زدم توقع دارم از سرورم بتونم به کامپیوترم اس اس اچ بزنم

توی لب‌تاب دوتا ترمینال باز می‌کنم. توی ترمینال اول می‌زنم

home-laptop  ~  ssh -L 20022:localhost:10022 vps.saeb.id.ir -p 667

خوب این‌بار به جای R زدیم L

-L (Locally forwarded ports)

این دستور چی می‌گه؟

یگه که هر درخواستی به پورت ۲۰۰۲۲ لب تاب من میاد رو وصل کن به پورت ۱۰۰۲۲ وی پی اس. پورت ۱۰۰۲۲ وی پی اس هم که میدونیم وصله به پورت ۲۲ کامپیوتر سر کار. حالا من توقع دارم که اگه با لب تاب به پورت ۲۰۰۲۲ وصل شم، بتونم وصل شم به کامپیوتر سر کارم.

با یک ترمینال به وی پی اس اس اس اچ زدم توقع دارم توی ترمینال جدید لب تابم بتونم به کامپیوتر سر کار ssh بزنم

خوب پس تا الان دوتا دستور زدیم. اول توی کامپیوتر سر کار زدیم

✘ saeb-work  ~  ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667

و توی ترمینال اول  لب تاب توی خونه زدیم

 home-laptop  ~  ssh -L 20022:localhost:10022 vps.saeb.id.ir -p 667

خوب حالا من توی لب تابم یه ترمینال دیگه باز می‌کنم و می‌زنم

 ✘  saeb-home  ~  ssh -p 20022 -L 15900:localhost:5900 -L 16000:devops01.icico.net.ir:80 localhost

با

-L 16000:devops01.icico.net.ir:80

گفتم که پورت ۱۶۰۰۰ لب تابم رو وصل کن به آدرس

devops01.icico.net.ir

با پورت ۸۰ که فقط از طریق شبکه شرکتمون دسترسه. ولی حالا می‌تونم از مرور لب‌تابم با آدرس

localhost:16000

بهش دسترسی داشته باشم

حالا اگه روی کامپیوتر شرکتم یه وی ان سی سرور یا آر دی پی سرور نصب داشته باشم، میتونم ریموت هم بزنم به کامپیوتر شرکت.

مثلا توی ترمینال دوم وقتی به کامپیوتر شرکت وصل شدم یه وی ان سی سرور باز می‌کنم

خوب اگه پیچیده شد یه بار خلاصه سه تا دستوری که زدم رو می‌گم.

یک توی شرکت دستور زیر رو زدم و پورت ۱۰۰۲۲ وی پی اس رو وصل کردم به پورت ۲۲ کامپیوتر شرکت

ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667

تو لب تابم دوتا ترمینال باز کردم. توی ترمینال اول دستور زیر رو زدم و پورت ۲۰۰۲۲ لب تاب رو وصل کردم به پورت ۱۰۰۲۲ وی پی اس که خود پورت ۱۰۰۲۲ وصله به پورت ۲۲ کامپیتور شرکت

ssh -R 10022:localhost:22 vps.saeb.id.ir -p 667

و توی ترمینال دوم لب تابم کد زیر رو زدم و پورت ۱۶۰۰۰ لب تابم رو وصل کردم به آدرس سایتی که فقط توی شرکت در دسترسه و خارج شرکت در دسترس نیست.

ssh -p 20022 -L 15900:localhost:5900 -L 16000:devops01.icico.net.ir:80 localhost

همین دیگه تموم شد.

البته درخواست ssh ی که از کامپیوتر شرکت می‌فرستم رو میذارم توی حلقه while که اگه مشکلی پیش اومد دوباره وصل شه.

و توی کانفیگ ssh هم می‌گم هر ۶۰ ثانیه یه درخواست خالی بفرست به وی پی اس که ارتباطم قطع نشه.

پسندها(1)شاکی(0)

شل وردپرس

 

به من که [همیشه] تازه کارم، داشتن دسترسی به متدها و کلاسای وردپرس از طریق خط فرمان خیلی کمک می‌کنه که بتونم افزونه توسعه بدم.

یه پست هست مربوط به سال ۲۰۱۵ که متاسفانه حذف شده

https://jondavidjohn.com/interactive-wordpress-php-shell/

از سایت آرشیو

https://web.archive.org/web/20171108022106/https://jondavidjohn.com/interactive-wordpress-php-shell/

 

اون رو می‌ذارمش اینجا شاید به کار بقیه هم بیاد.

 

Ever wanted to just poke around inside a WordPress install? Run some code and immediately see the results without logging to the error log or other common approaches? This sort of tool has been available for many languages including PHP (php -a) for some time. It provides rapid experimentation and exploration of language features and behavior.

But what if we could load WordPress into the interactive shell? It was this type of tool that allowed me (and I’m sure many others) to learn the rails api so quickly. Allowing you to perform basic CRUD operations on your models, test out function calls, and see the results in real time.

It’s fairly easy to accomplish this with WordPress. Simply include the following file in your WordPress project, we’ll call it cli.php.

<?php
    // assumes this file is placed in ../wp
    define('CLI_WP_ROOT', dirname(__FILE__).'/wp');
    $_SERVER['HTTP_HOST'] = 'http://example.dev/';

    ob_start();
    require_once(CLI_WP_ROOT.'/wp-load.php');
    require_once(ABSPATH.'wp-admin/includes/admin.php');
    ob_end_clean();

Clearly you need to make sure your paths and faux HTTP_HOST match the current project.

Then simply start up an interactive php shell and include cli.php.

$> php -a
Interactive shell

php > include 'cli.php';
php > echo get_bloginfo('title');
Test WordPress Site

At this point you should have access to all of WordPress’s function library with complete database access so be careful if you are using this in an environment that has important data.

Now you have an interactive session to experiment and explore the WordPress API in real time.

پسندها(1)شاکی(0)

کوتاه کردن لینک از طریق خط فرمان

Fish shell

Python

#!/usr/bin/env python
# coding: utf-8

# In[1]:


from json import loads
from requests import post
from pprint import pprint


# In[ ]:


API="x0x6KYOk6WjuLBbA3Vwxl1rE5l9VuiMd0Yci88il0"
headers = {"X-API-key":API}
data = {"target":"https://sae13.ir"}


# In[6]:


response=post("https://kutt.it/api/url/submit",data=data,headers=headers)

js=loads(response.content.decode())

pprint(js)
پسندها(0)شاکی(0)

نصب روتر پیازی بر روی رسپری پای ۳ و رسپیان ۹ stretch

 

قبلن یه آموزش ساخت روتر پیازی گذاشته بودم که روی رسپیان ۹ stretch جواب نمی ده . لذا قایل های کانفیگم رو برای رسپیان ۹ اینجا قرار میدم. لکن یه نگاه بهش بندازید یکم توضیح دادم چی به چیه اونجا.

آموزش قبلی اینجاست

نرم‌افزاریی که نیاز هست الان نصب کنید :

sudo apt install tor torsocks hostapd dnsmasq

برای فعال کردنشون هم که از دستورای زیر استفاده می‌کنیم:

 

sudo systemctl enable tor

sudo systemctl enable hostapd

sudo systemctl enable dnsmasq

برای آی پی استاتیک کابل اترنت فایل زیر رو باید ویرایش کنیم :

sudo nano /etc/dhcpcd.conf

 

# Example static IP configuration:
interface wlan0
static ip_address=172.24.1.1/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=172.24.1.1
#static domain_name_servers=127.0.10.1 , 208.67.222.222


# Example static IP configuration:
interface eth0
static ip_address=192.168.1.13/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

البته قسمت دوم که مربوط به کابل شبکه eth0 هست، اجباری نیست ولی خوب خودم برای این که بتونم داخل شبکه خودم دسترسی ssh داشته باشم ترجیحم اینه که آی پی کابل شبکه هم استاتیک باشه.

 

کار پکیج hostapd اینه که یه هات اسپات بسازه و براش دوتا تنظیم نیاز داریم.

یک ساخت یه فایل توی آدرس زیر با این مشخصات :

 

nano /etc/hostapd/hostapd.conf

 

interface=wlan0
# Use the nl80211 driver with the brcmfmac driver
driver=nl80211
# This is the name of the network
ssid=Tor
# Use the 2.4GHz band
hw_mode=g
# Use channel 6
channel=6
# Enable 802.11n
ieee80211n=1
# Enable WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# Accept all MAC addresses
macaddr_acl=0
# Use WPA authentication
auth_algs=1
# Require clients to know the network name
ignore_broadcast_ssid=0
# Use WPA2
wpa=2
# Use a pre-shared key
wpa_key_mgmt=WPA-PSK
# The network passphrase
wpa_passphrase=1234567890-+
# Use AES, instead of TKIP
rsn_pairwise=CCMP

 

بعد هم توی فایل زیر

 

sudo nano /etc/default/hostapd

دنبال دستور

#DAEMON_CONF=""

بگردید و به صورت زیر تغییرش بدید:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

بریم سراغ فایل dnsmasq

اول از کانفیگ اصلیش یه بک آپ بگیریم

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.org

حالا یه فایل جدید بسازیم با داستانای زیر:

sudo nano /etc/dnsmasq.conf

interface=wlan0      # Use interface wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
#bind-interfaces      # Bind to the interface to make sure we aren't sending things elsewhere
no-resolv
port=53
server=127.0.10.1 # Forward DNS requests to Google DNS
domain-needed        # Don't forward short names
bogus-priv           # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time

 

 

داخل فایل زیر

sudo nano /etc/sysctl.conf

یه خط هست به صورت

#net.ipv4.ip_forward=1

که باید از حالت نظر بیرونش بیاریم و # اولش رو پاک می‌کنیم.

مونده فایل کانفیگ تور

sudo nano /etc/tor/torrc

که من فعلا فقط دستورای زیر رو توش دارم. تا برم پل بهش اضافه کنم بعدن و سرورترنسپورت meek و  obfs4 رو هم دستی کامپایل کنم و تعریف کنم:

 

Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 172.24.1.1
DNSPort 127.0.10.1:53
#DNSListenAddress 127.0.10.1

بیاید به محکم کاری فایل لاگ تور رو خودمون دستی بسازیم:

sudo touch /var/log/tor/notices.log

بریم سراغ تنظیمات فایروالمون:

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22
sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040

همانطور که مستحضرید دستورای فایروال با هر ری‌استارت پاک می‌شن. لذا پکیج iptables-persistent رو هم نصب می‌کنیم.

sudo apt install iptables-persistent

پسندها(4)شاکی(1)

بات پاک کننده فایل های APK از گروه ها

سلام این روزا نمیدونم چطور یه اسپمر اومده توی گروه‌ها فایل نصبی اندرویدی میزاره و از گروه لفت میده. یه بات نوشتم که اگه به جز مدیر کسی فایل نصبی اندروید بفرسته فایل رو پاک کنه و دسترسی طرف رو هم ببینده

برای استفاده از بات فقط لازمه مدیر گروهش کنید و دسترسی پاک کردن و بن کردن پیام ها رو بهش بدید.

http://t.me/apkdelbot

 

سورس بات  :

 

 

 

 

پسندها(1)شاکی(1)