From b55c571b2b975c056a042f6d650037d88bfdae2d Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Tue, 6 Jan 2009 20:10:16 +0100 Subject: [PATCH] ngIRCd Release 13, new website. --- bugtracker.php.de | 27 + bugtracker.php.en | 26 + common/bevel.gif | Bin 0 -> 321 bytes common/distributions.inc | 38 ++ common/download.inc | 14 + common/mirrors.inc | 8 + common/mootools.js | 496 ++++++++++++++++++ common/platforms.inc | 51 ++ common/slide.js | 21 + common/styles.css | 135 +++++ valid-html401.gif => common/valid-html401.gif | Bin doc/ChangeLog | 5 +- doc/FAQ.txt | 2 +- doc/NEWS | 4 +- doc/Platforms.txt | 25 +- doc/README-AUX.txt | 2 +- doc/README-BeOS.txt | 2 +- doc/RFC.txt | 2 +- doc/SSL.txt | 79 ++- doc/Services.txt | 70 +++ doc/Zeroconf.txt | 2 +- doc/sample-ngircd.conf | 9 +- documentation.php.de | 106 ++++ documentation.php.en | 102 ++++ download.php.de | 57 ++ download.php.en | 56 ++ includes/common.php | 60 +++ index.html.de | 381 -------------- index.html.en | 369 ------------- index.php.de | 87 +++ index.php.en | 84 +++ news.php.de | 34 ++ news.php.en | 32 ++ platforms.html | 2 +- style.css | 2 +- support.php.de | 70 +++ support.php.en | 68 +++ 37 files changed, 1724 insertions(+), 804 deletions(-) create mode 100644 bugtracker.php.de create mode 100644 bugtracker.php.en create mode 100644 common/bevel.gif create mode 100644 common/distributions.inc create mode 100644 common/download.inc create mode 100644 common/mirrors.inc create mode 100644 common/mootools.js create mode 100644 common/platforms.inc create mode 100644 common/slide.js create mode 100644 common/styles.css rename valid-html401.gif => common/valid-html401.gif (100%) create mode 100644 doc/Services.txt create mode 100644 documentation.php.de create mode 100644 documentation.php.en create mode 100644 download.php.de create mode 100644 download.php.en create mode 100644 includes/common.php delete mode 100644 index.html.de delete mode 100644 index.html.en create mode 100644 index.php.de create mode 100644 index.php.en create mode 100644 news.php.de create mode 100644 news.php.en create mode 100644 support.php.de create mode 100644 support.php.en diff --git a/bugtracker.php.de b/bugtracker.php.de new file mode 100644 index 0000000..9bd924b --- /dev/null +++ b/bugtracker.php.de @@ -0,0 +1,27 @@ + +

+ Bug-Tracker +

+

+ Damit wir den Überlick über im ngIRCd vorhandene Bugs und + Feature-Wünsche nicht verliere, ist ein Bug-Tracking-System + installiert: + Bugzilla +

+

+ Solltest du Fehler finden, so lege dort bitte einen + Bug-Report + an! Vielen Dank! +

+

+ Zudem kannst du dich dort auch über bekannte und vielleicht bereits + behobene Fehler + informieren. +

+ + diff --git a/bugtracker.php.en b/bugtracker.php.en new file mode 100644 index 0000000..7856bf0 --- /dev/null +++ b/bugtracker.php.en @@ -0,0 +1,26 @@ + +

+ Bug-Tracker +

+

+ We have installed a bug tracking system to avoid losing sight of + existing bugs and suggestions for features in ngIRCd: + Bugzilla +

+

+ If you find any mistakes, please create a + bug report + here! Thank you! +

+

+ Additionally, you can get + information + on known and maybe already corrected bugs. +

