.Net C# 使用 Tuple 多個回傳值

一般如果要回傳多個值會建立一個 class,然後再使用class方式回傳。

例如:

        public class Info
        {
            public int UserID { get; set; }
            public string UserName { get; set; }
            public bool UserSex { get; set; }
        }

        public Info GetInfo()
        {
            return new Info
            {
                UserID = 1,
                UserName = "小明",
                UserSex = true
            };
        }

也可以使用 Tuple 方式進行回傳,但是此方式不易辨識值的名稱,可能會造成程式混亂,所以自行判斷是否使用。

        public static Tuple<int, string, bool> TupleGetInfo()
        {
            return new Tuple<int, string, bool>(1, "小明", true);
        }

        private static void Main(string[] args)
        {
            Tuple<int, string, bool> Info = TupleGetInfo();
            int UserID = Info.Item1;
            string UserName = Info.Item2;
            bool UserSex = Info.Item3;
            Console.ReadLine();
        }

 


  2017-01-13      ez      .NET
MikroTik RouterOS 實作 Web Load Balancer 負載平衡 (TCP、UDP皆可) L4

MikroTik RouterOS 的可控性非常的高,並且有內建 Script 功能,如果內建找不到的功能,大部分都可以用 Script 做出來。

如果 Script 也無法做出來,可以透過程式呼叫 MikroTik RouterOS API + VM,所以基本上是沒有任何限制的,只要你寫得出來皆可。

MikroTik RouterOS 的官方教學都只提到 外網負載平衡,並沒有實際運用在 內網負載平衡,Web Load Balancer 可以實作 L4 或 L7 ,本篇實作 L4 的 Web Load Balancer。

要做 Load Balancer 需要分配封包到不同機器,MikroTik RouterOS 提供兩種封包分配方式:

NTH:

如果有兩台伺服器,第一個封包會分配到第一台,第二個封包會分配到第二台,第三個封包會分配到第一台,以此類推。

PCC:

如果有兩台伺服器,用戶進入會依照 Source IP、Source Port、Destination IP、Destination Port 產生一組 hash,依照這組 hash 固定分配到第一台或第二台。

 

上敘兩種方法 NTH 及 PCC,會發現 NTH 並不適合作 Web Load Balancer,這樣會造成 session 異常,所以必須採用 PCC 方式,以下就採用 PCC 進行設定。

下圖為範例結構:

WAN:1.1.1.1

MikroTik RouterOS LAN:192.168.1.1

Web Server1:192.168.1.2

Web Server2:192.168.1.3

※ 實作以下範例,請確定 NAT 已設定正常,就是 Web Server 可以正常上網,否則可能會無法運作。


  2016-11-07      ez      Mikrotik RouterOS
.Net C# 判斷圖片 原始附檔名

副檔名(Filename Extension,或作延伸檔名、字尾名)用來標誌檔案格式的一種機制。例如「example.txt」的檔案,example是主檔名,txt為副檔名,表示這個檔案是一個純文字檔案,句號「.」就是主檔名與副檔名的分隔符號。

以上就是什麼是附檔名,相信如果你是看這篇的人,因該早就知道了。

 

當您提供一個圖片上傳服務,如果沒有檢查圖片的真偽,就有可能造成漏洞。

通常工程師會限制副檔名,但如果圖片夾帶PHP,駭客就可以利用此方式攻擊你的伺服器。(本篇不探討此攻擊方式)

 

假如您的伺服器限制只能上傳 JPG,但用戶天真的將 BMP 改為 JPG,此種方式就可逃避偵測,如果直接將檔案儲存到伺服器,就會造成容量、流量爆增。

最簡單的解決方法,就是使用程式將圖片讀取出來,並且重新儲存即可。

此方法雖然可行,但會造成多餘的資料處理量。

 

每種圖片格式都有特定的檔案標頭,利用此方式偵測檔案格式,如下:


  2016-11-06      ez      .NET
Let’s Encrypt 免費 SSL 使用 IIS 安裝憑證

Let's Encrypt 是一個於2015年三季度推出的數位憑證認證機構,將通過旨在消除當前手動建立和安裝憑證的複雜過程的自動化流程,為安全網站提供免費的SSL/TLS憑證。Let's Encrypt 憑證簽發為每三個月一次,所以 90 天必須更新一次,可以設定排成自動更新,所以不必擔心。

申請 Let's Encrypt 憑證必須驗證網站是否正常,所以網站需要能正常存取,不可離線申請憑證。

首先必須下載憑證軟體:https://github.com/Lone-Coder/letsencrypt-win-simple/releases

修改網站 web.config,因為 Let's Encrypt 會產生驗證檔案到網站目錄內,但檔案開頭為 . 所以需要修改 web.config 才能存取檔案。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension="." mimeType="text/plain" />
        </staticContent>
    </system.webServer>
