VQregister, Qmail, Vpopmail: standaard geen SMTP

Pagina: 1
Acties:

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Ik wil dat gebruikers dmv VQregister accounts kunnen aanmaken, zonder mijn tussenkomst. Ik wil alleen wél gebruikers permissies geven handmatig om SMTP te kunnen gebruiken. Als ik tegen iemand zeg: jo, maak hier maar een email adres aan, en het is gelijk een relay, kunnen er natuurlijk enge spam dingen gebeuren, waardoor jullie inboxen weer volkomen :P het is dus voor jullie zelf als jullie geen spam willen ;)

Het programma vqregister maakt dmv Vpopmail gebruikers aan zag ik. Het doet dat met het commando vadduser. Deze kent alleen geen opties om SMTP te disablen bij default. Ik kan wel op heel het domein SMTP disablen, maar dit is dan niet meer achteraf per gebruiker aan te zetten ...
vadduser: usage: [options] email_address [passwd]
options: -v (print the version)
-q quota_in_bytes (sets the users quota)
-s (don't rebuild the vpasswd.cdb file, faster for large sites)
-c comment (sets the gecos comment field)
-e standard_encrypted_password
-n no_password
-r generate a random password
Maar er is wel een commando dat het wel kan, vmoduser.
vmoduser: usage: [options] email_addr or domain ( for the entire domain )
options: -v ( display the vpopmail version number )
-n ( don't rebuild the vpasswd.cdb file )
-q quota ( set quota )
-c comment (set the comment/gecos field )
-e encrypted_passwd (set the password field )
-C clear_text_passwd (set the password field )
the following options are bit flags in the gid int field
-u ( set no dialup flag )
-d ( set no password changing flag )
-p ( set no pop access flag )
-s ( set no smtp access flag )
-w ( set no web mail access flag )
-i ( set no imap access flag )
-b ( set bounce mail flag )
-r ( set no external relay flag )
-a ( grant qmailadmin administrator privileges)
-0 ( set V_USER0 flag )
-1 ( set V_USER1 flag )
-2 ( set V_USER2 flag )
-3 ( set V_USER3 flag )
-x ( clear all flags )
Natuurlijk ben ik in de source-code wezen wroeten, ik heb een klein beetje Quickbasic ervaring uit dos. Maar ik kwam maar enkele dingen tegen die belangrijk leken over het verzenden van de aanvraag, namelijk een regel met vadduser (doh) . Die wordt later vertaalt in een andere variabele van 3 tekens die ik alweer ben vergeten. Maar ik ken de taal ook niet goed, en kan ook niet zomaar ergens even een regeltje met vmoduser ertussen plaatsen.

Mijn vraag is dan ook:
1) Is er al een patch voor VQregister?
2) Is er een alternatief voor VQregister?
3) Is er hier een source-code man die zegt, och, ffies hier knip + plak en done?
4) Iemand die zegt dat ik m'n linux systeem moet formatteren en een clean install moet gaan doen met %vulhiereennaamin%-Mail.

Thx alvast :) :*)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Kun je die unquote tag even fixen?

Kun je na een vadduser commando geen vmoduser <emailaddress> doen? Op welke wijze wil je gebruikers trouwens accounts laten aanmaken? Is dit via een CGI script; of via de shell?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Spider.007 schreef op 05 januari 2004 @ 19:40:
Kun je die unquote tag even fixen?

Kun je na een vadduser commando geen vmoduser <emailaddress> doen? Op welke wijze wil je gebruikers trouwens accounts laten aanmaken? Is dit via een CGI script; of via de shell?
1e: fixed ;)

Hoe ik een commando kan ingeven na een commando kan ik dus niet uitvinden in de source. Vanuit de source wordt idd een CGI script gemaakt, die toegangkelijk is voor mensen.

Link naar het programma voor de snelle downloader:
http://freshmeat.net/redi...tgz/vqregister-2.5.tar.gz

De enige manuel is de manuel die erin zit.

Overigens heb ik in 1 source bestandje zelf wat modules weggehaald voor een mysql database. Nu compiled die warempel zonder en doetut perfect. Op dat SMTP deel na dan, maar da's geen standaard optie in het programma.

edit: Voor zover ik dus zie roept het CGI-script enkele commando's op de shell aan :)

