psyBNC WI

edisch

New Member
Hallo,

bin auf der suche nach einem WebInterface für meinnen psyBNC. Leider finde ich nichts, das kostenlos ist. Meine programmier erfahrung ist auch nicht so, dass ich das selbst machen könnte.
 
Schön Schön! Aber irgednwie kann man zum Programmierer keinen Kontakt wegen kommerzielle nutzung aufnehmen. Die Seite ist anscheinend Tot.
 
ja da hat der obi doch was nettes zusammengebastelt. aber ist das management nicht dennoch übern client vielfältiger? hab das noch nicht ausprobiert das interface..
 
Komisch hab mir eben mal psybnc installiert.
Dann in der config.php vom Webinterface die MySQL Sachen eingestellt.
chmod 655 /psybnc/psybnc.conf
chmod 655 /psybnc/log/USER*.LOG <-- hab ich nicht
chmod 655 /psybnc/log/psybnc.log
chmod 777 /psybnc/scripts
chmod 666 /psybnc/scripts/USER*.SCRIPT <-- hab ich nicht
chmod 666 /psybnc/scripts/DEFAULT.SCRIPT <-- hab ich nicht

die chmod Einstellungen habe ich gemacht.
Wenn ich mich dann im Interface einlogge mit Ident und Passwort (vom BNC Adminuser) dann kommt.

Warning: file(/var/www/web1/files/psybnc/psybnc.conf): failed to open stream: Permission denied in /var/www/web1/html/bnc/index.php on line 387

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1/html/bnc/index.php:387) in /var/www/web1/html/bnc/index.php on line 440

Wenn ich dann mal so gucken dann hat die psybnc.conf nur noch CHMOD 600 (was sie vorher auch hatte). Bin mir aber 100 % sicher das ich es auf 655 gestellt habe. Und habs dann nochmal auf 655 gestellt und wenn ich das Interface dann wieder aufrufe ist die psybnc.conf WIEDER auf 600 :mad:
 
Hallo,

dein psyBNC liegt aber nicht wirklich unter /var/www..... oder?

Also hier : var/www/web1/files/psybnc/psybnc.conf

Denn das wäre doch irgendwie, naja schlecht ;)
 
Doch der liegt unter:
/var/www/web1/files/psybnc/psybnc.conf
Das /files Verzeichnis kann man NICHT per http erreichen falls du das meinst.
die http Sachen liegen in:
/var/www/web1/html
in das files Verzeichnis kommt man nur per FTP oder Shell bzw WinSCP. Ich kann aber auch gern anderen Benutzer machen wo es dann in /home/USERNAME liegt. Aber eigentlich sollte es so doch auch funzen oder ? Mich wundert halt das IMMER wenn ich das Interface aufrufe die psybnc.conf wieder auf CHMOD 600 steht obwohl ich sie auf 655 gestellt hatte. Hab das nun schon 4x probiert. :(

Ah das ist wohl anscheint ein Bug wenn ich mir da so folgenden Link anschaue.
SourceForge.net: Detail: 1611216 - File Access Error

Naja mal hoffen vielleicht wird das Problem ja bald gefixt ;)
 
Last edited by a moderator:
Also ich hab das ding auch installiert,

es gibt eine Datei, chmod.sh, die muss im Verzeichniss des psybnc liegen! Diese datei Modded die Conf dann immer zurecht!

Wie gesagt, bei mir läuft diese Version nun schon seit einem Jahr flüssig!
 
Hab den Fehler gefunden. In der version 1.03 muss man den src von Psybnc verändern, dann klappt alles wie gewollt. Ich poste das einfach mal.
Code:
psyBNC hacks

Alle Dateien sind im "src" Ordner zu finden, die Zeilen angaben entsprechen der Version 2.3.2-4 Beta. Danach muss lediglich psyBNC mittels "make" neu kompiliert werden.

 

psyBNC chmod hack


Wenn sie kein Risiko eingehen wollen, und das Webinterface ohne sudo/suphp betreiben wollen und Apache als einen anderen user als psyBNC laufen lassen wollen, müssen folgende Funktionen angepasst werden.


p_inifunc.c - Zeile 81:

int flushconfig()
{
FILE *handle;
[COLOR="Sienna"]char chmod[40];[/COLOR]
struct stringarray *wconf;
pcontext;
oldfile(configfile);
handle=fopen(configfile,"w");
wconf=conf;
while(wconf)
{
if(wconf->entry!=NULL) {
if(strlen(wconf->entry)>1)
fprintf(handle,"%s\n",wconf->entry);
}
wconf=wconf->next;
}
fclose(handle);
[COLOR="Sienna"]strcpy(chmod, "chmod 644 ");
strcat(chmod, configfile);
system(chmod);[/COLOR]
return 0x0;
}