</configuration>

將憑證軟體解壓縮,執行

letsencrypt.exe --accepttos --manualhost 網域名稱 --webroot 網站資料夾路徑

//例如
letsencrypt.exe --accepttos --manualhost www.ez2o.com --webroot D:\WebRoot


  2016-11-07      ez      IIS 、   好用軟體 、   安裝教學
MikroTik RouterOS 太難嗎?第一次設定就上手,極簡安裝篇

雖然自己寫了很多 MikroTik RouterOS 文章,也看過很多網路文章,發現一個共通點,就是操作不易!

很難讓一般人使用,所以決定寫這篇,第一次設定就上手,極簡安裝篇!雖然只是基本的設定,但可以符合大部分群眾。

MikroTik RouterOS 的穩定性無法比擬,受夠了三天兩頭分享器當掉嗎?快來試試看 MikroTik RouterOS 吧!

 

MikroTik 公司是一家位於歐洲 拉脫維亞 (Latvia)的公司,該公司於1995年開始致力于開發路由軟體 RouterOS,從一家幾人創業的小公司一路憑藉著超強的軟體開發能力,將RouterOS推向全球市場。RouterOS路由功能包括防火牆(Firewall),VPN,頻寬管理(Bandwidth Management) 等等,功能完整度可媲美 Cisco、Juniper 等大廠的產品,但是價格卻很低廉,所以在東南亞,南美洲,東歐等開發中市場,很快地搶占路由器市場,並贏得窮人的 Cisco 稱號。並於2002年,MikroTik成立RouterBoard品牌,銷售之網路設備產品,從SOHO應用到電信 ISP 等級的產品一應俱全,是玩家及企業的好選擇。

 

買回來 RouterOS 後,紙盒背面有一些基本的說明,分享器預設IP為 192.168.88.1,帳號 admin 密碼空白。


  2016-11-03      ez      Mikrotik RouterOS 、   安裝教學
Zen Load Balancer 免費 Web Net 負載平衡 設定 HTTPS 安全性

本篇增加 Zen Load Balancer 的 SSL 安全性

安裝可以參考:

https://www.ez2o.com/Blog/Post/Free-Zen-Load-Balancer-Setup

基本設定可以參考:

https://www.ez2o.com/Blog/Post/Free-Zen-Load-Balancer-Web-Server

HTTPS設定可以參考:

https://www.ez2o.com/Blog/Post/Free-Zen-Load-Balancer-HTTPS

 

開始 SSL 檢測網站:https://www.ssllabs.com/ssltest/

發現得分為 F,Cipher Strength 不到 60 分


  2016-10-30      ez      Linux 、   好用軟體 、   安裝教學
Zen Load Balancer 免費 Web Net 負載平衡 設定 HTTPS

本篇使用 Zen Load Balancer 新增 Https Server,以下將說明如何 安裝憑證、新增伺服器、增加安全性。

安裝可以參考:

https://www.ez2o.com/Blog/Post/Free-Zen-Load-Balancer-Setup

基本設定可以參考:

https://www.ez2o.com/Blog/Post/Free-Zen-Load-Balancer-Web-Server

開啟 Zen Load Balancer Master 管理後台,切換到 Manage> Certificates,點擊下圖框選的圖示,上傳憑證


  2016-10-29      ez      Linux 、   好用軟體 、   安裝教學
Zen Load Balancer 免費 Web Net 負載平衡 設定 備援機制 HA, High Availability 高可靠性

Load Balancer 可以備援其他網路設備,但如果 Load Balancer 故障也會造成服務掛點,此時就需要建置 HA, High Availability 高可靠性,簡單來說就是有兩台 Load Balancer 設備,當 Master 故障時自動切換到 Slave 讓運作不會中斷。

Zen Load Balancer Community Edition 版本就提供了 HA 功能,真是佛心啊!

安裝可以參考:

https://www.ez2o.com/Blog/Post/Free-Zen-Load-Balancer-Setup

基本設定可以參考:

https://www.ez2o.com/Blog/Post/Free-Zen-Load-Balancer-Web-Server

本篇使用兩台 Zen Load Balancer 建置 HA,依照下圖結構為範例。

上圖代表有兩台 Zen Load Balancer 設備,一台 Master 一台 Slave,Master IP 為 192.168.100.36,Slave IP 為 192.168.100.37,兩台共用 192.168.100.35,正常時 Master 持有 192.168.100.35,當 Master 異常時 Slave 持有 192.168.100.35,這樣就可以達到 HA 效果。


  2016-10-29      ez      Linux 、   好用軟體 、   安裝教學