แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - อั๋น ทรงวุฒิ

หน้า: [1] 2 3 ... 20
1

Server บางแห่ง มีการปิดค่า error ไม่ให้แสดงออกมาบนหน้าจอ แต่บางครั้ง เราจำเป็นต้องเช็ค error เหล่านั้น ก็สามารถเปิดเป็นกรณีพิเศษได้ โดยเพิ่มคำสั่งดังต่อไปนี้ลงไป

อ้างถึง

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

3
โค๊ด: [Select]
#  install pcscd python-pyscard python-pil
import os
import io
import binascii
import sys
#import traits
import codecs
from PIL import Image
from smartcard.System import readers
from smartcard.util import HexListToBinString, toHexString, toBytes
# Thailand ID Smartcard
def thai2unicode(data):
 result = ''
 result = bytes(data).decode('tis-620')
 return result.strip();
def getData(cmd, req = [0x00, 0xc0, 0x00, 0x00]):
 data, sw1, sw2 = connection.transmit(cmd)
 data, sw1, sw2 = connection.transmit(req + [cmd[-1]])
 return [data, sw1, sw2];
# Check card
SELECT = [0x00, 0xA4, 0x04, 0x00, 0x08]
THAI_CARD = [0xA0, 0x00, 0x00, 0x00, 0x54, 0x48, 0x00, 0x01]
# CID
CMD_CID = [0x80, 0xb0, 0x00, 0x04, 0x02, 0x00, 0x0d]
# TH Fullname
CMD_THFULLNAME = [0x80, 0xb0, 0x00, 0x11, 0x02, 0x00, 0x64]
# EN Fullname
CMD_ENFULLNAME = [0x80, 0xb0, 0x00, 0x75, 0x02, 0x00, 0x64]
# Date of birth
CMD_BIRTH = [0x80, 0xb0, 0x00, 0xD9, 0x02, 0x00, 0x08]
# Gender
CMD_GENDER = [0x80, 0xb0, 0x00, 0xE1, 0x02, 0x00, 0x01]
# Card Issuer
CMD_ISSUER = [0x80, 0xb0, 0x00, 0xF6, 0x02, 0x00, 0x64]
# Issue Date
CMD_ISSUE = [0x80, 0xb0, 0x01, 0x67, 0x02, 0x00, 0x08]
# Expire Date
CMD_EXPIRE = [0x80, 0xb0, 0x01, 0x6F, 0x02, 0x00, 0x08]
# Address
CMD_ADDRESS = [0x80, 0xb0, 0x15, 0x79, 0x02, 0x00, 0x64]
# Photo_Part1/20
CMD_PHOTO1 = [0x80, 0xb0, 0x01, 0x7B, 0x02, 0x00, 0xFF]
# Photo_Part2/20
CMD_PHOTO2 = [0x80, 0xb0, 0x02, 0x7A, 0x02, 0x00, 0xFF]
# Photo_Part3/20
CMD_PHOTO3 = [0x80, 0xb0, 0x03, 0x79, 0x02, 0x00, 0xFF]
# Photo_Part4/20
CMD_PHOTO4 = [0x80, 0xb0, 0x04, 0x78, 0x02, 0x00, 0xFF]
# Photo_Part5/20
CMD_PHOTO5 = [0x80, 0xb0, 0x05, 0x77, 0x02, 0x00, 0xFF]
# Photo_Part6/20
CMD_PHOTO6 = [0x80, 0xb0, 0x06, 0x76, 0x02, 0x00, 0xFF]
# Photo_Part7/20
CMD_PHOTO7 = [0x80, 0xb0, 0x07, 0x75, 0x02, 0x00, 0xFF]
# Photo_Part8/20
CMD_PHOTO8 = [0x80, 0xb0, 0x08, 0x74, 0x02, 0x00, 0xFF]
# Photo_Part9/20
CMD_PHOTO9 = [0x80, 0xb0, 0x09, 0x73, 0x02, 0x00, 0xFF]
# Photo_Part10/20
CMD_PHOTO10 = [0x80, 0xb0, 0x0A, 0x72, 0x02, 0x00, 0xFF]
# Photo_Part11/20
CMD_PHOTO11 = [0x80, 0xb0, 0x0B, 0x71, 0x02, 0x00, 0xFF]
# Photo_Part12/20
CMD_PHOTO12 = [0x80, 0xb0, 0x0C, 0x70, 0x02, 0x00, 0xFF]
# Photo_Part13/20
CMD_PHOTO13 = [0x80, 0xb0, 0x0D, 0x6F, 0x02, 0x00, 0xFF]
# Photo_Part14/20
CMD_PHOTO14 = [0x80, 0xb0, 0x0E, 0x6E, 0x02, 0x00, 0xFF]
# Photo_Part15/20
CMD_PHOTO15 = [0x80, 0xb0, 0x0F, 0x6D, 0x02, 0x00, 0xFF]
# Photo_Part16/20
CMD_PHOTO16 = [0x80, 0xb0, 0x10, 0x6C, 0x02, 0x00, 0xFF]
# Photo_Part17/20
CMD_PHOTO17 = [0x80, 0xb0, 0x11, 0x6B, 0x02, 0x00, 0xFF]
# Photo_Part18/20
CMD_PHOTO18 = [0x80, 0xb0, 0x12, 0x6A, 0x02, 0x00, 0xFF]
# Photo_Part19/20
CMD_PHOTO19 = [0x80, 0xb0, 0x13, 0x69, 0x02, 0x00, 0xFF]
# Photo_Part20/20
CMD_PHOTO20 = [0x80, 0xb0, 0x14, 0x68, 0x02, 0x00, 0xFF]
# Get all the available readers
readerList = readers()
print ('Available readers:')
for readerIndex,readerItem in enumerate(readerList):
 print(readerIndex, readerItem)
