2013年10月21日 星期一

在Ubuntu 12.04 LTS 設定防火牆 (使用ufw)

ufw即為「Uncomplicated Firewall」的縮寫,直譯則是「不複雜的防火牆」
Ubuntu 的 ufw 跟之前學的iptables比,真的很簡單
但是 ufw 只是一個簡單的 iptables 前端定工具,無法完全取代 iptables 的有設定,所以若想做進一步複雜的 firewall 設定,還是得回到 iptables 層面。
簡單幾句指令、就可以加入規則

Ubuntu預設都會安裝,如果你目前使用的版本沒有
sudo apt-get install ufw
所有設定檔在/etc/ufw/下

常用的指令
啟用
  sudo ufw enable

關閉
   sudo ufw disable

查看防火牆狀態/規則
   sudo ufw status

查看防火牆規則  以編號列出
sudo ufw status numbered

刪除防火牆規則

sudo ufw delete RULE | NUM
Ex:
sudo ufw delete 1  //刪除列表"1號"規則
sudo ufw delete allow http  |   sudo ufw delete allow 80
sudo ufw delete deny http  |   sudo ufw delete deny 80
sudo ufw delete reject http  |   sudo ufw delete reject 80
================================================
加入防火牆規則
sudo ufw allow http  |   sudo ufw allow 80
指令跟刪除差不多  只是把delete拿掉
指令裡、以protocol方式加入  如上面http之類的...
ufw會參照/etc/services裡面的通訊對照  想以其他的protocol  可以去裡面找  不然也可以直接打

阻擋外部進來的服務
   sudo ufw default deny 

內定是允許或是禁止

   sudo default allow[deny]

指定從10000埠到20000埠 設定allow  通訊協定為UDP
sudo ufw allow 10000:20000/udp
反之  刪除在allow前加delete
sudo ufw delete allow 10000:20000/udp

參照網頁
http://kirby86a.pixnet.net/blog/post/94339388-ufw(uncomplicated-firewall)%E5%AE%89%E8%A3%9D%E8%88%87%E8%A8%AD%E5%AE%9A
http://cm-life.blogspot.tw/2008/05/ufw.html
http://cm-life.blogspot.tw/2008/05/ufw.html?m=1
https://help.ubuntu.com/community/UFW
http://www.arthurtoday.com/2010/11/ubuntu-ufw.html#.UmUFeVCnp6s
http://download.ithome.com.tw/article/index/id/974
http://wiki.ubuntu-tw.org/index.php?title=Ufw
http://www.arthurtoday.com/2009/11/ubuntu-ufw.html#.UmUkn1Cnp6s

2013年9月14日 星期六

安裝OFFICE2007出現 WINDOWS INSTALLER 服務無法更新某些被防寫保護的WINDOWS檔案

從XP的原版光碟裡 "I386\FP40EXT.CAB"解壓縮fp4autl.dll到"C:\program files\common files\microsoft shared\web server extensions\40\bin"

再重新安裝OFFICE2007就OK了

2013年7月26日 星期五

用 Eclipse Java 開發 Google Drive API (基本範例)

主程式:Eclipse  (我是用Indigo版 3.7)
Eclipse外掛:使用 Eclipse 專用的 Google 外掛程式 (最好參考這裡Google Plugin for Eclipse)
程式碼範例:Quickstart: Run a Drive App in Java

首先先建置Eclipse的環境  (建議不要用中文外掛  問題多多)

先到 Help ==> Install New Software

點Add

Name 隨便打  打你看得懂的就好
Location 輸入外掛的網址
外掛的網址請依照你的Eclipse版本  Google Plugin for Eclipse 輸入
在按OK
我是點這三個
在下載安裝的時候  可能會發生錯誤  可以不用理他
安裝完成後  Eclipse 要重開


你會看到你的Eclipse工具列上多了Google的按鈕  (沒看到請回應我  我忘記我是怎麼弄的)

好了...  Eclipse的環境建置好了

新建Java project

程式碼如下   (怕以後原始網頁會改  在此紀錄我所使用的範例)
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse;
import com.google.api.client.http.FileContent;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class DriveCommandLine {

  private static String CLIENT_ID = "YOUR_CLIENT_ID";
  private static String CLIENT_SECRET = "YOUR_CLIENT_SECRET";

  private static String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob";
  
  public static void main(String[] args) throws IOException {
    HttpTransport httpTransport = new NetHttpTransport();
    JsonFactory jsonFactory = new JacksonFactory();
   
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(DriveScopes.DRIVE))
        .setAccessType("online")
        .setApprovalPrompt("auto").build();
    
    String url = flow.newAuthorizationUrl().setRedirectUri(REDIRECT_URI).build();
    System.out.println("Please open the following URL in your browser then type the authorization code:");
    System.out.println("  " + url);
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String code = br.readLine();
    
    GoogleTokenResponse response = flow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute();
    GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response);
    
    //Create a new authorized API client
    Drive service = new Drive.Builder(httpTransport, jsonFactory, credential).build();

    //Insert a file  
    File body = new File();
    body.setTitle("My document");
    body.setDescription("A test document");
    body.setMimeType("text/plain");
    
    java.io.File fileContent = new java.io.File("document.txt");
    FileContent mediaContent = new FileContent("text/plain", fileContent);

    File file = service.files().insert(body, mediaContent).execute();
    System.out.println("File ID: " + file.getId());
  }
}
請依照請況修改你的Class Name

你會發現你import的部分  有一堆找不到lib的部分

這時候請點工具列的Google按鈕
點Add Google APIs

找Drive API在按Finish  (我是用v2版)
完後  你會看到妳的project底下另外多了Drive API的Lib
再回去看程式碼import的部分
紅底線就會不見了  因為有正確匯入的Google API的JAR

接下來要在自己的帳戶開啟API權限
點Services裡面找Drive API  把她打開
再點API Access ==> Create an OAuth 2.0 client ID
Application type裡面 選Installed application
Installed application 裡選Other
再點Create Client ID


會有類似這樣的東西
對應範例程式碼裡面"CLIENT_ID"跟"CLIENT_SECRET"
照上面紅色箭頭修改

範例程式碼最下面有一段
"java.io.File fileContent = new java.io.File("document.txt");"
這個就是要上傳的檔案
例如C:\document.txt就改成"C:\\document.txt"
這樣程式可以Run了

這個範例會在雲端硬碟的根目錄建立一個"My document"的檔案其內容就是document.txt的內容