Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   PHP + printerqueue op Linux / *BSD systeem... (https://forum.scholieren.com/showthread.php?t=13465)

Marc S 21-02-2002 11:38

PHP + printerqueue op Linux / *BSD systeem...
 
Het probleem:
Ik heb hier een printer gedeeld via SAMBA. Op het moment wordt deze gebruikt door 5 Windows 2000 workstations. Nu komt het regelmatig voor dat iemand 50 (of zelfs meer) documenten naar de printer verstuurt en iemand anders graag tussendoor een documentje print.

Tot nu toe ben ik dan altijd degene die inlogt op de server en met het commando "lpc topq <printer> <gebruiker>" voorrang verleen aan het document. So far so good, maar ik ben niet meer voor lang onder de week aanwezig en voor de rest kan niemand hier met Linux / *BSD omgaan.

Ook lijkt het me beter als dat zo blijft, omdat het niet de bedoeling is dat iedereen hier met de server rotzooit. Het wachtwoord geef ik dus ook niet vrij.

Maar hoe stel ik mensen nu in staat eenvoudig voorrang te verlenen aan een document, zonder dat zij directe toegang tot de server hebben? Vanuit hun Windows systeem via een HTML interface (PHP) lijkt me tot nu toe de enigste oplossing :/

Probleem is wel dat het "lpc topq" commando een privileged command is, waardoor het alleen met de super-user werkt *zucht*

De oplossing:
Wil ik graag horen! http://forum.scholieren.com/tongue.gif http://forum.scholieren.com/biggrin.gif

Ik zocht eerst naar een oplossing via SAMBA, want de printer is immers een gedeelde SAMBA printer, maar kon er niets over vinden. Hoe kan ik dit via PHP regelen?

dystopia 21-02-2002 13:35

Bestaat vast wel een tooltje voor. Check FM 'ns.

Marc S 21-02-2002 13:46

Citaat:

dystopia schreef:
Bestaat vast wel een tooltje voor. Check FM 'ns.
Ik kon zoiets dergelijks niet vinden op Freshmeat :/

Marc S 22-02-2002 07:29

Hmmz, bij GoT schijnt het ook niemand te weten... of niemand te boeien, 1 van beide :/

Doc 22-02-2002 07:35

Citaat:

Marc S schreef:
Hmmz, bij GoT schijnt het ook niemand te weten... of niemand te boeien, 1 van beide :/



Misschien wordt 't tijd om zelf een module te gaan schrijven, of SourceForge stond ook niet veel

Marc S 22-02-2002 07:55

Citaat:

Doc schreef:
Misschien wordt 't tijd om zelf een module te gaan schrijven, of SourceForge stond ook niet veel
http://forum.scholieren.com/eek.gif

Mjah, misschien maak ik wel iets leuks http://forum.scholieren.com/wink.gif

Ik heb al ideeen voor:

1)
Een console programma dat de queue toont en het toelaat voorrang te verlenen en vooral niets anders. Dit vanwege de veiligheid, want het moet als suid-root draaien (vanwege lpc topq).

2)
Een PHP interface die deze binary aanstuurt en er een grafisch frontend voor vormt.

Na ja, dit wordt weer een lang weekend http://forum.scholieren.com/biggrin.gif

Gefeliciteerd trouwens http://forum.scholieren.com/tongue.gif http://forum.scholieren.com/biggrin.gif

Marc S 22-02-2002 08:05

Hmm, Linuxconf heeft een printermodule met queue management http://forum.scholieren.com/eek.gif http://forum.scholieren.com/biggrin.gif

Misschien kan ik die wel isoleren en er een apart programma van maken :/

Marc S 22-02-2002 08:29

Shit, die kan niet genoeg http://forum.scholieren.com/frown.gif

Zie de sourcecode van de printerqueue manager :/

Dat ding kan amper wat http://forum.scholieren.com/mad.gif

Marc S 22-02-2002 08:42

Ach ja, ik denk dat ik zelf een LPC clone maak met beperkte mogelijkheden, dan lukt het wel http://forum.scholieren.com/biggrin.gif

Main

Subroutines

Moet te doen zijn http://forum.scholieren.com/smile.gif

Marc S 22-02-2002 08:45

Hmm... de code manipuleert alleen bestanden uit de spooldirectory... dat kan ik misschien ook direct doen :/

Marc S 22-02-2002 08:48

