2017年12月10日 星期日

使用Jenkins自動建置C#專案

最近剛把一個Library的Unit Test撰寫好,也在整理程式碼的時候發現以前沒發現的問題
,於是就心血來潮把Jenkins安裝起來,想讓Library自動建置與測試

1.環境
首先Library是.Net C#的專案所以需要使用可以安裝編譯器(MSBuild)的平台,於是使用Win7 SP1 x64當作底層OS,硬碟分割60G


2. Jenkins安裝
可以在官網(https://jenkins.io/download/)下載Windows安裝檔,選擇LTS的穩定版本
一直點選下一步即可安裝,安裝完畢後會自動開啟瀏覽器顯示預設密碼說明。
要在安裝目錄中取得預設密碼才能進行下一步,接著建立第一個使用者與選擇模組(可先使用預設值,安裝完成後再進行模組安裝)


3. 安裝Git
Jenkins安裝檔中「沒有包含Git」,需要手動安裝,安裝完畢後需要在「Global Tool Configuration」中設定Git路徑

Git for Windows下載
https://git-for-windows.github.io


4. 安裝MSBuild
可在下列連結取得MSBuild,而不需要安裝完整的VisualStudio

MSBuild 2015
https://www.microsoft.com/zh-TW/download/details.aspx?id=48159

MSBuild 2017
https://www.visualstudio.com/zh-hant/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15


5. 設定MSBuild路徑
在「Global Tool Configuration」中設定路徑



6.新增工作
Jenkins設定的部分到這邊就差不多結束了,剩下的就是設定要執行的工作
詳細的圖文說明可以參考這篇
https://dotblogs.com.tw/jamis/2016/04/05/115537


2017年5月29日 星期一

EFA-Project 更新 3.0.2.3

導入EFA之後垃圾郵件有減少使用上也沒什麼問題,前陣子收到讀者反映說新版本釋出,依照之前的方式修改程式無法運作,所以才有這篇的產生

主要是因為mailwatch的變更頗大,程式碼重新組織也增加了新功能
因此這次修改沒有像以前一樣那麼大


2017年2月19日 星期日

安裝Mantis作為事件追蹤系統

最近開會一直有橫向聯繫不夠的問題發生,因此老闆指示要加強各單位橫向聯繫的功能。
所以打算導入Mantis讓「支票攤在陽光下,自己開的支票自己坦」

1. 安裝 CentOS 7.3.1611 使用最小安裝,設定固定IP

2. 修改 /etc/selinux/config 將模式改為 permissive

3. 使用yum安裝所需的套件 net-tools unzip wget  mariadb-server httpd php php-pdo php-mysql

4. 設定服務開機啟動 systemctl enable httpd

5. 啟動服務 systemctl start mariadb

6. 關閉防火牆 systemctl disable firewalld  (好孩子不要學)

7. 下載 mantisbt-2.1.0.zip 解壓縮放置到 /var/www/html/

8. 下載 adminer.php 放置到 /var/www/html/

9. 使用adminer登入mariadb建立一個新的資料庫與使用者

10. 使用瀏覽器連接到mantis目錄會導向installer

11. 依照installer的引導完成mantis初始化

12. 最後需要將config.inc.php內容放置到 /var/www/html/mantis/config/config_inc.php

13. 預設帳號為administrator 密碼為 root

以上就是基本安裝


2017年2月12日 星期日

使用C#抓取PACS系統中的Worklist

PACS系統使用的通訊協定為DICOM,這是一個醫療影像通訊協定,目前大多數實作於TCP/IP基礎上,分為Client (SCU) 與 Server (SCP) 兩種腳色,Server端的認證方式有IP ACL、Port與AE Title,AE Title等同於HL7中的 Sending/Receiving Application 這個資料欄位的用途

Worklist為PACS系統其中的一個組件,可以跟HIS的檢查系統連線取得目前所有開立的檢查項目清單,並提供標準的DICOM協定讓醫療設備或第三方影像軟體可以存取這些資訊

在C#中可以使用fo-dicom這個library https://github.com/fo-dicom/fo-dicom
存取Worklist的動作稱為C-Find,在fo-dicom專案上有提供sample


2017年1月2日 星期一

垃圾郵件防治 EFA-Project 自訂關鍵字

EFA使用的是spamassassin作為計算分數的引擎,而spamassassin有自訂規則的功能


EFA裡面規則放置於 /etc/mail/spamassassin 目錄,可以看到一個 KAM.cf 的檔案,會自動更新 (從http://www.pccc.com/downloads/SpamAssassin/contrib/KAM.cf)


規則格式說明
https://wiki.apache.org/spamassassin/WritingRules


寫好規則之後需要重新啟動 MailScanner 服務才會套用


測試時發現在EFA的Spam Report項目看不到規則的說明(Description)

這是因為這個說明文字是存在資料庫中,因此要在EFA的Tools選單中執行「Update SpamAssassin Rule Descriptions」的動作才行


2016年3月13日 星期日

垃圾郵件防治 EFA-Project SPAM Gateway



話說垃圾郵件一直都是MIS的痛,尤其是沒預算買SPAM閘道的(最小25U、50U對於10多人的小企業負擔不起),上Gmail就更不用說了(10U一年就要一萬多),防火牆或者UTM上面的SPAM過濾往往是半殘(在主旨加上SPAM或對中文內容無法過濾),雖然知道Linux可以架設SPAM閘道但是身為兼職的MIS多一事不如少一事,遲遲沒時間研究,偶然找到EFA這個專案(https://www.efa-project.org),他有ova在虛擬化上部署極快,啟動後經過簡單的設定即可開始運作。


EFA使用的是 CentOS6 + Postfix + MailScaner + SpamAssassin + MailWatch
而且已經預先配置完成,在CLI的精靈模式設定可以很容易地完成初始化
只需要設定欲接收的網域與轉送的Mail Server IP即可

其實公司的Mail Server有內建垃圾郵件過濾與灰名單功能,但是提供可設定的項目太少,隔離清單還是英文的,內勤人員根本不知道怎麼用。至於灰名單功能,時常會造成郵件延遲,所以後來關掉了。

基本上EFA滿足了對於一個基本的SPAM閘道需求
1. 有隔離所
2. 有spam分數,用來分析校調
3. 能做客製化調整(MailWatch是PHP寫的配合的資料庫是MySQL)


2015年7月19日 星期日

從OpenWebmail遷移帳號至Zimbra

前言

前一陣子受託將OpenWebmail帳號轉移至Zimbra上,在網路上找了一些文件,原以為能直接匯入帳號,等SE安裝完後發現匯入的只能是明文的帳號密碼,而內建的帳號轉移功能不錯能將信箱郵件也匯入不過一樣需要明文的密碼,對於默默轉移的系統IT/MIS而言無法使用,而唯一能匯入密文密碼的方式只有透過LDIF匯入的方式了,而這個Zimbra的LDAP是安裝自帶的非OS本身的LDAP套件


步驟

1. 首先要取得舊有OpenWebmail系統的帳號(passwd)與密碼(shadow),然後利用下面這個PHP Script轉換成LDIF文件(注意:這個Script會將原本停用的帳號也轉換並「啟用」)



2. 取得Zimbra的LDAP連接資訊,剛開始誤以為是使用OS自帶的openLDAP,看LDAP設定檔的rootDN與password卻一直連不上去,後來才發現是自帶的服務,rootDN與password都不同,password是安裝隨機產生的需要使用「zmlocalconfig -s -m nokey zimbra_ldap_password」才能取得,rootDN「uid=zimbra,cn=admins,cn=zimbra」

3. 使用ldapadd命令匯入LDIF,如果匯入的LDIF有問題則會中斷匯入,造成某些帳號匯入某些尚未匯入,這時候就要修改LDIF錯誤以及去除已經匯入的帳號才能繼續進行匯入