p_log.c - Zeile 30:

/* write to log */

int __log (char *what, int usern,int level) {
char tx [20];
[COLOR="Sienna"]char chmod[40];[/COLOR]
time_t tm;
time ( &tm );
strmncpy(tx,ctime( &tm ),sizeof(tx));
[COLOR="Sienna"]strcpy(chmod, "chmod 644 ");
strcat(chmod, logfile);
system(chmod);[/COLOR]
#ifndef NOLOG
if(mainlog==NULL)
mainlog = fopen(logfile,"a");
if(level>=LOGLEVEL && mainlog!=NULL)
{
fprintf(mainlog,lngtxt(563),tx,what);
fflush(mainlog);
}
if(usern==-1)
noticeall(RI_ADMIN,lngtxt(564),tx,what);
else
systemnotice(usern,lngtxt(565),tx,what);
#endif
return 0x0;
}

 

p_log.c - Zeile 95:
/* write to privatelog */

int privatelog ( int usern ) {
char tx [20];
char fname[40];
[COLOR="Sienna"]char chmod[40];[/COLOR]
char noact='\x01';
int uid;
FILE *log;
time_t tm;
pcontext;
#ifdef NOLOG
return 0x0;
#endif
if(strchr(irccontent,noact)!=NULL) return 0x0; /* dont log actions, ctcps */
if(strchr(ircfrom,'@')==NULL) return 0x0; /* dont log servermsgs/notices */
uid=usern;
if (user(uid)->parent !=0) uid=user(usern)->parent;
if (strlen(ircnick) == strlen(user(usern)->nick)) {
if (strstr(ircnick,user(usern)->nick)) return -1;
}
time ( &tm );
ap_snprintf(fname,sizeof(fname),lngtxt(573),uid);
strmncpy(tx, ctime( &tm ), sizeof(tx));
log = fopen(fname,"a");
if(log!=NULL)
{
fprintf(log,lngtxt(574),user(usern)->network,tx,ircfrom,irccontent);
fclose(log);
}
[COLOR="Sienna"]strcpy(chmod, "chmod 644 ");
strcat(chmod, fname);
system(chmod);[/COLOR]
return 0x0;
}

 

psyBNC Konfiguration öfter aktualisieren


psyBNC schreibt nicht bei jedem Befehl die Konfiguration neu, so werden z.B. Nick Changes nicht direkt in die Konfiguration übernommen und im Webinterface wird der alte nick angezeigt, in der aktuellen Version geht es nur um das Nick Update, aber in kommenden Versionen wird das ändern der Sources wohl notwendig sein, um Features wie autoop/ban/ignor/op/askop/dcc per Webinterface zu verwalten, alle diese Features werden nicht direkt in die Konfiguration geschrieben und lassen sich so nicht in realtime für das Webinterface verwenden. Die Konfiguration kann man mittels der Funktion flushconfig(); neu schreiben lassen, hier sind die notwendigen Änderungen:

 

p_client.c - Zeile 2269 (Konfigurationsupdate beim trennen der Verbindung zum BNC):
int cmdquit(int usern)
{
pcontext;
if (user(usern)->parent !=0) usern=user(usern)->parent;
log(LOG_INFO,-1,lngtxt(269),user(usern)->login,currentsocket->sock->source);
if(getpsocketbygroup(socketnode,currentsocket->sock->sockgroup,currentsocket->sock->syssock))
{
killsocket(currentsocket->sock->syssock);
} else {
ssnprintf(user(usern)->insock,lngtxt(270),user(usern)->nick,user(usern)->login,user(usern)->host);
quitclient(usern);
}
[COLOR="Sienna"]flushconfig();[/COLOR]
return -1;
}

 

p_client.c - Zeile 1753 (Konfigurationsupdate beim löschen eines AutoOp Eintrages):
/* remove autoop entry */

int cmddelautoop(int usern) {
char cfile[40];
int userp;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(208),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(209),usern);
user(usern)->aops=eraselist(atoi(irccontent),cfile,user(usern)->aops);
ssnprintf(user(usern)->insock,lngtxt(210),user(userp)->nick,irccontent);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1737 (Konfigurationsupdate beim löschen eines Op Eintrages):
/* remove op entry */

int cmddelop(int usern) {
char cfile[40];
int userp;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(205),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(206),usern);
user(usern)->ops=eraselist(atoi(irccontent),cfile,user(usern)->ops);
ssnprintf(user(usern)->insock,lngtxt(207),user(userp)->nick,irccontent);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1544 (Konfigurationsupdate beim hinzufügen eines Ignor Eintrages):
/* add an ignore */

