2023/05/03

Elastix 的替代版本 Issabel

最近剛好要弄一台新的SIP Server,由於很久之前用過Elastix,所以就找了一下有沒有新版。

結果查了一下,原來Elastix在2016年被3CX收購,後續基本上就停止發行了,網路上能找到最後最新的版本是2016年發布的4.0.76版。

後來我持續搜尋一下,有人接手Elastix的後續開發,那就是Issabel。

Issabel一直有持續在更新,最新一版的ISO是在2020-01-02釋出,是基於CentOS 7.7製作,提供了Asterisk 11、13、16可選。

並且由於G729的專利在2017年1月1日到期,最新版的Issabel也把G729 Codec也包進去了。 

我自己試了一下,Issabel的介面基本上跟Elastix一樣,而且直接有內建Custom Contexts,但是改名叫Class of Service。 

對於原本Elastix的用戶,如果剛好要建新的SIP Server,Issabel值得一試。

Issabel官網:

https://www.issabel.org/

2017/02/03

ASM1061 的 event id 11 錯誤

最近幫一台 H61 的電腦買了一張 PCI-E 轉 2 SATA port 擴充卡,發現一個很奇怪的問題,在大量寫入的時候,Windows 的系統紀錄會跳出 event id 11 的錯誤,但是寫入的檔案是正確的。

最後經過一番測試,發現只要換成 SATA 2 的硬碟就不會跳這個錯誤,只有用 SATA 3 的硬碟才會有這個問題。

還有 Asmedia 的 Driver 實在是不怎樣,即使硬碟用 SATA 2 模式,但是用官方的 Driver,在遇上 Hard Disk Sentinel + FastCopy 全速拷貝時,當 Hard Disk Sentinel 偵測硬碟的狀態,會引發 event id 9 & event id 11 錯誤,最後換回 Windows 7 內建的標準 AHCI 1.0 驅動程式就不會出錯了。

2016/03/03

CentOS FATAL: Could not load /lib/modules/x.x.x/modules/moduled.dep: no such file or directory

CentOS 更新 Kernel 後,使用新 Kernel Boot 發生『FATAL: Could not load /lib/modules/x.x.x/modules/moduled.dep: no such file or directory』錯誤時,可以試試看

1. GRUB 先用上一個能正常開機的 Kernel 開機進入系統
2. 下指令『yum reinstall kernel』,yum會找最新一版 Kernel 重裝

如果運氣好,大概這樣就會正常了。

2015/05/24

製作 OneNote 2013 Free 版離線安裝檔

OneNote 2013在去年發表了免費版,但是官方網站只提供串流安裝,沒有離線安裝檔。

免費版不能奢求太多,但是串流安裝每次都要下載1G左右的檔案,實在是很浪費時間,還好還是有替代方案的。

替代方案就是用 Office Deployment Tool for Click-to-Run 來建立離線安裝包。

Office Deployment Tool for Click-to-Run下載連結:
https://www.microsoft.com/en-us/download/details.aspx?id=36778

使用教學參考:

App-V Part 6-建立 Office App-V 封裝
http://georgg.com/8031/app-v-part-6-create-office-app-v-package/

Using Office 365 ProPlus with the Office Deployment Tool
https://www.petri.com/using-office-365-proplus-with-office-deployment-tool

使用方式參考上面的文章就好了,我把重點的 configuration.xml 內容貼出來:
<Configuration>
  <Add OfficeClientEdition="32" >
    <Product ID="OneNoteFreeRetail">
      <Language ID="zh-tw" />
    </Product>
  </Add>
  <Updates Enabled="TRUE" />
  <Display Level="Full" AcceptEULA="TRUE" />
  <Logging Level="Standard" Path="%temp%" />
</Configuration>

使用上面的 configuration,搭配 Office Deployment Tool for Click-to-Run 就能建立離線安裝檔了。

Product ID參考資料:
Office 365 / Office 2013 - Product ID & Language ID Full List
http://vsean.net/blog/post/191