Haha, hij verandert alleen de timestamp van het betreffende item http://forum.scholieren.com/biggrin.gif

Koen 22-02-2002 09:07

Citaat:

Marc S schreef:
Haha, hij verandert alleen de timestamp van het betreffende item http://forum.scholieren.com/biggrin.gif



En bevalt dat, zo'n 2e persoonlijkheid waar je lekker tegenaan kan lullen? http://forum.scholieren.com/tongue.gif

Marc S 22-02-2002 09:12

Citaat:

Koen schreef:
En bevalt dat, zo'n 2e persoonlijkheid waar je lekker tegenaan kan lullen? http://forum.scholieren.com/tongue.gif
Whaha http://forum.scholieren.com/biggrin.gif

Ik constateer dingen en leg deze vast, zij het mentaal en / of schriftelijk. Waar ik het maar kwijt kan http://forum.scholieren.com/tongue.gif

Update:
Kan ik om onnodig werk te voorkomen niet gewoon het lpc programma erin luizen door mezelf voor te doen als root? Het controleert mijn identiteit alleen maar met de getuid() functie namelijk http://forum.scholieren.com/smile.gif

Wie weet het? http://forum.scholieren.com/biggrin.gif

Doc 22-02-2002 09:15

http://forum.scholieren.com/eek.gif WOW wat een mooie monoloog *applaus*

Bedankt voor de felicitatie http://forum.scholieren.com/wink.gif

Marc S 22-02-2002 09:17

Citaat:

Doc schreef:
http://forum.scholieren.com/eek.gif WOW wat een mooie monoloog *applaus*
http://forum.scholieren.com/tongue.gif

Ik denk dat ik zelf een programma moet schrijven dat lpc forked en met seteuid doorgeeft dat hij als caller zelf root is en dan alleen de commando's uitvoert die per se noodzakelijk zijn om de veiligheid enigzins te handhaven.

Citaat:

Bedankt voor de felicitatie http://forum.scholieren.com/wink.gif
http://forum.scholieren.com/biggrin.gif

Marc S 22-02-2002 09:57

Hmm, ik kan hem wel verneuken zodat ik alle permissies heb, maar wordt nog steeds geidentificeerd als user :/

*gaat ff iets op GoT vragen* http://forum.scholieren.com/smile.gif

Marc S 22-02-2002 11:40

Na ja, ik ben er zelf uitgekomen http://forum.scholieren.com/biggrin.gif

In het forkende programma: setuid(geteuid());

En dan op het programma zelf:

# chown root.root myprog
# chmod +s myprog

En daarna werkt het http://forum.scholieren.com/smile.gif

De rest is formeel, gewoon uitwerken http://forum.scholieren.com/wink.gif

DEChengst 22-02-2002 12:07

Waarom wil je de gebruikers dit zelf laten doen ? Het valt namelijk precies te voorspellen hoe het gaat. Gebruikers weten op een gegeven moment dat dit kan, en gaan dan altijd hun jobjes omhoog pushen.

Ik zou gewoon een shell script bouwen op de server zelf en die laten schedulen.

Je kijkt wat er aan opdrachtjes in de queue staat. Aan de hand voor de mtime bepaal je wat de print volgorde is. Heeft 1 bepaalde gebruiker te veel jobs achter elkaar dan touch je een aantal van zijn jobs, zodat ze later uitgeprint worden.

-Desecrator

Marc S 22-02-2002 12:47

Citaat:

Desecrator schreef:
Waarom wil je de gebruikers dit zelf laten doen?
Omdat er situaties zijn waar iemand wel voorrang nodig heeft en andere keren weer niet. De situatie is niet constant, maar variabel en moet daardoor dus flexibel zijn.

Marc S 22-02-2002 12:51

Ik ga er wel een authenticatieproces aanhangen, zodat alleen een paar bevoegde mensen dit kunnen doen (zonder nadere kennis van Linux / *BSD te hebben via webinterface).

Marc S 22-02-2002 14:10

Het console programma http://forum.scholieren.com/smile.gif

Het volgende wordt een PHP interface die dit programma aanstuurt en dan kom eindelijk in de buurt van wat ik wil.

Als mensen nog een manier zien om met dit programma andere systeemcommando's uit te voeren, meldt dit gaarne hier of mail me op mas2401@yahoo.com http://forum.scholieren.com/biggrin.gif


Alle tijden zijn GMT +1. Het is nu 14:40.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.