int cmdaddignore(int usern) {
char cfile[40];
char *pt;
int userp;
pcontext;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(1332),user(userp)->nick);
return 0x0;
}
if (strlen(ircto) == 0) {
ssnprintf(user(usern)->insock,lngtxt(1333),user(userp)->nick);
return 0x0;
}
if (strchr(irccontent,';')) {
ssnprintf(user(usern)->insock,lngtxt(1334),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(1335),usern);
user(usern)->ignores=writelist(irccontent,ircto,cfile,user(usern)->ignores);
ssnprintf(user(usern)->insock,lngtxt(1336),user(userp)->nick,irccontent,ircto);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1518 (Konfigurationsupdate beim hinzufügen eines Ban Eintrages):
/* add a ban */

int cmdaddban(int usern) {
char cfile[40];
char *pt;
int userp;
pcontext;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(180),user(userp)->nick);
return 0x0;
}
if (strlen(ircto) == 0) {
ssnprintf(user(usern)->insock,lngtxt(181),user(userp)->nick);
return 0x0;
}
if (strchr(irccontent,';')) {
ssnprintf(user(usern)->insock,lngtxt(182),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(183),usern);
user(usern)->bans=writelist(irccontent,ircto,cfile,user(usern)->bans);
ssnprintf(user(usern)->insock,lngtxt(184),user(userp)->nick,irccontent,ircto);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1470 (Konfigurationsupdate beim hinzufügen eines AskOp Eintrages):
/* add an askop */

int cmdaddask(int usern) {
char cfile[40];
char *pt;
int userp;
pcontext;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(171),user(userp)->nick);
return 0x0;
}
if (strlen(ircto) == 0) {
ssnprintf(user(usern)->insock,lngtxt(172),user(userp)->nick);
return 0x0;
}
if (strchr(irccontent,';')) {
ssnprintf(user(usern)->insock,lngtxt(173),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(174),usern);
user(usern)->askops=writelist(irccontent,cryptit(ircto),cfile,user(usern)->askops);
ssnprintf(user(usern)->insock,lngtxt(175),user(userp)->nick,irccontent,ircto);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1444 (Konfigurationsupdate beim hinzufügen eines AutoOp Eintrages):
/* add an autoop */

int cmdaddautoop(int usern) {
char cfile[40];
char *pt;
int userp;
pcontext;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(166),user(userp)->nick);
return 0x0;
}
if (strlen(ircto) == 0) {
ssnprintf(user(usern)->insock,lngtxt(167),user(userp)->nick);
return 0x0;
}
if (strchr(irccontent,';')) {
ssnprintf(user(usern)->insock,lngtxt(168),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(169),usern);
user(usern)->aops=writelist(irccontent,cryptit(ircto),cfile,user(usern)->aops);
ssnprintf(user(usern)->insock,lngtxt(170),user(userp)->nick,irccontent,ircto);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1418 (Konfigurationsupdate beim hinzufügen eines Op Eintrages):
/* add an op */

int cmdaddop(int usern) {
char cfile[40];
char *pt;
int userp;
pcontext;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(161),user(userp)->nick);
return 0x0;
}
if (strlen(ircto) == 0) {
ssnprintf(user(usern)->insock,lngtxt(162),user(userp)->nick);
return 0x0;
}
if (strchr(irccontent,';')) {
ssnprintf(user(usern)->insock,lngtxt(163),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(164),usern);
user(usern)->ops=writelist(irccontent,cryptit(ircto),cfile,user(usern)->ops);
ssnprintf(user(usern)->insock,lngtxt(165),user(userp)->nick,irccontent,ircto);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1769 (Konfigurationsupdate beim löschen eines AskOp Eintrages):
/* delete askop */

int cmddelask(int usern) {
char cfile[40];
pcontext;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(211),user(usern)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(212),usern);
user(usern)->askops=eraselist(atoi(irccontent),cfile,user(usern)->askops);
ssnprintf(user(usern)->insock,lngtxt(213),user(usern)->nick,irccontent);
return 0x0;
}
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1799 (Konfigurationsupdate beim löschen eines Ban Eintrages):
/* delete a ban */

int cmddelban(int usern) {
char cfile[40];
int userp;
pcontext;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(217),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(218),usern);
pcontext;
user(usern)->bans=eraselist(atoi(irccontent),cfile,user(usern)->bans);
pcontext;
ssnprintf(user(usern)->insock,lngtxt(219),user(userp)->nick,irccontent);
pcontext;
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_client.c - Zeile 1819 (Konfigurationsupdate beim löschen eines Ignor Eintrages):
/* delete an ignore */

