code:
[Global]
IconName=yakuake
Comment=Yakuake
Comment[bg]=Yakuake
Comment[ca]=Yakuake
Comment[ca@valencia]=Yakuake
Comment[cs]=Yakuake
Comment[da]=Yakuake
Comment[de]=Yakuake
Comment[el]=Yakuake
Comment[es]=Yakuake
Comment[et]=Yakuake
Comment[fi]=Yakuake
Comment[ga]=Yakuake
Comment[gl]=Yakuake
Comment[hu]=Yakuake
Comment[it]=Yakuake
Comment[km]=Yakuake
Comment[lt]=Yakuake
Comment[nb]=Yakuake
Comment[nds]=Yakuake
Comment[nl]=Yakuake
Comment[pa]=ਯਾਕੁਕੀ
Comment[pl]=Yakuake
Comment[pt]=Yakuake
Comment[pt_BR]=Yakuake
Comment[ro]=Yakuake
Comment[sk]=Yakuake
Comment[sr]=Јакуаке
Comment[sr@ijekavian]=Јакуаке
Comment[sr@ijekavianlatin]=Yakuake
Comment[sr@latin]=Yakuake
Comment[sv]=Yakuake
Comment[tr]=Yakuake
Comment[ug]=Yakuake
Comment[uk]=Yakuake
Comment[x-test]=xxYakuakexx
Comment[zh_CN]=Yakuake
Comment[zh_TW]=Yakuake

[Event/startup]
Name=Startup
Name[ca]=Inici
Name[ca@valencia]=Inici
Name[cs]=Spuštění
Name[da]=Opstart
Name[de]=Programmstart
Name[el]=Εκκίνηση
Name[es]=Inicio
Name[et]=Käivitamine
Name[fi]=Käynnistys
Name[gl]=Inicio
Name[hu]=Indulás
Name[it]=Avvio
Name[km]=ចាប់ផ្ដើម
Name[lt]=Paleidimas
Name[nb]=Oppstart
Name[nds]=Start
Name[nl]=Opstarten
Name[pa]=ਸ਼ੁਰੂਆਤ
Name[pl]=Uruchamianie
Name[pt]=Arranque
Name[pt_BR]=Inicialização
Name[ro]=Pornire
Name[sk]=Spustenie
Name[sr]=Покретање
Name[sr@ijekavian]=Покретање
Name[sr@ijekavianlatin]=Pokretanje
Name[sr@latin]=Pokretanje
Name[sv]=Start
Name[tr]=Başlangıç
Name[ug]=قوزغىلىش
Name[uk]=Запуск
Name[x-test]=xxStartupxx
Name[zh_CN]=启动
Name[zh_TW]=啟動
Comment=Yakuake has started
Comment[ca]=S'ha engegat el Yakuake
Comment[ca@valencia]=S'ha engegat el Yakuake
Comment[cs]=Yakuake byl spuštěn
Comment[da]=Yakuake er startet
Comment[de]=Yakuake wurde gestartet
Comment[el]=Το Yakuake έχει ξεκινήσει
Comment[es]=Yakuake se ha iniciado
Comment[et]=Yakuake on käivitatud
Comment[fi]=Yakuake on käynnistynyt
Comment[gl]=O Yakuake foi iniciado
Comment[hu]=A Yakuake elindult
Comment[it]=Yakuake è avviato
Comment[km]=Yakuake បានចាប់ផ្ដើម
Comment[lt]=Yakuake paleistas
Comment[nb]=Yakuake har startet
Comment[nds]=Yakuake hett start.
Comment[nl]=Yakuake is opgestart
Comment[pa]=ਯਾਕੂਕੀ ਚਾਲੂ ਹੋਇਆ
Comment[pl]=Yakuake został uruchomiony
Comment[pt]=O Yakuake foi iniciado
Comment[pt_BR]=O Yakuake foi iniciado
Comment[ro]=Yakuake s-a pornit
Comment[sk]=Yakuake bolo spustené
Comment[sr]=Јакуаке је покренут
Comment[sr@ijekavian]=Јакуаке је покренут
Comment[sr@ijekavianlatin]=Yakuake je pokrenut
Comment[sr@latin]=Yakuake je pokrenut
Comment[sv]=Yakuake har startats
Comment[tr]=Yakuake başlatıldı
Comment[uk]=Yakuake запущено
Comment[x-test]=xxYakuake has startedxx
Comment[zh_CN]=Yakuake 已启动
Comment[zh_TW]=Yakuake 已啟動
Action=Popup

[Event/silence]
Name=Silence detected
Name[ca]=S'ha detectat silenci
Name[ca@valencia]=S'ha detectat silenci
Name[cs]=Detekováno ticho
Name[da]=Stilhed detekteret
Name[de]=Keine Aktivität festgestellt
Name[el]=Ανιχνεύθηκε αδράνεια
Name[es]=Silencio detectado
Name[et]=Tuvastati vaikus
Name[fi]=Hiljaisuutta havaittu
Name[gl]=Silencio detectado
Name[hu]=Csend érzékelve
Name[it]=Inattività rilevata
Name[km]=បានរកឃើញភាពស្ងាត់
Name[lt]=Aptikta tyla
Name[nb]=Stillhet oppdaget
Name[nds]=Still opdeckt
Name[nl]=Stilte ontdekt
Name[pa]=ਚੁੱਪ ਖੋਜਿਆ ਗਿਆ
Name[pl]=Wykryto ciszę
Name[pt]=Silêncio detectado
Name[pt_BR]=Silêncio detectado
Name[ro]=Tăcere detectată
Name[sk]=Detekované ticho
Name[sr]=Откривена тишина
Name[sr@ijekavian]=Откривена тишина
Name[sr@ijekavianlatin]=Otkrivena tišina
Name[sr@latin]=Otkrivena tišina
Name[sv]=Tystnad funnen
Name[tr]=Sessizlik belirlendi
Name[uk]=Виявлено бездіяльність
Name[x-test]=xxSilence detectedxx
Name[zh_CN]=探测到静默
Name[zh_TW]=偵測到沉默狀態
Comment=Silence detected in a monitored terminal or session
Comment[ca]=S'ha detectat silenci en un terminal vigilat o sessió
Comment[ca@valencia]=S'ha detectat silenci en un terminal vigilat o sessió
Comment[cs]=Detekováno ticho v monitorovaném terminálu nebo sezení
Comment[da]=Stilhed detekteret i en overvåget terminalsession
Comment[de]=In einem überwachten Terminal oder einer überwachten Sitzung wird keine Aktivität festgestellt
Comment[el]=Ανιχνεύθηκε αδράνεια σε ένα ελεγχόμενο τερματικό ή συνεδρία
Comment[es]=Se ha detectado silencio en una terminal o sesión monitoreada
Comment[et]=Jälgitavas terminalis või seansis tuvastati vaikus
Comment[fi]=Hiljaisuutta havaittu tarkkaillussa päätteessä tai istunnossa
Comment[gl]=Silencio detectado nunha terminal ou sesión monitorizada
Comment[hu]=Csend érzékelve egy figyelt terminálon vagy munkamenetben
Comment[it]=Inattività rilevata in un terminale o sessione monitorata
Comment[km]=បានរកឃើញភាពស្ងាត់នៅក្នុងសម័យ ឬស្ថានីយដែលបានត្រួតពិនិត្យ
Comment[lt]=Stebimoje terminale ar sesijoje pastebėta tyla
Comment[nb]=Det er oppdaget stillhet i en terminal eller økt som er overvåket
Comment[nds]=En beluurt Konsool oder Törn is still
Comment[nl]=Stilte ontdekt in een gevolgde terminal of sessie
Comment[pl]=Wykryto ciszę w monitorowanej sesji terminala
Comment[pt]=Silêncio detectado num terminal ou sessão vigiado
Comment[pt_BR]=Silêncio detectado em um terminal ou sessão monitorado
Comment[ro]=A fost detectată tăcere într-o sesiune sau terminal monitorizat
Comment[sk]=Detekované ticho v monitorovanom termináli alebo sedení
Comment[sr]=Откривена је тишина у надгледаном терминалу или сесији
Comment[sr@ijekavian]=Откривена је тишина у надгледаном терминалу или сесији
Comment[sr@ijekavianlatin]=Otkrivena je tišina u nadgledanom terminalu ili sesiji
Comment[sr@latin]=Otkrivena je tišina u nadgledanom terminalu ili sesiji
Comment[sv]=Tystnad funnen i en bevakad terminal eller session
Comment[tr]=İzlenen uçbirimde ya da oturumda sessizlik belirlendi
Comment[uk]=У сеансі або терміналі, за яким ведеться спостереження виявлено бездіяльність
Comment[x-test]=xxSilence detected in a monitored terminal or sessionxx
Comment[zh_CN]=在监视的终端或会话中探测到静默
Comment[zh_TW]=在一個監控中的終端機或工作階段偵測到沉默狀態
Action=Popup