2015/02/06

如何讓 yum-plugin-security 在 CentOS 上發揮作用

yum-plugin-security 是 RedHat 給 Yum 用來做 "僅搜尋安裝安全更新" 的 plugin,在 CentOS 上也是可以安裝執行的。

不過最近發現,其實在 CentOS 上執行 yum-plugin-security 是沒有作用的,執行『yum list-security』會檢查安全更新,但總是會回報沒有需要的更新,以前覺得怪怪,不過因為都是剛裝好後執行,想說 CentOS 版本比較新吧,所以不以為意。

但是最近安全漏洞比較多, yum-plugin-security 也沒找到更新,所以特別去搜尋了一下 CentOS 的論壇,發現原來這 plugin 在 CentOS 上是沒作用的... orz

可以參考這篇討論:https://www.centos.org/forums/viewtopic.php?f=17&t=49639

為了解決這問題,網路上一陣搜尋後,還是找到可以讓 yum-plugin-security 發揮作用的方法,就是使用 generate_updateinfo 這個工具把給 RedHad 的 Errata updateinfo,處理成 CentOS 用,這樣就能讓 yum-plugin-security 發揮作用了。


環境準備:
1. Python 2.6
2. createrepo 套件
3. CentOS 5: yum-security
    CentOS 6: yum-plugin-security

如果不確定 Python 的版本,可以下指令『python -V』,如果你是用 CentOS 5 ,那大概是2.4無誤,確認版本後,如果真的是2.4,那你可以安裝 epel repo , epel 有提供 Python26 ,安裝以後不會弄壞原本系統中需要 Python 2.4 的程式。

====== CentOS 5 安裝 EPEL repo + Python26 方法 ======
CentOS 5 x86:
rpm -UvH http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum install python26
CentOS 5 x64:
rpm -UvH http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
yum install python26

接下來安裝需要套件:
CentOS 5:
yum install createrepo
yum install yum-security

CentOS 6:
yum install createrepo
yum install yum-plugin-security

再來要在系統中建立一個 security repo 的目錄,假設要建立在『/security』這個目錄下
mkdir /security
createrepo /security

如果正確的話,『/security』這個目錄底下會產生一個『repodata』的子目錄,裡面會有如下幾個檔案:
filelists.xml.gz
other.xml.gz
primary.xml.gz
repomd.xml

security repo 目錄建立完成後,要修改 CentOS 的 yum repo 檔,把這個 security repo 加到裡面,編輯『/etc/yum.repos.d/CentOS-Base.repo』,在最底下加入:

[security]
name=CentOS-$releasever - Security
baseurl=file:///security

接著把目錄切換到『/security』底下,下載產生 Errata updateinfo 需要的檔案跟工具:
cd /security
wget -N -P/security http://cefs.steve-meier.de/errata.latest.xml
wget --no-check-certificate https://github.com/vmfarms/generate_updateinfo/raw/master/generate_updateinfo.py

chmod 755 generate_updateinfo.py

若要做 script 定期更新 errata.latest.xml ,建議使用『wget -q -N -P/security』, -q 為安靜模式,不輸出畫面; -N 則是檢查檔案的 timestamp ,如果遠端比本地新才會下載; -P 則是檔案要下載到哪個目錄,請記得使用 -N 幫網站節省點流量。

接著要修改『generate_updateinfo.py』這個檔案:

=========== CentOS 5 ============
1. 這檔案預設使用『#!/usr/bin/env python26』,如果你是安裝Python26,那這行不用改

2. 修改第37行『RELEASES = ['6','other']』,改成『RELEASES = ['5','other']』

=========== CentOS 6 ============
1. 6應該是Python 2.6,第一行『#!/usr/bin/env python26』改成『#!/usr/bin/env python』

2. 第37行『RELEASES = ['6','other']』不用修改

generate_updateinfo.py 修改好後,下指令產生 updateinfo.xml 檔:
./generate_updateinfo.py errata.latest.xml

