• any ideas for getting files from students?

    From Meredith Montgomery@21:1/5 to All on Wed Aug 31 22:07:17 2022
    XPost: comp.unix.programmer

    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.

    Maybe SSH can sort of do this. I'll look into the documentation. Any
    ideas? Thank you!

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to mmontgomery@levado.to on Thu Sep 1 01:28:30 2022
    Meredith Montgomery <mmontgomery@levado.to> wrote:

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    Your unix system doesn't have postfix? Send email to the unix system,
    then write a procmail script to sort it out into files. You get multiple
    valid timestamps on each message. You get some reasonable but not
    completely validated idea of who sent the message. You don't need to
    give any other access to students. There is only a way for them to send
    data to you, never to remove data.

    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    If you HAVE to do this, you can rsync the directory they send it to into another place with timestamps added to the filenames. This way if student
    A uploads a file and then student B uploads an invalid file with student A's name on it in order to help the grade curve, it becomes very evident.
    --scott
    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Scott Dorsey on Wed Aug 31 23:03:47 2022
    kludge@panix.com (Scott Dorsey) writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    Your unix system doesn't have postfix? Send email to the unix system,
    then write a procmail script to sort it out into files. You get multiple valid timestamps on each message. You get some reasonable but not
    completely validated idea of who sent the message. You don't need to
    give any other access to students. There is only a way for them to send
    data to you, never to remove data.

    That's really what I wanted to do, but I'm running a server with no
    rights to send or get email (to and from the outside world). I'm
    running a cheap server at Hetzner. (Hm, maybe I should think of a new
    server just to do this because the mail solution is indeed attractive.)

    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    If you HAVE to do this, you can rsync the directory they send it to into another place with timestamps added to the filenames. This way if student
    A uploads a file and then student B uploads an invalid file with student A's name on it in order to help the grade curve, it becomes very evident.
    --scott

    That's interesting. Students A and B would have only access to their
    own directory, so they would not be able to step on their toes.
    However, I would not have any power of naming their files and there are
    more inconveniences with this approach, but I should perhaps not even
    describe and steal your time reading them. (The mail solution seems
    more attractive. Maybe I should take this more seriously and buy a new server.)

    Thank you for your thoughts.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Gary R. Schmidt@21:1/5 to Meredith Montgomery on Thu Sep 1 13:08:29 2022
    On 01/09/2022 11:07, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.

    Maybe SSH can sort of do this. I'll look into the documentation. Any
    ideas? Thank you!

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    Presuming you are on a UNIX(TM) or UNIX-like Operating System, have a
    cron job scan their directories and copy the files elsewhere, changing
    the name to include the time they were moved.

    Do it every five minutes or so.

    Wouldn't take much more than five minutes to set up. (But test it for
    an hour or two. :-) )

    Cheers,
    Gary B-)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Louis Krupp@21:1/5 to Meredith Montgomery on Wed Aug 31 23:51:25 2022
    On 8/31/2022 7:07 PM, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.

    Maybe SSH can sort of do this. I'll look into the documentation. Any
    ideas? Thank you!

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    You might be able to write a script for students to run that would scp a
    file chosen by the student to a target file whose name includes the
    output of 'whoami', possibly the student's hostname, and a timestamp
    (possibly generated by piping the output of 'date' through a 'tr'
    command that would translate spaces to underscores).

    This would hopefully give you unique file names. Presumably, you'll be
    able to read each file and figure out who submitted it.

    Students would not be executing scp directly. If you'd rather they
    didn't see the destination directory at all, you might be able to use
    shc to turn your script into a binary executable that students could run
    but which no normal person could read.

    Louis

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ben Bacarisse@21:1/5 to Meredith Montgomery on Thu Sep 1 11:32:19 2022
    Meredith Montgomery <mmontgomery@levado.to> writes:

    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.

    Maybe SSH can sort of do this. I'll look into the documentation. Any
    ideas? Thank you!

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the
    delivery.

    This is what I used to do. The email had to have the exercise number in
    the subject. I used to use mh, so a simple script could find
    coursework, extract the work and, if appropriate, compile and run tests
    on it.

    I wonder why getting mail onto a Unix system would be such hard work.
    What's going on to make that the case?

    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    --
    Ben.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bit Twister@21:1/5 to Meredith Montgomery on Thu Sep 1 07:05:33 2022
    On Wed, 31 Aug 2022 22:07:17 -0300, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.

    Or I being the student would prefer rsync

    I end up having all of the work centralized in a UNIX system.

    Sounds like a perfect way to cheat and to have homework of other users destroyed or modified. :(

    I get dates et cetera.
    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.

    Maybe SSH can sort of do this. I'll look into the documentation. Any
    ideas? Thank you!

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    Yep, and I would not think it too hard to have you write some code to automagically extract each student's email into a file. Go ahead and
    send yourself a few emails then cat /var/mail/your_login_id

    I always smile when I see a teacher/professor post these kinds of requests. Seems to me it would be dead easy to have the Computer Science teacher
    make it a homework assignment and the class pick the best code as the
    next example for fault testing.


    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    My suggestion: each student creates a $HOME/teacher, sets sticky bit so
    teacher always has access to files. Teacher then has a cron job to pull
    files into desired location readable only by the teacher.

    Students are told time collect_homework script runs and everyone is on the
    same page. Might be nice if a naming convention is used so students can
    easily find a particular file when desired.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Siri Cruise@21:1/5 to Meredith Montgomery on Thu Sep 1 05:46:50 2022
    In article <867d2nnbqy.fsf@levado.to>,
    Meredith Montgomery <mmontgomery@levado.to> wrote:

    Maybe SSH can sort of do this. I'll look into the documentation. Any
    ideas? Thank you!

    My first inclination would be to make an HTTP server with PHP
    available. You can then copy from other people to make a simple
    upload page. You can expand it as you are inclined to put course
    materials, schedules, etc online.

    Doing PHP upload from scratch is annoying but you can borrow from
    many available examples. It will also be fairly secure if you
    keep it simple.

    --
    :-<> Siri Seal of Disavowal #000-001. Disavowed. Denied. Deleted. @
    'I desire mercy, not sacrifice.' /|\ Discordia: not just a religion but also a parody. This post / \
    I am an Andrea Chen sockpuppet. insults Islam. Mohammed

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rich@21:1/5 to Ben Bacarisse on Thu Sep 1 13:16:21 2022
    Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
    I wonder why getting mail onto a Unix system would be such hard work.
    What's going on to make that the case?

    One possiblity, given what little details have been provided, is a VM
    host that blocks incoming and outgoing port 25 on their VM's.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rich@21:1/5 to Bit Twister on Thu Sep 1 13:19:29 2022
    Bit Twister <BitTwister@mouse-potato.com> wrote:
    Yep, and I would not think it too hard to have you write some code to automagically extract each student's email into a file. Go ahead and
    send yourself a few emails then cat /var/mail/your_login_id

    If they setup their MDA to deliver to mail-dir style folders, they get
    each email in a separate file from the start, removing the need to
    first take apart an mbox style folder (not that doing so is hard in any
    case).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rainer Weikusat@21:1/5 to Meredith Montgomery on Thu Sep 1 15:48:09 2022
    XPost: comp.unix.programmer

    Meredith Montgomery <mmontgomery@levado.to> writes:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    [...]

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.

    [...]

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    If you can arrange for e-mails to be delivered to the UNIX system, you
    can process them automatically, ie, with a script there. The obvious traditional suggestion for this would be procmail.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lew Pitcher@21:1/5 to Meredith Montgomery on Thu Sep 1 15:00:17 2022
    On Wed, 31 Aug 2022 22:07:17 -0300, Meredith Montgomery wrote:

    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.
    [snip]
    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    As an alternative, you could look into one of the many "revision control" systems. I'm thinking specifically of git or cvs, both of which can handle networked commits.

    In theory, your students would "commit" their homework to your repository,
    and you could then "pull" the homework out to be evaluated. Such revision control systems include user privilege management that you may be able
    to use to limit a student's ability to, for instance, "commit" to another student's homework, or "pull" another student's homework for copying.

    It would take a bit of set-up, but would give you control over what the students can access, and an audit trail of what they /have/ accessed.


    HTH
    --
    Lew Pitcher
    "In Skills, We Trust"

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Kettlewell@21:1/5 to Meredith Montgomery on Thu Sep 1 20:41:43 2022
    Meredith Montgomery <mmontgomery@levado.to> writes:
    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    It’s probably worth looking at why moving files from your mail to a Unix
    host is ‘massive work’. It shouldn’t be more effort than saving an attachment and then scping it yourself.

    --
    https://www.greenend.org.uk/rjk/

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Doug McIntyre@21:1/5 to Meredith Montgomery on Thu Sep 1 19:53:55 2022
    Meredith Montgomery <mmontgomery@levado.to> writes:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp >transfer to a script, much like e-mail can invoke a script on a UNIX
    system.


    I like using https://github.com/dutchcoders/transfer.sh/ alot.
    You can upload the files with curl (or a web browser). It'll make a
    new file for each upload.

    You'd have to determine how students differentiate their uploads so
    you don't end up with a random jumble of files. (ie. they must name
    their files after themselves, or student ID or something).

    On the backend, it just creates a random directory to put the file in,
    and then it can't be touched (other than deleted if the delete token
    is captured). You'll end up with all the files in subdirectories of
    where you have the web server dropping files.


    --
    Doug McIntyre
    doug@themcintyres.us

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to ben.usenet@bsb.me.uk on Thu Sep 1 19:33:44 2022
    Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
    I wonder why getting mail onto a Unix system would be such hard work.
    What's going on to make that the case?

    She's using a system hosted by incompetent idiots. Incompetent German
    idiots, but incompetent nevertheless.

    The whole concept of putting data into the cloud relies on the notion
    that other people can run systems better than you can. Sometimes this
    is the case. Sometimes it is not.
    --scott
    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bruce Horrocks@21:1/5 to Meredith Montgomery on Thu Sep 1 22:34:53 2022
    On 01/09/2022 02:07, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp transfer to a script, much like e-mail can invoke a script on a UNIX
    system.

    Maybe SSH can sort of do this. I'll look into the documentation. Any
    ideas? Thank you!

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    Solution 2. They could scp files, but this lets them overwrite files.
    It'd be nice if each upload would turn the submission into a
    next-version.

    The suggestions to have your own Unix server receive email are all well
    and good but setting it up *and securing it* is a PITA.

    An alternative is to use Amazon's SES (Simple Email Service) <https://aws.amazon.com/ses/details/>

    Your volumes are probably low enough that the free tier will cover
    everything, and it's easy to have a script run on receipt of an email. Anti-virus scanning of the attachments is automatic.

    --
    Bruce Horrocks
    Surrey, England

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stefan Ram@21:1/5 to Meredith Montgomery on Fri Sep 2 12:11:01 2022
    Meredith Montgomery <mmontgomery@levado.to> writes:
    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    So you have a UNIX system that is online meaning students can
    connect to it via SCP, but this UNIX system does neither have
    a mailserver nor are you allowed to run a mailserver on it?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stefan Ram@21:1/5 to Meredith Montgomery on Fri Sep 2 12:27:43 2022
    Supersedes: <mail-20220902130956@ram.dialup.fu-berlin.de>

    Meredith Montgomery <mmontgomery@levado.to> writes:
    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    written earlier:

    So you have a UNIX system that is online meaning students can
    connect to it via SCP, but this UNIX system does neither have
    a mailserver nor are you allowed to run a mailserver on it?

    written later:

    Sorry, I missed the post where you already answered this!

    I would not say that you "have a server" if you can't run
    a mail server program on it. - If it's just port 25 that's
    blocked then you could use any other port and dispatch a
    specific client to the students that connects to that port.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Richard Kettlewell on Sun Sep 4 17:12:39 2022
    Richard Kettlewell <invalid@invalid.invalid> writes:

    Meredith Montgomery <mmontgomery@levado.to> writes:
    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the delivery.

    It’s probably worth looking at why moving files from your mail to a Unix host is ‘massive work’. It shouldn’t be more effort than saving an attachment and then scping it yourself.

    My mail is stored at Gmail. I'd have to click on each of them, save
    them locally and then eventually move it to a UNIX system. (Downloading
    mail through Gmail's POP3 or IMAP backends doesn't seem like a good idea
    for this. I need something simpler. My knowledge is also limited.)
    I'd be better off clicking on each of them, downloading and looking at
    it at my own workstation. But it's the clicking-to-download that is the massive work. Too many clicks to make it fun.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Lew Pitcher on Sun Sep 4 17:09:28 2022
    Lew Pitcher <lew.pitcher@digitalfreehold.ca> writes:

    On Wed, 31 Aug 2022 22:07:17 -0300, Meredith Montgomery wrote:

    [...]

    As an alternative, you could look into one of the many "revision control" systems. I'm thinking specifically of git or cvs, both of which can handle networked commits.

    In theory, your students would "commit" their homework to your repository, and you could then "pull" the homework out to be evaluated. Such revision control systems include user privilege management that you may be able
    to use to limit a student's ability to, for instance, "commit" to another student's homework, or "pull" another student's homework for copying.

    It would take a bit of set-up, but would give you control over what the students can access, and an audit trail of what they /have/ accessed.

    This idea seems very interesting. I think you're saying each student
    would have their own repository and they would push their repository to
    a server (from where I'd pull and look at).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Ben Bacarisse on Sun Sep 4 17:02:50 2022
    Ben Bacarisse <ben.usenet@bsb.me.uk> writes:

    Meredith Montgomery <mmontgomery@levado.to> writes:

    [...]

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work
    of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the
    delivery.

    This is what I used to do. The email had to have the exercise number in
    the subject. I used to use mh, so a simple script could find
    coursework, extract the work and, if appropriate, compile and run tests
    on it.

    I wonder why getting mail onto a Unix system would be such hard work.
    What's going on to make that the case?

    I can't run a MTA in this server because e-mail ports are blocked by the
    ISP. I can pay more and get that out of the way, though.

    But it seems you mean you had a script that would look into an inbox and extract homework from messages. But my mail is not in the UNIX system.
    I'd need a script to POP3-download or IMAP-download or something like
    that. I wouldn't know how to quickly do something like that. I'd feel
    better setting up a new server with an MTA and have mail piped to a
    program.

    E-mail has the downside that the mechanism doesn't report right away
    that the student is using it wrong. A run of scp (if there's no way for
    files to the wrong directory) would always be successful (as long as I
    could name the files).

    I think I'll write a web server that takes file uploads after
    authentication (to identify students). Students would just drag their
    homework and the web server would do the right thing. I'm looking for a quicker solution, but perhaps I'll end up doing just that.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Doug McIntyre on Sun Sep 4 17:22:37 2022
    Doug McIntyre <merlyn@dork.geeks.org> writes:

    Meredith Montgomery <mmontgomery@levado.to> writes:

    [...]

    But what'd really like is to have a program receive each file transfer
    and rename the file, say. In other words, I'd like to associate an scp >>transfer to a script, much like e-mail can invoke a script on a UNIX >>system.

    I like using https://github.com/dutchcoders/transfer.sh/ alot.
    You can upload the files with curl (or a web browser). It'll make a
    new file for each upload.

    You'd have to determine how students differentiate their uploads so
    you don't end up with a random jumble of files. (ie. they must name
    their files after themselves, or student ID or something).

    On the backend, it just creates a random directory to put the file in,
    and then it can't be touched (other than deleted if the delete token
    is captured). You'll end up with all the files in subdirectories of
    where you have the web server dropping files.

    This is interesting, but it's not satisfying the requirement of naming
    files. Naming the file is kind of important to me for avoiding
    conflicts and letting me know who did what. Asking students to put
    their names on their homework is not infallible: authenticating students resolves that: they can't upload until their identification is done.

    Nevertheless, this gives me the idea that if I write a web server for
    the job, we should have an endpoint that students can submit their work
    through the command-line. (A nice interface for the more technical
    people.)

    (*) Tangent

    I dislike asking human beings to pay attention or put things in a
    certain format. This is for computers to do. While we can get a great percentage of students to stick to a format, there's always a minor
    percent that will never do it. Programmers should tell computers to
    check for things and let the user know it's not in the right format.
    Honestly, I feel embarassased asking students to name their files
    properly. I'd rather force them to authenticate themselves. (For
    instance, perhaps just asking their ID in a system is enough. No
    password necessary. Unless we would find we have a problem due to
    mallicious people trying to create havoc, which case we'd put passwords
    in place.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Bruce Horrocks on Sun Sep 4 17:41:55 2022
    Bruce Horrocks <07.013@scorecrow.com> writes:

    On 01/09/2022 02:07, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp.

    [...]

    The suggestions to have your own Unix server receive email are all
    well and good but setting it up *and securing it* is a PITA.

    Good point.

    An alternative is to use Amazon's SES (Simple Email Service) <https://aws.amazon.com/ses/details/>

    Your volumes are probably low enough that the free tier will cover everything, and it's easy to have a script run on receipt of an
    email. Anti-virus scanning of the attachments is automatic.

    That's interesting. I watched a video in which they set up an S3 bucket
    and the mail is stored there. I guess I could then write a program to
    download all files and extract attachments. I'd have to learn to use
    the S3 API. This seems simple enough, elegant enough.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Stefan Ram on Sun Sep 4 17:46:31 2022
    ram@zedat.fu-berlin.de (Stefan Ram) writes:

    Supersedes: <mail-20220902130956@ram.dialup.fu-berlin.de>

    Meredith Montgomery <mmontgomery@levado.to> writes:
    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    written earlier:

    So you have a UNIX system that is online meaning students can
    connect to it via SCP, but this UNIX system does neither have
    a mailserver nor are you allowed to run a mailserver on it?

    Almost right. I can run a mail server, but port 25 is blocked. To have
    it open, I'd need to pay more.

    written later:

    Sorry, I missed the post where you already answered this!

    That's alright.

    I would not say that you "have a server" if you can't run
    a mail server program on it. - If it's just port 25 that's
    blocked then you could use any other port and dispatch a
    specific client to the students that connects to that port.

    If I need to worry about a mail client, I'd just write a web server that authenticate users and gets the files from them --- in a drag-and-drop
    fashion, say.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Computer Nerd Kev@21:1/5 to Meredith Montgomery on Mon Sep 5 09:11:29 2022
    Meredith Montgomery <mmontgomery@levado.to> wrote:
    Ben Bacarisse <ben.usenet@bsb.me.uk> writes:
    Meredith Montgomery <mmontgomery@levado.to> writes:

    [...]

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work >>> of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the
    delivery.

    This is what I used to do. The email had to have the exercise number in
    the subject. I used to use mh, so a simple script could find
    coursework, extract the work and, if appropriate, compile and run tests
    on it.

    I wonder why getting mail onto a Unix system would be such hard work.
    What's going on to make that the case?

    I can't run a MTA in this server because e-mail ports are blocked by the
    ISP. I can pay more and get that out of the way, though.

    But it seems you mean you had a script that would look into an inbox and extract homework from messages. But my mail is not in the UNIX system.
    I'd need a script to POP3-download or IMAP-download or something like
    that. I wouldn't know how to quickly do something like that.

    It shouldn't be hard with Movemail from GNU Mailutils, or
    alternatives like fdm: https://www.mailutils.org/wiki/Fetching_Mail_with_Movemail

    I'd feel better setting up a new server with an MTA and have mail
    piped to a program.

    Mailutils also has Sieve, which allows filtering messages from
    specified mailboxes ("-f"), without involving an MDA.

    E-mail has the downside that the mechanism doesn't report right away
    that the student is using it wrong. A run of scp (if there's no way for files to the wrong directory) would always be successful (as long as I
    could name the files).

    Well email sent should always end up in your mailbox (though
    using Gmail puts this logic at risk because they like to reject
    things that they falsely identify as malicious), so it seems the
    same to me. With email you don't have to set up a separate user on
    the system for each student in order to identify who uploaded what.

    --
    __ __
    #_ < |\| |< _#

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bob Eager@21:1/5 to Meredith Montgomery on Sun Sep 4 23:06:42 2022
    On Sun, 04 Sep 2022 17:22:37 -0300, Meredith Montgomery wrote:

    Nevertheless, this gives me the idea that if I write a web server for
    the job, we should have an endpoint that students can submit their work through the command-line. (A nice interface for the more technical
    people.)

    Have you looked at installing Moodle?



    --
    Using UNIX since v6 (1975)...

    Use the BIG mirror service in the UK:
    http://www.mirrorservice.org

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Computer Nerd Kev on Sun Sep 4 21:37:57 2022
    not@telling.you.invalid (Computer Nerd Kev) writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:
    Ben Bacarisse <ben.usenet@bsb.me.uk> writes:
    Meredith Montgomery <mmontgomery@levado.to> writes:

    [...]

    (*) My thought process leading up to this

    Solution 1. Students could send me e-mails, but I have the massive work >>>> of pulling files from my inbox into a UNIX system where I can look at
    each one. E-mail does the job because it /sort of/ proves the
    delivery.

    This is what I used to do. The email had to have the exercise number in >>> the subject. I used to use mh, so a simple script could find
    coursework, extract the work and, if appropriate, compile and run tests
    on it.

    I wonder why getting mail onto a Unix system would be such hard work.
    What's going on to make that the case?

    I can't run a MTA in this server because e-mail ports are blocked by the
    ISP. I can pay more and get that out of the way, though.

    But it seems you mean you had a script that would look into an inbox and
    extract homework from messages. But my mail is not in the UNIX system.
    I'd need a script to POP3-download or IMAP-download or something like
    that. I wouldn't know how to quickly do something like that.

    It shouldn't be hard with Movemail from GNU Mailutils, or
    alternatives like fdm: https://www.mailutils.org/wiki/Fetching_Mail_with_Movemail

    Thanks for pointers.

    [...]

    E-mail has the downside that the mechanism doesn't report right away
    that the student is using it wrong. A run of scp (if there's no way for
    files to the wrong directory) would always be successful (as long as I
    could name the files).

    Well email sent should always end up in your mailbox (though
    using Gmail puts this logic at risk because they like to reject
    things that they falsely identify as malicious), so it seems the
    same to me. With email you don't have to set up a separate user on
    the system for each student in order to identify who uploaded what.

    You got a point. E-mail has the problem that people say --- I sent it
    ---, but we never got it. In the end it really seems that the HTTP
    server is the easiest to use and the most straightforward alternative.
    It sucks that I have to write it, but I can probably get this done in a weekend, not including the Javascript drag-and-drop, which I'd have to
    learn about.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Bob Eager on Sun Sep 4 21:39:34 2022
    Bob Eager <news0009@eager.cx> writes:

    On Sun, 04 Sep 2022 17:22:37 -0300, Meredith Montgomery wrote:

    Nevertheless, this gives me the idea that if I write a web server for
    the job, we should have an endpoint that students can submit their work
    through the command-line. (A nice interface for the more technical
    people.)

    Have you looked at installing Moodle?

    I've used it before as a student. It's a whole system for such stuff.
    I did not like to use it as a student --- it seemed ugly visually
    speaking.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bob Eager@21:1/5 to Meredith Montgomery on Mon Sep 5 10:19:45 2022
    On Sun, 04 Sep 2022 21:39:34 -0300, Meredith Montgomery wrote:

    Bob Eager <news0009@eager.cx> writes:

    On Sun, 04 Sep 2022 17:22:37 -0300, Meredith Montgomery wrote:

    Nevertheless, this gives me the idea that if I write a web server for
    the job, we should have an endpoint that students can submit their
    work through the command-line. (A nice interface for the more
    technical people.)

    Have you looked at installing Moodle?

    I've used it before as a student. It's a whole system for such stuff.
    I did not like to use it as a student --- it seemed ugly visually
    speaking.

    It is customisable.

    And in any case, it's the functionality that matters.

    As an academic, I found it very good.




    --
    Using UNIX since v6 (1975)...

    Use the BIG mirror service in the UK:
    http://www.mirrorservice.org

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Bob Eager on Tue Sep 6 00:51:19 2022
    Bob Eager <news0009@eager.cx> writes:

    On Sun, 04 Sep 2022 21:39:34 -0300, Meredith Montgomery wrote:

    Bob Eager <news0009@eager.cx> writes:

    On Sun, 04 Sep 2022 17:22:37 -0300, Meredith Montgomery wrote:

    Nevertheless, this gives me the idea that if I write a web server for
    the job, we should have an endpoint that students can submit their
    work through the command-line. (A nice interface for the more
    technical people.)

    Have you looked at installing Moodle?

    I've used it before as a student. It's a whole system for such stuff.
    I did not like to use it as a student --- it seemed ugly visually
    speaking.

    It is customisable.

    And in any case, it's the functionality that matters.

    As an academic, I found it very good.

    Looking at it at

    https://moodle.org/

    right now. It's looking very good, actually. Very different from I saw
    a few years ago at my university. I'm considering that. Thank you for
    the reminder! I would not think of it at all.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Tue Sep 6 12:03:21 2022
    On Sun, 04 Sep 2022 17:09:28 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    This idea seems very interesting. I think you're saying each student
    would have their own repository and they would push their repository to
    a server (from where I'd pull and look at).

    If you want to explore the repository solution, you may be
    interested in fossil, https://www.fossil-scm.org/

    (its architect is the creator of the SQLite database engine)
    --
    Regars,
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Adrian Caspersz@21:1/5 to Meredith Montgomery on Tue Sep 6 17:52:04 2022
    On 01/09/2022 02:07, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)


    Git (and no, not GitHub)

    --
    Adrian C

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Lew Pitcher on Tue Sep 6 22:23:38 2022
    Lew Pitcher <lew.pitcher@digitalfreehold.ca> writes:

    On Wed, 31 Aug 2022 22:07:17 -0300, Meredith Montgomery wrote:

    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    [...]

    As an alternative, you could look into one of the many "revision control" systems. I'm thinking specifically of git or cvs, both of which can handle networked commits.

    In theory, your students would "commit" their homework to your repository, and you could then "pull" the homework out to be evaluated. Such revision control systems include user privilege management that you may be able
    to use to limit a student's ability to, for instance, "commit" to another student's homework, or "pull" another student's homework for copying.

    It would take a bit of set-up, but would give you control over what the students can access, and an audit trail of what they /have/ accessed.

    That really helped! Kees Nuyt in

    <hh6ehh1l21v56f7b66nc7llm2q88oii3ob@dim53.demon.nl>

    ended up mentioning [fossil](https://www.fossil-scm.org/), which
    captivated me with its very straightforward user interface for managing
    the server-side of things. Its password management, for example, is
    very straightforward, so I quickly committed myself to it because you
    feel you can handle it if things ever break, say.

    Now I'm learning to use it. Your idea is to set up a separate
    repository for each student and give access to it only to that student
    (and myself). I can put the homework in the repository, the student
    will clone that, read the assignment, do it and sync it back. I will
    then fetch the changes when grading and I provide feedback on the
    repository itself --- including sending the student's grade back. That
    will work and I like that.

    Thank you so very much! (To you and to Kees Nuyt!)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Tue Sep 6 22:32:27 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Sun, 04 Sep 2022 17:09:28 -0300, Meredith Montgomery <mmontgomery@levado.to> wrote:

    This idea seems very interesting. I think you're saying each student
    would have their own repository and they would push their repository to
    a server (from where I'd pull and look at).

    If you want to explore the repository solution, you may be
    interested in fossil, https://www.fossil-scm.org/

    (its architect is the creator of the SQLite database engine)

    Thank you so very much. The software captivated me. Now I'm learning
    how to use it. My first thought was to make a repository for each
    student and give them clone, password, check-in and check-out
    permissions (I suppose that's what I need).

    Would I have to put up a web server for each student? I guess so! They
    must be able to clone it, after all. Perhaps you guys are thinking of a
    single repository with permissions on a branch basis, so I create a
    branch for each student? I don't know. Probably, right? Running so
    many servers would be nightmare.

    I'd have to learn how to set permission on a branch basis or something
    like that. I don't know. I gotta learn how to do this.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Wed Sep 7 15:10:48 2022
    On Tue, 06 Sep 2022 22:32:27 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:


    Thank you so very much. The software captivated me.

    My pleasure.

    Now I'm learning
    how to use it. My first thought was to make a repository for each
    student and give them clone, password, check-in and check-out
    permissions (I suppose that's what I need).

    That will work.

    Would I have to put up a web server for each student? I guess so! They
    must be able to clone it, after all.

    Perhaps you guys are thinking of a
    single repository with permissions on a branch basis, so I create a
    branch for each student? I don't know. Probably, right?

    In fossil, permissions are given for the whole repository, there
    are no per-branch permissions.

    Running so
    many servers would be nightmare.

    That would be a nightmare indeed. Luckily it is not needed. One
    webserver will do. Fossil can run as CGI, with one simple CGI
    script per repository.

    For example, I run about 35 fossil repostories behind one
    lighttpd web server. Each repository can be accessed with:

    https://sub.domain.tld/fossil/REPONAME

    Directory structure:

    /var
    +-fossil
    +-cgi
    +-repo


    The repo directory contains a file for each repository,
    with the name REPONAME.fossil.
    Note: the /var/fossil/repo and the .fossil files in it must be
    writable by the webserver user (www-data)

    The cgi directory contains a CGI script for each repository, /var/fossil/cgi/REPONAME, mode -r-xr-x---
    user:group: www-data:www-data
    containing just:

    #!/usr/local/bin/fossil
    repository: /var/fossil/repo/REPONAME.fossil

    Lighttpd configuration snippet:
    #
    ## CGI for fossil reposiitories
    #
    $HTTP["url"] =~ "^/fossil" {
    alias.url += ( "/fossil/" => "/var/fossil/cgi/" )
    cgi.assign = ( "" => "" )
    }


    I'd have to learn how to set permission on a branch basis or something
    like that. I don't know. I gotta learn how to do this.

    You can script the creation of the per-student repository and
    the cgi scripts.
    The student should get developer permissions for his/her repo on
    the server.

    You create the repos on your server,
    The students clone their own repo to their own machine and open
    a checkouyt.
    They automatically have all permissions on that local clone.

    They checkin their work to the local repo and sync that with
    their repo on the server.
    You can checkout on the server to a per student directory, or
    extract files directly from the repo.

    docs: the fossil-scm website and :
    fossil help user
    fossil help new
    fossil help clone
    fossil help settings
    fossil help cat

    https://www.fossil-scm.org/home/doc/trunk/www/server/ https://www.fossil-scm.org/home/doc/trunk/www/server/any/cgi.md

    Community:
    https://fossil-scm.org/forum/forum

    --
    Good luck,
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Wed Sep 7 16:03:09 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Tue, 06 Sep 2022 22:32:27 -0300, Meredith Montgomery

    [...]

    Would I have to put up a web server for each student? I guess so! They
    must be able to clone it, after all.

    Perhaps you guys are thinking of a
    single repository with permissions on a branch basis, so I create a
    branch for each student? I don't know. Probably, right?

    In fossil, permissions are given for the whole repository, there
    are no per-branch permissions.

    Thanks!

    Running so many servers would be [a] nightmare.

    That would be a nightmare indeed. Luckily it is not needed. One
    webserver will do. Fossil can run as CGI, with one simple CGI
    script per repository.

    I'm running nginx. So I'm gonna have to learn how to run at least one
    CGI and I'm having a hard time understanding the problem here. I'm
    running OpenBSD 7.

    %uname -a
    OpenBSD my.host.name 7.0 GENERIC.MP#232 amd64
    %

    My revelant nginx.conf is essentially this:

    --8<---------------cut here---------------start------------->8---
    http {
    # [...]

    server {
    listen 80;
    server_name my.host.name;
    location /cgi/ {
    gzip off;
    root /students/cgi;
    fastcgi_pass unix:/students/cgi.socket;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /students/cgi$fastcgi_script_name;
    }
    }
    }
    --8<---------------cut here---------------end--------------->8---

    I wrote

    %cat /students/cgi/test.cgi
    #!/bin/sh
    echo "Content-type: text/plain"
    echo
    echo "Today is $(date). Thank you for coming."
    %

    %pwd
    /students

    %ls -lR .
    .:
    total 8
    drwxr-xr-x 2 www wheel 512 Sep 7 15:41 cgi
    prw------- 1 www wheel 0 Sep 7 15:21 cgi.socket

    ./cgi:
    total 8
    -rwxr-xr-x 1 www wheel 94 Sep 7 15:41 test.cgi
    %

    When my browser hits

    http://my.hostname/cgi/test.cgi

    I get 502 bad gateway on the web and I see in the logs --- breaking long
    lines into at most 72 columns. (I hope that's useful.)

    --8<---------------cut here---------------start------------->8---
    2022/09/07 15:24:56 [crit] 48490#0: *42 connect() to
    unix:/students/cgi.socket failed (38: Socket operation on non-socket)
    while connecting to upstream, client: 1.2.3.4, server: my.host.name,
    request: "GET /cgi/test.cgi HTTP/1.1", upstream: "fastcgi://unix:/students/cgi.socket:", host: "my.host.name" 2022/09/07

    15:24:56 [crit] 48490#0: *42 connect() to unix:/students/cgi.socket
    failed (38: Socket operation on non-socket) while connecting to
    upstream, client: 1.2.3.4, server: my.host.name, request: "GET
    /cgi/test.cgi HTTP/1.1", upstream:
    "fastcgi://unix:/students/cgi.socket:", host: "my.host.name" 2022/09/07

    15:24:56 [crit] 48490#0: *42 connect() to unix:/students/cgi.socket
    failed (38: Socket operation on non-socket) while connecting to
    upstream, client: 1.2.3.4, server: my.host.name, request: "GET
    /cgi/test.cgi HTTP/1.1", upstream:
    "fastcgi://unix:/students/cgi.socket:", host: "my.host.name" --8<---------------cut here---------------end--------------->8---

    I'm changing my real IP address up there and my real hostname.

    Looking at errno(2), I see

    --8<---------------cut here---------------start------------->8---
    38 ENOTSOCK Socket operation on non-socket. Self-explanatory. --8<---------------cut here---------------end--------------->8---

    I'm puzzled. It seems nginx is trying to call connect() on the UNIX
    domain socket, which I guess is possible, but I would have expected a
    simple open() on the named pipe.

    If I don't create the named pipe, nginx reports ``no such file or
    directory''. When I create it, I get the above. I created it with
    ``mkfifo cgi.socket''. (Then changed owner, changed permissions.)

    The documentation at

    https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html

    says I'm doing the right thing:

    ``fastcgi_pass unix:/tmp/fastcgi.socket;''

    So I'm stuck there.

    I'll follow your approach with the repositories. Thank you!

    I'll run lighthttpd if I have to.

    For example, I run about 35 fossil repostories behind one
    lighttpd web server. Each repository can be accessed with:

    https://sub.domain.tld/fossil/REPONAME

    Directory structure:

    /var
    +-fossil
    +-cgi
    +-repo


    The repo directory contains a file for each repository,
    with the name REPONAME.fossil.
    Note: the /var/fossil/repo and the .fossil files in it must be
    writable by the webserver user (www-data)

    The cgi directory contains a CGI script for each repository, /var/fossil/cgi/REPONAME, mode -r-xr-x---
    user:group: www-data:www-data
    containing just:

    #!/usr/local/bin/fossil
    repository: /var/fossil/repo/REPONAME.fossil

    Lighttpd configuration snippet:
    #
    ## CGI for fossil reposiitories
    #
    $HTTP["url"] =~ "^/fossil" {
    alias.url += ( "/fossil/" => "/var/fossil/cgi/" )
    cgi.assign = ( "" => "" )
    }


    I'd have to learn how to set permission on a branch basis or something
    like that. I don't know. I gotta learn how to do this.

    You can script the creation of the per-student repository and
    the cgi scripts.
    The student should get developer permissions for his/her repo on
    the server.

    You create the repos on your server,
    The students clone their own repo to their own machine and open
    a checkouyt.

    You have a typo here. The letters yt are neighors in an american
    keyboard. But yt is also present in your name. So maybe that's why you
    had this typo here. We have two possibilities here and it doesn't seem
    easy to tell which is the right one.

    ``We must know. We will know.'' -- David Hilbert

    They automatically have all permissions on that local clone.

    They checkin their work to the local repo and sync that with
    their repo on the server.
    You can checkout on the server to a per student directory, or
    extract files directly from the repo.

    docs: the fossil-scm website and :
    fossil help user
    fossil help new
    fossil help clone
    fossil help settings
    fossil help cat

    https://www.fossil-scm.org/home/doc/trunk/www/server/ https://www.fossil-scm.org/home/doc/trunk/www/server/any/cgi.md

    Community:
    https://fossil-scm.org/forum/forum

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Wed Sep 7 23:21:21 2022
    On Wed, 07 Sep 2022 16:03:09 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    [...]

    I'm running nginx. So I'm gonna have to learn how to run at least one
    CGI and I'm having a hard time understanding the problem here. I'm
    running OpenBSD 7.

    I think you are stuck because you tried a mix of fastcgi and
    plain cgi.
    The simple CGI script I showed will not work for FastCGI or
    SCGI.

    Not running nginx myself I can only refer to this matrix : https://www.fossil-scm.org/home/doc/trunk/www/server/#matrix

    [...]

    I'll run lighthttpd if I have to.

    For small scale sites lighttpd is pretty good.
    Another, even lighter alternative is althttpd.
    https://sqlite.org/althttpd/
    (A single C-source you can compile yourself)

    [...]

    The students clone their own repo to their own machine and open
    a checkouyt.

    You have a typo here. The letters yt are neighors in an american
    keyboard. But yt is also present in your name.

    Yeah, I often fat-finger t and y and u and y :D
    Here, I meant to type checkout.

    --
    Regards,
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rich@21:1/5 to Meredith Montgomery on Wed Sep 7 22:34:33 2022
    Meredith Montgomery <mmontgomery@levado.to> wrote:
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 16:03:09 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    [...]

    I'm running nginx. So I'm gonna have to learn how to run at least one
    CGI and I'm having a hard time understanding the problem here. I'm
    running OpenBSD 7.

    I think you are stuck because you tried a mix of fastcgi and plain
    cgi. The simple CGI script I showed will not work for FastCGI or
    SCGI.

    I got puzzled there, but I'll let that one go and try your next
    suggestions.

    FastCGI and SCGI are ways of making basic CGI 'faster' in a high load environment.

    Unless all your students all try to upload exactly one minute before
    any deadline, you likely don't need the performance boost from either.
    And, even then, unless you have enough students or a very underpowered
    system, the load likely won't cause any harm.

    Look into how to enable plain, basic, standard, CGI with nginx. There
    is likely some way to do so (I don't run nginx, so I can't provide any
    advice as to 'what' to do).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to lew.pitcher@digitalfreehold.ca on Wed Sep 7 23:03:55 2022
    Lew Pitcher <lew.pitcher@digitalfreehold.ca> wrote:
    As an alternative, you could look into one of the many "revision control" >systems. I'm thinking specifically of git or cvs, both of which can handle >networked commits.

    In theory, your students would "commit" their homework to your repository, >and you could then "pull" the homework out to be evaluated. Such revision >control systems include user privilege management that you may be able
    to use to limit a student's ability to, for instance, "commit" to another >student's homework, or "pull" another student's homework for copying.

    Not only that, but the student can pull a framework and a datafile,
    write the code and push that back. Permissions will keep them from
    pushing a new datafile to screw up other students.

    This is by far the best idea so far, and part of what makes it so good is
    that it's bidirectional and any changes can be seen and rolled back. But another part of why it's so good is that in the real world students will
    find themselves having to work this way so they might as well get used to
    it as quickly as possible.

    If it were me I would recommend svn or git. They both are very good for teaching the basic source code control concepts, but unfortunately they
    use totally different language in their documentation to mean the same
    things. This means moving from one to the other can be confusing even
    though in the end they really do the same things underneath.
    --scott

    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Wed Sep 7 19:29:35 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 16:03:09 -0300, Meredith Montgomery <mmontgomery@levado.to> wrote:

    [...]

    I'm running nginx. So I'm gonna have to learn how to run at least one
    CGI and I'm having a hard time understanding the problem here. I'm
    running OpenBSD 7.

    I think you are stuck because you tried a mix of fastcgi and plain
    cgi. The simple CGI script I showed will not work for FastCGI or
    SCGI.

    I got puzzled there, but I'll let that one go and try your next
    suggestions.

    Not running nginx myself I can only refer to this matrix : https://www.fossil-scm.org/home/doc/trunk/www/server/#matrix

    [...]

    I'll run lighthttpd if I have to.

    For small scale sites lighttpd is pretty good.
    Another, even lighter alternative is althttpd.
    https://sqlite.org/althttpd/
    (A single C-source you can compile yourself)

    Sounds good. But I would not like to replace nginx completely because
    it answers many other hostnames. I'm thinking I can use nginx as a
    proxy to althttpd --- just so I don't have to ask users to memorize port numbers in their web addresses. I'll try that. (I like the
    single-source I can compile myself.)

    [...]

    The students clone their own repo to their own machine and open
    a checkouyt.

    You have a typo here. The letters yt are neighors in an american
    keyboard. But yt is also present in your name.

    Yeah, I often fat-finger t and y and u and y :D
    Here, I meant to type checkout.

    I'm glad you got a sense of humor. :D

    Thank you!

    I'll write again. (More later!)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to mmontgomery@levado.to on Wed Sep 7 23:05:52 2022
    Meredith Montgomery <mmontgomery@levado.to> wrote:

    I can't run a MTA in this server because e-mail ports are blocked by the
    ISP. I can pay more and get that out of the way, though.

    Your ISP sure has an awful lot of spammers using their service, though.
    Maybe they only allow outgoing mail and not incoming? Perhaps you should
    get a competent ISP.

    But it seems you mean you had a script that would look into an inbox and >extract homework from messages. But my mail is not in the UNIX system.

    There's your problem, right there.
    --scott

    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Scott Dorsey on Wed Sep 7 21:03:00 2022
    kludge@panix.com (Scott Dorsey) writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:

    I can't run a MTA in this server because e-mail ports are blocked by the >>ISP. I can pay more and get that out of the way, though.

    Your ISP sure has an awful lot of spammers using their service, though.
    Maybe they only allow outgoing mail and not incoming? Perhaps you should
    get a competent ISP.

    I think they think their price is really low and spammers would buy
    these servers just to send out mail. I've no idea. It's what it is. I
    don't mind paying more for a nice server. But we gotta do one thing at
    a time.

    But it seems you mean you had a script that would look into an inbox and >>extract homework from messages. But my mail is not in the UNIX system.

    There's your problem, right there.
    --scott

    Lol. We can agree on that.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Rich on Wed Sep 7 21:00:48 2022
    Rich <rich@example.invalid> writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 16:03:09 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    [...]

    I'm running nginx. So I'm gonna have to learn how to run at least one >>>> CGI and I'm having a hard time understanding the problem here. I'm
    running OpenBSD 7.

    I think you are stuck because you tried a mix of fastcgi and plain
    cgi. The simple CGI script I showed will not work for FastCGI or
    SCGI.

    I got puzzled there, but I'll let that one go and try your next
    suggestions.

    FastCGI and SCGI are ways of making basic CGI 'faster' in a high load environment.

    Unless all your students all try to upload exactly one minute before
    any deadline, you likely don't need the performance boost from either.
    And, even then, unless you have enough students or a very underpowered system, the load likely won't cause any harm.

    Look into how to enable plain, basic, standard, CGI with nginx. There
    is likely some way to do so (I don't run nginx, so I can't provide any
    advice as to 'what' to do).

    Like someone here has said, it seems nginx doesn't support the classic
    CGI. They support fastCGI and SCGI. I'm out of luck there. My hope is
    that I can run another web server that does CGI --- run it in at port X
    --- and then have nginx act as a proxy for it. (Just so I don't have to replace nginx completely.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Scott Dorsey on Wed Sep 7 20:59:17 2022
    kludge@panix.com (Scott Dorsey) writes:

    Lew Pitcher <lew.pitcher@digitalfreehold.ca> wrote:
    As an alternative, you could look into one of the many "revision control" >>systems. I'm thinking specifically of git or cvs, both of which can handle >>networked commits.

    In theory, your students would "commit" their homework to your repository, >>and you could then "pull" the homework out to be evaluated. Such revision >>control systems include user privilege management that you may be able
    to use to limit a student's ability to, for instance, "commit" to another >>student's homework, or "pull" another student's homework for copying.

    Not only that, but the student can pull a framework and a datafile,
    write the code and push that back. Permissions will keep them from
    pushing a new datafile to screw up other students.

    This is by far the best idea so far, and part of what makes it so good is that it's bidirectional and any changes can be seen and rolled back. But another part of why it's so good is that in the real world students will
    find themselves having to work this way so they might as well get used to
    it as quickly as possible.

    You're totally right. The best idea and, indeed, they should get
    exposed to such tools. (It's the real world.)

    If it were me I would recommend svn or git. They both are very good for teaching the basic source code control concepts, but unfortunately they
    use totally different language in their documentation to mean the same things. This means moving from one to the other can be confusing even
    though in the end they really do the same things underneath.
    --scott

    I'm well used to git, but fossil seems rather simple to use, too, and it
    comes ready with this nice web interface too --- which I believe will be
    very useful for students to understand the commands they type.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Meredith Montgomery on Wed Sep 7 22:23:35 2022
    Meredith Montgomery <mmontgomery@levado.to> writes:

    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 16:03:09 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    [...]

    I'm running nginx. So I'm gonna have to learn how to run at least one
    CGI and I'm having a hard time understanding the problem here. I'm
    running OpenBSD 7.

    I think you are stuck because you tried a mix of fastcgi and plain
    cgi. The simple CGI script I showed will not work for FastCGI or
    SCGI.

    I got puzzled there, but I'll let that one go and try your next
    suggestions.

    Not running nginx myself I can only refer to this matrix :
    https://www.fossil-scm.org/home/doc/trunk/www/server/#matrix

    [...]

    I'll run lighthttpd if I have to.

    For small scale sites lighttpd is pretty good.
    Another, even lighter alternative is althttpd.
    https://sqlite.org/althttpd/
    (A single C-source you can compile yourself)

    Sounds good. But I would not like to replace nginx completely because
    it answers many other hostnames. I'm thinking I can use nginx as a
    proxy to althttpd --- just so I don't have to ask users to memorize port numbers in their web addresses. I'll try that. (I like the
    single-source I can compile myself.)

    I have a few small victories. At first glance, althttpd has a weak
    error reporting. It silently refuses to do some impossible things.
    With some trial and error, I managed to see what it wanted.

    I asked nginx to be a proxy for althttpd.

    What's the new obstacle? I must find a way to tell fossil that the base
    URL is another one. It is trying to load CSS from
    http://localhost:1234. That's wrong. It should try to load it from https:/my.host.name/style.css. Fossil's /server/ command accepts the
    option --baseurl URL, which I've used before when I was running fossil's
    server stand-alone. Now I must somehow instruct fossil's CGI script. I
    wonder how.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Meredith Montgomery on Wed Sep 7 23:49:35 2022
    Meredith Montgomery <mmontgomery@levado.to> writes:

    Meredith Montgomery <mmontgomery@levado.to> writes:

    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 16:03:09 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    [...]

    I'm running nginx. So I'm gonna have to learn how to run at least one >>>> CGI and I'm having a hard time understanding the problem here. I'm
    running OpenBSD 7.

    I think you are stuck because you tried a mix of fastcgi and plain
    cgi. The simple CGI script I showed will not work for FastCGI or
    SCGI.

    I got puzzled there, but I'll let that one go and try your next
    suggestions.

    Not running nginx myself I can only refer to this matrix :
    https://www.fossil-scm.org/home/doc/trunk/www/server/#matrix

    [...]

    I'll run lighthttpd if I have to.

    For small scale sites lighttpd is pretty good.
    Another, even lighter alternative is althttpd.
    https://sqlite.org/althttpd/
    (A single C-source you can compile yourself)

    Sounds good. But I would not like to replace nginx completely because
    it answers many other hostnames. I'm thinking I can use nginx as a
    proxy to althttpd --- just so I don't have to ask users to memorize port
    numbers in their web addresses. I'll try that. (I like the
    single-source I can compile myself.)

    I have a few small victories. At first glance, althttpd has a weak
    error reporting. It silently refuses to do some impossible things.
    With some trial and error, I managed to see what it wanted.

    I asked nginx to be a proxy for althttpd.

    What's the new obstacle? I must find a way to tell fossil that the base
    URL is another one. It is trying to load CSS from
    http://localhost:1234. That's wrong. It should try to load it from https:/my.host.name/style.css. Fossil's /server/ command accepts the
    option --baseurl URL, which I've used before when I was running fossil's server stand-alone. Now I must somehow instruct fossil's CGI script. I wonder how.

    I was a bit in the wrong direction. I gave up on althttpd, then used
    fossil stand-alone server and used nginx as a proxy server. Running
    fossil's stand-alone web server, I was able to specify the --baseurl
    option. We're done. Now I need to just study enough of fossil to set
    up users and begin using it. Phew! That was a lot of work! Very hard
    to get it done. Thank you so much for your attention. You're great!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Thu Sep 8 09:13:53 2022
    On Wed, 07 Sep 2022 20:59:17 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    I'm well used to git, but fossil seems rather simple to use, too, and it comes ready with this nice web interface too --- which I believe will be
    very useful for students to understand the commands they type.

    And when you need it, fossil includes ticketing, a forum and a
    developer chat room. All in that same one executable.

    For projects like this, I would add one fossil repository for a
    forum for all students, a forum per student would be a bit
    silly.

    I'm glad you are making progress, nginx can be a tough cookie.

    --
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Thu Sep 8 10:42:03 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 20:59:17 -0300, Meredith Montgomery <mmontgomery@levado.to> wrote:

    I'm well used to git, but fossil seems rather simple to use, too, and it
    comes ready with this nice web interface too --- which I believe will be
    very useful for students to understand the commands they type.

    And when you need it, fossil includes ticketing, a forum and a
    developer chat room. All in that same one executable.

    Yeah, in fact it even seems like too much. <sarcasm>Let's write an
    email to the author (not open a ticket!) asking him to, please,
    *enhance* the software with an embedded NNTP server (and client, please) because *we personally believe* that NNTP is clearly the
    future.</sarcasm>

    For projects like this, I would add one fossil repository for a
    forum for all students, a forum per student would be a bit
    silly.

    It would. That's an idea, but if I were to offer them a forum, I'd take
    the opportunity and present NNTP to them: I doubt they'd have a second
    chance to get to know it.

    I'm glad you are making progress, nginx can be a tough cookie.

    I'm glad you're here! It's tough to think by oneself. (Thank you!)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rich@21:1/5 to Meredith Montgomery on Thu Sep 8 15:18:32 2022
    Meredith Montgomery <mmontgomery@levado.to> wrote:
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 20:59:17 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    I'm well used to git, but fossil seems rather simple to use, too, and it >>> comes ready with this nice web interface too --- which I believe will be >>> very useful for students to understand the commands they type.

    And when you need it, fossil includes ticketing, a forum and a
    developer chat room. All in that same one executable.

    Yeah, in fact it even seems like too much. <sarcasm>Let's write an
    email to the author (not open a ticket!) asking him to, please,
    *enhance* the software with an embedded NNTP server (and client, please) because *we personally believe* that NNTP is clearly the
    future.</sarcasm>

    The author of Fossil is also the author of SQLite.

    But in any case, if you consider Fossil's intended use case:
    distributed software development by a team of open source/free software developers, most of those projects are going to want one or more of:

    Source control, trouble/bug tickets, a website, a forum, etc...

    Fossil is simply combining, into a single module, most of the common
    items that "distributed open source development teams" will want,
    obviating the need to deploy each individually and separately.

    So the 'combination', looked at in the light of the intended use, has
    some logic behind it. It is an "all in one, non-proprietary,
    solution" for distributed software development.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Rich on Thu Sep 8 19:11:03 2022
    Rich <rich@example.invalid> writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Wed, 07 Sep 2022 20:59:17 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    I'm well used to git, but fossil seems rather simple to use, too, and it >>>> comes ready with this nice web interface too --- which I believe will be >>>> very useful for students to understand the commands they type.

    And when you need it, fossil includes ticketing, a forum and a
    developer chat room. All in that same one executable.

    Yeah, in fact it even seems like too much. <sarcasm>Let's write an
    email to the author (not open a ticket!) asking him to, please,
    *enhance* the software with an embedded NNTP server (and client, please)
    because *we personally believe* that NNTP is clearly the
    future.</sarcasm>

    The author of Fossil is also the author of SQLite.

    But in any case, if you consider Fossil's intended use case:
    distributed software development by a team of open source/free software developers, most of those projects are going to want one or more of:

    Source control, trouble/bug tickets, a website, a forum, etc...

    Fossil is simply combining, into a single module, most of the common
    items that "distributed open source development teams" will want,
    obviating the need to deploy each individually and separately.

    So the 'combination', looked at in the light of the intended use, has
    some logic behind it. It is an "all in one, non-proprietary,
    solution" for distributed software development.

    It's really great.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Meredith Montgomery on Thu Sep 8 19:20:06 2022
    Meredith Montgomery <mmontgomery@levado.to> writes:

    [...]

    I'll write again. (More later!)

    I think I'm done. Here's my script. Let /r/ represent the path that represents the student's repository. I create it with

    fs init $r

    Since I created it, I'm the owner --- capability /s/. I open $r, create
    a user for the student with

    fs user new username email password

    I give the student enough permission (no category involved)

    fs user capabilities jpmab beghiopxz

    Now I remove all public access with

    fossil user capabilities anonymous ''
    fossil user capabilities nobody ''
    fossil user capabilities reader ''
    fossil user capabilities developer ''

    Now I have full privileges and the user is a reader /union/ developer.

    Finally, I give it a nice random project name as a warm welcome to the
    student.

    fossil sqlite -R $r \
    "replace into config (name, value, mtime) \
    values ('project-name', 'Nice Name', now());"

    That's it. Should I close it now --- because I opened it? I'm not
    sure. I'm not quite sure what open or close really do.

    I think that's it. Thank you again!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Fri Sep 9 13:44:31 2022
    On Thu, 08 Sep 2022 19:20:06 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    Now I have full privileges and the user is a reader /union/ developer.

    If you plan to ever use "unversioned files", the students and
    you also need "y" permission.

    Finally, I give it a nice random project name as a warm welcome to the student.

    fossil sqlite -R $r \
    "replace into config (name, value, mtime) \
    values ('project-name', 'Nice Name', now());"

    Great! Congratulations. You mastered fossil within a week more
    than I did in over 3 months :D

    That's it. Should I close it now --- because I opened it? I'm not
    sure. I'm not quite sure what open or close really do.

    "open' means the directory is considered a checkout of the
    repository. "closed" means the relation between repository and
    checkout is removed.

    That relation is maintained in a database called ".fslckout" at
    the root of the checkout directory tree. The repository itself
    also contains pointers to associated checkouts.
    Use "fossil all info" to verify.

    If you plan to checkout the students work (new version) after it
    arrives, you have to leave it open.
    If you collect the students work with something like
    "fossil cat ... -R path/to/repo -r VERSION", you can close it

    Sudents obviously need a local clone of their personal
    repository on their own machine, and they can only "fossil add"
    new files and checkin with "fossil commit -m 'description' "
    when the repository is opened in a checkout directory on their
    machine. They will automatically have all permissions on their
    local repo.

    Note: fossil allows multiple ckeckout directories for the same
    repository, each on its own branch or version.

    I hope this answers your question.
    --
    regards,
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From sail0r@21:1/5 to mmontgomery@levado.to on Sat Sep 10 21:52:49 2022
    On Aug 31, 2022 at 9:07:17 PM EDT, "Meredith Montgomery" <mmontgomery@levado.to> wrote:

    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. [snip]

    Most every educational institution I am aware of uses GitHub Classroom tools for this sort of thing.

    Your question reminds me of the hand crafted systems schools used to build
    back in the 90s and early 2000s. The world has moved on, for the most part.

    What is the nature of your "teaching" where you don't have access to the
    latest tools? Blackboard, Brightspace, GiitHub Classroom, Google Classroom,
    etc

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jorgen Grahn@21:1/5 to Meredith Montgomery on Sat Sep 10 22:34:55 2022
    On Thu, 2022-09-01, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp. But I have not solved all what I want to
    solve. (Such students are expected to be technical enough to use scp.)

    I'm thinking of scp because it's solid enough. It's simple. It works.
    I end up having all of the work centralized in a UNIX system. I get
    dates et cetera.

    I'd use Git (with ssh as the authentication and transport mechanism).
    It's a system designed for sharing source code changes in a controlled
    way, after all.

    The workflow could be:

    - You create a $course/$exercise repository with the exercise in it,
    possibly some boiler-plate code or unit tests.
    - The student clones it to a $course/$exercise/$student repository
    and gives you access. Perhaps you'd need GitLab or a similar web frontend
    for this part.
    - You poll this repository and find an acceptable solution to $exercise.
    You say so by adding an "ok" commit, or copying it to a repository of
    accepted solutions, or something.

    No doubt teachers have come up with working versions of this workflow
    already.

    Ssh is a good authentication and transport mechanism for Git.

    /Jorgen

    --
    // Jorgen Grahn <grahn@ Oo o. . .
    \X/ snipabacken.se> O o .

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Tue Sep 13 00:10:10 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Thu, 08 Sep 2022 19:20:06 -0300, Meredith Montgomery <mmontgomery@levado.to> wrote:

    Now I have full privileges and the user is a reader /union/ developer.

    If you plan to ever use "unversioned files", the students and
    you also need "y" permission.

    I won't use unversioned files. (I won't have files changing very often,
    for instance, if I understand what unversioned files are for.)

    Finally, I give it a nice random project name as a warm welcome to the
    student.

    fossil sqlite -R $r \
    "replace into config (name, value, mtime) \
    values ('project-name', 'Nice Name', now());"

    By the way,

    fossil init [...] --project-name "Nice Name" does the job.

    Great! Congratulations. You mastered fossil within a week more
    than I did in over 3 months :D

    Lol. Thanks for the encouragement!

    That's it. Should I close it now --- because I opened it? I'm not
    sure. I'm not quite sure what open or close really do.

    "open' means the directory is considered a checkout of the
    repository. "closed" means the relation between repository and
    checkout is removed.

    Thank you. This makes sense.

    That relation is maintained in a database called ".fslckout" at
    the root of the checkout directory tree.

    On Win32, they call it _FOSSIL_.

    The repository itself also contains pointers to associated checkouts.
    Use "fossil all info" to verify.

    Thank you. That's good info. I'm on Win32, so ``fossil all info''
    seems to read %LOCALAPPDATA%'s file _fossil. I'd like to keep this file
    in a certain specific place --- for portably carrying it over with me
    wherever I go. I might need to understand some environment variables?

    When I clone a repository, I see

    config-db: C:/Users/x/AppData/Local/_fossil

    when I ``fossil status''. I'd also like to keep this _fossil somewhere specific so I can carry it with me wherever I go with my pendrive.

    If you plan to checkout the students work (new version) after it
    arrives, you have to leave it open.
    If you collect the students work with something like
    "fossil cat ... -R path/to/repo -r VERSION", you can close it

    This is making sense. I'll keep them open.

    Sudents obviously need a local clone of their personal
    repository on their own machine, and they can only "fossil add"
    new files and checkin with "fossil commit -m 'description' "
    when the repository is opened in a checkout directory on their
    machine. They will automatically have all permissions on their
    local repo.

    This makes sense. Let me ask --- what are the steps and knowledge
    required on the student's part? I think they need to

    clone
    add
    commit

    and eventually

    update.

    They need to update to find out if changes were made to their repository
    --- I'll tell their grades by making changes to their own files, which
    will be good to allow us to give them a very precise feedback.

    [...]

    I hope this answers your question.

    It does. Thank you so much for your kind attention.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Tue Sep 13 09:19:25 2022
    On Tue, 13 Sep 2022 00:10:10 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    I won't use unversioned files. (I won't have files changing very often,
    for instance, if I understand what unversioned files are for.)

    Ok.

    ... I'm on Win32, so ``fossil all info''
    seems to read %LOCALAPPDATA%'s file _fossil. I'd like to keep this file
    in a certain specific place --- for portably carrying it over with me wherever I go. I might need to understand some environment variables?

    When I clone a repository, I see

    config-db: C:/Users/x/AppData/Local/_fossil

    when I ``fossil status''. I'd also like to keep this _fossil somewhere specific so I can carry it with me wherever I go with my pendrive.

    Yes, on Windows, fossil looks for "_fossil"
    in these directories, in order:
    FOSSIL_HOME
    LOCALAPPDATA
    APPDATA
    USERPROFILE
    HOMEDRIVE HOMEPATH
    The first in this list that has a value decides.
    So, set environment variable FOSSIL_HOME and you're done.

    ... Let me ask --- what are the steps and knowledge
    required on the student's part? I think they need to

    clone
    add
    commit

    and eventually

    update.

    They need to update to find out if changes were made to their repository
    --- I'll tell their grades by making changes to their own files, which
    will be good to allow us to give them a very precise feedback.

    Nice.

    Also useful :
    changes
    info
    ls
    extras
    diff
    timeline -v
    sync (if autosync is off)
    rm (delete)
    mv (rename)

    --
    Regards,
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Tue Sep 13 16:48:38 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Tue, 13 Sep 2022 00:10:10 -0300, Meredith Montgomery <mmontgomery@levado.to> wrote:

    [...]

    ... I'm on Win32, so ``fossil all info''
    seems to read %LOCALAPPDATA%'s file _fossil. I'd like to keep this file
    in a certain specific place --- for portably carrying it over with me
    wherever I go. I might need to understand some environment variables?

    When I clone a repository, I see

    config-db: C:/Users/x/AppData/Local/_fossil

    when I ``fossil status''. I'd also like to keep this _fossil somewhere
    specific so I can carry it with me wherever I go with my pendrive.

    Yes, on Windows, fossil looks for "_fossil"
    in these directories, in order:
    FOSSIL_HOME
    LOCALAPPDATA
    APPDATA
    USERPROFILE
    HOMEDRIVE HOMEPATH
    The first in this list that has a value decides.
    So, set environment variable FOSSIL_HOME and you're done.

    Perfect. Thank you!

    ... Let me ask --- what are the steps and knowledge
    required on the student's part? I think they need to

    clone
    add
    commit

    and eventually

    update.

    They need to update to find out if changes were made to their repository
    --- I'll tell their grades by making changes to their own files, which
    will be good to allow us to give them a very precise feedback.

    Nice.

    Also useful :
    changes
    info
    ls
    extras
    diff
    timeline -v
    sync (if autosync is off)
    rm (delete)
    mv (rename)

    Thanks! Minus v in timeline is nice. I also figured out the basic
    usage of diff, but I will need more time to even need more commands.
    More questions soon! Thank you so much!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Tue Sep 13 23:22:02 2022
    On Tue, 13 Sep 2022 16:48:38 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    More questions soon!

    No problem.

    Thank you so much!

    My pleasure.
    --
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Bruce Horrocks@21:1/5 to Meredith Montgomery on Wed Sep 14 00:23:22 2022
    On 04/09/2022 21:41, Meredith Montgomery wrote:
    Bruce Horrocks <07.013@scorecrow.com> writes:

    On 01/09/2022 02:07, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload
    their homework through scp.

    [...]

    The suggestions to have your own Unix server receive email are all
    well and good but setting it up *and securing it* is a PITA.

    Good point.

    An alternative is to use Amazon's SES (Simple Email Service)
    <https://aws.amazon.com/ses/details/>

    Your volumes are probably low enough that the free tier will cover
    everything, and it's easy to have a script run on receipt of an
    email. Anti-virus scanning of the attachments is automatic.

    That's interesting. I watched a video in which they set up an S3 bucket
    and the mail is stored there. I guess I could then write a program to download all files and extract attachments. I'd have to learn to use
    the S3 API. This seems simple enough, elegant enough.

    No need to learn the S3 API if you don't want to as an S3 bucket can be
    mounted as a filesystem.

    <https://cloud.netapp.com/blog/amazon-s3-as-a-file-system>

    --
    Bruce Horrocks
    Surrey, England

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Bruce Horrocks on Thu Sep 15 22:10:44 2022
    Bruce Horrocks <07.013@scorecrow.com> writes:

    On 04/09/2022 21:41, Meredith Montgomery wrote:
    Bruce Horrocks <07.013@scorecrow.com> writes:

    On 01/09/2022 02:07, Meredith Montgomery wrote:
    I'm thiking about creating UNIX accounts merely for students to upload >>>> their homework through scp.
    [...]

    The suggestions to have your own Unix server receive email are all
    well and good but setting it up *and securing it* is a PITA.
    Good point.

    An alternative is to use Amazon's SES (Simple Email Service)
    <https://aws.amazon.com/ses/details/>

    Your volumes are probably low enough that the free tier will cover
    everything, and it's easy to have a script run on receipt of an
    email. Anti-virus scanning of the attachments is automatic.
    That's interesting. I watched a video in which they set up an S3
    bucket
    and the mail is stored there. I guess I could then write a program to
    download all files and extract attachments. I'd have to learn to use
    the S3 API. This seems simple enough, elegant enough.

    No need to learn the S3 API if you don't want to as an S3 bucket can
    be mounted as a filesystem.

    <https://cloud.netapp.com/blog/amazon-s3-as-a-file-system>

    Interesting! Good to know! Thank you!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Thu Sep 15 22:10:19 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Tue, 13 Sep 2022 16:48:38 -0300, Meredith Montgomery <mmontgomery@levado.to> wrote:

    More questions soon!

    No problem.

    Thank you so much!

    My pleasure.

    Next question. It seems fossil doesn't like my certificate, but it's a Let's-Encrypt one and Google Chrome and Firefox are happy with it.

    --8<---------------cut here---------------start------------->8---
    Unable to verify SSL cert from fossil.heaven.mil
    subject: CN = fossil.heaven.mil
    issuer: C = US, O = Let's Encrypt, CN = R3
    notBefore: 2022-09-08 01:15:14 UTC
    notAfter: 2022-12-07 01:15:13 UTC
    sha256: ab15f1a43a7ebbd009e5c891177c57bce4dfbae7d9968eeed844aefe2bb5d031 accept this cert and continue (y/N/fingerprint)? Y
    remember this exception (y/N)?
    --8<---------------cut here---------------end--------------->8---

    Any idea why? Thank you!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rich@21:1/5 to Meredith Montgomery on Fri Sep 16 01:36:16 2022
    Meredith Montgomery <mmontgomery@levado.to> wrote:
    Next question. It seems fossil doesn't like my certificate, but it's
    a Let's-Encrypt one and Google Chrome and Firefox are happy with it.

    --8<---------------cut here---------------start------------->8---
    Unable to verify SSL cert from fossil.heaven.mil
    subject: CN = fossil.heaven.mil
    issuer: C = US, O = Let's Encrypt, CN = R3
    notBefore: 2022-09-08 01:15:14 UTC
    notAfter: 2022-12-07 01:15:13 UTC
    sha256: ab15f1a43a7ebbd009e5c891177c57bce4dfbae7d9968eeed844aefe2bb5d031 accept this cert and continue (y/N/fingerprint)? Y
    remember this exception (y/N)?
    --8<---------------cut here---------------end--------------->8---

    Any idea why? Thank you!

    Most likely is wherever fossil is looking for root certificates, it
    does not have the lets-encrypt root certificate in that store.

    With that said, I do not know /where/ it might be looking to find root
    certs, so you'll have to see if the docs give you any clues on that
    one.

    You can download a copy of the root cert from the Lets-Encrypt website somewhere (I don't remember where, so go hunting for that too).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to rich@example.invalid on Fri Sep 16 13:42:23 2022
    On Fri, 16 Sep 2022 01:36:16 -0000 (UTC), Rich
    <rich@example.invalid> wrote:

    Most likely is wherever fossil is looking for root certificates, it
    does not have the lets-encrypt root certificate in that store.

    With that said, I do not know /where/ it might be looking to find root
    certs, so you'll have to see if the docs give you any clues on that
    one.

    You can download a copy of the root cert from the Lets-Encrypt website somewhere (I don't remember where, so go hunting for that too).

    Very likely indeed. The fossil client can be configured where to
    look for root certificates, if they are not in "some standard
    location".

    See:
    fossil help ssl-ca-location

    --
    Regards,
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Kees Nuyt on Sat Sep 17 21:54:36 2022
    Kees Nuyt <k.nuyt@nospam.demon.nl> writes:

    On Fri, 16 Sep 2022 01:36:16 -0000 (UTC), Rich
    <rich@example.invalid> wrote:

    Most likely is wherever fossil is looking for root certificates, it
    does not have the lets-encrypt root certificate in that store.

    With that said, I do not know /where/ it might be looking to find root
    certs, so you'll have to see if the docs give you any clues on that
    one.

    You can download a copy of the root cert from the Lets-Encrypt website
    somewhere (I don't remember where, so go hunting for that too).

    Very likely indeed. The fossil client can be configured where to
    look for root certificates, if they are not in "some standard
    location".

    See:
    fossil help ssl-ca-location

    Thank you. It's not worth it to set this up because that's a client
    thing. Fossil saves the identity of the certificate in its config-db,
    so I'd have to somehow manage to do that in every client workstation,
    but repository users may decide to clone their repository anywhere ---
    when they'd see the certificate not being identified. Not the end of
    the world.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Kees Nuyt@21:1/5 to mmontgomery@levado.to on Sun Sep 18 13:23:02 2022
    On Sat, 17 Sep 2022 21:54:36 -0300, Meredith Montgomery
    <mmontgomery@levado.to> wrote:

    Thank you. It's not worth it to set this up because that's a client
    thing.

    Yeah, understandable.

    Fossil saves the identity of the certificate in its config-db,
    so I'd have to somehow manage to do that in every client workstation,
    but repository users may decide to clone their repository anywhere ---
    when they'd see the certificate not being identified. Not the end of
    the world.

    Some fossil per-repo settings can be saved on disk, as part of
    the checkout, so they would be set as soon as a student clones
    and opens hir/her repo.

    From `fossil help settings`:
    "Settings marked as versionable are overridden
    by the contents of the file named
    .fossil-settings/PROPERTY in the
    check-out root, if that file exists."

    I have no idea if that helps for certificate
    related info. I'm afraid these are not versionable.

    --
    Regards,
    Kees Nuyt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to mmontgomery@levado.to on Sun Sep 18 17:18:33 2022
    Meredith Montgomery <mmontgomery@levado.to> wrote:
    kludge@panix.com (Scott Dorsey) writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:

    I can't run a MTA in this server because e-mail ports are blocked by the >>>ISP. I can pay more and get that out of the way, though.

    Your ISP sure has an awful lot of spammers using their service, though.
    Maybe they only allow outgoing mail and not incoming? Perhaps you should
    get a competent ISP.

    I think they think their price is really low and spammers would buy
    these servers just to send out mail. I've no idea. It's what it is. I >don't mind paying more for a nice server. But we gotta do one thing at
    a time.

    1and1 and hetzner are the two major spam sources in Europe. Some months
    one is on the top of the spam statistic list, other months it's the other.
    If you attempt to contact tech support at either one you will find it
    difficult to talk to someone who knows something about computers. These
    two facts are likely related.
    --scott
    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Meredith Montgomery@21:1/5 to Scott Dorsey on Thu Sep 22 08:49:01 2022
    kludge@panix.com (Scott Dorsey) writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:
    kludge@panix.com (Scott Dorsey) writes:

    Meredith Montgomery <mmontgomery@levado.to> wrote:

    I can't run a MTA in this server because e-mail ports are blocked by the >>>>ISP. I can pay more and get that out of the way, though.

    Your ISP sure has an awful lot of spammers using their service, though.
    Maybe they only allow outgoing mail and not incoming? Perhaps you should >>> get a competent ISP.

    I think they think their price is really low and spammers would buy
    these servers just to send out mail. I've no idea. It's what it is. I >>don't mind paying more for a nice server. But we gotta do one thing at
    a time.

    1and1 and hetzner are the two major spam sources in Europe. Some months
    one is on the top of the spam statistic list, other months it's the other.

    Where do you see these statistics? I'd love to see it, too.

    If you attempt to contact tech support at either one you will find it difficult to talk to someone who knows something about computers.
    These two facts are likely related.

    That's good to know. Any recommendations for such service providers?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)