[Event/activity]
Name=Activity detected
Name[ca]=S'ha detectat activitat
Name[ca@valencia]=S'ha detectat activitat
Name[cs]=Detekována aktivita
Name[da]=Aktivitet detekteret
Name[de]=Aktivität festgestellt
Name[el]=Ανιχνεύθηκε δραστηριότητα
Name[es]=Actividad detectada
Name[et]=Tuvastati aktiivsus
Name[fi]=Aktiivisuutta havaittu
Name[gl]=Actividade detectada
Name[hu]=Aktivitás észlelve
Name[it]=Attività rilevata
Name[km]=សកម្មភាពដែលបានរកឃើញ
Name[lt]=Aptikta veikla
Name[nb]=Aktivitet oppdaget
Name[nds]=Aktiviteet opdeckt
Name[nl]=Activiteit ontdekt
Name[pa]=ਐਕਟਵਿਟੀ ਖੋਜੀ ਗਈ
Name[pl]=Wykryto aktywność
Name[pt]=Actividade detectada
Name[pt_BR]=Atividade detectada
Name[ro]=Activitate detectată
Name[sk]=Detekovaná aktivita
Name[sr]=Откривена активност
Name[sr@ijekavian]=Откривена активност
Name[sr@ijekavianlatin]=Otkrivena aktivnost
Name[sr@latin]=Otkrivena aktivnost
Name[sv]=Aktivitet funnen
Name[tr]=Etkinlik belirlendi
Name[uk]=Виявлено діяльність
Name[x-test]=xxActivity detectedxx
Name[zh_CN]=探测到活动
Name[zh_TW]=偵測到活動
Comment=Activity detected in a monitored terminal or session
Comment[ca]=S'ha detectat activitat en un terminal vigilat o sessió
Comment[ca@valencia]=S'ha detectat activitat en un terminal vigilat o sessió
Comment[cs]=Detekována aktivita v monitorovaném terminálu nebo sezení
Comment[da]=Aktivitet detekteret i en overvåget terminal eller session
Comment[de]=In einem überwachten Terminal oder einer überwachten Sitzung wird Aktivität festgestellt
Comment[el]=Ανιχνεύθηκε δραστηριότητα σε ένα ελεγχόμενο τερματικό ή συνεδρία
Comment[es]=Se ha detectado actividad en una terminal o sesión monitoreada
Comment[et]=Jälgitavas terminalis või seansis tuvastati aktiivsus
Comment[fi]=Aktiivisuutta havaittu tarkkaillussa päätteessä tai istunnossa
Comment[gl]=Actividade detectada nunha terminal ou sesión monitorizada
Comment[hu]=Aktivitás érzékelve egy figyelt terminálon vagy munkamenetben
Comment[it]=Attività rilevata in un terminale o sessione monitorata
Comment[km]=សកម្មភាពដែលបានរកឃើញនៅក្នុងសម័យ ឬស្ថានីយដែលបានត្រួតពិនិត្យ
Comment[lt]=Stebimoje terminale ar sesijoje pastebėta veikla
Comment[nb]=Det er oppdaget aktivitet i en terminal eller økt som er overvåket
Comment[nds]=En beluurt Konsool oder Törn is Aktiviteet
Comment[nl]=Activiteit ontdekt in een gevolgde terminal of sessie
Comment[pl]=Wykryto aktywność w monitorowanej sesji terminala
Comment[pt]=Actividade detectada num terminal ou sessão vigiado
Comment[pt_BR]=Atividade detectada em um terminal ou sessão monitorado
Comment[ro]=A fost detectată activitate într-o sesiune sau terminal monitorizat
Comment[sk]=Detekovaná aktivita v monitorovanom termináli alebo sedení
Comment[sr]=Откривена је активност у надгледаном терминалу или сесији
Comment[sr@ijekavian]=Откривена је активност у надгледаном терминалу или сесији
Comment[sr@ijekavianlatin]=Otkrivena je aktivnost u nadgledanom terminalu ili sesiji
Comment[sr@latin]=Otkrivena je aktivnost u nadgledanom terminalu ili sesiji
Comment[sv]=Aktivitet funnen i en bevakad terminal eller session
Comment[tr]=İzlenen uçbirimde ya da oturumda etkinlik belirlendi
Comment[uk]=У сеансі або терміналі, за яким ведеться спостереження виявлено діяльність
Comment[x-test]=xxActivity detected in a monitored terminal or sessionxx
Comment[zh_CN]=在监视的终端或会话中探测到活动
Comment[zh_TW]=在一個監控中的終端機或工作階段偵測到有活動
Action=Popup

[Event/BellVisible]
Name=Bell in Visible Session
Name[bs]=Zvono u vidljivoj sesiji
Name[ca]=Timbre en una sessió visible
Name[cs]=Zvonek ve viditelném sezení
Name[da]=Bip i synlig session
Name[de]=Signalton in sichtbarer Sitzung
Name[el]=Ηχητικό σήμα σε ορατή συνεδρία
Name[et]=Heli nähtavas seansis
Name[fi]=Äänimerkki näkyvässä istunnossa
Name[ga]=Cloigín i Seisiún Infheicthe
Name[gl]=Badalada na sesión visíbel
Name[hu]=Csengő a látható munkamenetben
Name[it]=Campana in sessione visibile
Name[lt]=Skambutis matomoje sesijoje
Name[nb]=Varsel i synlig økt
Name[nl]=Geluidssignaal in zichtbare sessie
Name[nn]=Bjølle i synleg økt
Name[pl]=Dzwonek w widocznej sesji
Name[pt]=Campainha numa Sessão Visível
Name[pt_BR]=Campainha na sessão visível
Name[ro]=Clopoțel în sesiune vizibilă
Name[se]=Divga oainnus bargovuorus
Name[sk]=Zvonček v zobrazenom sedení
Name[sr]=Звоно у видљивој сесији
Name[sr@ijekavian]=Звоно у видљивој сесији
Name[sr@ijekavianlatin]=Zvono u vidljivoj sesiji
Name[sr@latin]=Zvono u vidljivoj sesiji
Name[sv]=Ljudsignal i synlig session
Name[uk]=Гудок у видимий сеанс
Name[x-test]=xxBell in Visible Sessionxx
Name[zh_CN]=可见会话中的响铃
Name[zh_TW]=可見工作階段響鈴
Comment=Bell emitted within a visible session
Comment[bs]=Oglašeno je zvono unutar vidljive sesije
Comment[ca]=Timbre emès en una sessió visible
Comment[cs]=Zvonek spuštěný ve viditelném sezení
Comment[da]=Bip udsendt indenfor en synlig session
Comment[de]=Signalton, der in einer sichtbaren Sitzung ertönt
Comment[el]=Ηχητικό σήμα εκπέμπεται σε ορατή συνεδρία
Comment[et]=Heli nähtavas seansis
Comment[fi]=Äänimerkki lähetetty näkyvässä istunnossa
Comment[ga]=Baineadh an cloigín i seisiún infheicthe
Comment[gl]=Badalada emitida nunha sesión visíbel
Comment[hu]=Csengetés a látható munkamenetben
Comment[it]=Campana emessa in una sessione visibile
Comment[lt]=Matomos sesijos metu skambutis neveiks
Comment[nb]=Signal sendt ut fra en synlig økt
Comment[nl]=Geluidssignaal aangeroepen in zichtbare sessie
Comment[nn]=Bjøllesignal sendt i ei synleg økt
Comment[pl]=Dzwonek uruchamiany w widocznej sesji
Comment[pt]=Campainha emitida dentro de uma sessão visível
Comment[pt_BR]=Campainha emitida dentro de uma sessão visível
Comment[ro]=Clopoțel emis în cadrul unei sesiuni vizibile
Comment[se]=Divgasignála sáddejuvvui oainnus bargovuorus
Comment[sk]=Zvonček poslaný v zobrazenom sedení
Comment[sr]=Емитовано је звоно унутар видљиве сесије.
Comment[sr@ijekavian]=Емитовано је звоно унутар видљиве сесије.
Comment[sr@ijekavianlatin]=Emitovano je zvono unutar vidljive sesije.
Comment[sr@latin]=Emitovano je zvono unutar vidljive sesije.
Comment[sv]=Ljudsignal avgiven inne i en synlig session
Comment[uk]=Звучить гудок у видимому сеансі
Comment[x-test]=xxBell emitted within a visible sessionxx
Comment[zh_CN]=可见会话中发生的响铃
Comment[zh_TW]=可見工作階段中的響鈴行為
Action=None

