通過修改Hosts檔案實現讓Win7僅能訪問指定的網頁

參考網址:https://www.itread01.com/p/916977.html

前段時間銀行客戶開了個體驗區,是想讓大家體驗下他們的網銀,但是發現很多使用者卻通過電腦上百度,上微博啥的,他們卻只想讓使用者訪問他們的網銀系統。

辦法1 修改Hosts檔案

hosts檔案位於 Windows/system32/drivers/etc/目錄下,用於控制域名訪問。我想到的辦法修改hosts檔案,讓DNS域名解析這些網站都指向127.0.0.1,如下:

127.0.0.1 www.baidu.com

127.0.0.1 www.qq.com

……

但是,不可能把所有的域名都寫一遍吧,有人問用 127.0.0.1 * 可不可以?答案是不可以,因為hosts檔案不支援萬用字元。

所以這個方法理論可行,但實際不可行。

辦法2 通過Hosts檔案和網路設定控制

1.在網路設定裡面將DNS伺服器設定成 127.0.0.1,網路連結狀態-> TCP/IPv4 -> 屬性 -> 首選DNS伺服器 -> 127.0.0.1

這時候,你會發現,開啟瀏覽器通過域名訪問任何網頁都是不行的(但是通過IP可以,但這樣至少可以遮蔽掉95%的使用者,因為

大多數使用者只記得域名,不可能記得伺服器IP).

2.修改hosts檔案,指定不被禁止的域名。比如:61.135.169.125 www.baidu.com, 此時,訪問www.baidu.com時,就不是通過DNS服務 器了,而是直接對映到 61.135.169.125了。

上述的方法大家可以試試,雖然不是非常完美的解決方案,但確實很簡單。

 

另有一篇文章 https://blog.gtwang.org/windows/windows-linux-hosts-file-configuration/

G. T. Wang

Windows 的 hosts 檔不支援萬用字元(wildcards),可能要改用類似 Acrylic DNS Proxy 的方式。

參考資料:superuserstackoverflowAcrylic DNS Proxy

發表於 Windows系統 | 發表迴響

Wifi not working in Acer Aspire 5750G

參考網址:https://ubuntuforums.org/showthread.php?t=2137578

sudo apt-get install bcmwl-kernel-source
發表於 Linux系統 | 發表迴響

【mysql】複製一筆資料

參考網址:http://blog.7311.tw/2014/05/mysqlmssql.html

複製一筆資料
MySQL、MSSQL 都可使用
 

INSERT INTO test(
id,
name,
test1,
test2
)
SELECT
3 AS id,
name,
'test' AS test1,
test2
FROM test
WHERE id =1

* 要複製原來的值就不用AS

 

參考網址:https://caloskao.org/mysql-%E5%9C%A8%E5%90%8C%E4%B8%80%E5%BC%B5%E8%B3%87%E6%96%99%E8%A1%A8%E9%80%B2%E8%A1%8C%E8%A4%87%E8%A3%BD%E8%B3%87%E6%96%99%E7%9A%84%E6%93%8D%E4%BD%9C/
由於先dump出來再操作實在是覺得有點麻煩又有點蠢
想到應該可以直接下SQL來完成這件事情
於是稍微研究了一下
基本上只要避開primary column即可完成

發表於 Linux系統, 程式設計 | 發表迴響

[HTML]動態增加input物件

參考網址:https://www.sanwebe.com/2013/03/addremove-input-fields-dynamically-with-jquery

https://dotblogs.com.tw/newmonkey48/2016/12/14/180815

$(document).ready(function() {
	var max_fields      = 10; //maximum input boxes allowed
	var wrapper   		= $(".input_fields_wrap"); //Fields wrapper
	var add_button      = $(".add_field_button"); //Add button ID
	
	var x = 1; //initlal text box count
	$(add_button).click(function(e){ //on add input button click
		e.preventDefault();
		if(x < max_fields){ //max input box allowed
			x++; //text box increment
			$(wrapper).append('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
		}
	});
	
	$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
		e.preventDefault(); $(this).parent('div').remove(); x--;
	})
});

 