# Select reader
readerSelectIndex = 0 #int(input("Select reader[0]: ") or "0")
reader = readerList[readerSelectIndex]
print ("Using:", reader)
connection = reader.createConnection()
connection.connect()
atr = connection.getATR()
print ("ATR: " + toHexString(atr))
if (atr[0] == 0x3B & atr[1] == 0x67):
 req = [0x00, 0xc0, 0x00, 0x01]
else :
 req = [0x00, 0xc0, 0x00, 0x00]
# Check card
data, sw1, sw2 = connection.transmit(SELECT + THAI_CARD)
print ("Select Applet: %02X %02X" % (sw1, sw2))
# CID
data = getData(CMD_CID, req)
cid = thai2unicode(data[0])
print ("CID: " + cid)
# TH Fullname
data = getData(CMD_THFULLNAME, req)
print ("TH Fullname: " +  thai2unicode(data[0]))
#print(thai2unicode2(data[0])))
# EN Fullname
data = getData(CMD_ENFULLNAME, req)
print ("EN Fullname: " + thai2unicode(data[0]))
# Date of birth
data = getData(CMD_BIRTH, req)
print( "Date of birth: " + thai2unicode(data[0]))
# Gender
data = getData(CMD_GENDER, req)
print ("Gender: " + thai2unicode(data[0]))
# Card Issuer
data = getData(CMD_ISSUER, req)
print ("Card Issuer: " + thai2unicode(data[0]))
# Issue Date
data = getData(CMD_ISSUE, req)
print ("Issue Date: " + thai2unicode(data[0]))
# Expire Date
data = getData(CMD_EXPIRE, req)
print ("Expire Date: " + thai2unicode(data[0]))
# Address
data = getData(CMD_ADDRESS, req)
print ("Address: " + thai2unicode(data[0]))
'''
# PHOTO
photo = getData(CMD_PHOTO1, req[0])
photo += getData(CMD_PHOTO2, req[0])
photo += getData(CMD_PHOTO3, req[0])
photo += getData(CMD_PHOTO4, req[0])
photo += getData(CMD_PHOTO5, req[0])
photo += getData(CMD_PHOTO6, req[0])
photo += getData(CMD_PHOTO7, req[0])
photo += getData(CMD_PHOTO8, req[0])
photo += getData(CMD_PHOTO9, req[0])
photo += getData(CMD_PHOTO10, req[0])
photo += getData(CMD_PHOTO11, req[0])
photo += getData(CMD_PHOTO12, req[0])
photo += getData(CMD_PHOTO13, req[0])
photo += getData(CMD_PHOTO14, req[0])
photo += getData(CMD_PHOTO15, req[0])
photo += getData(CMD_PHOTO16, req[0])
photo += getData(CMD_PHOTO17, req[0])
photo += getData(CMD_PHOTO18, req[0])
photo += getData(CMD_PHOTO19, req[0])
photo += getData(CMD_PHOTO20, req[0])
data = HexListToBinString(photo)
f = open(cid + ".jpg", "wb")
f.write (data)
f.close
'''
# Exit program
sys.exit()

4
sudo apt install swig
sudo apt-get install python3-dev pcscd
sudo apt install libpcsclite-dev  python-pil
pip3 install pyscard image

sudo systemctl enable pcscd.service
sudo systemctl start pcscd.service
sudo systemctl status pcscd.service

5
พัฒนาเว็บไซต์ Webbased Developer / yii2 : json reply
« เมื่อ: 29 กรกฎาคม 2021, 10:47:19 PM »
ใช้ Gii สร้าง Models ก่อน

ไฟล์ :: Controller

อ้างถึง
use app\models\Billist;   // เรียก Model ที่สร้างเอามาใช้ค้นข้อมูล

