http://research.m1stereo.tv/wiki/index.php?title=Special:NewPages&feed=atom&hideliu=&hidepatrolled=&hidebots=&hideredirs=&limit=50&namespace=0M1Research - New pages [en]2024-03-28T17:28:33ZFrom M1ResearchMediaWiki 1.16.1http://research.m1stereo.tv/wiki/index.php/S3tcS3tc2011-12-23T13:28:08Z<p>Verem: Created page with "==About== S3TC family codecs: DXT5 and DXT3 ==Binary Build== * [{{SERVER}}/downloads/s3tc/s3tc.zip s3tc.zip] ==Source code== Available from GIT: <b><pre>git clone http://rese..."</p>
<hr />
<div>==About==<br />
S3TC family codecs: DXT5 and DXT3<br />
<br />
==Binary Build==<br />
<br />
* [{{SERVER}}/downloads/s3tc/s3tc.zip s3tc.zip]<br />
<br />
==Source code==<br />
<br />
Available from GIT:<br />
<b><pre>git clone http://research.m1stereo.tv/git/s3tc.git</pre></b></div>Veremhttp://research.m1stereo.tv/wiki/index.php/FFMPEG_WIN32_DAILYFFMPEG WIN32 DAILY2011-02-01T08:53:25Z<p>Verem: /* downloads */</p>
<hr />
<div>After autobuilds from Ramiro Polla ([http://ffmpeg.arrozcru.com/autobuilds/ http://ffmpeg.arrozcru.com/autobuilds/]) <i><b>have come to an end</b></i> we decided to continue work with providing a win32 build of ffmpeg to people.<br />
<br />
== downloads ==<br />
<br />
Daily builds (automated FFmpeg win32 builds) located in [http://research.m1stereo.tv/ffmpeg/snapshots/ http://research.m1stereo.tv/ffmpeg/snapshots/].<br />
<br />
== libs ==<br />
<br />
FFMPEG compiled against packages....<br />
<br />
*faac-1.28<br />
*lame-3.98.4<br />
*libogg-1.2.2<br />
*libtheora-1.1.1<br />
*libvorbis-1.3.2<br />
*libvpx-v0.9.5<br />
*opencore-amr-0.1.2<br />
*speex-1.2rc1<br />
*vidcore-1.2.2</div>Veremhttp://research.m1stereo.tv/wiki/index.php/MpngMpng2009-11-11T09:48:01Z<p>Verem: /* Downloads */</p>
<hr />
<div>==About==<br />
Intra-frame codec based on libpng.<br />
Support 24-bit and 32-bit (with alpha channel) input.<br />
<br />
==Downloads==<br />
<br />
* [{{SERVER}}/downloads/mpng/mpng-1.0-Win32.zip mpng-1.0-Win32.zip]<br />
* [{{SERVER}}/downloads/mpng/mpng-1.0-x64.zip mpng-1.0-x64.zip]<br />
* [{{SERVER}}/downloads/mpng/mpng-r6.src.zip mpng-r6.src.zip]</div>Veremhttp://research.m1stereo.tv/wiki/index.php/AP_OPENWRT_PCAP OPENWRT PC2008-07-12T17:17:05Z<p>Verem: /* Installation */</p>
<hr />
<div>=Hardware=<br />
<br />
For target platform we will use standard PC with D-link DWA-520G (Atheros chipset) WiFi board compatible with [http://hostap.epitest.fi/hostapd/ hostapd]. We install 2 NIC (Intel Ethernet 100) to provide WAN and LAN interfaces.<br />
<br />
=Build OpenWrt=<br />
<br />
==Downloading==<br />
<br />
I recommend download latest trunk version. Use subversion repo:<pre>[verem@aipetry ~]$ svn checkout https://svn.openwrt.org/openwrt/trunk kamikaze</pre><br />
<br />
After downloading rename directory - append trunk version suffix. I my case:<pre>mv kamikaze kamikaze-r11772</pre><br />
<br />
==Building prerequisites==<br />
<br />
For build OpenWrt images i used FC8 (Fedora Core 8) distro. Make sure you have installed:<br />
* gcc<br />
* g++<br />
* compat-gcc-34 (required due to some news changes in supplied gcc with FC8)<br />
* compat-g++-34<br />
* bison<br />
* flex<br />
* ncurses-devel<br />
* zlib-devel<br />
<br />
==Configuration==<br />
<br />
Goto to source directory and configure:<pre>[verem@dev-2 src]$ cd kamikaze-r11772<br />
[verem@dev-2 kamikaze-r11772]$ CC=gcc34 make menuconfig</pre><br />
<br />
Select:<br />
* <code>Target system</code> <b>x86 [2.6]</b><br />
* Check:<br />
** Select all packages by default<br />
** Advanced configuration options (for developers)<br />
** Buildsystem settings<br />
** Build the OpenWrt Image Builder<br />
** Image configuration<br />
* override built-in for <b>Network</b>:<br />
** hostapd<br />
** hostapd-mini<br />
** hostapd-utils<br />
** wpa-supplicant<br />
* override built-in for <b>Kernel modules</b> - <b>Network Devices</b> that will be used in your platform, in my case <i>Intel(R) PRO/100+ cards</i>.<br />
* override built-in for <b>Kernel modules</b> - <b>Wireless Drivers</b> that will be used in your platform, in my case <i>Driver for Atheros wireless chipsets</i><br />
<br />
After this changes made exit and confirm changes saving<br />
<br />
==Building==<br />
<br />
Start building process:<pre>[verem@dev-2 kamikaze-r11772]$ CC=gcc34 make<br />
++ mkdir -p /home/verem/src/kamikaze-r11772/staging_dir/toolchain-i386_gcc4.1.2<br />
++ cd /home/verem/src/kamikaze-r11772/staging_dir/toolchain-i386_gcc4.1.2<br />
++ mkdir -p bin lib include stamp<br />
<br />
............<br />
make[3] -C target/linux install<br />
make[3] -C target/sdk install<br />
make[3] -C target/imagebuilder install<br />
make[2] package/index<br />
[verem@dev-2 kamikaze-r11772]$<br />
<br />
</pre><br />
<br />
=Installation=<br />
<br />
Resulting images located in <code>bin</code> directory:<pre>[verem@dev-2 kamikaze-r11772]$ ls -s bin/ | more<br />
total 390476<br />
49676 OpenWrt-ImageBuilder-x86-for-Linux-i686.tar.bz2<br />
42900 OpenWrt-SDK-x86-for-Linux-i686.tar.bz2<br />
49204 openwrt-x86-ext2.fs<br />
53944 openwrt-x86-ext2.image<br />
4516 openwrt-x86-ext2.image.kernel<br />
5008 openwrt-x86-jffs2-128k.fs<br />
53944 openwrt-x86-jffs2-128k.image<br />
4516 openwrt-x86-jffs2-128k.image.kernel<br />
5008 openwrt-x86-jffs2-64k.fs<br />
53944 openwrt-x86-jffs2-64k.image<br />
4516 openwrt-x86-jffs2-64k.image.kernel<br />
3592 openwrt-x86-squashfs.fs<br />
53944 openwrt-x86-squashfs.image<br />
4516 openwrt-x86-squashfs.image.kernel<br />
1244 openwrt-x86-vmlinuz<br />
4 packages<br />
[verem@dev-2 kamikaze-r11772]$</pre><br />
<br />
Installation process is just copying image to HDD. I my case i used:<pre>Jul 12 15:57:36 dev-1 kernel: ata2.00: ATA-0: PQI IDE DiskOnModule, ra01.20a, max PIO2<br />
Jul 12 15:57:36 dev-2 kernel: ata2.00: 256000 sectors, multi 0: LBA<br />
Jul 12 15:57:36 dev-2 kernel: ata2.00: configured for PIO2<br />
Jul 12 15:57:36 dev-2 kernel: ata2.00: configured for PIO2<br />
Jul 12 15:57:36 dev-2 kernel: ata2: EH complete</pre> It's a small solid HDD install on secondary IDE channel. Deploying image:<pre>[root@dev-2 kamikaze-r11772]# dd if=bin/openwrt-x86-squashfs.image of=/dev/sdb</pre><br />
After images will be written to drive, reinstall this to target plaform and setup that HDD as bootable.<br />
<br />
=Configure OpenWrt=<br />
<br />
After firmware starts goto shell and edit (use vi) some configuration files.<br />
<br />
Edit network configuration <code>/etc/config/network</code>:<pre>config interface loopback<br />
option ifname lo<br />
option proto static<br />
option ipaddr 127.0.0.1<br />
option netmask 255.0.0.0<br />
<br />
config interface wan<br />
option ifname eth0<br />
option proto static<br />
option ipaddr 10.1.5.190<br />
option netmask 255.255.0.0<br />
option gateway 10.1.1.1<br />
option dns 10.1.1.1<br />
<br />
config interface lan<br />
option type bridge<br />
option ifname "eth1 ath0"<br />
option proto static<br />
option ipaddr 192.168.1.1<br />
option netmask 255.255.255.0</pre><br />
<br />
Edit wireless configuration <code>/etc/config/wireless</code>:<pre>config wifi-device wifi0<br />
option type atheros<br />
option channel 2<br />
<br />
config wifi-iface<br />
option device wifi0<br />
option mode ap<br />
option ssid home-home-openwrt<br />
option encryption psk2<br />
option key 0123456789ABCDEF</pre><br />
Customize channel and key used for your case.<br />
<br />
Change root password to enable ssh login: <pre>root@OpenWrt:~# passwd<br />
Changing password for root<br />
New password:<br />
Retype password:<br />
Password for root changed by root<br />
root@OpenWrt:~#</pre><br />
<br />
Allow <b>ssh</b> access to device from WAN port, <code>/etc/firewall.user</code>:<pre>[...]<br />
### Open port to WAN<br />
## -- This allows port 22 to be answered by (dropbear on) the router<br />
iptables -t nat -A prerouting_wan -p tcp --dport 22 -j ACCEPT<br />
iptables -A input_wan -p tcp --dport 22 -j ACCEPT<br />
[...]</pre><br />
<br />
Reboot system: <pre>root@OpenWrt:~# reboot</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/AP_FC8AP FC82008-07-12T09:18:56Z<p>Verem: /* configuration */</p>
<hr />
<div>=WiFi Hardware=<br />
<br />
As we are going build WPA protected Access Point it's required authorization daemon supports our hardware. Authorization software based on [http://hostap.epitest.fi/hostapd/ hostapd]. As seen from [http://hostap.epitest.fi/hostapd/ hostapd]'s home page it support chipsets/drivers:<br />
* Host AP driver for Prism2/2.5/3<br />
* [http://madwifi.org/ madwifi] (Atheros ar521x)<br />
* Prism54.org (Prism GT/Duette/Indigo)<br />
<br />
After some research on our local PC components market we choose [http://www.dlink.ru/products/prodview.php?type=17&id=749 D-link DWA-520] that is Atheros chipset based:<br />
<pre>[root@dev-1 ~]# lspci -vvv<br />
--skipped--<br />
01:0b.0 Ethernet controller: Atheros Communications, Inc. AR5212/AR5213 Multiprotocol MAC/baseband processor (rev 01)<br />
Subsystem: D-Link System Inc Unknown device 3a73<br />
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-<br />
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br />
Latency: 168 (2500ns min, 7000ns max), Cache Line Size: 32 bytes<br />
Interrupt: pin A routed to IRQ 23<br />
Region 0: Memory at ff8f0000 (32-bit, non-prefetchable) [size=64K]<br />
Capabilities: [44] Power Management version 2<br />
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot-,D3cold-)<br />
Status: D0 PME-Enable- DSel=0 DScale=2 PME-<br />
Kernel driver in use: ath_pci<br />
Kernel modules: ath_pci<br />
--skipped--<br />
[root@dev-1 var]# lspci -vn<br />
--skipped--<br />
01:0b.0 0200: 168c:0013 (rev 01)<br />
Subsystem: 1186:3a73<br />
Flags: bus master, medium devsel, latency 168, IRQ 23<br />
Memory at ff8f0000 (32-bit, non-prefetchable) [size=64K]<br />
Capabilities: [44] Power Management version 2<br />
Kernel driver in use: ath_pci<br />
Kernel modules: ath_pci<br />
--skipped--</pre><br />
and supported by [http://madwifi.org/ madwifi] drivers.<br />
<br />
=Generic Installation=<br />
<br />
Generic installation steps:<br />
* install WiFi pci board<br />
* install additional ethernet adapter (we want 2 adapters: 1st WAN, 2nd LOCAL LAN)<br />
* install minimal Fedora Core 8 installation<br />
* update all installed Fedora packeges<br />
* install required packages for building [http://madwifi.org/ madwifi] drivers and [http://hostap.epitest.fi/hostapd/ hostapd]:<br />
** gcc<br />
** openssl-devel<br />
** kernel package development (in my case kernel-devel-2.6.25.9-40.fc8)<br />
** dhcp<br />
** bind, bind-chroot<br />
** bridge-utils<br />
* download to <code>/usr/local/src</code> [http://madwifi.org/ madwifi] driver and [http://hostap.epitest.fi/hostapd/ hostapd] source code:<br />
** <code>madwifi-0.9.4.tar.gz</code><br />
** <code>hostapd-0.6.3.tar.gz</code><br />
<br />
=Building/configuring driver=<br />
<br />
Unpack <code>madwifi-0.9.4.tar.gz</code> to <code>/usr/local/src</code>:<br />
<pre>[root@dev-1 ~]# cd /usr/local/src<br />
[root@dev-1 src]# gzip -cd madwifi-0.9.4.tar.gz | tar xf -</pre><br />
Goto source code directory, build and install:<pre>[root@dev-1 src]# cd madwifi-0.9.4<br />
[root@dev-1 madwifi-0.9.4]# make<br />
Checking requirements... ok.<br />
Checking kernel configuration... ok.<br />
make -C /lib/modules/2.6.25.9-40.fc8/build SUBDIRS=/usr/local/src/madwifi-0.9.4 modules<br />
make[1]: Entering directory `/usr/src/kernels/2.6.25.9-40.fc8-i686'<br />
CC [M] /usr/local/src/madwifi-0.9.4/ath/if_ath.o<br />
--skipped--<br />
gcc -o ath_info -g -O2 -Wall ath_info.c<br />
make[1]: Leaving directory `/usr/local/src/madwifi-0.9.4/tools'<br />
[root@dev-1 madwifi-0.9.4]# make install</pre><br />
<br />
Remove old <b><code>ath5k</code></b> driver:<pre>[root@dev-1 madwifi-0.9.4]# rm -f -r -d /lib/modules/2.6.25.9-40.fc8/kernel/drivers/net/wireless/ath5k<br />
[root@dev-1 madwifi-0.9.4]# depmod -a</pre><br />
<br />
Check <code>/etc/modprobe.conf</code> contains correct options for new driver and <code>wlan0</code> associated with <code>ath_pci</code> driver:<pre>alias eth0 e100<br />
alias eth0 eth1<br />
#alias wlan0 ath5k<br />
alias wlan0 ath_pci<br />
options ath_pci autocreate=ap<br />
alias scsi_hostadapter libata<br />
alias scsi_hostadapter1 ata_piix</pre><br />
<br />
=Network configuration=<br />
<br />
Setup ethernet adaptor <code>eth0</code> for WAN interface and bridge (eth1 + wlan0) for local network.<br />
<br />
<code>/etc/sysconfig/network-scripts/ifcfg-br0</code><pre>DEVICE=br0<br />
TYPE=Bridge<br />
BOOTPROTO=static<br />
IPADDR=192.168.1.1<br />
NETMASK=255.255.255.0<br />
ONBOOT=yes<br />
DELAY=0<br />
STP=off</pre><br />
<br />
<code>/etc/sysconfig/network-scripts/ifcfg-eth0</code><pre>DEVICE=eth0<br />
BOOTPROTO=static<br />
BROADCAST=10.1.255.255<br />
IPADDR=10.1.5.190<br />
NETMASK=255.255.0.0<br />
NETWORK=10.1.0.0<br />
ONBOOT=yes</pre><br />
<br />
<code>/etc/sysconfig/network-scripts/ifcfg-eth1</code><pre>DEVICE=eth1<br />
TYPE=ETHER<br />
BRIDGE=br0<br />
ONBOOT=yes</pre><br />
<br />
<code>/etc/sysconfig/network-scripts/ifcfg-wlan0</code><pre>DEVICE=wlan0<br />
BRIDGE=br0<br />
ONBOOT=yes<br />
MODE=master<br />
ESSID="home-home"</pre><br />
<br />
Please note that our AP network <b>ESSID</b> we setted to <i>home-home</i>.<br />
<br />
=Network services configuration=<br />
==DHCP==<br />
<code>/etc/dhcpd.conf</code>:<pre>ddns-updates on;<br />
ddns-update-style interim;<br />
ddns-domainname "home-home";<br />
ddns-rev-domainname "in-addr.arpa";<br />
ignore client-updates;<br />
include "/etc/rndc.key";<br />
<br />
subnet 192.168.1.0 netmask 255.255.255.0<br />
{<br />
option routers 192.168.1.1;<br />
option subnet-mask 255.255.255.0;<br />
<br />
option nis-domain "home-home";<br />
option domain-name "home-home";<br />
option domain-name-servers 192.168.1.1;<br />
<br />
option ntp-servers 192.168.1.1;<br />
option netbios-name-servers 192.168.1.1;<br />
<br />
range dynamic-bootp 192.168.1.128 192.168.1.254;<br />
default-lease-time 21600;<br />
max-lease-time 43200;<br />
<br />
zone home-home. {<br />
primary 127.0.0.1;<br />
key "rndckey";<br />
}<br />
<br />
zone 1.168.192.in-addr.arpa. {<br />
primary 127.0.0.1;<br />
key "rndckey";<br />
}<br />
<br />
}</pre><br />
<br />
==DNS==<br />
<code>/etc/named.conf</code>:<pre>options {<br />
listen-on-v6 port 53 { ::1; };<br />
directory "/var/named";<br />
dump-file "/var/named/data/cache_dump.db";<br />
statistics-file "/var/named/data/named_stats.txt";<br />
memstatistics-file "/var/named/data/named_mem_stats.txt";<br />
allow-query { any; };<br />
recursion yes;<br />
};<br />
<br />
logging {<br />
channel default_debug {<br />
file "data/named.run";<br />
severity dynamic;<br />
};<br />
};<br />
<br />
zone "." IN {<br />
type hint;<br />
file "named.ca";<br />
};<br />
<br />
include "/etc/rndc.key";<br />
<br />
zone "home-home" {<br />
type master;<br />
allow-update { key rndckey; };<br />
file "slaves/home-home.zone";<br />
};<br />
<br />
zone "1.168.192.in-addr.arpa" {<br />
type master;<br />
allow-update { key rndckey; };<br />
file "slaves/1.168.192.in-addr.arpa.zone";<br />
};<br />
<br />
include "/etc/named.rfc1912.zones";</pre><br />
<br />
<code>/var/named/chroot/var/named/slaves/home-home.zone</code>:<pre>@ in soa localhost. root 1 3H 15M 1W 1D<br />
ns localhost.<br />
</pre><br />
<br />
<code>/var/named/chroot/var/named/slaves/1.168.192.in-addr.arpa.zone</code>:<pre>@ in soa localhost. root 1 3H 15M 1W 1D<br />
ns localhost.<br />
</pre><br />
<br />
Change attribute to zone files:<pre>[root@dev-1 slaves]# chown named.named /var/named/chroot/var/named/slaves/*<br />
[root@dev-1 slaves]# chmod 660 /var/named/chroot/var/named/slaves/*</pre><br />
<br />
==Firewall (iptables)==<br />
<code>/etc/sysconfig/iptables</code>:<pre>*nat<br />
-A POSTROUTING -o eth0 -j MASQUERADE<br />
-A POSTROUTING -o ppp0 -j MASQUERADE<br />
COMMIT<br />
<br />
*filter<br />
:INPUT ACCEPT [0:0]<br />
:FORWARD ACCEPT [0:0]<br />
:OUTPUT ACCEPT [0:0]<br />
:RH-Firewall-1-INPUT - [0:0]<br />
-A FORWARD -i br0 -j ACCEPT<br />
-A INPUT -i br0 -j ACCEPT<br />
-A INPUT -i eth1 -j ACCEPT<br />
-A INPUT -i wlan0 -j ACCEPT<br />
-A INPUT -j RH-Firewall-1-INPUT<br />
-A FORWARD -j RH-Firewall-1-INPUT<br />
-A RH-Firewall-1-INPUT -i lo -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited<br />
COMMIT</pre><br />
<code>/etc/sysctl.conf</code>:<pre>--skipped--<br />
# Controls IP packet forwarding<br />
net.ipv4.ip_forward = 1<br />
--skipped--</pre><br />
<br />
=hostapd=<br />
<br />
==building==<br />
Unpack source code to <code>/usr/local/src</code> direcory and goto direcotry:<pre>[root@dev-1 src]# gzip -cd hostapd-0.6.3.tar.gz | tar xf -<br />
[root@dev-1 src]# cd hostapd-0.6.3<br />
[root@dev-1 hostapd-0.6.3]# cd hostapd<br />
[root@dev-1 hostapd]#</pre><br />
Copy build config template file to appropriate name:<pre>[root@dev-1 hostapd]# cp defconfig .config</pre><br />
<br />
Modify config file <code>.config</code> in such way (this is diff file):<pre>--- defconfig 2008-02-23 04:45:24.000000000 +0200<br />
+++ .config 2008-07-12 12:55:53.000000000 +0300<br />
@@ -9,6 +9,9 @@<br />
# be modified from here. In most cass, these lines should use += in order not<br />
# to override previous values of the variables.<br />
<br />
+CONFIG_DRIVER_MADWIFI=y<br />
+CFLAGS += -I/usr/local/src/madwifi-0.9.4<br />
+<br />
# Driver interface for Host AP driver<br />
CONFIG_DRIVER_HOSTAP=y</code><br />
<br />
Make and install:<pre>[root@dev-1 hostapd]# make<br />
[root@dev-1 hostapd]# make install</pre><br />
<br />
==configuration==<br />
<br />
Create directory <code>/etc/hostapd</code><br />
<br />
Create file <code>/etc/hostapd/hostapd.conf</code>:<pre>interface=wlan0<br />
bridge=br0<br />
driver=madwifi<br />
logger_syslog=-1<br />
logger_syslog_level=2<br />
logger_stdout=-1<br />
logger_stdout_level=2<br />
debug=0<br />
dump_file=/tmp/hostapd.dump<br />
ctrl_interface=/var/run/hostapd<br />
ctrl_interface_group=0<br />
ssid=home-home<br />
auth_algs=3<br />
eapol_key_index_workaround=0<br />
eap_server=0<br />
wpa=3<br />
wpa_psk_file=/etc/hostapd/wpa_psk<br />
wpa_key_mgmt=WPA-PSK<br />
wpa_pairwise=CCMP</pre><br />
<br />
Please note: <code>ssid=home-home</code> should define the same SSID as you defined during interface configuration, <code>wpa_pairwise=CCMP</code> mean that AES used for key management.<br />
<br />
Create file <code>/etc/hostapd/wpa_psk</code>:<pre>00:00:00:00:00:00 PRIVETPRIVETPRIVETPRIVETPRIVETPRIVETPRIVETPRIVETPRIVETPRIVET!!!</pre><br />
where:<br />
*<code>00:00:00:00:00:00</code> mean that any MAC address accepted<br />
*<code>PRIVETPRIVET...</code> is passphrase.<br />
<br />
Original <code>hostapd.wpa_psk</code> says:<pre># List of WPA PSKs. Each line, except for empty lines and lines starting<br />
# with #, must contain a MAC address and PSK separated with a space.<br />
# Special MAC address 00:00:00:00:00:00 can be used to configure PSKs that<br />
# anyone can use. PSK can be configured as an ASCII passphrase of 8..63<br />
# characters or as a 256-bit hex PSK (64 hex digits).<br />
00:00:00:00:00:00 secret passphrase<br />
00:11:22:33:44:55 another passphrase<br />
00:22:33:44:55:66 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef<br />
00:00:00:00:00:00 another passphrase for all STAs</pre><br />
<br />
Set correct permissions to key file <code>/etc/hostapd/wpa_psk</code>:<pre>[root@dev-1 hostapd]# chmod 600 /etc/wpa_psk</pre><br />
<br />
Modify <code>/etc/rc.d/rc.local</code> to enable hostapd daemon startup:<pre>--skipped--<br />
# run hostap daemon<br />
/usr/local/bin/hostapd -B /etc/hostapd/hostapd.conf<br />
--skipped--</pre><br />
<br />
=Testing=<br />
<br />
Now you may reboot pc.<br />
<br />
After system starts login and check:<br />
*WiFi driver loaded correctly:<br />
<pre><br />
Jul 12 13:18:05 dev-1 kernel: ath_hal: module license 'Proprietary' taints kernel.<br />
Jul 12 13:18:05 dev-1 kernel: ath_hal: 0.9.18.0 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)<br />
Jul 12 13:18:05 dev-1 kernel: wlan: 0.9.4<br />
Jul 12 13:18:05 dev-1 kernel: ath_pci: 0.9.4<br />
Jul 12 13:18:05 dev-1 kernel: ath_rate_sample: 1.2 (0.9.4)<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: turboG rates: 6Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: H/W encryption support: WEP AES AES_CCM TKIP<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: mac 7.9 phy 4.5 radio 5.6<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: Use hw queue 1 for WME_AC_BE traffic<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: Use hw queue 0 for WME_AC_BK traffic<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: Use hw queue 2 for WME_AC_VI traffic<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: Use hw queue 3 for WME_AC_VO traffic<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: Use hw queue 8 for CAB traffic<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: Use hw queue 9 for beacons<br />
Jul 12 13:18:05 dev-1 kernel: wifi0: Atheros 5212: mem=0xff8f0000, irq=23<br />
</pre><br />
*hostapd started:<br />
<pre><br />
[root@dev-1 ~]# ps -ax | grep host<br />
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ<br />
1913 ? Ss 0:00 /usr/local/bin/hostapd -B /etc/hostapd/hostapd.conf<br />
2252 pts/1 R+ 0:00 grep host<br />
[root@dev-1 ~]#<br />
</pre><br />
<br />
Try to connect from another pc throw WiFi to AP <i>home-home</i> with listed above credentials. On success you will see in the logs:<pre>Jul 12 14:59:41 dev-1 hostapd: wlan0: STA 00:19:cb:74:d7:74 IEEE 802.11: associated<br />
Jul 12 14:59:41 dev-1 hostapd: wlan0: STA 00:19:cb:74:d7:74 WPA: pairwise key handshake completed (WPA)<br />
Jul 12 14:59:42 dev-1 dhcpd: DHCPDISCOVER from 00:19:cb:74:d7:74 via br0<br />
Jul 12 14:59:42 dev-1 hostapd: wlan0: STA 00:19:cb:74:d7:74 WPA: group key handshake completed (WPA)<br />
Jul 12 14:59:43 dev-1 dhcpd: DHCPOFFER on 192.168.1.254 to 00:19:cb:74:d7:74 (bm) via br0<br />
Jul 12 14:59:43 dev-1 named[2838]: client 127.0.0.1#53752: updating zone 'home-home/IN': update unsuccessful: bm.home-home: 'name not in use' prerequisite not satisfied (YXDOMAIN)<br />
Jul 12 14:59:43 dev-1 named[2838]: client 127.0.0.1#45106: signer "rndckey" approved<br />
Jul 12 14:59:43 dev-1 named[2838]: client 127.0.0.1#45106: updating zone 'home-home/IN': deleting rrset at 'bm.home-home' A<br />
Jul 12 14:59:43 dev-1 named[2838]: client 127.0.0.1#45106: updating zone 'home-home/IN': adding an RR at 'bm.home-home' A<br />
Jul 12 14:59:43 dev-1 dhcpd: Added new forward map from bm.home-home to 192.168.1.254<br />
Jul 12 14:59:43 dev-1 named[2838]: client 127.0.0.1#46822: signer "rndckey" approved<br />
Jul 12 14:59:43 dev-1 named[2838]: client 127.0.0.1#46822: updating zone '1.168.192.in-addr.arpa/IN': deleting rrset at '254.1.168.192.in-addr.arpa' PTR<br />
Jul 12 14:59:43 dev-1 named[2838]: client 127.0.0.1#46822: updating zone '1.168.192.in-addr.arpa/IN': adding an RR at '254.1.168.192.in-addr.arpa' PTR<br />
Jul 12 14:59:43 dev-1 dhcpd: added reverse map from 254.1.168.192.in-addr.arpa to bm.home-home<br />
Jul 12 14:59:43 dev-1 dhcpd: DHCPREQUEST for 192.168.1.254 (192.168.1.1) from 00:19:cb:74:d7:74 (bm) via br0<br />
Jul 12 14:59:43 dev-1 dhcpd: DHCPACK on 192.168.1.254 to 00:19:cb:74:d7:74 (bm) via br0<br />
Jul 12 14:59:45 dev-1 named[2838]: unexpected RCODE (15) resolving 'NS.SECONDARY.NET.UA/AAAA/IN': 195.47.253.1#53<br />
Jul 12 14:59:48 dev-1 dhcpd: DHCPREQUEST for 192.168.1.254 from 00:19:cb:74:d7:74 (bm) via br0<br />
Jul 12 14:59:48 dev-1 dhcpd: DHCPACK on 192.168.1.254 to 00:19:cb:74:d7:74 (bm) via br0<br />
</pre><br />
<br />
As seen from this log, <b>hostapd</b> successfully authorize client, DHCP service leased an address and registered in DNS forward and reverse name resolving map.</div>Veremhttp://research.m1stereo.tv/wiki/index.php/EGroupWareEGroupWare2008-01-04T14:16:37Z<p>Verem: /* Step 2 - Configuration */</p>
<hr />
<div>==WEB server setup from scratch==<br />
<br />
We assume that all compiled software from sources will installed in <code>/usr/local/web/<PRODUCT></code>.<br />
<br />
===mysql===<br />
<br />
Download <b>mysql</b> source from [http://dev.mysql.com/downloads/mysql/5.0.html http://dev.mysql.com/downloads/mysql/5.0.html]. Unpack and configure:<br />
<pre><br />
./configure \<br />
--prefix=/usr/local/web/mysql5 \<br />
--with-mysqld-user=mysql5 \<br />
--with-extra-charsets=all \<br />
--with-big-table \<br />
--with-openssl<br />
</pre><br />
<br />
If configure exit successfully build it and install:<br />
<br />
<pre><br />
make ; make install<br />
</pre><br />
<br />
Configure executables path. <code>.bash_profile</code>:<pre>[...]<br />
PATH=$PATH:$HOME/bin:/usr/local/web/mysql5/bin<br />
[...]</pre><br />
<br />
Configure libraries path. <code>/etc/ld.so.conf</code><pre>[...]<br />
/usr/local/web/mysql5/lib<br />
[...]</pre> and update lib paths:<pre><br />
ldconfig</pre><br />
<br />
Add approriate system user <b>mysql5</b> for mysql deamon. <br />
<code>/etc/passwd</code>:<pre>[...]<br />
mysql5:x:98:98:Mysql:/usr/local/web/mysql5:/sbin/nologin<br />
[...]</pre><br />
<code>/etc/shadow</code>:<pre>[...]<br />
mysql5:*:12764:0:99999:7:::<br />
[...]</pre><br />
<code>/etc/group</code>:<pre>[...]<br />
mysql5:x:98:<br />
[...]</pre><br />
<br />
Install initial database:<pre><br />
/usr/local/web/mysql5/bin/mysql_install_db</pre><br />
<br />
Change mysql binaries and data ownerships:<pre><br />
chown -R mysql5.mysql5 /usr/local/web/mysql5</pre><br />
<br />
Create symlink to start script:<pre><br />
ln -s /usr/local/web/mysql5/share/mysql/mysql.server /etc/rc.d/init.d/mysql5<br />
</pre><br />
<br />
Start mysql5 service:<pre><br />
service mysql5 start</pre><br />
<br />
Setup <b>root</b>'s password<pre><br />
/usr/local/web/mysql5/bin/mysqladmin -u root password 'new-root-password'</pre><br />
<br />
Try to login to check if everything is OK:<pre><br />
[root@dev-2 mysql5]# /usr/local/web/mysql5/bin/mysql -u root -p<br />
Enter password:<br />
Welcome to the MySQL monitor. Commands end with ; or \g.<br />
Your MySQL connection id is 7<br />
Server version: 5.0.51 Source distribution<br />
<br />
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<br />
<br />
mysql> show databases;<br />
+--------------------+<br />
| Database |<br />
+--------------------+<br />
| information_schema |<br />
| mysql |<br />
| test |<br />
+--------------------+<br />
3 rows in set (0.00 sec)<br />
<br />
mysql></pre><br />
<br />
===apache===<br />
Download apache sources from [http://httpd.apache.org/ http://httpd.apache.org/].<br />
<br />
Unpack, configure:<pre>./configure \<br />
--enable-deflate \<br />
--prefix=/usr/local/web/apache2 \<br />
--enable-so \<br />
--enable-modules=all \<br />
--enable-mods-shared=all \<br />
--enable-suexec \<br />
--with-suexec-caller=apache2 \<br />
--with-suexec-docroot=/var/web \<br />
--with-ssl \<br />
--enable-ssl</pre> Make and make install:<pre>make ; make install</pre><br />
Add approriate system user <b>apache2</b> for apache deamon. <br />
<code>/etc/passwd</code>:<pre>[...]<br />
apache2:x:97:97:Apache:/usr/local/web/apache2:/sbin/nologin<br />
[...]</pre><br />
<code>/etc/shadow</code>:<pre>[...]<br />
apache2:*:12764:0:99999:7:::<br />
[...]</pre><br />
<code>/etc/group</code>:<pre>[...]<br />
apache2:x:97:<br />
[...]</pre><br />
<br />
Create symlink to start script:<pre><br />
ln -s /usr/local/web/apache2/bin/apachectl /etc/rc.d/init.d/apachectl<br />
</pre><br />
<br />
====mod_perl====<br />
Download latest version from [http://perl.apache.org/ http://perl.apache.org/]<br />
Unpack and build:<pre>perl Makefile.PL MP_APXS=/usr/local/web/apache2/bin/apxs</pre> make and install <pre>make ; make install</pre><br />
<br />
====mod_auth_kerb====<br />
Download source from [http://modauthkerb.sourceforge.net/ http://modauthkerb.sourceforge.net/].<br />
Unpack and configure:<pre>./configure --with-apache=/usr/local/web/apache2 --with-krb4=no</pre>. Make and install <pre>make ; make install</pre><br />
<br />
===php===<br />
<br />
====imap====<br />
imap support for PHP required imap-2007 package from [ftp://ftp.cac.washington.edu/imap/ ftp://ftp.cac.washington.edu/imap/]. Download and unpack package:<pre>gzip -cd imap-2007.tar.Z | tar xf -<br />
cd imap-2007</pre>Look at <code>Makefile</code> for appropriate build argument for your distro. We will use command to build:<pre>make lfd IP6=4</pre><br />
Installation been done manualy<pre>[root@dev-2 imap-2007]# mkdir -p /usr/local/web/imap-2007/lib<br />
[root@dev-2 imap-2007]# mkdir -p /usr/local/web/imap-2007/include<br />
[root@dev-2 imap-2007]# cp c-client/*.h /usr/local/web/imap-2007/include<br />
[root@dev-2 imap-2007]# cp c-client/*.a /usr/local/web/imap-2007/lib<br />
[root@dev-2 imap-2007]# cp c-client/*.c /usr/local/web/imap-2007/lib</pre><br />
<br />
One more article for installation process description [http://www.directadmin.com/forum/showthread.php?s=&threadid=12430 http://www.directadmin.com/forum/showthread.php?s=&threadid=12430]<br />
<br />
====libmbfl====<br />
libmbfl will be required as external if you need KOI8-U support for mbstring operation (please check PHP's included libmbfl for koi8-u files before).<br />
Download libmbfl from svn:<pre>svn checkout http://svn.sourceforge.jp/svnroot/php-i18n/libmbfl/trunk libmbfl</pre><br />
Download koi8-u ([http://www.ietf.org/rfc/rfc2319.txt RFC2319]) support patch [[Media:libmbfl.koi8-u.against-r467.v3.patch]]<br />
Patch sources (check before if this patch was not applied before against trunk): <pre>patch -p0 < libmbfl.koi8-u.against-r467.v3.patch</pre><br />
Build and install<pre>./buildconf; ./configure --prefix=/usr/local/web/libmbfl ; make; make install</pre><br />
<br />
====libmcrypt====<br />
Download source from [http://mcrypt.sourceforge.net/ http://mcrypt.sourceforge.net/]. Unpack, configure and install:<pre>./configure --prefix=/usr/local/web/libmcrypt<br />
make ; make install</pre><br />
<br />
====libmhash====<br />
Download source from [http://mhash.sourceforge.net/ http://mhash.sourceforge.net/]. Unpack, configure and install:<pre>./configure --prefix=/usr/local/web/libmhash<br />
make ; make install</pre><br />
<br />
====php====<br />
Add paths of external libraries: <code>/etc/ld.so.conf:</code><pre>[...]<br />
/usr/local/web/libmbfl/lib<br />
/usr/local/web/libmcrypt/lib<br />
/usr/local/web/libmhash/lib<br />
[...]</pre>Execute update script:<pre>ldconfig</pre><br />
<br />
Download PHP source code from [http://www.php.net/downloads.php http://www.php.net/downloads.php]. Unpack and configure:<pre>./configure \<br />
--prefix=/usr/local/web/php5 \<br />
--with-apxs2=/usr/local/web/apache2/bin/apxs \<br />
--with-mysql=/usr/local/web/mysql5 \<br />
--with-gd=/usr \<br />
--enable-gd-native-ttf=/usr \<br />
--enable-ftp \<br />
--with-zlib=/usr \<br />
--with-openssl=/usr \<br />
--with-jpeg-dir=/usr \<br />
--with-png-dir=/usr \<br />
--with-freetype-dir=/usr \<br />
--enable-ftp \<br />
--enable-mbstring \<br />
--with-libmbfl=/usr/local/web/libmbfl \<br />
--enable-mbregex \<br />
--enable-dba=shared \<br />
--with-gdbm=/usr \<br />
--with-db4=/usr \<br />
--with-libxml-dir=/usr \<br />
--with-imap=/usr/local/web/imap-2007 \<br />
--with-ldap \<br />
--with-pear \<br />
--with-mcrypt=/usr/local/web/libmcrypt \<br />
--with-mhash=/usr/local/web/libmhash \<br />
--with-iconv</pre><br />
Make and install<pre>make ; make install</pre><br />
<br />
==EGroupWare setup ==<br />
<br />
=== Web server global configuration ===<br />
<br />
Check if all required modules present in config file <code>/usr/local/web/apache2/conf/httpd.conf</code><pre>[...]<br />
LoadModule php5_module modules/libphp5.so<br />
LoadModule auth_kerb_module modules/mod_auth_kerb.so<br />
LoadModule ssl_module modules/mod_ssl.so<br />
LoadModule perl_module modules/mod_perl.so<br />
[...]</pre><br />
Check if <b>httpd</b> to be run as <b>apache2</b> user:<pre>[...]<br />
User apache2<br />
Group apache2<br />
[...]</pre><br />
Add <i>mod_php5.c</i> and <i>mod_deflate.c</i> additional configuration to config <code>/usr/local/web/apache2/conf/httpd.conf</code><pre>[...]<br />
Include /var/web/addons.conf<br />
[...]</pre><br />
<br />
<code>/var/web/addons.conf</code><pre>[...]<br />
<IfModule mod_deflate.c><br />
SetOutputFilter DEFLATE<br />
DeflateCompressionLevel 9<br />
DeflateFilterNote Input instream<br />
DeflateFilterNote Output outstream<br />
DeflateFilterNote Ratio ratio<br />
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate<br />
</IfModule><br />
<br />
<br />
<IfModule mod_php5.c><br />
AddType application/x-httpd-php .php<br />
php_admin_flag engine Off<br />
</IfModule><br />
<br />
<IfModule !mod_php5.c><br />
<Files ~ '\.php$'><br />
Order allow,deny<br />
Deny from all<br />
Allow from none<br />
</Files><br />
<Files ~ '\.phps'><br />
Order deny,allow<br />
Allow from all<br />
</Files><br />
</IfModule><br />
<br />
<Directory "/var/web"><br />
DirectoryIndex index.html index.php<br />
# Options Indexes FollowSymLinks<br />
AllowOverride All<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
[...]</pre><br />
<br />
=== Doc root / home dir ===<br />
We add user <b>webmail</b> to system. <code>/etc/passwd</code>:<pre>[...]<br />
webmail:x:501:501::/var/web/webmail:/bin/false<br />
[...]</pre><br />
<code>/etc/shadow</code>:<pre>[...]<br />
webmail:*:12764:0:99999:7:::<br />
[...]</pre><br />
<code>/etc/group</code>:<pre>[...]<br />
webmail:x:501<br />
[...]</pre><br />
<br />
Create Appropriate directories for home, document root and datas and logs:<pre>/var/web/webmail<br />
|-- data<br />
| `-- egroupware<br />
| |-- db_backup<br />
| `-- files<br />
|-- doc_root<br />
|-- logs<br />
|-- session<br />
`-- tmp</pre><br />
<br />
Download eGroupWare and eGroupWare-egw-pear packages from [http://www.egroupware.org/download http://www.egroupware.org/download]. Unpack both packages to <code>/var/web/webmail/doc_root</code>.<br />
<br />
Change owner/group and attributes on doc root:<pre>chown -R webmail.apache2 /var/web/webmail<br />
chmod -R u=rwx,g=rwx,o= /var/web/webmail</pre><br />
<br />
=== Virtual hosts configuration ===<br />
We assume that web host name for will be <b>mail.yourcomp.com</b>. <br />
<br />
First we will create a self-signed key+seritificate for operating with ssl mode (see [] for more details and other options):<pre>openssl req -new -x509 -nodes -out /var/web/webmail/mail.yourcomp.com.crt -keyout /var/web/webmail/mail.yourcomp.com.key</pre><br />
<br />
Add <b>mail.yourcomp.com</b> custom additional configuration to config <code>/usr/local/web/apache2/conf/httpd.conf</code><pre>[...]<br />
Include /var/web/webmail/mail.yourcomp.com.conf<br />
[...]</pre><br />
<br />
<code>/var/web/webmail/mail.yourcomp.com.conf</code> :<pre><br />
# Non-secured virtual host will be used to redirect all<br />
# requests to secured host<br />
#<br />
NameVirtualHost *:80<br />
<VirtualHost *:80><br />
SuexecUserGroup webmail webmail<br />
ServerAdmin root@yourcomp.com<br />
<br />
DocumentRoot /var/web/webmail/doc_root<br />
ServerName mail.yourcomp.com<br />
<br />
ErrorLog /var/web/webmail/logs/error_log<br />
CustomLog /var/web/webmail/logs/access_log common<br />
<br />
<Directory /var/web/webmail/doc_root/><br />
AllowOverride None<br />
</Directory><br />
<br />
RewriteEngine On<br />
RewriteRule (.*) https://%{SERVER_NAME}/ [L,R]<br />
<br />
</VirtualHost><br />
<br />
# Secured host configuration<br />
#<br />
Listen 443<br />
NameVirtualHost *:443<br />
<VirtualHost *:443><br />
SuexecUserGroup webmail webmail<br />
ServerAdmin root@yourcomp.com<br />
<br />
DocumentRoot /var/web/webmail/doc_root<br />
ServerName mail.yourcomp.com<br />
<br />
ErrorLog /var/web/webmail/logs/error_log<br />
CustomLog /var/web/webmail/logs/access_log common<br />
<br />
<Directory /var/web/webmail/doc_root/><br />
AllowOverride All<br />
Options +Includes +ExecCGI<br />
</Directory><br />
<br />
<IfModule mod_deflate.c><br />
CustomLog /var/web/webmail/logs/access_log-a deflate<br />
</IfModule><br />
<br />
<IfModule ssl_module><br />
SSLEngine On<br />
SSLProtocol all<br />
SSLVerifyClient none<br />
SSLCipherSuite HIGH:MEDIUM<br />
SSLCertificateFile /var/web/webmail/mail.yourcomp.com.crt<br />
SSLCertificateKeyFile /var/web/webmail/mail.yourcomp.com.key<br />
</IfModule><br />
<br />
<IfModule mod_php5.c><br />
php_admin_flag engine On<br />
php_admin_flag safe_mode Off<br />
<br />
php_admin_value include_path ".:/var/web/webmail/doc_root/egroupware/egw-pear:/usr/local/web/php5/lib/php/PEAR:/usr/local/web/php5/lib/php"<br />
php_admin_value open_basedir "/var/web/webmail:/usr/local/web/php5/lib/php:/usr/local/web/php5/etc"<br />
<br />
php_admin_value doc_root "/var/web/webmail/doc_root"<br />
php_admin_flag file_uploads On<br />
php_admin_value upload_tmp_dir "/var/web/webmail/tmp"<br />
php_admin_value upload_max_filesize "5000000"<br />
php_admin_value user_dir "/var/web/webmail"<br />
php_admin_value safe_mode_exec_dir "/var/web/webmail/bin"<br />
php_admin_flag expose_php Off<br />
php_admin_value max_execution_time "300"<br />
php_admin_value session.save_path "/var/web/webmail/session"<br />
<br />
</IfModule><br />
<br />
</VirtualHost><br />
<br />
</pre><br />
<br />
=== eGroupWare ===<br />
<br />
==== mysql ====<br />
Add mysql database and user for operating of eGroupWare:<pre>[root@dev-2 webmail]# mysql -u root -p<br />
Enter password:<br />
Welcome to the MySQL monitor. Commands end with ; or \g.<br />
Your MySQL connection id is 8<br />
Server version: 5.0.51 Source distribution<br />
<br />
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<br />
<br />
mysql> create database egroupware_main_db;<br />
Query OK, 1 row affected (0.08 sec)<br />
<br />
mysql> GRANT ALL ON egroupware_main_db.* TO 'egroupware_user'@'localhost' IDENTIFIED BY 'PASSWORD_HERE';<br />
Query OK, 0 rows affected (0.08 sec)<br />
<br />
mysql> FLUSH PRIVILEGES;<br />
Query OK, 0 rows affected (0.00 sec)<br />
<br />
mysql> Bye<br />
[root@dev-2 webmail]#</pre><br />
<br />
==== header setup ====<br />
Start web service:<pre>[root@dev-2 webmail]# service apachectl start</pre><br />
<br />
Visit address <code>http://mail.yourcomp.com/egroupware</code><br />
<br />
After first start you will be proposed to check you installation. Goto <b>Run installation tests</b> point to check if all paths correct and required modules installed.<br />
<br />
After you check installation goto <b>Continue to the Header Admin</b>. Set database connection attributes and Header/Config admin user/password pairs:<br />
<br />
[[image:eGroupWare_header_setup.png]]<br />
<br />
After all required fields compleated push <b>Write</b> button.<br />
<br />
Next step is <b>Setup</b>. Goto to setup menu, login using ConfigAdmin account:<br />
<br />
[[image:eGroupWare_config_login.png]]<br />
<br />
==== Step 1 - Simple Application Management ====<br />
<br />
Install application. Choose charset and push install all button:<br />
<br />
[[image:eGroupWare_config_1_app_setup.png]]<br />
<br />
==== Step 2 - Configuration ====<br />
<br />
Setup paths where data and doc_root located:<br />
<br />
[[image:eGroupWare_config_2_paths.png]]<br />
<br />
Host information:<br />
<br />
[[image:eGroupWare_config_2_host_info.png]]<br />
<br />
Write you own addresses of IMAP and SMTP servers:<br />
<br />
[[image:eGroupWare_config_2_mail_serv.png]]<br />
<br />
Auth setup:<br />
*We will authentificate against mail server. <br />
*New users account will be stored in database and will not be deleted.<br />
*All new users got <b>Deny Access</b>. ACL will be configured by Admin group's users.<br />
<br />
[[image:eGroupWare_config_2_auth.png]]<br />
<br />
==== Step 3 - Admin Account ====<br />
<br />
Add user account name to admin users group:<br />
<br />
[[image:eGroupWare_config_3_admin_user.png]]<br />
<br />
==== next.... ====<br />
<br />
Next steps are very specific to your setup and well described in docs. See for more....</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Ntfs-3gNtfs-3g2007-10-23T09:49:59Z<p>Tomas: /* Mounting ntfs partitions */</p>
<hr />
<div>== Mounting ntfs partitions in linux ==<br />
<br />
For mounting ntfs partitions under linux we will use ntfs-3g package, which can be downloaded for example from search page http://rpm.pbone.net/<br />
<br />
This example is for '''Fedora 6'''.<br />
<br />
'''1. Current work directory'''<br />
<br />
[root@bm rpms]# pwd<br />
/usr/src/rpms<br />
<br />
'''2. Download ntfs-3g-devel-1.913-2.fc6.i386.rpm :'''<br />
<br />
[root@bm rpms]# wget ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/ntfs-3g-devel-1.913-2.fc6.i386.rpm<br />
--11:39:08-- ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/ntfs-3g-devel-1.913-2.fc6.i386.rpm<br />
=> `ntfs-3g-devel-1.913-2.fc6.i386.rpm'<br />
Resolving mirror.switch.ch... 130.59.10.35, 130.59.10.34, 2001:620:0:8:203:baff:fe52:38e6, ...<br />
Connecting to mirror.switch.ch|130.59.10.35|:21... connected.<br />
Logging in as anonymous ... Logged in!<br />
==> SYST ... done. ==> PWD ... done.<br />
==> TYPE I ... done. ==> CWD /mirror/fedora/linux/extras/6/i386 ... done.<br />
==> SIZE ntfs-3g-devel-1.913-2.fc6.i386.rpm ... 61648<br />
==> PASV ... done. ==> RETR ntfs-3g-devel-1.913-2.fc6.i386.rpm ... done.<br />
Length: 61648 (60K)<br />
100%[===========================================>] 61,648 20.4K/s in 3.0s <br />
11:39:30 (20.4 KB/s) - `ntfs-3g-devel-1.913-2.fc6.i386.rpm' saved [61648]<br />
<br />
'''3. Now we will try to install downloaded package:'''<br />
<br />
[root@bm rpms]# rpm -vhi ntfs-3g-devel-1.913-2.fc6.i386.rpm<br />
warning: ntfs-3g-devel-1.913-2.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6<br />
error: Failed dependencies:<br />
libntfs-3g.so.12 is needed by ntfs-3g-devel-1.913-2.fc6.i386<br />
ntfs-3g = 2:1.913-2.fc6 is needed by ntfs-3g-devel-1.913-2.fc6.i386<br />
<br />
but we see that some failed dependencies are present, so we will try to find them and then continue installation.<br />
<br />
'''3.1 Download ntfs-3g = 2:1.913-2.fc6'''<br />
<br />
[root@bm rpms]# wget ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/ntfs-3g-1.913-2.fc6.i386.rpm<br />
--11:43:06-- ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/ntfs-3g-1.913-2.fc6.i386.rpm<br />
=> `ntfs-3g-1.913-2.fc6.i386.rpm'<br />
Resolving mirror.switch.ch... 130.59.10.34, 130.59.10.35, 2001:620:0:8:203:baff:fe52:38e6, ...<br />
Connecting to mirror.switch.ch|130.59.10.34|:21... connected.<br />
Logging in as anonymous ... Logged in!<br />
==> SYST ... done. ==> PWD ... done.<br />
==> TYPE I ... done. ==> CWD /mirror/fedora/linux/extras/6/i386 ... done.<br />
==> SIZE ntfs-3g-1.913-2.fc6.i386.rpm ... 148836<br />
==> PASV ... done. ==> RETR ntfs-3g-1.913-2.fc6.i386.rpm ... done.<br />
Length: 148836 (145K)<br />
100%[===========================================>] 148,836 33.1K/s in 4.4s <br />
11:43:13 (33.1 KB/s) - `ntfs-3g-1.913-2.fc6.i386.rpm' saved [148836]<br />
<br />
'''3.2 Trying to install downloaded package:'''<br />
<br />
[root@bm rpms]# rpm -vhi ntfs-3g-1.913-2.fc6.i386.rpm<br />
warning: ntfs-3g-1.913-2.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6<br />
error: Failed dependencies:<br />
fuse is needed by ntfs-3g-1.913-2.fc6.i386<br />
libfuse.so.2 is needed by ntfs-3g-1.913-2.fc6.i386<br />
libfuse.so.2(FUSE_2.2) is needed by ntfs-3g-1.913-2.fc6.i386<br />
libfuse.so.2(FUSE_2.5) is needed by ntfs-3g-1.913-2.fc6.i386<br />
libfuse.so.2(FUSE_2.6) is needed by ntfs-3g-1.913-2.fc6.i386<br />
<br />
but failed depencies appears again. For full install of ntfs-3g package ''fuse'' and ''fuse libs'' must be previously installed.<br />
<br />
'''3.2.1 Download and install fuse libs :'''<br />
<br />
[root@bm rpms]# wget ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/fuse-libs-2.7.0-6.fc6.i386.rpm<br />
--12:02:03-- ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/fuse-libs-2.7.0-6.fc6.i386.rpm<br />
=> `fuse-libs-2.7.0-6.fc6.i386.rpm'<br />
Resolving mirror.switch.ch... 130.59.10.34, 130.59.10.35, 2001:620:0:8:203:baff:fe52:38e6, ...<br />
Connecting to mirror.switch.ch|130.59.10.34|:21... connected.<br />
Logging in as anonymous ... Logged in!<br />
==> SYST ... done. ==> PWD ... done.<br />
==> TYPE I ... done. ==> CWD /mirror/fedora/linux/extras/6/i386 ... done.<br />
==> SIZE fuse-libs-2.7.0-6.fc6.i386.rpm ... 71916<br />
==> PASV ... done. ==> RETR fuse-libs-2.7.0-6.fc6.i386.rpm ... done.<br />
Length: 71916 (70K)<br />
100%[==========================================>] 71,916 80.5K/s in 0.9s <br />
12:02:22 (80.5 KB/s) - `fuse-libs-2.7.0-6.fc6.i386.rpm' saved [71916]<br />
<br />
[root@bm rpms]# rpm -vhi fuse-libs-2.7.0-6.fc6.i386.rpm<br />
warning: fuse-libs-2.7.0-6.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6<br />
Preparing... ########################################### [100%]<br />
1:fuse-libs ########################################### [100%]<br />
<br />
'''3.2.2 Download and install fuse :'''<br />
<br />
[root@bm rpms]# wget ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/fuse-2.7.0-6.fc6.i386.rpm<br />
--13:00:34-- ftp://mirror.switch.ch/mirror/fedora/linux/extras/6/i386/fuse-2.7.0-6.fc6.i386.rpm<br />
=> `fuse-2.7.0-6.fc6.i386.rpm'<br />
Resolving mirror.switch.ch... 130.59.10.34, 130.59.10.35, 2001:620:0:8:203:baff:fe52:38e5, ...<br />
Connecting to mirror.switch.ch|130.59.10.34|:21... connected.<br />
Logging in as anonymous ... Logged in!<br />
==> SYST ... done. ==> PWD ... done.<br />
==> TYPE I ... done. ==> CWD /mirror/fedora/linux/extras/6/i386 ... done.<br />
==> SIZE fuse-2.7.0-6.fc6.i386.rpm ... 82098<br />
==> PASV ... done. ==> RETR fuse-2.7.0-6.fc6.i386.rpm ... done.<br />
Length: 82098 (80K)<br />
100%[===========================================>] 82,098 35.9K/s in 2.2s <br />
13:00:57 (35.9 KB/s) - `fuse-2.7.0-6.fc6.i386.rpm' saved [82098]<br />
<br />
[root@bm rpms]# rpm -vhi fuse-2.7.0-6.fc6.i386.rpm<br />
warning: fuse-2.7.0-6.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6<br />
Preparing... ########################################### [100%]<br />
1:fuse ########################################### [100%]<br />
<br />
'''4. And finally installing ntfs-3g and ntfs-3g-devel :''' <br />
<br />
[root@bm rpms]# rpm -vhi ntfs-3g-1.913-2.fc6.i386.rpm<br />
warning: ntfs-3g-1.913-2.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6<br />
Preparing... ########################################### [100%]<br />
1:ntfs-3g ########################################### [100%]<br />
<br />
[root@bm rpms]# rpm -vhi ntfs-3g-devel-1.913-2.fc6.i386.rpm<br />
warning: ntfs-3g-devel-1.913-2.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1ac70ce6<br />
Preparing... ########################################### [100%]<br />
1:ntfs-3g-devel ########################################### [100%]<br />
<br />
'''5. Now checking if really ntfs-3g installed in the system :'''<br />
<br />
[root@bm rpms]# rpm -qa | grep ntfs<br />
ntfs-3g-1.913-2.fc6<br />
ntfs-3g-devel-1.913-2.fc6<br />
<br />
'''6. How to use ntfs-3g.'''<br />
<br />
There are two ways to use ntfs-3g for mounting ntfs partitions:<br />
<br />
'''''6.1 In the terminal command line we can type'''''<br />
<br />
[root@bm rpms]# ntfs-3g /dev/hda1 /mnt/drive_c<br />
or<br />
[root@bm rpms]# mount -t ntfs-3g /dev/hda1 /mnt/drive_c<br />
<br />
for mounting windows system partition ( C: drive under windows ).<br />
<br />
'''''6.2 Also we can put some strings into /etc/fstab file, and partitions will be mounted on system startup:'''''<br />
<br />
[root@bm etc]# cat fstab<br />
LABEL=/1 / ext3 defaults 1 1<br />
LABEL=/boot1 /boot ext3 defaults 1 2<br />
devpts /dev/pts devpts gid=5,mode=620 0 0<br />
tmpfs /dev/shm tmpfs defaults 0 0<br />
LABEL=/home1 /home ext3 defaults 1 2<br />
LABEL=/opt1 /opt ext3 defaults 1 2<br />
proc /proc proc defaults 0 0<br />
sysfs /sys sysfs defaults 0 0<br />
LABEL=/tmp1 /tmp ext3 defaults 1 2<br />
LABEL=/usr1 /usr ext3 defaults 1 2<br />
LABEL=/usr/local1 /usr/local ext3 defaults 1 2<br />
LABEL=/var1 /var ext3 defaults 1 2<br />
LABEL=SWAP-hda10 swap swap defaults 0 0<br />
/dev/hda1 /mnt/drive_c ntfs-3g rw,uid=1000 0 0<br />
/dev/hda5 /mnt/drive_d ntfs-3g rw,uid=1000 0 0<br />
/dev/hda6 /mnt/drive_e ntfs-3g rw,uid=1000 0 0</div>Tomashttp://research.m1stereo.tv/wiki/index.php/ViewVcAccessViewVcAccess2007-10-14T14:58:46Z<p>Verem: </p>
<hr />
<div>For anonymous access to ViewVC (svn's web interface) use login <b>svn</b> and empty password.</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Watch2ConvertWatch2Convert2007-05-26T14:23:53Z<p>Verem: /* Download */</p>
<hr />
<div>==About==<br />
[[image:w2c-screenshot.png|right|thumb|100px|[[help:contents|screen #1]]]]<br />
<br />
<b>Watch2Convert</b> is frontent for <b>ffmpeg</b> that provide watch-folder functionality. <br />
<br />
<b>Watch2Convert</b> monitor folder for files that must be converted, convert them and send to another folder or upload to ftp server. It's possible to use AviSynth template generation for additional media source preprocessing, filtering.<br />
<br />
==Running==<br />
<br />
All paramters submitted to <b>watch2conver</b> from command line argument:<br />
<pre><br />
bin\watch2convert.exe -conf <config> -ffmpeg <ffmpeg.exe> -ncftpput <ncftpput.exe> -ncftpget <ncftpget.exe><br />
</pre><br />
where:<br />
*<code><config></code> - full name of configuration file<br />
*<code><ffmpeg.exe></code> - full name off ffmpeg.exe executable<br />
*<code><ncftpput.exe></code> - full name off ncftpput.exe executable<br />
*<code><ncftpget.exe></code> - full name off ncftpget.exe executable<br />
Program started minimized as tray icon, double click on icon or use context menu to open window.<br />
<br />
It's possible to run multiple instances of <b>watch2convert</b> (with different config files of course).<br />
<br />
==Configuration==<br />
<br />
Configuration file is simple text file used ':' to split paramter name from value, i.e.:<br />
<pre><br />
title: avi+wav TO dvcam avi on ftp<br />
watch_path: c:\temp\w2c\mjpg2avi<br />
put_path: /<br />
put_ftphost: dvplayout<br />
put_ftpuser: video<br />
put_ftppassw: video<br />
exts : avi wav<br />
del: 0<br />
avisynth_template: C:\projects\watch2convert\conf\wav+avi+12dB.avs<br />
avisynth_args: avi wav<br />
temp: c:\temp<br />
threads: 2<br />
ffmpeg_cmd: -threads 1 -f avi -vcodec dvvideo -r 25 -acodec pcm_s16le -ac 2 -pix_fmt yuv420p <br />
ffmpeg_args: avs<br />
ffmpeg_ext: avi<br />
</pre><br />
Where:<br />
*<code>title</code> - title (human) name of task provided by this config.<br />
*<code>watch_path</code> - Local path that is used for files lookup.<br />
*<code>put_path</code> - Destination path, where encoded files stored.<br />
*<code>put_ftphost</code> , <code>put_ftpuser</code> , <code>put_ftppassw</code> - if you need to store resulting file (encoded) to remote ftp host you should define this parameters with correct values.<br />
*<code>exts</code> - Extensions of files should be found. If you need single file - specify single extension, i.e. <b>avi</b>; if you need a pair of files, i.e. <i>sample.avi</i> <i>sample.wav</i> specify two extensions <b>avi wav</b><br />
*<code>del</code> - if source files should be deleted after successfull encoding, specify value <b>1</b>.<br />
*<code>avisynth_template</code> - if you want to use <b>AviSynth</b> for pre-processing source video/audio, you should specify full name to <b>avs</b> template. For example, <b>AviSynth</b> template used to open <b>avi</b> and <b>wav</b> files, normalize audio:<br />
<pre><br />
video = AviSource("%s")<br />
audio = WavSource("%s")<br />
audio = Normalize(audio, 0.25)<br />
return AudioDub(video, audio)</pre><br />
*<code>avisynth_args</code> - This parameter defines list of files (by extensions) that should be submitted to <b>AviSynth</b> template in same order that they used in template.<br />
*<code>temp</code> - Path used to store temporarity files.<br />
*<code>threads</code> - It's possible to run more then one encoding threads simultaneously. Specify desired value (more then zero).<br />
*<code>ffmpeg_cmd</code> - part of command line arguments used for running <b>ffmpeg</b>, encoder configuration.<br />
*<code>ffmpeg_args</code> - extensions list of source files should be submitted as <b>ffmpeg</b> sources, specify <b>avs</b> for submitting generated <b>AviSynth</b> template or if you do not use <b>AviSynth</b> for preprocessing, specify extensions from lookup list <code>exts</code>.<br />
*<code>ffmpeg_ext</code> - resulting file extension.<br />
<br />
==Download==<br />
* [{{SERVER}}/downloads/watch2convert/watch2convert.bin.zip watch2convert.bin.zip] - precompiled binaries with some config sample.<br />
* [{{SERVER}}/downloads/watch2convert/watch2convert-r28.src.zip watch2convert-r26.src.zip] - sources, latest svn trunk.<br />
<br />
==Links==<br />
<br />
*FFmpeg [http://ffmpeg.mplayerhq.hu/ ffmpeg.mplayerhq.hu]<br />
*unofficial* FFmpeg Win32 Builds [http://arrozcru.no-ip.org/ffmpeg_builds/ http://arrozcru.no-ip.org/ffmpeg_builds/]<br />
*AviSynth [http://avisynth.org/mediawiki/Main_Page avisynth.org]<br />
*ncftp [http://www.ncftp.com/ www.ncftp.com]<br />
<br />
==Licence==<br />
<pre><br />
Watch2Convert<br />
(Watch-folder ffmpeg frontend)<br />
<br />
Copyright (C) 2007 Maksym Veremeyenko.<br />
This file is part of Watch2Convert (Watch-folder ffmpeg frontend).<br />
Contributed by Maksym Veremeyenko, verem@m1.tv, 2007.<br />
<br />
Watch2Convert is free software; you can redistribute it and/or modify<br />
it under the terms of the GNU General Public License as published by<br />
the Free Software Foundation; either version 2 of the License, or<br />
(at your option) any later version.<br />
<br />
Watch2Convert is distributed in the hope that it will be useful,<br />
but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License<br />
along with Watch2Convert; if not, write to the Free Software<br />
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />
</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/Watch2ConverWatch2Conver2007-05-26T14:07:07Z<p>Verem: </p>
<hr />
<div></div>Veremhttp://research.m1stereo.tv/wiki/index.php/Vz:Doc:SamplesVz:Doc:Samples2007-03-25T12:36:18Z<p>Verem: </p>
<hr />
<div>Demo projects, supplied with <b>VZ</b> could be found in folder <code>projects</code> and are very usefull for understanding scene building method and plugin usage.<br />
<br />
Most simples usefull are (you can start <b>vz</b> with automatic scene load):<br />
<br />
*<code>demo1c</code> simple text and graphics generation<br />
<pre>vz.exe -f ./projects/demo1c.xml</pre><br />
<br />
*<code>demo3</code> text crawl demo<br />
<pre>vz.exe -f ./projects/demo3.xml</pre><br />
<br />
*<code>cube</code> "trajectory" function demo<br />
<pre>vz.exe -f ./projects/cube.xml</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/Vz:Doc:PluginsVz:Doc:Plugins2007-03-24T20:59:41Z<p>Verem: </p>
<hr />
<div>Currently system support next functions for scene builds/operates.<br />
<br />
*[{{SERVER}}/downloads/vz/mans/alpha.man.txt alpha]<br />
*[{{SERVER}}/downloads/vz/mans/mask.man.txt mask]<br />
*[{{SERVER}}/downloads/vz/mans/scale.man.txt scale]<br />
*[{{SERVER}}/downloads/vz/mans/trajectory_table.man.txt trajectory_table]<br />
*[{{SERVER}}/downloads/vz/mans/ttfont.man.txt ttfont]<br />
*[{{SERVER}}/downloads/vz/mans/avifile.man.txt avifile]<br />
*[{{SERVER}}/downloads/vz/mans/image.man.txt image]<br />
*[{{SERVER}}/downloads/vz/mans/rectangle.man.txt rectangle]<br />
*[{{SERVER}}/downloads/vz/mans/systime.man.txt systime]<br />
*[{{SERVER}}/downloads/vz/mans/translate.man.txt translate]<br />
*[{{SERVER}}/downloads/vz/mans/ctrl_container.man.txt ctrl_container]<br />
*[{{SERVER}}/downloads/vz/mans/liveinput.man.txt liveinput]<br />
*[{{SERVER}}/downloads/vz/mans/rotate.man.txt rotate ]<br />
*[{{SERVER}}/downloads/vz/mans/timer.man.txt timer]<br />
*[{{SERVER}}/downloads/vz/mans/ttfont_hcrawl.man.txt ttfont_hcrawl]<br />
<br />
See examples projects for usage example.</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Vz:Doc:SerControlVz:Doc:SerControl2007-03-24T20:30:53Z<p>Verem: </p>
<hr />
<div>Serial Control protocol is used to control <b>VZ</b> throw serial link - most usefull to autiomation/playlist transmit system.<br />
<br />
To enable Serial Control protocol make sure you uncommented section [[Vz:Doc:Configuration#serserver|serserver]].<br />
<br />
Serial link operates on 115200 speed with odd parity and confired using code:<br />
<pre> // configure<br />
DCB lpdcb;<br />
memset(&lpdcb, 0, sizeof(DCB));<br />
lpdcb.BaudRate = (UINT) CBR_115200; // 115200 b/s<br />
// a. 1 start bit ( space )<br />
lpdcb.ByteSize = (BYTE) 8; // b. 8 data bits<br />
lpdcb.Parity = (BYTE) ODDPARITY; // c. 1 parity bit (odd)<br />
lpdcb.StopBits = (BYTE) ONESTOPBIT; // d. 1 stop bit (mark)<br />
lpdcb.fParity = 1;<br />
lpdcb.fBinary = 1;<br />
if (!(SetCommState(serial_port_handle, &lpdcb)))<br />
{<br />
printf("serserver: ERROR! Unable to configure '%s' [err: %d]\n",serial_port_name, GetLastError());<br />
ExitThread(0);<br />
};</pre><br />
<br />
Commands to <b>VZ</b> could be build and parsed by functions from <code>vzCmd.dll</code> (see source code <code>[{{SERVER}}//viewvc/viewvc.cgi/vz/trunk/src/vzCmd/ vzCmd folder]</code> folder). <br />
<br />
Commands creating examples (snipplets from <code>tvdevctl</code> automation):<br />
<pre><br />
char buf[1024];<br />
int buf_len = 0;<br />
int param = 0;<br />
<br />
<br />
//----------------------------------------------------<br />
<br />
vz_serial_cmd_create<br />
(<br />
buf, &buf_len,<br />
VZ_CMD_RESET_DIRECTOR, "d_ab_mix", &param,<br />
NULL<br />
);<br />
<br />
//----------------------------------------------------<br />
<br />
vz_serial_cmd_create<br />
(<br />
buf, &buf_len,<br />
VZ_CMD_START_DIRECTOR, "d_ab_mix", &param,<br />
NULL<br />
);<br />
<br />
//----------------------------------------------------<br />
<br />
char artist[1024], title[1024], recorders[1024];<br />
/* <br />
set variable here<br />
*/<br />
vz_serial_cmd_create<br />
(<br />
buf, &buf_len,<br />
VZ_CMD_SET, "t_artist_c", "s_text", artist,<br />
VZ_CMD_SET, "t_title_c", "s_text", title,<br />
VZ_CMD_SET, "t_recorder_c", "s_text", recorder,<br />
NULL<br />
);<br />
</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/Vz:Doc:IpControlVz:Doc:IpControl2007-03-24T20:11:13Z<p>Verem: /* TCP shell= */</p>
<hr />
<div>IP Control protocol is simplest way for <b>VZ</b> control.<br />
<br />
By default <b>VZ</b> uses TCP/8001 port for shell style control protocol and UDP/8002 for non-interactive datagram proto. <br />
<br />
=UDP messages=<br />
<br />
This protocol provides fast and sessionless control type. Due to binary nature of command data block you need to use <b>vzCmdSender.exe</b> program.<br />
<br />
It can send futher list of commands for scene and vz control:<br />
<br />
<pre>LOAD_SCENE <filename><br />
START_DIRECTOR <director> <pos><br />
RESET_DIRECTOR <director> <pos><br />
CONTINUE_DIRECTOR <director><br />
STOP_DIRECTOR <director><br />
SET <container> <param> <value><br />
CONTAINER_VISIBLE <container> <flag><br />
</pre><br />
<br />
Make sure udpserver is allowed to start:<br />
<pre>[...]<br />
<module name="udpserver"><br />
<param name="enable" value="defined"/><br />
<!-- <param name="port" value="8001"/><br />
<param name="bufsize" value="8192"/> --><br />
</module><br />
[...]</pre><br />
<br />
Some examples:<br />
<br />
load new scene<br />
<pre>vzCmdSender.exe localhost LOAD_SCENE "./projects/demo1.xml"</pre><br />
Set text fields<br />
<pre>vzCmdSender.exe localhost SET text_2 s_text "Senior Deputy Officer" SET text_1 s_text "Vasilij Pupkin"</pre><br />
start animation<br />
<pre>vzCmdSender.exe localhost START_DIRECTOR main 0</pre><br />
continue (hide) animation<br />
<pre>vzCmdSender.exe localhost CONTINUE_DIRECTOR main</pre><br />
<br />
=TCP shell=<br />
<br />
To connect to TCP/8001 and send commands you need a telnet client program. Find appropriate "telnet" program for operating. "putty" is nice free program.<br />
<br />
==Connecting==<br />
<pre><br />
[verem@elbrus reports]$ telnet vz-dev 8001<br />
Trying 10.1.5.23...<br />
Connected to vz-dev.internal.m1stereo.tv (10.1.5.23).<br />
Escape character is '^]'.<br />
ViZualizator (vz-1.0-release) [tcpserver]<br />
<br />
vz in$><br />
</pre><br />
As use can see vz service is online and is ready to accept commands.<br />
<br />
==Commands==<br />
<b>NOTE!</b> Tune your telnet program for UTF-8 characters.<br />
<br />
Each command sent to VZ has javascript-like structure. I try to descibe most usefull commands format with examples.<br />
<br />
*<code>renderman.load(<scene_name>)</code><br />
Perform scene loading into rendering engine, for example:<br />
<pre>vz in$> renderman.load(./projects/demo1.xml)<br />
vz out$> OK!Load</pre><br />
<br />
*<code>tree.function.<function_id>.<parameter_name>=<value></code><br />
perform parameter setting for function, for example:<br />
<pre>vz in$> scene.tree.function.text_1.s_text=Prived Medved<br />
vz out$> OK<br />
vz in$> scene.tree.function.text_2.s_text=Hi Man!<br />
vz out$> OK</pre><br />
<br />
*<code>tree.container.<container_id>.visible=<value></code><br />
Container visibility control<br />
<br />
*<code>tree.motion.director.<director_id>.start([<position>])</code><br />
*<code>tree.motion.director.<director_id>.stop()</code><br />
*<code>tree.motion.director.<director_id>.continue()</code><br />
*<code>tree.motion.director.<director_id>.reset([<position>])</code><br />
Directors (animation) control<br />
<br />
For example:<br />
<br />
Start animation on director <code>main</code>.<pre>vz in$> scene.tree.motion.director.main.start()<br />
vz out$> OK</pre><br />
<br />
Continue animation on director <code>main</code> after pausing.<pre>vz in$> scene.tree.motion.director.main.cont()<br />
vz out$> OK</pre><br />
<br />
*<code>tree.motion.timeline.<timeline_id>.<t1|t2|y1|y2>=<value></code><br />
timeline modification.</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Vz:Doc:ConfigurationVz:Doc:Configuration2007-03-24T18:42:00Z<p>Verem: /* bluefish */</p>
<hr />
<div>Configuration file supplied with <b>VZ</b> is used for hardware dependent configuration.<br />
<br />
Configuration file has <b>XML</b> format and consists of some section that describes some module behaviour, main sections described bellow.<br />
<br />
===main===<br />
<pre><br />
<module name="main"><br />
<!-- output module name --><br />
<!-- <param name="output" value="bluefish" /> --><br />
<param name="output" value="nullvideo" /><br />
<!-- <param name="output" value="streamalpha" /> --> <br />
<br />
<!-- font (.ttf) files path --><br />
<param name="font_path" value="C:\WINDOWS\Fonts" /><br />
</module><br />
</pre><br />
This section configure some global <b>vz</b> functionality. <br />
<br />
<code>output</code> paramter defines which output module will be used. By default <code>nullvideo</code> is used. For <code>bluefish</code> output module using uncomment string with <code>bluefish</code> value of parameter <code>output</code>.<br />
<br />
<code>font_path</code> parameter is used to point to main Truetype storage directory. Override it if you need. Additionaly fonts can be stored in local to <code>vz.exe</code> folder <code>fonts</code>.<br />
<br />
===vzOutput===<br />
<pre><br />
<module name="vzOutput"><br />
<!--<br />
enable to use asyncronous reading of framebuffer<br />
based on 'GL_EXT_pixel_buffer_object' GL extension<br />
--><br />
<!-- <param name="use_offscreen_buffer" value="defined" /> --><br />
</module><br />
</pre><br />
This section was used to configure <code>vzOutput.dll</code>. Main purpose of use this section is override method used for rendered surface download: classic <code>glReadPixel</code> or <code>GL_EXT_framebuffer_object</code>. For current moment for modern card i found no difference in using second method. Possible will be dropped in future.<br />
<br />
===vzMain===<br />
<pre><br />
<module name="vzMain"><br />
<!-- define field-based rendering mode used --><br />
<param name="fields" value="defined" /> <br />
<br />
<!-- enable --><br />
<param name="enable_GL_SRC_ALPHA_SATURATE" value="defined"/><br />
</module><br />
</pre><br />
You can override parameter <code>fields</code> (comment out) to enable "progressive" rendering, not field based (do it with caution - enabling frame-based rendering makes some animation become not smooth)<br />
<code>enable_GL_SRC_ALPHA_SATURATE</code> parameter provides additinal configuration of <code>glBlendFuncSeparateEXT</code> function: <code>GL_ONE_MINUS_DST_ALPHA</code> or <code>GL_SRC_ALPHA_SATURATE</code> as parameter for source distination.<br />
<br />
===tvspec===<br />
<pre><br />
<module name="tvspec"><br />
<!-- long TV_FRAME_DUR_MS;// frame length (time period) (ms) --><br />
<param name="TV_FRAME_DUR_MS" value="40"/><br />
<br />
<!-- long TV_FRAME_HEIGHT; // frame height (px) --><br />
<param name="TV_FRAME_HEIGHT" value="576"/><br />
<br />
<!-- long TV_FRAME_WIDTH;// frame width (px) --><br />
<param name="TV_FRAME_WIDTH" value="720"/><br />
<br />
<!-- long TV_FRAME_1ST; // first field in frame --><br />
<param name="TV_FRAME_1ST" value="0"/><br />
<br />
<!-- long TV_FRAME_PS; // frames per seconds --><br />
<param name="TV_FRAME_PS" value="25"/><br />
</module><br />
</pre><br />
Defines geometric rendering parameters. By default configured for PAL world.<br />
<br />
===tcpserver===<br />
<pre><br />
<module name="tcpserver"><br />
<param name="enable" value="defined"/><br />
<param name="port" value="8001"/><br />
<param name="bufsize" value="8192"/><br />
</module><br />
</pre><br />
This section enables IP Control server, parameters defines <code>port</code> and <code>bufsize</code>. Modify <code>port</code> parameter if you are already has service binded to local IP port 8001.<br />
<br />
===serserver===<br />
<pre><br />
<!-- <module name="serserver"><br />
<param name="enable" value="defined"/><br />
<param name="serial_port_name" value="COM1:"/><br />
<param name="bufsize" value="8192"/><br />
</module> --><br />
</pre><br />
This section enables Serial Control server. This section is commented out by default. <br />
<br />
If you are going to use serial link to control <b>vz</b> uncomment this section and modify parameter <code>serial_port_name</code> to avoid conflicts with other services.<br />
<br />
===streamalpha===<br />
<pre><br />
<module name="streamalpha"><br />
<!--<br />
<param name="ColorSubcarrierPhase" value="1"/><br />
<param name="SDEL" value="1"/><br />
<param name="ADEL" value="1"/><br />
<br />
<param name="PROGRAM_GRAPHICSONLY" value="defined"/><br />
<param name="PREVIEW_GRAPHICSONLY" value="defined"/> --><br />
<param name="PROGRAM_OVERLAY" value="defined"/><br />
<param name="PREVIEW_OVERLAY" value="defined"/><br />
<param name="DMUX_OFF" value="defined"/><br />
--><br />
<br />
<param name="MODE_BYPASS_OFF" value="defined"/><br />
<param name="MEM_4444" value="defined"/><br />
<param name="CHROMAKEY_OFF" value="defined"/><br />
<param name="MODE_PAL" value="defined"/><br />
<param name="MULTIPLY_ALPHA_OFF" value="defined"/><br />
<param name="SWITCH_OUPUT_ON_PREVIEW_OFF" value="defined"/><br />
</module><br />
</pre><br />
<br />
===nullvideo===<br />
<pre><br />
<!-- test output module for cpu/bus load --><br />
<module name="nullvideo"><br />
<!-- <param name="YUV_CONVERT" value="defined"/> --><br />
<!-- <param name="OUTPUT_BUF_TRANSFER" value="defined"/>--><br />
<param name="INPUTS_COUNT" value="1"/><br />
<!-- <param name="FIELD_MODE" value="defined"/> --><br />
<!-- <param name="TWICE_FIELDS" value="defined"/> --><br />
<!-- patterns: 0-bars, 1-grid, 2-lines --><br />
<param name="INPUT_1_PATTERN" value="2"/><br />
<param name="INPUT_2_PATTERN" value="0"/><br />
<param name="INPUT_3_PATTERN" value="0"/><br />
<param name="INPUT_4_PATTERN" value="0"/><br />
<br />
</module><br />
</pre><br />
<code>Nullvideo</code> module is used to emulate real output module with all deficiency and CPU consumtions on some operations. Most usefull are:<br />
*<code>INPUTS_COUNT</code> defines number of inputs.<br />
*<code>INPUT_?_PATTERN</code> defines pattern loaded into input buffer for that channel: 0-bars, 1-grid, 2-lines<br />
<br />
===bluefish===<br />
<pre><br />
<module name="bluefish"><br />
<!-- video --><br />
<!-- <param name="KEY_INVERT" value="defined"/> --><br />
<!-- <param name="KEY_WHITE" value="defined"/> --><br />
<!-- <param name="SINGLE_INPUT" value="defined"/> --><br />
<param name="DUAL_INPUT" value="defined"/><br />
<!-- <param name="VIDEO_MODE" value="defined"/> --><br />
<!-- <param name="PAL" value="defined"/> --><br />
<!-- <param name="ONBOARD_KEYER" value="defined"/> --><br />
<!-- <param name="H_PHASE_OFFSET" value="0"/> --><br />
<!-- <param name="V_PHAZE_OFFSET" value="0"/> --><br />
<!-- <param name="VERTICAL_FLIP" value="defined"/> --><br />
<param name="SCALED_RGB" value="defined"/><br />
<!-- <param name="SWAP_INPUT_CONNECTORS" value="defined"/> --><br />
<br />
<!-- <param name="SOFT_FIELD_MODE" value="defined"/><br />
<param name="SOFT_TWICE_FIELDS" value="defined"/> --><br />
<br />
<!-- ANALOG_INPUT: <br />
0 - Composite, <br />
1 - S-Video, <br />
2 - Component --><br />
<!-- <param name="ANALOG_INPUT" value="0"/> --><br />
<br />
<!-- PROGRAM_ANALOG_OUTPUT:<br />
1: Composite + s-video<br />
2: Component<br />
3: RGB<br />
4: Composite + s-video + Component<br />
5: Composite + s-video + RGB --><br />
<!-- <param name="PROGRAM_ANALOG_OUTPUT" value="0"/> --><br />
<!-- <param name="PROGRAM_SDI_DUPLICATE" value="defined"/> --><br />
<!-- <param name="PROGRAM_OUTPUT_SWAP" value="defined"/> --><br />
<br />
<!-- audio --><br />
<param name="AUDIO_OUTPUT_ENABLE" value="defined"/><br />
<param name="AUDIO_OUTPUT_EMBED" value="defined"/><br />
<param name="AUDIO_INPUT_ENABLE" value="defined"/><br />
<param name="AUDIO_INPUT_EMBED" value="defined"/><br />
<!-- AUDIO_INPUT_SIGNAL<br />
0: AES<br />
1: Analouge<br />
2: SDI A<br />
3: SDI B --><br />
<!-- <param name="AUDIO_INPUT_SIGNAL" value="0"/> --><br />
</module><br />
</pre><br />
This section define parameters used for <code>bluefish</code> output module.<br />
<br />
Most of parameters has human-named identificator, but some paramters and some situation should be explained:<br />
<br />
====<code>SOFT_FIELD_MODE</code>, <code>SOFT_TWICE_FIELDS</code>====<br />
Very CPU consumption methods for preparing interlaced input picture for loading as texture. <br />
<br />
<code>SOFT_FIELD_MODE</code> option makes module split grabbed frame buffer into two portion, where each portion of resulting framebuffer contains one field of grabbed frame. Rendering engine perform scaling resilting texture on OpenGL level. As result we got smooth picture without interlaces.<br />
<br />
<code>SOFT_TWICE_FIELDS</code> options makes module split and duplicate lines in picture, as result from one grabbed frame with got two frame - first contains duplicated odd/even fields, seconds even/odds fields. Most nice results on high mothing live input video.<br />
<br />
If you are not going to provide partial screen DVE - do not uncomment.<br />
<br />
====<code>AUDIO_*</code>====<br />
This options defines audio operations. Comment out them if you do not use audio.<br />
<br />
====<code>H_PHASE_OFFSET</code>, <code>V_PHASE_OFFSET</code>====<br />
This parameters needs to be uncommented and modified to adjust output signal to current condition. Some switcher and keyers required fine phaze tuning.<br />
<br />
====<code>SINGLE_INPUT</code>, <code>DUAL_INPUT</code>====<br />
This parameters defines how many inputs will be used. If you use one input <code>SINGLE_INPUT</code> should be uncommented only, for two inputs <code>DUAL_INPUT</code> should be uncommented only. If you do not use any input signal - comment out both.<br />
<br />
====<code>PROGRAM_ANALOG_OUTPUT</code>====<br />
Makes Analog output supported board duplicate program output to defined analouge output, usefull for monitoring.<br />
<br />
====<code>PROGRAM_SDI_DUPLICATE</code>====<br />
Duplicates program (FILL) output on both FILL (DVID_1) and ALPHA (DVID_2) outputs<br />
<br />
====<code>PROGRAM_OUTPUT_SWAP</code>====<br />
Swap fill and alpha outputs.<br />
<br />
====Live input + Onboard keyer====<br />
For dual input board it possible to use input A as background for internal keyer and input B for live video input. For this situation you need to uncomment also option <code>SWAP_INPUT_CONNECTORS</code>:<br />
<pre><br />
<param name="SINGLE_INPUT" value="defined"/><br />
<!-- <param name="DUAL_INPUT" value="defined"/> --><br />
<param name="SWAP_INPUT_CONNECTORS" value="defined"/><br />
<param name="ONBOARD_KEYER" value="defined"/></pre><br />
<br />
===decklink===<br />
<pre><br />
<module name="decklink"><br />
<!-- enable onboard keyer --><br />
<!-- <param name="O_ONBOARD_KEYER" value="defined"/> --><br />
<br />
<!-- Analouge output:<br />
0 - COMPOSITE, <br />
1 - SVIDEO, <br />
2 - COMPONENT --><br />
<!-- <param name="O_ANALOGUE_OUTPUT" value="0"/> --><br />
<br />
<!-- A boolean value, TRUE for SMPTE component levels or FALSE for Betacam component levels --><br />
<!-- <param name="O_COMPONENT_LEVEL_SMPTE" value="defined"/> --><br />
<br />
<!-- A boolean value, TRUE for 7.5 IRE or FALSE for 0.0 IRE --><br />
<!-- <param name="O_SETUP_IS_75" value="defined"/> --><br />
<br />
<!-- Adjusts the timing of the genlock input. An integer <br />
value in the range (+|-)9.435us in steps of 37ns --><br />
<!-- <param name="TIMING_OFFSET" value="0"/> --><br />
</module><br />
</pre><br />
This section define parameters used for <code>decklink</code> output module. Look for comments to paramters for their explanation.</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Vz:Doc:RunningVz:Doc:Running2007-03-24T18:33:44Z<p>Verem: </p>
<hr />
<div>Starting of <b>VZ</b> is very simple.<br />
<br />
Make sure your shortcut's <code>Start in:</code> point to <b>VZ</b> folder - all plugins and output drivers searched from current directory.<br />
<br />
<b>VZ</b> has to parameters to run:<br />
*<code>-f</code> define scene to load after <code>vz.exe</code> startup (usefull for automatic scene load)<br />
*<code>-c</code> overrides config file used. By default used <code>vz.conf</code> file from current location - using this option its able to override used config file.<br />
<br />
During running <b>VZ</b> produce a lot of messaging information. Sometime it's cause performance degradation. To avoid this its possible to redirect outputs to files:<br />
<pre>vz.exe >log_std 2>log_err</pre><br />
<br />
Another usefull things is running <b>vz</b> from batch file, for example batch file <code>task1.bat</code> starts <b>vz</b> with defined scene and config:<br />
<pre>vz.exe -f ./task1/project.xml -c ./task1/no_video.conf >log_std 2>log_err</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/SyncDrvSyncDrv2007-03-24T14:50:17Z<p>Verem: /* About */</p>
<hr />
<div>=== About ===<br />
This device is used to decode LTC (linear timecode signal) and REF (vertical sync signal from composite signal) for applications required frame accurate precision.<br />
<br />
=== Downloads ===<br />
<br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/syncdrv/trunk/hardware/main.pdf main.pdf] - schematic (PDF)<br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/syncdrv/trunk/hardware/main.SCH main.SCH] - schematic (P-CAD)<br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/syncdrv/trunk/firmware/syncdrv.asm syncdrv.asm] - firmware source<br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/syncdrv/trunk/software/main.c main.c] - test usage program</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Rs232-rs422Rs232-rs4222006-05-10T17:40:56Z<p>Verem: /* Downloads */</p>
<hr />
<div>=== About ===<br />
This device is used for interface convertation - from RS-232 to RS-422.<br />
<br />
===Downloads===<br />
<b>Current working version</b><br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/rs232-rs422/trunk/schematic.sch schematic.sch] - schematic (in P-CAD format)<br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/rs232-rs422/trunk/schematic.pdf schematic.pdf] - schematic (in PDF)</div>Veremhttp://research.m1stereo.tv/wiki/index.php/AirrecAirrec2006-03-25T17:13:36Z<p>Verem: /* Build/Install/Configure */</p>
<hr />
<div>==Overview==<br />
<br />
This project was developed for air monitoring, video reports (on DVD media) preparation.<br />
<br />
Software complex consists of two parts<br />
*1. PVR - video recorder, video preview and audio level monitoring, rotating recorded video (delete older parts to keep spool size in fixed size).<br />
*2. web-oriented application for DVD building.<br />
<br />
==Hardware requirements==<br />
<br />
PVR uses video capture card with hardware MPEG-2 encoder (see [http://www.ivtv.org/ ivtv projects] for details).<br />
<br />
Recorder MPEG-2 stream saved to hard disk, the large disk space - the more video could be saved. :-))<br />
<br />
[http://www.directfb.org DirectFB] is used for GUI.<br />
<br />
==Downloads==<br />
<br />
Current version 1.0 (-r42):<br />
* [{{SERVER}}/downloads/airrec/airrec-1.0-r42.tar.bz2 airrec-1.0-r42.tar.bz2] - source code<br />
<br />
==Build==<br />
*1. Download source code from link above and unpack.<br />
<pre>cd /usr/local/src<br />
wget http://research.m1stereo.tv/downloads/airrec/airrec-1.0-r42.tar.bz2<br />
bzip2 -cd airrec-1.0-r42.tar.bz2 | tar xvf - </pre><br />
*2. Make sure that installed additional packets:<br />
**DirectFB-devel<br />
**sqlite-devel-3.1.2-3<br />
*3. Go to source code dir and compile<br />
<pre>cd airrec<br />
cd src<br />
make</pre><br />
If DirectFB was installed from rpm you need fix <code>INCLUDES</code> variable in <code>Makefile</code>.<br />
==Install==<br />
*1. Directory structure preparation:<br />
**<code>/opt/airrec</code> - programs and scripts dir.<br />
**<code>/var/spool/airrec/live</code> - directory for db file and live streams.<br />
**<code>/var/spool/airrec/live/ch0</code> - directory for saving MPEG-2 fragments for channel 0.<br />
**<code>/var/spool/airrec/dvd/master</code> - built dvd storage<br />
**<code>/var/spool/airrec/dvd/temp</code> - temparatiry storage for dvd building.<br />
*2. Copying files:<br />
<pre>#main executable<br />
cp /usr/local/src/airrec/src/airrec /opt/airrec<br />
<br />
# database file for storing info about fragments<br />
cp /usr/local/src/airrec/src/airrec.db /var/spool/airrec/live<br />
<br />
# mpeg coder setup scripts and srt file making scripts<br />
cp /usr/local/src/airrec/scripts/airrec_srt_creator.pl /opt/airrec<br />
cp /usr/local/src/airrec/scripts/airrec_srt_watcher.sh /opt/airrec<br />
cp /usr/local/src/airrec/scripts/ivtv.setup.CODEC.sh /opt/airrec<br />
cp /usr/local/src/airrec/scripts/ivtv.setup.INPUT.sh /opt/airrec</pre><br />
<br />
==Configure==<br />
*1. Configuration file for recorder (sample, 1 channel, 2x80GB stripe for video storing):<br />
<pre>db-file=/var/spool/airrec/live/airrec.db<br />
use-channel=0<br />
ident="M1 [main]"<br />
dev-pcm=/dev/video24<br />
dev-yuv=/dev/video32<br />
dev-mpeg=/dev/video0<br />
spool=/var/spool/airrec/live/ch0<br />
spool-limit=140000<br />
#noflip<br />
vsync=25<br />
syslog=6</pre><br />
Some parameters explanations:<br />
**<code>db-file=<filename></code> - <i>database file name for storin info about fragments</i><br />
**<code>fb-mode=<mode str></code> - <i>Setup FrameBuffer mode ( default "1024,768,32")</i><br />
**<code>use-channel=<N> </code> - <i>Activate channel N and apply further options to that channel</i><br />
**<code>ident=<N> </code> - <i>Channel ident</i><br />
**<code>dev-pcm=<filename></code><br />
**<code>dev-yuv=<filename></code><br />
**<code>dev-mpeg=<filename></code><br />
**<code>spool=<PATH> </code> - <i>Location where mpg file stored</i><br />
**<code>spool-limit=<N> </code> - <i>Limit stored spool to <N> Megabytes</i><br />
**<code>vsync=<N> </code> - <i>Try to redraw screen at <N> fps.</i><br />
**<code>noflip </code> - <i>Disable surface flipping mode.</i><br />
**<code>config=<filename> </code> - <i>Use config file.</i><br />
**<code>syslog=<N> </code> - <i>Use LOG_LOCAL<N> facility for syslogging.</i><br />
<br />
*2. Running recorder preparation:<br />
**1. <code>/etc/crontab</code> (rotating and srt's creating/cleanup):<br />
<pre>-- skipped --<br />
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root /usr/bin/killall -HUP airrec<br />
0,20,40 * * * * root /opt/airrec/airrec_srt_watcher.sh<br />
--skipped--</pre><br />
**2. <code>/etc/modprobe.conf</code>:<br />
<pre>-- skipped --<br />
alias char-major-81 videodev<br />
alias char-major-81-0 ivtv<br />
options ivtv pal=D cardtype=15<br />
#options i810fb vram=8 xres=1024 bpp=32 yres=768 hsync1=30 hsync2=55 vsync1=55 vsync2=72 accel mtrr<br />
--skipped--</pre><br />
**3. <code>/etc/rc.d/rc.local</code> (init matrox's module / codes setup):<br />
<pre>-- skipped --<br />
# setup new io scheduler<br />
echo -n "cfq" > /sys/block/hda/queue/scheduler<br />
echo -n "cfq" > /sys/block/hdc/queue/scheduler<br />
echo -n "cfq" > /sys/block/hdd/queue/scheduler<br />
<br />
# airrec init<br />
/sbin/modprobe drm<br />
/sbin/modprobe mga<br />
/sbin/modprobe matroxfb_base<br />
/opt/airrec/ivtv.setup.CODEC.sh<br />
/opt/airrec/ivtv.setup.INPUT.sh<br />
/bin/sleep 2<br />
--skipped--</pre><br />
<br />
**4. <code>/etc/inittab</code> (start at the first console)<br />
<pre>-- skipped --<br />
# Run gettys in standard runlevels<br />
#1:2345:respawn:/sbin/mingetty tty1<br />
1:2345:respawn:/sbin/startsess tty1 /opt/airrec/airrec -c /opt/airrec/airrec.conf.mga >/dev/null 2>/dev/null<br />
--skipped--</pre><br />
<br />
**5. <code>/etc/directfbrc</code> :<br />
<pre>no-vt-switch<br />
#no-vt-switching<br />
#no-vt</pre><br />
<br />
**6. <code>/etc/hotplug/blacklist</code> (preventing loading mga video board drivers at boot stage)<br />
<pre>-- skipped --<br />
ohci1394<br />
matrox_w1<br />
matroxfb_accel<br />
matroxfb_base<br />
-- skipped --</pre><br />
<br />
==Licence==<br />
<pre><br />
airrec<br />
(yet another PVR)<br />
<br />
Copyright (C) 2006 Maksym Veremeyenko.<br />
This file is part of airrec project (air monitoring/recording with<br />
video reports build system)<br />
<br />
airrec is free software; you can redistribute it and/or modify<br />
it under the terms of the GNU General Public License as published by<br />
the Free Software Foundation; either version 2 of the License, or<br />
(at your option) any later version.<br />
<br />
airrec is distributed in the hope that it will be useful,<br />
but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License<br />
along with airrec; if not, write to the Free Software<br />
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />
</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/Virtualdub-filtersVirtualdub-filters2006-01-09T19:01:41Z<p>Verem: /* Downloads */</p>
<hr />
<div><b>VirtualDub filters - set of additional plugins for VirtualDub for auxilarity video pre/post-processing.</b><br />
<br />
==Overview==<br />
This set of plugins was developed during four years of working for solving some video pre/post production task in easy way, without usage of some king of propriarity products.<br />
<br />
==Description==<br />
<br />
===aviover===<br />
<br />
This filter used to put animated subtitles (or another kind of video). As source for animation it used uncompressed 32-bit avi file with alpha channel. <br />
<br />
Dialog:<br />
<br />
[[Image:virtualdub-filters_aviover_dialog.png]]<br />
<br />
Parameters:<br />
*<b>Start frame</b> - "backgound" video's frame number from plugin (filter) begin to work<br />
*<b>AVI file</b> - path for animation<br />
*<b>Start number</b> - start frame of animation<br />
*<b>Sequence length</b> - length (in frames) of animation<br />
<br />
----<br />
<br />
===channelMaster===<br />
<br />
Simple filter for reverting ARGB channels of video. <br />
<br />
Dialog:<br />
<br />
[[Image:virtualdub-filters_channelMaster.png]]<br />
<br />
As config it uses matrix style.<br />
<br />
----<br />
===imageplacer===<br />
<br />
This filter was used for videos canvas changing.<br />
<br />
Dialog:<br />
<br />
[[Image:virtualdub-filters_imageplacer_dialog.png]]<br />
<br />
Parameters:<br />
*<b>Dimentions</b> - dimention of new canvas.<br />
*<b>Background</b> - backgound colour used.<br />
*<b>Position</b> - where to place CENTER of video.<br />
<br />
Result:<br />
<br />
[[image:virtualdub-filters_imageplacer_result.png|none|thumb|150px|[[help:contents|Result of plugin processing]]]]<br />
<br />
----<br />
===rgb2pal===<br />
<br />
This plugin was used to change colour dynamic range of video from RGB [0...255] to PAL [35-235] values of luma.<br />
<br />
Dialog:<br />
<br />
[[Image:virtualdub-filters_rgb2pal_dialog.png]]<br />
<br />
----<br />
===tgaover2===<br />
<br />
This filter is used to put image over video with dissolve effect.<br />
<br />
Dialog:<br />
<br />
[[Image:virtualdub-filters_tgaover2_dialog.png]]<br />
<br />
Parameters:<br />
*<b>Start frame</b> - "backgound" video's frame number from plugin (filter) begin to work<br />
*<b>TGA file name</b> - path for image file (32-bit TGA)<br />
*<b>Fade In</b> - appearence duration (in frames)<br />
*<b>Normal</b> - normal transparent show duration<br />
*<b>Fade Out</b> - disappearence duration (in frames)<br />
<br />
----<br />
===tgaseqover===<br />
<br />
This plugin (filter) has almost the same functionality as <b>aviover</b> but it uses UNCOMPRESSED 32-bit targa sequence as source for animated subtitle.<br />
<br />
Dialog:<br />
<br />
[[Image:virtualdub-filters_tgaseqover_dialog.png]]<br />
<br />
Parameters:<br />
*<b>Sequence template</b> - is <b>printf</b> style string for building name of file in sequence.<br />
----<br />
<br />
===verticalblur===<br />
<br />
This plugin was used to make motional vertical blur in 1 pixel range. This processing descrease flicking of "1 pixel heigh" objects.<br />
<br />
<br />
==Downloads==<br />
<br />
Binaries:<br />
*[{{SERVER}}/downloads/virtualdub-filters/aviover.vdf aviover]<br />
*[{{SERVER}}/downloads/virtualdub-filters/channelMaster.vdf channelMaster]<br />
*[{{SERVER}}/downloads/virtualdub-filters/imageplacer.vdf imageplacer]<br />
*[{{SERVER}}/downloads/virtualdub-filters/rgb2pal.vdf rgb2pal]<br />
*[{{SERVER}}/downloads/virtualdub-filters/tgaover.vdf tgaover]<br />
*[{{SERVER}}/downloads/virtualdub-filters/tgaover2.vdf tgaover2]<br />
*[{{SERVER}}/downloads/virtualdub-filters/tgaseqover.vdf tgaseqover]<br />
*[{{SERVER}}/downloads/virtualdub-filters/verticalblur.vdf verticalblur]<br />
Source code :<br />
*[{{SERVER}}/viewvc/viewvc.cgi/virtualdub-plugins/trunk/ trunk]</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Gpi-pulserGpi-pulser2006-01-09T18:16:04Z<p>Verem: /* Resources */</p>
<hr />
<div><b> GPI pulser - Atmel's microcontroller based system for translating GPI's front to fixel length pulse.</b><br />
<br />
===Resources===<br />
<b>Version 1.0</b><br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/gpi-pulser/trunk/main.pdf main.pdf] - schematic<br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/gpi-pulser/trunk/firmware.asm firmware.asm] - assembler program</div>Veremhttp://research.m1stereo.tv/wiki/index.php/Ps2-repeaterPs2-repeater2006-01-09T18:03:09Z<p>Verem: /* Downloads */</p>
<hr />
<div><b>PS/2 repeater - extend usage PS/2 interface devices on long distance.</b><br />
<br />
=== About ===<br />
We developed this device to make possible to use keyboard control on long length. Device was succesfully tested and still working (even with KVM).<br />
<br />
===Downloads===<br />
<b>Version 1.0a</b><br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/ps2-repeater/tags/1.0a/hardware/ps2-repeater.pdf ps2-repeater.pdf] - schematic<br />
*[{{SERVER}}/viewvc/viewvc.cgi/*checkout*/ps2-repeater/tags/1.0a/software/firmware.asm firmware.asm] - assembler program<br />
<br />
===Photos===<br />
<br />
Photos of resultings and testing process.<br />
<br />
{|<br />
|-<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_1.jpg|none|thumb|250px|[[help:contents|Photo #1]]]]<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_2.jpg|none|thumb|250px|[[help:contents|Photo #2]]]]<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_3.jpg|none|thumb|250px|[[help:contents|Photo #3]]]]<br />
|}<br />
<br />
{|<br />
|-<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_4.jpg|none|thumb|250px|[[help:contents|Photo #4]]]]<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_5.jpg|none|thumb|250px|[[help:contents|Photo #5]]]]<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_6.jpg|none|thumb|250px|[[help:contents|Photo #6]]]]<br />
|}<br />
<br />
{|<br />
|-<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_7.jpg|none|thumb|250px|[[help:contents|Photo #7]]]]<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_8.jpg|none|thumb|250px|[[help:contents|Photo #8]]]]<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_9.jpg|none|thumb|250px|[[help:contents|Photo #9]]]]<br />
|}<br />
<br />
{|<br />
|-<br />
| valign="top"|<br />
[[image:ps2_repeater_sample_photo_10.jpg|none|thumb|250px|[[help:contents|Photo #10]]]]<br />
|}</div>Veremhttp://research.m1stereo.tv/wiki/index.php/PsvbiPsvbi2006-01-07T15:29:52Z<p>Verem: /* Writing own plugin */</p>
<hr />
<div><b>psvbi - Pseudo VBI </b><br />
<br />
==Overview==<br />
<br />
<b>psvbi</b> software complex was developed for trasmitting control commands in TV video signal. Data block coded into some lines of video signal and could be used as marks for remote stations or analytic system. It much easy to implement and control (and diag) instead of real VBI due to high cost of equipment.<br />
<br />
==How does it works==<br />
<br />
===Base Theory===<br />
Data to transmit coded by 14 bytes block. Each block transmitted in one video frame. Data encoded as luminance part of video signal (most stable to MPEG encoding/decoding) in some video lines (in our case we prefer to use top 2..4 lines - not visible on home equipment, only professional monitors with turned on underscan area could be used to SEE if data real present). During coding data used <i>Hamming Error Correction Code</i> and permutations alorithms to make more stable transmitting data, but some times it was noticed false data detection :-(((, use control sum algorithms in analizator to check if it's your real data packed :-))).<br />
<br />
===Embedding data===<br />
<br />
Embedding data performed by <b>VirtualDub</b> software (real greate program). Embedding and encoding data performed by our <b>plug-in</b>.<br />
<br />
Make sure you have <b>VirtualDub</b> and copied <code>pseudovbi.vdf</code> to VirtualDub's plugin folder.<br />
<br />
Start <b>VirtualDub</b>, open desired video file (in our case we use Matrox Digisuite for capturing and playback). Open <i>Video</i> -> <i>Filters</i> and select <i>pseudovbi</i> plugin. As result you can see plugin dialog window:<br />
<br />
[[Image:Psvbi_Plugin_Dialog.png]]<br />
<br />
Encoding/Embeding parametes:<br />
*<b>Start encoding from</b> - define start frame number of video to insert data;<br />
*<b>Frames to encode</b> - number of frames (duration on frames) of encoded data block;<br />
*<b>Data block</b> - hexadiminal presentation of 14 bytes lenght data block;<br />
*<b>Setup/"Luma" level</b> - defines value is used to encode data (0...255);<br />
*<b>Inserting Position</b> - this blocks define where data will be inserted (position on screen). We prefer use top 2 rows (video lines) to insert;<br />
**<b>BLOCK</b> - enable/disable insert block;<br />
**<b>COLUMN</b> - start position (from left) where data begin to inserts<br />
**<b>ROW</b> - row/line number where data begin to inserts;<br />
<br />
Result of plugin: (fragment of <b>VirtualDub</b> program interface)<br />
<br />
[[Image:Psvbi_Plugin_Result.png]]<br />
<br />
As result you can see a dot sequence in first 2 lines of frame. Now data block embedded. You can print this video to tape or video server.<br />
<br />
===Demembedding of data===<br />
<br />
Dembedding of data performed by another part of software.<br />
<br />
This software capture video using V4L2 base interface (we use bttv878 based capture card) perform alization and in a case of detection datablock it call plugins method that perform higher level data decoding (application level).<br />
<br />
Application startup parameters:<br />
<pre><br />
[root@dev-2 psvbi]# ./psvbid --help<br />
Usage: ./psvbid <args><br />
args:<br />
--ident=S Identification, tag for displaying (i.e M1int-AUX)<br />
--aux-console=S Use another console for logging (i.e. /dev/tty2)<br />
--white-level=N White level of signal<br />
--pos-x-start=N left 'x' position of search block<br />
--pos-x-stop=N right 'x' position of search block<br />
--pos-y-start=N top 'y' position of search block<br />
--pos-y-stop=N bottom 'y' position of search block<br />
--video-dev=S video device to grab video from<br />
--video-dev=S input number of video device<br />
--load-plugin=S load handler plugin<br />
--info-about-video show supported inputs and formats of video board<br />
--version Program version<br />
--help Show program usage<br />
</pre> <br />
Real application startup:<br />
<pre><br />
[root@dev-2 decoder]# ./psvbid --load-plugin=m1cmds --pos-y-stop=5<br />
</pre><br />
<br />
===API interface for own analizator===<br />
<br />
Demebedder (<b>psvbid</b>) application perform all operation on "transport" level. To operate on higher level (application) software use plugins set. Each new task required new plugin developing (depends on application level data usage).<br />
<br />
Basic plugin structure:<br />
<br />
Include required headers:<br />
<pre><br />
#include <stdio.h><br />
#include "psvbi.h"<br />
#include "psvbid-plugins.h"<br />
</pre><br />
<br />
Plugins is dynamic loadable library. You can use <code>my_init</code> and <code>my_fini</code> to initialize data structures:<br />
<pre><br />
void __attribute__ ((constructor)) my_init(void)<br />
{<br />
printf("debug::my_init\n");<br />
};<br />
<br />
void __attribute__ ((destructor)) my_fini(void)<br />
{<br />
printf("debug::my_fini\n");<br />
};<br />
</pre><br />
<br />
After detecting of code block (or fail to detect) main program calls function <code>detect_ok</code> (or <code>detect_ok</code>, that you can make empty) of all plugins chain loaded:<br />
<pre><br />
static int detect_ok(struct psvbi_block* block)<br />
{<br />
// some code to operate with block<br />
// calc checksum, check data is correct<br />
return 0;<br />
};<br />
static int detect_fail(struct psvbi_block* block)<br />
{<br />
return 0;<br />
};<br />
</pre><br />
<br />
Argument supplied to functions is <code>struct psvbi_block</code>:<br />
<pre><br />
struct psvbi_block<br />
{<br />
// in/out datas<br />
unsigned char decoded[PSVBI_DATA_LEN]; // data block to coded/restored<br />
unsigned char encoded[PSVBI_PACKET_LEN_PACKED]; // coded data block<br />
<br />
// statistic<br />
unsigned char decode_errors[PSVBI_DATA_LEN]; // errors numbers for bytes<br />
unsigned char decode_corrections[PSVBI_DATA_LEN]; // number of corrected bit<br />
int errors; // total errors count during decoding<br />
int corrections; // total count of corrected bits<br />
<br />
// decoding/coding controls<br />
int _h; // horizontal and vertical positions of<br />
int _v; // found block<br />
/*<br />
int state; // state-machine controls<br />
void* data; // input - output data<br />
int offset; // offset from begining<br />
*/<br />
};<br />
</pre><br />
<br />
Visualization of plugin working/status performed in 2 way:<br />
*1. Displaying statical values of some variables.<br />
*2. Displaying messages list.<br />
<code>struct psvbid_plugin</code> has additional fields:<br />
<pre><br />
...<br />
struct<br />
{<br />
struct timeval time;<br />
char text[1024];<br />
} log[MAX_LOG_PLUGINS_EVENTS];<br />
pthread_mutex_t log_lock;<br />
char status_header[1024];<br />
char status_data[1024];<br />
psvbid_plugin_status_data_builder status_data_builder;<br />
...<br />
</pre><br />
Field <code>status_header</code> could be staticaly initialized and store header of statical descriptive data:<br />
<pre><br />
struct psvbid_plugin PLUGIN =<br />
{<br />
....<br />
.status_header = "| D.CALL| D.CORR| S.STATE| S.CALL| ACKS| NACKS| ERRS| TOUTS|THRD.E| THRD.S|",<br />
....<br />
};<br />
</pre><br />
<br />
Field <code>status_data</code> contains string formated desciptive values. <code>status_data</code> is been rebuilded by calling <code>status_data_builder</code> function outside plugin code. This function perform building formatted string into <code>status_data</code> buffer.<br />
<br />
Field <code>log</code> is used for storing events list. To push event into list i use macro. Its build message and scroll messages list:<br />
<pre><br />
/* macro sample */<br />
#define LOG_EVENT(X...) \<br />
{ \<br />
int ___k; \<br />
pthread_mutex_lock(&PLUGIN.log_lock); \<br />
for(___k = (MAX_LOG_PLUGINS_EVENTS - 1); ___k > 0 ; ___k--) \<br />
PLUGIN.log[___k] = PLUGIN.log[___k - 1]; \<br />
gettimeofday(&PLUGIN.log[0].time, NULL); \<br />
sprintf(PLUGIN.log[0].text, X); \<br />
pthread_mutex_unlock(&PLUGIN.log_lock); \<br />
};<br />
<br />
/* call sample */<br />
// notify ACK<br />
LOG_EVENT("ACK[%d], CMD[%.8lX]", (reply>>8)&0xFF, cmd);<br />
<br />
</pre><br />
<br />
At last you should create a plugin description struct, that define methods and name (classic):<br />
<pre><br />
/* ---------------------------------------------------------------------------<br />
<br />
Define plugin attributest<br />
<br />
----------------------------------------------------------------------------*/<br />
<br />
struct psvbid_plugin PLUGIN =<br />
{<br />
.name = "m1cmds",<br />
.ok = detect_ok,<br />
.fail = detect_fail,<br />
.status_data_builder = status,<br />
.status_header = "| D.CALL| D.CORR| S.STATE| S.CALL| ACKS| NACKS| ERRS| TOUTS|THRD.E| THRD.S|",<br />
.log_lock = PTHREAD_MUTEX_INITIALIZER<br />
};<br />
<br />
</pre><br />
<br />
==Software==<br />
<br />
<b>Version 2.0</b><br />
*[{{SERVER}}/downloads/psvbi/psvbi-2.0.bin.tar.bz2 psvbi-2.0.bin.tar.bz2] - precompiled (FC3) version of software;<br />
*[{{SERVER}}/downloads/psvbi/psvbi-2.0.tar.bz2 psvbi-2.0.tar.bz2] - source code;<br />
<br />
<b>Version 1.0</b><br />
*[{{SERVER}}/downloads/psvbi/pseudovbi.vdf pseudovbi.vdf] - VirtualDub plugin, (precompiled win32 application);<br />
*[{{SERVER}}/downloads/psvbi/psvbi-1.0.bin.tar.bz2 psvbi-1.0.bin.tar.bz2] - precompiled (FC3) version of software;<br />
*[{{SERVER}}/downloads/psvbi/psvbi-1.0.tar.bz2 psvbi-1.0.tar.bz2] - source code;<br />
<br />
==Real example==<br />
<br />
This is most interesting part of whole this story. I try to describe step by step system configuration and creation additional software plugins.<br />
<br />
===Task===<br />
There is playback videoserver that accept command throw RS-232 interface to start/stop playback. There are a lot of video materials that should be replaced by another one that supplied by videoserver.<br />
<br />
===Videoserver Control===<br />
<br />
Lets next commands set / config options will be default to control videoserver. <br />
<br />
<pre><br />
Interface RS-232:<br />
BaudRate = (UINT) CBR_38400<br />
ByteSize = (BYTE) 8<br />
Parity = (BYTE) ODDPARITY<br />
StopBits = (BYTE) ONESTOPBIT <br />
<br />
Control commands (fixed length, 4 byte command with STX and ETX)<br />
02 01 01 FF<br />
---- ---- ---- ----<br />
STX CMD1 CMD2 ETX<br />
<br />
where:<br />
STX - start head<br />
CMD1,CMD2 - 2 byte command code<br />
ETX - end of command<br />
<br />
Reply (sent from videoserver, 2 byte block) :<br />
04 00 - ACK<br />
05 XX - NACK (where XX is error code)<br />
<br />
List of available commands:<br />
CMD1 CMD2<br />
---- ----<br />
01 01 - start playback (and control MCS)<br />
02 01 - stop playback (and control MCS)<br />
</pre><br />
<br />
===Command encoding===<br />
<br />
This is a little agreement about command encoding/embedding into video stream:<br />
<pre><br />
# REPLACE<br />
02 01 01 FF 02 01 01 FF 02 01 01 FF 19 78<br />
<br />
# RETURN<br />
02 02 01 FF 02 02 01 FF 02 02 01 FF 19 78<br />
<br />
# INCORRECT (not tripled data)<br />
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E<br />
<br />
# INCORRECT (incorrect command)<br />
02 02 01 FA 02 02 01 FA 02 02 01 FA 19 78<br />
<br />
# INCORRECT (unknown command)<br />
02 03 03 FF 02 03 03 FF 02 03 03 FF 19 78<br />
<br />
***NB<br />
command interval is 100 frames<br />
command repeated in 2 frames<br />
luma 128<br />
blocks (24,0),(25,1)<br />
</pre><br />
This defines data blocks, that makes videos "marked". (Incorrect commands used with test video to check system for correct application level error detection)<br />
<br />
===Writing own plugin===<br />
<br />
Now we are ready to write own plugin for translating commands from videostream into commands set accepted by videoserver:<br />
<br />
*1. Create a skeleton application (using <code>m1cmds.c</code> plugin);<br />
*2. Add initialization section to setup <code>tty</code> device or other communication device;<br />
*3. Create a block code of command verification.<br />
*4. Create a block code of status/state logging/displaying.<br />
<br />
As result you can see the file: [{{SERVER}}/viewvc/viewvc.cgi/psvbi/tags/2.0/decoder/plugins/m1cmds.c?view=markup m1cmds.c]<br />
<br />
== Licence ==<br />
<pre><br />
psvbi<br />
(Pseudo-VBI encoding/decoding system)<br />
<br />
Copyright (C) 2005 Maksym Veremeyenko.<br />
This file is part of psvbi project (marking video signal and detecting<br />
marks in real-time)<br />
<br />
psvbi is free software; you can redistribute it and/or modify<br />
it under the terms of the GNU General Public License as published by<br />
the Free Software Foundation; either version 2 of the License, or<br />
(at your option) any later version.<br />
<br />
psvbi is distributed in the hope that it will be useful,<br />
but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License<br />
along with psvbi; if not, write to the Free Software<br />
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />
</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/Repl_schedRepl sched2006-01-07T15:27:07Z<p>Verem: </p>
<hr />
<div><b>repl_sched - Sheduled video replacer (DV playout + Scheduler + Switcher controller)</b><br />
<br />
==Overview==<br />
<b>repl_sched</b> is DV playback server with schedule support and externaly controlled to start and stop. It's also able to control switcher using M2100 protocol. <br />
<br />
==Download==<br />
<br />
<b>Version 1.0-rc5-20051117</b><br />
*[{{SERVER}}/downloads/schd_replacer/schd_replacer-1.0-rc5-20051117.tar.bz2 schd_replacer-1.0-rc5-20051117.tar.bz2] - source code;<br />
*[{{SERVER}}/downloads/schd_replacer/schd_replacer-1.0-rc5-20051117.bin.tar.bz2 schd_replacer-1.0-rc5-20051117.bin.tar.bz2] - precompiled binaries (FC3);</div>Veremhttp://research.m1stereo.tv/wiki/index.php/VzVz2006-01-06T20:51:06Z<p>Verem: /* vz-r303 (2010-09-02) */</p>
<hr />
<div>'''vz (ViZualizator) Real-Time TV dynamic graphics production, channel brending, system'''<br />
<br />
==About==<br />
<br />
[[image:Vz_Interface_0.jpg|left|thumb|100px|[[help:contents|screen #1]]]]<br />
[[image:Vz_Interface_1.jpg|left|thumb|100px|[[help:contents|screen #2]]]]<br />
[[image:Vz_Interface_2.jpg|left|thumb|100px|[[help:contents|screen #3]]]]<br />
<br />
<b>vz</b> (ViZualizator) is software complex for generation realtime TV-graphics. Fine and easy solution for TV studio graphics, channel branding and TV-Interective solutions in SD and HD modes.<br />
<br />
Scene (or project file) is external file (in XML format). It's tree - based description of graphics primitives layout and operation about parameters changing.<br />
<br />
Managing of vz behavior performed by external program that communicate with main rendering module using TCP or UDP protocols. Main program provides telnet-like shell where external commands send throw using predefined syntax. Command could be used for loading "scene" file (primitives layout), modification parameters of graphic primitives or for starting/stopping timeline's complex (called director).<br />
<br />
== Hardware requirements ==<br />
<br />
Minimum is nVidia VGA board higher ther GeForce 5200, other manufacturer's board not supported. CPU and RAM configuation depends on task it will be used for. <br />
<br />
For dual video input channels + animated background its require Dual Xeon configuration with nVidia QuadroFX board.<br />
<br />
The easy task you need the lighter hardware configuration required.<br />
<br />
== Supported Outputs ==<br />
Video output provided by professional TV video output board. For now there are 2 supported:<br />
<br />
=== decklink (blackmagic design) ===<br />
*<b>Decklink Pro</b>: SD modes, tested agains DeckLink Windows 6.8.3 drivers version<br />
*<b>Decklink HD Pro</b>: SD and HD modes, tested agains DeckLink Windows 6.8.7 drivers version<br />
<br />
Board supports only FILL+KEY output operations only. No input available.<br />
<br />
Manufacturer site is [http://www.blackmagic-design.com/ Blackmagic_Design].<br />
<br />
=== bluefish===<br />
*<b>SD|Greed</b>, SD modes, tested against 5.4.26 drivers version, input (single and dual) and output (FILL+KEY) supported.<br />
<br />
Most tested video output driver. Support almost all hardware supported features.<br />
<br />
Manufacturer site is [http://www.Bluefish444.com www.Bluefish444.com].<br />
<br />
===streamalpha===<br />
StreamAlphaPlus card tested long time ago. Not sure about current version. Manufacturer site is <br />
[http://www.stream-labs.com/ www.stream-labs.com]<br />
<br />
===nullvideo===<br />
Fake output video module. Used for emulating CPU load, texture transfer and can be used as skeleton for writing new output modules<br />
<br />
Output driver could be written for almost all adapters with open SDK.<br />
<br />
== Documentation ==<br />
*[[Vz:Doc:Running|Running]]<br />
*[[Vz:Doc:Configuration|Configuration]]<br />
*[[Vz:Doc:Scene|Scene Building]]<br />
*[[Vz:Doc:Plugins|Plugins usage]]<br />
*[[Vz:Doc:IpControl|IP Control Protocol]]<br />
*[[Vz:Doc:SerControl|Serial Control Protocol]]<br />
*[[Vz:Doc:Samples|Usefull samples]]<br />
<br />
==Downloads==<br />
===vz-r320 (2010-11-09)===<br />
* [{{SERVER}}/downloads/vz/vz-r320.win32.zip vz-r320.win32.zip] - precompiled binaries with demo projects for x86 (win32) (require [http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x86)] for operating and [http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en Microsoft .NET Framework 3.5] for running vzDemoPilotVB2008).<br />
* [{{SERVER}}/downloads/vz/vz-r320.x64.zip vz-r320.x64.zip] - precompiled binaries with demo projects for x64 (win64) (require [http://www.microsoft.com/downloads/details.aspx?familyid=BD2A6171-E2D6-4230-B809-9A8D7548C1B6&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x64)] for operating and [http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en Microsoft .NET Framework 3.5] for running vzDemoPilotVB2008).<br />
* [{{SERVER}}/downloads/vz/vz-r320.src.zip vz-r320.src.zip] - vz source files.<br />
<br />
===vz-r261 (2010-07-15)===<br />
* [{{SERVER}}/downloads/vz/vz-r261.win32.zip vz-r261.win32.zip] - precompiled binaries with demo projects for x86 (win32) (require [http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x86)] for operating and [http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en Microsoft .NET Framework 3.5] for running vzDemoPilotVB2008).<br />
* [{{SERVER}}/downloads/vz/vz-r261.x64.zip vz-r261.x64.zip] - precompiled binaries with demo projects for x64 (win64) (require [http://www.microsoft.com/downloads/details.aspx?familyid=BD2A6171-E2D6-4230-B809-9A8D7548C1B6&displaylang=en Microsoft Visual C++ 2008 Redistributable Package (x64)] for operating and [http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en Microsoft .NET Framework 3.5] for running vzDemoPilotVB2008).<br />
* [{{SERVER}}/downloads/vz/vz-r261.src.zip vz-r261.src.zip] - vz source files.<br />
<br />
===vz-1.0-fix4 (2009-01-25)===<br />
* [{{SERVER}}/downloads/vz/vz-1.0-fix4.zip vz-1.0-fix4.zip] - precompiled binaries with demo projects (require [http://www.microsoft.com/downloads/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&displayLang=en Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)] for operating and [http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en Microsoft .NET Framework 3.5] for running vzDemoPilotVB2008).<br />
* [{{SERVER}}/downloads/vz/vz-r203.src.zip vz-r203.src.zip] - vz source files.<br />
<br />
===vzDemoPilots (2009-01-25)===<br />
* [{{SERVER}}/downloads/vz/vzDemoPilots.zip vzDemoPilots.zip] - VB6.0 and VB2008 source code of control application<br />
<br />
===vz-1.0-fix3 (2008-03-23)===<br />
* [{{SERVER}}/downloads/vz/vz-1.0-fix3.zip vz-1.0-fix3.zip] - precompiled binaries with demo projects (require [http://www.microsoft.com/downloads/thankyou.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&displayLang=en Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)].<br />
* [{{SERVER}}/downloads/vz/vz-r164.src.zip vz-r164.src.zip] - vz source files.<br />
<br />
===vfb (virtual frame buffer)===<br />
Requiered for DMA operation with StreamAlpha SDI video output adapter.<br />
* [{{SERVER}}/downloads/vz/vfb4.bin.zip vfb4.bin.zip] - VirtualFrameBuffer device driver. <br />
* [{{SERVER}}/downloads/vz/vfb4.src.zip vfb4.src.zip] - VirtualFrameBuffer source files.<br />
<br />
===anamorphic picture test files ===<br />
* [{{SERVER}}/downloads/vz/aspect-tests.zip aspect-tests.zip]<br />
<br />
==Links==<br />
<br />
<b>vz</b> linked against libraries supplied by another projects. For compiling VZ you will need:<br />
<br />
*The FREETYPE Project [http://www.freetype.org/ www.freetype.org]<br />
*Xerces-C++ [http://xml.apache.org/xerces-c/ xml.apache.org]<br />
*Bluefish444 SDK [http://www.bluefish444.com www.bluefish444.com]<br />
*StreamLabs SDK [http://www.stream-labs.com/ www.stream-labs.com]<br />
*DeckLink DirectShow SDK [http://www.blackmagic-design.com/support/ Blackmagic Design Support].<br />
<br />
For operating with <b>vz</b> throw IP i recommend to use [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY - A Free Telnet/SSH Client]<br />
<br />
==Licence==<br />
<pre><br />
ViZualizator<br />
(Real-Time TV graphics production system)<br />
<br />
Copyright (C) 2005 Maksym Veremeyenko.<br />
Contributed by Maksym Veremeyenko, verem@m1stereo.tv, 2005.<br />
<br />
ViZualizator is free software; you can redistribute it and/or modify<br />
it under the terms of the GNU General Public License as published by<br />
the Free Software Foundation; either version 2 of the License, or<br />
(at your option) any later version.<br />
<br />
ViZualizator is distributed in the hope that it will be useful,<br />
but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License<br />
along with ViZualizator; if not, write to the Free Software<br />
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />
</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/PmfPmf2006-01-06T20:19:06Z<p>Verem: /* Downloads */</p>
<hr />
<div><b>pmf - Procmail's MIME filter</b><br />
<br />
===Description===<br />
<br />
pmf is a Perl program for filtering e-mail. Program decompose e-mail into parts check each part using preinstalled filters to determine if e-mail contains forbiden attachments (like win32 executabled and script files). It use 'score' method to determine dengerous level of e-mail.<br />
<br />
===Features===<br />
*Open Source<br />
*Easyest way for intergration into mail system bases on procmail localmailer<br />
*Available filters:<br />
**<code>DangerosHTMLtags</code> - Detects attached htmls files with potencial possibilies to execute some code by IE;<br />
**<code>ForbiddenExtensions</code> - Check for forbided extension;<br />
**<code>Win32Executable</code> - Check if file is win32 executable;<br />
**<code>ZIPList</code> - Check file list of attached ZIP-archive;<br />
**<code>WhiteListFrom</code> - exception for 'trusted' senders;<br />
**<code>WhiteListTo</code> - exception for 'smart' recipient;<br />
<br />
===Downloads===<br />
<b>Version 0.93 (2004-12-18 16:00)</b><br />
*Download: <code>[{{SERVER}}/downloads/pmf/pmf-0.93.tar.bz2 pmf-0.93.tar.bz2]</code><br />
*Changelog:<br />
**1. Added latin-symbols-only link creation to saved attached files to prevent fail of e xternal programs to read files with non-8-bit symbols<br />
**2. Modified filters checking order. Now system begin to check files from filters with lowest SCORE and system stop checking after global SCORE is bigger 0.0. This could save a time to determine if mail is dengerous (a bit of optimization)<br />
<br />
<b>Version 0.92 (2004-12-18 01:20)</b><br />
*Download: <code>[{{SERVER}}/downloads/pmf/pmf-0.92.tar.bz2 pmf-0.92.tar.bz2]</code><br />
*Changelog:<br />
**1. Added <code>filters/KAV.pm</code> - Kaspersky's Antivirus Connectivity<br />
**2. Added appropriate configuration section<br />
<br />
<b>Version 0.91 (2004-12-17)</b><br />
*Download: <code>[{{SERVER}}/downloads/pmf/pmf-0.91.tar.bz2 pmf-0.91.tar.bz2]</code><br />
*Changelog:<br />
**1. Added syslog facility<br />
**2. Added appropriate configuration section<br />
<br />
<b>Version 0.90 (2004-12-11)</b><br />
*Download: <code>[{{SERVER}}/downloads/pmf/pmf-0.90.tar.bz2 pmf-0.90.tar.bz2]</code><br />
*Changelog:<br />
**1. Code reengeniering of procmail-mimefilter.pl<br />
**2. Flexible reconfigration throw the pmf.conf<br />
<br />
===Installation===<br />
*1. Download source tarball<br />
*2. Check if next modules installed:<br />
<pre><br />
Data::Dump<br />
Mail::MboxParser<br />
Digest::MD5<br />
HTML::Parser<br />
Archive::Zip<br />
</pre> if this modules not installed, please visit CPAN for download required modules<br />
*3. Unpack archive into <code>/usr/local/pmf/</code><br />
<br />
===Configuration===<br />
<br />
*1. check <b>pmf</b> config file (modify config file for your system, modify white lists or disable some filters): <code>/usr/local/pmf/pmf.conf</code>:<br />
<pre><br />
# Renice priority to lower (keep system more stable)<br />
# this prevent system to load up to 110% :-)) of users processes<br />
RENICE => -9,<br />
# path where plugins installed<br />
FILTERS_PATH => '/usr/local/pmf/filters/',<br />
# save blocked users emails to path<br />
SAVE_PATH => '/tmp/users/',<br />
# temporarity directory for storing body and attachemt<br />
TEMP_PATH => '/tmp/pmf/',<br />
# filters parameters<br />
FILTERS =><br />
{<br />
'WhiteListTo' =><br />
{<br />
LIST => ['verem','root'],<br />
SCORE => -100.0,<br />
},<br />
'WhiteListFrom' =><br />
{<br />
LIST => ['bk.ru','gfk-usm.com.ua','gfk.com.ua'],<br />
SCORE => -100.0,<br />
},<br />
'ForbiddenExtensions' =><br />
{<br />
LIST => ['exe','com','pif','scr','bat','reg','ocx','dll','cmd','vbs','vb','cab','inf'],<br />
SCORE => 1.0,<br />
},<br />
'Win32Executable' =><br />
{<br />
LIST => ['MZ','ELF'],<br />
MAX => 3,<br />
SCORE => 1.0,<br />
},<br />
'ZIPList' =><br />
{<br />
SCORE => 1.0,<br />
},<br />
# 'KAVtest' =><br />
# {<br />
# },<br />
'DangerosHTMLtags' =><br />
{<br />
SCORE => 1.0,<br />
},<br />
},<br />
# rewrite letter<br />
# text of header of rewrited letter<br />
REWRITE =><br />
{<br />
HEADER => <<EOH<br />
To: %s<br />
From: <postmaster\@m1stereo.tv><br />
Content-Type: text/plain; charset="koi8-r"<br />
Content-Transfer-Encoding: 8bit<br />
Subject: [CONTENT BLOCKED]<br />
<br />
EOH<br />
,<br />
# body text of rewrited letter<br />
BODY => <<EOH<br />
Dear %s!<br />
<br />
Your e-mail is blocked due to security policy of our company. If<br />
you think that blocked e-mail is important, please ask system<br />
administrators for unlocking e-mail with next reference number:<br />
%s<br />
<br />
----------------------------------------------------------------<br />
CHECK LOG:<br />
<br />
%s<br />
----------------------------------------------------------------<br />
HEADERS:<br />
<br />
%s<br />
----------------------------------------------------------------<br />
<br />
With best regards e-mail support teams,<br />
EOH<br />
,<br />
},<br />
#---------------------------------------------------------------<br />
</pre><br />
*2. Modify procmail's config: <code>/etc/procmailrc</code>::<br />
<pre><br />
.......<br />
# pmf filter<br />
:0fw<br />
| /usr/local/pmf/pmf.pl /usr/local/pmf/pmf.conf $LOGNAME<br />
......<br />
</pre><br />
program <b>pmf</b> configured as filter, for <code>:0fw</code> see procmail's manual.<br />
<br />
===Syslogging===<br />
<br />
It's able to log event to syslog. To enable this feature add to config:<br />
<pre><br />
# syslog!<br />
SYSLOG =><br />
{<br />
ident => 'pmf',<br />
logopt => 'cons,pid',<br />
facility => 'mail',<br />
priority => 'mail|warning',<br />
},<br />
</pre><br />
That's will make syslog entries about found messages with score more then zero:<br />
<pre><br />
Dec 17 20:02:03 kazbek pmf[12656]: Recipient: pupkin, Score: 2.000000, Filters: 2.0 pmf::DangerosHTMLtags [<IFRAME src=XXX>:BODY],<br />
Dec 17 20:02:03 kazbek pmf[12656]: Trace: from localhost.localdomain (localhost [127.0.0.1]) by uaportal.com (8.12.6p2/8.12.3) with ESMTP id iBFMCqj4085091 for <budnik@m1stereo.tv>; Thu, 16 Dec 2004 00:12:57 +0200 (EET) (envelope-from mailnews@uaportal.com)<br />
</pre><br />
<br />
===KAV daemon connectivity===<br />
Kasspersky's antivirus provided throw this module. <code>KAV.pm</code> uses socket to connect to kavdaemon. Make sure that kavdaemon started. To enable this feature:<br />
<br />
*1. add to <b><code>FILTERS</code></b> section of <code>pmf.conf</code>:<br />
<pre><br />
'KAV' =><br />
{<br />
SCORE => 100.0,<br />
RESULT_BUFSIZE => 1024,<br />
SOCKET => '/var/run/AvpCtl',<br />
<br />
},<br />
</pre><br />
*2. modify <code>defUnix.prf</code> in antivirus installation dir:<br />
<pre><br />
# same section with parameters for objects<br />
[Object]<br />
Names=*/var/spool/pmf;*/tmp<br />
--skipped--<br />
</pre><br />
This is done to aviod messages like :<code>Directory XXXX wasn't included in enabled paths</code>. in log file: <code>/root/kavscan.rpt</code><br />
<br />
<br />
===Troubleshooting===<br />
<br />
<b>Q.</b> <i>Nohing works, whats going on?</i><br />
<b>A.</b>Step by step diag procedure:<br />
*1. Check if filter could be started:<br />
<pre><br />
/usr/local/pmf/pmf.pl /usr/local/pmf/pmf.conf fooname<br />
</pre><br />
If filter starts and waits for input - that's OK, If you got warn messages, inspect messages, that could be messages about required Perl's modules for plugin startup or config file warning (config file has Perl syntax and <code>pmf</code> use <code>eval</code> function for loading config).<br />
<br />
*2. Check filter running. If you have mail file (standart unix mbox) at some location - try to run filter manualy:<br />
<pre><br />
cat /tmp/test-e-mail-1 | /usr/local/pmf/pmf.pl /usr/local/pmf/pmf.conf fooname > /tmp/test-e-mail-1.filtered<br />
</pre><br />
If you got warn messages during processing see previous step. In no messages given to stderr look into the <code>/tmp/test-e-mail-1.filtered</code>. Filter appends to header block own headers:<br />
<pre><br />
..........<br />
Subject: TEST2<br />
X-pmf-About: pmf-0.9, see http://research.m1stereo.tv/verem/pmf<br />
X-pmf-Score: -100<br />
X-pmf-Status: No<br />
X-pmf-Log:<br />
*-100.0 pmf::WhiteListTo [fooname]<br />
..........<br />
</pre><br />
or<br />
<pre><br />
..........<br />
Subject: No subject<br />
X-source-ip: 141.84.69.19<br />
Content-Type: Multipart/Mixed;<br />
boundary="------------Boundary-00=_QETB1FCXFQQMYJ0CCJD0"<br />
X-pmf-About: pmf-0.9, see http://research.m1stereo.tv/verem/pmf<br />
X-pmf-Score: -99<br />
X-pmf-Status: No<br />
X-pmf-Log:<br />
*-100.0 pmf::WhiteListTo [fooname]<br />
* 1.0 pmf::ForbiddenExtensions [ziparchive|elka.zip/elka.exe]<br />
* 1.0 pmf::ZIPList [elka.zip]<br />
..........<br />
</pre><br />
<br />
*3. Headers <code>X-pmf-*</code> could be usefull to detect what filter found. In examples above it's could be seen that that first message is 'clear' and next message is forced to be clear using white list filter.<br />
<br />
===Licence===<br />
<pre><br />
Procmail's MIME Filter<br />
filter to detect unnessaries or dangerous attachments<br />
<br />
Copyright (C) 2004 Maksym Veremeyenko.<br />
Contributed by Maksym Veremeyenko, verem@m1stereo.tv, 2004.<br />
<br />
Procmail's MIME Filter is free software; you can redistribute it and/or modify<br />
it under the terms of the GNU General Public License as published by<br />
the Free Software Foundation; either version 2 of the License, or<br />
(at your option) any later version.<br />
<br />
Procmail's MIME Filter is distributed in the hope that it will be useful,<br />
but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License<br />
along with Procmail's MIME Filter; if not, write to the Free Software<br />
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />
</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/Caa4nnrpdCaa4nnrpd2006-01-06T20:06:18Z<p>Verem: /* Downloads */</p>
<hr />
<div><b>Complex Authentification and Authorization for nnrdp</b><br />
<br />
===Description===<br />
<br />
<b>caa4nnrpd</b> is a Perl program for authentification and authoraization for INN news reader daemon. That complex perform fluent newsgroups access control. Authentification provided throw the PAM and access control provides throw the preconfigured access list.<br />
<br />
===Features===<br />
*Open Source<br />
*Easyes integration way<br />
*Authentification throw the pam could be configured to authentificate agains DomainController or other password control system<br />
<br />
===Downloads===<br />
<br />
*Version 0.90 (2005-01-03 17:00)<br />
**1. Download: [{{SERVER}}/downloads/caa4nnrpd/caa4nnrpd-0.90.tar.bz2 caa4nnrpd-0.90.tar.bz2]<br />
**2. Changelog:<br />
***1. A bit of code cleanup<br />
<br />
===Installation===<br />
<br />
*1. Check that INN version is 2.4.1 or higher<br />
*2. Download source tarball<br />
*3. Check if next modules installed:<br />
<pre><br />
Data::Dump<br />
Authen::PAM<br />
</pre> if this modules not installed, please visit CPAN for download required modules<br />
*4. Unpack archive into <code>/usr/local/caa4nnrpd/</code><br />
<br />
===Configuration===<br />
<br />
*1. Configure INN reader config file (<code>/etc/news/readers.conf</code>):<br />
<pre><br />
auth "anonymous"<br />
{<br />
default: <br />
}<br />
<br />
auth "m1users" {<br />
hosts: 10.1.0.0/16<br />
perl_auth: "/usr/local/caa4nnrpd/auth.pl"<br />
perl_access: "/usr/local/caa4nnrpd/access.pl"<br />
}<br />
<br />
access "localhost" {<br />
users: ""<br />
newsgroups: *.public<br />
access: "R"<br />
}<br />
</pre><br />
*2. Configure PAM (examples of mine, user authentificated against domain controller, make sure that <code>krb5.conf</code> is right): <code>/etc/pam.d/caa4nnrpd</code>:<br />
<pre><br />
#%PAM-1.0<br />
auth required /lib/security/pam_stack.so service=system-auth-krb5only<br />
account required /lib/security/pam_stack.so service=system-auth-krb5only<br />
</pre><br />
3. Check config file: (example of mine)<br />
<br />
<br />
===Troubleshooting===<br />
<br />
Use telnet to test if caa4nnrpd works correct. Tests samples:<br />
<br />
*1. Anonymous access:<br />
<pre><br />
[verem@elbrus verem]$ telnet nntp 119<br />
Trying 10.1.1.14...<br />
Connected to nntp.internal.m1stereo.tv (10.1.1.14).<br />
Escape character is '^]'.<br />
201 bazbek.internal.m1stereo.tv InterNetNews NNRP server INN 2.4.1 ready (no posting).<br />
LIST<br />
215 Newsgroups in form "group high low flags".<br />
m1.public 0000000000 0000000001 y<br />
m1.programs.missmusic.public 0000000000 0000000001 y<br />
m1.programs.popua.public 0000000000 0000000001 y<br />
m1.programs.ministry.public 0000000000 0000000001 y<br />
m1.programs.horrorshow.public 0000000000 0000000001 y<br />
m1.programs.guttenmourgen.public 0000000000 0000000001 y<br />
m1.programs.showtoli.public 0000000000 0000000001 y<br />
m1.programs.shake.public 0000000000 0000000001 y<br />
m1.programs.tf.public 0000000000 0000000001 y<br />
m1.production.www.public 0000000000 0000000001 y<br />
m1.production.studio.public 0000000000 0000000001 y<br />
m1.programs.m1news.public 0000000000 0000000001 y<br />
m1.programs.m1cipe.public 0000000000 0000000001 y<br />
m1.programs.m20.public 0000000000 0000000001 y<br />
.<br />
group m1.public<br />
211 0 0 0 m1.public<br />
post<br />
440 Posting not allowed<br />
</pre><br />
*2. Failed authentification:<br />
<pre><br />
[verem@elbrus verem]$ telnet nntp 119<br />
Trying 10.1.1.14...<br />
Connected to nntp.internal.m1stereo.tv (10.1.1.14).<br />
Escape character is '^]'.<br />
201 bazbek.internal.m1stereo.tv InterNetNews NNRP server INN 2.4.1 ready (no posting).<br />
authinfo user puConnection closed by foreign host.<br />
[verem@elbrus verem]$ authinfo user<br />
[verem@elbrus verem]$ telnet nntp 119<br />
Trying 10.1.1.14...<br />
Connected to nntp.internal.m1stereo.tv (10.1.1.14).<br />
Escape character is '^]'.<br />
201 bazbek.internal.m1stereo.tv InterNetNews NNRP server INN 2.4.1 ready (no posting).<br />
authinfo user pupkin<br />
381 PASS required<br />
authinfo pass password<br />
502 Access Denied<br />
Connection closed by foreign host.<br />
[verem@elbrus verem]$<br />
</pre><br />
*3. Success aithentification:<br />
<pre><br />
[verem@elbrus verem]$ telnet nntp 119<br />
Trying 10.1.1.14...<br />
Connected to nntp.internal.m1stereo.tv (10.1.1.14).<br />
Escape character is '^]'.<br />
201 bazbek.internal.m1stereo.tv InterNetNews NNRP server INN 2.4.1 ready (no posting).<br />
authinfo user verem<br />
381 PASS required<br />
authinfo pass PASSWORD<br />
281 Ok<br />
list<br />
215 Newsgroups in form "group high low flags".<br />
m1.public 0000000000 0000000001 y<br />
m1.public.flame 0000000007 0000000001 y<br />
m1.public.humor 0000000000 0000000001 y<br />
m1.public.music 0000000000 0000000001 y<br />
m1.programs 0000000000 0000000001 y<br />
m1.programs.missmusic.public 0000000000 0000000001 y<br />
m1.programs.popua.public 0000000000 0000000001 y<br />
m1.programs.ministry.public 0000000000 0000000001 y<br />
m1.programs.horrorshow.public 0000000000 0000000001 y<br />
m1.programs.guttenmourgen.public 0000000000 0000000001 y<br />
m1.programs.showtoli.public 0000000000 0000000001 y<br />
m1.programs.shake.public 0000000000 0000000001 y<br />
m1.programs.tf.public 0000000000 0000000001 y<br />
m1.production.nle 0000000000 0000000001 y<br />
m1.production.www 0000000000 0000000001 y<br />
m1.production.www.public 0000000000 0000000001 y<br />
m1.production.studio 0000000000 0000000001 y<br />
m1.production.studio.public 0000000000 0000000001 y<br />
m1.programs.m1news.public 0000000000 0000000001 y<br />
m1.programs.m1cipe.public 0000000000 0000000001 y<br />
m1.programs.m20.public 0000000000 0000000001 y<br />
m1.production.graphics 0000000000 0000000001 y<br />
.<br />
group m1.production.nle<br />
211 0 0 0 m1.production.nle<br />
post<br />
340 Ok, recommended ID <crbrer$cvb$1@kazbek.m1stereo.tv><br />
</pre><br />
<br />
===Licence===<br />
<pre><br />
caa4nnrpd - Complex Authentification and Authorization for nnrdp<br />
fluent INN newsgroups access control system<br />
<br />
Copyright (C) 2005 Maksym Veremeyenko.<br />
Contributed by Maksym Veremeyenko, verem@m1stereo.tv, 2005.<br />
<br />
caa4nnrpd is free software; you can redistribute it and/or modify<br />
it under the terms of the GNU General Public License as published by<br />
the Free Software Foundation; either version 2 of the License, or<br />
(at your option) any later version.<br />
<br />
caa4nnrpd is distributed in the hope that it will be useful,<br />
but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License<br />
along with caa4nnrpd; if not, write to the Free Software<br />
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />
</pre></div>Veremhttp://research.m1stereo.tv/wiki/index.php/PpfPpf2006-01-06T19:44:14Z<p>Verem: /* Downloads */</p>
<hr />
<div><b>Printer Port Forwarder</b><br />
<br />
=== Description ===<br />
<b>ppf</b> is simple solution for sharing USB or LPT printer across the network using Network Printing Protocol (JetDirect/AppSocket protocols).<br />
<br />
I use this solution for connecting printer to diskless Linux terminal station (see [[#Links|LTSP]] project for more info) and share it to throw another server (Windows or Unix printing system) with complex queuing and minitoring system.<br />
<br />
<b>ppf</b> software is a TCP deamon that listen TCP/9100 and forward all datas comes to phisical printer port, like simple print server (which embedded into network attached printers, like JetDirect)<br />
<br />
=== Goals ===<br />
We use <b>ppf</b> for sharing printer connected to diskless station station. There are no need to install Samba or CUPS on PC where printer connected to. You use printer throw "standart network port" (in Windows terms).<br />
<br />
=== Downloads ===<br />
Version 0.1-alpha:<br />
*Source download: [{{SERVER}}/downloads/ppf/ppf-0.1-alpha.tar.bz2 ppf-0.1-alpha.tar.bz2]<br />
*Precompiled binary: [{{SERVER}}/downloads/ppf/ppf-0.1-alpha.fc1.bz2 ppf-0.1-alpha.fc1.bz2]<br />
<br />
=== Installation ===<br />
From sources:<br />
*1. Download c source tarball<br />
*2. Unpack. (<code>bzip2 -9 ppf-X.Y-zzz.src.bz2 | tar xvf -</code>)<br />
*3. Compile. (<code>cd ppf-X.Y-zzz; make </code>)<br />
*4. Install binary. (<code>chmod u=rwx,g=rx,o=rx ppf ; chown root.root ppf ; cp -f ppf /usr/sbin/ppf </code>) <br />
<br />
From binary<br />
*1. Download precompiled binary file archive<br />
*2. Unpack. (<code>cat ppf-X.Y-zzz.fc1.bz2 | bzip2 -cd > ppf</code>)<br />
*3. Install binary. (<code>chmod u=rwx,g=rx,o=rx ppf ; chown root.root ppf ; cp -f ppf /usr/sbin/ppf </code>)<br />
<br />
=== Running ===<br />
Start program required 2 arguments:<br />
<pre>/usr/sbin/ppf <printer port> <tcp port></pre><br />
Where:<br />
*<code><printer port> </code>- device name where printer connected to;<br />
*<code><tcp port></code> - number of tcp port to listen, typicaly you should use 9100.<br />
Example:<br />
<br />
<pre><br />
/usr/sbin/ppf /dev/usb/lp0 9100<br />
or<br />
/usr/sbin/ppf /dev/lp0 9100<br />
</pre><br />
<br />
=== Shared printer configuration ===<br />
Printer connected is shared using JetDirect/AppSocket protocols. ppf directly send all data from remote host to printer, that mean driver on computer where this printer shared to public from should send data that can be accepted by printer directly (without previous pre- precessing like converting to EPS or PCL or RAW).<br />
<br />
<b>*NOTICE*</b> during connecting ppf's provided printer you can find some delay coused by system desire to determine printer type by SNMP subsystem ussualy provided by serios print-servers. <br />
<br />
=== Troubleshooting ===<br />
ppf sends all warning, notices and error events to system log. In case of problem you can review syslog files for details.<br />
<br />
For example:<br />
<br />
<i>in a case of not connected usb printer:</i><br />
<pre><br />
Nov 14 06:21:05 airforce ppf[16148]: Opened connection: from 127.0.0.1:41220, job id: 2<br />
Nov 14 06:21:05 airforce ppf[16148]: Unable to open '/dev/usb/lp0' due to: No such device<br />
Nov 14 06:21:05 airforce ppf[16148]: Closed connection: job id: 2, in: 0 bytes, out: 0 bytes<br />
</pre><br />
<i>closed tcp connection from print server:</i><br />
<pre><br />
Nov 14 05:22:42 airforce ppf[9122]: Opened connection: from 127.0.0.1:37380, job id: 17<br />
Nov 14 05:22:42 airforce ppf[9122]: read from 'socket' error (Resource temporarily unavailable)<br />
Nov 14 05:22:42 airforce ppf[9122]: Closed connection: job id: 17, in: 8192 bytes, out: 0 bytes<br />
</pre><br />
<i>successfull prints:</i><br />
<pre><br />
Nov 14 05:04:28 airforce ppf[9002]: Opened connection: from 127.0.0.1:36356, job id: 11<br />
Nov 14 05:04:43 airforce ppf[9002]: Closed connection: job id: 11, in: 881741 bytes, out: 0 bytes<br />
.....<br />
Nov 14 05:59:15 airforce ppf[15123]: Opened connection: from 10.1.5.76:28167, job id: 10<br />
Nov 14 05:59:41 airforce ppf[15123]: Closed connection: job id: 10, in: 521592 bytes, out: 0 bytes<br />
</pre><br />
<br />
===Links===<br />
<br />
*1. LTSP project - [[http://www.ltsp.org http://www.ltsp.org]]<br />
*2. Russian LTSP project - [[http://www.ltsp.ru http://www.ltsp.ru]]<br />
*3. General Public Licence - [[http://www.gnu.org/licenses/gpl.txt http://www.gnu.org/licenses/gpl.txt]]<br />
*4. Bog Boss articles: [[http://www.bog.pp.ru/work/network_printer.html network printing]]<br />
*5. Printer MIB - [[http://ietf.org/rfc/rfc1759.txt http://ietf.org/rfc/rfc1759.txt]]<br />
*6. CUPS - [[http://www.cups.org http://www.cups.org]]<br />
<br />
=== Licence ===<br />
<pre><br />
Printer Port Forwarder<br />
(gateway between USB (or LPT) printer and TCP/9100 port)<br />
<br />
Copyright (C) 2004 Maksym Veremeyenko.<br />
Contributed by Maksym Veremeyenko, verem@m1stereo.tv, 2004.<br />
<br />
Printer Port Forwarder is free software; you can redistribute it and/or modify<br />
it under the terms of the GNU General Public License as published by<br />
the Free Software Foundation; either version 2 of the License, or<br />
(at your option) any later version.<br />
<br />
Printer Port Forwarder is distributed in the hope that it will be useful,<br />
but WITHOUT ANY WARRANTY; without even the implied warranty of<br />
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />
GNU General Public License for more details.<br />
<br />
You should have received a copy of the GNU General Public License<br />
along with Foobar; if not, write to the Free Software<br />
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br />
</pre></div>Verem