[Event/BellInvisible]
Name=Bell in Non-Visible Session
Name[bs]=Zvono u zaklonjenoj sesiji
Name[ca]=Timbre en una sessió no visible
Name[cs]=Zvonek ve skrytém sezení
Name[da]=Bip i ikke-synlig session
Name[de]=Signalton in nicht sichtbarer Sitzung
Name[el]=Ηχητικό σήμα σε μη ορατή συνεδρία
Name[et]=Heli nähtamatus seansis
Name[fi]=Äänimerkki näkymättömässä istunnossa
Name[ga]=Cloigín i Seisiún Dofheicthe
Name[gl]=Badalada nunha sesión non visíbel
Name[hu]=Csengő a nem látható munkamenetben
Name[it]=Campana in sessione non visibile
Name[lt]=Skambutis nematomoje sesijoje
Name[nb]=Varsel i ikke-synlig økt
Name[nl]=Geluidssignaal in niet-zichtbare sessie
Name[nn]=Bjølle i ikkje-synleg økt
Name[pl]=Dzwonek w niewidocznej sesji
Name[pt]=Campainha numa Sessão Invisível
Name[pt_BR]=Campainha na sessão não visível
Name[ro]=Clopoțel în sesiune nevizibilă
Name[se]=Divga oaidnemeahttun bargovuorus
Name[sk]=Zvonček v nezobrazenom sedení
Name[sr]=Звоно у сесији која није видљива
Name[sr@ijekavian]=Звоно у сесији која није видљива
Name[sr@ijekavianlatin]=Zvono u sesiji koja nije vidljiva
Name[sr@latin]=Zvono u sesiji koja nije vidljiva
Name[sv]=Ljudsignal i icke-synlig session
Name[uk]=Гудок у невидимому сеансі
Name[x-test]=xxBell in Non-Visible Sessionxx
Name[zh_CN]=不可见会话中的响铃
Name[zh_TW]=非可見工作階段的響鈴
Comment=Bell emitted within a non-visible session
Comment[bs]=Oglašeno je zvono unutar zaklonjene sesije
Comment[ca]=Timbre emès en una sessió no visible
Comment[cs]=Zvonek spuštěný ve skrytém sezení
Comment[da]=Bip udsendt indenfor en ikke-synlig session
Comment[de]=Signalton, der in einer nicht sichtbaren Sitzung ertönt
Comment[el]=Ηχητικό σήμα εκπέμπεται σε μη ορατή συνεδρία
Comment[et]=Heli nähtamatus seansis
Comment[fi]=Äänimerkki lähetetty näkymättömässä istunnossa
Comment[ga]=Baineadh an cloigín i seisiún dofheicthe
Comment[gl]=Badalada emitida nunha sesión non visíbel
Comment[hu]=Csengetés a nem látható munkamenetben
Comment[it]=Campana emessa in una sessione non visibile
Comment[lt]=Nematomos sesijos metu skambutis neveiks
Comment[nb]=Signal sendt ut i en økt som ikke er synlig
Comment[nl]=Geluidssignaal aangeroepen in niet-zichtbare sessie
Comment[nn]=Bjøllesignal sendt i ei ikkje-synleg økt
Comment[pl]=Dzwonek uruchamiany w niewidocznej sesji
Comment[pt]=Campainha emitida dentro de uma sessão não-visível
Comment[pt_BR]=Campainha emitida dentro de uma sessão não visível
Comment[ro]=Clopoțel emis în cadrul unei sesiuni nevizibile
Comment[se]=Divgasignála sáddejuvvui oaidnemeahttun bargovuorus
Comment[sk]=Zvonček poslaný v nezobrazenom sedení
Comment[sr]=Емитовано је звоно у сесији која није видљива.
Comment[sr@ijekavian]=Емитовано је звоно у сесији која није видљива.
Comment[sr@ijekavianlatin]=Emitovano je zvono u sesiji koja nije vidljiva.
Comment[sr@latin]=Emitovano je zvono u sesiji koja nije vidljiva.
Comment[sv]=Ljudsignal avgiven inne i en icke-synlig session
Comment[uk]=Звучить гудок у невидимому сеансі
Comment[x-test]=xxBell emitted within a non-visible sessionxx
Comment[zh_CN]=不可见会话中发生的响铃
Comment[zh_TW]=非可見工作階段中的響鈴行為
Sound=KDE-Sys-App-Message.ogg
Action=Popup


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>yakuake</Name>
        <Homepage>http://extragear.kde.org/apps/yakuake</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <Icon>yakuake</Icon>
        <IsA>app:gui</IsA>
        <Summary>Very powerful Quake style Konsole for KDE4</Summary>
        <Description>The name comes from Yet Another Kuake (thus YaKuake). Its behaviour is similar to the console of the Quake game.</Description>
        <Archive sha1sum="4abe2401f7745861d44a11f47d036c9c535464a1" type="tarxz">mirrors://kde/stable/yakuake/3.0.4/src/yakuake-3.0.4.tar.xz</Archive>
        <BuildDependencies>
            <Dependency versionFrom="5.7.1">qt5-base-devel</Dependency>
            <Dependency>libX11-devel</Dependency>
            <Dependency versionFrom="5.7.1">qt5-x11extras-devel</Dependency>
            <Dependency>knewstuff-devel</Dependency>
            <Dependency>kio-devel</Dependency>
            <Dependency>kparts-devel</Dependency>
            <Dependency>knotifyconfig-devel</Dependency>
            <Dependency>karchive-devel</Dependency>
            <Dependency>kcoreaddons-devel</Dependency>
            <Dependency>kconfig-devel</Dependency>
            <Dependency>kcrash-devel</Dependency>
            <Dependency>kdbusaddons-devel</Dependency>
            <Dependency>kglobalaccel-devel</Dependency>
            <Dependency>ki18n-devel</Dependency>
            <Dependency>kiconthemes-devel</Dependency>
            <Dependency>knewstuff-devel</Dependency>
            <Dependency>knotifications-devel</Dependency>
            <Dependency>kparts-devel</Dependency>
            <Dependency>kwidgetsaddons-devel</Dependency>
            <Dependency>kwindowsystem-devel</Dependency>
            <Dependency>gettext-devel</Dependency>
            <Dependency>extra-cmake-modules</Dependency>
            <Dependency>kwayland-devel</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>yakuake</Name>
        <RuntimeDependencies>
            <Dependency versionFrom="5.7.1">qt5-base</Dependency>
            <Dependency versionFrom="5.7.1">qt5-x11extras</Dependency>
            <Dependency>kio</Dependency>
            <Dependency>kcrash</Dependency>
            <Dependency>ki18n</Dependency>
            <Dependency>kparts</Dependency>
            <Dependency>kconfig</Dependency>
            <Dependency>kxmlgui</Dependency>
            <Dependency>karchive</Dependency>
            <Dependency>kservice</Dependency>
            <Dependency>knewstuff</Dependency>
            <Dependency>kwayland</Dependency>
            <Dependency>kcoreaddons</Dependency>
            <Dependency>kdbusaddons</Dependency>
            <Dependency>kiconthemes</Dependency>
            <Dependency>kglobalaccel</Dependency>
            <Dependency>knotifyconfig</Dependency>
            <Dependency>kwindowsystem</Dependency>
            <Dependency>kconfigwidgets</Dependency>
            <Dependency>knotifications</Dependency>
            <Dependency>kwidgetsaddons</Dependency>
            <Dependency>libX11</Dependency>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="config">/etc/xdg</Path>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="library">/usr/lib/qt5</Path>
            <Path fileType="data">/usr/share</Path>
            <Path fileType="localedata">/usr/share/locale</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
        <AdditionalFiles>
            <AdditionalFile owner="root" permission="0644" target="/usr/share/kde4/apps/yakuake/yakuake.notifyrc">yakuake.notifyrc</AdditionalFile>
        </AdditionalFiles>
    </Package>

    <History>
        <Update release="4">
            <Date>2017-09-16</Date>
            <Version>3.0.4</Version>
            <Comment>Rebuild for new Toolchain.</Comment>
            <Name>Mustafa Cinasal</Name>
            <Email>muscnsl@gmail.com</Email>
        </Update>
        <Update release="3">
            <Date>2017-03-02</Date>
            <Version>3.0.2</Version>
            <Comment>Rebuild for new Toolchain.</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-23</Date>
            <Version>3.0.2</Version>
            <Comment>Release bump</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2016-03-07</Date>
            <Version>3.0.2</Version>
            <Comment>First release</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
    </History>
</PISI>

repo_name: ayhanyalcinsoy/main


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>yakuake</Name>
        <Summary xml:lang="tr">KDE5 için Quake tarzı oldukça güçlü bir Konsole</Summary>
        <Description xml:lang="tr">İsmi Bir Başka Kuake (Yet Another Kuake - YaKuake) sözcüklerinden gelmektedir. Quake oyunundaki konsola benzer.</Description>
    </Source>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def build():
    pisitools.dosed("Makefile", "MANDIR = /usr/man", "MANDIR = /usr/share/man")
    autotools.make("-C po update-po")
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.remove("/usr/sbin/ntsysv")
    pisitools.remove("/sbin/chkconfig")
    pisitools.remove("/usr/share/man/man8/chkconfig.8")
    pisitools.remove("/usr/share/man/man8/ntsysv.8")
    pisitools.removeDir("/usr/share/man/man5")
    pisitools.removeDir("/sbin")

    pisitools.dodoc("COPYING")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>alternatives</Name>
        <Homepage>http://git.fedorahosted.org/git/?p=chkconfig.git;a=summary</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <IsA>app:console</IsA>
        <Summary>Alternative management system</Summary>
        <Description>alternatives creates, removes, maintains and displays information about the symbolic links comprising the alternatives system. Alternatives system determines the defaults when several programs fulfilling the same or similar functions to be installed on a single system at the same time.</Description>
        <Archive sha1sum="d2111640833792e96859559113c89467ea0f9a80" type="targz">https://github.com/fedora-sysv/chkconfig/archive/chkconfig-1.3.63.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>popt-devel</Dependency>
            <Dependency>newt-devel</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>alternatives</Name>
        <Files>
            <Path fileType="config">/etc</Path>
            <Path fileType="executable">/usr/sbin</Path>
            <Path fileType="localedata">/usr/share/locale</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="data">/var</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-01-26</Date>
            <Version>1.3.63</Version>
            <Comment>Rebuild for new toolchain.</Comment>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-02</Date>
            <Version>1.3.63</Version>
            <Comment>Rebuild</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2016-03-05</Date>
            <Version>1.3.63</Version>
            <Comment>First release</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>alternatives</Name>
        <Summary xml:lang="tr">Alternatif yönetim sistemi</Summary>
        <Description xml:lang="tr">alternatives, alternatives sisteminin parçası olan sembolik bağlantıları oluşturan, silen, yöneten ve bunlar hakkında bilgi gösteren araçtır. Alternatives sistemi, birbirine benzer ya da aynı işlevleri sunan programların aynı anda aynı sisteme kurulduğu zamanlarda öntanımlıları belirler.</Description>
    </Source>
</PISI>


code:
<PISI>
    <Name>x11.util</Name>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def setup():
    autotools.configure("--with-mapdir=/usr/share/fonts/util")

def build():
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.dodoc("ChangeLog", "COPYING", "README")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>font-util</Name>
        <Homepage>http://www.x.org/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>MIT</License>
        <IsA>app:console</IsA>
        <Summary>X.Org font utilities</Summary>
        <Description>font-util package contains core font utilities for the Xorg XWindow system.</Description>
        <Archive sha1sum="0b16add3637c64b0bbaf1dd223b71b0421100c20" type="tarbz2">mirrors://xorg/individual/font/font-util-1.3.1.tar.bz2</Archive>
        <BuildDependencies>
            <Dependency>zlib-devel</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>font-util</Name>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="data">/usr/lib/pkgconfig</Path>
            <Path fileType="data">/usr/share/fonts</Path>
            <Path fileType="data">/usr/share/aclocal</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="man">/usr/share/man</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-01-26</Date>
            <Version>1.3.1</Version>
            <Comment>Rebuild</Comment>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-02</Date>
            <Version>1.3.1</Version>
            <Comment>Rebuild</Comment>
            <Name>Burak Ertürk</Name>
            <Email>burakerturk@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2015-05-10</Date>
            <Version>1.3.1</Version>
            <Comment>First release</Comment>
            <Name>Burak Ertürk</Name>
            <Email>burakerturk@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>font-util</Name>
        X.Org font araçları
        Utilitaires de fontes de X.Org
        X.Org Schrift Werkzeuge
    </Source>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import pisitools
from pisi.actionsapi import pythonmodules

def install():
    pythonmodules.install("--install-lib=/usr/lib/pardus")

    pisitools.dosym("zorg-cli", "/usr/bin/zorg")

    # This is now provided by xorg-server package.
    pisitools.remove("/usr/share/X11/DriversDB")


code:
# -*- coding: utf-8 -*-

from pisi.version import Version

def postInstall(fromVersion, fromRelease, toVersion, toRelease):
    if fromVersion and Version("0.90") <= Version(fromVersion) <= Version("0.96"):
        from zorg import config

        busId = call("zorg", "Xorg.Display", "activeDeviceID")
        device = config.getDeviceInfo(busId)

        if device:
            config.saveDeviceInfo(device)
            config.saveXorgConfig(device)

    if fromRelease and int(fromRelease) < 81:
        from zorg import config

        layout, variant = config.getKeymapOld()
        config.saveKeymap(layout, variant)


code:
# -*- coding: utf-8 -*-

import os