int cmddelignore(int usern) {
char cfile[40];
int userp;
pcontext;
if (user(usern)->parent!=0) userp=user(usern)->parent; else userp=usern;
if (strlen(irccontent) == 0) {
ssnprintf(user(usern)->insock,lngtxt(1337),user(userp)->nick);
return 0x0;
}
ap_snprintf(cfile,sizeof(cfile),lngtxt(1338),usern);
pcontext;
user(usern)->ignores=eraselist(atoi(irccontent),cfile,user(usern)->ignores);
pcontext;
ssnprintf(user(usern)->insock,lngtxt(1339),user(userp)->nick,irccontent);
pcontext;
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}

 

p_server.c - Zeile 199 (Konfigurationsupdate beim Nick Change neu schreiben):
int gotnick(int usern)
{
char sic[4096];
pcontext;
if(strmcmp(ircnick,user(usern)->nick))
{
strmncpy(user(usern)->nick,ircto,sizeof(user(usern)->nick));
ap_snprintf(sic,sizeof(sic),lngtxt(734),usern);
writeini("USER","NICK",sic,ircto);
#ifdef INTNET
if(user(usern)->parent==0)
{
strmncpy(irccontent,ircto,sizeof(irccontent));
strmncpy(sic,ircbuf,sizeof(sic));
cmdintnick(usern,0);
strmncpy(ircbuf,sic,sizeof(ircbuf));
}
#endif
}
nickchange(usern,ircnick,ircto);
[COLOR="Sienna"]flushconfig();[/COLOR]
return 0x0;
}





psyBNC Scripts beschleunigen


Ein anderer kleiner "hack" um die Scripts zu beschleunigen aktiviert man indem man einfach in der "p_script.c" Zeile 189 das "sleep(1);" mittels // auskommentiert, bzw. löscht bei mir ist es noch zu keinen Komplikationen dadurch gekommen.

Wenn man von psyBNC Fehler wie z.B. "Maximale Anzahl der Sub-Tasks erreicht beim Versuch..." bekommt, dann sollte man in der  "p_script.c" Zeile 37 den Eintrag "#define MAXFORKS 50" von 50 auf eine höhere Anzahl ändern. Ich persönlich habe MAXFORKS auf 500 stehen, und kann mich nicht beklagen.
 
Bncwi 1.04

Hi...

Ich hab nun auch dieses Problem, das wenn ich mich auf dem WI einloggen möchte, das folgender Fehler erscheint.:

Warning: file(/home/psybnc/psybnc/psybnc.conf): failed to open stream: Permission denied in /var/www/web1/html/psybnc/index.php on line 387

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web1/html/psybnc/index.php:387) in /var/www/web1/html/psybnc/index.php on line 440

Wie man ja sehen kann, ist psybnc unter /home/psybnc/psybnc installiert und das Webinterface liegt unter /var/www/web1/html/psybnc

Ich habe auf dem Server Confixx laufen, wo ich denke, das dort das Problem liegt...

Kann mir wer helfen...?:confused:
 
Permission denied in /var/www/web1/html/psybnc/index.php on line 387
Da liegt das Problem!

Ich Rate dir als Confixx User folgendes:

Installiert PsyBNC in var/www/web1/files/psybnc

Geb diesem Verzeichniss und allen Unterverzeichnissen diese Rechte: chown web1:ftponly /var/www/web1/files/psybnc

Starte PsyBNC als User "web1" aus der Bash heraus.

Und schon klappts ;)
 
re...

Diesen nutze ich auch... Ohne Probleme...
Nur einige meiner Leute mögen gern psyBNC...
Und ich wollts WI mal testen und das bietet sich ja dann an...

lg
 
Um nochmal auf den Fehler zurückzukommen, liegt das einfach daran das der wwwuser versucht eine Datei im Verzeichniss des psybnc Nutzers zu editieren?

Echt, vorher lief alles Problemlos, dann fangt ihr hier News zu verbreiten von ner neuen Version, nun ist alles schlecht *g*
 
re...

Es muss doch auch ne Möglichkeit geben, via httpd eintrag im Confixx dieses Problem zu umgehen...
Ich hatte es beim bekannten mal gesehen... Leider habe ich keinen Kontakt mehr und seine Seiten sind down...
Und in files zu installieren ist wohl mehr schlecht als recht :) ... denke ich mal so...

lg
 
re...

Saint2000:

Ja genau...

Nur das wenn ich 777 gebe... Die Rechte wieder zurück genommen werden beim einloggen ins WI...

Ich weiss das es mit nem httpd eintrag geht.. nur nicht mehr wie... Ich such im www schon seit Tagen...
 
Back
Top