Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Do it [SchemeBBS]

Name: Anonymous 2015-05-25 10:11

Can we fucking wake up here sheeple? We need a SchemeBBS. We need to restore all of prog.db in it. This regex crap the admin does is no good right now for the job.

Name: Anonymous 2016-11-07 0:29

SchemeBBSTM is back baby!

http://hz27w5o3zlhptx7v.onion/

Now with working read-only javashit client, including {b.sup s}{u e}{sup x}{i.u p}{sup c}{b.u o}{sub d}{u e} (sexpcode) rendering support! Write a client
to post today! Take back your programming discussion from the endless political drivel, with SchemeBBSTM.

Name: /twatter/ 2016-11-07 1:29

>>201
you almost got doubs

Name: Anonymous 2016-11-07 3:23

>>198,199,200

le pedophile sage

Name: Anonymous 2016-11-07 4:35

pls no more spam ;_;

Name: Anonymous 2016-11-07 4:42

making a client

Name: guile scheme 2016-11-07 23:41

[code];; torsocks guile this.scm

(use-modules (web client)
(web response)
(ice-9 receive))

(define (print p) (write p) (newline))

(define schemebbs-endpoint "http://hz27w5o3zlhptx7v.onion/schemebbs")

(define (schemebbs query)
(let ((query-string (with-output-to-string (lambda () (write query)))))
(receive (response body)
(http-post schemebbs-endpoint #:body query-string)
(unless (= 200 (response-code response))
(error "bad http response code" (response-code response)))
(with-input-from-string body read))))

(let ((v (schemebbs '(version))))
(unless (= 1 v)
(error "Unknown version of schemebbs" v)))

(print (schemebbs '(version)))
(print (schemebbs '(get 0)))
;; (print (schemebbs '(posts> 0)))
[/code[

Name: Anonymous 2016-11-08 23:31

Does anybody remember from w4ch prog where there was a game engine that you use Lisp to program it? The programmer was associated to the GNU project. I'm trying to remember what was the title of the game engine.

Name: Anonymous 2016-11-09 1:17

Name: Anonymous 2016-11-09 8:18

Name: Anonymous 2016-11-09 13:02

>>207
I remember something with guile and sdl.

Name: Anonymous 2016-11-09 20:51

>>208-210
It was Sly. Thanks for reminding me.

Name: Anonymous 2016-11-10 3:32

_____ __ ____ ____ _____
/ ___/_____/ /_ ___ ____ ___ ___ / __ )/ __ ) ___/
\__ \/ ___/ __ \/ _ \/ __ `__ \/ _ \/ __ / __ \__ \
___/ / /__/ / / / __/ / / / / / __/ /_/ / /_/ /__/ /
/____/\___/_/ /_/\___/_/ /_/ /_/\___/_____/_____/____/

Name: Anonymous 2016-11-10 6:06

OKAY HERE IS A PROGRAM THAT YOU CAN RUN PERIODICALLY TO GET ALL THE LATESTS SCHEMEBBS DATA IN SEXPSON FORMAT. SOMEBODY NEEDS TO WRITE A TEXT BASED USER INTERFACE THAHT LETS YOU SEE ALL THE NEWEST THREADS, AND BE ABLE TO OPEN A TRHEAD TO READ AND REPLY TO IT.

;; torsocks guile this.scm

(use-modules (web client)
(web response)
(ice-9 receive))

(define (print p) (write p) (newline))

(define schemebbs-endpoint "http://hz27w5o3zlhptx7v.onion/schemebbs")

(define (schemebbs query)
(let ((query-string (with-output-to-string (lambda () (write query)))))
(receive (response body)
(http-post schemebbs-endpoint #:body query-string)
(unless (= 200 (response-code response))
(error "bad http response code" (response-code response)))
(with-input-from-string body read))))

(let ((v (schemebbs '(version))))
(unless (>= v 2)
(error "I only work with version 2 or higher" v)))

(print (schemebbs '(version)))
(print (schemebbs '(get 0)))
;;(print (schemebbs '(posts> 0)))

(define db-max 0)
(define db #f)

(when (access? "db.scm" F_OK)
(with-input-from-file "db.scm"
(lambda ()
(set! db-max (read))
(set! db '())
(let loop ((thing (read)))
(if (eof-object? thing)
#t
(begin (set! db (cons thing db))
(loop (read))))))))

(print `(reading in the new posts since ,db-max))

(define newest-posts (schemebbs `(posts>= ,(+ 1 db-max))))

(print newest-posts)

(for-each (lambda (new)
(let ((new-id (cdr (assoc 'id new))))
(when (> new-id db-max)
(set! db-max new-id))))
newest-posts)

(print `(got new posts up to ,db-max saving...))

(with-output-to-file "db.scm"
(lambda ()
(print db-max)
(when db
(for-each print db))
(for-each print newest-posts)))

(print 'done)

Name: Anonymous 2016-11-10 14:48

I'M NOT DOWNLOADING TOR FOR THIS

Name: Anonymous 2016-11-10 19:10

>>214
I'M NOT GONNA PAY FOR A DOMAIN

Name: Anonymous 2016-11-10 23:35

>>214
that's good we don't want people like you on it

Name: Anonymous 2016-11-10 23:35

>>215
is that why you're using tor? .ga and .ml have free registration

Name: Anonymous 2016-11-12 3:10

>>217
i'd have to pay to not have my identity attached to a bunch of stuff your average /prog/ says

Name: Anonymous 2016-11-12 23:51

any poop huffers writing clients?

Name: Anonymous 2016-11-13 8:20

****WARNING*****
***TRIPS INCOMING***

Name: Anonymous 2016-11-13 8:45

>>41
Clojure is not a LISP.

Name: Anonymous 2016-11-13 8:50

check em

Name: Anonymous 2016-11-13 14:04

>>222

holy cow

Name: Anonymous 2016-11-13 19:18

epic trips :D:DD::::::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

Name: Anonymous 2016-11-15 22:44

WHY NO CLIENT YET?

Name: Anonymous 2016-11-16 1:24

>>225
BECAUSE YOU HAVEN'T WRITTEN IT!

Name: Anonymous 2016-11-16 5:42

>>226
I wrote the guile code above to get it started . someone needs to do the next part for it to be a collabortion

Name: WE NEED TO GO DEEPER 2016-11-17 4:07

If I hosted an i2p based interface would people use it?

Name: Anonymous 2016-11-17 5:18

Name: Anonymous 2016-11-18 17:27

>>228
1. Is the server going to be up 24/7
2. Can it it compete with /progrider/ ( not everyone has i2p)
3. How you will handle spam(there are no IPs and identities are temporary)?

Name: Anonymous 2016-11-20 3:10

>>230
1. I can't guarantee anything, but if traffic isn't too high I don't see why I couldn't keep it up 24/7
2. I am not trying to compete, I figured I could just set up an interface that routed peoples posts to the onion site
3. Not sure about this one, if it gets too bad I might implement a captcha type thing.
If I do though, it will probably be like the /prog/ fossil repo, so people can still post without images or javascript.

Name: Anonymous 2016-11-20 6:40

>>228
No thanks, I don't run Java.

Name: Anonymous 2016-11-20 17:02

>>232
I was looking at my system earlier, and almost 2/3rds of all proccesses running were some java shit spawned from i2p, and just having the i2p daemon running adds about a fourth to my memory use.
Its pretty fucked.
I still prefer i2p over tor, though. Theres less edgy kids who think that being on the DEEP WEB makes them cool, plus support for torrenting.

Name: Anonymous 2016-11-21 2:06

>>232,233 Actually there is no need to use Java, use https://github.com/PurpleI2P/i2pd

Name: Anonymous 2016-11-21 8:54

>>232
*tips fedora*

Name: Anonymous 2016-11-21 8:55

SOMEONE

TAKE >>213
ANTD MAKE A GUI

Name: Anonymous 2016-11-22 5:09

>>236

Do it yourself

Name: Anonymous 2016-11-22 11:34

All right /prog/riders, its here:

Introducing THE OFFICIALnot really /prog/ PHPshit SLOWER THAN All FUCK SCHEME-BBS WEB BASED INTERFACE, AND I2P FRONTEND

Currently up and running at http://t6aaazt7qrlw5z2ehlyddwxooc2jutmd5frxy2nq3v43dkuunnnq.b32.i2p/prog/
http://www.progrider.i2p/prog/ should be up soon.

So this script consists of three files, but they can definitely be combined into one. I am shit at PHP and this was just to get it up and running. Feel free to make improvements.

The first is main.php, which generates index.html, gets a list of all the threads, and provides a dialog for making a new thread.
Second is get.php, which returns all posts for a specific thread, and provides a dialog box for replying (may be broken currently).
Last is post.php. Pretty straightforward, takes a message and a reply or new thread and posts it. It also uses the same style.css as /prog/

Now all of these are slow as hell because they have to query every single post, just to check if it actually meets the criteria, and then they print it to an html file. Not sure how this can be improved with the way that s-expression querying works, but just go easy on the refresh button for now.

A large amount of things are still exceedingly broken. Certain posts don't seem to show up at all, and replying may or may not work, but I'll keep working on it

Source code to follow.

Name: Anonymous 2016-11-22 11:34

main.php:
<?php

$post = 0;
$reply = $post;
$l = true;

$index = fopen("index.html", "w") or die("unable to open file");
fwrite($index, "<html> \n <head> \n <title>Its okay I guess...</title> \n");
fwrite($index, "<link rel='stylesheet' type='text/css' href=style.css> \n </head> \n <body id='index'> \n");
fwrite($index, "<div class='shell'>");
fwrite($index, "<div><h2 style='margin: 15px 0 15px 0; font-weight: normal; text-align: center;'>");
fwrite($index, "<a href='http://www.geti2p.net'><img src='i2plogo.png' style='vertical-align: middle'>");
fwrite($index, "</img></a><br><br><span class='spoiler'>/prog/</span> SchemeBBS I2P node</h2></div>");
fwrite($index, "<div id='threadlist' class='shell'><div><h1>Thread List</h2><form method='post' action='main.php'><input type='submit' name='refresh' value='Refresh'></form>");

while ($l == true)
{
$get = system("torsocks curl --data \"(get $post)\" http://hz27w5o3zlhptx7v.onion/schemebbs");
//I couldnt get php curl to work, so this is just a workaround

if ($get == "#f")
$l = false;

$get = str_replace("(", "", $get); //turns the s-expression into an array
$get = str_replace(")", "", $get);
$get = str_replace(". ", "fuckfucklolololasdfghjkl", $get);
$get = str_replace("id ", "", $get);
$get = str_replace("date ", "", $get);
$get = str_replace("reply ", "", $get);
$get = str_replace("post ", "", $get);

$sexp = explode("fuckfucklolololasdfghjkl", $get);
array_shift($sexp);

$sexp[0] = trim($sexp[0]);
$sexp[1] = system("date -u -d @$sexp[1]");
$sexp[3] = str_replace("\"", "", $sexp[3]);

if ($sexp[2] == "#f ")
{
fwrite($index, "<span class='thread'>\n");
fwrite($index, "<a href='/prog/res/$sexp[0].html'>$sexp[0]. $sexp[3]</a> </span>\n");

chdir("/var/lib/i2p/i2p-config/eepsite/docroot/prog/res");

if (file_exists("$sexp[0].html" == false)) //generates an html file for each thread. contains only a button to call get.php
{
$reply = fopen("$sexp[0].html", "w");

fwrite($reply, "<html><head><title>Its okay I guess...</title>\n");
fwrite($reply, "<link rel='stylesheet' type='text/css' href=style.css></head>\n");
fwrite($reply, "<body id='threadpage'><a href='/prog/'>Return</a> <br><br><div class='post'>\n");
fwrite($reply, "<form method='post' action='/prog/get.php'>\n");
fwrite($reply, "<input type='hidden' name=thread value='$sexp[0]'><input type='submit' value='Get Thread' name=thread-get>\n");
fwrite($reply, "</form></body></html>");

fclose($reply);

chdir("/var/lib/i2p/i2p-config/eepsite/docroot/prog");
}
}

$post = $post + 1;
}

fwrite($index, "</div></div></div>\n");
fwrite($index, "<div id='threadform' class='shell'><div>\n");
fwrite($index, "<h2>New Thread</h2>\n");
fwrite($index, "<form method='post' action='post.php'>\n");
fwrite($index, "<input type='hidden' name='thread' value='#f'>\n");
fwrite($index, "<textarea name='message' rows='5' cols='64'></textarea><br>\n");
fwrite($index, "<input type='submit' name='read' value='Submit'></form></div></div>\n");
fwrite($index, "</body> \n </html>");
fclose($index);
?>

Name: Anonymous 2016-11-22 11:34

get.php
<?php

$post = 0;//$_POST["thread"];
$op = $post;
$l = true;

echo "That was PHP Quality!<br><br>";

chdir("/var/www/html/prog/res/"); //opens one of the html files generated by main.php.
$reply = fopen("$post.html", "w") or die("unable to open file");
fwrite($reply, "<html> \n <head> \n <title>Its okay I guess...</title> \n");
fwrite($reply, "<link rel=\"stylesheet\" type=\"text/css\" href=/prog/style.css> \n </head> \n <body id='threadpage'> \n");
fwrite($reply, "<a href='/prog/'>Return</a> <br><br><hr>");

while ($l == true)
{
$get = system("torsocks curl --data \"(get $post)\" http://hz27w5o3zlhptx7v.onion/schemebbs");

if ($get == "#f")
$l = false;

$get = str_replace("(", "", $get); //all this shit is the same in all three files. I'm sure theres a better way to do it, but I don't know how
$get = str_replace(")", "", $get);
$get = str_replace(". ", "fuckfucklolololasdfghjkl", $get);
$get = str_replace("id ", "", $get);
$get = str_replace("date ", "", $get);
$get = str_replace("reply ", "", $get);
$get = str_replace("post ", "", $get);

$sexp = explode("fuckfucklolololasdfghjkl", $get);
array_shift($sexp);

$sexp[1] = system("date -u -d @$sexp[1]");
$sexp[3] = str_replace("\"", "", $sexp[3]);


if ($sexp[2] != "#f " and $sexp[2] == $op or $sexp[0] == $op and $sexp[2] == "#f ") //this checks if the post is a reply to the thread that its loading
{
if ($sexp[0] == $op)
fwrite($reply, "<div class='subject'><h2>$sexp[3]<h2></div>");
fwrite($reply, "<div class='post'>\n");
fwrite($reply, "<div class='posthead'> \n");
fwrite($reply, "<span class='num'>$sexp[0]</span> Name: <span class='name'>Anonymous</span> : $sexp[1]\n");
fwrite($reply, "</div>");
fwrite($reply, "<div class='postbody'>$sexp[3]</div>\n");
fwrite($reply, "</div> \n");
}
$post = $post + 1;
}

fwrite($reply, "<hr><a href='/prog/'>Return</a>\n");
fwrite($reply, "<form method='post' action='/prog/post.php'>\n");
fwrite($reply, "<input type='hidden' name='thread' value='$op'>\n");
fwrite($reply, "<textarea name='message' rows='5' cols='64'></textarea><br>\n");
fwrite($reply, "<input type='submit' name='read' value='Submit'></form>\n");
fwrite($reply, "<form method='post' action='/prog/get.php'>\n");
fwrite($reply, "<hr><input type='hidden' name='thread' value='$op'><input type='submit' name='refresh' value='Refresh'>\n");
fwrite($reply, "</body> \n </html>");
fclose($reply);

?>


and post.php

<?php

$reply = $_POST["reply"]; //this one is pretty simple
$message = $_POST["message"];

if ($reply == "")
{
$reply = "#f";
}

system("torsocks curl --data \"(post ((reply . $reply) (post . \"$message\")))\" http://hz27w5o3zlhptx7v.onion/schemebbs");

?>

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List