WARNING::Package name '9755e86ad8536c908f95340be308190b52989bfa0d9268a461c40a3f0d493bc7' couldn't be matched against regex
WARNING::Package name 'b1e14edd0d675c6fb0be64cb875fbd9fac208a58e427ea32f373c9359b35642c' couldn't be matched against regex
WARNING::Package name 'b71bd90354d2724f256f9f23e113eea89c98b3ce923380657461cb78d34ab8da' couldn't be matched against regex
......
如果有產生『WARNING::Package name xxxxxx couldn't be matched against regex』的錯誤訊息,不用管他,沒什麼影響。

script 跑完後會在 /tmp/ 下產生兩個目錄:
CentOS 5:
updateinfo-5
updateinfo-other

CentOS 6:
updateinfo-6
updateinfo-other

再來把 updateinfo.xml 合併到 security repo 裡面:
=========== CentOS 5 ============
/usr/bin/modifyrepo /tmp/updateinfo-5/updateinfo.xml /security/repodata

=========== CentOS 6 ============
/usr/bin/modifyrepo /tmp/updateinfo-6/updateinfo.xml /security/repodata

執行成功會產生類似如下訊息:
Wrote: /security/repodata/updateinfo.xml.gz
           type = updateinfo
       location = repodata/updateinfo.xml.gz
       checksum = 3b3cd257c3926053b76cca78738f2f8e98dc034b
      timestamp = 1423129008
  open-checksum = 659b045d2d084f24d7d68f9d6ddf95bafeaa3879
Wrote: /security/repodata/repomd.xml

做到這裡,已經把 yum-plugin-security 需要的檔案準備好了,接著下指令『yum list-security』,應該會有類似如下所示的訊息:
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
FEDORA-EPEL-2011-0466 bugfix   PyPAM-0.5.0-11.el5.i386
CESA_2009__1642 security acpid-1.0.4-9.el5_4.1.i386
CESA_2014__1193 security axis-1.2.1-2jpp.8.el5_10.i386
CESA_2014__1293 security bash-3.2-33.el5.1.i386
CESA_2014__1306 security bash-3.2-33.el5_10.4.i386
CESA_2014__1306 security bash-3.2-33.el5_11.4.i386
.......

這指令會把可用的安全更新列表出來,由於原本的 yum-plugin-security 是針對 RedHat 系統設計的,所以『yum list-sec cves』、『yum update --cve CVE-2007-5707』這些指令是沒作用的。

要注意的是 CentOS 的安全更新編號跟 RedHat 不一樣,以最近最新的 glibc ghost 漏洞作為例子:
CVE     編號:CVE-2015-0235
RedHat 編號: RHSA-2015:0090-1
CentOS 編號:CESA-2015:0090

經過處理的更新資訊已經從原本 RedHat 替換成 CentOS 的編號了,在查詢安全更新的資料時要以 CentOS 的公告為主。

若是想查查看有沒有 glibc 可用的安全更新,可以下指令『yum list-sec glibc』,若有會有如下列表:
CESA_2010__0787 security glibc-2.5-49.el5_5.6.i686
CESA_2010__0793 security glibc-2.5-49.el5_5.7.i686
CESA_2011__0412 security glibc-2.5-58.el5_6.2.i686
CESA_2014__1110 security glibc-2.5-118.el5_10.3.i686
CESA_2015__0090 security glibc-2.5-123.el5_11.1.i686
CESA_2014__1110 security glibc-2.12-1.132.el6_5.4.i686
CESA_2014__1110 security glibc-2.17-55.el7_0.1.i686
list-sec done

若是想瞭解現在系統需要安裝的安全更新與相關套件,可下指令『yum --security check-update』,若有會有如下列表:
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Limiting package lists to security relevant ones
Needed 99 of 559 packages, for security

