2015年1月8日 星期四

如何從Linux連線到Windows(使用RDP)


如何從Linux連線到Windows_並且將Linux的目錄對應到遠端的windows上
xfreerdp -d <你的AD網域>  --plugin cliprdr --plugin rdpsnd --data alsa -- --plugin rdpdr --data disk:<windows掛載的名字>:<Linux的絕對路徑> -- \
 -u $(zenity \
--entry \
--title="Domain Username" \
--text="Enter your Username") \
 -p $(zenity \
--entry \
--title="Domain Password" \
--text="Enter your _password:" \
--hide-text) \
 --sec rdp -f \
 $(zenity \
 --entry \
 --title="host ip" \
 --text="Enter your host ip")


Example:
xfreerdp -d hlmt --plugin cliprdr --plugin rdpsnd --data alsa -- --plugin rdpdr --data disk:LinuxDisk:/run/media/william -- \
 -u $(zenity \
--entry \
--title="Domain Username" \
--text="Enter your Username") \
 -p $(zenity \
--entry \
--title="Domain Password" \
--text="Enter your _password:" \
--hide-text) \
 --sec rdp -f \
 $(zenity \
 --entry \
 --title="host ip" \
 --text="Enter your host ip")

環境:
1.CenOS 7
2.xfreerdp 1.0.x

--
william 20150108

2015年咖啡偶的年度代號-低智商社會

As Title

2014年12月27日 星期六

如何使用virtualbox安裝 Mac OS (yosemite)

如何使用virtualbox安裝 Mac OS (yosemite)

1. 你得要有正版的Mac主機(iMac ,Mac notebook...), 
2. 登入Mac OS之後 , 從app store下載yosemite
3. 執行terminal程式
4. 變身成root權限
   執行sudo su - root 
5. 安裝iesd 
   gem install iesd
6. 將下載的yosemite轉換成BaseSystem(這幹嘛的我真的不懂啊...), 並且取名yosemite.dmg
   iesd -i "/Applications/Install OS X Yosemite.app" -o yosemite.dmg -t BaseSystem
7. 將yosemite.dmg轉成UDSP格式,並且取名叫 yosemite.sparseimage
   hdiutil convert yosemite.dmg -format UDSP -o yosemite.sparseimage
8. 掛載InstallESD.dmg 與 掛載轉成UDSP格式的yosemite.sparseimage
   hdiutil mount "/Applications/Install OS X Yosemite.app/Contents/SharedSupport/InstallESD.dmg"
   hdiutil mount yosemite.sparseimage
9. 將掛載在InstallESD上的BaseSystem檔案, 複製到yosemite.sparseimage上
   cp "/Volumes/OS X Install ESD/BaseSystem."* "/Volumes/OS X Base System/"

10. 解除步驟7掛載的檔案
   hdiutil detach "/Volumes/OS X Install ESD/"
   hdiutil detach "/Volumes/OS X Base System/"
ps. 若解除還有問題可以試試看這方式
   diskutil unmountDisk $(diskutil list | grep "OS X Base System" -B 4 | head -1)
   diskutil unmountDisk $(diskutil list | grep "OS X Install ESD" -B 4 | head -1)
10.將yosemite.sparseimage 轉成UDZO格式, 讓virtualbox可以掛載
   hdiutil convert yosemite.sparseimage -format UDZO -o yosemitefixed.dmg
11. 請將檔案複製到要使用virtualbox主機上, usb請格式化成exFat才能將4G以上的檔案複製成功
12.VirtualBox新增的時候, 晶片組要選PIIX3
13.設定一些參數, 若是windows請打開dos, 或是其他terminal
   假設virtualbox新增代號是Yosemite1010
   VBoxManage modifyvm "Yosemite1010" --cpuidset 00000001 000306a9 04100800 7fbae3ff bfebfbff
   VBoxManage modifyvm "Yosemite1010" --cpuidset 1 000206a7 02100800 1fbae3bf bfebfbff
   VBoxManage setextradata "Yosemite1010" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
   VBoxManage setextradata "Yosemite1010" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
   VBoxManage setextradata "Yosemite1010" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
   VBoxManage setextradata "Yosemite1010" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
   VBoxManage setextradata "Yosemite1010" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