+ + diff --git a/common/bevel.gif b/common/bevel.gif new file mode 100644 index 0000000000000000000000000000000000000000..77b6477a018d190ce6ecf98a817c8596330ab35a GIT binary patch literal 321 zcmV-H0lxl6Nk%w1VaWh=0Pp}Y09920Y-}t50002V0CWHV0{@JUsmtvTqnxzbi?iOm z`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~s`ZM^YPa03 z_X`e-$K-YS={|^`_I7nD%c!-#&xX9S(_y`#(IZ0V* zd5M{+xydO4@Ch0!I!an`U)E>J4;(@dyAW^yUW|_`wJW_JWO0{e2ko| zyv*F}{0to}JxyJ0eT|*1z0KY2{S6*2K2Bb4evY25zRuq6{th26KTlt8e~+K9zt7+A z{|_*rz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajUXI5di)47q{xvZOPV~1GNsCu TEL*yK2{We5nKWzeDgXdG6$qg& literal 0 HcmV?d00001 diff --git a/common/distributions.inc b/common/distributions.inc new file mode 100644 index 0000000..230bbe6 --- /dev/null +++ b/common/distributions.inc @@ -0,0 +1,38 @@ + + diff --git a/common/download.inc b/common/download.inc new file mode 100644 index 0000000..2a100c3 --- /dev/null +++ b/common/download.inc @@ -0,0 +1,14 @@ +
+
+ ngIRCd Release 13 (2008-12-25): +
+
+

Server: ftp.berlios.de + (ftp): + ngircd-13.tar.gz +
Server: ngircd.barton.de + (ftp): + ngircd-13.tar.gz + +

+
diff --git a/common/mirrors.inc b/common/mirrors.inc new file mode 100644 index 0000000..eef87e6 --- /dev/null +++ b/common/mirrors.inc @@ -0,0 +1,8 @@ +

+ Mirrors: +

+ + diff --git a/common/mootools.js b/common/mootools.js new file mode 100644 index 0000000..55abf46 --- /dev/null +++ b/common/mootools.js @@ -0,0 +1,496 @@ +//MooTools, , My Object Oriented (JavaScript) Tools. Copyright (c) 2006-2008 Valerio Proietti, , MIT Style License. + +var MooTools={version:"1.2.0",build:""};var Native=function(J){J=J||{};var F=J.afterImplement||function(){};var G=J.generics;G=(G!==false);var H=J.legacy; +var E=J.initialize;var B=J.protect;var A=J.name;var C=E||H;C.constructor=Native;C.$family={name:"native"};if(H&&E){C.prototype=H.prototype;}C.prototype.constructor=C; +if(A){var D=A.toLowerCase();C.prototype.$family={name:D};Native.typize(C,D);}var I=function(M,K,N,L){if(!B||L||!M.prototype[K]){M.prototype[K]=N;}if(G){Native.genericize(M,K,B); +}F.call(M,K,N);return M;};C.implement=function(L,K,N){if(typeof L=="string"){return I(this,L,K,N);}for(var M in L){I(this,M,L[M],K);}return this;};C.alias=function(M,K,N){if(typeof M=="string"){M=this.prototype[M]; +if(M){I(this,K,M,N);}}else{for(var L in M){this.alias(L,M[L],K);}}return this;};return C;};Native.implement=function(D,C){for(var B=0,A=D.length;B-1:this.indexOf(A)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim(); +},camelCase:function(){return this.replace(/-\D/g,function(A){return A.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(A){return("-"+A.charAt(0).toLowerCase()); +});},capitalize:function(){return this.replace(/\b[a-z]/g,function(A){return A.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1"); +},toInt:function(A){return parseInt(this,A||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(B){var A=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); +return(A)?A.slice(1).hexToRgb(B):null;},rgbToHex:function(B){var A=this.match(/\d{1,3}/g);return(A)?A.rgbToHex(B):null;},stripScripts:function(B){var A=""; +var C=this.replace(/]*>([\s\S]*?)<\/script>/gi,function(){A+=arguments[1]+"\n";return"";});if(B===true){$exec(A);}else{if($type(B)=="function"){B(A,C); +}}return C;},substitute:function(A,B){return this.replace(B||(/\\?\{([^}]+)\}/g),function(D,C){if(D.charAt(0)=="\\"){return D.slice(1);}return(A[C]!=undefined)?A[C]:""; +});}});Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(B){for(var A in this){if(this.hasOwnProperty(A)&&this[A]===B){return A;}}return null; +},hasValue:function(A){return(Hash.keyOf(this,A)!==null);},extend:function(A){Hash.each(A,function(C,B){Hash.set(this,B,C);},this);return this;},combine:function(A){Hash.each(A,function(C,B){Hash.include(this,B,C); +},this);return this;},erase:function(A){if(this.hasOwnProperty(A)){delete this[A];}return this;},get:function(A){return(this.hasOwnProperty(A))?this[A]:null; +},set:function(A,B){if(!this[A]||this.hasOwnProperty(A)){this[A]=B;}return this;},empty:function(){Hash.each(this,function(B,A){delete this[A];},this); +return this;},include:function(B,C){var A=this[B];if(A==undefined){this[B]=C;}return this;},map:function(B,C){var A=new Hash;Hash.each(this,function(E,D){A.set(D,B.call(C,E,D,this)); +},this);return A;},filter:function(B,C){var A=new Hash;Hash.each(this,function(E,D){if(B.call(C,E,D,this)){A.set(D,E);}},this);return A;},every:function(B,C){for(var A in this){if(this.hasOwnProperty(A)&&!B.call(C,this[A],A)){return false; +}}return true;},some:function(B,C){for(var A in this){if(this.hasOwnProperty(A)&&B.call(C,this[A],A)){return true;}}return false;},getKeys:function(){var A=[]; +Hash.each(this,function(C,B){A.push(B);});return A;},getValues:function(){var A=[];Hash.each(this,function(B){A.push(B);});return A;},toQueryString:function(A){var B=[]; +Hash.each(this,function(F,E){if(A){E=A+"["+E+"]";}var D;switch($type(F)){case"object":D=Hash.toQueryString(F,E);break;case"array":var C={};F.each(function(H,G){C[G]=H; +});D=Hash.toQueryString(C,E);break;default:D=E+"="+encodeURIComponent(F);}if(F!=undefined){B.push(D);}});return B.join("&");}});Hash.alias({keyOf:"indexOf",hasValue:"contains"}); +var Event=new Native({name:"Event",initialize:function(A,F){F=F||window;var K=F.document;A=A||F.event;if(A.$extended){return A;}this.$extended=true;var J=A.type; +var G=A.target||A.srcElement;while(G&&G.nodeType==3){G=G.parentNode;}if(J.test(/key/)){var B=A.which||A.keyCode;var M=Event.Keys.keyOf(B);if(J=="keydown"){var D=B-111; +if(D>0&&D<13){M="f"+D;}}M=M||String.fromCharCode(B).toLowerCase();}else{if(J.match(/(click|mouse|menu)/i)){K=(!K.compatMode||K.compatMode=="CSS1Compat")?K.html:K.body; +var I={x:A.pageX||A.clientX+K.scrollLeft,y:A.pageY||A.clientY+K.scrollTop};var C={x:(A.pageX)?A.pageX-F.pageXOffset:A.clientX,y:(A.pageY)?A.pageY-F.pageYOffset:A.clientY}; +if(J.match(/DOMMouseScroll|mousewheel/)){var H=(A.wheelDelta)?A.wheelDelta/120:-(A.detail||0)/3;}var E=(A.which==3)||(A.button==2);var L=null;if(J.match(/over|out/)){switch(J){case"mouseover":L=A.relatedTarget||A.fromElement; +break;case"mouseout":L=A.relatedTarget||A.toElement;}if(!(function(){while(L&&L.nodeType==3){L=L.parentNode;}return true;}).create({attempt:Browser.Engine.gecko})()){L=false; +}}}}return $extend(this,{event:A,type:J,page:I,client:C,rightClick:E,wheel:H,relatedTarget:L,target:G,code:B,key:M,shift:A.shiftKey,control:A.ctrlKey,alt:A.altKey,meta:A.metaKey}); +}});Event.Keys=new Hash({enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46});Event.implement({stop:function(){return this.stopPropagation().preventDefault(); +},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault(); +}else{this.event.returnValue=false;}return this;}});var Class=new Native({name:"Class",initialize:function(B){B=B||{};var A=function(E){for(var D in this){this[D]=$unlink(this[D]); +}for(var F in Class.Mutators){if(!this[F]){continue;}Class.Mutators[F](this,this[F]);delete this[F];}this.constructor=A;if(E===$empty){return this;}var C=(this.initialize)?this.initialize.apply(this,arguments):this; +if(this.options&&this.options.initialize){this.options.initialize.call(this);}return C;};$extend(A,this);A.constructor=Class;A.prototype=B;return A;}}); +Class.implement({implement:function(){Class.Mutators.Implements(this.prototype,Array.slice(arguments));return this;}});Class.Mutators={Implements:function(A,B){$splat(B).each(function(C){$extend(A,($type(C)=="class")?new C($empty):C); +});},Extends:function(self,klass){var instance=new klass($empty);delete instance.parent;delete instance.parentOf;for(var key in instance){var current=self[key],previous=instance[key]; +if(current==undefined){self[key]=previous;continue;}var ctype=$type(current),ptype=$type(previous);if(ctype!=ptype){continue;}switch(ctype){case"function":if(!arguments.callee.caller){self[key]=eval("("+String(current).replace(/\bthis\.parent\(\s*(\))?/g,function(full,close){return"arguments.callee._parent_.call(this"+(close||", "); +})+")");}self[key]._parent_=previous;break;case"object":self[key]=$merge(previous,current);}}self.parent=function(){return arguments.callee.caller._parent_.apply(this,arguments); +};self.parentOf=function(descendant){return descendant._parent_.apply(this,Array.slice(arguments,1));};}};var Chain=new Class({chain:function(){this.$chain=(this.$chain||[]).extend(arguments); +return this;},callChain:function(){return(this.$chain&&this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){if(this.$chain){this.$chain.empty(); +}return this;}});var Events=new Class({addEvent:function(C,B,A){C=Events.removeOn(C);if(B!=$empty){this.$events=this.$events||{};this.$events[C]=this.$events[C]||[]; +this.$events[C].include(B);if(A){B.internal=true;}}return this;},addEvents:function(A){for(var B in A){this.addEvent(B,A[B]);}return this;},fireEvent:function(C,B,A){C=Events.removeOn(C); +if(!this.$events||!this.$events[C]){return this;}this.$events[C].each(function(D){D.create({bind:this,delay:A,"arguments":B})();},this);return this;},removeEvent:function(B,A){B=Events.removeOn(B); +if(!this.$events||!this.$events[B]){return this;}if(!A.internal){this.$events[B].erase(A);}return this;},removeEvents:function(C){for(var D in this.$events){if(C&&C!=D){continue; +}var B=this.$events[D];for(var A=B.length;A--;A){this.removeEvent(D,B[A]);}}return this;}});Events.removeOn=function(A){return A.replace(/^on([A-Z])/,function(B,C){return C.toLowerCase(); +});};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent){return this;}for(var A in this.options){if($type(this.options[A])!="function"||!(/^on[A-Z]/).test(A)){continue; +}this.addEvent(A,this.options[A]);delete this.options[A];}return this;}});Document.implement({newElement:function(A,B){if(Browser.Engine.trident&&B){["name","type","checked"].each(function(C){if(!B[C]){return ; +}A+=" "+C+'="'+B[C]+'"';if(C!="checked"){delete B[C];}});A="<"+A+">";}return $.element(this.createElement(A)).set(B);},newTextNode:function(A){return this.createTextNode(A); +},getDocument:function(){return this;},getWindow:function(){return this.defaultView||this.parentWindow;},purge:function(){var C=this.getElementsByTagName("*"); +for(var B=0,A=C.length;B1);A.each(function(E){var F=this.getElementsByTagName(E.trim());(B)?C.extend(F):C=F;},this);return new Elements(C,{ddup:B,cash:!D}); +}});Element.Storage={get:function(A){return(this[A]||(this[A]={}));}};Element.Inserters=new Hash({before:function(B,A){if(A.parentNode){A.parentNode.insertBefore(B,A); +}},after:function(B,A){if(!A.parentNode){return ;}var C=A.nextSibling;(C)?A.parentNode.insertBefore(B,C):A.parentNode.appendChild(B);},bottom:function(B,A){A.appendChild(B); +},top:function(B,A){var C=A.firstChild;(C)?A.insertBefore(B,C):A.appendChild(B);}});Element.Inserters.inside=Element.Inserters.bottom;Element.Inserters.each(function(C,B){var A=B.capitalize(); +Element.implement("inject"+A,function(D){C(this,$(D,true));return this;});Element.implement("grab"+A,function(D){C($(D,true),this);return this;});});Element.implement({getDocument:function(){return this.ownerDocument; +},getWindow:function(){return this.ownerDocument.getWindow();},getElementById:function(D,C){var B=this.ownerDocument.getElementById(D);if(!B){return null; +}for(var A=B.parentNode;A!=this;A=A.parentNode){if(!A){return null;}}return $.element(B,C);},set:function(D,B){switch($type(D)){case"object":for(var C in D){this.set(C,D[C]); +}break;case"string":var A=Element.Properties.get(D);(A&&A.set)?A.set.apply(this,Array.slice(arguments,1)):this.setProperty(D,B);}return this;},get:function(B){var A=Element.Properties.get(B); +return(A&&A.get)?A.get.apply(this,Array.slice(arguments,1)):this.getProperty(B);},erase:function(B){var A=Element.Properties.get(B);(A&&A.erase)?A.erase.apply(this,Array.slice(arguments,1)):this.removeProperty(B); +return this;},match:function(A){return(!A||Element.get(this,"tag")==A);},inject:function(B,A){Element.Inserters.get(A||"bottom")(this,$(B,true));return this; +},wraps:function(B,A){B=$(B,true);return this.replaces(B).grab(B,A);},grab:function(B,A){Element.Inserters.get(A||"bottom")($(B,true),this);return this; +},appendText:function(B,A){return this.grab(this.getDocument().newTextNode(B),A);},adopt:function(){Array.flatten(arguments).each(function(A){A=$(A,true); +if(A){this.appendChild(A);}},this);return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;},clone:function(D,C){switch($type(this)){case"element":var H={}; +for(var G=0,E=this.attributes.length;G1),cash:!G});}});Element.implement({match:function(B){if(!B){return true;}var D=Selectors.Utils.parseTagAndID(B); +var A=D[0],E=D[1];if(!Selectors.Filters.byID(this,E)||!Selectors.Filters.byTag(this,A)){return false;}var C=Selectors.Utils.parseSelector(B);return(C)?Selectors.Utils.filter(this,C,{}):true; +}});var Selectors={Cache:{nth:{},parsed:{}}};Selectors.RegExps={id:(/#([\w-]+)/),tag:(/^(\w+|\*)/),quick:(/^(\w+|\*)$/),splitter:(/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),combined:(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)}; +Selectors.Utils={chk:function(B,C){if(!C){return true;}var A=$uid(B);if(!C[A]){return C[A]=true;}return false;},parseNthArgument:function(F){if(Selectors.Cache.nth[F]){return Selectors.Cache.nth[F]; +}var C=F.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!C){return false;}var E=parseInt(C[1]);var B=(E||E===0)?E:1;var D=C[2]||false;var A=parseInt(C[3])||0; +if(B!=0){A--;while(A<1){A+=B;}while(A>=B){A-=B;}}else{B=A;D="index";}switch(D){case"n":C={a:B,b:A,special:"n"};break;case"odd":C={a:2,b:0,special:"n"}; +break;case"even":C={a:2,b:1,special:"n"};break;case"first":C={a:0,special:"index"};break;case"last":C={special:"last-child"};break;case"only":C={special:"only-child"}; +break;default:C={a:(B-1),special:"index"};}return Selectors.Cache.nth[F]=C;},parseSelector:function(E){if(Selectors.Cache.parsed[E]){return Selectors.Cache.parsed[E]; +}var D,H={classes:[],pseudos:[],attributes:[]};while((D=Selectors.RegExps.combined.exec(E))){var I=D[1],G=D[2],F=D[3],B=D[4],C=D[5],J=D[6];if(I){H.classes.push(I); +}else{if(C){var A=Selectors.Pseudo.get(C);if(A){H.pseudos.push({parser:A,argument:J});}else{H.attributes.push({name:C,operator:"=",value:J});}}else{if(G){H.attributes.push({name:G,operator:F,value:B}); +}}}}if(!H.classes.length){delete H.classes;}if(!H.attributes.length){delete H.attributes;}if(!H.pseudos.length){delete H.pseudos;}if(!H.classes&&!H.attributes&&!H.pseudos){H=null; +}return Selectors.Cache.parsed[E]=H;},parseTagAndID:function(B){var A=B.match(Selectors.RegExps.tag);var C=B.match(Selectors.RegExps.id);return[(A)?A[1]:"*",(C)?C[1]:false]; +},filter:function(F,C,E){var D;if(C.classes){for(D=C.classes.length;D--;D){var G=C.classes[D];if(!Selectors.Filters.byClass(F,G)){return false;}}}if(C.attributes){for(D=C.attributes.length; +D--;D){var B=C.attributes[D];if(!Selectors.Filters.byAttribute(F,B.name,B.operator,B.value)){return false;}}}if(C.pseudos){for(D=C.pseudos.length;D--;D){var A=C.pseudos[D]; +if(!Selectors.Filters.byPseudo(F,A.parser,A.argument,E)){return false;}}}return true;},getByTagAndID:function(B,A,D){if(D){var C=(B.getElementById)?B.getElementById(D,true):Element.getElementById(B,D,true); +return(C&&Selectors.Filters.byTag(C,A))?[C]:[];}else{return B.getElementsByTagName(A);}},search:function(J,I,O){var B=[];var C=I.trim().replace(Selectors.RegExps.splitter,function(Z,Y,X){B.push(Y); +return":)"+X;}).split(":)");var K,F,E,V;for(var U=0,Q=C.length;U":function(H,G,I,A,F){var C=Selectors.Utils.getByTagAndID(G,I,A);for(var E=0,D=C.length;EA){return false; +}}return(C==A);},even:function(B,A){return Selectors.Pseudo["nth-child"].call(this,"2n+1",A);},odd:function(B,A){return Selectors.Pseudo["nth-child"].call(this,"2n",A); +}});Element.Events.domready={onAdd:function(A){if(Browser.loaded){A.call(this);}}};(function(){var B=function(){if(Browser.loaded){return ;}Browser.loaded=true; +window.fireEvent("domready");document.fireEvent("domready");};switch(Browser.Engine.name){case"webkit":(function(){(["loaded","complete"].contains(document.readyState))?B():arguments.callee.delay(50); +})();break;case"trident":var A=document.createElement("div");(function(){($try(function(){A.doScroll("left");return $(A).inject(document.body).set("html","temp").dispose(); +}))?B():arguments.callee.delay(50);})();break;default:window.addEvent("load",B);document.addEvent("DOMContentLoaded",B);}})();var JSON=new Hash({encode:function(B){switch($type(B)){case"string":return'"'+B.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"'; +case"array":return"["+String(B.map(JSON.encode).filter($defined))+"]";case"object":case"hash":var A=[];Hash.each(B,function(E,D){var C=JSON.encode(E);if(C){A.push(JSON.encode(D)+":"+C); +}});return"{"+A+"}";case"number":case"boolean":return String(B);case false:return"null";}return null;},$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(A){return JSON.$specialChars[A]||"\\u00"+Math.floor(A.charCodeAt()/16).toString(16)+(A.charCodeAt()%16).toString(16); +},decode:function(string,secure){if($type(string)!="string"||!string.length){return null;}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null; +}return eval("("+string+")");}});Native.implement([Hash,Array,String,Number],{toJSON:function(){return JSON.encode(this);}});var Cookie=new Class({Implements:Options,options:{path:false,domain:false,duration:false,secure:false,document:document},initialize:function(B,A){this.key=B; +this.setOptions(A);},write:function(B){B=encodeURIComponent(B);if(this.options.domain){B+="; domain="+this.options.domain;}if(this.options.path){B+="; path="+this.options.path; +}if(this.options.duration){var A=new Date();A.setTime(A.getTime()+this.options.duration*24*60*60*1000);B+="; expires="+A.toGMTString();}if(this.options.secure){B+="; secure"; +}this.options.document.cookie=this.key+"="+B;return this;},read:function(){var A=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)"); +return(A)?decodeURIComponent(A[1]):null;},dispose:function(){new Cookie(this.key,$merge(this.options,{duration:-1})).write("");return this;}});Cookie.write=function(B,C,A){return new Cookie(B,A).write(C); +};Cookie.read=function(A){return new Cookie(A).read();};Cookie.dispose=function(B,A){return new Cookie(B,A).dispose();};var Swiff=new Class({Implements:[Options],options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"transparent",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object; +},initialize:function(L,M){this.instance="Swiff_"+$time();this.setOptions(M);M=this.options;var B=this.id=M.id||this.instance;var A=$(M.container);Swiff.CallBacks[this.instance]={}; +var E=M.params,G=M.vars,F=M.callBacks;var H=$extend({height:M.height,width:M.width},M.properties);var K=this;for(var D in F){Swiff.CallBacks[this.instance][D]=(function(N){return function(){return N.apply(K.object,arguments); +};})(F[D]);G[D]="Swiff.CallBacks."+this.instance+"."+D;}E.flashVars=Hash.toQueryString(G);if(Browser.Engine.trident){H.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; +E.movie=L;}else{H.type="application/x-shockwave-flash";H.data=L;}var J=''; +}}J+="";this.object=((A)?A.empty():new Element("div")).set("html",J).firstChild;},replaces:function(A){A=$(A,true);A.parentNode.replaceChild(this.toElement(),A); +return this;},inject:function(A){$(A,true).appendChild(this.toElement());return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments)); +}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction(''+__flash__argumentsToXML(arguments,2)+""); +return eval(rs);};var Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore",transition:function(A){return -(Math.cos(Math.PI*A)-1)/2; +}},initialize:function(A){this.subject=this.subject||this;this.setOptions(A);this.options.duration=Fx.Durations[this.options.duration]||this.options.duration.toInt(); +var B=this.options.wait;if(B===false){this.options.link="cancel";}},step:function(){var A=$time();if(A=(7-4*B)/11){C=-Math.pow((11-6*B-11*D)/4,2)+A*A; +break;}}return C;},Elastic:function(B,A){return Math.pow(2,10*--B)*Math.cos(20*B*Math.PI*(A[0]||1)/3);}});["Quad","Cubic","Quart","Quint"].each(function(B,A){Fx.Transitions[B]=new Fx.Transition(function(C){return Math.pow(C,[A+2]); +});});var Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false},initialize:function(A){this.xhr=new Browser.Request(); +this.setOptions(A);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers=new Hash(this.options.headers);},onStateChange:function(){if(this.xhr.readyState!=4||!this.running){return ; +}this.running=false;this.status=0;$try(function(){this.status=this.xhr.status;}.bind(this));if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:this.xhr.responseXML}; +this.success(this.response.text,this.response.xml);}else{this.response={text:null,xml:null};this.failure();}this.xhr.onreadystatechange=$empty;},isSuccess:function(){return((this.status>=200)&&(this.status<300)); +},processScripts:function(A){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return $exec(A);}return A.stripScripts(this.options.evalScripts); +},success:function(B,A){this.onSuccess(this.processScripts(B),A);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain(); +},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},setHeader:function(A,B){this.headers.set(A,B); +return this;},getHeader:function(A){return $try(function(){return this.xhr.getResponseHeader(A);}.bind(this));},check:function(A){if(!this.running){return true; +}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(A.bind(this,Array.slice(arguments,1)));return false;}return false; +},send:function(I){if(!this.check(arguments.callee,I)){return this;}this.running=true;var G=$type(I);if(G=="string"||G=="element"){I={data:I};}var D=this.options; +I=$extend({data:D.data,url:D.url,method:D.method},I);var E=I.data,B=I.url,A=I.method;switch($type(E)){case"element":E=$(E).toQueryString();break;case"object":case"hash":E=Hash.toQueryString(E); +}if(this.options.format){var H="format="+this.options.format;E=(E)?H+"&"+E:H;}if(this.options.emulation&&["put","delete"].contains(A)){var F="_method="+A; +E=(E)?F+"&"+E:F;A="post";}if(this.options.urlEncoded&&A=="post"){var C=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers.set("Content-type","application/x-www-form-urlencoded"+C); +}if(E&&A=="get"){B=B+(B.contains("?")?"&":"?")+E;E=null;}this.xhr.open(A.toUpperCase(),B,this.options.async);this.xhr.onreadystatechange=this.onStateChange.bind(this); +this.headers.each(function(K,J){if(!$try(function(){this.xhr.setRequestHeader(J,K);return true;}.bind(this))){this.fireEvent("exception",[J,K]);}},this); +this.fireEvent("request");this.xhr.send(E);if(!this.options.async){this.onStateChange();}return this;},cancel:function(){if(!this.running){return this; +}this.running=false;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});(function(){var A={}; +["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(B){A[B]=function(){var C=Array.link(arguments,{url:String.type,data:$defined}); +return this.send($extend(C,{method:B.toLowerCase()}));};});Request.implement(A);})();Element.Properties.send={set:function(A){var B=this.retrieve("send"); +if(B){B.cancel();}return this.eliminate("send").store("send:options",$extend({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")},A)); +},get:function(A){if(A||!this.retrieve("send")){if(A||!this.retrieve("send:options")){this.set("send",A);}this.store("send",new Request(this.retrieve("send:options"))); +}return this.retrieve("send");}};Element.implement({send:function(A){var B=this.get("send");B.send({data:this,url:A||B.options.url});return this;}});Request.HTML=new Class({Extends:Request,options:{update:false,evalScripts:true,filter:false},processHTML:function(C){var B=C.match(/]*>([\s\S]*?)<\/body>/i); +C=(B)?B[1]:C;var A=new Element("div");return $try(function(){var D=""+C+"",G;if(Browser.Engine.trident){G=new ActiveXObject("Microsoft.XMLDOM"); +G.async=false;G.loadXML(D);}else{G=new DOMParser().parseFromString(D,"text/xml");}D=G.getElementsByTagName("root")[0];for(var F=0,E=D.childNodes.length; +F. Copyright (c) 2006-2008 Valerio Proietti, , MIT Style License. + +Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical"},initialize:function(B,A){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0); +if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper);}},true);this.element=this.subject=$(B);this.parent(A);var C=this.element.retrieve("wrapper"); +this.wrapper=C||new Element("div",{styles:$extend(this.element.getStyles("margin","position"),{overflow:"hidden"})}).wraps(this.element);this.element.store("wrapper",this.wrapper).setStyle("margin",0); +this.now=[];this.open=true;},vertical:function(){this.margin="margin-top";this.layout="height";this.offset=this.element.offsetHeight;},horizontal:function(){this.margin="margin-left"; +this.layout="width";this.offset=this.element.offsetWidth;},set:function(A){this.element.setStyle(this.margin,A[0]);this.wrapper.setStyle(this.layout,A[1]); +return this;},compute:function(E,D,C){var B=[];var A=2;A.times(function(F){B[F]=Fx.compute(E[F],D[F],C);});return B;},start:function(B,E){if(!this.check(arguments.callee,B,E)){return this; +}this[E||this.options.mode]();var D=this.element.getStyle(this.margin).toInt();var C=this.wrapper.getStyle(this.layout).toInt();var A=[[D,C],[0,this.offset]]; +var G=[[D,C],[-this.offset,0]];var F;switch(B){case"in":F=A;break;case"out":F=G;break;case"toggle":F=(this.wrapper["offset"+this.layout.capitalize()]==0)?A:G; +}return this.parent(F[0],F[1]);},slideIn:function(A){return this.start("in",A);},slideOut:function(A){return this.start("out",A);},hide:function(A){this[A||this.options.mode](); +this.open=false;return this.set([-this.offset,0]);},show:function(A){this[A||this.options.mode]();this.open=true;return this.set([0,this.offset]);},toggle:function(A){return this.start("toggle",A); +}});Element.Properties.slide={set:function(B){var A=this.retrieve("slide");if(A){A.cancel();}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},B)); +},get:function(A){if(A||!this.retrieve("slide")){if(A||!this.retrieve("slide:options")){this.set("slide",A);}this.store("slide",new Fx.Slide(this,this.retrieve("slide:options"))); +}return this.retrieve("slide");}};Element.implement({slide:function(D,E){D=D||"toggle";var B=this.get("slide"),A;switch(D){case"hide":B.hide(E);break;case"show":B.show(E); +break;case"toggle":var C=this.retrieve("slide:flag",B.open);B[(C)?"slideOut":"slideIn"](E);this.store("slide:flag",!C);A=true;break;default:B.start(D,E); +}if(!A){this.eliminate("slide:flag");}return this;}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(B,A){this.element=this.subject=$(B); +this.parent(A);var D=this.cancel.bind(this,false);if($type(this.element)!="element"){this.element=$(this.element.getDocument().body);}var C=this.element; +if(this.options.wheelStops){this.addEvent("start",function(){C.addEvent("mousewheel",D);},true);this.addEvent("complete",function(){C.removeEvent("mousewheel",D); +},true);}},set:function(){var A=Array.flatten(arguments);this.element.scrollTo(A[0],A[1]);},compute:function(E,D,C){var B=[];var A=2;A.times(function(F){B.push(Fx.compute(E[F],D[F],C)); +});return B;},start:function(C,H){if(!this.check(arguments.callee,C,H)){return this;}var E=this.element.getSize(),F=this.element.getScrollSize();var B=this.element.getScroll(),D={x:C,y:H}; +for(var G in D){var A=F[G]-E[G];if($chk(D[G])){D[G]=($type(D[G])=="number")?D[G].limit(0,A):A;}else{D[G]=B[G];}D[G]+=this.options.offset[G];}return this.parent([B.x,B.y],[D.x,D.y]); +},toTop:function(){return this.start(false,0);},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start("right",false);},toBottom:function(){return this.start(false,"bottom"); +},toElement:function(B){var A=$(B).getPosition(this.element);return this.start(A.x,A.y);}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(B,A){this.elements=this.subject=$$(B); +this.parent(A);},compute:function(G,H,I){var C={};for(var D in G){var A=G[D],E=H[D],F=C[D]={};for(var B in A){F[B]=this.parent(A[B],E[B],I);}}return C; +},set:function(B){for(var C in B){var A=B[C];for(var D in A){this.render(this.elements[C],D,A[D],this.options.unit);}}return this;},start:function(C){if(!this.check(arguments.callee,C)){return this; +}var H={},I={};for(var D in C){var F=C[D],A=H[D]={},G=I[D]={};for(var B in F){var E=this.prepare(this.elements[D],B,F[B]);A[B]=E.from;G[B]=E.to;}}return this.parent(H,I); +}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,modifiers:{x:"left",y:"top"}},initialize:function(){var B=Array.link(arguments,{options:Object.type,element:$defined}); +this.element=$(B.element);this.document=this.element.getDocument();this.setOptions(B.options||{});var A=$type(this.options.handle);this.handles=(A=="array"||A=="collection")?$$(this.options.handle):$(this.options.handle)||this.element; +this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)}; +this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start); +return this;},start:function(C){if(this.options.preventDefault){C.preventDefault();}this.fireEvent("beforeStart",this.element);this.mouse.start=C.page; +var A=this.options.limit;this.limit={x:[],y:[]};for(var D in this.options.modifiers){if(!this.options.modifiers[D]){continue;}if(this.options.style){this.value.now[D]=this.element.getStyle(this.options.modifiers[D]).toInt(); +}else{this.value.now[D]=this.element[this.options.modifiers[D]];}if(this.options.invert){this.value.now[D]*=-1;}this.mouse.pos[D]=C.page[D]-this.value.now[D]; +if(A&&A[D]){for(var B=2;B--;B){if($chk(A[D][B])){this.limit[D][B]=$lambda(A[D][B])();}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid}; +}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop);},check:function(A){if(this.options.preventDefault){A.preventDefault(); +}var B=Math.round(Math.sqrt(Math.pow(A.page.x-this.mouse.start.x,2)+Math.pow(A.page.y-this.mouse.start.y,2)));if(B>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop}); +this.fireEvent("start",this.element).fireEvent("snap",this.element);}},drag:function(A){if(this.options.preventDefault){A.preventDefault();}this.mouse.now=A.page; +for(var B in this.options.modifiers){if(!this.options.modifiers[B]){continue;}this.value.now[B]=this.mouse.now[B]-this.mouse.pos[B];if(this.options.invert){this.value.now[B]*=-1; +}if(this.options.limit&&this.limit[B]){if($chk(this.limit[B][1])&&(this.value.now[B]>this.limit[B][1])){this.value.now[B]=this.limit[B][1];}else{if($chk(this.limit[B][0])&&(this.value.now[B]B.left&&A.xB.top);},checkDroppables:function(){var A=this.droppables.filter(this.checkAgainst,this).getLast(); +if(this.overed!=A){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);}if(A){this.overed=A;this.fireEvent("enter",[this.element,A]);}else{this.overed=null; +}}},drag:function(A){this.parent(A);if(this.droppables.length){this.checkDroppables();}},stop:function(A){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed]); +this.overed=null;return this.parent(A);}});Element.implement({makeDraggable:function(A){return new Drag.Move(this,A);}});Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(B,A){this.parent(B,A); +this.load();},save:function(){var A=JSON.encode(this.hash);if(!A||A.length>4096){return false;}if(A=="{}"){this.dispose();}else{this.write(A);}return true; +},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this;}});Hash.Cookie.implement((function(){var A={};Hash.each(Hash.prototype,function(C,B){A[B]=function(){var D=C.apply(this.hash,arguments); +if(this.options.autoSave){this.save();}return D;};});return A;})());var Color=new Native({initialize:function(B,C){if(arguments.length>=3){C="rgb";B=Array.slice(arguments,0,3); +}else{if(typeof B=="string"){if(B.match(/rgb/)){B=B.rgbToHex().hexToRgb(true);}else{if(B.match(/hsb/)){B=B.hsbToRgb();}else{B=B.hexToRgb(true);}}}}C=C||"rgb"; +switch(C){case"hsb":var A=B;B=B.hsbToRgb();B.hsb=A;break;case"hex":B=B.hexToRgb(true);break;}B.rgb=B.slice(0,3);B.hsb=B.hsb||B.rgbToHsb();B.hex=B.rgbToHex(); +return $extend(B,this);}});Color.implement({mix:function(){var A=Array.slice(arguments);var C=($type(A.getLast())=="number")?A.pop():50;var B=this.slice(); +A.each(function(D){D=new Color(D);for(var E=0;E<3;E++){B[E]=Math.round((B[E]/100*(100-C))+(D[E]/100*C));}});return new Color(B,"rgb");},invert:function(){return new Color(this.map(function(A){return 255-A; +}));},setHue:function(A){return new Color([A,this.hsb[1],this.hsb[2]],"hsb");},setSaturation:function(A){return new Color([this.hsb[0],A,this.hsb[2]],"hsb"); +},setBrightness:function(A){return new Color([this.hsb[0],this.hsb[1],A],"hsb");}});function $RGB(C,B,A){return new Color([C,B,A],"rgb");}function $HSB(C,B,A){return new Color([C,B,A],"hsb"); +}function $HEX(A){return new Color(A,"hex");}Array.implement({rgbToHsb:function(){var B=this[0],C=this[1],J=this[2];var G,F,H;var I=Math.max(B,C,J),E=Math.min(B,C,J); +var K=I-E;H=I/255;F=(I!=0)?K/I:0;if(F==0){G=0;}else{var D=(I-B)/K;var A=(I-C)/K;var L=(I-J)/K;if(B==I){G=L-A;}else{if(C==I){G=2+D-L;}else{G=4+A-D;}}G/=6; +if(G<0){G++;}}return[Math.round(G*360),Math.round(F*100),Math.round(H*100)];},hsbToRgb:function(){var C=Math.round(this[2]/100*255);if(this[1]==0){return[C,C,C]; +}else{var A=this[0]%360;var E=A%60;var F=Math.round((this[2]*(100-this[1]))/10000*255);var D=Math.round((this[2]*(6000-this[1]*E))/600000*255);var B=Math.round((this[2]*(6000-this[1]*(60-E)))/600000*255); +switch(Math.floor(A/60)){case 0:return[C,B,F];case 1:return[D,C,F];case 2:return[F,C,B];case 3:return[F,D,C];case 4:return[B,F,C];case 5:return[C,F,D]; +}}return false;}});String.implement({rgbToHsb:function(){var A=this.match(/\d{1,3}/g);return(A)?hsb.rgbToHsb():null;},hsbToRgb:function(){var A=this.match(/\d{1,3}/g); +return(A)?A.hsbToRgb():null;}});var Group=new Class({initialize:function(){this.instances=Array.flatten(arguments);this.events={};this.checker={};},addEvent:function(B,A){this.checker[B]=this.checker[B]||{}; +this.events[B]=this.events[B]||[];if(this.events[B].contains(A)){return false;}else{this.events[B].push(A);}this.instances.each(function(C,D){C.addEvent(B,this.check.bind(this,[B,C,D])); +},this);return this;},check:function(C,A,B){this.checker[C][B]=true;var D=this.instances.every(function(F,E){return this.checker[C][E]||false;},this);if(!D){return ; +}this.checker[C]={};this.events[C].each(function(E){E.call(this,this.instances,A);},this);}});var Asset=new Hash({javascript:function(F,D){D=$extend({onload:$empty,document:document,check:$lambda(true)},D); +var B=new Element("script",{src:F,type:"text/javascript"});var E=D.onload.bind(B),A=D.check,G=D.document;delete D.onload;delete D.check;delete D.document; +B.addEvents({load:E,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){E();}}}).setProperties(D);if(Browser.Engine.webkit419){var C=(function(){if(!$try(A)){return ; +}$clear(C);E();}).periodical(50);}return B.inject(G.head);},css:function(B,A){return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:B},A)).inject(document.head); +},image:function(C,B){B=$merge({onload:$empty,onabort:$empty,onerror:$empty},B);var D=new Image();var A=$(D)||new Element("img");["load","abort","error"].each(function(E){var F="on"+E; +var G=B[F];delete B[F];D[F]=function(){if(!D){return ;}if(!A.parentNode){A.width=D.width;A.height=D.height;}D=D.onload=D.onabort=D.onerror=null;G.delay(1,A,A); +A.fireEvent(E,A,1);};});D.src=A.src=C;if(D&&D.complete){D.onload.delay(1);}return A.setProperties(B);},images:function(D,C){C=$merge({onComplete:$empty,onProgress:$empty},C); +if(!D.push){D=[D];}var A=[];var B=0;D.each(function(F){var E=new Asset.image(F,{onload:function(){C.onProgress.call(this,B,D.indexOf(F));B++;if(B==D.length){C.onComplete(); +}}});A.push(E);});return new Elements(A);}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false},initialize:function(A,B){this.setOptions(B); +this.elements=[];this.lists=[];this.idle=true;this.addLists($$($(A)||A));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,$merge({duration:250,link:"cancel"},this.options.revert)); +}},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(A){this.elements.push(A); +var B=A.retrieve("sortables:start",this.start.bindWithEvent(this,A));(this.options.handle?A.getElement(this.options.handle)||A:A).addEvent("mousedown",B); +},this);return this;},addLists:function(){Array.flatten(arguments).each(function(A){this.lists.push(A);this.addItems(A.getChildren());},this);return this; +},removeItems:function(){var A=[];Array.flatten(arguments).each(function(B){A.push(B);this.elements.erase(B);var C=B.retrieve("sortables:start");(this.options.handle?B.getElement(this.options.handle)||B:B).removeEvent("mousedown",C); +},this);return $$(A);},removeLists:function(){var A=[];Array.flatten(arguments).each(function(B){A.push(B);this.lists.erase(B);this.removeItems(B.getChildren()); +},this);return $$(A);},getClone:function(B,A){if(!this.options.clone){return new Element("div").inject(document.body);}if($type(this.options.clone)=="function"){return this.options.clone.call(this,B,A,this.list); +}return A.clone(true).setStyles({margin:"0px",position:"absolute",visibility:"hidden",width:A.getStyle("width")}).inject(this.list).position(A.getPosition(A.getOffsetParent())); +},getDroppables:function(){var A=this.list.getChildren();if(!this.options.constrain){A=this.lists.concat(A).erase(this.list);}return A.erase(this.clone).erase(this.element); +},insert:function(C,B){var A="inside";if(this.lists.contains(B)){this.list=B;this.drag.droppables=this.getDroppables();}else{A=this.element.getAllPrevious().contains(B)?"before":"after"; +}this.element.inject(B,A);this.fireEvent("sort",[this.element,this.clone]);},start:function(B,A){if(!this.idle){return ;}this.idle=false;this.element=A; +this.opacity=A.get("opacity");this.list=A.getParent();this.clone=this.getClone(B,A);this.drag=new Drag.Move(this.clone,{snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){B.stop(); +this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)}); +this.clone.inject(this.element,"before");this.drag.start(B);},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var A=this.element.getStyles("width","height"); +var B=this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));this.effect.element=this.clone;this.effect.start({top:B.top,left:B.left,width:A.width,height:A.height,opacity:0.25}).chain(this.reset.bind(this)); +}else{this.reset();}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent("complete",this.element);},serialize:function(){var C=Array.link(arguments,{modifier:Function.type,index:$defined}); +var B=this.lists.map(function(D){return D.getChildren().map(C.modifier||function(E){return E.get("id");},this);},this);var A=C.index;if(this.lists.length==1){A=0; +}return $chk(A)&&A>=0&&AB[F]){G=D.page[F]-this.options.offsets[F]-E[F];}this.tip.setStyle(C[F],G); +}},fill:function(A,B){(typeof B=="string")?A.set("html",B):A.adopt(B);},show:function(){this.fireEvent("show",this.tip);},hide:function(){this.fireEvent("hide",this.tip); +}});var SmoothScroll=new Class({Extends:Fx.Scroll,initialize:function(B,C){C=C||document;var E=C.getDocument(),D=C.getWindow();this.parent(E,B);this.links=(this.options.links)?$$(this.options.links):$$(E.links); +var A=D.location.href.match(/^[^#]*/)[0]+"#";this.links.each(function(G){if(G.href.indexOf(A)!=0){return ;}var F=G.href.substr(A.length);if(F&&$(F)){this.useLink(G,F); +}},this);if(!Browser.Engine.webkit419){this.addEvent("complete",function(){D.location.hash=this.anchor;},true);}},useLink:function(B,A){B.addEvent("click",function(C){this.anchor=A; +this.toElement(A);C.stop();}.bind(this));}});var Slider=new Class({Implements:[Events,Options],options:{onTick:function(A){if(this.options.snap){A=this.toPosition(this.step); +}this.knob.setStyle(this.property,A);},snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(E,A,D){this.setOptions(D); +this.element=$(E);this.knob=$(A);this.previousChange=this.previousEnd=this.step=-1;this.element.addEvent("mousedown",this.clickedElement.bind(this));if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement.bindWithEvent(this)); +}var F,B={},C={x:false,y:false};switch(this.options.mode){case"vertical":this.axis="y";this.property="top";F="offsetHeight";break;case"horizontal":this.axis="x"; +this.property="left";F="offsetWidth";}this.half=this.knob[F]/2;this.full=this.element[F]-this.knob[F]+(this.options.offset*2);this.min=$chk(this.options.range[0])?this.options.range[0]:0; +this.max=$chk(this.options.range[1])?this.options.range[1]:this.options.steps;this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps; +this.stepWidth=this.stepSize*this.full/Math.abs(this.range);this.knob.setStyle("position","relative").setStyle(this.property,-this.options.offset);C[this.axis]=this.property; +B[this.axis]=[-this.options.offset,this.full-this.options.offset];this.drag=new Drag(this.knob,{snap:0,limit:B,modifiers:C,onDrag:this.draggedKnob.bind(this),onStart:this.draggedKnob.bind(this),onComplete:function(){this.draggedKnob(); +this.end();}.bind(this)});if(this.options.snap){this.drag.options.grid=Math.ceil(this.stepWidth);this.drag.options.limit[this.axis][1]=this.full;}},set:function(A){if(!((this.range>0)^(A0)^(A>this.max))){A=this.max;}this.step=Math.round(A);this.checkStep();this.end();this.fireEvent("tick",this.toPosition(this.step));return this; +},clickedElement:function(C){var B=this.range<0?-1:1;var A=C.page[this.axis]-this.element.getPosition()[this.axis]-this.half;A=A.limit(-this.options.offset,this.full-this.options.offset); +this.step=Math.round(this.min+B*this.toStep(A));this.checkStep();this.end();this.fireEvent("tick",A);},scrolledElement:function(A){var B=(this.options.mode=="horizontal")?(A.wheel<0):(A.wheel>0); +this.set(B?this.step-this.stepSize:this.step+this.stepSize);A.stop();},draggedKnob:function(){var B=this.range<0?-1:1;var A=this.drag.value.now[this.axis]; +A=A.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+B*this.toStep(A));this.checkStep();},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step; +this.fireEvent("change",this.step);}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent("complete",this.step+""); +}},toStep:function(A){var B=(A+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(B-=B%this.stepSize):B;},toPosition:function(A){return(this.full*Math.abs(this.min-A))/(this.steps*this.stepSize)-this.options.offset; +}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(A,B){this.element.scrollTo(A,B);}},initialize:function(B,A){this.setOptions(A); +this.element=$(B);this.listener=($type(this.element)!="element")?$(this.element.getDocument().body):this.element;this.timer=null;this.coord=this.getCoords.bind(this); +},start:function(){this.listener.addEvent("mousemove",this.coord);},stop:function(){this.listener.removeEvent("mousemove",this.coord);this.timer=$clear(this.timer); +},getCoords:function(A){this.page=(this.listener.get("tag")=="body")?A.client:A.page;if(!this.timer){this.timer=this.scroll.periodical(50,this);}},scroll:function(){var B=this.element.getSize(),A=this.element.getScroll(),E=this.element.getPosition(),D={x:0,y:0}; +for(var C in this.page){if(this.page[C]<(this.options.area+E[C])&&A[C]!=0){D[C]=(this.page[C]-this.options.area-E[C])*this.options.velocity;}else{if(this.page[C]+this.options.area>(B[C]+E[C])&&B[C]+B[C]!=A[C]){D[C]=(this.page[C]-B[C]+this.options.area-E[C])*this.options.velocity; +}}}if(D.y||D.x){this.fireEvent("change",[A.x+D.x,A.y+D.y]);}}});var Accordion=new Class({Extends:Fx.Elements,options:{display:0,show:false,height:true,width:false,opacity:true,fixedHeight:false,fixedWidth:false,wait:false,alwaysHide:false},initialize:function(){var C=Array.link(arguments,{container:Element.type,options:Object.type,togglers:$defined,elements:$defined}); +this.parent(C.elements,C.options);this.togglers=$$(C.togglers);this.container=$(C.container);this.previous=-1;if(this.options.alwaysHide){this.options.wait=true; +}if($chk(this.options.show)){this.options.display=false;this.previous=this.options.show;}if(this.options.start){this.options.display=false;this.options.show=false; +}this.effects={};if(this.options.opacity){this.effects.opacity="fullOpacity";}if(this.options.width){this.effects.width=this.options.fixedWidth?"fullWidth":"offsetWidth"; +}if(this.options.height){this.effects.height=this.options.fixedHeight?"fullHeight":"scrollHeight";}for(var B=0,A=this.togglers.length;B0));this.fireEvent(C?"background":"active",[this.togglers[D],E]); +for(var F in this.effects){B[D][F]=C?0:E[this.effects[F]];}},this);return this.start(B);}}); diff --git a/common/platforms.inc b/common/platforms.inc new file mode 100644 index 0000000..931c0a4 --- /dev/null +++ b/common/platforms.inc @@ -0,0 +1,51 @@ +
    +
  • + AIX + (3.2.5, IBM XL C Compiler) +
  • +
  • + A/UX + (3.x, original Apple C Compiler oder GNU C) +
  • +
  • + FreeBSD + (4.5/i386, GNU C) +
  • +
  • + HP-UX + (10.20, GNU C) +
  • +
  • + HP-UX + (9.10/m68k, HP-UX cc) +
  • +
  • + IRIX + (6.5, SGI MIPSpro C 7.30) +
  • +
  • + Linux + (2.2.x/i386, 2.4.x/i386 und 2.4.x/hppa, GNU C) +
  • +
  • + Mac OS X + (10.x, GNU C 2.95.x/3.x/4.01) +
  • +
  • + NetBSD + (1.5.2/i386 und 1.5.3/m68k, GNU C) +
  • +
  • + OpenBSD + (3.4/i386) +
  • +
  • + Solaris + (2.5.1 und 2.6, GNU C) +
  • +
  • + Windows mit Cygwin + (GNU C) +
  • +
+ diff --git a/common/slide.js b/common/slide.js new file mode 100644 index 0000000..5896f93 --- /dev/null +++ b/common/slide.js @@ -0,0 +1,21 @@ +window.addEvent('domready', function() { + var status = { + 'true': 'open', + 'false': 'close' + }; + + //-vertical + + var myVerticalSlide = new Fx.Slide('vertical_slide').hide(); + + $('v_toggle').addEvent('click', function(e){ + e.stop(); + myVerticalSlide.toggle(); + }); + + // When Vertical Slide ends its transition, we check for its status + // note that complete will not affect 'hide' and 'show' methods + myVerticalSlide.addEvent('complete', function() { + $('vertical_status').set('html', status[myVerticalSlide.open]); + }); +}); diff --git a/common/styles.css b/common/styles.css new file mode 100644 index 0000000..9dd0891 --- /dev/null +++ b/common/styles.css @@ -0,0 +1,135 @@ +html { + overflow-y: scroll; +} +body { + background-color: rgb(0,95,95); + font-family: "Trebuchet MS", sans-serif; +} + +/* @group General */ + +div#bodyBox { + min-width: 25em; + max-width: 55em; + margin: 3em auto; + border: 1px solid gray; + background-color: white; +} + +/* @end */ + +/* @group Header */ + +div#sloganhead { + text-align: center; +} +div#sloganhead p { + margin: 0.2em 0 1em 0; + color: rgb(150,150,150); +} + +h1.titel { + font-size: 1.8em; + color: rgb(150,150,150); + margin-bottom:0; +} + +h1.titel span { + color: #005555; +} + +/* @end */ + +/* @group Navigation */ + +ul.nav { + margin: 0 auto; + padding: 0; + width: 51em; + text-indent: 0; +} + +ul.nav li { + margin: 0; + padding: 0; + text-indent: 0; + background-image: url(bevel.gif); + background-repeat: repeat-x; + background-position: center; + width: 8em; + text-align: center; + list-style-type: none; + border: 1px solid #005555; + margin: 0.1em 0.1em; + float:left; +} + +ul.nav li a { + font-family: sans-serif; + color: rgb(230,230,230); + display: block; + padding: 0.1em; + text-decoration: none; +} + +ul.nav li a:link { +} + +ul.nav li a:visited { +} + +ul.nav li a:hover { + color: white; +} + +/* @end */ + +/* @group Content */ + +h2,h3,h4 { + margin: 1.5em 0 0.2em 0; +} + +div#content { + margin: 0.2em 3em; +} + +a { + text-decoration: underline; + color: #005555; +} + +div#vertical_slide { + border: 1px solid gray; + padding: 1em; +} +div#preview samp { + font-family: Monaco,"Courier New", Courier, mono; + font-size: 0.9em; + color: rgb(65,65,65); + white-space: pre; +} + +.btw { + border: 1px dotted silver; + padding: 1px 2px; +} + +.security { + border: 1px solid silver; + padding: 1px 2px; + background-color: #fee; +} + +/* @end */ + +/* @group Footer */ + +p#footer { + font-size: xx-small; + text-align: center; + margin-top: 5em; +} + +/* @end */ + diff --git a/valid-html401.gif b/common/valid-html401.gif similarity index 100% rename from valid-html401.gif rename to common/valid-html401.gif diff --git a/doc/ChangeLog b/doc/ChangeLog index 4abfca5..8d730bf 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -10,7 +10,10 @@ -- ChangeLog -- -ngIRCd Release 13 +ngIRCd Release 13 (2008-12-25) + + - Updated documentation, especially doc/Services.txt and doc/SSL.txt. + - Make the test suite work on OpenSolaris. ngIRCd 13~rc1 (2008-11-21): - New version numer scheme :-) diff --git a/doc/FAQ.txt b/doc/FAQ.txt index 4d2a89e..bf3628c 100644 --- a/doc/FAQ.txt +++ b/doc/FAQ.txt @@ -87,4 +87,4 @@ A: Please file a bug report at ! -- -$Id$ +$Id: FAQ.txt,v 1.12 2008/01/02 22:47:58 alex Exp $ diff --git a/doc/NEWS b/doc/NEWS index 54a1cf5..92a6b35 100644 --- a/doc/NEWS +++ b/doc/NEWS @@ -10,7 +10,7 @@ -- NEWS -- -ngIRCd Release 13 +ngIRCd Release 13 (2008-12-25) ngIRCd 13~rc1 (2008-11-21): - New version numer scheme :-) @@ -298,4 +298,4 @@ ngIRCd 0.0.1, 31.12.2001 -- -$Id$ +$Id: NEWS,v 1.88 2008/02/26 22:05:42 fw Exp $ diff --git a/doc/Platforms.txt b/doc/Platforms.txt index cd4ba7c..a77cc88 100644 --- a/doc/Platforms.txt +++ b/doc/Platforms.txt @@ -29,28 +29,27 @@ Platform Compiler ngIRCd Date Tester C M T R See alpha/unknown/netbsd3.0 gcc 3.3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3) hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y hppa1.1/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y -hppa2.0/unknown/linux-gnu gcc 3.3.5 0.9.x-CVS 05-06-27 alex Y Y Y Y -i386/apple/darwin9.4.0 gcc 4.0.1 0.12.1 08-07-21 alex Y Y Y Y (3) +hppa2.0/unknown/linux-gnu gcc 3.3.5 13~rc1 08-12-02 alex Y Y Y Y +i386/apple/darwin9.5.1 gcc 4.0.1 13~rc1 08-12-02 alex Y Y Y Y (3) i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y -i386/pc/solaris2.11 gcc 3.4.3 CVSHEAD 06-08-04 alex Y Y Y Y -i386/pc/solaris2.11 gcc 3.4.3 0.12.1 08-07-21 alex Y Y Y Y (4) +i386/pc/solaris2.11 gcc 3.4.3 13~rc1 08-12-03 alex Y Y Y Y (4) i386/unknown/freebsd5.2.1 gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y i386/unknown/freebsd6.0 gcc 3.4.4 0.10.0-p1 06-08-04 alex Y Y Y Y (3) i386/unknown/freebsd6.1 gcc 3.4.4 CVSHEAD 06-05-07 fw Y Y Y Y (3) -i386/unknown/freebsd7.0 gcc 4.2.1 0.12.1 08-07-21 alex Y Y Y Y (3) +i386/unknown/freebsd6.2 gcc 3.4.6 13~rc1 08-12-04 alex Y Y Y Y (3) +i386/unknown/freebsd7.0 gcc 4.2.1 13~rc1 08-12-04 alex Y Y Y Y (3) i386/unknown/gnu0.3 gcc 3.3.3 0.8.0 04-05-30 alex Y Y n Y -i686/unknown/gnu0.3 gcc 4.3.1 0.12.1 08-08-10 alex Y Y Y Y +i686/unknown/gnu0.3 gcc 4.3.1 13~rc1 08-12-05 alex Y Y Y Y i386/unknown/netbsdelf1.6.1 gcc 2.95.3 CVSHEAD 04-02-24 alex Y Y Y Y i386/unknown/netbsdelf3.0.1 gcc 3.3.3 0.10.0-p1 06-08-30 alex Y Y Y Y (3) -i386/unknown/netbsdelf4.0 gcc 4.1.2 0.12.1 08-07-21 alex Y Y Y Y (3) +i386/unknown/netbsdelf4.0 gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y (3) i386/unknown/openbsd3.9 gcc 3.3.5 0.10.0-p1 06-08-30 alex Y Y Y Y (3) -i386/unknown/openbsd4.1 gcc 3.3.5 0.12.1 08-07-21 alex Y Y n Y (3) -i386/unknown/openbsd4.1 gcc 3.3.5 master 08-07-21 alex Y Y Y Y (3) +i386/unknown/openbsd4.1 gcc 3.3.5 13~rc1 08-12-05 alex Y Y Y Y (3) i686/pc/cygwin gcc 3.3.1 0.8.0 04-05-30 alex Y Y n Y i686/pc/linux-gnu gcc 2.95.4 0.8.0 04-05-30 alex Y Y Y Y (1) -i686/pc/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y (1) -i386/pc/linux-gnu gcc 4.1.2 0.10.0-p1 06-08-30 alex Y Y Y Y (1) -i386/pc/linux-gnu gcc 4.3.1 0.12.1 08-07-21 alex Y Y Y Y (1) +i686/pc/linux-gnu gcc 3.3.5 13~rc1 08-12-05 alex Y Y Y Y (1) +i386/pc/linux-gnu gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y (1) +i386/pc/linux-gnu gcc 4.3.2 13~rc1 08-12-05 alex Y Y Y Y (1) m68k/apple/aux3.1.1 Orig. A/UX 0.7.x-CVS 03-04-22 alex Y Y Y Y (2) m68k/hp/hp-ux9.10 Orig. HPUX 0.7.x-CVS 03-04-30 goetz Y Y Y Y m88k/dg/dgux5.4R3.10 gcc 2.5.8 CVSHEAD 04-03-15 alex Y Y ? ? @@ -63,6 +62,7 @@ powerpc/unknown/openbsd3.6 gcc 2.95.3 0.10.0 06-10-08 alex Y Y n Y sparc/sun/solaris2.6 gcc 2.95.3 0.7.x-CVS 03-04-22 alex Y Y Y Y sparc/sun/solaris2.7 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y sparc/unkn./netbsdelf1.6.1 gcc 2.95.3 0.8.0 04-05-30 alex Y Y Y Y +x86_64/unknown/linux-gnu 4.3.2 13~rc1 08-12-05 alex Y Y Y Y (5) Notes @@ -83,3 +83,4 @@ Notes (4) Using the /dev/poll IO interface. +(5) Using the epoll() IO interface. diff --git a/doc/README-AUX.txt b/doc/README-AUX.txt index 250c0d1..68eea21 100644 --- a/doc/README-AUX.txt +++ b/doc/README-AUX.txt @@ -64,4 +64,4 @@ A few hints in case of errors: even if you don't use ngIRCd. -- -$Id$ +$Id: README-AUX.txt,v 1.10 2006/07/23 12:19:57 alex Exp $ diff --git a/doc/README-BeOS.txt b/doc/README-BeOS.txt index 6658572..ea3816d 100644 --- a/doc/README-BeOS.txt +++ b/doc/README-BeOS.txt @@ -50,4 +50,4 @@ mir in Verbindung setzen (alex@barton.de), ich maile gerne meine Patches zu. Fuer eine Aenderung im CVS ist es aber meiner Meinung nach noch zu frueh ... -- -$Id$ +$Id: README-BeOS.txt,v 1.7 2003/05/15 21:47:57 alex Exp $ diff --git a/doc/RFC.txt b/doc/RFC.txt index 410d7dc..3e4142f 100644 --- a/doc/RFC.txt +++ b/doc/RFC.txt @@ -30,4 +30,4 @@ Comments (RFC), which you can get e.g. via : -- -$Id$ +$Id: RFC.txt,v 1.6 2003/03/07 20:42:20 alex Exp $ diff --git a/doc/SSL.txt b/doc/SSL.txt index 9725af9..6b590b8 100644 --- a/doc/SSL.txt +++ b/doc/SSL.txt @@ -1,7 +1,7 @@ ngIRCd - Next Generation IRC Server - (c)2001-2004 by Alexander Barton, + (c)2001-2008 Alexander Barton, alex@barton.de, http://www.barton.de/ ngIRCd is free software and published under the @@ -10,39 +10,70 @@ -- SSL.txt -- -ngIRCd supports SSL/TLSv1 encrypted connections using the -OpenSSL or gnutls library. -Both encryped server <-> client and server <-> server links should work. +ngIRCd supports SSL/TLSv1 encrypted connections using the OpenSSL or GnuTLS +libraries. Both encrypted server-server links as well as client-server links +are supported. -BEWARE! The Code is mostly untested, use at your own risk! +SSL is a compile-time option which is disabled by default. Use one of these +options of the ./configure script to enable it: -Example that creates a self-signed certificate and key (using OpenSSL): -openssl req -newkey rsa:2048 -x509 -keyout server-key.pem \ - -out server-cert.pem -days 1461 + --with-openssl enable SSL support using OpenSSL + --with-gnutls enable SSL support using GnuTLS -Example that creates DH parameters (optional): -openssl dhparam -2 -out dhparams.pem 2048 +You need a SSL certificate, see below for how to create a self-signed one. -Example that creates a self-signed certificate -and key (using gnutls): -certtool --generate-privkey --bits 2048 --outfile server-key.pem -certtool --generate-self-signed --load-privkey server-key.pem \ - --outfile server-cert.pem +Configuration +~~~~~~~~~~~~~ -Example that creates DH parameters (optional): -certtool --generate-dh-params --bits 2048 --outfile dhparams.pem +To enable SSL connections a separate port must be configured: it is NOT +possible to handle unencrypted and encrypted connections on the same port! +This is a limitation of the IRC protocol ... -Alternatively, you may use external programs/tools like stunnel to -make it work: +You have to set (at least) the following configuration variables in the +[GLOBAL] section of ngircd.conf(5): SSLPorts, SSLKeyFile, and SSLCertFile. + +Now IRC clients are able to connect using SSL on the configured port(s). +(Using port 6697 for encrypted connections is common.) + +To enable encrypted server-server links, you have to additionally set +SSLConnect to "yes" in the corresponding [SERVER] section. + + +Creating a self-signed certificate +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +OpenSSL: + +Creating a self-signed certificate and key: + $ openssl req -newkey rsa:2048 -x509 -keyout server-key.pem \ + -out server-cert.pem -days 1461 +Create DH parameters (optional): + $ openssl dhparam -2 -out dhparams.pem 2048 + +GnuTLS: + +Creating a self-signed certificate and key: + $ certtool --generate-privkey --bits 2048 --outfile server-key.pem + $ certtool --generate-self-signed --load-privkey server-key.pem \ + --outfile server-cert.pem +Create DH parameters (optional): + $ certtool --generate-dh-params --bits 2048 --outfile dhparams.pem + + +Alternate approach using stunnel(1) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Alternatively (or if you are using ngIRCd without compiled without support +for GnuTLS/OpenSSL), you can use external programs/tools like stunnel(1) to +get SSL encrypted connections: -Stefan Sperling (stefan at binarchy dot net) mailed me the following text as a +Stefan Sperling (stefan at binarchy dot net) mailed the following text as a short "how-to", thanks Stefan! - === snip === ! This guide applies to stunnel 4.x ! @@ -71,9 +102,3 @@ short "how-to", thanks Stefan! That's it. Don't forget to activate ssl support in your irc client ;) === snip === - - - - --- -$Id$ diff --git a/doc/Services.txt b/doc/Services.txt new file mode 100644 index 0000000..67053b1 --- /dev/null +++ b/doc/Services.txt @@ -0,0 +1,70 @@ + + ngIRCd - Next Generation IRC Server + + (c)2001-2008 Alexander Barton, + alex@barton.de, http://www.barton.de/ + + ngIRCd is free software and published under the + terms of the GNU General Public License. + + -- Services.txt -- + + +At the moment, ngIRCd doesn't implement a "special IRC services interface". +But services acting as a "regular server" are supported, either using the IRC +protocol defined in RFC 1459 or RFC 2812. + +Services have been tested using "IRC Services" version 5.x by Andrew Church, +homepage: . This document describes setting up +ngIRCd and these services. + + +Setting up ngIRCd +~~~~~~~~~~~~~~~~~ + +The "pseudo server" handling the IRC services is configured as a regular +remote server in the ngircd.conf(5). In addition the variable "ServiceMask" +should be set, enabling this ngIRCd to recognize the "pseudo users" as IRC +services instead of regular IRC users. + +Example: + + [SERVER] + Name = services.irc.net + MyPassword = 123abc + PeerPassword = 123abc + ServiceMask = *Serv + + +Setting up IRC Services 5.1.x +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +IRC Services 5.1.3 and above can be used with ngIRCd using the "rfc1459" +protocol module. + +Please note that versions up to and including 5.1.3 contain a bug that +sometimes causes IRC Services to hang on startup. There are two workarounds: + a) send the services process a HUP signal ("killall -HUP ircservices") + b) apply this patch to the IRC Services source tree: + + +At least the following settings have to be tweaked, in addition to all the +settings marked as required by IRC Services: + +In ircservices.conf: + + Variable Example value + + RemoteServer server.irc.net 6667 "123abc" + ServerName "services.irc.net" + LoadModule protocol/rfc1459 + +In modules.conf: + + Module protocol/rfc1459 + +The documentation of IRC Services can be found here: + + +Please let us know if you are successfully using other IRC service packages or +which problems you encounter, thanks! diff --git a/doc/Zeroconf.txt b/doc/Zeroconf.txt index 7170738..04a3232 100644 --- a/doc/Zeroconf.txt +++ b/doc/Zeroconf.txt @@ -37,4 +37,4 @@ Links: -- -$Id$ +$Id: Zeroconf.txt,v 1.2 2006/08/03 14:37:29 alex Exp $ diff --git a/doc/sample-ngircd.conf b/doc/sample-ngircd.conf index 75c4f15..041542e 100644 --- a/doc/sample-ngircd.conf +++ b/doc/sample-ngircd.conf @@ -1,14 +1,13 @@ -# $Id$ - # -# This is a sample configuration file for the ngIRCd, which must be adepted -# to the local preferences and needs. +# This is a sample configuration file for the ngIRCd IRC daemon, which must +# be customized to the local preferences and needs. # # Comments are started with "#" or ";". # # A lot of configuration options in this file start with a ";". You have # to remove the ";" in front of each variable to actually set a value! -# The disabled variables are shown with example values for completeness. +# The disabled variables are shown with example values for completeness only +# and the daemon is using compiled-in default settings. # # Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the # server interprets the configuration file as expected! diff --git a/documentation.php.de b/documentation.php.de new file mode 100644 index 0000000..9851c31 --- /dev/null +++ b/documentation.php.de @@ -0,0 +1,106 @@ + +

+ Dokumentation +

+

+ Unterstützte Plattformen +

+

+ Auf den folgenden Plattformen wird der ngIRCd regelmäßig getestet + (in Klammern die jeweils benutzen Versionen), sie sind die + offiziell unterstützten Systeme: +

+ +

+ Da sich der ngIRCd an übliche UNIX-Standards hält und GNU automake + sowie GNU autoconf verwendet, stehen die Chancen nicht schlecht, + daß er sich auf weiteren UNIXoiden Systemen übersetzen bzw. relativ + einfach anpassen läßt. +

+

+ Installation +

+

+ ngIRCd ist für UNIXoide Systeme konzipiert, die Installation sollte + auf einem modernen UNIX-ähnlichen System, das von GNU automake und + GNU autoconf („configure“) unterstützt wird, keine besonderen + Schwierigkeiten bereiten. +

+

+ Der Standardfall sieht so aus: +

+

+ tar xzf ngircd-<version>.tar.gz
+ cd ngircd-<version>
+ ./configure
+ make +

+

+ Nun sollte sich in src/ngircd der ausführbare Server + (in der Regel ngircd) befinden. +

+

+ make install +

+

+ Der ausführbare Server wurde nun in /usr/local/sbin + installiert. +

+

+ Vom Server wird die Konfigurationsdatei ngircd.conf in + /usr/local/etc erwartet; eine Beispiel-Konfigurationsdatei + ist im Verzeichnis doc zu finden. +

+

+ Weitere Hinweise zur Installation und Konfiguration finden sich in + der Datei INSTALL. +

+

+ Dokumentation +

+

+ Ein wenig Dokumentation ist im Quellpaket enthalten, zum Teil im + Hauptverzeichnis (so z. B. die Dokumente INSTALL, README, NEWS und + COPYING), andere im Unterverzeichnis doc (wie z. B. + GIT.txt, FAQ.txt und die Beispiel-Konfiguration sample-ngircd.conf). +

+

+ Die Dateien der aktuellen Version sind hier im Web (in englischer + Sprache) zu finden: +

+ + + + + + + diff --git a/documentation.php.en b/documentation.php.en new file mode 100644 index 0000000..6abc868 --- /dev/null +++ b/documentation.php.en @@ -0,0 +1,102 @@ + +

+ Documentation +

+

+ Supported platforms +

+

+ ngIRCd is being tested regularly on the following platforms (used + version in brackets). The systems that are officially supported are: +

+ +

+ As the ngIRCd complies to common UNIX standards and uses GNU automake + and GNU autoconf, chances are that it can be ported to or adapted for + further UNIXoid systems. +

+

+ Installation +

+

+ ngIRCd is designed for UNIXoid systems and the installation on a + modern UNIX-like system, which is supported by GNU automake and GNU + autoconf, shouldn't cause any problems. +

+

+ Typically it looks like this: +

+

+ tar xzf ngircd-<version>.tar.gz
+ cd ngircd-<version>
+ ./configure
+ make +

+

+ Now, the executing server (normally ngircd) should be in + src/ngircd. +

+

+ make install +

+

+ The executing server has now been installed in + /usr/local/sbin. +

+

+ The configuration file ngircd.conf is now expected in + the server directory /usr/local/etc; an exemplary + configuration file can be found in the directory doc. +

+

+ Further comments on the installation and configuration can be found + in the file INSTALL. +

+

+ Documentation +

+

+ Documentation is compiled in the source package, some in the main + directory (such as INSTALL, README, NEWS und COPYING), and some in + the sub directory doc (such as GIT.txt, FAQ.txt and the + exemplary configurations sample-ngircd.conf). +

+

+ The documents of tha actual version can be found online here: +

+ + + + + + + diff --git a/download.php.de b/download.php.de new file mode 100644 index 0000000..23edcf6 --- /dev/null +++ b/download.php.de @@ -0,0 +1,57 @@ + +

+ Download +

+

+ Source Code +

+ +

+ Alle bisherigen Versionen, GnuPG-Signaturen der Archive sowie + vorhandene Test-Versionen aus den GIT-Quellen (so vorhanden) + können zudem via FTP von + ngircd.barton.de und + ftp.berlios.de + heruntergeladen werden. +

+

+ Pakete +

+

+ Von den folgenden Distributionen gibt es fertige Pakete für den ngIRCd: +

+ +

+ Inoffizielle Pakete: +

+ +

+ GIT-Repository +

+

+ Der Quelltext und alle zum ngIRCd gehörenden Dateien werden mit + GIT, verwaltet. + Anonymer Zugang ist möglich, Details hier: + GIT.txt. +

+

+ Im Web ist die Repository auch online verfügbar: + ngIRCd GIT Repository. +

+ + diff --git a/download.php.en b/download.php.en new file mode 100644 index 0000000..7780fbc --- /dev/null +++ b/download.php.en @@ -0,0 +1,56 @@ + +

+ Download +

+

+ Source Code +

+ +

+ All previous versions, GnuPG signatures of the archives and test + versions from GIT sources (if available) can be downloaded here: + ngircd.barton.de and + here ftp.berlios.de. +

+

+ Packages +

+

+ Ready packages for ngIRCd are available for the following + distributions: +

+ +

+ Inofficial packages: +

+ +

+ GIT Repository +

+

+ The source code and all files belonging to ngIRCd are managed by + GIT. Anonymous access + is possible, the details can be found here: + GIT.txt. +

+

+ The repository is also available online: + ngIRCd GIT Repository. +

+ + diff --git a/includes/common.php b/includes/common.php new file mode 100644 index 0000000..bf98cf9 --- /dev/null +++ b/includes/common.php @@ -0,0 +1,60 @@ +' . "\n\n"; + echo '' . "\n"; + echo ''; + if ($title) + echo "$title | ngIRCd: Next Generation IRC Daemon"; + else + echo 'ngIRCd: Next Generation IRC Daemon'; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo "\n"; + echo '
'; + + // Title & Slogan + echo '
'; + echo '

ngIRCd: Next Generation IRC Daemon

'; + echo '

“… serving white hat 6667!”

'; + echo '
'; + + // Navigation + echo '
'; + + echo '
'; +} + +function end_page() { + echo '
'; + echo ''; + echo '
'; +} + +?> diff --git a/index.html.de b/index.html.de deleted file mode 100644 index c1a527e..0000000 --- a/index.html.de +++ /dev/null @@ -1,381 +0,0 @@ - - - - - ngIRCd: Next Generation IRC Daemon - - - - - - - - - - - -

ngIRCd: Next Generation IRC Daemon

- -

- ngIRCd ist ein freier Open-Source Server für den Internet Relay Chat (IRC), - der unter der GNU General Public License - (GPL) - entwickelt wird. - Er ist von Grund auf neu geschrieben, basiert also nicht wie die meisten - anderen IRCd's auf dem "Urvater", dem Daemon des IRCNet. -

- -
    -
  1. Status -
  2. Vorteile -
  3. Unterstützte Plattformen -
  4. Dokumentation -
  5. Mailingliste -
  6. Installation -
  7. Download - -
  8. Kontakt -
  9. GIT-Repository -
  10. Bug-Tracker -
  11. History -
- -

- Noch ein Hinweis: bei freshmeat.net - gibt es einen Projekteintrag - für den ngIRCd. Dort ist es z.B. möglich, sich über neue Versionen - zu informieren und via E-Mail benachrichtigen zu lassen. -

- -

- BTW: There's an English version of - this page, too. -

- -

Mirrors:

- - -

Status

- -

- Die aktuelle "stabile" Version ist 0.12.1. - im Test befindet sich Version 13~rc1. - Download-Möglichkeiten siehe unten. -

-

- Achtung: - ngIRCd-Versionen vor 0.10.4 beinhalten einen Fehler, der (auch remote) - dazu genutzt werden kann, den Daemon zum Absturz zu bringen. - Alle Installationen sollten auf Version 0.10.4 (oder neuer) aktualisiert - werden. -

-

- Wenngleich die aktuelle Version noch nicht 100% komplett ist (einige - IRC-Befehle werden noch nicht bzw. nicht im vollen von den RFCs vorgesehenen - Umfang unterstützt), so taugt der Server doch bereits schon recht - gut für den produktiven, täglichen Einsatz. -

-

- Beispiel: Ein kleines IRC-Netzwerk, in dem auch mein Server aktiv - ist, setzt teilweise den ngIRCd, teilweise das Original ein: - Info-Seite dieses IRC-Netzes. -

-

- Über Rückmeldungen, Bug-Reports (am besten über den - Bug-Tracker) und Patches freue ich mich! Also los, - haut in die Tasten! -

-

- Du erreichst mich (Alex Barton) via E-Mail als - alex@barton.de. -

- -

Vorteile

-

- Warum man den ngIRCd benutzen sollte? Ganz einfach, unter anderem aus - diesen Gründen: -

-
    -
  • keine Probleme mit Servern, deren IP-Adressen nicht statisch sind, -
  • übersichtliche ("schlanke") Konfigurationsdatei, -
  • frei verfügbarer, moderner und "aufgeräumter" C-Quellcode. -
  • ngIRCd wird aktiv weiter entwickelt. -
- -

Unterstützte Plattformen

-

- Auf den folgenden Plattformen wird der ngIRCd regelmäßig getestet - (in Klammern die jeweils benutzen Versionen), sie sind die - offiziell unterstützten Systeme: -

-
    -
  • AIX (3.2.5, IBM XL C Compiler) -
  • A/UX (3.x, original Apple C Compiler oder GNU C) -
  • FreeBSD (4.5/i386, GNU C) -
  • HP-UX (10.20, GNU C) -
  • HP-UX (9.10/m68k, HP-UX cc) -
  • IRIX (6.5, SGI MIPSpro C 7.30) -
  • Linux (2.2.x/i386, 2.4.x/i386 und 2.4.x/hppa, GNU C) -
  • Mac OS X (10.x, GNU C 2.95.x/3.x) -
  • NetBSD (1.5.2/i386 und 1.5.3/m68k, GNU C) -
  • OpenBSD (3.4/i386) -
  • Solaris (2.5.1 und 2.6, GNU C) -
  • Windows mit Cygwin (GNU C) -
-

- Da sich der ngIRCd an übliche UNIX-Standards hält und GNU - automake sowie GNU autoconf verwendet, stehen die Chancen nicht - schlecht, daß er sich auf weiteren UNIXoiden Systemen übersetzen - bzw. relativ einfach anpassen läßt. -

- -

Dokumentation

-

- Ein wenig Dokumentation ist im Quellpaket enthalten, zum Teil im Hauptverzeichnis (so z.B. - die Dokumente INSTALL, README, NEWS und COPYING), andere im Unterverzeichnis "doc" - (wie z.B. GIT.txt, FAQ.txt und die Beispiel-Konfiguration sample-ngircd.conf). -

-

- Teile von letzteren sind hier im Web (mehr oder weniger aktuell) in englischer Sprache - verfügbar: -

- - - - - -

Mailingliste

-

- Es gibt eine (englischsprachige) Mailingliste, die sich mit allen - "technischen" Fragen rund um den ngIRCd beschäftigt: Compilieren, - Installieren, Konfigurieren und auch die weitere Entwicklung und - Erweiterungen. Zudem werden hier Updates und Neuerungen - angekündigt. -

-

Die Anmeldung erfolgt über die Hauptseite der Mailingliste. -

Alle Beiträge werden zudem in einem Archiv gespeichert. - -

Installation

-

- ngIRCd ist für UNIXoide Systeme konzipiert, die Installation sollte auf - einem modernen UNIX-ähnlichen System, das von GNU automake und GNU autoconf - ("configure") unterstützt wird, keine besonderen Schwierigkeiten bereiten. -

-

- Der "Standardfall" sieht so aus: -

-

- tar xzf ngircd-<version>.tar.gz
- cd ngircd-<version>
- ./configure
- make -

-

- Nun sollte sich in src/ngircd der ausführbare Server (in der - Regel "ngircd") befinden. -

-

- make install -

-

- Der ausführbare Server wurde nun in /usr/local/sbin installiert. -

-

- Vom Server wird die Konfigurationsdatei ngircd.conf in - /usr/local/etc erwartet; eine Beispiel-Konfigurationsdatei ist - im Verzeichnis doc zu finden. -

-

- Weitere Hinweise zur Installation und Konfiguration finden sich in - der Datei INSTALL. -

- -

Download

-

Source Code

-
-
ngIRCd 0.12.1 (2008-07-09):
-
-

Server: berlios.de (ftp)

-
    -
  • ngircd-0.12.1.tar.gz: - ftp -
-

Server: ngircd.barton.de (ftp)

-
    -
  • ngircd-0.12.1.tar.gz: - ftp. -
-
-
ngIRCd 13~rc1 (2008-11-21):
-
-

Server: berlios.de (ftp)

-
    -
  • ngircd-13~rc1.tar.gz: - ftp -
-

Server: ngircd.barton.de (ftp)

-
    -
  • ngircd-13~rc1.tar.gz: - ftp. -
-
-
-

- Alle bisherigen Versionen, GnuPG-Signaturen der Archive sowie vorhandene - Test-Versionen aus den GIT-Quellen (so vorhanden) können zudem via FTP - von ngircd.barton.de - und ftp.berlios.de - heruntergeladen werden. -

-

Pakete

-

- Von den folgenden Distributionen gibt es fertige Pakete für den ngIRCd: -

- -

- Inoffizielle Pakete: -

- - -

Kontakt

-

- Die Idee, den ngIRCd zu entwickeln, hatte - Alexander Barton (alex@barton.de); - von ihm sind fast alle Teile des heutigen Source-Codes. -

-

- Dank gebührt - Ilja Osthoff (ilja@glide.ath.cx) - für englische Übersetzungen der Dokumentation sowie - Götz Hoffart (goetz@hoffart.de) - für die englische Webseite. -

-

- Solltest du Bugs finden oder Ideen für Erweiterungen haben, trage - diese am Besten in den Bug-Tracker des ngIRCd ein. - Für Diskussionen und Fragen rund um den ngIRCd ist zudem eine - Mailingliste eingerichtet. -

-

BTW: über Patches und weitere "Mitstreiter" freuen wir uns immer!

-

ngIRCd im IRC: irc://irc.barton.de/ngircd.

-

GIT-Repository

-

- Der Quelltext und alle zum ngIRCd gehörenden Dateien werden mit - GIT, - verwaltet. Anonymer Zugang ist möglich, Details hier: - GIT.txt. -

-

- Im Web ist die Repository auch online verfügbar: - ngIRCd GIT Repository. -

- -

Bug-Tracker

-

- Damit ich den Überlick über eventuell(!?) im ngIRCd vorhandene Bugs und - Feature-Wünsche nicht verliere, ist ein Bug-Tracking-System installiert: - Bugzilla -

-

- Solltest du Fehler finden, so lege dort bitte einen - Bug-Report - an! Vielen Dank! -

-

- Zudem kannst du dich dort auch über bekannte und vielleicht bereits - behobene Fehler - informieren. -

- -

History

-

- Die NEWS-Datei und das ChangeLog - sind (in englischer Sprache) online verfügbar sowie in den Archiven enthalten. -

- - -
-

- Dank an:
- BerliOS Logo -

-
-

- Valid HTML 4.01! - - Version: $Id$ -
- Seite prüfen.
- Kontakt: Alexander Barton, E-Mail: alex@barton.de.
-
-

- - - diff --git a/index.html.en b/index.html.en deleted file mode 100644 index 8374c8e..0000000 --- a/index.html.en +++ /dev/null @@ -1,369 +0,0 @@ - - - - - ngIRCd: Next Generation IRC Daemon - - - - - - - - - - - -

ngIRCd: Next Generation IRC Daemon

- -

- ngIRCd is a free open source - daemon for Internet Relay Chat (IRC), developed under the GNU - General Public License (GPL). - - It's written from scratch and is not based upon the original IRCd like - many others. -

- -
    -
  1. Status -
  2. Advantages -
  3. Supported platforms -
  4. Documentation -
  5. Mailing List -
  6. Installation -
  7. Download - -
  8. Contact -
  9. GIT Repository -
  10. Bug Tracker -
  11. History -
- -

- Hint: at freshmeat.net - there's an entry - for the ngIRCd project. You can inform about new releases and get - update notifications via E-Mail. -

- -

- BTW: Von dieser Seite gibt es auch eine deutsche - Version. -

- -

Mirrors:

- - -

Status

- -

- Current "stable" version is 0.12.1. - Version 13~rc1 is available for testing. - Please see below for download locations. -

-

- Attention: - ngIRCd-versions previous to 0.10.4 comprise an error which can be used - (also by remote) to crash the daemon. All installations should be updated - to version 0.10.4 or subsequent versions.

-

- This version is used in private IRC networks and is known to run quite - stable and flawless although it is not tested in huge IRC networks under - heavy load yet. There are still missing features, but the current version - should provide everything you need during "normal" IRC sessions. -

-

- Read more about our private IRC network on these - web pages. -

-

- I'm glad to receive feedback, bug reports (best choice for this is the - Bug-Tracker) and patches. Go on, use the source - and keep on hacking! -

-

- You can reach me (Alex Barton) via E-Mail: - alex@barton.de. -

- -

Advantages

-

- Why should you use ngIRCd? Because ... -

-
    -
  • there are no problems with servers on changing or non-static IP addresses. -
  • there is a small and lean configuration file. -
  • there is a free, modern and open source C source code. -
  • it is still under active development. -
- -

Supported platforms

-

- ngIRCd is tested on a regular basis on the following platform - (version numbers used in parenthesis). These are the officially - supported systems. -

-
    -
  • AIX (3.2.5, IBM XL C Compiler) -
  • A/UX (3.x, original Apple C Compiler or GNU C) -
  • FreeBSD (4.5/i386, GNU C) -
  • HP-UX (10.20, GNU C) -
  • HP-UX (9.10/m68k, HP-UX cc) -
  • IRIX (6.5, SGI MIPSpro C 7.30) -
  • Linux (2.2.x/i386, 2.4.x/i386 and 2.4.x/hppa, GNU C) -
  • Mac OS X (10.x, GNU C 2.95.x/3.x) -
  • NetBSD (1.5.2/i386 and 1.5.3/m68k, GNU C) -
  • OpenBSD (3.4/i386) -
  • Solaris (2.5.1 and 2.6, GNU C) -
  • Windows with Cygwin (GNU C) -
-

- As ngIRCd relies on UNIX standards and uses GNU automake and GNU autoconf - there are good chances that it also supports UNIX-based operating systems. -

- -

Documentation

-

- There's a bit of documentation in the source code package. One's located - in the main directory (e.g. INSTALL, README, NEWS and COPYING) others in - subdirectories like "doc" (e.g. GIT.txt, FAQ.txt - and sample configuration files like sample-ngircd.conf). -

-

Parts of the documentation are available here:

- - - - - -

Mailing List

-

- There is a mailing list which deals with the "technical" - questions concerning ngIRCd: compilation, installation, configuration, - and the further development. Updates and news are announced there. -

-

Please subscribe using the homepage of the list. -

All postings are archived here. - -

Installation

-

- ngIRCd's target are systems based on or similar to UNIX. There - shouldn't be any problem on a fairly modern UNIX that's supported by - GNU automake and GNU autoconf. If you run into compile problems - perhaps you should give GNU C a try (version 2.95 or newer). -

-

- Typical usage is: -

-

- tar xzf ngircd-<version>.tar.gz
- cd ngircd-<version>
- ./configure
- make -

-

- Now there's the binary executable server file in src/ngircd - ("ngircd" in most cases). -

-

- make install -

-

- The binary executable is now installed in /usr/local/sbin. -

-

- The server looks for the configuration file ngircd.conf in - /usr/local/etc. A sample configuration file can be found in - doc. -

-

- Further help on installation and configuration can be found in - INSTALL. -

- -

Download

-

Source Code

-
-
ngIRCd 0.12.1 (2008-07-09):
-
-

Server: berlios.de (ftp)

-
    -
  • ngircd-0.12.1.tar.gz: - ftp -
-

Server: ngircd.barton.de (ftp)

-
    -
  • ngircd-0.12.1.tar.gz: - ftp. -
-
-
ngIRCd 13~rc1 (2008-11-21):
-
-

Server: berlios.de (ftp)

-
    -
  • ngircd-13~rc1.tar.gz: - ftp -
-

Server: ngircd.barton.de (ftp)

-
    -
  • ngircd-13~rc1.tar.gz: - ftp. -
-
-
-

- All previous released versions, GnuPG signatures as well as available test - releases of upcoming versions are available via FTP from - ngircd.barton.de and - ftp.berlios.de. -

-

Packages

-

- If you are using one of the following distributions, you can use their packages: -

- -

- Inofficial packages: -

- - -

Contact

-

- Idea and most parts of the current code: - Alexander Barton (alex@barton.de). -

-

- Thanks to - Ilja Osthoff (ilja@glide.ath.cx) - for translating parts of the documentation into english and - Götz Hoffart (goetz@hoffart.de) - for translating the web page. -

-

- If you find bugs or have some ideas for enhancements, please file them - into the bug tracker. In addition, there is a - mailing list for discussions concerning the ngIRCd. -

-

BTW: Patches are welcome ;-)

-

ngIRCd on IRC: irc://irc.barton.de/ngircd.

-

GIT Repository

-

- The source and all files belonging to ngIRCd are managed using - GIT. - Anonymous access is available, read: GIT.txt. -

-

- The repository is online available through HTTP: - ngIRCd GIT Reposidtory. -

- -

Bug Tracker

-

- In order to keep track of feature requests and found bugs there's a - Bug Tracking system: Bugzilla -

-

- In case you found a bug please check - Bug-Report - and describe the circumstances. Thank you! -

-

- In addition you can inform - about known and perhaps fixed bugs. -

- -

History

-

- Please read the files - NEWS and - ChangeLog - for detailed information. -

- - -
-

- Thanks to:
- BerliOS Logo -

-
-

- Valid HTML 4.01! - - Version: $Id$ -
- Validate page.
- Contact: Alexander Barton, E-Mail: alex@barton.de.
- Thanks to Götz Hoffart for cleaning up this page and the english translation! -
-

- - - diff --git a/index.php.de b/index.php.de new file mode 100644 index 0000000..b1c45fa --- /dev/null +++ b/index.php.de @@ -0,0 +1,87 @@ + +

+ ngIRCd +

+

+ ngIRCd ist ein freier Open-Source Server für den Internet Relay Chat + (IRC), der unter der GNU General Public License + (GPL) + entwickelt wird. Er ist von Grund auf neu geschrieben, basiert also + nicht wie die meisten anderen IRC-Daemons auf dem „Urvater“, dem + Daemon des IRCNet. +

+

+ Tip: + bei freshmeat.net gibt es einen + Projekteintrag + für ngIRCd. Dort ist es z. B. möglich, sich über neue Versionen zu + informieren und via E-Mail benachrichtigen zu lassen. +

+

+ BTW: There's an English version of this + page, too. +

+ +

+ Vorteile +

+

+ Warum man den ngIRCd benutzen sollte? Unter anderem aus diesen + Gründen: +

+
    +
  • + keine Probleme mit Servern, deren IP-Adressen dynamisch sind +
  • +
  • + übersichtliche (schlanke) Konfigurationsdatei +
  • +
  • + frei verfügbarer, moderner und „aufgeräumter“ C-Quellcode +
  • +
  • + ngIRCd wird seit Jahren aktiv + weiter entwickelt +
  • +
+
+ ngircd --help
+
+ ngircd 13-SYSLOG+ZLIB+SSL+TCPWRAP+IDENT+IRCPLUS+IPv6-x86_64/pc/linux-gnu +Copyright (c)2001-2008 Alexander Barton (<alex@barton.de>) and Contributors. +Homepage: <http://ngircd.barton.de/> + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + -f, --config <f> use file <f> as configuration file + -n, --nodaemon don't fork and don't detach from controlling terminal + -p, --passive disable automatic connections to other servers + -t, --configtest read, validate and display configuration; then exit + -V, --version output version information and exit + -h, --help display this help and exit +
+
+

+ Einfachheit +

+

+ ngIRCd unterstützt aktiv eine ganze Reihe von Plattformen: Linux, + BSD, Mac OS X. Aber auch auf Solaris, HP-UX, AIX und anderen Unices + läuft ngIRCd. +

+

+ Nach der Installation, die via Paketinstallation oder + configure-make-make-install erfolgt, kann man nach dem Editieren der + ngircd.conf bereits nach 5 Minuten loslegen â€“ geändert werden + müssen dort nur wenige Zeilen, der Rest ist optional. +

+ + diff --git a/index.php.en b/index.php.en new file mode 100644 index 0000000..e362c77 --- /dev/null +++ b/index.php.en @@ -0,0 +1,84 @@ + +

+ ngIRCd +

+

+ ngIRCd is a free open source server for Internet Relay Chat (IRC), + which is being developed under the GNU General Public License + (GPL). + It has been written from scratch and is consequently, unlike most + other IRC daemons, not based on the originator, the daemon of the + IRCNet. +

+ Hint: + at freshmeat.net there's an + entry + for the ngIRCd project. You can inform about new releases and get + update notifications via E-Mail. +

+

+ BTW: Von dieser Seite gibt es auch eine + deutsche Version. +

+ +

+ Advantages +

+

+ Why you should be using ngIRCd? For these and other reasons: +

+
    +
  • + no problems with servers that have dynamic IP addresses +
  • +
  • + well arranged (lean) configuration file +
  • +
  • + freely available, modern and tidy C-source +
  • +
  • + ngIRCd is being actively developed since + years. +
  • +
+
+ ngircd --help
+
+ ngircd 13-SYSLOG+ZLIB+SSL+TCPWRAP+IDENT+IRCPLUS+IPv6-x86_64/pc/linux-gnu +Copyright (c)2001-2008 Alexander Barton (<alex@barton.de>) and Contributors. +Homepage: <http://ngircd.barton.de/> + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + -f, --config <f> use file <f> as configuration file + -n, --nodaemon don't fork and don't detach from controlling terminal + -p, --passive disable automatic connections to other servers + -t, --configtest read, validate and display configuration; then exit + -V, --version output version information and exit + -h, --help display this help and exit +
+
+

+ Simplicity +

+

+ ngIRCd supports a whole range of platforms: Linux, BSD, Mac OS X, but + ngIRCD also runs on Solaris, HP-UX, AIX and other Unices. +

+

+ After the installation of ngIRC, which is executed via packet + installation or configure-make-make-install, and once you have edited + the ngircd.conf, you can get started after 5 minutes. â€“ only a + few lines need adapting, the rest is purely optional. +

+ + diff --git a/news.php.de b/news.php.de new file mode 100644 index 0000000..01eef95 --- /dev/null +++ b/news.php.de @@ -0,0 +1,34 @@ + +

+ Neuigkeiten & Historie +

+

+ Status +

+

+ Die aktuelle stabile Version ist Release 13, + siehe die Download-Möglichkeiten. +

+

+ Achtung: + ngIRCd-Versionen vor 0.10.4 beinhalten einen Fehler, der (auch remote) + dazu genutzt werden kann, den Daemon zum Absturz zu bringen. Alle + Installationen sollten auf Version 0.10.4 (oder neuer) aktualisiert + werden! +

+

+ Historie +

+

+ Die NEWS-Datei und das + ChangeLog + sind (in englischer Sprache) online verfügbar sowie in den + Archiven enthalten. +

+ + diff --git a/news.php.en b/news.php.en new file mode 100644 index 0000000..858691f --- /dev/null +++ b/news.php.en @@ -0,0 +1,32 @@ + +

+ News & History +

+

+ Status +

+

+ The current, sound version is Release 13, + please also refer to the Download. +

+

+ Caution: + ngIRCd-versions previous to 0.10.4 contain a bug which can be used + (also remotely) to crash the daemon. All installations should be + updated to version 0.10.4 or newer! +

+

+ History +

+

+ The NEWS-file and the + ChangeLog + are available online and in the archives. +

+ + diff --git a/platforms.html b/platforms.html index ae8265f..e5ef712 100644 --- a/platforms.html +++ b/platforms.html @@ -445,7 +445,7 @@ Zurück zur ngIRCd-

-

$Id$

+

$Id: platforms.html,v 1.13 2006/10/09 09:36:20 alex Exp $

diff --git a/style.css b/style.css index a33c997..49a01d5 100644 --- a/style.css +++ b/style.css @@ -2,7 +2,7 @@ * Cascading Style Sheet for ngIRCd homepage * http://arthur.ath.cx/~alex/ngircd/ * - * $Id$ + * $Id: style.css,v 1.6 2008/02/26 19:31:44 alex Exp $ */ BODY { diff --git a/support.php.de b/support.php.de new file mode 100644 index 0000000..8a40224 --- /dev/null +++ b/support.php.de @@ -0,0 +1,70 @@ + +

+ Support +

+

+ Kontakt +

+

+ Die Idee, den ngIRCd zu entwickeln, hatte Alexander Barton + (alex@barton.de); + von ihm sind fast alle Teile des heutigen Source-Codes. +

+

+ Solltest du Bugs finden oder Ideen für Erweiterungen haben, trage + diese am Besten in den Bug-Tracker des ngIRCd ein. + Für Diskussionen und Fragen rund um den ngIRCd ist zudem eine + Mailingliste eingerichtet. +

+

+ BTW: über Patches und weitere „Mitstreiter“ freuen wir uns immer! +

+

+ ngIRCd im IRC: + irc://irc.barton.de/ngircd. +

+

+ Mailingliste +

+

+ Es gibt eine (englischsprachige) Mailingliste, die sich mit allen + „technischen“ Fragen rund um den ngIRCd beschäftigt: Compilieren, + Installieren, Konfigurieren und auch die weitere Entwicklung und + Erweiterungen. Zudem werden hier Updates und Neuerungen + angekündigt. +

+

+ Die Anmeldung erfolgt über die + Hauptseite der Mailingliste. +

+

+ Alle Beiträge werden zudem in einem + Archiv + gespeichert. +

+

+ GMANE +

+

+ Alle Mails der Mailingliste werden zudem von + GMANE als Gruppe + gmane.network.irc.ngircd + geführt und kann dort über ein Web-Frontend, als RSS-Feed + oder über NNTP gelesen werden. +

+

+ Sonstiges +

+

+ Dank gebührt allen Mitwirkenden und denjenigen, die sich mit + Feedback gemeldet haben. Eine Liste, die keinen Anspruch auf + Vollständigkeit erhebt, findet sich in der Datei + doc/AUTHORS. +

+ + diff --git a/support.php.en b/support.php.en new file mode 100644 index 0000000..d629c9f --- /dev/null +++ b/support.php.en @@ -0,0 +1,68 @@ + +

+ Support +

+

+ Contact +

+

+ Alexander Barton + (alex@barton.de) + had the idea to develop the ngIRCD; he is responsible for almost all + parts of today's soucre code. +

+

+ If you find any bugs or you have any ideas on developing ngIRCD, it + is best to put them into the Bug-Tracker of the + ngIRCd. There is also a + mailing list for discussions and questions concerning + the ngIRCd. +

+

+ BTW: we are always happy any patches or additional peers! +

+

+ ngIRCd in IRC: + irc://irc.barton.de/ngircd. +

+

+ Mailing list +

+

+ There is an (English) mailing list, which covers all technical + questions around the ngIRCd: compilation, installation, configuration + and further development and upgrading. Furthermore, it is used to + announce updates and innovations. +

+

+ You can sign up via the + homepage of the mailing list. +

+

+ All posts are archived in the + list archive. +

+

+ GMANE +

+

+ All mails from the mailing list are also managed by + GMANE as a group + gmane.network.irc.ngircd + and can be read via a web frontend, RSS-feed or NNTP. +

+

+ Misc +

+

+ Many thanks to all who contributed by sending in feedback. A list + (with no claim to be complete) of all contributors can be found in + the file doc/AUTHORS. +

+ + -- 2.39.2