acpid.i386                    1.0.4-12.el5                  base
axis.i386                     1.2.1-2jpp.8.el5_10           updates
bash.i386                     3.2-33.el5_11.4               updates
bzip2.i386                    1.0.3-6.el5_5                 base
bzip2-devel.i386              1.0.3-6.el5_5                 base
bzip2-libs.i386               1.0.3-6.el5_5                 base
dbus-glib.i386                0.73-11.el5_9                 base
dbus-glib-devel.i386          0.73-11.el5_9                 base
...
最後要更新安全更新,則下指令『yum update --security』即可。

日後只要定期去更新 errata.latest.xml ,然後產生新的 updateinfo.xml 檔,就可以檢查有沒有需要的安全更新了。

可能有人會想,花了大把功夫,還沒辦法全自動,有沒有簡單點的方案?

1. 花錢買 RedHat ,訂閱他們的更新
2. 用 Fedora
3. 換 Scientific Linux 6 以上,SL 官方從 6 開始有做對應的 updateinfo.xml
4. 祈禱 CentOS 官方早日開始做對應的 updateinfo.xml


參考資料:
1. http://serverfault.com/questions/369833/automatically-check-for-security-updates-on-centos-or-scientific-linux
2. http://blog.vmfarms.com/2013/12/inject-little-security-in-to-your.html
3. https://github.com/vmfarms/generate_updateinfo
4. http://cefs.steve-meier.de/
5. http://vogel.at.webry.info/201402/article_4.html

2014/05/11

修改 PotPlayer 快轉/倒退按鈕的功能

PotPlayer 不知道從哪一版開始把快轉/倒退的按鈕,修改成左鍵是快轉5秒/倒轉5秒,右鍵是下一個檔案/上一個檔案

用的很不習慣,所以研究了一下,改回來的方法。

以 1.6 版的預設面板為例:

複製 C:\Program Files\DAUM\PotPlayer\Skins\Default.dsf 到工作目錄底下,改名成Default.zip,解壓縮

用文字編輯器打開 VideoSkin.xml,尋找快轉/倒退按鈕設定,如下所示

<Button Tooltip='$ID_PLAYBACK_5SEC_BACK_PREV' CmdID='ID_PLAYBACK_5SEC_BACK' AltCmdID='ID_PROCESS_PREV' Left='50' Top='28' Width='13' Height='12' ImageLeft='55' ImageTop='389' />
<Button Tooltip='$ID_PLAYBACK_5SEC_FORW_NEXT' CmdID='ID_PLAYBACK_5SEC_FORW' AltCmdID='ID_PROCESS_NEXT' Left='69' Top='28' Width='13' Height='12' ImageLeft='111' ImageTop='389' />

將 CmdID 跟 AltCmdID 內容對調,如下所示

<Button Tooltip='$ID_PLAYBACK_5SEC_BACK_PREV' CmdID='ID_PROCESS_PREV' AltCmdID='ID_PLAYBACK_5SEC_BACK' Left='50' Top='28' Width='13' Height='12' ImageLeft='55' ImageTop='389' />
<Button Tooltip='$ID_PLAYBACK_5SEC_FORW_NEXT' CmdID='ID_PROCESS_NEXT' AltCmdID='ID_PLAYBACK_5SEC_FORW' Left='69' Top='28' Width='13' Height='12' ImageLeft='111' ImageTop='389' />

共有兩個地方要改,兩個都改完後存檔,再壓縮成 zip,然後改副檔名為 .dsf,檔名改個名字,放回 Skins

2021/10/02更新:

以 1.7.18958 版的預設面板為例:

解開Default.dsf的部份同上述1.6版,用文字編輯器打開BottomVideo.txt,位置應該是第8、9兩行,修改如下所示

<Button Align='Left' Tooltip='$ID_PLAYBACK_5SEC_BACK_PREV' CmdID='ID_PLAYBACK_5SEC_BACK' AltCmdID='ID_PROCESS_PREV' Width='41' ImageLeft='164' ImageTop='300' ImageWidth='41' ImageHeight='40' />
<Button Align='Left' Tooltip='$ID_PLAYBACK_5SEC_FORW_NEXT' CmdID='ID_PLAYBACK_5SEC_FORW' AltCmdID='ID_PROCESS_NEXT' Width='41' ImageLeft='328' ImageTop='300' ImageWidth='41' ImageHeight='40' />