14. 開始安裝囉


環境:
iMac 2010年中版
Win7 + VirtualBox 4.3

參考來源:
https://gist.github.com/frdmn/de12c894a385bc8e6bff

--
william 20141227

2014年12月25日 星期四

為什麼筆者建議要用IntelliJ + android plugin , 而不建議用google 自己包好的 android studio

2014年12月, google 正式發表Android Studio 開發環境, 準備捨棄多年配合Eclipse開發環境.


Android Studio 其實就是 IntelliJ + android plugin.
這嚇壞了一堆從未使用過 IntelliJ 開發環境的工程師...我也是啊:(

沒辦法了, google 推這個也推了好幾年, 也不是忽然就冒出來要大家用!

所以筆者試用了一下Android Studio 發現非常不容易適應, 不適應就算了,自己笨.

但還是有兩個超大問題, 必須跟大家報告:

1.
在筆者的軟體開發架構中,有一些是跨平台(pc,android...)可用的函式庫.
這些函式庫與android並不是緊密關聯的, 因此能在各平台繼續使用.
但函式庫居然無法跟著移植到android studio.
若要強制使用, 必須以模組的方式, 掛載在某個 android 專案底下, 真是超奇怪的設計,  那就失去跨平台的用意了...
當下就覺得超麻煩的, 為什麼呢?
因為函式庫要用Eclipse 開發, 而 android 要用 android studio 開發, 真是煩雜,
以前多好啊, 一個Eclipse搞定筆者所有的設計.

2.
 原本Eclipse架構的Git版本控管必須重來,  重新做Git版本控管...哇靠!害死人啊...


就在鬱卒的當下, 我發現有一個方式至少可以解決我必須同時使用Eclipse與IntelliJ兩個環境.
就是放棄 andoid studio ,  改用先前說明過的,IntelliJ + android plugin.

單純用了IntelliJ之後, 我可以建立跨平台函式庫, 也可以使用android專案,這實在是太棒了!

我查了一下, 若大家怕IntelliJ+andrioid plugin會跟android studio不相容, 那請放心!
IntelliJ 已經澄清了, 會是一致的!



以下節錄部分原文: 出處請點選這裡

Where do I get Android Studio?
Android Studio is available for download at the developer.android.com site.
Is Android Studio a fork of IntelliJ IDEA?
No. Android Studio and the Android plugin for IntelliJ IDEA are built from the same code, and all of the changes in Android Studio are, and will continue to be, available in IntelliJ IDEA releases.




下載時請選擇免費的community Edition或是30免費試用的 Ultimate Ediition
https://www.jetbrains.com/idea/download/

2014年12月24日 星期三

方便卻又隱藏資安問題的Chrome Remote Desktop(Chrome遠端桌面)

Chrome Remote Desktop 可以讓你很方便的藉由手機,網頁遙控您的電腦, 幾乎可以取代要收費的TeamViewer.
但也造成網管人員管控上的問題,尤其是小公司, 防火牆功能薄弱, 因此google 網站也直接告知如何阻擋自家的遠端桌面連線功能呢!
其實做法很簡單, 就是從DNS著手
藉由竄改(black hole)DNS方式,
控管以下兩個網址IP
chromoting-oauth.talkgadget.google.com
chromoting-client.talkgadet.google.com
就能達到目的,但...怎麼做就考網管的基本功了.

以下節錄google網站 https://support.google.com/chrome/a/answer/2799701?hl=en 裡面的敘述
To block users on your network from remotely accessing other computers using Chrome Remote Desktop, black hole the chromoting-oauth.talkgadget.google.com and chromoting-client.talkgadet.google.com Chrome Remote Desktop client DNS entries.

2014年12月19日 星期五

CenOS 6.6使用gnome上的終端機字型, 顯示一直有問題, 請改用細明體

請改用細明體字型 細明體字型因為有版權的問題, 所以請自行自windows複製到CentOS , 然後使用檔案管理系統點選該檔案按滑鼠右鍵選安裝就OK了. 細明體檔名 mingliu.ttc mingliub.ttc

2014年12月13日 星期六

如何讓遠端linux系統的window程式, 投射到自己的電腦上

如何讓遠端linux系統的window程式, 投射到自己的電腦上
1. 若自己的電腦也是linux os, 那很簡單
   只要輸入 ssh -Y  遠端電腦的ip  登入遠端電腦, 
  再輸入遠端電腦上 window 程式即可
2. 若自己的電腦是m$ windows系統
  請安裝兩個程式
  1. putty.exe  ssh連線程式
    http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

  2. Xming  在ms windows上啟動X server
     http://sourceforge.net/projects/xming/
   
    putty需設定X forward 功能,
    這樣登入時, 就能執行遠端window程式

2014年10月2日 星期四

如何安裝版本控管軟體 gitblit 1.6.0(類似github.com )

上一篇範例是如何安裝gitblit 1.3.2 這一篇是1.6.0 , 其實都一樣步驟, 但是多了幾句新的心得.
如何安裝gitblit(本文以centos 6.4,gitblit 1.6.0為例)
1. 下載 
   gitblit網站 http://gitblit.com/
   選擇 Gitblit GO (linux) 

2. 修改設定擋
   請解壓縮下載之程式, 解開後修改data/gitblit.properties
----------------------------------------------
   mail.server = <你的郵件主機>
   mail.port = 25
   mail.username = <帳號>
   mail.password = <密碼>
   mail.fromAddress = 
   server.httpsPort = 8443  
   server.httpsBindInterface = localhost 
   server.certificateAlias = localhost
   server.storePassword = gitblit
----------------------------------------------   
   httpsPort 是預設綁定port,可改443這樣瀏覽器就可以直接輸入https
   httpsBindInterface = localhost,將localhost去掉變成空白,可綁定所有網卡ip
   certificateAlias = localhost,將localhost改成主機名稱(請確認dns一致)
   server.storePassword = gitblit, gitblit是存放伺服器key story的安全密碼,請改成你要的
   mail.xxx 若設定正確, 可以直接發送使用者證書
   server.certificateAlias 請確認必須是localhost,不需要一開始就輸入主機名稱,否則會失敗 

3. 執行authority.sh (請注意,必須在windows狀態下執行)
  (1) 輸入相關資料
  (2) 點選紅色的(new server SSL certificate), 輸入主機名稱(這很重要),產生瀏覽器需要的認證檔案
  (3) 點選帳號admin, 然後修改email , OU等資料.
  (4) 點選admin, 在下方new certificate, 產生admin的證書(供瀏覽器與Git使用)
  (5) 將data/certs/admin.zip備份出來,或是利用email傳出去
4. 啟動server
   ./gitblit.sh

5. 瀏覽器輸入https://:8443/
   預設帳號與密碼是admin , 請登入改掉
   **若瀏覽器出現憑證錯誤的問題, 您可以打開admin.zip,讓瀏覽器匯入裡面的憑證


6.新增使用者
  開瀏覽器,使用admin登入, 新增使用者(若有email記得輸入).
  回到步驟3, 產生新使用者的證書,備份出來給新使用者,或是點選email寄發

7.瀏覽器匯入證書
  通知該新使用者,執行瀏覽器匯入證書
  ps.1: 若只是想讓瀏覽器,請匯入ca.cert即可.
     2: 若要認證+自動登入,請匯入<使用者>.p12檔案, 例如要讓admin自動登入, 請選admin.p12即可.

8.安裝windows用戶端git程式
  下載msysgit與tortoisegit, 然後安裝
  https://code.google.com/p/msysgit/  
  or 
  http://www.collab.net/giteyeapp  #超強的管理介面, 可以取代msysgit
  安裝完畢重開機

9.匯入伺服器端的證書
   dos狀態下,找出msysgit的目錄 , 
   通常是 C:\Program Files (x86)\Git\bin 
   例如該電腦使用者為 william , 步驟6的證書檔案william.zip已經解開到c:\git_cert目錄
   openssl rsa -in "c:\git_cert\william.pem" -out "c:\git_cert\william.key"
   git config --global http.sslcert  "c:\git_cert\william.pem"
   git config --global http.sslkey   "c:\git_cert\william.key"

   ** --global 是代表電腦只有一個全域證書, 若有多個外部server需要處理,
   需先加入--global, 然後clone repository一份到用戶端電腦的指定目錄,再到該目錄,執行
   git config  http.sslcert  "c:\git_cert\william.pem"
   git config  http.sslkey   "c:\git_cert\william.key"
   第二個外部git server就必須再重來--global , 然後再做一次去掉--global的步驟

這樣就可以從server上clone一份專案到使用者 電腦, 使用者也可以很方便使用檔案總管做事情

Optional
1.data/certs/mail.tmpl, 可中文化修改email內容(通知對方取得認證檔案)
2.data/certs/instructions.tmpl ,可中文化安裝步驟.

ps. clone repository的時後, 可以打開檔案總管 , 選特定目錄 , 再按滑鼠右鍵選clone


環境 CentOS 6.4 , java 7 , gitblit 1.6.0
--
william
2014/10/02

2014年9月30日 星期二

2014年9月18日 星期四

讓你的roundcube webmail 啟用休假功能

原理:
     本例子透過roundcube的vacation外掛程式,於資料庫(mysql)設定使用者email虛擬轉寄功能(virtual_aliases),
     之後讓postfix讀取virtual aliases 轉寄設定,轉寄兩封信, 一封還是寄給使用者, 另一封則回傳給寄件者說明正在休假.

2014年6月17日 星期二

(EPEL)(roundcubemail)如何安裝與設定roundcubemail(使用RPM)


1. 下載&安裝 epel 套件
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

2. 安裝mysql套件
# yum install mysql-server mysql 
# service mysql start
3. 安裝roundcubemal套件 (From EPEL) 
# yum install roundcubemail  

4. 建立roundcubemail資料庫 & 建立roundcube帳號與權限
# mysql -p -uroot
mysql> create database roundcubemail character set utf8 collate utf8_bin; 
mysql> grant all privileges on roundcubemail.* to roundcube@'localhost' identified by 'password';
mysql> flush privileges;
mysql> exit

5. 匯入資料庫結構
# cd /usr/share/doc/roundcubemail-0.9.5/SQL
# mysql -p -u roundcube roundcubemail < mysql.initial.sql
Enter password:

6. 設定資料庫相關設定值
# vi /etc/roundcubemail/db.inc.php 
----------------------------------------------------------------------------------
$rcmail_config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
----------------------------------------------------------------------------------

7. 設定郵件伺服器 & 登入相關設定值
# vi /etc/roundcubemail/main.inc.php  

$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 143; // imap
$rcmail_config['mail_domain'] = '%t'; // 若你輸入的網址是 http://mail.test.com , 則該帳號預設email是"帳號@test.com"
$rcmail_config['smtp_server']='localhost';
$rcmail_config['smtp_port']=25;
$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';
$rcmail_config['smtp_auth_type'] = 'LOGIN';
$rcmail_config['smtp_helo_host'] = 'mail.test.com';
$rcmail_config['language'] = zh_TW;
$rcmail_config['default_charset'] = 'big5';


8. 開放httpd權限
# vi /etc/httpd/conf.d/roundcubemail.conf 
Alias /roundcube /usr/share/roundcubemail
<Directory /usr/share/roundcubemail/>
Options -Indexes   
DirectoryIndex index.html index.htm index.php
AllowOverride None
Order Deny,Allow
Allow From all   
Deny From 192.168.0.0/16  
</Directory>

重開 httpd
# service httpd start
開啟網頁 http://localhost.test.com/roundcube
這樣就完成了
環境:
Centos 6.x
roundcubemail 0.9.5
postfix 2.6.6

--
william 20150614
roundcube 1.0.0以後 db.inc.php 與 main.inc.php 合併成 config.inc.php - 20141224

2014年6月13日 星期五

(postfix)如何增加spf檢查(阻擋偽造您網域的郵件伺服器)

前言: 
當然, SPF不是防曬係數...

很久以前, 大家一直宣傳郵件發信主機的正解與反解要一致, 才能杜絕廣告信.
郵件系統發展到後來,一個ip常常代表很多網域的發信(郵件代管), 正反解一致的做法就破功了, 好險這期間大家一直提出建議, 想辦法阻擋偽造或非法的郵件伺服器發廣告信,
這些建議以DKIM與SPF最為有名.
但個人覺得SPF最簡單, 也行之有年了.

步驟:
1. SPF 設定
若我們網域有設定SPF記錄, 郵件主機被偽造以及被擋下來的機率將大減,

以下設定很簡單, 在DNS增加一筆TXT, 敘述mx的主機都是合法郵件主機
@ IN TXT "v=spf1 a mx ~all"

當然除了mx所敘述的都是合法外, 我會建議多增加郵件主機的IP, 可防止反解異常,被別人誤判問題,如下設定
@ IN TXT "v=spf1 a mx  ip4:192.168.0.1/16 ~all"

2. 在寄件者email的檔頭上增加SPF檢查資料
# wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.007.tar.gz
本例子是2.007版本(可以查看http://www.openspf.org/blobs下載適合的版本)
或是https://launchpad.net/postfix-policyd-spf-perl/  可找到更新的版本
# tar vfxz postfix-policyd-spf-perl-2.007.tar.gz
# cd postfix-policyd-spf-perl-2.007
# cp postfix-policyd-spf-perl /usr/libexec/postfix/  
# vi /etc/postfix/master.cf 
在master.cf增加
policy  unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/bin/perl /usr/libexec/postfix/postfix-policyd-spf-perl
# vi /etc/postfix/main.cf
在main.cf裡找出
smtpd_recipient_restrictions =
        ...........................
        ...........................
        reject_unauth_destination,
        ...........................

增加以下設定
        check_policy_service unix:private/policy

變成這樣
smtpd_recipient_restrictions =
        ...........................
        ...........................
        reject_unauth_destination,
        ...........................
        check_policy_service unix:private/policy

**切記該設定必須在 reject_unauth_destination 之後**

3. 因為第2步驟會在寄來的信件檔頭增加spf的判斷, 因此可以透過檔頭檢查的方式, 過濾掉有問題的信件
# vi main.cf 查看或增加檔頭檢查設定
header_checks = regexp:/etc/postfix/header_checks
# vi /etc/postfix/header_checks
增加以下資料
 /^Received-SPF: fail/ DISCARD SPF-SOFTFAIL-DISCARD
 /^Received-SPF: softfail/ DISCARD SPF-SOFTFAIL-DISCARD


以上3個步驟,就可以讓postfix做SPF Check的動作


以下是EMAIL檔頭出現的SPF內容:
Received-SPF: pass
Received-SPF: fail
Received-SPF: softfail
Received-SPF: neutral
Received-SPF: none
Received-SPF: permerror
Received-SPF: temperror

測試環境:
Centos 6.x 
Postfix 2.6.6

--
william 20140613