On Mon, Sep 01, 2008 at 05:39:35PM +0200, Bernhard R. Link wrote:
> * Moritz Augsburger <[EMAIL PROTECTED]> [080901 15:16]:
> > Currently, all packages that do not match a certain component in their
> > "Section" field get put into the first available component.
> >
> > I would like to be able to specify some components that get never
> > included in the repository.
> 
> I'm a bit undecided what would be a good way to implement this in a
> clean general way.
> The section itself is primarily a section, and unknown values there
> means usually just a subsection.
> 
> I assume your packages in the case have a section like
> foo-private/subsection?

Yes and no - that was the way we thought to do it when when I wrote the
bugreport, but now we decided all our packages will get the same
component but different sections.
So we need to allow 
 component == foo and not ( section == restricted or section == private )

> [...]
> Without that that would need some filtering based on the section field.
> The questions is where to do this.
> 
> (2) One possiblity would be to extend the uploaders file with arbitrary
> filtering (I wanted to add some more filters anyway, and just some
> based on fields sounds quite a good thing to start with).
> This would only work with include and processincoming (and not
> includedeb or includedsc AFAIR), though.

I think this is the best idea, but the file/keyword should be renamed to
soemthing more descriptive like "permissions" or "upload-requirements".

Then you should implement a bit more complex filter syntax, I thought
of allow/deny statements, and the first one matching decides, eg:
| allow from key-id 0xblablaa
| deny component == "foo-restricted"
| allow component == "foo" && section == "public"
| allow component == "foo" && key-id 0xfoobar
| deny component == "foo"
| allow *

This way, 0xblablaa would be able to upload everything, even into
"foo-restricted" and all other.
Nobody else can upload into "foo-restricted".
Upload to component "foo" is only allowed if section is public or (and
then to any section) if key-id is 0xfoobar.
All other components/sections are free for everybody.

You could match to all fields available in the
changes/control/...-files, and a field not available evaluates to true.
Additionaly, there should be the key-id of the uploader requiring a
signature. 

I see no reason why you shouldn't be able to use them with includedeb or
includedsc, I think all required informations are included in them.

> Which of those options (1-4) would suite you? Do you see any advantages /
> disadvantages I missed?

As I wrote above, #2 seems to be the most flexible.

> > This results from the fact, that we have some components
> > "foo-restricted" and "foo-private" that musn't be available to all pcs
> > and therefore musn't be in the public repository. Currently I'm using a
> > "Log:" script that scans the component name and starts a "reprepro
> > remove" for packages with the wrong component, which isn't too elegant.
> 
> Another possible workaround is to actually have such a component and
> make the pool/evilcomponent and dists/*/evilcomponenent directories not
> accessible for the webserver. Also ugly but in another way...

Yes, both are not really "clean".

Schöne Grüße
Moritz Augsburger

Attachment: signature.asc
Description: Digital signature

Reply via email to