<div class="input_fields_wrap">
    <button class="add_field_button">Add More Fields</button>
    <div><input type="text" name="mytext[]"></div>
</div>

 

發表於 程式設計 | 發表迴響

angularjs

參考網址:https://angularjs.org/
逛網站時,發現這個網站設計得很不錯。2020臺南古都國際半程馬拉松

有用了angularjs的技術
前端工程的極致精品: AngularJS 開發框架介紹

發表於 程式設計 | 發表迴響

mysql資料庫跨伺服器查詢,需要確定mysql支援FEDERATED

參考網址:程式前沿

 

發表於 Linux系統, 程式設計 | 發表迴響

[linux]zip指令用法

參考網址:
將/home/目錄下1開頭的檔案壓縮成home.zip 

zip -r home /home/1*

第一個home是目的檔,會自動加.zip
-r 參數是包含目錄

發表於 Linux系統, 軟體使用 | 發表迴響

ckeditor加入elfinder檔案上傳功能

參考實戰php7+mysql從0開始寫出自己想要寫的程式(吳弘凱,松崗)P15-14
■修改ckeditor/config.js
在最下方的}之前加入
config.filebrowserBrowseUrl='../js/elFinder/elfinder.html';

■修改elFinder/elfinder.html
直接從光碟複製過來

■在include/config.php中定義
//上傳檔案路徑

define('_UPLOAD_PATH' ,'/var/www/html/sport10901/upload/');
define('_UPLOAD_URL' ,'http://163.26.179.2/sport10901/upload/');

■修改elFinder/php/connector.minimal.php
先在開頭引入
include_once "../../../include/config.php";
修改

//'uploadDeny'    => array('all'),
'uploadDeny' => ['text/php', 'text/x-php', 'application/php', 'application/x-php', 'application/x-httpd-php', 'application/x-httpd-php-source'],

//'uploadAllow'   => array('image', 'text/plain'),
'uploadAllow' => ['all'],

//'uploadOrder'   => array('deny', 'allow'), 
'uploadOrder' => ['allow', 'deny'],


 

註:出現「elfinder無可讀取的磁碟」是因為_UPLOAD_PATH or _UPLOAD_URL 引入錯誤
elFinder/php/connector.minimal.php開頭未正確引入include_once "../../../include/config.php";

發表於 程式設計 | 發表迴響

veyon安裝與設定

參考網址:http://wow-cai2.blogspot.com/2018/09/veyon.html

https://veyon.io/

管理員手冊

使用說明書

◆配合5a88使用
先在5a88學生端電腦安裝veyon,產生公鑰及私鑰並匯出
教師端匯入學生端的公鑰及私鑰即可

 

◆匯入電腦教室電腦csv

用最高權限執行CMD
C:\Program Files\Veyon>veyon-cli networkobjects help import
用法
networkobjects import <檔案> [location <位置>] [format <格式字串含預留位置>] [regex <正則運算式含預留位置>]

描述
使用包含一個或多個預留位置的給予格式字串或正則運算式,從指定的文字檔匯入物件。 有效的預留位置為: %location% %name% %host% %mac% %type%

範例
    * 將簡單 CSV 檔匯入到單一教室:
        networkobjects import computers.csv location "教室 01" format "%name%;%host%;%mac%"

    * 匯入第一列中含有位置名稱的 CSV 檔:
        networkobjects import computers-with-rooms.csv format "%location%,%name%,%mac%"

    * 使用正則運算式匯入含金鑰/值配對的文字檔:
        networkobjects import hostlist.txt location "教室 01" regex "^NAME:(%name%:.*)\s+HOST:(%host%:.*)$"

    * 匯入任意格式的資料:
        networkobjects import data.txt regex '^"(%location%:[^”]+)”;”(%host%:[a-z\d\.]+)".*$'

匯入指令
 

veyon-cli networkobjects import ip_veyon.csv location "cmpt" format "%name%;%host%;%mac%"

 

匯入檔範例ip_veyon.csv
 

11;192.168.0.211;f4:4d:30:xx:yy:zz
12;192.168.0.212;f4:4d:30:xx:yy:zz
13;192.168.0.213;f4:4d:30:xx:yy:zz

 

