星期五, 4月 25, 2008

Xataface-參數(_prefs)設定

Xataface的參數定義在 Dataface/Application.php 的 $prefs array 包含
'show_jump_menu'=>1, // The drop-down menu that allows you to "jump" to any record in the found set.
'show_result_controller'=>1, // Next, previous, page number .. links...
'show_table_tabs'=>1, // Details, List, Find, etc...
'show_actions_menu'=>1, // New record, Show all, delete, etc...
'show_logo'=>1, // Show logo at top right of app
'show_tables_menu'=>1, // The tabs to select a table.
'show_search'=>1, // Show search field in upper right.
'show_record_actions'=>1, // Show actions related to particular record
'show_recent_records_menu'=>1
'show_bread_crumbs' => 1, // Bread crumbs at top of page to show where you are
'show_record_tabs' => 1, // View, Edit, Translate, History, etc...
'show_record_tree' => 1, // Tree to navigate the relationships of this record.
'list_view_scroll_horizontal'=>1, // Whether to scroll list horizontal if it exceeds page width
'list_view_scroll_vertical'=>1

自訂的方式
一、在conf.ini中使用
[_prefs]
show_search = 1
二、在delegate中使用 function getPreferences()

Xataface-依使用者不同限制紀錄權限

目的:利用setSecurityFilter讓使用者只能改自己的紀錄,不能改別人的紀錄
一、在ApplicationDelegate.php新增函數如下

function getPreferences(){
$mytable =& Dataface_Table::loadTable('Users') ; // load the table named 'my_table'
$auth =& Dataface_AuthenticationTool::getInstance();
$user =& $auth->getLoggedInUser();
$app =& Dataface_Application::getInstance();
$tables =& $app->conf['_tables'];
if ( $user && $user->val('Role') != 'ADMIN' ){
unset($tables['Users']);
$mytable->setSecurityFilter(array('UserID'=>$user->val('UserID')));
}
return array(); // Mandatory!! getPreferences() must return array.
}

Xataface-依使用者不同限制欄位權限

如果想讓xataface建置的網頁程式,依使用者的不同隱藏網頁部份元素,可以透過xataface提供的自訂css功能。
例如:管理者可以變更使用者的角色,而使用者不能改變角色,可以將表單中的角色欄位隱藏
注意:這個隱藏法只能防一般使用者,進階使用者有可能繞過這個限制,必須再依步驟四設定欄位權限
一、在Users table的 Users.php 新增函數
function block__custom_stylesheets(){
$auth =& Dataface_AuthenticationTool::getInstance();
$user =& $auth->getLoggedInUser();
$role = $user->val('Role');
if ( $role!='ADMIN' ){
echo '<link rel="stylesheet" type="text/css" href="tables/Users/custom.css">';
}
二、建立custom.css
#Users-UserName-label-wrapper, #Users-UserName-wrapper, #UserName, #Users-Role-label-wrapper,#Users- Role-wrapper, #table_tabs, #contentActionsWrapper, #record-tabs-history {
visibility: hidden;
}
四、設定欄位權限-在Users table的 Users.php 新增函數
function UserName__permissions(&$record) {
$auth =& Dataface_AuthenticationTool::getInstance();
$user =& $auth->getLoggedInUser();
$role = $user->val('Role');
if ( $role!='ADMIN') { return Dataface_PermissionsTool::READ_ONLY(); }
return Dataface_PermissionsTool::getRolePermissions($role);
}
function Role__permissions(&$record) {
if ( $role!='ADMIN') { return Dataface_PermissionsTool::READ_ONLY(); }
return Dataface_PermissionsTool::getRolePermissions($role);
}

星期四, 4月 24, 2008

利用bind9的view功能將某台電腦瀏覽網頁導向固定頁面

有時因為電腦中毒或其它原因,不希望某台電腦上網而又無法通知該使用者,可以設法讓該電腦只要打開瀏覽器,不管瀏覽任何網站都會導向同一個警告頁面。
一、找一台網站伺服器製作警告頁面當作網站首頁。
二、設定網站伺服器的"404找不到網頁"的錯誤訊息也指到上一步的警告頁面。
三、在bind 9的dns伺服器中建立block view
view "blocked" {
match-clients { 192.168.0.aaa; 192.168.0.bbb; };
recursion no;
zone "." {
type master;
file "named.err";
};
}; //End of blocked
view "normal" {
match-clients { any; };
recursion no;
zone "." {
type hint;
file "named.root";
};
};
四、建立named.err 只要一筆A紀錄 [ * A 192.168.0.WEB_SERVER_IP ]

◎三、四步也可以考慮改用firewall的dnat功能實作。

星期二, 4月 15, 2008

我的Ubuntu一直無法休眠

我的Ubuntu一直無法休眠,參考了網路上這一篇文章修改了/etc/initramfs-tools/conf.d/resume檔案裡的uuid為正確的uuid,後執行update-initramfs -u更新initrd.img。
仍有問題,最後發現是連線中的iscsi設備造成無法休眠。

Ubuntu 8.04 安裝 vmware server

Ubuntu: 8.04
kernel: 2.6.24-16-generic
Vmware server: 1.0.5
vmware-any-any-update-116

1.下載 vmware server 及 vmwar-any-any
2. alien -i VMware-server-1.0.5-80187.i386.rpm
3. cp /lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1/
4. cp /usr/lib/libpng12.so.0 /usr/lib/vmware/lib/libpng12.so.0/
5. tar xvf vmware-any-any-update-116.tgz
5. vmware-any-any-update116/runme.pl

星期四, 4月 10, 2008

備份windows user profile

---------這裡開始,以下內容貼到backup.cmd中----------------
cd "\Documents and Settings\"
echo ntuser > tmp.txt
echo usrclass >> tmp.txt
echo tmp >> tmp.txt
echo temp >> tmp.txt
echo Cookies >> tmp.txt
echo History >> tmp.txt
xcopy /ehrkcy /exclude:tmp.txt user1\* user1_backup\
del tmp.txt
--------到這裡結束-----------------------------------------------------------
說明:
/exclude 排除tmp.txt內所列之檔案
tmp.txt 為臨時的檔案,內容為要排除的檔案清單,只要目錄檔名中有部份符合的字串就會排除
/ehrkcy 等於 /e /h /r /k /c /y
/e 子目錄含空目錄
/h 含系統檔、隱藏檔
/r 覆蓋唯讀檔
/k 還原唯讀檔的唯讀屬性
/c 遇到錯誤後繼續不要中斷
/y 覆蓋檔案前不詢問