import comar
from pardus.sysutils import *

from zorg.config import *
from zorg.consts import *
from zorg.probe import *
from zorg.utils import *

kernel_module_file = os.path.join(config_dir, "kernel_module")

def getDevice():
    bus = configuredBus()
    if not bus:
        return None

    return getDeviceInfo(bus)

def getDeviceOutput(output):
    dev = getDevice()
    if not dev:
        return None, None

    if output not in dev.outputs:
        dev.outputs[output] = Output(output)

    return dev, dev.outputs[output]

# Model methods

def ready(boot):
    opts = {}

    if boot:
        opts = get_kernel_option("xorg")

    if "keymap" in opts:
        keymap = opts["keymap"].split("/", 1)
        setKeymap(*keymap)

    if "safe" in opts:
        return False

    driver = opts.get("driver")

    if driver or "probe" in opts:
        return initialConfig(driver)

    busId = configuredBus()
    if not busId:
        return initialConfig()

    if boot:
        # Check if the active card is changed
        try:
            device = getDeviceInfo(busId)
        except IOError:
            # Device is not present on specified bus.
            # Check if the new device is configured before.
            newBus = getPrimaryCard()
            if newBus:
                device = getDeviceInfo(VideoDevice(newBus).bus_id)
                if device and not device.isChanged():
                    # Yes, it is configured before.
                    # Reenable driver and write xorg.conf.
                    device.enableDriver()
                    saveXorgConfig(device)
                else:
                    # This is a different card.
                    return initialConfig()
            else:
                # No card is present. Return True in order to
                # start with a manually edited xorg.conf.
                return True
        else:
            if not device or device.isChanged():
                return initialConfig()

    # Check kernel module. Later, this should be done
    # with Xorg.Driver.ready method.
    if os.path.exists(kernel_module_file):
        kernelModule = file(kernel_module_file).read()
        if run("/sbin/modprobe", "-i", kernelModule) and kernelModule != "fglrx":
            return False

    return True

def initialConfig(preferredDriver=None):
    bus = getPrimaryCard()

    if bus:
        device = VideoDevice(bus)
    else:
        # This machine might be a terminal server with no video cards.
        # We start X and leave the decision to the user.
        log_debug("No video card found.")
        return True

    if preferredDriver is None:
        preferredDriver = device.preferredDriver()

    device.setDriver(preferredDriver)

    saveDeviceInfo(device)
    saveXorgConfig(device)

    return True

def safeConfig():
    bus = getPrimaryCard()

    if bus:
        device = VideoDevice(bus)
    else:
        # See the comment in initialConfig
        return True

    device.setDriver("vesa")
    device.depth = 16
    device.outputs["default"] = Output("default")
    device.monitors["default"] = Monitor()

    saveDeviceInfo(device)
    saveXorgConfig(device)

    return True

# FIXME Confusing method name
def activeDeviceID():
    return configuredBus()

def listDrivers():
    drivers = listAvailableDrivers()

    link = comar.Link()
    packages = list(link.Xorg.Driver)
    for package in packages:
        try:
            info = link.Xorg.Driver[package].getInfo()
        except dbus.DBusException:
            continue
        alias = str(info["alias"])
        driver = str(info["xorg-module"])
        drivers.append(alias)
        if driver in drivers:
            drivers.remove(driver)

    return sorted(drivers)

def setDriver(driver):
    dev = getDevice()
    if dev:
        dev.setDriver(driver)
        saveDeviceInfo(dev)

def setDepth(depth):
    dev = getDevice()
    if dev:
        dev.depth = depth
        saveDeviceInfo(dev)

def setOutput(output, enabled, ignored):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setEnabled(enabled)
        out.setIgnored(ignored)

        saveDeviceInfo(dev)

def setMode(output, resolution, rate):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setMode(resolution, rate)

        saveDeviceInfo(dev)

def setOrientation(output, rotation, reflection):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setOrientation(rotation, reflection)

        saveDeviceInfo(dev)

def setPosition(output, position, arg):
    dev, out = getDeviceOutput(output)

    if dev:
        out.setPosition(position, arg)

        saveDeviceInfo(dev)

def setMonitor(output, vendor, model, horizSync, vertRefresh):
    dev, out = getDeviceOutput(output)

    if dev:
        if model:
            mon = Monitor()
            mon.vendor  = vendor
            mon.model   = model
            mon.hsync   = horizSync
            mon.vref    = vertRefresh
            dev.monitors[output] = mon
        elif output in dev.monitors:
            del dev.monitors[output]
        else:
            return

        saveDeviceInfo(dev)

def syncConfigs():
    dev = getDevice()
    if dev:
        saveXorgConfig(dev)

def setKeymap(layout, variant=""):
    saveKeymap(layout, variant)


code:
Index: zorg-2.0.4/zorg/config.py
===================================================================
--- zorg-2.0.4.orig/zorg/config.py
+++ zorg-2.0.4/zorg/config.py
@@ -11,6 +11,21 @@ from zorg.parser import *
 from zorg.probe import VideoDevice, Monitor, Output
 from zorg.utils import *

+KEYMAP_CONF_TEMPLATE="""\
+# This file is generated by zorg. If you want to change settings
+# in this file, edit the file 10-keyboard.conf in the same
+# directory.
+
+Section "InputClass"
+    Identifier      "Configured Keymap"
+    MatchIsKeyboard "on"
+    MatchTag        "use_configured_keymap"
+
+    %(comment_layout)sOption          "xkb_layout"    "%(layout)s"
+    %(comment_variant)sOption          "xkb_variant"   "%(variant)s"
+EndSection
+"""
+
 def saveXorgConfig(card):
     parser = XorgParser()

@@ -265,7 +280,7 @@ def saveDeviceInfo(card):
     f = open(consts.config_file, "w")
     f.write(doc.toPrettyString().replace("\n\n", ""))

-def getKeymap():
+def getKeymapOld():
     layout = None
     variant = ""

@@ -297,24 +312,44 @@ def getKeymap():

     return layout, variant

-def saveKeymap(layout, variant=""):
-    if not os.path.exists(consts.config_dir):
-        os.mkdir(consts.config_dir, 0755)
+def getKeymap():
+    layout = None
+    variant = ""

     try:
-        doc = piksemel.parse(consts.config_file)
+        p = XorgParser()
+        p.parseFile(consts.keymap_conf)
+        section = p.getSections("InputClass")[0]
+        layout = section.get("xkb_layout")
+        variant = section.get("xkb_variant", "")
+
     except OSError:
-        doc = piksemel.newDocument("ZORG")
+        pass
+
+    if not layout:
+        from pardus.localedata import languages

-    keyboardTag = doc.getTag("Keyboard")
+        try:
+            language = file("/etc/mudur/language").read().strip()
+        except IOError:
+            language = "en"
+
+        if not languages.has_key(language):
+            language = "en"

-    if keyboardTag:
-        keyboardTag.hide()
+        keymap = languages[language].keymaps[0]
+        layout = keymap.xkb_layout
+        variant = keymap.xkb_variant

-    keyboardTag = doc.insertTag("Keyboard")
-    keyboardTag.insertTag("Layout").insertData(layout)
-    if variant:
-        keyboardTag.insertTag("Variant").insertData(variant)
+    return layout, variant

-    f = file(consts.config_file, "w")
-    f.write(doc.toPrettyString().replace("\n\n", ""))
+def saveKeymap(layout, variant=""):
+    opts = {"layout": layout,
+            "variant": variant,
+            "comment_layout": "" if layout else "#",
+            "comment_variant": "" if variant else "#"}
+
+    with open(consts.keymap_conf, "w") as f:
+        f.write(KEYMAP_CONF_TEMPLATE % opts)
+        f.flush()
+        os.fsync(f.fileno())
Index: zorg-2.0.4/zorg/consts.py
===================================================================
--- zorg-2.0.4.orig/zorg/consts.py
+++ zorg-2.0.4/zorg/consts.py
@@ -8,6 +8,7 @@ data_dir    = "/usr/share/X11"
 modules_dir = "/usr/lib/xorg/modules"

 xorg_conf_file      = "/etc/X11/xorg.conf"
+keymap_conf         = "/etc/X11/xorg.conf.d/00-configured-keymap.conf"
 config_file         = join(config_dir,  "config.xml")
 configured_bus_file = join(config_dir,  "configured_bus")
 drivers_file        = join(data_dir,    "DriversDB")


code:
Index: zorg-cli
===================================================================
--- zorg-cli	(revision 31546)
+++ zorg-cli	(revision 31547)
@@ -94,8 +94,12 @@
         setDriver(opts.driver)

     elif opts.keymap:
-        keymap = opts.keymap.split("/", 1)
-        link.Xorg.Display["zorg"].setKeymap(*keymap)
+        if "/" in opts.keymap:
+            layout, variant = opts.keymap.split("/", 1)
+        else:
+            layout, variant = opts.keymap, ""

+        link.Xorg.Display["zorg"].setKeymap(layout, variant)
+
     else:
         parser.print_help()


code:
Section "Module"
    SubSection "extmod"
        Option  "omit xfree86-dga" "true"
    EndSubSection
EndSection

Section "ServerFlags"
    Option  "BlankTime" "0"
    Option  "OffTime" "0"
    Option  "SuspendTime" "0"
    Option  "AllowMouseOpenFail" "true"
    Option  "StandbyTime" "0"
EndSection

Section "Device"
    Identifier  "VideoCard"
    Driver  "vesa"
EndSection

Section "Screen"
    Identifier  "Screen"
    Device  "VideoCard"
    Monitor "Default Monitor"
    DefaultDepth    16
    SubSection "Display"
        Depth   16
        Modes "800x600" "640x480"
    EndSubSection
EndSection

Section "ServerLayout"
    Identifier  "Layout"
    Screen  "Screen"
EndSection

Section "Monitor"
    Identifier  "Default Monitor"
    HorizSync   31.5 - 50
    VertRefresh 50 - 70
