Spushnik

**Chú ý: Tính năng này đã được giới thiệu trong phiên bản 2.5.0**

Đôi khi bạn cần phải kiểm tra tình trạng của server Opush mà không kết nối điện thoại; khi đó, Spushnik là tính năng dành cho bạn.

Spushnik là một Java webapp có thể kiểm tra trạng thái của một Opush server.
Nó có thể được cài đặt bất cứ nơi nào, bạn chỉ cần truy cập vào dịch vụ Opush.
Điều kiện ban đầu chỉ là một tài khoản người dùng trên OBM.

## Cài đặt

#### Debian Squeeze

Thay đổi file /etc/apt/sources.list bằng cách thêm "contrib" và "non-free".
Có thể tìm các ví dụ trên trang [Cài đặt OBM trên Debian Squeeze](http://obm.org/vi/wiki/c%C3%A0i-obm-tr%C3%AAn-debian-squeeze)

Thay đổi /etc/apt/sources.list bằng cách thêm "release" OBM repository:

deb http://deb.obm.org/25/contrib squeeze obm
deb http://deb.obm.org/25/release obm obm

Cuối cùng

wget -q http://deb.obm.org/obmgpg.pub -O - | apt-key add -
aptitude update
aptitude install spushnik

#### CentOS 6

Đầu tiên, bạn phải cài đặt OpenJDK để có lựa chọn thay thế java cấu hình đúng cho jre và java_sdk.
Có thể tìm các ví dụ trên trang [Cài đặt OBM 2.4.1 trên CentOS 6](http://obm.org/wiki/install-obm-241-centos-6)

Bạn phải tạo một tập tin yum repo có chứa "release" OBM repository:

[obm-contrib]
name=obm-contrib
baseurl=http://rpm.obm.org/25/release/contrib/$releasever
enabled=1
gpgcheck=0

[obm-next]
name=obm-next
baseurl=http://rpm.obm.org/25/release/latest/$releasever
enabled=1
gpgcheck=0

Và cuối cùng

yum install spushnik

## Sử dụng

Trên Linux, gõ lệnh sau:

curl http://Spushnik_IP:Spushnik_port/spushnik/foldersync?serviceUrl=https://Opush_IP/Microsoft-Server-ActiveSync -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d 'input_JSON'

Trong đó:

* _Spushnik_IP_ là địa chỉ IP của máy chủ spushnik đang chạy
* _Spushnik_port_ là cổng của máy chủ web (Jetty được cài đặt mặc định), nơi spushnik đang chạy
* _Opush_IP_ là địa chỉ IP của máy chủ spushnik đang chạy
* _input_JSON_ là đầu vào của JSON

#### Đầu vào của JSON

{
"loginAtDomain":"loginAtDomain_value",
"password":"password_value",
"pkcs12Password":"pkcs12_password",
"pkcs12":"'`base64 pkcs12_file -w0`'"
}

Trong đó:

* _loginAtDomain_value_ **bắt buộc**: là tên đăng nhập của người dùng hiện có trong Opush (ví dụ: user@opush.com)
* _password_value_ **bắt buộc**: là mật khẩu tương ứng cho người sử dụng Opush
* _pkcs12_password_ **tùy chọn**: được mật khẩu của PKCS # 12, thay thế _https_ với _http_ khi không cho
* _pkcs12_file_ **tùy chọn**: là đường dẫn đầy đủ đến PKCS # 12 gói được mã hóa dựa trên Base64 (ví dụ: / tmp/user.p12)

#### PKCS#12

Một số điện thoại hỗ trợ khách hàng xác thực giấy chứng nhận, điều này là có thể làm với Opush bằng cách cấu hình [proxy ngược](http://obm.org/vi/wiki/c%C3%A0i-%C4%91%E1%BA%B7t).
Để chạy Spushnik bạn có thể tạo ra tập tin PKCS # 12.
Điều này có thể được thực hiện với ** openssl ** trên Opush frontend server:

openssl genrsa -out user.key 2048
openssl req -new -key user.key -out user.csr
openssl ca -config /var/lib/obm-ca/ca.cnf -in user.csr -out user.pem -cert /var/lib/obm-ca/cacert.pem -keyfile /var/lib/obm-ca/private/cakey.pem -days 365
openssl pkcs12 -export -inkey user.key -in user.pem -out user.p12 -name "usera"

Và sau đó copy các tập tin user.p12 vào máy client của bạn.

#### Đầu ra của JSON

Nếu thành công dịch vụ sẽ trả về một JSON như thế này:

{"status":0,"messages":[]}

Nếu có lỗi trong quá trình đồng bộ thư mục, ví dụ như trên máy chủ IMAP không bắt đầu, JSON sẽ như thế này:

{"status":2,"messages":["HTTP error: 500"]}

Nếu có lỗi truy cập Spushnik, kết quả có thể như sau:

curl: (7) không thể kết nối với host

Bản đồ giá trị trạng thái:

* _0_: thành công
* _1_: cảnh báo
* _2_: lỗi

## Dưới hood

Spushnik cài đặt một kịch bản đồng bộ thư mục mà tất cả các phần phụ trợ truy cập. Vì vậy Opush cần tất cả phần liên quan đến nó.
Với kịch bản như vậy, Spushnik cho biết tình trạng của Opush và các thành phần phụ thuộc vào nó.
Highsnobiety Sneakers