2016年12月29日 星期四

ASP.NET MVC ModelState 錯誤訊息

參考:http://www.cnblogs.com/darrenji/p/4415887.html


 if (ModelState.IsValid)
{
        ....
}else{
                String Message = "";
                var errors = ModelState.Where(m => m.Value.Errors.Any())
                    .Select(x => x.Value.Errors);
                foreach (var item in errors)
                {
                    var fieldErrors = item.Select(e => e.ErrorMessage).FirstOrDefault();
                    Message += fieldErrors;
                }
}

2016年12月26日 星期一

PandoraBox pptpd 設定

環境
 LuCI Trunk (0.12+svn-r1024) PandoraBox R2 14.09


安裝
kmod-gre

防火牆設定

防火墙 - 通信规则
打开路由器端口
外部端口:1723

自定义规则
iptables -t nat -I PREROUTING -p gre -j DNAT
iptables -A forwarding_rule -s 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o br-lan -j MASQUERADE

2016年12月2日 星期五

解決 Debian-sh4 for NextVODBox 的 iptables 無法使用

網樂通是安裝下面網址的版本
https://ftp.yzu.edu.tw/Linux/debian-sh4-for-nextvod/download.php

架PPTPD時發現iptables 沒班法用
只好重新編譯Kernel & modules 了..QQ

1.取得config
ssh登入網樂通
取得 /proc/config.gz

2.修改設定
參考這篇
http://mowei-tw.blogspot.tw/2016/12/kernel-modules.html

在編譯的時候
做完make mrproper
config.gz 解壓
把"config" 改名成".config"
mv condig .config

make ARCH=sh CROSS_COMPILE=sh4-linux- menuconfig

參考這文章改設定
https://groups.google.com/forum/#!topic/asterisk-tw/3-Dalh3FZYQ

Networking  ---->
 Networking options  ---->
  Network packet filtering framework (Netfilter)--->
   Core Netfilter Configuration ---->
    <*> Netfilter connection tracking support
    <*> Netfilter Xtables support (required for ip_tables)
    <*>   "NFLOG" target support
    <*>   "conntrack" connection tracking match support
    <*>   "state" match support
   IP: Netfilter Configuration --->
    <*> IPv4 connection tracking support (required for NAT)
    <*> IP tables support (required for filtering/masq/NAT)
    <*>   Packet Filtering
    <*>     REJECT target support
    <*>   Full NAT
    <*>     MASQUERADE target support
    <*> Packet mangling

儲存
蓋過kernel.config
編譯

編譯完檔案:
https://drive.google.com/file/d/0Bx2A-Jefadp8SVFYbGlNZk1HNlU/view?usp=sharing


更換Kernel 
cd /tmp
mkdir boot
mount /dev/sda1 boot
cd boot
把vmlinux.ub 換成新的
mv vmlinux.ub vmlinux.ub.bak
wget (新vmlinux.ub位置)

放置modules 

cd /lib/
mkdir modules 
cd  modules
wget (2.6.32.59-PDK7105-32BITS.tar)
tar -xvf 2.6.32.59-PDK7105-32BITS.tar


都OK後
reboot

uname -a
出現
Linux debian-wheezy-sh4 2.6.32.59-PDK7105-32BITS #6 PREEMPT Fri Dec 2 23:50:40 CST 2016 sh4 GNU/Linux

 iptables -L
不再有錯誤訊息了!
成功

網樂通編譯Kernel & modules

參考網址:
https://xiaolaba.wordpress.com/2012/10/20/ubuntu-12-10-stlinux-2-4/
http://www.twpda.com/2012/10/nextvod-compile-kernel.html
https://github.com/dlintw/kernel-pdk7105/tree/twpda

編譯環境:linuxmint-18-cinnamon-64bit


1.安裝STLinux 2.4



參考
https://xiaolaba.wordpress.com/2012/10/20/ubuntu-12-10-stlinux-2-4/

主要步驟為

下載 ISO 檔
mkdir STLinux
cd STLinux
wget ftp://ftp.stlinux.com/pub/stlinux/2.4/iso/STLinux-2.4-sh4-20121121.iso

掛載 ISO 檔
sudo mkdir /mnt/iso
sudo mount -o loop STLinux-2.4-sh4-20120822.iso /mnt/iso

安裝 STLinux
cd /mnt/iso
sudo ./installb --debian all-sh4-glibc

2.下載原始碼


cd ~/STLinux
wget https://github.com/dlintw/kernel-pdk7105/archive/twpda.zip
unzip twpda.zip


3.編譯


cd kernel-pdk7105-twpda
export PATH=$PATH:/opt/STM/STLinux-2.4/host/bin:/opt/STM/STLinux-2.4/devkit/sh4/bin
make mrproper
sh ./make.sh all



這邊整理一下我編譯出現的問題

1.build-essential 沒安裝
sudo apt-get install build-essential