EndSection


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>zorg</Name>
        <Homepage>http://www.pisilinux.org</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <IsA>app:console</IsA>
        <Summary>Çomar's X configuration tools</Summary>
        <Description>zorg is a set of X configuration tools and monitor and display adapter database files.</Description>
        <Archive sha1sum="e643f28430d9c6f190a5164e87960ae0094f0cd0" type="targz">https://github.com/forYali/zorg/archive/2.0.4.tar.gz</Archive>
        <Patches>
            <Patch level="1">keyboard-config.patch</Patch>
            <!--Patch>setkeymap-signature.patch</Patch-->
        </Patches>
    </Source>

    <Package>
        <Name>zorg</Name>
        <Files>
            <Path fileType="executable">/sbin</Path>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="data">/usr/share/X11</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="data">/var/lib/zorg</Path>
        </Files>
        <AdditionalFiles>
            <AdditionalFile owner="root" permission="0644" target="/usr/share/X11/xorg-safe.conf">xorg-safe.conf</AdditionalFile>
        </AdditionalFiles>
        <Provides>
            <COMAR script="xorg.display.py">Xorg.Display</COMAR>
            <COMAR script="package.py">System.Package</COMAR>
        </Provides>
    </Package>

    <History>
        <Update release="1">
            <Date>2017-03-05</Date>
            <Version>2.0.4</Version>
            <Comment>First release</Comment>
            <Name>Ertuğrul Erata</Name>
            <Email>ertugrulerata@gmail.com</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>zorg</Name>
        Çomar'ın X yapılandırma araçları
        <Description xml:lang="tr">X yapılandırma araçları, monitör ve ekran kartı veritabanları</Description>
        <Description xml:lang="fr">outils de configuration de X, fichiers de base de données des écrans et des cartes vidéo.</Description>
        Çomar's X-Konfigurationtools
    </Source>
</PISI>


