Бабайкина консолька

Давно собирался реализовать идею: уроки программирования online. Суть в том, чтобы на веб-страницу выложить flash-объект, в который транслируется всё, что я делаю в консоли. Человек смотрит, учится, а голосовое двустороннее общение можно организовать, например, посредством Скайпа. Недавно перенес свой домен на домашний шлюз и появилось всё необходимое, чтобы данный сервис запустить. Особых секретов здесь нет, но решил поделиться, а также закрепить навыки в письменной форме.



На картинке видна часть экрана монитора, поэтому открытая консоль на веб-странице выглядит несимметрично. На самом деле она размещена по центру и вообще ведет себя как надо. Вход на страничку для просмотра консоли осуществляется по https, через пароль (lighttpd, OpenDS). Сервис запускается с десктопной машины и работает только тогда, когда этого хочет владелец консоли, большую часть времени, во избежание атак, сервис выключен.

Рассмотрим как всё это организовано. Имеется две машины. Одна маломощная — шлюз, имеющий выход в Интернет, вторая — десктопная, с которой и демонстрируется консоль. На обеих установлен пакет ffmpeg.

На шлюзе настраиваем ffserver с таким конфигом (/etc/ffserver.conf):

Port 9999
BindAddress 0.0.0.0
MaxClients 10
MaxBandwidth 20000
#NoDaemon

<Feed console.ffm>
	File /tmp/console.ffm
	FileMaxSize 300K 
</Feed>

<Stream console.swf>
	Feed console.ffm
	Format swf
	VideoCodec flv
	VideoFrameRate 10
	VideoBufferSize 50000
	VideoBitRate 100
	VideoQMin 1
	VideoQMax 5
	VideoSize 736x480
	PreRoll
	Noaudio
</Stream>


На десктопе создаем скрипт /usr/bin/ffconsole:

ssh -i ~/.ssh/gate -p8022 [email protected] sudo su -c killffserver
ssh -i ~/.ssh/gate -p8022 [email protected] sudo su -c ffserver
ffmpeg -s 736x480 -r 5 -f x11grab -i 0:0 http://192.168.99.99:9999/console.ffm
ssh -i ~/.ssh/gate -p8022 [email protected] sudo su -c killffserver

Соединение ведется по ключам, чтобы не вводить пароль. Как их создать — Гугль в помощь. Скрипт killffserver тоже можно написать самостоятельно, но можно воспользоваться вот таким, сварганенным за 5 минут «на коленке»:

sudo kill `ps ax | grep ffserver | grep -v grep | grep -o -e '^ [0-9]*'`

После запуска скрипта в том окне консоли, из которого он запускался, появится беспрерывная череда буковок и циферок. Это означает, что трансляция идет успешно. Для демонстрации учебной консоли придется открыть свежую вкладку или новое окно Xterm. Осталось только перетащить окно показываемой консоли в верхний левый угол экрана и вуаля — всё что вы делаете в ней кто-то другой (кому вы сообщили пароль для входа) может видеть в Интернете.

Да, совсем забыл. SWF-контент, генерируемый ffserver'ом, нужно включить в html-документ, например так:

<object width="736" height="480">
	<param name="movie" value="http://99.99.99.99:9999/console.swf"></param>
	<param name="allowFullScreen"   value="false"></param>
	<param name="allowscriptaccess" value="always"></param>
	<embed 	src="http://99.99.99.99:9999/console.swf" 
	      	type="application/x-shockwave-flash" allowscriptaccess="always" 
		allowfullscreen="false" width="736" height="480">
	</embed>
    </object>

Здесь нужно лишь заменить 99.99.99.99:9999 на реальные IP и порт вашего ffserver'а.
  • +10
  • 15 июля 2010, 12:37
  • yababay

Комментарии (4)

RSS свернуть / развернуть
+
0
Вот это да!
Потоковый сервер своими руками!
Супер!!!
avatar

Gangsta

  • 15 июля 2010, 12:58
+
0
Организовываем онлайн эротические чаты
avatar

Gangsta

  • 15 июля 2010, 13:02
+
0
Да там делов на 15 минут, даже начинающий кульхацкер справится, тем более что ffmpeg и под Windows есть, если что. Так что организуй на здоровье
avatar

yababay

  • 15 июля 2010, 13:11
+
0
Bay !
Bo-o-o!
avatar

Markony

  • 16 июля 2010, 13:48

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.