將 CmdID 跟 AltCmdID 內容對調,如下所示

<Button Align='Left' Tooltip='$ID_PLAYBACK_5SEC_BACK_PREV' CmdID='ID_PROCESS_PREV' AltCmdID='ID_PLAYBACK_5SEC_BACK' Width='41' ImageLeft='164' ImageTop='300' ImageWidth='41' ImageHeight='40' />
<Button Align='Left' Tooltip='$ID_PLAYBACK_5SEC_FORW_NEXT' CmdID='ID_PROCESS_NEXT' AltCmdID='ID_PLAYBACK_5SEC_FORW' Width='41' ImageLeft='328' ImageTop='300' ImageWidth='41' ImageHeight='40' />

目前測試只要修改BottomVideo.txt即可,改完後存檔,再壓縮成 zip,然後改副檔名為 .dsf,檔名改個名字,放回 Skins

進 PotPlayer 選擇修改過的面板,打完收工。

2013/12/29

NeilMed Sinus Rinse 洗鼻器的好朋友,快速 DIY 洗鼻鹽

最近依照醫師指示,開始使用洗鼻器,洗了以後覺得效果還不錯,不過洗鼻鹽的開銷太大

洗鼻鹽如果買現成的,價格還滿貴的,上禮拜去丁丁藥局買士康的洗鼻鹽,24 包賣 162 元,一包 6.75 元 ,如果買 NeilMed 原廠的就更貴了,50 包要 666 元,一包 13.32 元

我研究了一下洗鼻鹽,洗鼻鹽的功能只是把水調成生理食鹽水,讓鼻腔黏膜在清洗的時候,不會有燒灼感,沒什麼神秘之處,所以決定自己調製就可以了

生理食鹽水的定義是氯化鈉濃度 0.9% 的水,也就是 1 公升的水添加 9g 的食鹽就行,所以換算下來 240ml 的水,要加 2.16g 的食鹽

比例知道後,剩下的問題就是無碘食鹽的取得,以及如何方便的弄出 2g 左右的食鹽

台鹽有兩款無碘鹽,一個是如意精鹽,成份是氯化鈉 96.5% 以上、水分 0.5% 以下、矽鋁酸鈉1%以下,矽鋁酸鈉的主要功能是防止鹽巴凝結;另外一個是無碘精鹽,就沒有額外添加抗凝結劑了

如意精鹽去全聯就買得到,但是無碘精鹽就比較麻煩,得要去台鹽的直營店才有賣,加盟店沒有,1KG 袋裝賣 15 元,因為台鹽直營店離我很近,所以我就買無碘精鹽了,用如意精鹽也是可以的,網路上查一下,很多人也都是用如意精鹽在調製的

接下來的問題是如何方便的弄出 2g 食鹽,我研究了一下,發現這個料理工具,定量調味瓶


這個調味瓶的底部有個小湯匙,按下瓶身上的把手後,底下湯匙伸出來,就是 2g 左右的食鹽,我今天收到後,特別拿電子秤來量了一下,重量確實是 2g 左右

不過這時候又有新問題了,NeilMed Sinus Rinse 的瓶口很小,那麼大的湯匙是沒辦法倒進去的,所以我想了一下,用包藥粉的紙來處理這問題應該就行了,鹽巴先倒在紙上,再折一下就可以順利倒進瓶子了

包藥粉的紙去醫療器材行就買的到,一份 30 元,看起來有幾百張,我懶得數了

整個 DIY 洗鼻鹽的開銷算起來,定量調味瓶買到手,一個大概不超過 100 元,無碘精鹽 1KG 一包 15 元,包藥紙幾百張一份 30 元,花費比買一盒現成的洗鼻鹽還低,但是可以洗 500 次啊