2.make ARCH=sh CROSS_COMPILE=sh4-linux- menuconfig
出現ncurses問題
sudo apt-get install libncurses5-dev

3.
kernel/timeconst.h error 255
解決辦法:
將kernel/timeconst.pl中第373行的defined()去掉只留下@val就可以了

來源:
https://my.oschina.net/hanxiaodong/blog/755703

4.產生 vmlinux.ub 沒mkimage
sudo apt-get install u-boot-tools

手動產生
mkimage -A sh -O linux -T kernel -C gzip -a 0x80800000 -e 0x80801000  -n "Linux 2.6" -d vmlinux.bin.gz vmlinux.ub

Kernel 編出來的位子
arch/sh/boot/

modules 編出來的位子
lib/modules

2016年10月30日 星期日

[紀錄]小米路由器MINI 安裝套件

參考:http://www.miui.com/thread-2205749-1-1.html

*須開啟ssh跟使用USB儲存設備

1.opkg設定

在USB設備上建立目錄

1.建立app資料夾 (app 資料夾可自行更名)
進入app資料夾

在建立bin資料夾
在x:/app/bin 放置opkg

2.ssh
cd /extdisks/sda1/
mkdir app (app 資料夾可自行更名)
cd app

mkdir bin
cd bin
wget https://drive.google.com/file/d/0Bx2A-Jefadp8NThYZnpOVWtnaXM/view?usp=sharing (想辦法放到哪裡下載下來吧XD)


確認檔案存在
/extdisks/sda1/app/bin/opkg

修改opkg設定檔
備份

cp /etc/opkg.conf /etc/opkg.conf.bak
編輯
vi /etc/opkg.conf
設定如下
src/gz barrier_breaker_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base
src/gz barrier_breaker_luci http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/luci
src/gz barrier_breaker_packages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages
src/gz barrier_breaker_routing http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/routing
src/gz barrier_breaker_telephony http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/telephony
src/gz barrier_breaker_management http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/management
src/gz barrier_breaker_oldpackages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/oldpackages
dest root /extdisks/sda1/app
dest ram /tmp
lists_dir ext /extdisks/sda1/app/opkg-lists
option overlay_root /extdisks/sda1/app
dest usb /extdisks/sda1/app
儲存ESC :wq

進行更新
/extdisks/sda1/app/bin/opkg update

2.設定環境變數

備份
cp  /etc/profile /etc/profile.bak
修改
vi /etc/profile
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/extdisks/sda1/app/bin/:/extdisks/sda1/app/usr/sbin/:/extdisks/sda1/app/usr/bin/:/extdisks/sda1/python/bin/
export LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib:/lib:/usr/lib:/extdisks/sda1/app/lib/:/extdisks/sda1/app/usr/lib/


設定完後重新登入SSH
讓他吃到環境變數


3.安裝方式

opkg -d usb install <套件名>
不能裝就先去
https://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/

https://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7620/packages/
找套件
 cd /extdisks/sda1/app
使用 wget 下載下來
opkg -d usb install <套件名.ipk>

裝完後
 cd /extdisks/sda1/app/etc/init.d/
需要一個一個手動修改路徑位子
設定到 /extdisks/sda1/app/
不然設定檔抓不到

4.安裝時127錯誤

參考
http://www.ddhow.com/blog/postinst.html

直接無視錯誤XD

echo -e "\ndefault_postinst() {\n\
\treturn 0\n\
}\n\
default_prerm() {\n\
\treturn 0\n\
}" >>  /extdisks/sda1/app/lib/functions.sh


5.結語


裝了php gcc ffmpeg python...
看起來還正常
不能RUN的就自己編或放棄吧~~~

2016年10月25日 星期二

Kendo UI Grid 筆記

常用設定


        var grid = $("#mygrid").kendoGrid({
            dataSource: {
                transport: {
                    read: {
                        url: "/Home/data"
                    }
                }
            },
            columns: [
            { field: "Code", title: "代碼", width: "10%" },
            { field: "Name", title: "名稱", width: "50%" },
            { field: "", width: "40%", template: '<button class="k-button">按鈕一</button>' }
            ],
            height: $(document).height() - 200,
            toolbar: kendo.template($("#template").html()),
            pageable: true,
            selectable: "row",
            sortable: true,
            resizable: true,
            noRecords: true,
            pageable: {
                refresh: true,
                pageSizes: true,
                pageSize: 50,
                buttonCount: 5,
                pageSizes: [5, 10, 20, 25, 50, 100, "all"],
                messages: {
                    itemsPerPage: "每頁列數"
                }
            },
            dataBinding: function () {
                record = (this.dataSource.page() - 1) * this.dataSource.pageSize();
                record = isNaN(record) ? 0 : record;
            },
        }).data("kendoGrid");



<script type="text/x-kendo-template" id="template">
    <span style="position: relative; float: left;">
        <input id="inputtext" type="text" class="k-textbox" />
        <button id="btn" class="k-button" >新增</button>
    </span>