[ Voor 6% gewijzigd door pierre-oord op 05-01-2004 20:38 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
*trommelroffel* Kick!

edit:
Ik zoek eigenlijk iemand die een klein beetje verstand van sourcecode heeft. In maar 1 sourcebestand van vqregister komt de naam vadduser voor, hier zal dus een user worden gemaakt. Gelijk hierna wil ik vmoduser -s user@domain draaien. Dit is het stukje sourcecode waar het denk ik om draait, bestand vpopmail.c:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
#include "vpopmail.h"
#include "vauth.h"
#include "global.h"

extern char allowpassword;

int add_user(char *user, char *domain, char *password, char *fname)
{
  int ret = 0;
  char cwd[255];
  struct passwd *pw = NULL;

  memset((char *)cwd, 0, 255);
  getcwd(cwd, 255);

  pw = (struct passwd *)vauth_getpw(user, domain);
  if (pw) {
     chdir(cwd);

     global_warning("That username is already in use");

     if (allowpassword)
        t_open(T_REGISTER_WITH_PASSWORD);
     else
        t_open(T_REGISTER);
  }

  ret = vadduser(user, domain, password, fname, USE_POP);

  chdir(cwd);

  return ret;
}

int del_user(char *user, char *dom)
{
  int ret = 0;
  char cwd[255];

--> Deze functie wordt nog afgerond, klein stukje nog maar. Zie voor de rest gewoon even de download zoals ik die in de eerste post heb gezet.

Eerst was het stukje code op regel 31 zoals hierboven. Ik heb hierna deze aanpassing geprobeerd:
ret = vadduser(user, domain, password, fname, USE_POP) && vmoduser(-s, user, domain) && vmoduser -s (user, domain);

Hierna wilde die alleen niet compilen.
gcc -I/home/vpopmail/include -o vpopmail.o -c vpopmail.c
vpopmail.c: In function `add_user':
vpopmail.c:31: `vmoduser' undeclared (first use in this function)
vpopmail.c:31: (Each undeclared identifier is reported only once
vpopmail.c:31: for each function it appears in.)
make: *** [vpopmail.o] Error 1
Nu begrijp ik nog niet zoveel van die linux taal, lijkt niet zo erg op basic ofzo helaas. Ik wil alleen een stukje tekst toevoegen. Voor zover ik zie is vadduser nooit ergens gedefineerd, waarom zou dat met vmoduser wel moeten? Misschien zit ik wel helemaal verkeerd. Ik heb ook nog in de source van vpopmail gekeken, ik denk, ik kan ervoor zorgen dat standaard een user wordt gemod. Dit is alleen ook niet simpel, en ook niet een erg nette manier, dit geldt dan meteen voor alle users die ik aanmaak, en moet ik allemaal weer handmatig SMTP aanzetten.

Is dit eenvoudig te maken door een simpel stukje code?

Overigens begin ik nu wel het opensource idee te zien! Iets werkt niet zoals jij wilt, en je kunt het zo hupla ff aanpassen (als je tenminste kunt programmeren). Met Windows software oid wordt het overstappen, of ... deinstalleren en er niet meer aan denken.

[ Voor 105% gewijzigd door pierre-oord op 07-01-2004 16:13 . Reden: woei, ik gokte dat de code c was zoals ik weleens dat c-tje zie, en warempel, het forum herkent dit nog ook :) ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Afbeeldingslocatie: http://www.pckennis.net/GoT/schop.png
;)

offtopic:
M'n eerste fotosoep met transparante achtergrond :)

[ Voor 67% gewijzigd door pierre-oord op 07-01-2004 19:16 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Ik heb even met je meegezocht (zo'n topic in je eentje is ook zo zielig :P ); maar wat ik zie is dat in de sources van vpopmail staat een file vpopmail.h Deze wordt geinclude in vpopmail.c in vqregister. In deze header (?) file staat een regel
code:
1
int vadduser( char *, char *, char *, char *, int);

Misschien dat je daaraan toe moet voegen
code:
1
int vmoduser( char *, char *, char *, char *, int);
:? Ik heb helaas ook geen enkele kennis van C. Overigens vind je in de sources van vpopmail ook de vmoduser en vadduser functie :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Zo'n topic in je eentje is idd best zielig ;(

Ik kijk ff naar de vpopmail.h... maar wacht, zoalsje zegt hoort die bij vpopmail. Die wil ik gewoon zo laten als die is eigenlijk.

Tis opzich best simpel; als vqregister een user aanmaakt, doe dan ook uitvoeren:
/home/vpopmail/bin/vmoduser -s USER@DOMAIN

maar hoe ik C dat kan vertellen? Ik moet anders eens een guide gaan zoeken... maar da's best lastig, ik ben pas nieuw in linux, en om gelijk te gaan leren programmeren :X een beetje basic zoals dit is wel handig natuurlijk. Ik heb al eerder sourcecode aangepast, een stukje tekst verwijderd zodat een mysql database plugin niet werd gecompileerd, en warenpel werkt het ook nog :P

Maar zijn d'r hier niet gewoon C-goeroe's?

[ Voor 19% gewijzigd door pierre-oord op 07-01-2004 20:46 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • frim
  • Registratie: Augustus 2001
  • Niet online
niet gewoon

code:
1
ret = vadduser(user, domain, password, fname, USE_POP);


veranderen in

code:
1
2
ret = vadduser(user, domain, password, fname, USE_POP);
system('vmoduser -s, user, domain');


? ik heb verder ook geen ervaring met C, maar even zoeken in google over hoe je programma's in C opstart moet dit kunnen oplossen

edit:
misschien moet je nog stdlib includen?

[ Voor 28% gewijzigd door frim op 08-01-2004 17:57 ]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
frim schreef op 08 januari 2004 @ 17:51:
niet gewoon

code:
1
ret = vadduser(user, domain, password, fname, USE_POP);


veranderen in

code:
1
2
ret = vadduser(user, domain, password, fname, USE_POP);
system('vmoduser -s, user, domain');


? ik heb verder ook geen ervaring met C, maar even zoeken in google over hoe je programma's in C opstart moet dit kunnen oplossen

edit:
misschien moet je nog stdlib includen?
Ik zoek, maar tis nog niet zo eenvoudig. Even vragen aan jouw nog, voert "ret" ook iets uit? Of zou er ergens diep verstopt in het programma een opdracht staan die ret uitvoert ofzo? Ik bedoel, waarom staat er anders ret = vadduser en niet gewoon system(vadduser user, domain, password, fname, USE_POP);

? Ik doe m'n best. Ik had het al gevraagd met het handje of een mod misschien de titel wil changen van dit topic --> "Programmeer kennis nodig bij VQregister"

[ Voor 22% gewijzigd door pierre-oord op 08-01-2004 19:04 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • frim
  • Registratie: Augustus 2001
  • Niet online
code:
1
int ret = 0;

ret is een integer variabele. het uitvoeren van de systemcall naar vadduser levert een integer op, dat de functie in de variabele "ret" stopt. Later wordt dit antwoord weer doorgegeven als zijn eigen ouput:
code:
1
 return ret;


vadduser is een functie, gedeclareerd in vpopmail.h, dat geinclude is. vmoduser is een programma, en geen functie, en moet dus worden uitgevoerd als een commandlineopdracht, en daar wordt system voor gebruikt.

[ Voor 4% gewijzigd door frim op 08-01-2004 18:10 ]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
frim schreef op 08 januari 2004 @ 18:08:
code:
1
int ret = 0;

ret is een integer variabele. het uitvoeren van de systemcall naar vadduser levert een integer op, dat de functie in de variabele "ret" stopt. Later wordt dit antwoord weer doorgegeven als zijn eigen ouput:
code:
1
 return ret;


vadduser is een functie, gedeclareerd in vpopmail.h, dat geinclude is. vmoduser is een programma, en geen functie, en moet dus worden uitgevoerd als een commandlineopdracht, en daar wordt system voor gebruikt.
dat begrijp ik wel zo ongeveer jah.
server2:/home/ftpusers/pierre/vqregister-2.5# gcc -I/home/vpopmail/include -I/usr/local/mysql/include -o vpopmail.o -c vpopmail.c
vpopmail.c: In function `add_user':
vpopmail.c:32: character constant too long
server2:/home/ftpusers/pierre/vqregister-2.5#
o o...

Ik ga zo ff googlen, eerst eten

edit:
woei, hij compileert, het waren geen ' ' tekens maar " " tekens! Post zo of het werkt...

edit:
Het werkt... niet

Het compileren gaat wel, maar ik krijg na het aanmaken van een user account de volgende melding:
Unrecoverable Error: Internal field check error.
An unrecoverable error occured while processing your request.
Please contact the administrator if this continues.

vQregister v2.5
Dit zegt opzich niet zoveel, want dit is een standaard error page geloof ik. (dit is dus een html he). Iemand een idee wat er niet goed is? Kan ik zelf een C opdrachtregel testen? Ik heb als opdrachtregel tussen die " " gezet: /home/vpopmail/bin/vmoduser bla bla bla


edit100:
system(vmodusersmtp)
{
int vmodusersmtp;
vmodusersmtp = "/home/vpopmail/bin/vmoduser -s", user, domain);
return vmodusersmtp;
}
dat en simpeler geprobeerd. Bij dat system heb ik bijvoorbeeld ook geprobeerd allen /home/vpopmail/bin/vmoduser -s tussen " " te zetten en de rest nie tomdat dat bij het programma hoort. Ik volg nu een handleiding C op google maar da's nog niet zo simpel voor het eerst.

[ Voor 49% gewijzigd door pierre-oord op 08-01-2004 20:36 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 20-02 14:43
Zeer zeker niet. Wat je kunt doen in de source van vqregister aanpassen. Deze maakt immers gebruik van de vpopmail API. Ik zal eens met je mee gaan helpen en heb de source gedownload. Ben ook geen held in C, maar je moet ergens beginnen :).

[edit]
moduser zit niet in de API van vpopmail, dat wordt dus gewoon als command uitvoeren. Ben het aan het proberen :).

[edit2]
Inmiddels iets uitgeprobeerd, zou een master in C eens kunnen kijken of het überhaupt klopt. Eerste echte stukje code in B) :
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
     /*
        Everything went ok :?
     */
     char *args[4];
     char command[strlen(user)+strlen(dom)+1];
     int i, j;

     for (i = 0; i < strlen(user); i++) {
        command[i] = user[i];
     }
     i++;
     command[i] = '@';
     i++;
     for (j = 0; j < strlen(dom); j++) {
        command[i] = dom[j];
        i++;
     }

     args[0] = "/home/vpopmail/bin/vmoduser";
     args[1] = "-s";
     args[2] = command;
     args[3] = 0;
     execve("/bin/sh", args, environ);


Voor de mensen die de source van vqregister bij de hand hebben: register.c, vanaf regel 185. Onder de 'error' checks.

[ Voor 77% gewijzigd door zeroxcool op 08-01-2004 21:26 ]

zeroxcool.net - curity.eu


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Woei ik ga proberen. Ik ben met iemand anders van GoT ook aan het chatten alleen kent hij de taal C niet zo goed, doet meer in delphi en C++ . Eens kijken en proberen wat jij hebt, momentje ;)
na compileren:
server2:/home/ftpusers/pierre/vqregister-2.5# make all
gcc -I/home/vpopmail/include -o vpopmail.o -c vpopmail.c
vpopmail.c: In function `add_user':
vpopmail.c:42: parse error before `char'
vpopmail.c:45: `i' undeclared (first use in this function)
vpopmail.c:45: (Each undeclared identifier is reported only once
vpopmail.c:45: for each function it appears in.)
vpopmail.c:46: `command' undeclared (first use in this function)
vpopmail.c:51: `j' undeclared (first use in this function)
vpopmail.c:52: `dom' undeclared (first use in this function)
vpopmail.c:55: `args' undeclared (first use in this function)
vpopmail.c:59: `environ' undeclared (first use in this function)
make: *** [vpopmail.o] Error 1
server2:/home/ftpusers/pierre/vqregister-2.5#
Overigens heb ik dom even vervangen voor domain, ok? Het ziet er weer zeer ingewikkeld uit voor een simpel regeltje :D

edit:
het gaat dus over register.c :Z ff verder kijken, alleen zie ik niks wat op jouw stuk code lijkt?

[ Voor 78% gewijzigd door pierre-oord op 08-01-2004 21:57 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Paul
  • Registratie: September 2000
  • Nu online
Ik ben ook niet zo goed in C en zit pierre al over msn te (proberen te) helpen :P
Maaruh, declareer je daar geen array van chars van 4 lang?

Aan de andere kant had ik altijd al moeite met pointers en zeker met arrays van char-arrays :P
nee dus :) door de * wordt args een string en door de [4] heb je een array van 4 strings :) ik heb hem door :P

Zelf had ik al
C++:
1
2
3
4
5
6
   char commandline[255]; 
   strcpy(commandline, "/home/vpopmail/bin/vmoduser -s "); 
   strcat(commandline, user);
   strcat(commandline, "@");
   strcat(commandline, domain);
   system(commandline);
maar dat had ik uit een C++ boek :) Stringconcatenaties (of strings uberhaupt) zijn me echter een compleet raadsel onder C :) Delphi, VB ? Geen probleem, maar C?

@ pierre: Nee, ik doe niet meer in C++, daar had ik toevallig nog een schoolboek van liggen B) :P </slowchat>

[ Voor 27% gewijzigd door Paul op 08-01-2004 21:55 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
ZeRoXcOoL schreef op 08 januari 2004 @ 20:54:
Zeer zeker niet. Wat je kunt doen in de source van vqregister aanpassen. Deze maakt immers gebruik van de vpopmail API. Ik zal eens met je mee gaan helpen en heb de source gedownload. Ben ook geen held in C, maar je moet ergens beginnen :).

[edit]
moduser zit niet in de API van vpopmail, dat wordt dus gewoon als command uitvoeren. Ben het aan het proberen :).

[edit2]
Inmiddels iets uitgeprobeerd, zou een master in C eens kunnen kijken of het überhaupt klopt. Eerste echte stukje code in B) :
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
     /*
        Everything went ok :?
     */
     char *args[4];
     char command[strlen(user)+strlen(dom)+1];
     int i, j;

     for (i = 0; i < strlen(user); i++) {
        command[i] = user[i];
     }
     i++;
     command[i] = '@';
     i++;
     for (j = 0; j < strlen(dom); j++) {
        command[i] = dom[j];
        i++;
     }

     args[0] = "/home/vpopmail/bin/vmoduser";
     args[1] = "-s";
     args[2] = command;
     args[3] = 0;
     execve("/bin/sh", args, environ);


Voor de mensen die de source van vqregister bij de hand hebben: register.c, vanaf regel 185. Onder de 'error' checks.
Heb je toenvallig MSN/ICQ, kan ik snel ff kijken of het werkt, ipv slow chatten ;)

edit:
;(
server2:/home/ftpusers/pierre/vqregister-2.5# make clean
Cleaning up...done.
server2:/home/ftpusers/pierre/vqregister-2.5# make all
gcc -I/home/vpopmail/include -o main.o -c main.c
gcc -I/home/vpopmail/include -o cgi.o -c cgi.c
gcc -I/home/vpopmail/include -o template.o -c template.c
gcc -I/home/vpopmail/include -o global.o -c global.c
gcc -I/home/vpopmail/include -o misc.o -c misc.c
gcc -I/home/vpopmail/include -o config.o -c config.c
gcc -I/home/vpopmail/include -o register.o -c register.c
register.c: In function `go_register':
register.c:188: parse error before `char'
register.c:191: `i' undeclared (first use in this function)
register.c:191: (Each undeclared identifier is reported only once
register.c:191: for each function it appears in.)
register.c:192: `command' undeclared (first use in this function)
register.c:197: `j' undeclared (first use in this function)
register.c:201: `args' undeclared (first use in this function)
register.c:205: `environ' undeclared (first use in this function)
make: *** [register.o] Error 1
server2:/home/ftpusers/pierre/vqregister-2.5#

[ Voor 32% gewijzigd door pierre-oord op 08-01-2004 22:08 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Paul
  • Registratie: September 2000
  • Nu online
Heb shell-xs gekregen van pierre: mijn code werkt :)

Alleen komt die code wel op de plaats waar ZeRoXcOoL zijn code wilde zetten :) Zo diep was ik er nl nog niet in gedoken :P

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
hehe, niet te vroeg juichen, je hebt mail; het werkte niet. Je dacht dat een error die je kreeg aan mijn instellingen lagen; dat lag eraan dat je de .conf niet gekopieerd had omdat die toch overschreven werd, zoals ik al zei... nu krijg ik weer dezelfde foutmelding. Check je meel maar. Dus mensen, plz blijf meedenken!

het begint steeds meer te werken. Aan het eind van de middag hoop ik dat het af is. Ik moet nu nog ff m'n server opnieuw installeren met een 80 gigje als hoofdschijf.

[ Voor 22% gewijzigd door pierre-oord op 10-01-2004 10:17 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Afbeeldingslocatie: http://www.pckennis.net/GoT/schop.png
Paul's code lijkt toch niet helemaal te werken :?

Paul kijkt er nog steeds met mij naar (THX !!!!!) maar als iemand nog wat input kan geven hoop ik dat het lukt (lees: Hoe je register.c aanpast om die regel uit te voeren)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • frim
  • Registratie: Augustus 2001
  • Niet online
heb je nog foutmeldingen? deze code

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    
 /* 
        Everything went ok :? 
     */ 
     char *args[4]; 
     char command[strlen(user)+strlen(dom)+1]; 
     int i, j; 

     for (i = 0; i < strlen(user); i++) { 
        command[i] = user[i]; 
     } 
     i++; 
     command[i] = '@'; 
     i++; 
     for (j = 0; j < strlen(dom); j++) { 
        command[i] = dom[j]; 
        i++; 
     } 

     args[0] = "/home/vpopmail/bin/vmoduser"; 
     args[1] = "-s"; 
     args[2] = command; 
     args[3] = 0; 
     execve("/bin/sh", args, environ);


zou volgens mijn beperkte kennis moeten werken. Misschien kun dit proberen?

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
     /* 
        Everything went ok :? 
     */ 
     char *args[3]; 
     char command[strlen(user)+strlen(dom)+1]; 
     int i, j; 

     for (i = 0; i < strlen(user); i++) { 
        command[i] = user[i]; 
     } 
     i++; 
     command[i] = '@'; 
     i++; 
     for (j = 0; j < strlen(dom); j++) { 
        command[i] = dom[j]; 
        i++; 
     } 

     args[0] = "/home/vpopmail/bin/vmoduser"; 
     args[1] = "-s"; 
     args[2] = command; 
     execve("/bin/sh", args, 0);


probeer dat anders eens in je vpopmail.c te zetten. Vergeet niet stlib.h te includen.

[ Voor 18% gewijzigd door frim op 11-01-2004 00:13 ]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
stlib.h is geloof ik standaard al include. Ik zal later vandaag hem eens proberen bedankt alvast. (ga nu ff lekker :z )

Ik moet alleen wel zeggen dat het wel een lange code is voor een simpele regel lijkt :P

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • frim
  • Registratie: Augustus 2001
  • Niet online
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h> 
#include <sys/types.h> 
#include <pwd.h> 
#include "vpopmail.h" 
#include "vauth.h" 
#include "global.h" 

extern char allowpassword; 

int add_user(char *user, char *domain, char *password, char *fname) 
{ 
  int ret = 0; 
  char cwd[255]; 
  struct passwd *pw = NULL; 

  memset((char *)cwd, 0, 255); 
  getcwd(cwd, 255); 

  pw = (struct passwd *)vauth_getpw(user, domain); 
  if (pw) { 
     chdir(cwd); 

     global_warning("That username is already in use"); 

     if (allowpassword) 
        t_open(T_REGISTER_WITH_PASSWORD); 
     else 
        t_open(T_REGISTER); 
  } 

  ret = vadduser(user, domain, password, fname, USE_POP); 
char *command = printf("echo /hda2/vpopmail/bin/vmoduser -s %s@%s", user, domain);
         system(command);
  chdir(cwd); 

  return ret; 
} 

int del_user(char *user, char *dom) 
{ 
  int ret = 0; 
  char cwd[255];


probeer dat eens. staat ook als ding.c in mijn dir :P

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Als ik dat verwerk in het bestand gaat het niet goed. Misschien kun je strax ff online komen dat je even met mij kijkt, live?

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)

Pagina: 1