發表於 Windows系統, 軟體使用 | 發表迴響

WakeOnLan

參考網址:
Linux Wake-On-Lan

apt-get install etherwake 進行安裝。使用指令傳送開機封包,請執行 etherwake 00:30:2D:5F:12:A1 送出開機封包。

圖形介面的WakeOnLan
apt install gwakeonlan

使用 PHP 網路開機
在區域網路中,可以傳送 Magic Packet 給主機的網路卡,Magic Packet 內容開頭有6個 "FF",再接 16 個網路卡 MAC,當主機版有開啟支援 Wake on LAN 功能,網路卡接收到符合條件的 Magic Packet,就能開啟電腦。(每個主機版關於 Wake on LAN 的名稱不盡相同,例如 PME Event Wake Up、Power On By PCI Devices…)
另一個影響能否網路開機的設定,在作業系統裡面裝置管理員,網卡裝置內容裡的電源管理,需勾選「允許這個裝置喚醒電腦」。

 

假設網路卡 MAC 位址為:01-02-03-04-05-06
Magic Packet 內容則為:

FFFFFFFFFFFF010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506010203040506

然後以 UDP 通訊協定傳送給電腦的 port 7、或 port 9

 

所以實現網路開機的方式,就是在區網內想辦法傳送給目標電腦網卡 Magic Packet,如果用來傳送 Magic Packet 的設備(Server),平常也有對外連線,也可達成在外網開機的效果。

以下 PHP 傳送 Magic Packet 範例來源
WOL: Wake-on-LAN Tutorial with Bonus PHP Script
僅稍微修改後如下:

class WakeOnLan {

    /**
     * 喚醒電腦
     * @param type $addr ,目標IP 或 廣播位址(格式 01-02-03-04-05-06 或 01:02:03:04:05:06)
     * @param type $mac ,MAC 位址
     * @param type $port , 7 or 9
     * @return boolean
     */
    public function wake($addr, $mac, $port) {
        $mac = str_replace("-", ":", $mac);
        $addr_byte = explode(':', $mac);
        $hw_addr = '';
        for ($a = 0; $a < 6; $a++) {
            $hw_addr .= chr(hexdec($addr_byte[$a]));
        }
        // 開頭六個 "FF"
        $msg = chr(255) . chr(255) . chr(255) . chr(255) . chr(255) . chr(255);
        // 16個MAC
        for ($a = 1; $a <= 16; $a++) {
            $msg .= $hw_addr;
        }
        // 開一個 UDP 的 socket
        // AF_INET:IP4
        // SOCK_DGRAM:The UDP protocol is based on this socket type
        // SOL_UDP:使用 UDP 通訊協定
        $skt = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
        $err = array();
        if ($skt === false) {
            $err[] = "Error creating socket!";
            $err[] = "Error code is '" . socket_last_error($skt) . "' - " . socket_strerror(socket_last_error($skt));
            throw new Exception(implode("\n", $err));
        } else {
            // 設定使用broadcast廣播訊息
            // $opt_ret = socket_set_option($skt, 1, 6, TRUE);
            $opt_ret = socket_set_option($skt, SOL_SOCKET, SO_BROADCAST, true);
            if ($opt_ret === false) {
                $err[] = "setsockopt() failed, error: " . socket_strerror(socket_last_error($skt));
                throw new Exception(implode("\n", $err));
            }

            if (socket_sendto($skt, $msg, strlen($msg), 0, $addr, $port)) {
                //Magic Packet sent successfully
                $res = trim(socket_strerror(socket_last_error($skt)));
                socket_close($skt);
                return $res;
            } else {
                $err[] = "Magic packet failed!";
                throw new Exception(implode("\n", $err));
            }
        }
    }

}

$WOL = new WakeOnLan();
try {
    // 使用 port 7
    $res = $WOL->wake('192.168.0.255', "01-02-03-04-05-06", 7);
    // 也可使用 port 9
    //$res = $WOL->wake('192.168.0.255', "01-02-03-04-05-06", 9);
    var_dump($res);
} catch (Exception $ex) {
    var_dump($ex->getMessage());
}

 

發表於 程式設計 | 發表迴響