</script>

刷新清單

            grid.dataSource.read();
            grid.refresh();


讀取選擇資料

            var selectInfo = grid.dataItem(grid.select());

設定資料來源

            $.get(url, { id: id }, function (result) {
                grid.dataSource.data(result);
            });

or

        var dataSource = new kendo.data.DataSource({
            type: "json",
            transport: {
                read: {
                    url: "/Home/data",
                    type: "GET",
                    data: {
                        id: function () {
                            return selectInfo.id;
                    }
                }
            },
            schema: {
                model: {
                    fields: {
                        Code: { type: "string" },
                        Name: { type: "string" },
                    }
                }
            },
        });


        $("#mygrid").data("kendoGrid").dataSource.data(dataSource.data());

or

            var dataSource = new kendo.data.DataSource({
                transport: {
                    read: {
                        url: "/Home/data",
                        complete: function (e) {
                            mygrid.dataSource.data(e.responseJSON);
                        }
                    }
                }
            });

            dataSource.read();

2016年3月12日 星期六

小蟻智慧攝影機支援RTSP

來源:http://en.miui.com/thread-196713-1-1.html

小蟻智慧攝影機版本:1.8.5.1l_201511061661(台灣版)
下載檔案
https://drive.google.com/file/d/0ByjBix7wpeJJY0ZWZXlvWl9Za1E/view?usp=sharing

把攝影機SD卡拿讀卡機讀取
把壓縮檔內的test資料夾放進SD根目錄
插回SD卡至攝影機
重開

攝影機會呈現橘燈並執行更新
等恢復至藍燈或是用app確認攝影機開啟

用VLC或相關程式讀取串流
Main stream:rtsp://<CameraIP>:554/ch0_0.h264
Minor stream:rtsp://<CameraIP>:554/ch0_1.h264
Audio stream:rtsp://<CameraIP>:554/ch0_3.h264




Telnet與FTP開啟加上

# Telnet

if [ ! -f "/etc/init.d/S88telnet" ]; then
    echo "#!/bin/sh" > /etc/init.d/S88telnet
    echo "telnetd &" >> /etc/init.d/S88telnet
    chmod 755 /etc/init.d/S88telnet
fi

# FTP

echo "#!/bin/sh" > /etc/init.d/S89ftp
echo "tcpsvd -vE 0.0.0.0 21 ftpd -w / &" >> /etc/init.d/S89ftp
chmod 755 /etc/init.d/S89ftp



User: root
Password: 1234qwer

使用passwd改密碼

參考:http://en.miui.com/thread-224653-1-1.html

2016年2月26日 星期五

小米路由器 mini 中繼模式啟動noip ddns

vi /etc/config/ddns
config 'service' 'myddns'
 option 'service_name' 'noip.com'
 option 'enabled' '1'
 option 'domain'  'yourhost.no-ip.org'
 option 'usernamUe' 'your_username'
 option 'password' 'your_password'
 option 'interface' 'wan'
 option 'ip_source' 'network'
 option 'ip_network' 'wan'
ddnsd start

https://wiki.openwrt.org/doc/howto/ddns.client

wan 改成區網對外網卡就可以了
一樣可以抓到真實IP

2016年2月8日 星期一

taiko

#include "UsbJoystick.h"
#define PIEZOTHRESHOLD 70
#define PADNUM 4

unsigned long time[PADNUM] = {0,0,0,0};
int tempval[PADNUM] = {0,0,0,0};
unsigned long buttontime[PADNUM] = {0,0,0,0};
void setup() {
  UsbJoystick.setup();
}

void loop() {
  UsbJoystick.update();
  for(int i = 0; i < PADNUM; i++) {
    buttondelay(i);
  }
  UsbJoystick.sendMsg();
}

void buttondelay(int pad){
 if ((millis() - buttontime[pad]) > 10) {
    int val = analogRead(pad);
    if( val >= PIEZOTHRESHOLD ) {
      if(tempval[pad]==0){
        sendmsg(pad,tempval[pad]);
      }
      if (val>tempval[pad]){
      tempval[pad]=val;
      }
    }else{
      if (tempval[pad]>PIEZOTHRESHOLD){
          tempval[pad]=0;
      }
    }
 }else{
   UsbJoystick.setButton(pad);
 }
}
void sendmsg(int pad,int val){
   if ((millis() - time[pad]) > 10) {
    UsbJoystick.setButton(pad);
    time[pad] = millis();
    buttontime[pad] = millis();
  }
}

預測2031/1/1可能 TWCA 憑證 IOS會出現不信任

緣由: TWCA CYBER Root CA 有兩張、兩個效期 (2030、2047年到期) 推測TWCA 預計 2030年12月會停用: TWCA CYBER Root CA (2030 年到期) TWCA Global Root CA 改用啟用: TWCA CYBER ...