code:
*/__pycache__/*
*/migrations/*
db.sqlite3
pyproject.toml

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/

path: .gitignore

license: unknown


code:
from django.contrib import admin

# Register your models here.


code:
from django.apps import AppConfig

class ArticlesConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'articles'


code:
from django.db import models

# Create your models here.


code:
from django.test import TestCase

# Create your tests here.


code:
from django.shortcuts import render

# Create your views here.


code:
"""
ASGI config for config project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/
"""

import os

from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

application = get_asgi_application()


code:
from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-%#a_%9edign^saa(r9-ccehj8st7n$)6ep0zi++p_3%t+-xgi#'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'users.apps.UsersConfig',
    'articles.apps.ArticlesConfig',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'config.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'config.wsgi.application'

# Database
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# Password validation
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

# Internationalization
# https://docs.djangoproject.com/en/4.0/topics/i18n/

LANGUAGE_CODE = 'ru'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/

STATIC_URL = 'static/'

# Default primary key field type
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

AUTH_USER_MODEL = 'users.User'


code:
"""config URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]


code:
"""
WSGI config for config project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

application = get_wsgi_application()


code:
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys

def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    main()


code:
[[package]]
name = "asgiref"
version = "3.5.0"
description = "ASGI specs, helper code, and adapters"
category = "main"
optional = false
python-versions = ">=3.7"

[package.extras]
tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"]

[[package]]
name = "django"
version = "4.0.4"
description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
category = "main"
optional = false
python-versions = ">=3.8"

[package.dependencies]
asgiref = ">=3.4.1,<4"
sqlparse = ">=0.2.2"
tzdata = {version = "*", markers = "sys_platform == \"win32\""}

[package.extras]
argon2 = ["argon2-cffi (>=19.1.0)"]
bcrypt = ["bcrypt"]

[[package]]
name = "sqlparse"
version = "0.4.2"
description = "A non-validating SQL parser."
category = "main"
optional = false
python-versions = ">=3.5"

[[package]]
name = "tzdata"
version = "2022.1"
description = "Provider of IANA time zone data"
category = "main"
optional = false
python-versions = ">=2"

[metadata]
lock-version = "1.1"
python-versions = "^3.10"
content-hash = "4cd6803cbe290969c16a2e96a8cf549fca0d3a2d6ced60ae4dccb14229bbb961"

[metadata.files]
asgiref = [
    {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"},
    {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"},
]
django = [
    {file = "Django-4.0.4-py3-none-any.whl", hash = "sha256:07c8638e7a7f548dc0acaaa7825d84b7bd42b10e8d22268b3d572946f1e9b687"},
    {file = "Django-4.0.4.tar.gz", hash = "sha256:4e8177858524417563cc0430f29ea249946d831eacb0068a1455686587df40b5"},
]
sqlparse = [
    {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"},
    {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"},
]
tzdata = [
    {file = "tzdata-2022.1-py2.py3-none-any.whl", hash = "sha256:238e70234214138ed7b4e8a0fab0e5e13872edab3be586ab8198c407620e2ab9"},
    {file = "tzdata-2022.1.tar.gz", hash = "sha256:8b536a8ec63dc0751342b3984193a3118f8fca2afe25752bb9b7fffd398552d3"},
]


code:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from .forms import UserCreationForm, UserChangeForm
from .models import User

class UserAdmin(UserAdmin):
    add_form = UserCreationForm
    form = UserChangeForm
    model = User
    list_display = ('email', 'is_staff', 'is_active',)
    list_filter = ('email', 'is_staff', 'is_active',)
    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('Permissions', {'fields': ('is_staff', 'is_active')}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'password1', 'password2', 'is_staff', 'is_active')}
        ),
    )
    search_fields = ('email',)
    ordering = ('email',)

admin.site.register(User, UserAdmin)


code:
from django.apps import AppConfig

class UsersConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'users'


code:
from django.contrib.auth.forms import UserCreationForm, UserChangeForm

from .models import User

class UserCreationForm(UserCreationForm):

    class Meta:
        model = User
        fields = ('email',)

class UserChangeForm(UserChangeForm):

    class Meta:
        model = User
        fields = ('email',)


code:
from django.contrib.auth.base_user import BaseUserManager
from django.utils.translation import gettext_lazy as _

class UserManager(BaseUserManager):
    """
    Custom user model manager where email is the unique identifiers
    for authentication instead of usernames.
    """
    def create_user(self, email, password, **extra_fields):
        """
        Create and save a User with the given email and password.
        """
        if not email:
            raise ValueError(_('The Email must be set'))
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self, email, password, **extra_fields):
        """
        Create and save a SuperUser with the given email and password.
        """
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_active', True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError(_('Superuser must have is_staff=True.'))
        if extra_fields.get('is_superuser') is not True:
            raise ValueError(_('Superuser must have is_superuser=True.'))
        return self.create_user(email, password, **extra_fields)


code:
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import gettext_lazy as _

from .manager import UserManager

class User(AbstractUser):
    username = models.CharField(max_length=50, unique=True)
    email = models.EmailField(_('email address'), unique=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = UserManager()

    def __str__(self):
        return self.email


code:
language:       cpp
compiler:       gcc
before_install:
  - sudo apt-get update -qq
  - sudo apt-get install -y libogg-dev libvorbis-dev libasound2-dev libjack-dev
script:         make

repo_name: ninjam/libninjam

license: mit


code:
DESTDIR=
PREFIX=/usr
INSTALLDIR=$(DESTDIR)$(PREFIX)
VERSION=$(shell head -n 1 debian/changelog|sed -e "s,^ninjam (\(.*\)) .*,\1,")

#############################################################
# CPU optimization section
#############################################################

OPTFLAGS = -O2
ifdef MAC
OPTFLAGS += -D_MAC -mcpu=7450
LFLAGS = -framework coreaudio -lncurses.5 -lm
else
OPTFLAGS += -pthread
MACH=$(shell uname -m)
ifeq ($(MACH), x86_64)
OPTFLAGS += -fPIC
else
OPTFLAGS += -malign-double
endif
LFLAGS = -lm -lpthread
endif

#############################################################
# Basic Configuration
#############################################################

# we MUST have -fomit-frame-pointer and -lm, otherwise we hate life
#CFLAGS = $(OPTFLAGS) -s -Wall -Wextra -Isrc/

CFLAGS = $(OPTFLAGS) -s -Isrc/
# CFLAGS += -Wshadow
CC=gcc
CXX=g++
CXXFLAGS = $(CFLAGS)

COMMON_OBJS  = build/obj/WDL/rng.o
COMMON_OBJS += build/obj/WDL/sha.o
COMMON_OBJS += build/obj/WDL/jnetlib/asyncdns.o
COMMON_OBJS += build/obj/WDL/jnetlib/connection.o
COMMON_OBJS += build/obj/WDL/jnetlib/listen.o
COMMON_OBJS += build/obj/WDL/jnetlib/util.o
COMMON_OBJS += build/obj/WDL/jnetlib/httpget.o
COMMON_OBJS += build/obj/ninjam/mpb.o
COMMON_OBJS += build/obj/ninjam/netmsg.o

CLIENT_OBJS  = build/obj/ninjam/njclient.o
CLIENT_OBJS += build/obj/ninjam/njmisc.o
ifdef MAC
CLIENT_OBJS += build/obj/ninjam/audiostream_mac.o
else
CLIENT_OBJS += build/obj/ninjam/audiostream_alsa.o
CLIENT_OBJS += build/obj/ninjam/audiostream_jack.o
LFLAGS += -ljack -lasound
endif

build/obj/%.o: src/%.cpp
	mkdir -p $(@D)
	$(CXX) $(CXXFLAGS) -c -o $@ $<

default: libninjam-common.so libninjam-client.so \
	       libninjam-common.a  libninjam-client.a  \
	       ninjam.pc           ninjam-client.pc
	$(MAKE) -C src/cursesclient
	$(MAKE) -C src/server

libninjam-common.so: $(COMMON_OBJS)
	$(CXX) -shared $(CXXFLAGS) -o build/lib/libninjam-common.so $(COMMON_OBJS)

libninjam-client.so: $(CLIENT_OBJS) build/lib/libninjam-common.so
	$(CXX) -shared $(CXXFLAGS) -o build/lib/libninjam-client.so $(CLIENT_OBJS) \
	$(LFLAGS) -logg -lvorbis -lvorbisenc -Lbuild/lib/ -lninjam-common

libninjam-common.a: $(COMMON_OBJS)
	ar cr build/lib/libninjam-common.a $(COMMON_OBJS)

libninjam-client.a: $(CLIENT_OBJS) libninjam-common.a
	ar cr build/lib/libninjam-client.a $(CLIENT_OBJS) build/lib/libninjam-common.a

%.pc: build/pc/%.pc.in
	sed 's,^\(prefix=\).*,\1$(PREFIX),; s,^\(Version: \).*,\1$(VERSION),' $< > build/pc/$@

clean:
	-rm $(COMMON_OBJS)                $(CLIENT_OBJS)                \
	    build/lib/libninjam-common.so build/lib/libninjam-client.so \
	    build/lib/libninjam-common.a  build/lib/libninjam-client.a  \
	    build/pc/ninjam.pc            build/pc/ninjam-client.pc
	$(MAKE) -C src/cursesclient clean
	$(MAKE) -C src/server       clean

install: default
	mkdir   -p                               $(INSTALLDIR)/include/libninjam/ninjam
	mkdir   -p                               $(INSTALLDIR)/include/libninjam/WDL/jnetlib
	mkdir   -p                               $(INSTALLDIR)/lib/pkgconfig
	install -m 644 src/ninjam/*.h            $(INSTALLDIR)/include/libninjam/ninjam/
	install -m 644 src/WDL/*.h               $(INSTALLDIR)/include/libninjam/WDL/
	install -m 644 src/WDL/jnetlib/*.h       $(INSTALLDIR)/include/libninjam/WDL/jnetlib/
	install        build/lib/*.so            $(INSTALLDIR)/lib/
	install -m 755 build/lib/*.a             $(INSTALLDIR)/lib/
	install -m 644 build/pc/ninjam.pc        $(INSTALLDIR)/lib/pkgconfig/
	install -m 644 build/pc/ninjam-client.pc $(INSTALLDIR)/lib/pkgconfig/
	$(MAKE) -C src/cursesclient install
	$(MAKE) -C src/server       install

path: Makefile


code:
# libninjam
common base library for compatible ninjam servers and clients

#### NINJAM clients based on libninjam:
  * cNinjam - the original cross-platform text-mode NINJAM client (nCurses)
  * gNinjam - the original *nix graphical NINJAM client (GTK2)
  * LinJam  - cross-platform graphical NINJAM client (JUCE)
  * ....


code:
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual C++ Express 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libninjam_static", "libninjam-static.vcproj", "{37240F1E-3652-4988-A0F3-38AAB7C630EE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ninjamserver", "ninjamserver.vcproj", "{31AF1FF4-3446-47D9-9AE0-52E34C152027}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Release|Win32 = Release|Win32
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{37240F1E-3652-4988-A0F3-38AAB7C630EE}.Debug|Win32.ActiveCfg = Debug|Win32
		{37240F1E-3652-4988-A0F3-38AAB7C630EE}.Debug|Win32.Build.0 = Debug|Win32
		{37240F1E-3652-4988-A0F3-38AAB7C630EE}.Release|Win32.ActiveCfg = Release|Win32
		{37240F1E-3652-4988-A0F3-38AAB7C630EE}.Release|Win32.Build.0 = Release|Win32
		{31AF1FF4-3446-47D9-9AE0-52E34C152027}.Debug|Win32.ActiveCfg = Debug|Win32
		{31AF1FF4-3446-47D9-9AE0-52E34C152027}.Debug|Win32.Build.0 = Debug|Win32
		{31AF1FF4-3446-47D9-9AE0-52E34C152027}.Release|Win32.ActiveCfg = Release|Win32
		{31AF1FF4-3446-47D9-9AE0-52E34C152027}.Release|Win32.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal


code:
<?xml version="1.0" encoding="UTF-8"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="9.00"
	Name="libninjam_static"
	ProjectGUID="{37240F1E-3652-4988-A0F3-38AAB7C630EE}"
	RootNamespace="libninjam-static"
	Keyword="Win32Proj"
	TargetFrameworkVersion="0"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory="Debug"
			IntermediateDirectory="Debug"
			ConfigurationType="4"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../../src;../Include"
				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="1"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLibrarianTool"
				LinkLibraryDependencies="false"
				AdditionalDependencies="..\lib\libogg_static_dbg.lib ..\lib\libvorbis_static_dbg.lib ..\lib\dsound.lib Setupapi.lib"
				OutputFile="$(OutDir)\$(ProjectName)_dbg.lib"
				AdditionalLibraryDirectories=""
				IgnoreDefaultLibraryNames=""
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
				CommandLine="copy Debug\libninjam_static_dbg.lib ..\lib\libninjam_static_dbg.lib"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory="Release"
			IntermediateDirectory="Release"
			ConfigurationType="4"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
			/>
			<Tool
				Name="VCCLCompilerTool"
				AdditionalIncludeDirectories="../../src;../Include"
				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;"
				RuntimeLibrary="0"
				UsePrecompiledHeader="0"
				WarningLevel="3"
				Detect64BitPortabilityProblems="true"
				DebugInformationFormat="3"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLibrarianTool"
				AdditionalDependencies="..\lib\libogg_static.lib ..\lib\libvorbis_static.lib ..\lib\dsound.lib Setupapi.lib"
				IgnoreDefaultLibraryNames=""
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
				CommandLine="copy Release\libninjam_static.lib ..\lib\libninjam_static.lib"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl;inc;xsd"
			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
			>
			<Filter
				Name="KS"
				>
				<File
					RelativePath="..\..\src\ninjam\KS\audfilter.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\audpin.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\enum.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\filter.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\irptgt.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\kssample.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\node.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\pin.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\tlist.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\util.h"
					>
				</File>
			</Filter>
			<Filter
				Name="WDL"
				>
				<File
					RelativePath="..\..\src\WDL\dirscan.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\heapbuf.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\lineparse.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\mutex.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\pcmfmtcvt.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\ptrlist.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\queue.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\rng.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\sha.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\string.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\vorbisencdec.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\wavwrite.h"
					>
				</File>
				<Filter
					Name="jnetlib"
					>
					<File
						RelativePath="..\..\src\WDL\jnetlib\asyncdns.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\connection.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpget.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpserv.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\jnetlib.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\listen.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\netinc.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\util.h"
						>
					</File>
				</Filter>
			</Filter>
			<Filter
				Name="ninjam"
				>
				<File
					RelativePath="..\..\src\ninjam\audiostream.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\constants.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\mpb.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\netmsg.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\njclient.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\njmisc.h"
					>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
			>
			<Filter
				Name="KS"
				>
				<File
					RelativePath="..\..\src\ninjam\KS\audfilter.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\audpin.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\enum.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\filter.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\irptgt.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\node.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\pin.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\KS\util-ks.cpp"
					>
				</File>
			</Filter>
			<Filter
				Name="WDL"
				>
				<File
					RelativePath="..\..\src\WDL\rng.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\sha.cpp"
					>
				</File>
				<Filter
					Name="jnetlib"
					>
					<File
						RelativePath="..\..\src\WDL\jnetlib\asyncdns.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\connection.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpget.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpserv.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\listen.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\util.cpp"
						>
					</File>
				</Filter>
			</Filter>
			<Filter
				Name="ninjam"
				>
				<File
					RelativePath="..\..\src\ninjam\audiostream_ks.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\audiostream_njasiodrv.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\audiostream_win32.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\mpb.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\netmsg.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\njclient.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\njmisc.cpp"
					>
				</File>
			</Filter>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>


code:
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
	ProjectType="Visual C++"
	Version="9.00"
	Name="ninjamserver"
	ProjectGUID="{31AF1FF4-3446-47D9-9AE0-52E34C152027}"
	TargetFrameworkVersion="0"
	>
	<Platforms>
		<Platform
			Name="Win32"
		/>
	</Platforms>
	<ToolFiles>
	</ToolFiles>
	<Configurations>
		<Configuration
			Name="Debug|Win32"
			OutputDirectory=".\Debug"
			IntermediateDirectory=".\Debug"
			ConfigurationType="1"
			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="false"
			CharacterSet="2"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
				TypeLibraryName=".\Debug/ninjamserver.tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="0"
				AdditionalIncludeDirectories="../../src"
				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
				MinimalRebuild="true"
				BasicRuntimeChecks="3"
				RuntimeLibrary="1"
				PrecompiledHeaderFile=".\Debug/ninjamserver.pch"
				AssemblerListingLocation=".\Debug/"
				ObjectFile=".\Debug/"
				ProgramDataBaseFileName=".\Debug/"
				WarningLevel="3"
				SuppressStartupBanner="true"
				DebugInformationFormat="4"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="_DEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib"
				OutputFile=".\Debug/ninjamserver_dbg.exe"
				LinkIncremental="2"
				SuppressStartupBanner="true"
				GenerateDebugInformation="true"
				ProgramDatabaseFile=".\Debug/ninjamserver.pdb"
				SubSystem="1"
				RandomizedBaseAddress="1"
				DataExecutionPrevention="0"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
				SuppressStartupBanner="true"
				OutputFile=".\Debug/ninjamserver.bsc"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
				CommandLine="copy Debug\ninjamserver_dbg.exe ..\ninjamserver_dbg.exe"
			/>
		</Configuration>
		<Configuration
			Name="Release|Win32"
			OutputDirectory=".\Release"
			IntermediateDirectory=".\Release"
			ConfigurationType="1"
			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
			UseOfMFC="0"
			ATLMinimizesCRunTimeLibraryUsage="false"
			CharacterSet="2"
			>
			<Tool
				Name="VCPreBuildEventTool"
			/>
			<Tool
				Name="VCCustomBuildTool"
			/>
			<Tool
				Name="VCXMLDataGeneratorTool"
			/>
			<Tool
				Name="VCWebServiceProxyGeneratorTool"
			/>
			<Tool
				Name="VCMIDLTool"
				TypeLibraryName=".\Release/ninjamserver.tlb"
				HeaderFileName=""
			/>
			<Tool
				Name="VCCLCompilerTool"
				Optimization="2"
				InlineFunctionExpansion="1"
				AdditionalIncludeDirectories="../../src"
				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
				StringPooling="true"
				RuntimeLibrary="0"
				EnableFunctionLevelLinking="true"
				PrecompiledHeaderFile=".\Release/ninjamserver.pch"
				AssemblerListingLocation=".\Release/"
				ObjectFile=".\Release/"
				ProgramDataBaseFileName=".\Release/"
				WarningLevel="3"
				SuppressStartupBanner="true"
			/>
			<Tool
				Name="VCManagedResourceCompilerTool"
			/>
			<Tool
				Name="VCResourceCompilerTool"
				PreprocessorDefinitions="NDEBUG"
				Culture="1033"
			/>
			<Tool
				Name="VCPreLinkEventTool"
			/>
			<Tool
				Name="VCLinkerTool"
				AdditionalDependencies="odbc32.lib odbccp32.lib wsock32.lib"
				OutputFile=".\Release/ninjamserver.exe"
				LinkIncremental="1"
				SuppressStartupBanner="true"
				ProgramDatabaseFile=".\Release/ninjamserver.pdb"
				SubSystem="1"
				RandomizedBaseAddress="1"
				DataExecutionPrevention="0"
				TargetMachine="1"
			/>
			<Tool
				Name="VCALinkTool"
			/>
			<Tool
				Name="VCManifestTool"
			/>
			<Tool
				Name="VCXDCMakeTool"
			/>
			<Tool
				Name="VCBscMakeTool"
				SuppressStartupBanner="true"
				OutputFile=".\Release/ninjamserver.bsc"
			/>
			<Tool
				Name="VCFxCopTool"
			/>
			<Tool
				Name="VCAppVerifierTool"
			/>
			<Tool
				Name="VCPostBuildEventTool"
				CommandLine="copy Release\ninjamserver.exe ..\ninjamserver.exe"
			/>
		</Configuration>
	</Configurations>
	<References>
	</References>
	<Files>
		<Filter
			Name="Source Files"
			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
			>
			<Filter
				Name="server"
				>
				<File
					RelativePath="..\..\src\server\ninjamsrv.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\server\usercon.cpp"
					>
				</File>
			</Filter>
			<Filter
				Name="WDL"
				>
				<File
					RelativePath="..\..\src\WDL\rng.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\sha.cpp"
					>
				</File>
				<Filter
					Name="jnetlib"
					>
					<File
						RelativePath="..\..\src\WDL\jnetlib\asyncdns.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\connection.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpget.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpserv.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\listen.cpp"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\util.cpp"
						>
					</File>
				</Filter>
			</Filter>
			<Filter
				Name="ninjam"
				>
				<File
					RelativePath="..\..\src\ninjam\mpb.cpp"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\netmsg.cpp"
					>
				</File>
			</Filter>
		</Filter>
		<Filter
			Name="Header Files"
			Filter="h;hpp;hxx;hm;inl"
			>
			<Filter
				Name="ninjam"
				>
				<File
					RelativePath="..\..\src\ninjam\mpb.h"
					>
				</File>
				<File
					RelativePath="..\..\src\ninjam\netmsg.h"
					>
				</File>
			</Filter>
			<Filter
				Name="server"
				>
				<File
					RelativePath="..\..\src\server\usercon.h"
					>
				</File>
			</Filter>
			<Filter
				Name="WDL"
				>
				<File
					RelativePath="..\..\src\WDL\heapbuf.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\lineparse.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\ptrlist.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\queue.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\rng.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\sha.h"
					>
				</File>
				<File
					RelativePath="..\..\src\WDL\string.h"
					>
				</File>
				<Filter
					Name="jnetlib"
					>
					<File
						RelativePath="..\..\src\WDL\jnetlib\asyncdns.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\connection.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpget.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\httpserv.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\jnetlib.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\listen.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\netinc.h"
						>
					</File>
					<File
						RelativePath="..\..\src\WDL\jnetlib\util.h"
						>
					</File>
				</Filter>
			</Filter>
		</Filter>
	</Files>
	<Globals>
	</Globals>
</VisualStudioProject>


code:
for simplicity the MSVC project expects to find
    all of the required library headers in this directory

  * ogg           - (directory)
    * ogg.h       - from libogg
    * os_types.h  - from libogg
  * vorbis        - (directory)
    * codec.h     - from libvorbis
    * vorbisenc.h - from libvorbis
  * dsound.h      - from the DirectX SDK

the DirectX SDK is not strictly necessary unless you wish to support the DirectSound API
    but ogg and vorbis are currently strict requisites

the files noted above can be found at their official websites:
  libogg      -> https://www.xiph.org/downloads/
  libvorbis   -> https://www.xiph.org/downloads/
  DirectX SDK -> http://www.microsoft.com/en-us/download/details.aspx?id=6812


code:
for simplicity the MSVC project expects to find
    all of the required libraries in this directory

  * libogg_static.lib        - from libogg
  * libogg_static_dbg.lib    - from libogg             (debug build)
  * libvorbis_static.lib     - from libvorbis
  * libvorbis_static_dbg.lib - from libvorbis          (debug build)
  * dsound.lib               - from the DirectX SDK

the libninjam artifacts also will be copied to this directory upon successful build

  * libninjam_static.lib     - this is our output file
  * libninjam_static_dbg.lib - this is our output file (debug build)

the DirectX SDK is not strictly necessary unless you wish to support the DirectSound API
    but ogg and vorbis are currently strict requisites
the *_dbg.lib files obviously may be ommitted unless you need a debug build

the files noted above can be found at their official websites:
  libogg      -> https://www.xiph.org/downloads/
  libvorbis   -> https://www.xiph.org/downloads/
  DirectX SDK -> http://www.microsoft.com/en-us/download/details.aspx?id=6812


code:
prefix=@prefix@
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: ninjam-client
Description: Realtime Music Collaboration Software (client library)
Requires: ninjam
Version: @VERSION@
Libs: -L${libdir} -lninjam-client
Cflags: -I${includedir}/libninjam


code:
prefix=@prefix@
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: ninjam
Description: Realtime Music Collaboration Software
Requires:
Version: @VERSION@
Libs: -L${libdir} -lninjam-common
Cflags: -I${includedir}/libninjam


code:
ninjam-client for Debian
------------------------

<possible notes regarding this package - if none, delete this file>

 -- Tobias Gehrig <tobias@gehrignet.de>, Sat, 11 Nov 2006 02:35:01 +0100


code:
ninjam (0.06+svn121-0ubuntu0~quantal2) quantal; urgency=low

  * Quantal build

 -- falkTX <falktx@gmail.com>  Thu, 18 Oct 2012 03:34:50 +0100

ninjam (0.06+svn121-0ubuntu0~precise2) precise; urgency=low

  * Precise build

 -- falkTX <falktx@gmail.com>  Wed, 24 Aug 2011 17:26:06 +0100

ninjam (0.06+svn121-0ubuntu0~lucid1) lucid; urgency=low

  * Upload to KXStudio Team PPA

 -- falkTX <falktx@gmail.com>  Thu, 28 Apr 2011 15:37:00 +0100

ninjam (0.06+svn121-0~ppa4) lucid; urgency=low

  * Moved to Lucid Main

 -- falkTX <falktx@gmail.com>  Mon, 28 Jun 2010 16:25:34 +0100

ninjam (0.06+svn121-0~ppa3) lucid; urgency=low

  * fixed again

 -- falkTX <falktx@gmail.com>  Tue, 18 May 2010 21:52:40 +0100

ninjam (0.06+svn121-0~ppa2) lucid; urgency=low

  * fixed upload

 -- falkTX <falktx@gmail.com>  Tue, 18 May 2010 21:40:17 +0100

ninjam (0.06+svn121-0~ppa1) lucid; urgency=low

  * Upload to Lucid

 -- falkTX <falktx@gmail.com>  Tue, 18 May 2010 21:31:34 +0100

ninjam (0.06-1ubuntu9) hardy; urgency=low

  * add conditional to Makefile to predict correct compile flags for
    64bit CPUs

 -- Tobias Gehrig <tobias@gehrignet.de>  Tue, 15 Apr 2008 16:17:33 +0200

ninjam (0.06-1ubuntu8) gutsy; urgency=low

  * add per-user autosubscribe option

 -- Tobias Gehrig <tobias@gehrignet.de>  Sat, 16 Feb 2008 16:17:04 +0100

ninjam (0.06-1ubuntu7) gutsy; urgency=low

  * make create_audioStreamer_JACK return NULL, if the jack connection
    cannot be successfully established.

 -- Tobias Gehrig <tobias@gehrignet.de>  Mon, 11 Feb 2008 14:41:12 +0100

ninjam (0.06-1ubuntu6) gutsy; urgency=low

  * reopen server log file on SIGHUP so that logrotate can work properly
  * updated logrotate file to reload server after log rotation

 -- Tobias Gehrig <tobias@gehrignet.de>  Fri, 08 Feb 2008 04:24:37 +0100

ninjam (0.06-1ubuntu5) gutsy; urgency=low

  * fixed output of month in server log file

 -- Tobias Gehrig <tobias@gehrignet.de>  Fri, 08 Feb 2008 03:49:33 +0100

ninjam (0.06-1ubuntu4) gutsy; urgency=low

  * apply patch from jnc to get njclient.cpp to compile on amd64
  * fixed WDL/sha.cpp so authentication on ninjam server works correctly
    on amd64

 -- Tobias Gehrig <tobias@gehrignet.de>  Mon, 04 Feb 2008 23:33:41 +0100

ninjam (0.06-1ubuntu3) gutsy; urgency=low

  * add php script examples to retrieve the server status
  * add official server guide

 -- Tobias Gehrig <tobias@gehrignet.de>  Wed, 30 Jan 2008 18:32:58 +0100

ninjam (0.06-1ubuntu2) gutsy; urgency=low

  * fix build-depends

 -- Tobias Gehrig <tobias@gehrignet.de>  Tue, 29 Jan 2008 18:35:29 +0100

ninjam (0.06-1ubuntu1) gutsy; urgency=low

  * add init.d script, logrotate, default and config file

 -- Tobias Gehrig <tobias@gehrignet.de>  Mon, 21 Jan 2008 23:14:28 +0100

ninjam (0.06-1) gutsy; urgency=low

  * merged with new upstream version of server

 -- Tobias Gehrig <tobias@gehrignet.de>  Sun, 20 Jan 2008 01:33:36 +0100

ninjam (0.02-7ubuntu3) feisty; urgency=low

  * fix some Makefile errors and create pkgconfig automatically with
    correct PREFIX (patch by Adam Sampson) and VERSION

 -- Tobias Gehrig <tobias@gehrignet.de>  Thu, 11 Jan 2007 20:43:01 +0100

ninjam (0.02-7ubuntu2) feisty; urgency=low

  * add pkgconfig files for client libraries
  * set stereoout to true by default to fix a problem in cninjam
    (patch by Adam Sampson)
  * separate PREFIX and DESTDIR in makefiles
  * enable backspace key in curses client for non-MAC platforms
    (patch by Adam Sampson)

 -- Tobias Gehrig <tobias@gehrignet.de>  Thu, 11 Jan 2007 01:06:22 +0100

ninjam (0.02-7ubuntu1) feisty; urgency=low

  * update pkgconfig file to reflect current version

 -- Tobias Gehrig <tobias@gehrignet.de>  Wed, 10 Jan 2007 20:50:42 +0100

ninjam (0.02-7) unstable; urgency=low

  * fix compilation of cursesclient on system where libninjam has not
    yet been installed.

 -- Tobias Gehrig <tobias@gehrignet.de>  Thu, 23 Nov 2006 01:32:50 +0100

ninjam (0.02-6) unstable; urgency=low

  * added jack transport fix from robin
  * added patch for multiple outputs from expertsleepers
  * fix problem with possibly negative output channel number
  * make stereo channel output configurable
  * add interface for adding audio channels and getting the names
    from in- and output ports seperately

 -- Tobias Gehrig <tobias@gehrignet.de>  Wed, 22 Nov 2006 03:58:24 +0100

ninjam (0.02-5) unstable; urgency=low

  * make number of in-/output channels and client name of the
    jack driver variable

 -- Tobias Gehrig <tobias@gehrignet.de>  Sat, 18 Nov 2006 18:41:59 +0100

ninjam (0.02-4) unstable; urgency=low

  * reenabled alsa driver in addition to the jack driver
  * some more conversions from char* to const char*

 -- Tobias Gehrig <tobias@gehrignet.de>  Sat, 18 Nov 2006 03:47:07 +0100

ninjam (0.02-3) unstable; urgency=low

  * change filename parameter in WaveWriter to const char*

 -- Tobias Gehrig <tobias@gehrignet.de>  Fri, 17 Nov 2006 18:24:32 +0100

ninjam (0.02-2) unstable; urgency=low

  *  changed SetLocalChannelInfo to get const char* name as input
     instead of char* name

 -- Tobias Gehrig <tobias@gehrignet.de>  Fri, 17 Nov 2006 01:48:49 +0100

ninjam (0.02-1) unstable; urgency=low

  * Initial release of ninjam library
  * client and server build modified to use that library
  * patched version of cursesclient using jack
  * some parameters changed from char* to const char*

 -- Tobias Gehrig <tobias@gehrignet.de>  Mon, 15 Nov 2006 00:57:01 +0100

path: debian/changelog


code:
Source: ninjam
Section: web
Priority: optional
Maintainer: Tobias Gehrig <tobias@gehrignet.de>
Build-Depends: debhelper (>= 5), libvorbis-dev, libjack-dev, libasound2-dev, libncurses5-dev
Standards-Version: 3.7.2

Package: libninjam-common-dev
Section: devel
Architecture: any
Depends: libninjam-common (= ${Source-Version})
Description: Development files for libninjam-common
 NINJAM is a program to allow people to make real music together
 via the Internet. Every participant can hear every other participant.
 Each user can also tweak their personal mix to his or her liking.

Package: libninjam-common
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Realtime Music Collaboration Software (Common Library)
 NINJAM is a program to allow people to make real music together
 via the Internet. Every participant can hear every other participant.
 Each user can also tweak their personal mix to his or her liking.

Package: libninjam-client-dev
Section: devel
Architecture: any
Depends: libninjam-client (= ${Source-Version}), libninjam-common-dev (= ${Source-Version})
Description: Development files for libninjam-client
 NINJAM is a program to allow people to make real music together
 via the Internet. Every participant can hear every other participant.
 Each user can also tweak their personal mix to his or her liking.

Package: libninjam-client
Architecture: any
Depends: libninjam-common (= ${Source-Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Realtime Music Collaboration Software (Client Library)
 NINJAM is a program to allow people to make real music together
 via the Internet. Every participant can hear every other participant.
 Each user can also tweak their personal mix to his or her liking.

Package: ninjam-server
Architecture: any
Depends: libninjam-common (= ${Source-Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Realtime Music Collaboration Software (Server)
 NINJAM is a program to allow people to make real music together
 via the Internet. Every participant can hear every other participant.
 Each user can also tweak their personal mix to his or her liking.

Package: ninjam-client
Architecture: any
Depends: libninjam-client (= ${Source-Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Realtime Music Collaboration Software (Client)
 NINJAM is a program to allow people to make real music together
 via the Internet. Every participant can hear every other participant.
 Each user can also tweak their personal mix to his or her liking.

path: debian/control


code:
This package was debianized by Tobias Gehrig <tobias@gehrignet.de> on
Sat, 11 Nov 2006 02:35:01 +0100.

It was downloaded from <fill in http/ftp site>

Upstream Author: <put author(s) name and email here>

Copyright: <put the year(s) of the copyright, and the names of the
            copyright holder(s) here>

License:

   This package is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This package is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this package; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.

The Debian packaging is (C) 2006, Tobias Gehrig <tobias@gehrignet.de> and
is licensed under the GPL, see above.

# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.

path: debian/copyright


code:
usr/lib/libninjam-common.a
usr/lib/pkgconfig/ninjam.pc
usr/include/libninjam/WDL/*.h
usr/include/libninjam/WDL/jnetlib/*.h
usr/include/libninjam/ninjam/mpb.h
usr/include/libninjam/ninjam/netmsg.h


code: ninjam/cursesclient/COMPILING


code:
# only one port line allowed (last one will be used)
# these are comments
Port 2049

# limit connections of normal users to 10
MaxUsers 10

# limit normal users to 32 channels each, anonymous users to 2
MaxChannels 32 2

ServerLicense /usr/share/doc/ninjam-server/cclicense.txt

#anonymoususers yes or no, or multi (to allow multiple users of the same name from the same IP)
AnonymousUsers no
AnonymousUsersCanChat yes
AnonymousMaskIP yes  # shows just the nn.nn.nn.x instead of full IP.

AllowHiddenUsers no   # set to yes to allow people without channels to not appear in the user list

#ACL list lets you specify in order a list, first match is used
ACL 10.0.0.0/8 deny
ACL 192.168.0.0/16 reserve # reserve slots for local
ACL 0.0.0.0/0 allow        # allow all

#user/password/permissions sets
User administrator myadminpass *   # allow all functions
User booga anotherpass CBTKRM      # allow chat, bpm/bpi, topic changing, and kicking, a reserved slot, and multiple logins
User myuser mypass                 # allow default functions (chat, no topic)

# optional user/pass with simple status retrieving permissions (this also has the advantage of having the server do less work)
# StatusUserPass username password

DefaultTopic "Welcome to NINJAM. Please play nicely."
DefaultBPM 120
DefaultBPI 8

# two parameters: path to log to, and session length (in minutes). 0 for length means 30 seconds.
# if the first parameter (path) is empty, no logging is done
# SessionArchive . 15

# these two require a full restart to update:

# write PID file (non-windows version only)
# PIDFile /var/run/ninjam-server.pid

LogFile /var/log/ninjam/ninjam-server.log

# set keep-alive interval in seconds. should probably not bother
# specifying this, the default is 3, which is adequate.
# SetKeepAlive 3

# voting system:
# SetVotingThreshold 50       # sets threshold to 50%. can be 1-100%, or >100 to disable
# SetVotingVoteTimeout 60     # sets timeout before votes are reset, in seconds


code:
# To enable ninjam-server, set the following variable to "yes"
NINJAM_SERVER_ENABLED="no"

# Options to pass to ninjamsrv
NINJAM_SERVER_OPTS="-setuid nobody"


code:
etc
usr/bin
var/log/ninjam


code:
#! /bin/sh
#
# skeleton	example file to build /etc/init.d/ scripts.
#		This file should be used to construct scripts for /etc/init.d.
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian
#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version:	@(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/ninjamsrv
NAME=ninjam-server
DESC=ninjam-server
NINJAMCONF=/etc/ninjam-server.conf
PIDFILE=/var/run/$NAME.pid

test -x $DAEMON || exit 0

# Include ninjam-server defaults if available
if [ -f /etc/default/ninjam-server ] ; then
	. /etc/default/ninjam-server
fi

set -e

case "$1" in
  start)
	echo -n "Starting $DESC: "
	if [ x$NINJAM_SERVER_ENABLED = xno ]; then
	    echo "disabled. See /etc/default/ninjam-server"
	    exit 0
	fi
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
	    -b --exec $DAEMON -- $NINJAMCONF -pidfile $PIDFILE \
	    $NINJAM_SERVER_OPTS && echo "$NAME." || echo "failed."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
	    --exec $DAEMON && echo "$NAME." || echo "failed."
	;;
  reload)
	#
	#	If the daemon can reload its config files on the fly
	#	for example by sending it SIGHUP, do it here.
	#
	#	If the daemon responds to changes in its config file
	#	directly anyway, make this a do-nothing entry.
	#
	echo -n "Reloading $DESC configuration files:"
	start-stop-daemon --stop --signal 1 --quiet --pidfile \
	    $PIDFILE --exec $DAEMON && echo "$NAME." || echo "failed."
	;;
  restart|force-reload)
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart".
	#
	echo -n "Restarting $DESC: "
	$0 stop
	sleep 1
	$0 start
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	exit 1
	;;
esac

exit 0


code:
/var/log/ninjam/ninjam-server.log {
  rotate 6
  monthly
  compress
  delaycompress
  missingok
  notifempty
  sharedscripts
  postrotate
    if [ -f /var/run/ninjam-server.pid ]; then
      /etc/init.d/ninjam-server reload > /dev/null
    fi
  endscript
}


code:
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

configure: configure-stamp
configure-stamp:
	dh_testdir
	# Add here commands to configure the package.

	touch configure-stamp

build: build-stamp

build-stamp: configure-stamp
	dh_testdir

	# Add here commands to compile the package.
	$(MAKE)
	#docbook-to-man debian/ninjam-client.sgml > ninjam-client.1

	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp

	# Add here commands to clean up after the build process.
	-$(MAKE) clean

	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	# Add here commands to install the package into debian/ninjam-client.
	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdocs
	dh_installexamples
	dh_install --sourcedir=debian/tmp
	install debian/ninjam-server.conf debian/ninjam-server/etc/ninjam-server.conf
#	dh_installmenu
#	dh_installdebconf
	dh_installlogrotate
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
#	dh_python
	dh_installinit
#	dh_installcron
#	dh_installinfo
	dh_installman
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
#	dh_perl
#	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

path: debian/rules