バージョン0.7.3リリース – LadioCast開発記その35
in LadioCastLadioCastバージョン0.7.3をリリースします。
- LadioCast-0.7.3.dmg (ユニバーサルバイナリ・Mac OS X 10.4 “Tiger” 以降)
0.7.2から0.7.3への変更点は以下のとおりです。
- 接続データフィールドのいずれかに空欄があると接続できないバグを修正
/^^\
4 Responses to “バージョン0.7.3リリース – LadioCast開発記その35”
Leave a Reply to かわうそ
App Storeのアプリ審査を審査する
in UncategorizedエントリーiPhone/iPod Touch用ねとらじプレイヤーの実装についてのアプリをネタにさらにテスト、題してApp Storeのアプリ審査を審査する^^です。
そう結局App Storeにこいつの登録申請を出してみることにしました。ただし超手抜き申請もいいところ。アプリはiPhoneで一切動作テストしてないのにiPhoneアプリとして、日本語ローカライズ一切していないのに日本語メインのアプリとして申請。申請データ一式も機械的なチェックをパスできる程度の最低限の内容で臨みます。
ソフトウェアを作るには初動コストをいかに後ろに分散させて全体をならすことができるかが重要と思っている私。iPhoneアプリはそういう意味ではパソコンアプリより敷居が高いわけですが、一体どのくらいそこで手抜きしても公にのっけてもらえるものか、そこを確認してみるつもりです。このブログ、Appleの人が見ていなければいいけれど^^;。
待ちの長さを含め結果はまたブログのエントリーでお伝えします。
Mac, iPhone, iPod touchでL2TP over IPSec – サーバ設定編
in UncategorizedMac, iPhone, iPod Touchで使えるVPN(Virtual Private Network)接続方式のひとつL2TP over IPSecを用いてLinuxサーバに接続できるようにするお話です。今回のサーバ設定編はLinux上の設定のオンパレードになります。
まずは全体の使用環境から。 クライアントマシンであるMac, iPhone, iPod touchはインターネットに直接、あるいはNAT(Network Address Translation)越しに間接的に接続するものとします。 サーバマシンはプライベートネットワークに接続していて、ゲートウェイマシンのStatic NATによりインターネットから特定の通信のみ受け付けるものとします。 両端にNATありでVPNの設定としてかなり厄介なのですが、よくある使用環境ともいえます。
今回の設定例ではそれぞれ以下のようなアドレスが割り当てられているものとします。
- クライアントマシン
- IPアドレス: 任意
- 接続ネットワークIPアドレス: 任意
- ゲートウェイマシン
- IPアドレス: 任意(インターネット側), 192.168.144.1(プライベート側)
- 接続ネットワークIPアドレス: 任意(インターネット側), 192.168.144.0/24(プライベート側)
- Static NAT: UDP インターネット側 ポート500, 4500 → 192.168.144.10 ポート500, 4500
- サーバマシン
- IPアドレス: 192.168.144.10
- 接続ネットワークIPアドレス: 192.168.144.0/24
- (DNSサーバ兼)
# uname -a
Linux ubuntu 2.6.24-19-server #1 SMP Wed Aug 20 23:54:28 UTC 2008 i686 GNU/Linux
それでは使用するソフトウェアパッケージのインストールから始めましょう。
# aptitude install openswan xl2tpd
# dpkg --list openswan xl2tpd
||/ Name Version Description
+++-==============-==============-============================================
ii openswan 1:2.4.9+dfsg-1 IPSEC utilities for Openswan
ii xl2tpd 1.1.12.dfsg.1- a layer 2 tunneling protocol implementation
デフォルトの設定ファイルやサンプルの設定ファイルを活用します。
# cp /etc/ipsec.d/examples/no_oe.conf /etc/ipsec.d/
# cp /etc/ipsec.d/examples/l2tp-psk.conf /etc/ipsec.d/
各設定ファイルを以下のように記述していきます。
/etc/ipsec.conf
# /etc/ipsec.conf - Openswan IPsec configuration file
# RCSID $Id: ipsec.conf.in,v 1.15.2.6 2006/10/19 03:49:46 paul Exp $
# This file: /usr/share/doc/openswan/ipsec.conf-sample
#
# Manual: ipsec.conf.5
version 2.0 # conforms to second version of ipsec.conf specification
# basic configuration
config setup
# plutodebug / klipsdebug = "all", "none" or a combation from below:
# "raw crypt parsing emitting control klips pfkey natt x509 private"
# eg: plutodebug="control parsing"
#
# ONLY enable plutodebug=all or klipsdebug=all if you are a developer !!
#
# NAT-TRAVERSAL support, see README.NAT-Traversal
nat_traversal=yes
# virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
#
# enable this if you see "failed to find any available worker"
nhelpers=0
# Add connections here
# sample VPN connections, see /etc/ipsec.d/examples/
#Disable Opportunistic Encryption
include /etc/ipsec.d/*.conf
/etc/ipsec.d/l2tp-psk.conf
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
left=192.168.144.10
leftnexthop=192.168.144.1
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
#
# Configuration for one user with any type of IPsec/L2TP client
# including the updated Windows 2000/XP (MS KB Q818043), but
# excluding the non-updated Windows 2000/XP.
#
#
# Use a Preshared Key. Disable Perfect Forward Secrecy.
#
# PreSharedSecret needs to be specified in /etc/ipsec.secrets as
# YourIPAddress %any: "sharedsecret"
authby=secret
pfs=no
auto=add
keyingtries=3
# we cannot rekey for %any, let client rekey
rekey=no
type=transport
#
#left=%defaultroute
# or you can use: left=YourIPAddress
#
# For updated Windows 2000/XP clients,
# to support old clients as well, use leftprotoport=17/%any
leftprotoport=17/1701
#
# The remote user.
#
right=%any
rightprotoport=17/0
/etc/ipsec.secrets
# RCSID $Id: ipsec.secrets.proto,v 1.3.6.1 2005/09/28 13:59:14 paul Exp $
# This file holds shared secrets or RSA private keys for inter-Pluto
# authentication. See ipsec_pluto(8) manpage, and HTML documentation.
# RSA private key for this host, authenticating it to any other host
# which knows the public part. Suitable public keys, for ipsec.conf, DNS,
# or configuration of other implementations, can be extracted conveniently
# with "ipsec showhostkey".
192.168.144.10 %any: PSK "sharedsecret"
/etc/xl2tpd/xl2tpd.conf
;
; Sample l2tpd configuration file
;
; This example file should give you some idea of how the options for l2tpd
; should work. The best place to look for a list of all options is in
; the source code itself, until I have the time to write better documetation :)
; Specifically, the file "file.c" contains a list of commands at the end.
;
; You most definitely don't have to spell out everything as it is done here
;
; [global] ; Global parameters:
; port = 1701 ; * Bind to port 1701
; auth file = /etc/l2tpd/l2tp-secrets ; * Where our challenge secrets are
; access control = yes ; * Refuse connections without IP match
; rand source = dev ; Source for entropy for random
; ; numbers, options are:
; ; dev - reads of /dev/urandom
; ; sys - uses rand()
; ; egd - reads from egd socket
; ; egd is not yet implemented
;
[lns default] ; Our fallthrough LNS definition
; exclusive = no ; * Only permit one tunnel per host
ip range = 192.168.144.128-192.168.144.135 ; * Allocate from this IP range
; no ip range = 192.168.0.3-192.168.0.9 ; * Except these hosts
; ip range = 192.168.0.5 ; * But this one is okay
; ip range = lac1-lac2 ; * And anything from lac1 to lac2's IP
; lac = 192.168.1.4 - 192.168.1.8 ; * These can connect as LAC's
; no lac = untrusted.marko.net ; * This guy can't connect
; hidden bit = no ; * Use hidden AVP's?
local ip = 192.168.144.10 ; * Our local IP to use
; length bit = yes ; * Use length bit in payload?
; require chap = yes ; * Require CHAP auth. by peer
; refuse pap = yes ; * Refuse PAP authentication
; refuse chap = no ; * Refuse CHAP authentication
; refuse authentication = no ; * Refuse authentication altogether
require authentication = no ; * Require peer to authenticate
; unix authentication = no ; * Use /etc/passwd for auth.
name = myhostname ; * Report this as our hostname
; ppp debug = no ; * Turn on PPP debugging
; pppoptfile = /etc/ppp/options.l2tpd.lns ; * ppp options file
; call rws = 10 ; * RWS for call (-1 is valid)
; tunnel rws = 4 ; * RWS for tunnel (must be > 0)
; flow bit = yes ; * Include sequence numbers
; challenge = yes ; * Challenge authenticate peer ;
;
/etc/ppp/options.l2tpd.lns
(Creating a VPN appliance with Ubuntu and Openswanより)
# Dump all the variables to the debug log to ensure that the configuration was picked up properly.
#dump
# Output debugging information to /var/log/debug
#debug
# Do not support BSD compression.
nobsdcomp
passive
lock
# Allow all usernames to connect.
name *
proxyarp
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 3
lcp-echo-interval 5
nodeflate
# Do not authenticate incoming connections. This is handled by IPsec.
noauth
refuse-chap
refuse-mschap
refuse-mschap-v2
# Set the DNS servers the PPP clients will use.
ms-dns 192.168.144.10
mtu 1450
mru 1450
サーバソフトウェアを再起動します。
# /etc/init.d/ipsec restart
# /etc/init.d/xl2tpd restart
ディレクトリ/var/log
以下に書かれるログファイルには充分注意して下さい。
特にクライアントマシンから接続を試みて以下のような行にたどりついていなければ、接続が確立できていないことと思います。
/var/log/auth.log
ubuntu pluto[11596]: "L2TP-PSK-NAT"[3] 126.248.31.20 #6: STATE_QUICK_R2: IPsec SA established {ESP=>0x08ff0d97 <0xe60b50ab xfrm=AES_128-HMAC_SHA1 NATD=126.248.31.20:4500 DPD=none}
/var/log/daemon.log
ubuntu xl2tpd[11723]: Call established with 126.248.31.20, Local: 65226, Remote: 210, Serial: 1
以上の設定は、まずL2TP over IPSec接続を確立するという最難関の成功を目標にするもので、パスワード等セキュリティー関連の設定は後回しになっています。 接続が確立できたら速やかによりセキュリティーを高める方向で設定を変更していって下さい。
さてクライアントマシンの設定はまた今度、そちらはややこしい話はありません。
iPhone 3G 7月11日
in UncategorizedApple WWDC08にてCocoaフレームワーク使いにとって最高のモバイルデバイスiPhone 3Gが7月11日に発売決定、日本も同時発売。値段につり合わない高機能だから、契約に相当縛りがないと争奪戦になるような。ソフトバンクって予約できるのかしらん?
・音量の調整が、+6db標準になったみたいですが、入力した最大ギリギリの音量できちっと放送したいので、どこが0dbか分からなくてちょっと不便です。
横にdb数値表示ボックスでもあって、目的の数値にカチっと設定できると嬉しいです。
スライダーの保存値が0.0〜2.0で、実際の音声の乗算値はその値の2乗、ぐらいにしておくと、
左が-∞db 〜 中央0db 〜 右で約+12dbと、非常に扱いやすいカーブになると思います。
audio = audio*(slider*slider)
db = log10(slider*slider)*20
slider = sqrt(10^(db/20))
・オーディオデバイス設定の保存を、オーディオデバイス名で記録する事って不可能なのでしょうか。重複する事もそうないですし、目的のデバイスが確認できなければ無視するぐらいで実用上は問題ないかと思います。
・MainOutputにN/Aを指定したいです。他にモニタリング環境が有る場合に、音量が調節できないデバイスもあるので、デバイスへの出力を切れるといいです。
Yoohooさんこんにちは!
>・音量の調整
いや〜玄人さんっぽいですね〜^^。この仕様はそのままLadioCastで採用される、そんな気がします^^。
>・オーディオデバイス設定の保存
デバイスの名前、そうですね〜もう少し逆にユーザーの手の届かないところで区別できる情報があればIDに加味する可能性があります。
>・MainOutputにN/A
内部処理クロックを司っている関係でここだけはつなげておく必要がありますが、出力0とすること自体は簡単ですね。何か別途キレイな操作の仕様を思いついたらそれで入れるかもしれません。
という感じで…
こんにちは!メールありがとうございました。
開発をはじめてばかりで四苦八苦しております^^;
何かありましたら質問させて頂こうと思います。
一緒にねとらじを盛り上げていきましょー
よろしくお願いします(ぺこり
Belugaの中のひとさんこんにちは!
狭い世界だと思いますので助け合っていきましょう!(Adobe Flash Playerあたりに全部持っていかれないように^^。)
あと実は技術的なことより、MP3のパテントとライブラリ配布の関係がちょっと気になったんですね。たぶん会社さんだからクリアしてることとは思いますが...。(例えばLadioCastがMP3のバイナリライブラリ抜いたのはそこら辺の面倒な問題を避けるためでした。)
技術的な方でいえば、Windowsでの問題いわゆるステレオミックスやマイクミュート解除が不可な人にどう解決を提示するかで、ユーザー受けががらっと変わると思いますね。Winamp+Oddcastと機能で競うのは大変だと思いますので、別方向での間口の広さを持たれるのがいいかなと思います。