public function actionIndex($id=0)
{
     \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
     if ($id==0) // ไม่ระบุ id
     {
        $billist = Billist::find()->all();
        if (count($billist)>0)  return $billist;
        else return array('data'=>'None');
     }
     else // ถ้าระบุ id มา ให้ไปหามาตอบ
     {
        $billist=Billist::find($id)->one(); 
        return $billist;
     }
}

6
อ้างถึง
https://github.com/mlazarov/ddos-stress

git clone https://github.com/mlazarov/ddos-stress.git

cd ddos-stress

npm install ddos-stress
node server.js

เปิดอีก tab แล้วรัน
node node.js

เข้า Browser localhost:3000/

ใส่ url เลือกสัก 1000req แล้ว start ไปเลย

ให้สังเกตอัตรา success

7
เราทำเว็บสักตัวนึง อยากรู้ว่าโดน Request ได้มากแค่ไหน
สามารถใช้ autocannon ทดสอบได้ครับ

อ้างถึง
https://github.com/mcollina/autocannon



autocannon -c100 -d5 p 10 http://localhost:3000


8
พัฒนาเว็บไซต์ Webbased Developer / Yii2 + Vuetify
« เมื่อ: 14 กรกฎาคม 2021, 03:39:49 PM »
Yii2 basic + Vuetify

[config/web.php]

อ้างถึง
'components' => [

        'assetManager' => [
            'bundles' => [
               'yii\web\JqueryAsset' => false,
               'yii\bootstrap\BootstrapPluginAsset' => false,
               'yii\bootstrap\BootstrapAsset' => false,
            ],
        ],


[views/layouts/main.php]

อ้างถึง
<?php

/* @var $this \yii\web\View */
/* @var $content string */

use app\widgets\Alert;
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;

AppAsset::register($this);
?>
<?php $this->beginPage() ?>

<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
  <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
  <meta charset="<?= Yii::$app->charset ?>">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <?php $this->registerCsrfMetaTags() ?>
  <title><?= Html::encode($this->title) ?></title>
  <?php $this->head() ?>
</head>
<body>

<?php $this->beginBody() ?>
        <?= $content ?>
<?php $this->endBody() ?>

  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.js"></script>
</body>
</html>

<?php $this->endPage() ?>

9
Nginx

log access to drop file in /etc/nginx/ but don't log 404

location = /robots.txt {
        access_log drop;
        log_not_found off;
}

log access to drop file in /etc/nginx/ but don't log 404
location = /favicon.ico {
        access_log drop;
        log_not_found off;
}

เหมาะกับ Laravel
log access to denied file in /etc/nginx/ but don't log 404 and also deny all to dot files
location ~ /\. {
        access_log denied;
        log_not_found off;
        deny all;
}

log access to drop file in /etc/nginx/ but don't log 404 and also deny all to files starting with a dollar sign ($temp.config.php)
location ~ ~$ {
        access_log denied;
        log_not_found off;
        deny all;
}

Apache

เหมาะกับ Laravel
<FilesMatch "^\.">
    Order allow,deny
    Deny from all
</FilesMatch>

10
อ้างถึง
https://aria2.github.io/

อ้างถึง
sudo apt-get update
sudo apt-get install aria2

example, to make 8 connections:

อ้างถึง
aria2c -x 8 http://www.example.com/example.file

12
อยากทำระบบต้นแบบง่ายๆ โดยดึงข้อมูลจาก Google Sheet เรามีวิธี

1) คีย์ข้อมูลตัวอย่างลงใน Google sheet
2) เลือกเมนู ไฟล์ -> เผยแพร่ไปยังเว็บ => เผยแพร่
3) กดแชร์โดยคัดลอก Link มา
4) แกะ id ของ Sheet ซึ่งจะเป็นอักษรชุดยาวๆ ถูกคั่นด้วยเครื่องหมาย /
5) เอา id ไปแทนที่ใน url ตัวอย่าง

อ้างถึง
https://spreadsheets.google.com/feeds/list/spreadsheetID/worksheetID/public/values?alt=json
spreadsheetID = ค่า id จากข้อ 4
worksheetID = Tab worksheet ที่ 1,2,3 เอาง่ายๆ ก็ลองใส่ 1 ก่อน

13
การเรียกแบบ Command line เพื่อหลีกเลี่ยงการ Route Default ผ่าน VPN


อ้างถึง
openvpn --pull-filter ignore redirect-gateway --config "your_file.ovpn"



อีกวิธี แก้ไขในฝั่ง server

ให้ตัดข้อความออกทั้งบรรทัด

อ้างถึง
push "redirect-gateway def1 bypass-dhcp"

15


แก้ไขไฟล์ /etc/sysctl.conf
เปิดการใช้งานรายการ ipv6

หน้า: [1] 2 3 ... 20