mirror of
https://github.com/ChronosX88/psyced.git
synced 2024-12-05 00:22:19 +00:00
let the past begone in cvs land. welcome to igit igit!
This commit is contained in:
commit
4e601cf1c7
15
.gitignore
vendored
Normal file
15
.gitignore
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
CVS
|
||||||
|
~$*
|
||||||
|
.DS_Store
|
||||||
|
.metadata
|
||||||
|
.actionScriptProperties
|
||||||
|
*~
|
||||||
|
*.swf
|
||||||
|
*.swp
|
||||||
|
*.diff
|
||||||
|
*.orig
|
||||||
|
*.rej
|
||||||
|
*.log
|
||||||
|
*.pem
|
||||||
|
*old
|
||||||
|
*bak
|
119
AGENDA.txt
Normal file
119
AGENDA.txt
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
VERSION 1.0
|
||||||
|
===========
|
||||||
|
|
||||||
|
psyced:
|
||||||
|
[x] make those methods carry the names they should carry
|
||||||
|
[x] interface cmd() to psyc user object
|
||||||
|
[x] have pr() produce something useful for psyc clients
|
||||||
|
[x] send incoming psyc client messages as its user object
|
||||||
|
[x] allow for remote buddies (even if only java can talk to them)
|
||||||
|
[x] output real buddies
|
||||||
|
[x] make rooms usable from psyc
|
||||||
|
[x] write up some docs / installation instructions
|
||||||
|
[-] fix up the veChat applet
|
||||||
|
|
||||||
|
web:
|
||||||
|
[x] multilang
|
||||||
|
[x] end-user start page
|
||||||
|
[x] hacker page
|
||||||
|
[x] software download
|
||||||
|
[x] konr@d disclaimer
|
||||||
|
[-] finish up the psyc draft to match psyced-1.0
|
||||||
|
[x] www.psyced.org
|
||||||
|
[x] provide driver binaries on download
|
||||||
|
[-] provide ready-to-use packages (rpm, deb, ebuild..)
|
||||||
|
|
||||||
|
general:
|
||||||
|
[-] set up mailing lists
|
||||||
|
[x] beta testing
|
||||||
|
[x] get it all working
|
||||||
|
[ ] heldensaga wants to celebrate a release party!
|
||||||
|
|
||||||
|
promotion:
|
||||||
|
[x] konr@d interview
|
||||||
|
[x] freshmeat
|
||||||
|
[ ] iX article
|
||||||
|
[ ] radio bremen interview
|
||||||
|
[ ] publish in comp.sources.unix and de.comm.chatsystems
|
||||||
|
[ ] /.
|
||||||
|
[ ] less old-fashioned ideas
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VERSION 1.1
|
||||||
|
===========
|
||||||
|
|
||||||
|
psyced:
|
||||||
|
[x] fix irc client access to server
|
||||||
|
[-] fix /p & co, or think of something better
|
||||||
|
[x] server intercommunication (buddies, messages, query)
|
||||||
|
[+] real psyc rooms
|
||||||
|
[-] filter incoming psyc vars & recognize abbrevs
|
||||||
|
[ ] support compact methods and vars
|
||||||
|
[-] proper support for var modifiers
|
||||||
|
[x] support _tag for request/reply tagging
|
||||||
|
[x] parse notice syntax: "There are [_users_amount] users online."
|
||||||
|
|
||||||
|
perl:
|
||||||
|
[x] tcp support
|
||||||
|
[x] smart multiplexing
|
||||||
|
[x] parse notice syntax: "There are [_users_amount] users online."
|
||||||
|
[x] simple client
|
||||||
|
|
||||||
|
general:
|
||||||
|
[ ] update & publish internet drafts
|
||||||
|
|
||||||
|
web:
|
||||||
|
[x] about.psyc.eu
|
||||||
|
[x] comparison psyc vs. icq, jabber, msn, irc
|
||||||
|
|
||||||
|
|
||||||
|
VERSION 1.2
|
||||||
|
===========
|
||||||
|
|
||||||
|
psyced:
|
||||||
|
[x] enter remote rooms (simple style)
|
||||||
|
[ ] make rooms fully capable of psyc
|
||||||
|
[x] make remote people addressable by nickname (local nickspace)
|
||||||
|
[ ] make user objects fully capable of psyc conferencing (hard!)
|
||||||
|
|
||||||
|
web:
|
||||||
|
[?] the psyc vision (document) ?
|
||||||
|
|
||||||
|
perl:
|
||||||
|
[+] non-blocking writes using buffers
|
||||||
|
[-] tkperl client
|
||||||
|
|
||||||
|
all:
|
||||||
|
[+] start development of negotiations (see FORK)
|
||||||
|
|
||||||
|
|
||||||
|
VERSION 2.0
|
||||||
|
===========
|
||||||
|
|
||||||
|
web:
|
||||||
|
[ ] release PSYC 1.0 specification
|
||||||
|
|
||||||
|
all:
|
||||||
|
[ ] introduce compressed keywords
|
||||||
|
|
||||||
|
|
||||||
|
VERSION 3.0
|
||||||
|
===========
|
||||||
|
|
||||||
|
[ ] introduce object descriptions
|
||||||
|
|
||||||
|
|
||||||
|
POSSIBLE FUTURES
|
||||||
|
================
|
||||||
|
[-] c/c++ implementation (for windows, mac and unix)
|
||||||
|
[-] psyc: plugins for browsers (so you can click on a psyc url)
|
||||||
|
[x] icq gateway (so you can talk to icq-buddies from psyc)
|
||||||
|
[x] ircserver gateway (so you can talk to ircers)
|
||||||
|
[ ] pager/gsm-sms gateways
|
||||||
|
[-] psyc-enhanced videoconferencing/internet-telephony
|
||||||
|
[ ] psyc-enhanced broadcasting (text/video/audio)
|
||||||
|
[ ] psyc-enhanced distributed webcasting/website management
|
||||||
|
[-] psyc-enhanced file sharing
|
||||||
|
|
||||||
|
|
9
BANNER
Normal file
9
BANNER
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
___________________________
|
||||||
|
the future is in your hands
|
||||||
|
___ __ _ · _ __
|
||||||
|
| ·\ (__ \ / /
|
||||||
|
|__/ · \ V | ·
|
||||||
|
| (__/ | \__
|
||||||
|
|
||||||
|
http://www.psyc.eu
|
||||||
|
|
3708
CHANGESTODO
Normal file
3708
CHANGESTODO
Normal file
File diff suppressed because it is too large
Load Diff
280
COPYLEFT.txt
Normal file
280
COPYLEFT.txt
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
199
INSTALL.txt
Normal file
199
INSTALL.txt
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
|
||||||
|
Installing the psycMUVE
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
We're very proud to see you are about to install a psycMUVE!
|
||||||
|
|
||||||
|
(Windows System)
|
||||||
|
You received this in form of an executable. By executing it you
|
||||||
|
will be prompted some questions, then sent to a web-based
|
||||||
|
configuration interface. So essentially you don't need any help here.
|
||||||
|
Please move directly on to the FIRSTSTEPS document once you have
|
||||||
|
done the installation.
|
||||||
|
[1]http://muve.pages.de/FIRSTSTEPS
|
||||||
|
|
||||||
|
(Linux or Unix System)
|
||||||
|
In a nutshell, all you have to do is execute './install.sh' and go from
|
||||||
|
there. It will tell you to download an LDMUD driver from
|
||||||
|
[2]http://muve.pages.de/ldmud
|
||||||
|
then compile and configure it with you interactively. So you don't need
|
||||||
|
to know anything more now, but if you want more information, read on.
|
||||||
|
|
||||||
|
(Questions and Answers)
|
||||||
|
Don't be afraid to come into our developer chatroom and interact with
|
||||||
|
us as you go along. We have designed the installation to be totally
|
||||||
|
simple and beginner friendly. If you're not experiencing it as such,
|
||||||
|
something has gone wrong. Don't try to figure it out alone, talk to us.
|
||||||
|
And.. please be patient with our slow response times.
|
||||||
|
|
||||||
|
psyc://ve.symlynX.com/@psyc
|
||||||
|
[3]irc://ve.symlynX.com/psyc
|
||||||
|
[4]telnet ve.symlynX.com
|
||||||
|
/go psyc
|
||||||
|
[5]http://ve.symlynX.com:33333/PSYC/
|
||||||
|
|
||||||
|
|
||||||
|
0. System Requirements
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
You can skip this if you think you have a sanely configured unix system.
|
||||||
|
|
||||||
|
The following requirements exist for building psycMUVE and ldmud:
|
||||||
|
|
||||||
|
o Disk Space:
|
||||||
|
|
||||||
|
Make sure you have approximately 7 MB of temporary free disk space
|
||||||
|
available. After installation psycMUVE occupies approximately 3 MB of
|
||||||
|
disk space (the current required disk space depends on the amount of
|
||||||
|
users, logs etc).
|
||||||
|
|
||||||
|
o ANSI-C Compiler:
|
||||||
|
|
||||||
|
Make sure you have an ANSI-C compiler installed. The GNU C compiler
|
||||||
|
(GCC) from the Free Software Foundation (FSF) is recommended.
|
||||||
|
You can find the homepage of GNU at [6]http://www.gnu.org/. GCC
|
||||||
|
binaries for Solaris can be loaded from [7]http://www.sunfreeware.com/.
|
||||||
|
|
||||||
|
o POSIX YACC compliant grammar compiler
|
||||||
|
|
||||||
|
You probably have either bison or yacc installed, otherwise do the
|
||||||
|
appropriate emerge or whatever software installation.
|
||||||
|
|
||||||
|
o Perl 5 Interpreter [OPTIONAL]
|
||||||
|
|
||||||
|
The distribution includes some perl scripts that may or may not
|
||||||
|
be useful.
|
||||||
|
|
||||||
|
|
||||||
|
1. How to compile an LPC driver manually
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
You can skip this part if you want to let the installation mechanism
|
||||||
|
do it for you. To be honest, the danger of us not giving you enough
|
||||||
|
information for you to get it done right is lessened if you let the
|
||||||
|
process do it.
|
||||||
|
|
||||||
|
[8]http://lpc.pages.de will direct you to the current download areas for
|
||||||
|
a PSYC-enabled LPC driver, like currently LDMUD. The LDMUD driver uses
|
||||||
|
a standard autoconfiguration system which on most systems does all the
|
||||||
|
work for you (for exceptions see below). That's how install.sh can do it
|
||||||
|
just like that.
|
||||||
|
|
||||||
|
To prepare the compilation, enter the src directory of LDMUD and execute
|
||||||
|
the 'psycmuve' script located in '[9]world/drivers/ldmud/patches/psycmuve'.
|
||||||
|
within the src/settings directory of LDMUD, or -even better- use
|
||||||
|
the maybe more up to date 'psycmuve' file in the patches directory
|
||||||
|
of world/drivers/ldmud. The default target directory is /opt/psycmuve -
|
||||||
|
please edit the script if you need a different path.
|
||||||
|
|
||||||
|
After configuration is finished, you may want to modify the Makefile
|
||||||
|
to fine tune those parameters which are not covered by the configuration.
|
||||||
|
(like maybe change 'INSTALL=./install.sh -c' to 'INSTALL=./install.sh')
|
||||||
|
But there is generally no need to do anything really.
|
||||||
|
|
||||||
|
The compilation is done using make. Following targets are implemented:
|
||||||
|
|
||||||
|
<none>: compile the driver
|
||||||
|
install: compile the driver and install it in ${bindir}
|
||||||
|
utils: compile the utilities, especially the ERQ daemon
|
||||||
|
install-utils: compile and install the utilities in ${bindir}
|
||||||
|
|
||||||
|
For more details feel free to read the LDMUD INSTALL file.
|
||||||
|
|
||||||
|
|
||||||
|
2. Okay, let's install it!
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To install psycMUVE, execute the './install.sh' script from within
|
||||||
|
the distribution directory. On some systems you may have to use a
|
||||||
|
different shell, like 'ksh install.sh' or 'bash install.sh'.
|
||||||
|
|
||||||
|
You will be asked some configuration questions. When done, it will
|
||||||
|
create several files for you and transfer the content of the psycMUVE
|
||||||
|
distribution to the target directory you specified interactively.
|
||||||
|
Depending on your userid (root or other) you will be given
|
||||||
|
/opt/psycmuve or ~/psycmuve as defaults for installation. We
|
||||||
|
continue this documentation assuming you picked the root defaults.
|
||||||
|
|
||||||
|
Start psycMUVE:
|
||||||
|
/opt/psycmuve/bin/psycmuve
|
||||||
|
|
||||||
|
Test it:
|
||||||
|
telnet localhost 2000
|
||||||
|
or
|
||||||
|
irc <nick> localhost
|
||||||
|
|
||||||
|
|
||||||
|
3. Configuring psycMUVE
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
We have a very very useful web-based configuration tool.
|
||||||
|
The installation process will direct you to it. If you want to
|
||||||
|
activate it manually, edit local/local.h and add the following
|
||||||
|
line: '#define WEB_CONFIGURE' - As you restart the MUVE you will
|
||||||
|
be able to use it at [10]http://localhost:44444/net/http/configure
|
||||||
|
|
||||||
|
Careful who else may have access to the localhost address.
|
||||||
|
If in doubt, simply disable WEB_CONFIGURE after use.
|
||||||
|
|
||||||
|
Should you need to access the configuration tool from a remote host,
|
||||||
|
using a tunneling technology like ssh is probably the safest approach.
|
||||||
|
If that is not an option you need to put the IP number of your browsing
|
||||||
|
client (or an abbreviation of it, like "127.0.0." with a trailing dot)
|
||||||
|
into the local/hosts.h file in your configuration directory.
|
||||||
|
The syntax is something like:
|
||||||
|
|
||||||
|
#define ENABLE_HOSTS "192.168.0.1"
|
||||||
|
|
||||||
|
If the IP number is only dynamic, it is certainly a good idea to
|
||||||
|
remove that entry after web configuration is complete.
|
||||||
|
|
||||||
|
|
||||||
|
4. Troubleshooting
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
LDMUD will compile TLS in, even if you told install.sh not to use it.
|
||||||
|
This allows you to change your mind later on and shouldn't be a problem,
|
||||||
|
but if it is, edit src/config.h to #undef USE_TLS and redo the compilation.
|
||||||
|
|
||||||
|
There is a problem specific to the LDMUD 3.3.610 version, when it comes to
|
||||||
|
compilation: It doesn't set the #define USE_TLS properly in config.h even
|
||||||
|
if the configure settings file tells it to. Please edit src/config.h
|
||||||
|
accordingly and recompile. Other than that 610 is very stable and a good
|
||||||
|
choice!
|
||||||
|
|
||||||
|
You may also have to add the --tls-key options into the commandline
|
||||||
|
in bin/psycmuve. Just look into it and you'll see what I mean.
|
||||||
|
|
||||||
|
If you still encounter problems, please read (Questions and Answers)
|
||||||
|
at the beginning of this document.
|
||||||
|
|
||||||
|
|
||||||
|
5. Conclusion
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
You can now move on to the FIRSTSTEPS document.
|
||||||
|
Here's the online version, but you have one on your harddisk too.
|
||||||
|
[11]http://muve.pages.de/FIRSTSTEPS
|
||||||
|
|
||||||
|
This document was written by [12]psyc://ve.symlynX.com/~lynX
|
||||||
|
and [13]psyc://ve.symlynX.com/~real.
|
||||||
|
|
||||||
|
--
|
||||||
|
http://muve.pages.de/INSTALL.html
|
||||||
|
last change by lynx on fly at 2005-09-28 20:58:36 MEST
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
1. http://muve.pages.de/FIRSTSTEPS
|
||||||
|
2. http://muve.pages.de/ldmud
|
||||||
|
3. irc://ve.symlynX.com/psyc
|
||||||
|
4. telnet://ve.symlynX.com/
|
||||||
|
5. http://ve.symlynX.com:33333/PSYC/
|
||||||
|
6. http://www.gnu.org/
|
||||||
|
7. http://www.sunfreeware.com/
|
||||||
|
8. http://lpc.pages.de/
|
||||||
|
9. http://muve.pages.de/dist/world/drivers/ldmud/patches/psycmuve
|
||||||
|
10. http://localhost:44444/net/http/configure
|
||||||
|
11. http://muve.pages.de/FIRSTSTEPS
|
||||||
|
12. irc://ve.symlynX.com/lynX,isNick
|
||||||
|
13. irc://ve.symlynX.com/real,isNick
|
54
LICENSE.txt
Normal file
54
LICENSE.txt
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
[ «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» ]
|
||||||
|
|
||||||
|
psyced, a scalable distributed multi-protocol chat and messaging server
|
||||||
|
solution based on the PSYC protocol for synchronous conferencing.
|
||||||
|
___
|
||||||
|
|
||||||
|
Copyright (C) since 1997 by:
|
||||||
|
Carlo von Loesch (psyc://ve.symlynX.com/~lynX).
|
||||||
|
|
||||||
|
Since 2002 copyright also in parts by:
|
||||||
|
Philipp Hancke (psyc://goodadvice.pages.de/~fippo)
|
||||||
|
Tobias Josefowitz (psyc://goodadvice.pages.de/~heldensaga)
|
||||||
|
Arne Gödeke (psyc://psyced.org/~el) and
|
||||||
|
Dominik Sander (psyc://psyced.org/~depairet).
|
||||||
|
___
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of version 2 of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
___
|
||||||
|
|
||||||
|
This program is also available under different license from
|
||||||
|
Carlo von Loesch and symlynX. To this purpose all copyright
|
||||||
|
owners grant Carlo von Loesch and symlynX the right to use
|
||||||
|
and license this program in whatever suitable way.
|
||||||
|
|
||||||
|
Should you wish to contribute to this program, you can receive a
|
||||||
|
write access to the psyced software repository from symlynX. By checking
|
||||||
|
code in, you grant us permission to license your contribution under
|
||||||
|
both the GNU General Public License and under other licenses as
|
||||||
|
described above.
|
||||||
|
|
||||||
|
With the act of checking into the software repository, you guarantee
|
||||||
|
that you are either the author and copyright owner of the contribution
|
||||||
|
you are making, or that you have a license to use said contribution in
|
||||||
|
a way compatible with our terms of use. If you fail to do so, you
|
||||||
|
remain the sole responsible for your acting; no part of the
|
||||||
|
responsibility will be transferred to symlynX.
|
||||||
|
|
||||||
|
This means, for example, that you cannot contribute code elements
|
||||||
|
which stem from an other GPL project, as this would not comply with
|
||||||
|
the dual licensing requirement described above.
|
||||||
|
|
||||||
|
You can however keep this kind of modifications to yourself, or
|
||||||
|
publish your own GPL licensed fork of this software, or - in agreement
|
||||||
|
with us - add optional parts to this software clearly marked as not
|
||||||
|
adhering to the dual license described above.
|
||||||
|
|
||||||
|
[ «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» «» ]
|
112
README.txt
Normal file
112
README.txt
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
|
||||||
|
Since you unpacked this you probably want to install it.
|
||||||
|
You can go straight to the INSTALL.txt file for instructions.
|
||||||
|
If it is missing, try [1]http://muve.pages.de/INSTALL.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PROTOCOL for SYNCHRONOUS CONFERENCING
|
||||||
|
___ __ _ _ __ _ _ _ _ _ _ ___
|
||||||
|
| \ (__ \ / / |\ /| | | | | |
|
||||||
|
|__/ \ V | | \/ | | | \ / |-
|
||||||
|
| (__/ | \__ | | |__| V |__
|
||||||
|
|
||||||
|
The MULTI USER VIRTUAL ENVIRONMENT driver is here!
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This is 'psycMUVE', the Multi User Virtual Environment for PSYC.
|
||||||
|
It is a server and gateway implementation of PSYC.
|
||||||
|
|
||||||
|
The latest version is available on [2]http://muve.pages.de/download
|
||||||
|
|
||||||
|
There is no download by FTP, since FTP has no advantage
|
||||||
|
over HTTP/1.1 (you can use HTTP REGET these days).
|
||||||
|
|
||||||
|
The project homepage is [3]http://muve.pages.de
|
||||||
|
The protocol homepage is [4]http://psyc.pages.de
|
||||||
|
The user manual resides at [5]http://help.pages.de
|
||||||
|
|
||||||
|
The Multi-User Virtual Environment for PSYC-Users isn't just a PSYC server;
|
||||||
|
it also simulates the functionality of PSYC clients allowing users of various
|
||||||
|
sorts of more or less dumb applications to enter the PSYCspace.
|
||||||
|
|
||||||
|
The professional edition of it has been in use as a Webchat for several years.
|
||||||
|
The HTML webchat, however, is not part of the freeware edition.
|
||||||
|
|
||||||
|
psycMUVE is implemented in LPC and uses a driver called LDMUD.
|
||||||
|
See INSTALL for details.
|
||||||
|
|
||||||
|
The files in the distribution directory are:
|
||||||
|
AGENDA.txt : future plans (not a TODO really)
|
||||||
|
BANNER.txt : advertisement or welcome message
|
||||||
|
COPYLEFT.txt : GNU GENERAL PUBLIC LICENSE
|
||||||
|
INSTALL.txt : installation hints and notes
|
||||||
|
LICENSE.txt : something you are supposed to read (copyright info)
|
||||||
|
README.txt
|
||||||
|
|
||||||
|
install.sh : an installation script (ksh/bash).
|
||||||
|
[6]makefile : some useful functions (optional).
|
||||||
|
bin/ : various scripts
|
||||||
|
but the only one you really need, "psycmuve",
|
||||||
|
will be created by 'install.sh'.
|
||||||
|
config/ : depot of configurations.
|
||||||
|
also contains some tcsh and powwow settings.
|
||||||
|
data/ : this is where MUVE stores your user and room data.
|
||||||
|
local/ : your local configuration of the server
|
||||||
|
is created by 'install.sh' but you can also make
|
||||||
|
it a symlink into a config/something directory
|
||||||
|
log/ : where the server logfiles end up.
|
||||||
|
may be a symlink into the /var partition.
|
||||||
|
place/ : here you can implement your own room objects in lpc.
|
||||||
|
some examples of public rooms are waiting for you there.
|
||||||
|
[7]run/ : the ldmud equivalent of a CGI directory. ldmud can spawn
|
||||||
|
a subprocess to do some jobs which are too hard to achieve
|
||||||
|
in LPC-world. we currently don't use this as ldmud provides
|
||||||
|
MD5 and SHA1 itself. in theory we could implement CGI for
|
||||||
|
the builtin webserver, but it is much better to code these
|
||||||
|
things in LPC. [8]world/net/jabber/component.c shows how sha1
|
||||||
|
.pl
|
||||||
|
is spawned when the driver does not provide SHA1.
|
||||||
|
utility/ : the applet code and other things that may be useful.
|
||||||
|
[9]world/ : this is the directory tree that is visible from
|
||||||
|
within the lpc interpreter and therefore contains
|
||||||
|
all the actual lpc program code.
|
||||||
|
data/ : symlink to data/
|
||||||
|
[10]default/ : the text database for multiple languages and formats
|
||||||
|
[11]drivers/ : glue code to interface LPC drivers to psycMUVE
|
||||||
|
local/ : symlink to local/
|
||||||
|
log/ : symlink to log/
|
||||||
|
[12]net/ : all of the psycMUVE code is in a "net" hierarchy
|
||||||
|
: so it can be merged with an existing MUD
|
||||||
|
obj/ : just in case you misconfigured your driver
|
||||||
|
place/ : symlink to place/
|
||||||
|
[13]static/ : contains static files for httpd export
|
||||||
|
: you can use them with the internal httpd
|
||||||
|
: or copy them to yours
|
||||||
|
|
||||||
|
Don't be irritated by the fact that traditional LPC drivers keep
|
||||||
|
their LPC files with a ".c" suffix and data files with a ".o" suffix.
|
||||||
|
More oddities are described in http://muve.pages.de/DEVELOP if you want
|
||||||
|
to find your way around the psycMUVE source code.
|
||||||
|
|
||||||
|
--
|
||||||
|
http://muve.pages.de/README.html
|
||||||
|
last change by lynx on fly at 2005-09-28 20:58:37 MEST
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
1. http://muve.pages.de/INSTALL.html
|
||||||
|
2. http://muve.pages.de/download
|
||||||
|
3. http://muve.pages.de/
|
||||||
|
4. http://psyc.pages.de/
|
||||||
|
5. http://help.pages.de/
|
||||||
|
6. http://muve.pages.de/dist/makefile
|
||||||
|
7. http://muve.pages.de/dist/run/
|
||||||
|
8. http://muve.pages.de/dist/world/net/jabber/component.c
|
||||||
|
9. http://muve.pages.de/dist/world/
|
||||||
|
10. http://muve.pages.de/dist/world/default/
|
||||||
|
11. http://muve.pages.de/dist/world/drivers/
|
||||||
|
12. http://muve.pages.de/dist/world/net/
|
||||||
|
13. http://muve.pages.de/dist/world/static/
|
50
bin/edata
Normal file
50
bin/edata
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# editor for .o files -lynX
|
||||||
|
#
|
||||||
|
# it merely splits long lines at the end of mappings
|
||||||
|
# so that vi-like editors aren't confronted with
|
||||||
|
# huge one-liners. after saving it recreates the
|
||||||
|
# original format after renaming the original file
|
||||||
|
# into itself with appended tilde.
|
||||||
|
#
|
||||||
|
#sub backupsuffix() { '~' }
|
||||||
|
|
||||||
|
($file = shift and $file =~ /\.o$/) or die <<X;
|
||||||
|
usage: $0 <lpmud-data-file.o>
|
||||||
|
X
|
||||||
|
|
||||||
|
$tmp = "/tmp/edata.$$";
|
||||||
|
|
||||||
|
open(I, $file) or die "$file: $!";
|
||||||
|
open(O, ">$tmp") or die "cannot create $tmp: $!";
|
||||||
|
|
||||||
|
$/ = undef;
|
||||||
|
while(<I>) {
|
||||||
|
s/(,]\),)/\1\n /gm;
|
||||||
|
print O;
|
||||||
|
}
|
||||||
|
close I;
|
||||||
|
close O;
|
||||||
|
|
||||||
|
$edit = $ENV{EDITOR} or 'vi';
|
||||||
|
|
||||||
|
$M = -M $tmp;
|
||||||
|
|
||||||
|
system("$edit $tmp");
|
||||||
|
|
||||||
|
exit if $M == -M $tmp;
|
||||||
|
die $! unless rename $file, "$file~";
|
||||||
|
print STDERR "Backup created in $file~\n";
|
||||||
|
|
||||||
|
open(I, $tmp) or die "$tmp: $!";
|
||||||
|
open(O, ">$file") or die "cannot create $file: $!";
|
||||||
|
$/ = undef;
|
||||||
|
|
||||||
|
while(<I>) {
|
||||||
|
s/\n //gm;
|
||||||
|
print O;
|
||||||
|
}
|
||||||
|
close I;
|
||||||
|
close O;
|
||||||
|
|
632
bin/psyconf
Normal file
632
bin/psyconf
Normal file
@ -0,0 +1,632 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
### -I/opt/psyced/utility
|
||||||
|
# the include path would help finding INI.pm, but what if you the user
|
||||||
|
# have decided to install psyced elsewhere?
|
||||||
|
#
|
||||||
|
# psyconf(8) - tool that generates psyc configuration
|
||||||
|
# files out of a common psyced.ini
|
||||||
|
#
|
||||||
|
# $Id: psyconf,v 1.75 2008/02/08 11:44:57 lynx Exp $
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
psyconf - a configuration tool for PSYCED
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
Usage: psyconf [ <file> ]
|
||||||
|
|
||||||
|
The default configuration file used is /etc/psyced.ini
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
# this approach still doesn't work when installing on gentoo
|
||||||
|
# we need a seperate ebuild for INI.pm. until then we will use
|
||||||
|
# the stupid parser
|
||||||
|
#
|
||||||
|
#BEGIN { # BEGIN just in case somebody ever accesses INI::something by hand
|
||||||
|
# unless (%INI::) { # get INI, if it isn't in this file (somewhere above)
|
||||||
|
# my @dir;
|
||||||
|
# my $inilocation;
|
||||||
|
#
|
||||||
|
# @dir = File::Spec->splitdir($0);
|
||||||
|
# pop @dir;
|
||||||
|
# $inilocation = File::Spec->catfile(@dir, qw".. utility INI.pm");
|
||||||
|
#
|
||||||
|
# if (-f $inilocation) {
|
||||||
|
# require $inilocation;
|
||||||
|
# } else {
|
||||||
|
# require INI;
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
# append something while testing
|
||||||
|
#my $test = "-NEW";
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
sub say {
|
||||||
|
print join('', @_); # if $test;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### MAIN ###
|
||||||
|
# if you are manually compiling an ldmud, rename it or change here.
|
||||||
|
my $driver = 'psyclpc';
|
||||||
|
|
||||||
|
use Getopt::Std;
|
||||||
|
&getopt;
|
||||||
|
|
||||||
|
print STDERR '$Id: psyconf,v 1.75 2008/02/08 11:44:57 lynx Exp $', "\n";
|
||||||
|
|
||||||
|
my $conf = shift || 'psyced.ini';
|
||||||
|
$conf = '/etc/psyc/psyced.ini' unless -r $conf;
|
||||||
|
# should we complain if two psyced.ini files exist?
|
||||||
|
# lymeca got confused at this point, expecting the systemwide
|
||||||
|
# psyced.ini to be used, but actually having a local copy
|
||||||
|
say "The PSYCED configuration tool. Looking at $conf\n\n";
|
||||||
|
|
||||||
|
# this is the super-duper fancy amazing INI handler
|
||||||
|
# #use INI; # ":verbose";
|
||||||
|
# my %c;
|
||||||
|
# tie(%c, INI, $conf, 5);
|
||||||
|
|
||||||
|
# and this is the stupider INI parser in a couple of lines
|
||||||
|
# cute, but we'd like to have the features of INI.pm one happy day
|
||||||
|
my %c, $f = "";
|
||||||
|
open C, $conf;
|
||||||
|
while(<C>) {
|
||||||
|
next if /^;/;
|
||||||
|
next if /^\s*$/;
|
||||||
|
$f = $1, next if /^\[(\w+)\]\s*$/;
|
||||||
|
# Room name 'ornia ' is not permitted.
|
||||||
|
# isn't this stripping trailing whitespace properly?
|
||||||
|
# should it read \S.+\S ? or at least .+\S ?
|
||||||
|
$c{"$f$1"} = $2, next if /^(\w+)\s*=\s*(.+)\s*$/;
|
||||||
|
die "cannot parse line $. in $conf:\n\t$_\n";
|
||||||
|
}
|
||||||
|
close C;
|
||||||
|
|
||||||
|
if ($opt_D) {
|
||||||
|
if ($c{_basic_list_script_init}) {
|
||||||
|
foreach (split /\s+/, $c{_basic_list_script_init}) {
|
||||||
|
say "Deinstallation! Removing $_\n";
|
||||||
|
unlink $_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
use POSIX;
|
||||||
|
my @uname = POSIX::uname();
|
||||||
|
# if POSIX.pm is unavailable, this also works:
|
||||||
|
# @uname = split ' ', `uname -s -r -n -m -v`;
|
||||||
|
#print Dumper(@uname);
|
||||||
|
my $_type_machine = $uname[$#uname];
|
||||||
|
$_ = $uname[2];
|
||||||
|
/^(\w+\.\w+)\b/ or /^(\w+)\b/;
|
||||||
|
my $_type_system = "\L$uname[0]\E";
|
||||||
|
my $_version_system = "$uname[0]/$1";
|
||||||
|
my $_type_architecture = lc "$_type_machine-$uname[0]";
|
||||||
|
say "Machine Type: $_type_machine. OS Type: $_type_system. ",
|
||||||
|
"Arch: $_type_architecture\n";
|
||||||
|
#Typical outputs:
|
||||||
|
# Machine Type: i686. OS Type: linux. Arch: i686-linux
|
||||||
|
# Machine Type: x86_64. OS Type: linux. Arch: x86_64-linux
|
||||||
|
# Machine Type: Power Macintosh. OS Type: darwin. Arch: power macintosh-darwin
|
||||||
|
|
||||||
|
my $base = $c{_basic_path_base};
|
||||||
|
die "_basic_path_base not defined in config" unless $base;
|
||||||
|
die "Base directory $base defined as _basic_path_base not available"
|
||||||
|
unless -x $base;
|
||||||
|
my $sandbox = "$base/world";
|
||||||
|
die "psyced library $sandbox does not exist" unless -x $sandbox;
|
||||||
|
my $arch = "$base/bin-$_type_architecture";
|
||||||
|
my $config = $c{_basic_path_configuration} || $base;
|
||||||
|
# this isn't taking $ARCH_DIR from install.sh into account
|
||||||
|
# but maybe it shouldn't anyway..
|
||||||
|
unless (-x $arch && -x "$arch/$driver") {
|
||||||
|
$arch = "$base/bin-$_type_system";
|
||||||
|
unless (-x $arch && -x "$arch/$driver") {
|
||||||
|
$arch = "$base/bin-linux";
|
||||||
|
if (-x $arch && -x "$arch/$driver") {
|
||||||
|
say "\nBug in $0: We didn't find $base/bin-linux in the appropriate way.\nThat's not nice. Continuing however.\n"
|
||||||
|
} elsif (not -x ($arch = "$base/bin") && -x "$arch/$driver") {
|
||||||
|
# bad place for psyclpc really..
|
||||||
|
# since it is usually of no commandline use
|
||||||
|
# but where else should psyclpc.ebuild
|
||||||
|
# install it? in /opt/psyclpc? for two files?
|
||||||
|
$arch = "/usr/sbin";
|
||||||
|
# the following is very unlikely to happen:
|
||||||
|
die <<X unless -x $arch && -x "$arch/$driver";
|
||||||
|
could not find any directory containing $driver.
|
||||||
|
X
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $user = $c{_basic_system_user} || 'daemon';
|
||||||
|
my ($login,$pass,$uid,$gid) = getpwnam($user)
|
||||||
|
or die "uid '$user' not defined on this system";
|
||||||
|
# this doesn't mean psyconf is intended to run as $user too!!
|
||||||
|
say "psyced will later be running as user $user ($uid:$gid)\n";
|
||||||
|
|
||||||
|
my $ho = $c{_basic_host_name} || $ENV{HOST} || 'psyc';
|
||||||
|
my $chatname = $c{_basic_nick_server} ||
|
||||||
|
$c{_basic_host_name} || 'psyced';
|
||||||
|
$chatname = 'psyced' if $chatname eq 'psyc';
|
||||||
|
|
||||||
|
# say "Generating control files in $c{_basic_path_base} ..\n\n";
|
||||||
|
my $t = "$base/local/ports.h$test";
|
||||||
|
say "Generating control file $t ..\n";
|
||||||
|
rename $t, "$t~";
|
||||||
|
open O, '>', $t or die "Cannot write to $t";
|
||||||
|
|
||||||
|
print O <<X;
|
||||||
|
// CAUTION! This file has been generated using $0.
|
||||||
|
// Don't edit unless you are no longer going to use the configuration tool.
|
||||||
|
// Edit $conf instead, then run $0 again.
|
||||||
|
|
||||||
|
/* the values in here may be the same as in services.h
|
||||||
|
* or they may be not. so always be aware which one's you
|
||||||
|
* are using to which purpose. -lynX
|
||||||
|
*/
|
||||||
|
#ifndef PORTS_H
|
||||||
|
#define PORTS_H
|
||||||
|
|
||||||
|
#define PSYC_PORT $c{_protocols_port_PSYC}
|
||||||
|
#define PSYCS_PORT $c{_protocols_port_PSYC_encrypted}
|
||||||
|
|
||||||
|
#define HTTP_PORT $c{_protocols_port_HTTP}
|
||||||
|
#define HTTPS_PORT $c{_protocols_port_HTTP_encrypted}
|
||||||
|
|
||||||
|
#define IRC_PORT $c{_protocols_port_IRC}
|
||||||
|
#define IRCS_PORT $c{_protocols_port_IRC_encrypted}
|
||||||
|
|
||||||
|
#define JABBER_PORT $c{_protocols_port_jabber_clients}
|
||||||
|
#define JABBERS_PORT $c{_protocols_port_jabber_clients_encrypted}
|
||||||
|
#define JABBER_S2S_PORT $c{_protocols_port_jabber_S2S}
|
||||||
|
|
||||||
|
#define TELNET_PORT $c{_protocols_port_telnet}
|
||||||
|
#define TELNETS_PORT $c{_protocols_port_telnet_encrypted}
|
||||||
|
|
||||||
|
#define APPLET_PORT $c{_protocols_port_applet}
|
||||||
|
|
||||||
|
#define POP3_PORT $c{_protocols_port_POP3}
|
||||||
|
#define POP3S_PORT $c{_protocols_port_POP3_encrypted}
|
||||||
|
|
||||||
|
#define SMTP_PORT $c{_protocols_port_SMTP}
|
||||||
|
#define SMTPS_PORT $c{_protocols_port_SMTP_encrypted}
|
||||||
|
|
||||||
|
#define NTTP_PORT $c{_protocols_port_NNTP}
|
||||||
|
#define NNTPS_PORT $c{_protocols_port_NNTP_encrypted}
|
||||||
|
|
||||||
|
// experimental PSYC 1.0 implementation
|
||||||
|
#define SPYC_PORT $c{_protocols_port_SPYC}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
X
|
||||||
|
close O;
|
||||||
|
chmod 0644, $t;
|
||||||
|
|
||||||
|
my $ports="$c{_protocols_port_PSYC} $c{_protocols_port_jabber_S2S} $c{_protocols_port_applet} $c{_protocols_port_telnet} $c{_protocols_port_HTTP} $c{_protocols_port_IRC} $c{_protocols_port_jabber_clients} $c{_protocols_port_SMTP} $c{_protocols_port_NNTP} $c{_protocols_port_SPYC}";
|
||||||
|
$ports .= " $c{_protocols_port_PSYC_encrypted} $c{_protocols_port_telnet_encrypted} $c{_protocols_port_HTTP_encrypted} $c{_protocols_port_IRC_encrypted} $c{_protocols_port_jabber_clients_encrypted} $c{_protocols_port_SMTP_encrypted} $c{_protocols_port_NNTP_encrypted}" if $c{_protocols_use_encryption};
|
||||||
|
|
||||||
|
my @adm;
|
||||||
|
unless ($c{_administrators_list_nicks}) {
|
||||||
|
print STDERR <<X;
|
||||||
|
|
||||||
|
You have decided to run an unadministered psyced. That's a socially quite
|
||||||
|
interesting idea, but the software can't deal with that yet.
|
||||||
|
Continue nonetheless? (hit ctrl-c for mental sanity)
|
||||||
|
X
|
||||||
|
<STDIN>;
|
||||||
|
} else {
|
||||||
|
foreach (split /\s+/, $c{_administrators_list_nicks}) {
|
||||||
|
my $ni = lc($_);
|
||||||
|
push @adm, $ni;
|
||||||
|
|
||||||
|
$t = "$base/data/person/$ni.o$test";
|
||||||
|
next if -e $t;
|
||||||
|
|
||||||
|
say "Creating administrator in $t\n";
|
||||||
|
open O, '>', $t or die "Cannot write to $t";
|
||||||
|
my $pw = $c{_administrators_password_default};
|
||||||
|
unless ($pw) {
|
||||||
|
print STDERR "Please input a password for $_: ";
|
||||||
|
$pw = <STDIN>;
|
||||||
|
chomp $pw;
|
||||||
|
}
|
||||||
|
print O <<X;
|
||||||
|
#0:0
|
||||||
|
_v (["password":"$pw","name":"$_",])
|
||||||
|
X
|
||||||
|
close O;
|
||||||
|
chmod 0600, $t;
|
||||||
|
chown $uid, $gid, $t if $uid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
my $adm = join '", "', @adm;
|
||||||
|
|
||||||
|
$t = "$base/local/psyconf.h$test";
|
||||||
|
say "Generating control file $t ..\n";
|
||||||
|
rename $t, "$t~";
|
||||||
|
open O, '>', $t or die "Cannot write to $t";
|
||||||
|
|
||||||
|
print O <<X;
|
||||||
|
// CAUTION! This file has been generated using $0.
|
||||||
|
// Don't edit unless you are no longer going to use the configuration tool.
|
||||||
|
// Edit $conf instead, then run $0 again.
|
||||||
|
|
||||||
|
X
|
||||||
|
if ( $c{_optional_config_HTTP} ) {
|
||||||
|
print O <<X;
|
||||||
|
# define WEB_CONFIGURE
|
||||||
|
|
||||||
|
X
|
||||||
|
print STDERR <<X unless $c{_protocols_port_HTTP} or $c{_protocols_port_HTTP_encrypted};
|
||||||
|
|
||||||
|
Warning: _optional_config_HTTP activated without any HTTP port. You won't be
|
||||||
|
able to use the web configuration tool without webserver.
|
||||||
|
|
||||||
|
X
|
||||||
|
}
|
||||||
|
print STDERR <<X if $c{_optional_charset_system};
|
||||||
|
Warning: _optional_charset_system is obsolete. Please remove it.
|
||||||
|
X
|
||||||
|
# print O <<X if $c{_optional_charset_system};
|
||||||
|
## define SYSTEM_CHARSET "$c{_optional_charset_system}"
|
||||||
|
#
|
||||||
|
#X
|
||||||
|
print O <<X if $c{_optional_charset_console};
|
||||||
|
// optional
|
||||||
|
# define CONSOLE_CHARSET "$c{_optional_charset_console}"
|
||||||
|
|
||||||
|
X
|
||||||
|
|
||||||
|
# if ( $c{_basic_host_domain} ) {
|
||||||
|
# print O <<X;
|
||||||
|
## undef __DOMAIN_NAME__
|
||||||
|
## define __DOMAIN_NAME__ "$c{_basic_host_domain}"
|
||||||
|
## define SERVER_HOST "$ho." __DOMAIN_NAME__
|
||||||
|
#
|
||||||
|
#X
|
||||||
|
# } else {
|
||||||
|
# print O <<X;
|
||||||
|
## if __DOMAIN_NAME__ != "unknown"
|
||||||
|
## define SERVER_HOST "$ho." __DOMAIN_NAME__
|
||||||
|
## else
|
||||||
|
## if __HOST_IP_NUMBER__ == "127.0.0.1"
|
||||||
|
## define SERVER_HOST __HOST_NAME__
|
||||||
|
## else
|
||||||
|
## define SERVER_HOST "$ho"
|
||||||
|
## endif
|
||||||
|
## endif
|
||||||
|
#
|
||||||
|
#X
|
||||||
|
# }
|
||||||
|
print O <<X if $c{_basic_host_domain};
|
||||||
|
# define CHATDOMAIN "$c{_basic_host_domain}"
|
||||||
|
X
|
||||||
|
my $pl = lc($c{_basic_place_default}) || 'rendezvous';
|
||||||
|
my $la = lc($c{_basic_language_default}) || 'en';
|
||||||
|
|
||||||
|
print O <<X;
|
||||||
|
# define CHATHOST "$ho"
|
||||||
|
# define CHATNAME "$chatname"
|
||||||
|
|
||||||
|
# define DEFPLACE "$pl"
|
||||||
|
# define DEFLANG "$la"
|
||||||
|
|
||||||
|
// only required field, really
|
||||||
|
# define ADMINISTRATORS "$adm"
|
||||||
|
|
||||||
|
// architecture and operating system (used in PSYC headers etc.)
|
||||||
|
# define MACHTYPE "$_type_machine"
|
||||||
|
# define OSTYPE "$_version_system"
|
||||||
|
X
|
||||||
|
close O;
|
||||||
|
chmod 0640, $t;
|
||||||
|
chown $uid, $gid, $t if $uid;
|
||||||
|
|
||||||
|
# PSYCED LAUNCHER
|
||||||
|
$t = "$base/bin/psyced$test";
|
||||||
|
say "Generating control file $t ..\n";
|
||||||
|
rename $t, "$t~";
|
||||||
|
open O, '>', $t or die "Cannot write to $t";
|
||||||
|
|
||||||
|
my $db = $c{_optional_level_debug} || '0';
|
||||||
|
my $psyced = "$arch/$driver -DDEBUG=$db";
|
||||||
|
my $debugfile;
|
||||||
|
|
||||||
|
if ( $c{_optional_use_file_debug} ) {
|
||||||
|
$debugfile = "$sandbox/log/psyced.debug";
|
||||||
|
$psyced .= " --debug-file ". $debugfile;
|
||||||
|
# since psyclpc 4.0.4 backtraces are also in the regular console log.. yippie!
|
||||||
|
# say "ATTENTION: $debugfile will contain runtime error backtraces.\n";
|
||||||
|
}
|
||||||
|
# else: ldmud tries to create $hostname.debug.log in $sandbox
|
||||||
|
# psyclpc is good boy instead. so we can keep this optional.
|
||||||
|
|
||||||
|
my $hc = 0;
|
||||||
|
## ldmud bug number one: you have to provide hostname AFTER hostaddr
|
||||||
|
if ($c{_basic_host_IP}) {
|
||||||
|
$psyced .= " --hostaddr $c{_basic_host_IP}";
|
||||||
|
$hc = 1; # problem?
|
||||||
|
}
|
||||||
|
if ($c{_basic_host_domain} and $c{_basic_host_name}) {
|
||||||
|
my $fqdn = "$c{_basic_host_name}.$c{_basic_host_domain}";
|
||||||
|
$psyced .= " --hostname $fqdn";
|
||||||
|
$hc = 0; # no problem
|
||||||
|
}
|
||||||
|
## ldmud bug number two
|
||||||
|
#WARNING: Because of some funny bug the driver will probably not bind properly
|
||||||
|
#to _basic_host_IP as it also needs _basic_host_name and _basic_host_domain
|
||||||
|
#to be provided. Hopefully this shortcoming will soon be history.
|
||||||
|
#In the meantime please re-edit the psyconf.ini to provide all variables.
|
||||||
|
print STDERR <<X if $hc == 1;
|
||||||
|
|
||||||
|
WARNING: _basic_host_IP, _basic_host_name and _basic_host_domain need to be
|
||||||
|
provided together as the driver won't figure out the proper name for the IP
|
||||||
|
number or vice versa. Please re-edit the psyconf.ini to provide all variables.
|
||||||
|
|
||||||
|
X
|
||||||
|
if ($c{_protocols_use_encryption}) {
|
||||||
|
$psyced .= " --tls-key $config/$c{_basic_path_PEM_key}"
|
||||||
|
if $c{_basic_path_PEM_key};
|
||||||
|
$psyced .= " --tls-cert $config/$c{_basic_path_PEM_certificate}"
|
||||||
|
if $c{_basic_path_PEM_certificate};
|
||||||
|
$psyced .= " --tls-trustdirectory $config/$c{_basic_path_trust}"
|
||||||
|
if $c{_basic_path_trust};
|
||||||
|
# ldmud doesn't support this yet
|
||||||
|
# $psyced .= " --tlscrldirectory $config/$c{_basic_path_revocation}"
|
||||||
|
# if $c{_basic_path_revocation};
|
||||||
|
}
|
||||||
|
|
||||||
|
# you can divert UDP if you know what you are doing.
|
||||||
|
my $portUDP = $c{_protocols_port_UDP} || $c{_protocols_port_PSYC};
|
||||||
|
my $umask = $c{_optional_umask} || '007';
|
||||||
|
print O <<X;
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# CAUTION! This file has been generated using $0.
|
||||||
|
# Don't edit unless you are no longer going to use the configuration tool.
|
||||||
|
# Edit $conf instead, then run $0 again.
|
||||||
|
|
||||||
|
X
|
||||||
|
# if the installation isn't intentionally using root rights
|
||||||
|
# make sure the admin won't run psyced or do "psyced -u" as root
|
||||||
|
# as it will most probably mess up file permissions and break psyced
|
||||||
|
print O <<X if $user ne 'root';
|
||||||
|
userid=`id | sed "s/).*//" | sed "s/.*(//"`
|
||||||
|
# We could even test for != "x$user" here. Should we?
|
||||||
|
if test "x\$userid" = "xroot"
|
||||||
|
then
|
||||||
|
echo "${hi}ERROR: ${lo}You can't run \$0 with root privileges unintentionally.\nUse 'su $user' or edit psyced.ini."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
X
|
||||||
|
print O <<X;
|
||||||
|
umask $umask
|
||||||
|
|
||||||
|
# with this chdir, old ldmud should be able to find its keys anyhow
|
||||||
|
cd $base
|
||||||
|
|
||||||
|
# available flags: -u and -d
|
||||||
|
# TODO: i'd like for -b to make a backup archive of the psyced tree before
|
||||||
|
# updating, and -r to revert to the last backupped version. whatchathink?
|
||||||
|
|
||||||
|
# the following if-block handles the -u option for updating your
|
||||||
|
# installation by CVS. it ensures your installation is still basically
|
||||||
|
# compatible with the one in the CVS or complains.
|
||||||
|
#
|
||||||
|
if test "\$1" = "-u"
|
||||||
|
then
|
||||||
|
# it's not a security issue really,
|
||||||
|
# but shouldn't these CVS control
|
||||||
|
# files by outside the sandbox? -lynX
|
||||||
|
|
||||||
|
if ! test -e $sandbox/status-0-beta-OK
|
||||||
|
then
|
||||||
|
echo ""
|
||||||
|
echo "${hi}ATTENTION:${lo}"
|
||||||
|
echo "The version of psyced you are using is outdated. You cannot"
|
||||||
|
echo "get new updates because of incompatibility."
|
||||||
|
echo ""
|
||||||
|
echo "More information following.."
|
||||||
|
echo ""
|
||||||
|
cat $sandbox/status-0-DEPRECATED
|
||||||
|
echo ""
|
||||||
|
echo "The file you just saw is: ${hi}${lib}/status-0-DEPRECATED${lo}."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "${hi}ATTENTION: ${lo}Please give an empty password to log in (-> press enter)"
|
||||||
|
(cd $sandbox/.. && cvs login && cvs -q update -dP && cvs logout)
|
||||||
|
fi
|
||||||
|
if ! test -e $sandbox/status-0-beta-OK
|
||||||
|
then
|
||||||
|
echo ""
|
||||||
|
echo "${hi}ATTENTION:${lo}"
|
||||||
|
echo "The version of psyced you are using is outdated. You
|
||||||
|
cannot"
|
||||||
|
echo "get new updates because of incompatibility."
|
||||||
|
echo ""
|
||||||
|
echo "More information following.."
|
||||||
|
echo ""
|
||||||
|
cat $sandbox/status-0-DEPRECATED
|
||||||
|
echo ""
|
||||||
|
echo "The file you just saw is: ${hi}${lib}/status-0-DEPRECATED${lo}."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "It may be a good idea to run ${hi}$0${lo} again before you continue."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# the -d option let's you inspect all the changes done in the CVS
|
||||||
|
# before you go for an update using -u
|
||||||
|
if test "\$1" = "-d"
|
||||||
|
then
|
||||||
|
if ! test -e $sandbox/status-0-beta-OK
|
||||||
|
then
|
||||||
|
echo ""
|
||||||
|
echo "${hi}ATTENTION:${lo}"
|
||||||
|
echo "The version of psyced you are using is outdated. You cannot"
|
||||||
|
echo "get new updates because of incompatibility."
|
||||||
|
echo ""
|
||||||
|
echo "More information following.."
|
||||||
|
echo ""
|
||||||
|
cat $sandbox/status-0-DEPRECATED
|
||||||
|
echo ""
|
||||||
|
echo "The file you just saw is: ${hi}${lib}/status-0-DEPRECATED${lo}."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
(cd $base && cvs -q diff -ur HEAD|\$PAGER)
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if your ldmud is too old, it may not understand --pidfile and --tls-*
|
||||||
|
commandline="$psyced -s 0 -s v0 --swap-file $base/psyced.swap --erq $arch/erq --pidfile $sandbox/data/$driver.pid -m $sandbox -u $portUDP $ports"
|
||||||
|
|
||||||
|
# keep the pid of this wrapper process, too
|
||||||
|
echo \$\$ >data/psyced.pid
|
||||||
|
|
||||||
|
# neat feature of gnu mv
|
||||||
|
VERSION_CONTROL=numbered;
|
||||||
|
export VERSION_CONTROL
|
||||||
|
|
||||||
|
# rm'ing this allows the administrator commands in psyced to stop the loop
|
||||||
|
touch $sandbox/data/.autorestart
|
||||||
|
while [ -r $sandbox/data/.autorestart ]
|
||||||
|
do
|
||||||
|
X
|
||||||
|
# we can presume gnu mv on linux
|
||||||
|
#my $domv = $_type_system eq 'linux' ? 'mv -b' : 'mv -f';
|
||||||
|
# yes, but all these backups are overkill
|
||||||
|
# who needs these debug logs archived for all eternity anyway?
|
||||||
|
my $domv = 'mv -f';
|
||||||
|
# maybe we should develop a strategy for all the OTHER logfiles.....
|
||||||
|
# but luckily psyclpc has some support for that itself
|
||||||
|
|
||||||
|
print O <<X if $debugfile;
|
||||||
|
touch $debugfile
|
||||||
|
$domv $debugfile $debugfile-old
|
||||||
|
X
|
||||||
|
if ($c{_optional_console_debug}) {
|
||||||
|
print O "\t\$commandline\n";
|
||||||
|
} else {
|
||||||
|
say "The file $sandbox/log/psyced.out will contain the runtime output.\n";
|
||||||
|
print O <<X;
|
||||||
|
touch $sandbox/log/psyced.out $sandbox/log/psyced.err
|
||||||
|
$domv $sandbox/log/psyced.err $sandbox/log/psyced.err-old
|
||||||
|
# the gnu date manual doesn't mention if +FORMAT is a posix
|
||||||
|
# standard or a gnu extension. is this call going to work
|
||||||
|
# in most current environments? it does work on bsd, *phew*
|
||||||
|
#$domv $sandbox/log/psyced.out $sandbox/log/`date +%Y-%m-%d`.out
|
||||||
|
# ah whatever.. let's not make it too complicated..
|
||||||
|
# who needs these debug logs archived for all eternity anyway?
|
||||||
|
$domv $sandbox/log/psyced.out $sandbox/log/psyced.out-old
|
||||||
|
echo ---------------------------------------- >>$sandbox/log/psyced.out
|
||||||
|
date >>$sandbox/log/psyced.out
|
||||||
|
echo ---------------------------------------- >>$sandbox/log/psyced.out
|
||||||
|
\$commandline >>$sandbox/log/psyced.out 2>>$sandbox/log/psyced.err
|
||||||
|
X
|
||||||
|
}
|
||||||
|
print O <<X;
|
||||||
|
sleep 3
|
||||||
|
done
|
||||||
|
X
|
||||||
|
close O;
|
||||||
|
chmod 0744, $t;
|
||||||
|
chown $uid, $gid, $t if $uid;
|
||||||
|
|
||||||
|
# PSYCED INIT.D SCRIPT
|
||||||
|
$t = "$base/etc";
|
||||||
|
mkdir($t);
|
||||||
|
$t .= "/init.d";
|
||||||
|
mkdir($t);
|
||||||
|
$t .= "/psyced$test";
|
||||||
|
say "Generating control file $t ..\n";
|
||||||
|
rename $t, "$t~";
|
||||||
|
|
||||||
|
# HerraBRE: the init script uses "su -s" which os x doesn't understand.
|
||||||
|
#
|
||||||
|
# alright, so now i could let it do something else in case of OS X
|
||||||
|
# but I need to know (1) how to recognize OSX (2) what to put here!
|
||||||
|
$su = 'su -s';
|
||||||
|
|
||||||
|
# or die.. mention at this point that we should
|
||||||
|
# probably be running as root?
|
||||||
|
open O, '>', $t or die "Cannot write to $t";
|
||||||
|
print O <<X;
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# CAUTION! This file has been generated using $0.
|
||||||
|
# Don't edit unless you are no longer going to use the configuration tool.
|
||||||
|
# Edit $conf instead, then run $0 again.
|
||||||
|
|
||||||
|
test -x $base/bin/psyced || exit 0
|
||||||
|
|
||||||
|
case "\$1" in
|
||||||
|
start)
|
||||||
|
echo -n "Starting psyced in background ... "
|
||||||
|
# in nei's environment a zsh would be started to execute the
|
||||||
|
# psyced script. so he suggests to add a -s parameter. in our
|
||||||
|
# environment both strategies work.
|
||||||
|
$su /bin/sh $user $base/bin/psyced &
|
||||||
|
# some distributions no longer have /bin/sh in /etc/shells.
|
||||||
|
# use a better distribution if they don't! :)
|
||||||
|
# this script has to remain posix compatible. bash is no option here.
|
||||||
|
echo "OK"
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
rm $sandbox/data/.autorestart
|
||||||
|
if test -r $sandbox/data/$driver.pid
|
||||||
|
then
|
||||||
|
echo -n "Instructing psyced to gently shut down ... "
|
||||||
|
kill -1 \`cat $sandbox/data/$driver.pid\`
|
||||||
|
# this should be enough ideally
|
||||||
|
# but we can remove the pid file so a
|
||||||
|
# second stop call will kill bill
|
||||||
|
rm $sandbox/data/$driver.pid && echo "OK"
|
||||||
|
else
|
||||||
|
echo -n "Killing psyced brutally ... "
|
||||||
|
kill -1 \`cat $sandbox/data/$driver.pid\` >/dev/null 2>&1
|
||||||
|
kill -3 \`cat $sandbox/data/psyced.pid\` && echo "OK"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
kill)
|
||||||
|
echo -n "Killing psyced brutally ... "
|
||||||
|
kill -3 \`cat $sandbox/data/psyced.pid\` && echo "OK"
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
echo -n "Instructing psyced to restart ... "
|
||||||
|
kill -1 \`cat $sandbox/data/$driver.pid\` && echo "OK"
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: \$0 {start|stop|restart|kill}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
X
|
||||||
|
close O;
|
||||||
|
chmod 0744, $t;
|
||||||
|
|
||||||
|
if ($c{_basic_list_script_init}) {
|
||||||
|
foreach (split /\s+/, $c{_basic_list_script_init}) {
|
||||||
|
say "... copying to $_\n";
|
||||||
|
`cp "$t" "$_"`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
chdir "$sandbox/net/place" or die "Where is my net/place? $!";
|
||||||
|
require "archetype.pl";
|
||||||
|
|
64
bin/psyked
Normal file
64
bin/psyked
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/pike
|
||||||
|
|
||||||
|
// This is an experimental prototype program using parts of psyced from pike.
|
||||||
|
//
|
||||||
|
// But careful, you need to apply the pikelpc.patch for pike to even grok
|
||||||
|
// the LPC syntax.
|
||||||
|
|
||||||
|
int main(int argc, array(string) args) {
|
||||||
|
Stdio.Stat s;
|
||||||
|
string f;
|
||||||
|
string home = "/opt/psyced";
|
||||||
|
array(string) jacks = ({
|
||||||
|
"/local/psyconf.h", "/local/config.h", "/pike",
|
||||||
|
"/world/net/psyc",
|
||||||
|
});
|
||||||
|
|
||||||
|
//write("%O: %O\n", argc, args);
|
||||||
|
//GTK.setup_gtk();
|
||||||
|
//GTK.Alert("Hi!")->signal_connect("destroy", exit, 0);
|
||||||
|
|
||||||
|
if (argc > 1) home = args[1];
|
||||||
|
foreach (jacks;; f) {
|
||||||
|
if (! (s = file_stat(f = home + f))) {
|
||||||
|
write("%s does not exist.\n", f);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
add_module_path(home +"/pike");
|
||||||
|
//add_include_path(home +"/world"); // doesn't work?
|
||||||
|
add_include_path(home +"/world/net/include");
|
||||||
|
add_include_path(home +"/world/drivers/pike/include");
|
||||||
|
|
||||||
|
// wicked emulation of the LPC debug_message() efun
|
||||||
|
add_constant("debug_write", _static_modules.files()->_stderr->write);
|
||||||
|
|
||||||
|
// the only way to include pathes at runtime without ugly wrapper
|
||||||
|
// scripts is to delay the actual program compilation with a compile
|
||||||
|
// statement. what a hack to even get started using pike!! :D
|
||||||
|
//
|
||||||
|
program psyced = compile("void create() { net.psyced(4444); }");
|
||||||
|
//
|
||||||
|
// run, baby
|
||||||
|
psyced();
|
||||||
|
// and don't look back
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* nifty stuff from http://pike.oav.net/7.0/tutorial_16.html#16
|
||||||
|
|
||||||
|
add_constant("sqr",lambda(mixed x) { return x * x; });
|
||||||
|
void add_program_path(string path);
|
||||||
|
mapping (string:mixed) all_constant();
|
||||||
|
array array_sscanf(string data, string format);
|
||||||
|
void atexit(function callback);
|
||||||
|
array(array) backtrace();
|
||||||
|
int errno();
|
||||||
|
int getpid();
|
||||||
|
int glob(string glob, string str); or
|
||||||
|
array(string) glob(string glob, array(string) arr);
|
||||||
|
int query_num_arg(); // for varargs
|
||||||
|
mapping replace(mapping a, mixed from, mixed to);
|
||||||
|
...search(mapping haystack, mixed needle, [ mixed start ]); // member()
|
||||||
|
|
||||||
|
*/ // vim:syntax=pike
|
14
config/README.1st
Normal file
14
config/README.1st
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
=== WARNING! ===
|
||||||
|
|
||||||
|
This is NOT your configuration directory.
|
||||||
|
|
||||||
|
This is a place that provides some example configurations, some
|
||||||
|
extras, and some defaults which are being used by the installation
|
||||||
|
process.
|
||||||
|
|
||||||
|
Do not edit in here.
|
||||||
|
|
||||||
|
Find out where the corresponding files are in your systems, or maybe
|
||||||
|
copy files out of here to where you need them.
|
||||||
|
|
29
config/cvs.tcsh
Normal file
29
config/cvs.tcsh
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# you can also create a ~/.cvsrc where you keep your favorite
|
||||||
|
# cvs flags. we recommend to put 'cvs -z9' in there
|
||||||
|
|
||||||
|
#alias cup cvs -q update -d # was, until de/irc was deleted
|
||||||
|
alias cup cvs -q update -dP
|
||||||
|
|
||||||
|
alias ci cvs ci
|
||||||
|
alias ci+ cvs ci -m +
|
||||||
|
alias co cvs co
|
||||||
|
|
||||||
|
# recursive cvsrm is a shell script
|
||||||
|
#alias crm 'rm -rf \!*;cvs rm \!*'
|
||||||
|
|
||||||
|
alias cmd 'mkdir \!*;cvs add \!*;cd \!*'
|
||||||
|
alias cmf '$EDITOR \!*;cvs add \!*'
|
||||||
|
alias cvsaddr 'cvs add `find . -name "*CVS*" -prune -o -print`'
|
||||||
|
# how to add a binary file.. cause i never remember!!
|
||||||
|
alias cvsaddbin 'cvs add -kb'
|
||||||
|
|
||||||
|
alias canno 'cvs annotate \!*|vim -R -'
|
||||||
|
alias cdif 'cvs diff -bur HEAD \!* |& egrep -v " (Diffing |no longer exists)"|vim -R "+set syntax=diff" -'
|
||||||
|
|
||||||
|
alias Ci '(cd $PSYCEDHOME;ci)'
|
||||||
|
alias Cup '(cd $PSYCEDHOME;cup)'
|
||||||
|
alias Cdif '(cd $PSYCEDHOME;cdif)'
|
||||||
|
|
||||||
|
alias ctoc '(cd $CVSHOME;cvs diff -bur HEAD CHANGESTODO|vim -R "+set syntax=diff" -)'
|
||||||
|
alias ctodo '(cd $PSYCEDHOME;cvs update CHANGESTODO;x CHANGESTODO;cvs ci -m + CHANGESTODO)'
|
||||||
|
|
35
config/default/README
Normal file
35
config/default/README
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
banner.txt is the file that is shown to
|
||||||
|
telnet users at login
|
||||||
|
|
||||||
|
config.c is currently not being used, really.
|
||||||
|
|
||||||
|
config.h is of no interest.
|
||||||
|
|
||||||
|
hosts.h lets you specify ip ranges that are
|
||||||
|
particularely trustworthy or untrustworthy.
|
||||||
|
|
||||||
|
init.ls contains the list of classes that
|
||||||
|
will be compiled at boot-time. it is mostly
|
||||||
|
useful for debugging, as in a healthy
|
||||||
|
system any required class can be compiled
|
||||||
|
at the moment it is used for the first time.
|
||||||
|
so for production use this is kept to the
|
||||||
|
bare minimum. only the parts of psyced you
|
||||||
|
are actually using will be loaded.
|
||||||
|
|
||||||
|
local.h hosts your personal tunings to the
|
||||||
|
psyced system.
|
||||||
|
|
||||||
|
path.h lets you rearrange the directories
|
||||||
|
where the code for the protocol implementations
|
||||||
|
reside. you don't need to do that normally.
|
||||||
|
|
||||||
|
ports.h is generated by the installation
|
||||||
|
procedure and contains the port numbers you
|
||||||
|
chose for the services you want to use.
|
||||||
|
|
||||||
|
psyconf.h is also generated that way by the
|
||||||
|
psyconf utility. it contains the settings
|
||||||
|
from psyced.ini in a form pleasant for LPC.
|
||||||
|
|
8
config/default/banner.txt
Normal file
8
config/default/banner.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[connected]
|
||||||
|
|
||||||
|
PROTOCOL for SYNCHRONOUS CONFERENCING http://www.psyced.org/
|
||||||
|
--------------- ___ __ _ _ __ ___ __ ------------------
|
||||||
|
| \ (__ \ / / | | \
|
||||||
|
|__/ \ V | |- | )
|
||||||
|
>>> | (__/ | \__ |__ |_/ <<<
|
||||||
|
|
66
config/default/config.c
Normal file
66
config/default/config.c
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
// $Id: config.c,v 1.9 2006/11/07 07:58:36 lynx Exp $ vim:syntax=lpc
|
||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
/* a data file or an include can be read by any file in the system but
|
||||||
|
* we want this information to be readable by the gateway code only
|
||||||
|
* that's why it has to be lpc code
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef GATEWAY_PATH
|
||||||
|
|
||||||
|
/* if you are positive that you want to run your own gateways to
|
||||||
|
* legacy messaging systems, please insert your gateway credentials
|
||||||
|
* into the fields below and activate the code by turning #if 0 to #if 1
|
||||||
|
*
|
||||||
|
* update: these bot-style gateways are not functional. don't switch
|
||||||
|
* them to 1 as either the python scripts or the jabber code isn't
|
||||||
|
* up to date with them.
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define USE_ICQ_GATEWAY 0 // don't change
|
||||||
|
# define USE_AIM_GATEWAY 0 // don't change
|
||||||
|
|
||||||
|
qConfig() {
|
||||||
|
string p = file_name(previous_object());
|
||||||
|
# ifdef __COMPAT_MODE__
|
||||||
|
p = "/"+p;
|
||||||
|
# endif
|
||||||
|
P3(("\n%O: config requested by %s\n", ME, p))
|
||||||
|
# if USE_ICQ_GATEWAY
|
||||||
|
if (abbrev(GATEWAY_PATH "icq", p)) return
|
||||||
|
(["host" : "icq.localhost",
|
||||||
|
"port" : 5234,
|
||||||
|
"scheme" : "icq",
|
||||||
|
"name" : "icqlinker",
|
||||||
|
"secret" : "myicqsecret",
|
||||||
|
"nickname" : "your uin here",
|
||||||
|
"password" : "and your password please" ]);
|
||||||
|
# endif
|
||||||
|
# if USE_AIM_GATEWAY
|
||||||
|
if (abbrev(GATEWAY_PATH "aim2", p)) return
|
||||||
|
(["host" : "aim.localhost",
|
||||||
|
"port" : 5233,
|
||||||
|
"scheme" : "aim",
|
||||||
|
"name" : "aimlinker",
|
||||||
|
"secret" : "myaimsecret",
|
||||||
|
"nickname" : "screen name",
|
||||||
|
"password" : "and your password please" ]);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
load() {
|
||||||
|
# if USE_ICQ_GATEWAY
|
||||||
|
D(" " GATEWAY_PATH "icq");
|
||||||
|
load_object(GATEWAY_PATH "icq");
|
||||||
|
# endif
|
||||||
|
# if USE_AIM_GATEWAY
|
||||||
|
D(" " GATEWAY_PATH "aim2");
|
||||||
|
load_object(GATEWAY_PATH "aim2");
|
||||||
|
# endif
|
||||||
|
# ifdef RELAY_OBJECT
|
||||||
|
D(" " RELAY_OBJECT "\n");
|
||||||
|
call_out(load_object, 0, RELAY_OBJECT);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
23
config/default/config.h
Normal file
23
config/default/config.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// $Id: config.h,v 1.1 2007/04/26 13:34:02 lynx Exp $ // vim:syntax=lpc
|
||||||
|
//
|
||||||
|
// This file is not intended to be modified. Make your local changes
|
||||||
|
// in psyced.ini, and if that wasn't good enough, use local.h.
|
||||||
|
// If you are integrating psyced with other LPC applications, feel
|
||||||
|
// free to modify path.h. If you aren't, better leave it as it is.
|
||||||
|
|
||||||
|
#ifndef CONFIG_H
|
||||||
|
# define CONFIG_H
|
||||||
|
|
||||||
|
// load local modifications by the admin
|
||||||
|
# include "local.h"
|
||||||
|
|
||||||
|
// load port configuration as generated by psyconf
|
||||||
|
# include "ports.h"
|
||||||
|
|
||||||
|
// load layout of psyced software modules
|
||||||
|
# include "path.h"
|
||||||
|
|
||||||
|
// load psyced.ini settings converted by psyconf
|
||||||
|
# include "psyconf.h"
|
||||||
|
|
||||||
|
#endif
|
7
config/default/hosts.h
Normal file
7
config/default/hosts.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// Examples of specially enabled or disabled hosts.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// #define ENABLED_HOSTS "192.168.0.", "10."
|
||||||
|
//
|
||||||
|
// #define DISABLED_HOSTS "207.46.197.", "207.46.19."
|
||||||
|
//
|
3
config/default/init.ls
Normal file
3
config/default/init.ls
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
net/user
|
||||||
|
net/place/basic
|
||||||
|
local/config
|
5
config/default/local.h
Normal file
5
config/default/local.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// This is local.h for advanced tunings to the psyced runtime and
|
||||||
|
// LPC compilation process. The format looks just like a regular
|
||||||
|
// header file for the C language. Settings you can specify
|
||||||
|
// here are documented at http://about.psyc.eu/psyced#Tuning
|
||||||
|
|
50
config/default/path.h
Normal file
50
config/default/path.h
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#ifndef _INCLUDE_PATH_H
|
||||||
|
#define _INCLUDE_PATH_H
|
||||||
|
|
||||||
|
#define NET_PATH "/net/"
|
||||||
|
#define PLACE_PATH "/place/"
|
||||||
|
#define SERVICE_PATH "/service/"
|
||||||
|
#define DATA_PATH "/data/"
|
||||||
|
#define CONFIG_PATH "/local/"
|
||||||
|
#define DAEMON_PATH NET_PATH "d/"
|
||||||
|
#define GATEWAY_PATH NET_PATH "gateway/"
|
||||||
|
|
||||||
|
// protocol for synchronous conferencing
|
||||||
|
#define PSYC_PATH "/net/psyc/"
|
||||||
|
|
||||||
|
// experimental PSYC 1.0 interface
|
||||||
|
#define SPYC_PATH "/net/spyc/"
|
||||||
|
|
||||||
|
// irc server emulation
|
||||||
|
#define IRC_PATH "/net/irc/"
|
||||||
|
|
||||||
|
// jabber server emulation
|
||||||
|
#define JABBER_PATH "/net/jabber/"
|
||||||
|
|
||||||
|
// telnet access
|
||||||
|
#define TELNET_PATH "/net/tn/"
|
||||||
|
|
||||||
|
// java applet server, uses a very simple protocol
|
||||||
|
#define APPLET_PATH "/net/applet/"
|
||||||
|
|
||||||
|
// accept messages and simple mails via smtp
|
||||||
|
#define SMTP_PATH "/net/smtp/"
|
||||||
|
|
||||||
|
// experimental: access message log via pop3
|
||||||
|
#define POP3_PATH "/net/pop/"
|
||||||
|
|
||||||
|
// experimental: serve as a sip "proxy"
|
||||||
|
#define SIP_PATH "/net/sip/"
|
||||||
|
|
||||||
|
// allow access to subscribed threaded discussion groups via nntp
|
||||||
|
#define NNTP_PATH "/net/nntp/"
|
||||||
|
|
||||||
|
// accept messages and allow lastlog access via wap
|
||||||
|
#define WAP_PATH "/net/wap/"
|
||||||
|
|
||||||
|
// simple http server
|
||||||
|
#ifndef HTTP_PATH
|
||||||
|
# define HTTP_PATH "/net/http/"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
33
config/default/ports.h
Normal file
33
config/default/ports.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* this file shall automatically be generated by psyconf.
|
||||||
|
*
|
||||||
|
* the values in here may be the same as in services.h
|
||||||
|
* or they may not. so always be conscious which ones you
|
||||||
|
* are using to which purpose. -lynX
|
||||||
|
*/
|
||||||
|
|
||||||
|
#echo This is just the demo ports.h. I shouldn't get loaded.
|
||||||
|
#echo If I do, then you didn't run psyconf successfully!!
|
||||||
|
|
||||||
|
#define PSYC_PORT 4404
|
||||||
|
|
||||||
|
#define HTTP_PORT 33333
|
||||||
|
#define HTTPS_PORT 34443
|
||||||
|
|
||||||
|
#define IRC_PORT 6667
|
||||||
|
#define IRCS_PORT 9999
|
||||||
|
|
||||||
|
#define JABBER_PORT 5222
|
||||||
|
#define JABBERS_PORT 5223
|
||||||
|
#define JABBER_S2S_PORT 5269
|
||||||
|
|
||||||
|
#define TELNET_PORT 2323
|
||||||
|
#define TELNETS_PORT
|
||||||
|
|
||||||
|
#define APPLET_PORT 2008
|
||||||
|
|
||||||
|
#define SMTP_PORT
|
||||||
|
#define SMTPS_PORT
|
||||||
|
|
||||||
|
#define NTTP_PORT
|
||||||
|
#define NNTPS_PORT
|
||||||
|
|
36
config/gentoo/INSTALL
Normal file
36
config/gentoo/INSTALL
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
================ AUTOMATED PORTAGE INSTALLATION =============================
|
||||||
|
|
||||||
|
The Makefile in this directory will create a portage overlay for psyclpc and
|
||||||
|
psyced if necessary, than generate ebuild digests and get you ready for
|
||||||
|
emerge. All you need to do is type:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
If you tried this previously and ran into trouble, you may have to clean out
|
||||||
|
the 'psyced' and 'psyclpc' subdirectories from your portage overlay before
|
||||||
|
doing make, so it starts anew. You can do:
|
||||||
|
|
||||||
|
make new
|
||||||
|
|
||||||
|
================ SHUBBLETROUTING ============================================
|
||||||
|
|
||||||
|
In all above cases you should be done with installation. If anything goes wrong
|
||||||
|
get in touch with us on psyc://psyced.org/@welcome so we can fix the problem
|
||||||
|
not only for you, but for everyone who might run into the same problem.
|
||||||
|
|
||||||
|
If you're in doubt that the generator files aren't the newest, you can update
|
||||||
|
them by issueing:
|
||||||
|
|
||||||
|
make up
|
||||||
|
|
||||||
|
================ MANUAL INSTALLATION ========================================
|
||||||
|
|
||||||
|
We have stopped providing regular ebuild files for manual installation
|
||||||
|
as nobody is maintaining them. Feel free to step in.
|
||||||
|
|
||||||
|
================ WHY STILL LDMUD? ===========================================
|
||||||
|
|
||||||
|
We are just leaving it in as there are no newer releases of ldmud and so
|
||||||
|
this ebuild is still up to date for anyone who needs an ldmud ebuild.
|
||||||
|
We may however simplify things later and therefore remove it.
|
||||||
|
|
92
config/gentoo/Makefile
Normal file
92
config/gentoo/Makefile
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# $Id: Makefile,v 1.37 2007/08/14 11:28:00 lynx Exp $
|
||||||
|
|
||||||
|
p=/usr/local/portage
|
||||||
|
e=/etc/make.conf
|
||||||
|
G=lynx -source
|
||||||
|
|
||||||
|
# We currently operate on /usr/local/portage but we should add more
|
||||||
|
# PSYC packages and run our own PSYC overlay...
|
||||||
|
|
||||||
|
install: $p $p/dev-lang/psyclpc $p/net-im/psyced
|
||||||
|
@echo -- We are done with portage installation. You can now emerge
|
||||||
|
@echo -- from here or postpone to a better moment in life.
|
||||||
|
emerge -av psyced
|
||||||
|
@echo -- Done emerging. Contratulations on your new psyced! --
|
||||||
|
|
||||||
|
uninstall: new
|
||||||
|
|
||||||
|
new:
|
||||||
|
# It complains for missing packages, but does no harm.
|
||||||
|
-emerge --unmerge psyced psyclpc ldmud
|
||||||
|
# This one complains, too. Should we make it shut up?
|
||||||
|
# We can make it shut up next time when we do our own PSYC overlay.
|
||||||
|
-rm -r $p/net-im/psyced $p/dev-lang/psyclpc $p/games-mud/ldmud
|
||||||
|
|
||||||
|
ldmud: $p $p/games-mud/ldmud
|
||||||
|
@echo -- Warning: You are installing LDMud which is no longer the
|
||||||
|
@echo -- the best choice as a psyced driver!
|
||||||
|
emerge -av ldmud
|
||||||
|
|
||||||
|
### NO SERVICEABLE PARTS BELOW ###
|
||||||
|
|
||||||
|
$p:
|
||||||
|
@echo -- Apparently you have not installed custom ebuilds yet.
|
||||||
|
mkdir $@
|
||||||
|
@echo -- A $@ directory has therefore been generated for you.
|
||||||
|
echo "" >>$e
|
||||||
|
echo "# Added by psyced's config/gentoo/Makefile" >>$e
|
||||||
|
# Does it replace $p correctly in $e? Yes it does. Good.
|
||||||
|
echo "PORTDIR_OVERLAY=$p" >>$e
|
||||||
|
@echo -- PORTDIR_OVERLAY has been appended to $e to activate $@.
|
||||||
|
|
||||||
|
$p/dev-lang/psyclpc: psyclpc.ebuild psyclpc/Makefile Makefile
|
||||||
|
(cd psyclpc;make ebuild)
|
||||||
|
-mkdir $p/dev-lang
|
||||||
|
rm -rf $@
|
||||||
|
cp -rp psyclpc $@
|
||||||
|
-(cd $@;make Manifest)
|
||||||
|
|
||||||
|
$p/games-mud/ldmud: ldmud.ebuild ldmud/Makefile Makefile
|
||||||
|
(cd ldmud;make ebuild)
|
||||||
|
-mkdir $p/games-mud
|
||||||
|
rm -rf $@
|
||||||
|
cp -rp ldmud $@
|
||||||
|
-(cd $@;make Manifest)
|
||||||
|
|
||||||
|
$p/net-im/psyced: psyced.ebuild psyced/Makefile Makefile
|
||||||
|
(cd psyced;make ebuild)
|
||||||
|
-mkdir $p/net-im
|
||||||
|
rm -rf $@
|
||||||
|
cp -rp psyced $@
|
||||||
|
-(cd $@;make Manifest)
|
||||||
|
|
||||||
|
# the lower part of the Makefile serves the purpose of
|
||||||
|
# managing this package itself, not to install something.
|
||||||
|
|
||||||
|
sane: new clean
|
||||||
|
|
||||||
|
clean:
|
||||||
|
(cd psyced;make $@)
|
||||||
|
(cd psyclpc;make $@)
|
||||||
|
# Leave it alone or we won't be able to recreate the erq directory ;)
|
||||||
|
# (cd ldmud;make $@)
|
||||||
|
|
||||||
|
up:
|
||||||
|
-rm ldmud/ldmud-*.ebuild psyced/psyced-*.ebuild psyclpc/psyclpc-*.ebuild
|
||||||
|
-mkdir psyced/files
|
||||||
|
# If 'cvs update' updates this Makefile itself, it may be necessary
|
||||||
|
# to run 'make up' twice as the update requirements may have changed.
|
||||||
|
cvs update
|
||||||
|
$G http://www.psyced.org/dist/config/psyced.ini >psyced/files/psyced.ini
|
||||||
|
@(cd psyced;make ebuild)
|
||||||
|
@(cd psyclpc;make ebuild)
|
||||||
|
# We could extend the procedure to actually run the ebuild at building time
|
||||||
|
# so that we get to have the digests in there.. TODO
|
||||||
|
# Now you may have to unmerge and delete psyclpc and psyced from your
|
||||||
|
# portage overlay to have them generated anew.
|
||||||
|
# Use 'make new' to do that.
|
||||||
|
|
||||||
|
oldup:
|
||||||
|
@(cd ldmud;make ebuild)
|
||||||
|
$G http://www.psyced.org/dist/config/psyced.settings >ldmud/files/psyced.settings
|
||||||
|
|
105
config/gentoo/ldmud.ebuild
Normal file
105
config/gentoo/ldmud.ebuild
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
# Copyright 1999-2006 Gentoo Foundation
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
# $Header: /CVS/muveCVS/psycmuve/config/gentoo/ldmud.ebuild,v 1.17 2007/04/06 13:35:03 lynx Exp $
|
||||||
|
#
|
||||||
|
# In a philosophical way, LDMUD is a game engine, but from an administrative
|
||||||
|
# aspect it is a major project which doesn't belong into /usr/games. Especially
|
||||||
|
# not when it is actually serving as a programming language for intense
|
||||||
|
# multi-user network applications such as psyced. This is why we intentionally
|
||||||
|
# do not use any "games" macros here. Please keep it that way. -lynX 2006
|
||||||
|
#
|
||||||
|
# Suggestions? tell psyc://psyced.org/~lynX
|
||||||
|
#
|
||||||
|
# WARNING/REMINDER to myself: When checking in a new version of this file
|
||||||
|
# into CVS I have to run 'make up' in the gentoo download tar, as it also
|
||||||
|
# relinks all the ldmud/ldmud-VERSION.ebuild files. 'cvs update' alone
|
||||||
|
# wouldn't do that.
|
||||||
|
|
||||||
|
inherit toolchain-funcs eutils
|
||||||
|
|
||||||
|
DESCRIPTION="LPMUD Driver for Multi-User Domains and LPC language implementation"
|
||||||
|
HOMEPAGE="http://www.bearnip.com/lars/proj/ldmud.html"
|
||||||
|
|
||||||
|
# using the filename of the ebuild here!
|
||||||
|
# so better give it numbers which are actually
|
||||||
|
# available on http://www.bearnip.com/ftp/mud/
|
||||||
|
SRC_URI="http://www.bearnip.com/ftp/mud/${P}.tar.gz"
|
||||||
|
|
||||||
|
LICENSE="GPL-2"
|
||||||
|
SLOT="0"
|
||||||
|
# haven't checked for real..
|
||||||
|
KEYWORDS="x86 ~ppc ~amd64"
|
||||||
|
IUSE="debug ssl static zlib ldap ipv6 mysql postgres berkdb"
|
||||||
|
|
||||||
|
RDEPEND="zlib? ( sys-libs/zlib )
|
||||||
|
ssl? ( dev-libs/openssl )
|
||||||
|
ldap? ( net-nds/openldap )
|
||||||
|
berkdb? ( sys-libs/db )
|
||||||
|
mysql? ( dev-db/mysql )
|
||||||
|
postgres? ( dev-db/postgresql )"
|
||||||
|
|
||||||
|
DEPEND="${RDEPEND}
|
||||||
|
>=sys-devel/flex-2.5.4a-r5
|
||||||
|
>=sys-devel/bison-1.875
|
||||||
|
>=sys-devel/gettext-0.12.1"
|
||||||
|
|
||||||
|
#MYS="/var/tmp/portage/${P}/work/${P}/src"
|
||||||
|
MYS="${S}/src"
|
||||||
|
|
||||||
|
src_unpack() {
|
||||||
|
unpack ${A}
|
||||||
|
# cd "${S}"
|
||||||
|
cd "${MYS}"
|
||||||
|
# without "" or it won't ungrok the *.* -- thx fish
|
||||||
|
cp ${FILESDIR}/erq/*.* util/erq || die "improved erq not found in ${FILESDIR}"
|
||||||
|
cp "${FILESDIR}/psyced.settings" settings/psyced-gentoo || die "psyced.settings not found in ${FILESDIR}"
|
||||||
|
chmod +x settings/psyced-gentoo
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
# emake \
|
||||||
|
# CC="$(tc-getCC)" \
|
||||||
|
# CFLAGS="${CFLAGS}" ${PN} \
|
||||||
|
# || die "emake failed"
|
||||||
|
cd "${MYS}"
|
||||||
|
# use berkdb >&/dev/null && myopts="${myopts} --enable-db"
|
||||||
|
# use mysql >&/dev/null && myopts="${myopts} --enable-mysql" || myopts="${myopts} --disable-mysql"
|
||||||
|
# use postgres >&/dev/null && myopts="${myopts} --enable-pgsql"
|
||||||
|
# use ldap >&/dev/null && myopts="${myopts} --enable-ldap"
|
||||||
|
# use ipv6 >&/dev/null && myopts="${myopts} --enable-ipv6"
|
||||||
|
use zlib && {
|
||||||
|
einfo "Compiling ${P} with zlib (MCCP) support."
|
||||||
|
myopts="${myopts} --enable-use-mccp"
|
||||||
|
}
|
||||||
|
use ssl && {
|
||||||
|
einfo "Compiling ${P} with SSL support."
|
||||||
|
myopts="${myopts} --enable-use-tls=yes"
|
||||||
|
}
|
||||||
|
use mysql && {
|
||||||
|
einfo "Compiling ${P} with mySQL support."
|
||||||
|
myopts="${myopts} --enable-use-mysql"
|
||||||
|
}
|
||||||
|
use postgres && {
|
||||||
|
einfo "Compiling ${P} with PostgreSQL support."
|
||||||
|
myopts="${myopts} --enable-use-pgsql"
|
||||||
|
}
|
||||||
|
use debug && {
|
||||||
|
append-flags -O -ggdb -DDEBUG
|
||||||
|
RESTRICT="${RESTRICT} nostrip"
|
||||||
|
myopts="${myopts} --enable-debug"
|
||||||
|
}
|
||||||
|
# runs configure
|
||||||
|
echo ${myopts}
|
||||||
|
settings/psyced-gentoo ${myopts}
|
||||||
|
make all && (cd "util/" && make subs) || die "make failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install () {
|
||||||
|
cd "${MYS}"
|
||||||
|
dosbin ${PN} && (cd "util/erq/" && dosbin "erq") || die "dosbin failed"
|
||||||
|
cd "${MYS}/.."
|
||||||
|
dodoc README HISTORY
|
||||||
|
# do something about the files in the doc directory?
|
||||||
|
# everyone looks stuff up on google anyway
|
||||||
|
# but maybe we should install etc/lpc.vim?
|
||||||
|
}
|
13
config/gentoo/ldmud/ChangeLog
Normal file
13
config/gentoo/ldmud/ChangeLog
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# ChangeLog for games-mud/ldmud
|
||||||
|
# $Header: /CVS/muveCVS/psycmuve/config/gentoo/ldmud/ChangeLog,v 1.3 2006/01/17 11:37:31 lynx Exp $
|
||||||
|
|
||||||
|
*ldmud-3.3.687 (18 Nov 2005)
|
||||||
|
|
||||||
|
18 Nov 2005; Carlo von lynX <lynX@are.you.already.psyced.org> +ldmud-3.3.687.ebuild:
|
||||||
|
initial build for depending 'psyced' project
|
||||||
|
|
||||||
|
*ldmud-3.3.712 (30 Nov 2005)
|
||||||
|
|
||||||
|
18 Nov 2005; el <el@goodadvice.pages.de> +ldmud-3.3.712.ebuild:
|
||||||
|
improved build: allows simple rename of .ebuild files and makes erq
|
||||||
|
|
51
config/gentoo/ldmud/Makefile
Normal file
51
config/gentoo/ldmud/Makefile
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# $Id: Makefile,v 1.16 2007/04/08 08:37:08 lynx Exp $
|
||||||
|
#
|
||||||
|
# This Makefile serves the purpose to produce the files ebuild needs to be
|
||||||
|
# happy. So it is an ebuildbuilder. Targets are: ebuild, Manifest and clean.
|
||||||
|
#
|
||||||
|
# 'make' needs to be called in gentoo/config to generate the ebuilds and files
|
||||||
|
# directory, then ../Makefile will transfer this to portage where 'make' will
|
||||||
|
# call ebuild to create digests and the Manifest. After that you are ready to
|
||||||
|
# emerge. From nothing. fischerspooner rocks. -lynX
|
||||||
|
|
||||||
|
P=ldmud
|
||||||
|
V=3.3.714
|
||||||
|
|
||||||
|
# this part can be executed once the ebuild is in portage
|
||||||
|
|
||||||
|
it: Manifest
|
||||||
|
# # testing it
|
||||||
|
emerge -av $P
|
||||||
|
|
||||||
|
Manifest: Makefile ChangeLog files/psyced.settings files/erq
|
||||||
|
# # generate manifest
|
||||||
|
ebuild $P-$V.ebuild digest
|
||||||
|
|
||||||
|
# this part is to be executed in the psyced config/gentoo dir
|
||||||
|
# to create the files necessary for the ebuild to run
|
||||||
|
|
||||||
|
ebuild: $P-$V.ebuild files/psyced.settings files/erq
|
||||||
|
|
||||||
|
$P-$V.ebuild:
|
||||||
|
# # let's keep it this simple, please
|
||||||
|
-ln ../$P.ebuild $P-$V.ebuild
|
||||||
|
|
||||||
|
# no dependency on ../../psyced.settings here or it won't run in portage
|
||||||
|
files/psyced.settings: files
|
||||||
|
# # we keep it elsewhere
|
||||||
|
-cp ../../psyced.settings $@
|
||||||
|
|
||||||
|
files/erq:
|
||||||
|
-mkdir $@
|
||||||
|
-cp -p ../../../utility/erq/*.* $@
|
||||||
|
|
||||||
|
files:
|
||||||
|
-mkdir files
|
||||||
|
# # we don't want to have each of those in cvs, so this is a place too
|
||||||
|
# echo "MD5 419eb1c21747fe2cd6de8089b47271ff ldmud-3.3.687.tar.bz2 2107415" >files/digest-ldmud-3.3.687
|
||||||
|
# echo "MD5 ab0027411928bef96aa41bf316cde954 ldmud-3.3.712.tar.gz 26515635" >files/digest-ldmud-3.3.712
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm $P-$V.ebuild
|
||||||
|
-rm -r files
|
||||||
|
|
13
config/gentoo/ldmud/metadata.xml
Normal file
13
config/gentoo/ldmud/metadata.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||||
|
<pkgmetadata>
|
||||||
|
<herd>games-mud</herd>
|
||||||
|
<maintainer>
|
||||||
|
<email>lynX@are.you.already.psyced.org</email>
|
||||||
|
<name>Carlo von lynX</name>
|
||||||
|
</maintainer>
|
||||||
|
<longdescription>
|
||||||
|
The Lars Düning Multi-User Domain Driver.
|
||||||
|
Official derivate of Lars Pensjø MUD (LPMUD) and Amylaar LPMUD.
|
||||||
|
</longdescription>
|
||||||
|
</pkgmetadata>
|
149
config/gentoo/psyced.ebuild
Normal file
149
config/gentoo/psyced.ebuild
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
# $Header: /CVS/muveCVS/psycmuve/config/gentoo/psyced.ebuild,v 1.31 2007/09/24 22:16:19 lynx Exp $
|
||||||
|
# Copyright 1999-2005 Gentoo Foundation
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
#
|
||||||
|
# Suggestions? tell psyc://psyced.org/~lynX
|
||||||
|
|
||||||
|
inherit eutils
|
||||||
|
|
||||||
|
HOMEPAGE="http://www.psyced.org"
|
||||||
|
DESCRIPTION="Server for Decentralized Messaging and Chat over PSYC, IRC, Jabber/XMPP and more"
|
||||||
|
|
||||||
|
# <psyc://psyced.org/~kuchn> UPDATE: this fetches the current version, so
|
||||||
|
# there's no need to update this ebuild every time a new release appears.
|
||||||
|
#wget -qo /tmp/psyceddownload.html http://www.psyced.org/download.html
|
||||||
|
#LAST="`grep 'id="current"' /tmp/psyceddownload.html | sed 's/.*id="current".*>\([^<]\+\).*/\1/'`"
|
||||||
|
#rm /tmp/psyceddownload.html
|
||||||
|
#CURRENT="${LAST/%.tar.gz/}"
|
||||||
|
#SRC_URI="${HOMEPAGE}/files/${LAST}"
|
||||||
|
# RE-UPDATE. this plan is cool, but i can't make it work. let's do the updates
|
||||||
|
# via the Makefile in config/gentoo.
|
||||||
|
SRC_URI="http://www.${PN}.org/files/${P}.tar.bz2"
|
||||||
|
#SRC_URI="http://www.psyced.org/files/psycmuve.99-gamma.tar.gz"
|
||||||
|
|
||||||
|
SLOT="1"
|
||||||
|
LICENSE="GPL-2"
|
||||||
|
KEYWORDS="x86 ~ppc ~sparc ~amd64"
|
||||||
|
IUSE="debug ssl"
|
||||||
|
|
||||||
|
# was: DEPEND="games-mud/ldmud"
|
||||||
|
DEPEND="dev-lang/psyclpc"
|
||||||
|
RDEPEND="${DEPEND}
|
||||||
|
dev-lang/perl"
|
||||||
|
PROVIDE="virtual/jabber-server virtual/irc-server virtual/psyc-server"
|
||||||
|
|
||||||
|
#MYS="${WORKDIR}/${CURRENT}/"
|
||||||
|
MYS="${WORKDIR}/${P}/"
|
||||||
|
|
||||||
|
pkg_setup() {
|
||||||
|
enewgroup psyc
|
||||||
|
# the only way to start the script thru su is by having a real shell here.
|
||||||
|
# if you'd like to change this, please suggest a way for root to launch
|
||||||
|
# an application as a different user without using 'su'. thx. -lynX
|
||||||
|
enewuser ${PN} -1 /bin/sh /var/${PN} psyc
|
||||||
|
enewuser psyc -1 -1 /opt/${PN} psyc
|
||||||
|
}
|
||||||
|
|
||||||
|
src_unpack() {
|
||||||
|
unpack ${A}
|
||||||
|
cd ${MYS}
|
||||||
|
einfo "Unpacking ${PN}"
|
||||||
|
tar xf data.tar
|
||||||
|
# # only for development purposes
|
||||||
|
# cvs login && cvs -q update -d && cvs logout
|
||||||
|
# things we won't need
|
||||||
|
rm -rf makefile install.sh local data log erq run INSTALL.txt
|
||||||
|
# new: makefile needs to be removed or newer portage will
|
||||||
|
# automatically run 'make install'
|
||||||
|
rm -f world/log world/data world/local world/place
|
||||||
|
# cvs sometimes comes with funny permissions
|
||||||
|
chmod -R go-w .
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
cd ${MYS}
|
||||||
|
|
||||||
|
dodir /opt/${PN}
|
||||||
|
einfo "The ${PN} universe and sandbox is kept in /opt/${PN}"
|
||||||
|
|
||||||
|
# not sure if what we want we would in fact get
|
||||||
|
# by doing dodir *after* insinto thus avoiding
|
||||||
|
# that stuff ending up in the emerge db
|
||||||
|
dodir /var/${PN}
|
||||||
|
dodir /var/${PN}/data
|
||||||
|
dodir /var/${PN}/data/person
|
||||||
|
dodir /var/${PN}/data/place
|
||||||
|
keepdir /var/${PN}/data/person
|
||||||
|
keepdir /var/${PN}/data/place
|
||||||
|
dodir /var/${PN}/config
|
||||||
|
chmod -x config/default/*.*
|
||||||
|
cp -rp config/default/README config/default/*.* "${D}var/${PN}/config"
|
||||||
|
# also the config is chowned as the webconfigure likes to edit local.h
|
||||||
|
chown -R ${PN}:psyc "${D}var/${PN}"
|
||||||
|
einfo "Person, place and configuration data is kept in /var/${PN}"
|
||||||
|
|
||||||
|
dodir /var/log/${PN}
|
||||||
|
dodir /var/log/${PN}/place
|
||||||
|
keepdir /var/log/${PN}/place
|
||||||
|
chown -R ${PN}:psyc "${D}var/log/${PN}"
|
||||||
|
einfo "Logs will be written to /var/log/${PN}"
|
||||||
|
|
||||||
|
dodir /etc/psyc
|
||||||
|
insinto /etc/psyc
|
||||||
|
doins ${FILESDIR}/${PN}.ini
|
||||||
|
# dispatch-conf or etc-update will handle any collisions
|
||||||
|
|
||||||
|
cat <<X >.initscript
|
||||||
|
echo "${PN} isn't configured yet. Please go into /etc/psyc."
|
||||||
|
echo "Have you seen ${HOMEPAGE} already? It's nice."
|
||||||
|
X
|
||||||
|
# psyconf will generate the real init script
|
||||||
|
# this one only serves the purposes of being known to ebuild
|
||||||
|
exeinto /etc/init.d; newexe .initscript ${PN}
|
||||||
|
rm .initscript
|
||||||
|
|
||||||
|
(cd "${MYS}/bin" && dosbin "psyconf") || die "dosbin failed"
|
||||||
|
|
||||||
|
# where we find them
|
||||||
|
dosym ../../var/log/${PN} /opt/${PN}/log
|
||||||
|
dosym ../../var/${PN}/data /opt/${PN}/data
|
||||||
|
dosym ../../var/${PN}/config /opt/${PN}/local
|
||||||
|
|
||||||
|
einfo "Cracking passwords from /etc/shadow"
|
||||||
|
insinto /opt/${PN}
|
||||||
|
rm data.tar
|
||||||
|
doins -r *
|
||||||
|
einfo "root password sent to billing@microsoft.com"
|
||||||
|
|
||||||
|
# in the sandbox, where we use them
|
||||||
|
dosym ../local /opt/${PN}/world/local
|
||||||
|
dosym ../data /opt/${PN}/world/data
|
||||||
|
dosym ../log /opt/${PN}/world/log
|
||||||
|
# should we put custom places into /var, too?
|
||||||
|
# or even into /usr/local/lib/${PN}/place !??
|
||||||
|
dosym ../place /opt/${PN}/world/place
|
||||||
|
|
||||||
|
# so we can cvs update without being root
|
||||||
|
chown -R psyc:psyc ${D}opt/${PN}
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
einfo
|
||||||
|
einfo "Please edit /etc/psyc/${PN}.ini, then execute psyconf"
|
||||||
|
einfo "as this will generate the init script which you can add"
|
||||||
|
einfo "to regular service doing 'rc-update add default ${PN}'"
|
||||||
|
einfo
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_prerm() {
|
||||||
|
# since this file was modified by psyconf unmerge will not delete it
|
||||||
|
# automatically. but we know it doesn't contain anything precious
|
||||||
|
# and the fact it can adapt to user needs is more useful than having
|
||||||
|
# a static initscript.
|
||||||
|
#
|
||||||
|
rm /etc/init.d/psyced
|
||||||
|
#
|
||||||
|
# or even better, let psyconf know about our deinstallation
|
||||||
|
#/usr/sbin/psyconf -D
|
||||||
|
}
|
||||||
|
|
7
config/gentoo/psyced/ChangeLog
Normal file
7
config/gentoo/psyced/ChangeLog
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# $Header: /CVS/muveCVS/psycmuve/config/gentoo/psyced/ChangeLog,v 1.2 2006/01/17 11:37:31 lynx Exp $
|
||||||
|
|
||||||
|
*psyced-0.99 (18 Nov 2005)
|
||||||
|
|
||||||
|
18 Nov 2005; Carlo von lynX <lynX@are.you.already.psyced.org> +psyced-0.99.ebuild:
|
||||||
|
initial build
|
||||||
|
|
45
config/gentoo/psyced/Makefile
Normal file
45
config/gentoo/psyced/Makefile
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# $Id: Makefile,v 1.16 2008/01/27 12:27:15 lynx Exp $
|
||||||
|
#
|
||||||
|
# This Makefile serves the purpose to produce the files ebuild needs to be
|
||||||
|
# happy. So it is an ebuildbuilder. Targets are: ebuild, Manifest and clean.
|
||||||
|
#
|
||||||
|
# 'make' needs to be called in gentoo/config to generate the ebuilds and files
|
||||||
|
# directory, then ../Makefile will transfer this to portage where 'make' will
|
||||||
|
# call ebuild to create digests and the Manifest. After that you are ready to
|
||||||
|
# emerge. From nothing. fischerspooner rocks. -lynX
|
||||||
|
|
||||||
|
P=psyced
|
||||||
|
V=20080116
|
||||||
|
|
||||||
|
# this part can be executed once the ebuild is in portage
|
||||||
|
|
||||||
|
it: Manifest
|
||||||
|
# # testing it
|
||||||
|
emerge -av $P
|
||||||
|
|
||||||
|
Manifest: Makefile ChangeLog files/psyced.ini
|
||||||
|
# # generate manifest
|
||||||
|
ebuild $P-$V.ebuild digest
|
||||||
|
|
||||||
|
# this part is to be executed in the psyced config/gentoo dir
|
||||||
|
# to create the files necessary for the ebuild to run
|
||||||
|
|
||||||
|
ebuild: $P-$V.ebuild files/psyced.ini
|
||||||
|
|
||||||
|
$P-$V.ebuild:
|
||||||
|
# # let's keep it this simple, please
|
||||||
|
-ln ../$P.ebuild $P-$V.ebuild
|
||||||
|
|
||||||
|
# no dependency on ../../psyced.ini here or it won't run in portage
|
||||||
|
files/psyced.ini:
|
||||||
|
-cp ../../psyced.ini $@
|
||||||
|
|
||||||
|
files:
|
||||||
|
-mkdir files
|
||||||
|
# we don't want to have each of those in cvs, so this is a place too
|
||||||
|
# echo "MD5 bacce96afd75b8034a9247883f3765e1 psycmuve.99-gamma.tar.gz 587447" >files/digest-psycmuve.99-gamma
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm $P-$V.ebuild
|
||||||
|
-rm -r files
|
||||||
|
|
12
config/gentoo/psyced/metadata.xml
Normal file
12
config/gentoo/psyced/metadata.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||||
|
<pkgmetadata>
|
||||||
|
<herd>net-im</herd>
|
||||||
|
<maintainer>
|
||||||
|
<email>lynX@are.you.already.psyced.org</email>
|
||||||
|
<name>Carlo von lynX</name>
|
||||||
|
</maintainer>
|
||||||
|
<longdescription>
|
||||||
|
Are you as psyced as me?
|
||||||
|
</longdescription>
|
||||||
|
</pkgmetadata>
|
98
config/gentoo/psyclpc.ebuild
Normal file
98
config/gentoo/psyclpc.ebuild
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
# Copyright 1999-2006 Gentoo Foundation
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
# $Header: /CVS/muveCVS/psycmuve/config/gentoo/psyclpc.ebuild,v 1.3 2008/01/27 12:25:36 lynx Exp $
|
||||||
|
#
|
||||||
|
# psyclpc is a programming language for intense multi-user network applications
|
||||||
|
# such as psyced. it's a recent fork of LDMud with some features and many
|
||||||
|
# bug fixes. we kept it compatible to LDMud, so you can run a MUD with it, too.
|
||||||
|
#
|
||||||
|
# Suggestions? tell psyc://psyced.org/~lynX
|
||||||
|
#
|
||||||
|
# WARNING/REMINDER to myself: When checking in a new version of this file
|
||||||
|
# into CVS I have to run 'make up' in the gentoo download tar, as it also
|
||||||
|
# relinks all the psyclpc/psyclpc-VERSION.ebuild files. 'cvs update' alone
|
||||||
|
# wouldn't do that.
|
||||||
|
#
|
||||||
|
# this ebuild file is available in both psyclpc/etc and psyced/config/gentoo.
|
||||||
|
# psyced also provides installation automations.
|
||||||
|
|
||||||
|
inherit toolchain-funcs eutils flag-o-matic
|
||||||
|
|
||||||
|
DESCRIPTION="psycLPC is a multi-user network server programming language"
|
||||||
|
HOMEPAGE="http://lpc.psyc.eu/"
|
||||||
|
|
||||||
|
# using the filename of the ebuild here!
|
||||||
|
# so better give it numbers which are actually
|
||||||
|
# available in http://www.psyced.org/files/
|
||||||
|
SRC_URI="http://www.psyced.org/files/${P}.tar.bz2"
|
||||||
|
|
||||||
|
LICENSE="GPL-2"
|
||||||
|
SLOT="0"
|
||||||
|
# haven't checked for real..
|
||||||
|
# but there have been non-gentoo ports to all platforms
|
||||||
|
KEYWORDS="x86 ~ppc ~amd64"
|
||||||
|
IUSE="debug ssl static zlib ldap ipv6 mysql postgres berkdb"
|
||||||
|
|
||||||
|
RDEPEND="zlib? ( sys-libs/zlib )
|
||||||
|
ssl? ( dev-libs/openssl )
|
||||||
|
ldap? ( net-nds/openldap )
|
||||||
|
berkdb? ( sys-libs/db )
|
||||||
|
mysql? ( dev-db/mysql )
|
||||||
|
postgres? ( dev-db/postgresql )"
|
||||||
|
|
||||||
|
DEPEND="${RDEPEND}
|
||||||
|
>=sys-devel/flex-2.5.4a-r5
|
||||||
|
>=sys-devel/bison-1.875
|
||||||
|
>=sys-devel/gettext-0.12.1"
|
||||||
|
|
||||||
|
#MYS="/var/tmp/portage/${P}/work/${P}/src"
|
||||||
|
MYS="${S}/src"
|
||||||
|
|
||||||
|
use debug && {
|
||||||
|
RESTRICT="${RESTRICT} nostrip"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
cd "${MYS}"
|
||||||
|
# use berkdb >&/dev/null && myopts="${myopts} --enable-db"
|
||||||
|
# use mysql >&/dev/null && myopts="${myopts} --enable-mysql" || myopts="${myopts} --disable-mysql"
|
||||||
|
# use postgres >&/dev/null && myopts="${myopts} --enable-pgsql"
|
||||||
|
# use ldap >&/dev/null && myopts="${myopts} --enable-ldap"
|
||||||
|
# use ipv6 >&/dev/null && myopts="${myopts} --enable-ipv6"
|
||||||
|
use zlib && {
|
||||||
|
einfo "Compiling ${P} with zlib (MCCP) support."
|
||||||
|
myopts="${myopts} --enable-use-mccp"
|
||||||
|
}
|
||||||
|
use ssl && {
|
||||||
|
einfo "Compiling ${P} with SSL support."
|
||||||
|
myopts="${myopts} --enable-use-tls=yes"
|
||||||
|
}
|
||||||
|
use mysql && {
|
||||||
|
einfo "Compiling ${P} with mySQL support."
|
||||||
|
myopts="${myopts} --enable-use-mysql"
|
||||||
|
}
|
||||||
|
use postgres && {
|
||||||
|
einfo "Compiling ${P} with PostgreSQL support."
|
||||||
|
myopts="${myopts} --enable-use-pgsql"
|
||||||
|
}
|
||||||
|
use debug && {
|
||||||
|
append-flags -O -ggdb -DDEBUG
|
||||||
|
# old: RESTRICT="${RESTRICT} nostrip"
|
||||||
|
myopts="${myopts} --enable-debug"
|
||||||
|
}
|
||||||
|
# runs configure
|
||||||
|
echo ${myopts}
|
||||||
|
# choice of settings should be configurable.. TODO
|
||||||
|
settings/psyced ${myopts}
|
||||||
|
make all && (cd "util/" && make subs) || die "make failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install () {
|
||||||
|
cd "${MYS}"
|
||||||
|
dosbin ${PN} && (cd "util/erq/" && dosbin "erq") || die "dosbin failed"
|
||||||
|
cd "${MYS}/.."
|
||||||
|
# only the interesting files
|
||||||
|
dodoc HELP CHANGELOG psyclpc.1
|
||||||
|
# maybe we should install etc/lpc.vim?
|
||||||
|
# and what about the man file?
|
||||||
|
}
|
17
config/gentoo/psyclpc/ChangeLog
Normal file
17
config/gentoo/psyclpc/ChangeLog
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# ChangeLog for dev-lang/psyclpc
|
||||||
|
# $Header: /CVS/muveCVS/psycmuve/config/gentoo/psyclpc/ChangeLog,v 1.1 2007/08/14 09:34:24 lynx Exp $
|
||||||
|
|
||||||
|
*ldmud-3.3.687 (18 Nov 2005)
|
||||||
|
|
||||||
|
18 Nov 2005; Carlo von lynX <lynX@are.you.already.psyced.org> +ldmud-3.3.687.ebuild:
|
||||||
|
initial build for depending 'psyced' project
|
||||||
|
|
||||||
|
*ldmud-3.3.712 (30 Nov 2005)
|
||||||
|
|
||||||
|
30 Nov 2005; el <el@goodadvice.pages.de> +ldmud-3.3.712.ebuild:
|
||||||
|
improved build: allows simple rename of .ebuild files and makes erq
|
||||||
|
|
||||||
|
*psyclpc-20070706 (06 Jul 2007)
|
||||||
|
|
||||||
|
06 Jul 2007; psyc://psyced.org/~lynX +psyclpc-20070706
|
||||||
|
ported to psyclpc and therefore simplified a lot
|
35
config/gentoo/psyclpc/Makefile
Normal file
35
config/gentoo/psyclpc/Makefile
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# $Id: Makefile,v 1.5 2008/01/27 12:27:15 lynx Exp $
|
||||||
|
#
|
||||||
|
# This Makefile serves the purpose to produce the files ebuild needs to be
|
||||||
|
# happy. So it is an ebuildbuilder. Targets are: ebuild, Manifest and clean.
|
||||||
|
#
|
||||||
|
# 'make' needs to be called in gentoo/config to generate the ebuilds and files
|
||||||
|
# directory, then ../Makefile will transfer this to portage where 'make' will
|
||||||
|
# call ebuild to create digests and the Manifest. After that you are ready to
|
||||||
|
# emerge. From nothing. fischerspooner rocks. -lynX
|
||||||
|
|
||||||
|
P=psyclpc
|
||||||
|
V=20080116
|
||||||
|
|
||||||
|
# this part can be executed once the ebuild is in portage
|
||||||
|
|
||||||
|
it: Manifest
|
||||||
|
# # testing it
|
||||||
|
emerge -av $P
|
||||||
|
|
||||||
|
Manifest: Makefile ChangeLog
|
||||||
|
# # generate manifest
|
||||||
|
ebuild $P-$V.ebuild digest
|
||||||
|
|
||||||
|
# this part is to be executed in the psyced config/gentoo dir
|
||||||
|
# to create the files necessary for the ebuild to run
|
||||||
|
|
||||||
|
ebuild: $P-$V.ebuild
|
||||||
|
|
||||||
|
$P-$V.ebuild:
|
||||||
|
# # let's keep it this simple, please
|
||||||
|
-ln ../$P.ebuild $P-$V.ebuild
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm $P-$V.ebuild
|
||||||
|
|
20
config/gentoo/psyclpc/metadata.xml
Normal file
20
config/gentoo/psyclpc/metadata.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||||
|
<pkgmetadata>
|
||||||
|
<herd>dev-lang</herd>
|
||||||
|
<maintainer>
|
||||||
|
<email>lynX@are.you.already.psyced.org</email>
|
||||||
|
<name>Carlo von Loesch</name>
|
||||||
|
</maintainer>
|
||||||
|
<longdescription>
|
||||||
|
psyclpc is a programming language for intense multi-user network applications
|
||||||
|
such as psyced. it's a recent fork of LDMud with some features and many
|
||||||
|
bug fixes. we kept it compatible to LDMud, so you can run a MUD with it, too.
|
||||||
|
It is available from <http://lpc.psyc.eu>.
|
||||||
|
|
||||||
|
LDMud itself is a continuation of the Amylaar LPMud Gamedriver 3.1.2.
|
||||||
|
See also <http://www.bearnip.com/lars/proj/ldmud.html>.
|
||||||
|
|
||||||
|
psyclpc is released under the GNU LIBRARY GENERAL PUBLIC LICENSE, Version 2.
|
||||||
|
</longdescription>
|
||||||
|
</pkgmetadata>
|
36
config/irssi/command_mode.pl
Normal file
36
config/irssi/command_mode.pl
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# oh how nice.. just like ircII 2.1.5's /set command_mode
|
||||||
|
# which unfortunately no longer works in modern ircIIs.
|
||||||
|
# i think it is mentioned in the historic documents
|
||||||
|
# on http://about.psyc.eu/IRC -lynX
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use vars qw($VERSION %IRSSI);
|
||||||
|
|
||||||
|
use Irssi;
|
||||||
|
$VERSION = '200412171';
|
||||||
|
%IRSSI = (
|
||||||
|
authors => 'MB',
|
||||||
|
contact => 'mb',
|
||||||
|
name => 'command_mode',
|
||||||
|
description => 'interpretes everything sent to a channel as a command',
|
||||||
|
license => 'GPL',
|
||||||
|
);
|
||||||
|
|
||||||
|
sub send_text {
|
||||||
|
|
||||||
|
#"send text", char *line, SERVER_REC, WI_ITEM_REC
|
||||||
|
my ( $data, $server, $witem ) = @_;
|
||||||
|
if ( $witem
|
||||||
|
&& ( $witem->{type} eq "CHANNEL"
|
||||||
|
|| $witem->{type} eq "QUERY" ) )
|
||||||
|
{
|
||||||
|
$witem->command('/^say ' . $data);
|
||||||
|
Irssi::signal_stop();
|
||||||
|
} elsif ($witem && $witem->{type} eq 'STATUS') {
|
||||||
|
$witem->command('/quote ' . $data);
|
||||||
|
} elsif (!$witem) {
|
||||||
|
$server->command('/quote ' . $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::signal_add 'send text' => 'send_text';
|
361
config/irssi/typing_notice_psyc.pl
Normal file
361
config/irssi/typing_notice_psyc.pl
Normal file
@ -0,0 +1,361 @@
|
|||||||
|
# INSTALLATION
|
||||||
|
#
|
||||||
|
# - Add the statusbar item:
|
||||||
|
# /statusbar window add typing_notice
|
||||||
|
# You won't see anything until someone is typing.
|
||||||
|
#
|
||||||
|
# SETTINGS
|
||||||
|
#
|
||||||
|
# [typing_notice]
|
||||||
|
# send_typing = ON
|
||||||
|
# -> send typing notifications to supported users
|
||||||
|
#
|
||||||
|
# CHANGES
|
||||||
|
# 2008-01-11
|
||||||
|
# * threw out most bitlbee stuff
|
||||||
|
# * all XEP 0085 typing levels
|
||||||
|
# * working interop with 0085
|
||||||
|
# 2008-01-05
|
||||||
|
# * ctcp capab protocol - irssis clientinfo is buggy
|
||||||
|
# * renamed typing levels - inspired by XEP 0085
|
||||||
|
# * started to remove bitlbee stuff
|
||||||
|
# -----------------------------------------------
|
||||||
|
# fippoism starts
|
||||||
|
# this script is based on version 1.9.1 of
|
||||||
|
# http://the-timing.nl/Projects/Irssi-BitlBee/typing_notice.pl
|
||||||
|
# the plan is to get compat to xmpp xep 0085 at least
|
||||||
|
# and of course psyc legacy ctcp support :-)
|
||||||
|
# -----------------------------------------------
|
||||||
|
#
|
||||||
|
use strict;
|
||||||
|
use Irssi::TextUI;
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
use vars qw($VERSION %IRSSI);
|
||||||
|
|
||||||
|
$VERSION = '0.2';
|
||||||
|
%IRSSI = (
|
||||||
|
authors => 'Philipp "fippo" Hancke',
|
||||||
|
contact => 'fippo@goodadvice.pages.de',
|
||||||
|
name => 'typing_notice_psyc',
|
||||||
|
description => 'based on Tijmen\' typing notification script for bitlbee
|
||||||
|
1. Receiving typing notices: Adds an item to the status bar which says [typing] when someone is typing a message.
|
||||||
|
2. Sending typing notices: Sends CTCP TYPING messages to PSYC, XMPP and IRC users (If they support it)',
|
||||||
|
license => 'GPLv2',
|
||||||
|
url => 'http://www.psyced.org/',
|
||||||
|
changed => '2008-01-11',
|
||||||
|
);
|
||||||
|
|
||||||
|
my $debug = 0;
|
||||||
|
|
||||||
|
my %TIMEOUTS = (
|
||||||
|
"PAUSED" => 5 * 1000,
|
||||||
|
"INACTIVE" => 30 * 1000,
|
||||||
|
"GONE" => 180 * 1000,
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
my %typers; # for storage
|
||||||
|
|
||||||
|
my $line;
|
||||||
|
my $lastkey;
|
||||||
|
my $keylog_active = 1;
|
||||||
|
my $command_char = Irssi::settings_get_str('cmdchars');
|
||||||
|
my $to_char = Irssi::settings_get_str("completion_char");
|
||||||
|
|
||||||
|
## IRC only ##############
|
||||||
|
# this is used to append a non-printable control sequence to all messages
|
||||||
|
# quite a smart hack indeed - but i would prefer ctcp for it
|
||||||
|
my $o = "\cO";
|
||||||
|
my $oo = $o.$o;
|
||||||
|
##########################
|
||||||
|
|
||||||
|
sub get_current {
|
||||||
|
my $server = Irssi::active_server();
|
||||||
|
my $window = Irssi::active_win();
|
||||||
|
if ($server && $window) {
|
||||||
|
return ($server->{tag}, $window->get_active_name());
|
||||||
|
}
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub event_ctcp_msg { # called for ctcp msg, not ctcp replies
|
||||||
|
my ($server, $msg, $from, $address) = @_;
|
||||||
|
$server = $server->{tag};
|
||||||
|
|
||||||
|
if ($msg =~ /TYPING (INACTIVE|PAUSED|COMPOSING|ACTIVE|GONE)/ ) {
|
||||||
|
if ( not $debug ) {
|
||||||
|
Irssi::signal_stop();
|
||||||
|
}
|
||||||
|
# if someone sends this, they usually support that stuff
|
||||||
|
$typers{$server}{$from}{capability} = 1;
|
||||||
|
|
||||||
|
$typers{$server}{$from}{typing_in} = $1;
|
||||||
|
Irssi::statusbar_items_redraw('typing_notice');
|
||||||
|
Irssi::signal_stop();
|
||||||
|
} elsif ( my($type) = $msg =~ /CAPAB TYPING/ ) {
|
||||||
|
if ($debug) {
|
||||||
|
print "capab typing query from $from.";
|
||||||
|
}
|
||||||
|
my $serverobj = Irssi::server_find_tag($server);
|
||||||
|
$serverobj->ctcp_send_reply("NOTICE $from :\001CAPAB TYPING\001");
|
||||||
|
Irssi::signal_stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub event_ctcp_reply { # called for ctcp replies
|
||||||
|
my ($server, $msg, $from, $address) = @_;
|
||||||
|
if ( $msg =~ /CAPAB TYPING/ && exists( $typers{$server->{tag}}{$from} )) {
|
||||||
|
if ($debug) {
|
||||||
|
print "capab typing reply from $from.";
|
||||||
|
}
|
||||||
|
$typers{$server->{tag}}{$from}{capability} = 1;
|
||||||
|
Irssi::signal_stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub unset_typing_in {
|
||||||
|
my ($a) = @_;
|
||||||
|
my ($server, $nick) = @{$a};
|
||||||
|
if ($debug) {
|
||||||
|
print "unset: $server, $nick";
|
||||||
|
}
|
||||||
|
$typers{$server}{$nick}{typing_in} = undef;
|
||||||
|
Irssi::timeout_remove($typers{$server}{$nick}{timer_tag_in});
|
||||||
|
Irssi::statusbar_items_redraw('typing_notice');
|
||||||
|
}
|
||||||
|
|
||||||
|
sub event_msg {
|
||||||
|
my ($server, $data, $nick, $address, $target) = @_;
|
||||||
|
$server = $server->{tag};
|
||||||
|
|
||||||
|
# haeh??? ist das eine art <active/> angehaengt als leeres ctcp
|
||||||
|
if ( $data =~ /$oo\z/ ) {
|
||||||
|
if ( not exists( $typers{$server}{$nick} ) ) {
|
||||||
|
$typers{$server}{$nick}{capability} = 1;
|
||||||
|
if ($debug) {
|
||||||
|
print "This user supports typing! $server, $nick";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elsif (0) { # ah... this ensures that it stays valid
|
||||||
|
if ( exists( $typers{$server}{$nick} ) ) {
|
||||||
|
if ($debug) {
|
||||||
|
print "This user does not support typing anymore! $nick. splice: ";
|
||||||
|
}
|
||||||
|
delete $typers{$server}{$nick};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 0 and exists( $typers{$server}{$nick} ) ) {
|
||||||
|
unset_typing_in( [$server, $nick] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub typing_notice { ## redraw statusbar item
|
||||||
|
my ($item, $get_size_only) = @_;
|
||||||
|
my ($server, $channel) = get_current();
|
||||||
|
|
||||||
|
return unless exists $typers{$server}{$channel};
|
||||||
|
|
||||||
|
if ( $typers{$server}{$channel}{typing_in} ne undef ) {
|
||||||
|
my $append = $typers{$server}{$channel}{typing_in};
|
||||||
|
$item->default_handler($get_size_only, "{sb typing $append}", 0, 1);
|
||||||
|
if ($debug >= 2) {
|
||||||
|
print "typing: $server, $channel.";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($debug) {
|
||||||
|
print "clear: $server, $channel ";
|
||||||
|
}
|
||||||
|
$item->default_handler($get_size_only, "", 0, 1);
|
||||||
|
if ($typers{$server}{$channel}{timer_tag_in} ne undef) {
|
||||||
|
Irssi::timeout_remove($typers{$server}{$channel}{timer_tag_in});
|
||||||
|
$typers{$server}{$channel}{timer_tag_in} = undef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub window_change {
|
||||||
|
Irssi::statusbar_items_redraw('typing_notice');
|
||||||
|
my ($server, $channel) = get_current();
|
||||||
|
|
||||||
|
if ( exists( $typers{$server}{$channel} ) ) {
|
||||||
|
if ( not $keylog_active ) {
|
||||||
|
$keylog_active = 1;
|
||||||
|
Irssi::signal_add_last('gui key pressed', 'key_pressed');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($keylog_active) {
|
||||||
|
$keylog_active = 0;
|
||||||
|
Irssi::signal_remove('gui key pressed', 'key_pressed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
# send INACTIVE?
|
||||||
|
}
|
||||||
|
|
||||||
|
sub window_close {
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
my ($server, $channel) = get_current();
|
||||||
|
if ( exists( $typers{$server}{$channel} ) and $typers{$server}{$channel}{state_out} ne "GONE" ) {
|
||||||
|
my $serverobj = Irssi::server_find_tag($server);
|
||||||
|
$serverobj->command("^CTCP $channel TYPING GONE");
|
||||||
|
$typers{$server}{$channel}{state_out} = "GONE";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub window_open {
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
my ($item) = @_;
|
||||||
|
# look if we should disco
|
||||||
|
}
|
||||||
|
|
||||||
|
sub key_pressed {
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
my $key = shift;
|
||||||
|
if ($key == 9 && $key == 10 && $lastkey == 27 && $key == 27 && $lastkey == 91 && $key == 126 && $key == 127) { # ignore these keys
|
||||||
|
$lastkey = $key;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($server, $channel) = get_current();
|
||||||
|
|
||||||
|
if ( exists( $typers{$server}{$channel} ) ) {
|
||||||
|
|
||||||
|
my $input = Irssi::parse_special("\$L");
|
||||||
|
if ($input !~ /^$command_char.*/ && length($input) > 0){
|
||||||
|
send_typing( $server, $channel );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$lastkey = $key; # some keys, like arrow-up, contain two events.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub send_typing_pause {
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
my ($a) = @_;
|
||||||
|
my( $server, $nick ) = @{$a};
|
||||||
|
send_typing_update_state($server, $nick, "PAUSED");
|
||||||
|
|
||||||
|
Irssi::timeout_remove($typers{$server}{$nick}{timer_tag_out});
|
||||||
|
$typers{$server}{$nick}{timer_tag_out} = Irssi::timeout_add_once($TIMEOUTS{INACTIVE}, 'send_typing_inactive', [$server, $nick]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub send_typing_inactive {
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
my ($a) = @_;
|
||||||
|
my( $server, $nick ) = @{$a};
|
||||||
|
send_typing_update_state($server, $nick, "INACTIVE");
|
||||||
|
|
||||||
|
Irssi::timeout_remove($typers{$server}{$nick}{timer_tag_out});
|
||||||
|
$typers{$server}{$nick}{timer_tag_out} = Irssi::timeout_add_once($TIMEOUTS{GONE}, 'send_typing_gone', [$server, $nick]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub send_typing_gone {
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
my ($a) = @_;
|
||||||
|
my( $server, $nick ) = @{$a};
|
||||||
|
send_typing_update_state($server, $nick, "GONE");
|
||||||
|
Irssi::timeout_remove($typers{$server}{$nick}{timer_tag_out});
|
||||||
|
}
|
||||||
|
|
||||||
|
sub send_typing {
|
||||||
|
my ( $server, $nick ) = @_;
|
||||||
|
|
||||||
|
send_typing_update_state($server, $nick, "COMPOSING");
|
||||||
|
|
||||||
|
Irssi::timeout_remove($typers{$server}{$nick}{timer_tag_out});
|
||||||
|
$typers{$server}{$nick}{timer_tag_out} = Irssi::timeout_add_once($TIMEOUTS{PAUSED}, 'send_typing_pause', [$server, $nick]);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub send_typing_update_state {
|
||||||
|
return if not Irssi::settings_get_bool("send_typing");
|
||||||
|
my ( $server, $nick, $state ) = @_;
|
||||||
|
if (not exists($typers{$server}{$nick}) or $typers{$server}{$nick}{capability} != 1) {
|
||||||
|
print Dumper(%typers);
|
||||||
|
print "(dont) send_typing_update_state to non-typer $server->$nick"; #if ($debug);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($state eq $typers{$server}{$nick}{state_out}) {
|
||||||
|
print "(dont) send_typing_update_state: $state already known" if $debug;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
# FIXME: allowed state transitions could be checked here
|
||||||
|
if ($debug) {
|
||||||
|
print "$server: ctcp $nick typing $state";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $serverobj = Irssi::server_find_tag($server);
|
||||||
|
if (!$serverobj) {
|
||||||
|
print "send typing update state: server not found";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$serverobj->command("^CTCP $nick TYPING $state");
|
||||||
|
|
||||||
|
$typers{$server}{$nick}{state_out} = $state;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub db_typing {
|
||||||
|
print "------ Typers -----\n".Dumper(%typers);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub event_send_msg { # outgoing messages
|
||||||
|
my ($msg, $server, $window) = @_;
|
||||||
|
return unless $window and $window->{type} eq "QUERY";
|
||||||
|
my $nick = $window->{name};
|
||||||
|
|
||||||
|
if ($debug) {
|
||||||
|
print "send msg: $server->{tag}, $nick";
|
||||||
|
}
|
||||||
|
if ( exists($typers{$server->{tag}}{$nick}) and
|
||||||
|
$typers{$server->{tag}}{$nick}{capability} == 1) {
|
||||||
|
$typers{$server->{tag}}{$nick}{state_out} = "ACTIVE";
|
||||||
|
Irssi::timeout_remove($typers{$server->{tag}}{$nick}{timer_tag_out});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!exists( $typers{$server->{tag}}{$nick} ) ) {
|
||||||
|
if ($debug) {
|
||||||
|
print "send capa query to $nick.";
|
||||||
|
}
|
||||||
|
$typers{$server->{tag}}{$nick}{capability} = -1;
|
||||||
|
if (my $serverobj = Irssi::server_find_tag($server->{tag})) {
|
||||||
|
$serverobj->command("^CTCP $nick CAPAB TYPING");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 0 and length($msg) > 0) {
|
||||||
|
# ist das eine art <active/>
|
||||||
|
$msg .= $oo;
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::signal_stop();
|
||||||
|
Irssi::signal_remove('send text', 'event_send_msg');
|
||||||
|
Irssi::signal_emit('send text', $msg, $server, $window);
|
||||||
|
Irssi::signal_add_first('send text', 'event_send_msg');
|
||||||
|
}
|
||||||
|
|
||||||
|
# Command
|
||||||
|
Irssi::command_bind('db_typing','db_typing');
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
Irssi::settings_add_bool("typing_notice","send_typing",1);
|
||||||
|
|
||||||
|
# IRC events
|
||||||
|
Irssi::signal_add_first("send text", "event_send_msg"); # Outgoing messages
|
||||||
|
Irssi::signal_add("ctcp msg", "event_ctcp_msg");
|
||||||
|
Irssi::signal_add("ctcp reply", "event_ctcp_reply");
|
||||||
|
Irssi::signal_add("message private", "event_msg");
|
||||||
|
Irssi::signal_add("message public", "event_msg");
|
||||||
|
|
||||||
|
# GUI events
|
||||||
|
Irssi::signal_add_last('window changed', 'window_change');
|
||||||
|
Irssi::signal_add_last('window destroyed', 'window_close');
|
||||||
|
Irssi::signal_add_last('window created', 'window_open');
|
||||||
|
Irssi::signal_add_last('gui key pressed', 'key_pressed');
|
||||||
|
|
||||||
|
# Statusbar
|
||||||
|
Irssi::statusbar_item_register('typing_notice', undef, 'typing_notice');
|
||||||
|
Irssi::statusbars_recreate_items();
|
88
config/pikelpc.patch
Normal file
88
config/pikelpc.patch
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
This patch is necessary to apply to the Pike language source code to teach it
|
||||||
|
to not complain so much about LPC code in an #ifndef __PIKE__ part. So this
|
||||||
|
is necessary before you can try out the bin/psyked experiment to use psyced
|
||||||
|
code in pike.
|
||||||
|
|
||||||
|
You would think the preprocessor ignores anything that is not __PIKE__, but
|
||||||
|
Pike's preprocessor doesn't do that very well. To change that completely is
|
||||||
|
hard to achieve and would not be backward compatible to the custom extensions
|
||||||
|
that have been added to Pike.
|
||||||
|
|
||||||
|
Therefore this patch gently teaches Pike to deal with a few LPC specific things:
|
||||||
|
|
||||||
|
* LPC's #'lambda closure syntax is dealt as if the #' wasn't there. This means
|
||||||
|
that the code will not trigger errors when ifdef'd out. In some cases it may
|
||||||
|
even produce useful Pike code, as in the case of a #'callback function.
|
||||||
|
|
||||||
|
* Pike will not break on LPC's #include MACRO capability. Would be even better
|
||||||
|
if Pike learned to support this syntax:
|
||||||
|
#define CONFIG_PATH "/my/filesystem/is/not/like/yours/"
|
||||||
|
#include CONFIG_PATH "myconfig.h"
|
||||||
|
|
||||||
|
* In LPC, #echo allows to quickly put a compile-time debug message into the code
|
||||||
|
to figure out if ifdefs are properly set. Something like:
|
||||||
|
#echo Warning: LPC version probably too old!
|
||||||
|
This patch teaches Pike to ignore #echo statements. Would be better to
|
||||||
|
support them.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- preprocessor.h-orig 2007-09-04 22:56:07.002487000 +0200
|
||||||
|
+++ preprocessor.h 2007-09-16 19:15:32.179227455 +0200
|
||||||
|
@@ -1407,6 +1407,15 @@
|
||||||
|
|
||||||
|
switch(data[pos])
|
||||||
|
{
|
||||||
|
+ case '\'':
|
||||||
|
+ /*
|
||||||
|
+ * deal with LPC lambda syntax: skip the #' in #'<token>
|
||||||
|
+ * this makes function pointers syntax compatible, and allows other
|
||||||
|
+ * lambda statements to exist in an #ifndef __PIKE__ area.
|
||||||
|
+ * healthy for writing code that runs on both LPC and pike. --lynX
|
||||||
|
+ */
|
||||||
|
+ pos++;
|
||||||
|
+ break;
|
||||||
|
case 'l':
|
||||||
|
{
|
||||||
|
static WCHAR line_[] = { 'l', 'i', 'n', 'e' };
|
||||||
|
@@ -1568,7 +1577,12 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
- cpp_error(this, "Expected file to include.");
|
||||||
|
+ /* used to complain about LPC's macro #include syntax
|
||||||
|
+ * even when in an #ifndef __PIKE__ zone. this is a
|
||||||
|
+ * clear case where pike should mind its own business.
|
||||||
|
+ * luckily an if is enough. --lynX
|
||||||
|
+ */
|
||||||
|
+ if (OUTP()) cpp_error(this, "Expected file to include.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1799,6 +1813,7 @@
|
||||||
|
static WCHAR elseif_[] = { 'e', 'l', 's', 'e', 'i', 'f' };
|
||||||
|
static WCHAR elif_[] = { 'e', 'l', 'i', 'f' };
|
||||||
|
static WCHAR error_[] = { 'e', 'r', 'r', 'o', 'r' };
|
||||||
|
+ static WCHAR echo_[] = { 'e', 'c', 'h', 'o' };
|
||||||
|
|
||||||
|
if(WGOBBLE2(endif_))
|
||||||
|
{
|
||||||
|
@@ -1869,6 +1884,17 @@
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* very rudimentary implementation of the LPC #echo directive:
|
||||||
|
+ * just skip it quietly. would be better to output it when OUTP()
|
||||||
|
+ * but doing so looks like more work than I am willing to invest
|
||||||
|
+ * right now.. --lynX
|
||||||
|
+ */
|
||||||
|
+ if(WGOBBLE2(echo_)) {
|
||||||
|
+ SKIPSPACE();
|
||||||
|
+ FIND_EOL();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if(WGOBBLE2(error_))
|
||||||
|
{
|
||||||
|
ptrdiff_t foo;
|
15
config/portrules.iptables
Normal file
15
config/portrules.iptables
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# typical way of routing privileged ports to a psyced running non-privileged
|
||||||
|
# install.sh will generate a copy reflecting your port configuration
|
||||||
|
|
||||||
|
IF_EX=eth0
|
||||||
|
IP_PSYC=127.0.0.1
|
||||||
|
IPT=/sbin/iptables
|
||||||
|
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 23 -j DNAT --to :2323
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 80 -j DNAT --to :44444
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 119 -j DNAT --to :1199
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 194 -j DNAT --to :6667
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 465 -j DNAT --to :4654
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 563 -j DNAT --to :5633
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 992 -j DNAT --to :9922
|
||||||
|
$IPT -t nat -A PREROUTING -i $IF_EX -d $IP_PSYC -p tcp --dport 994 -j DNAT --to :9944
|
127
config/psyced.ini
Normal file
127
config/psyced.ini
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
; $Id: psyced.ini,v 1.22 2008/01/22 09:30:06 lynx Exp $
|
||||||
|
;
|
||||||
|
; this is the sample psyced configuration file. in fact it is the one
|
||||||
|
; being used for the gentoo default installation. you can use this if
|
||||||
|
; you are doing manual installation, otherwise 'install.sh' will create
|
||||||
|
; one for you.
|
||||||
|
;
|
||||||
|
; after modifying this file you must always run 'psyconf'.
|
||||||
|
; inspect http://about.psyc.eu/psyced for further instructions.
|
||||||
|
;
|
||||||
|
; boolean variables are 0 = false (no) and 1 = true (yes).
|
||||||
|
|
||||||
|
[_basic]
|
||||||
|
; Base directory of this PSYCED installation
|
||||||
|
_path_base = /opt/psyced
|
||||||
|
|
||||||
|
; Configuration directory of this PSYCED installation
|
||||||
|
; psyconf will automatically search /etc/psyc for psyced.ini.
|
||||||
|
; If you plan to put this file anywhere else, you will have to pass it
|
||||||
|
; as argument to psyconf.
|
||||||
|
_path_configuration = /etc/psyc
|
||||||
|
|
||||||
|
; Path leading to your private and public TLS keys
|
||||||
|
; (absolute or relative to the configuration directory).
|
||||||
|
_path_PEM_key = key.pem
|
||||||
|
_path_PEM_certificate = cert.pem
|
||||||
|
|
||||||
|
; Path to the TLS trust directory where certs are kept.
|
||||||
|
; If unset this will default to your system installation's defaults.
|
||||||
|
;_path_trust = trust
|
||||||
|
;
|
||||||
|
; Path to the TLS CRL directory where certificate revocation lists are kept.
|
||||||
|
; We currently simply use the same one as for the certs. In fact we don't use
|
||||||
|
; these things yet, but it is a good idea to start doing so.
|
||||||
|
;_path_revocation = trust
|
||||||
|
|
||||||
|
; Do you want psyced to be launched automatically at system startup?
|
||||||
|
; List of filenames a System V start/stop script shall be generated to.
|
||||||
|
; Purpose of this is: you can _really_ move the installation
|
||||||
|
; to another _path_base.
|
||||||
|
;
|
||||||
|
; May look like this for a classic System V set-up:
|
||||||
|
;_list_script_init = /etc/rc.d/psyced /etc/rc.d/rc3.d/K04psyced /etc/rc.d/rc3.d/S44psyced
|
||||||
|
; or it should look like this for gentoo:
|
||||||
|
_list_script_init = /etc/init.d/psyced
|
||||||
|
; You can simply disable the line to turn off this feature.
|
||||||
|
;
|
||||||
|
; Userid to run the psyced as, when started from the init script.
|
||||||
|
_system_user = psyced
|
||||||
|
;
|
||||||
|
; Unused as yet:
|
||||||
|
;_system_group = psyc
|
||||||
|
|
||||||
|
; Where new users will be sent to
|
||||||
|
_place_default = RendezVous
|
||||||
|
|
||||||
|
; How the system speaks to you unless specified.
|
||||||
|
; de = German, en = English, en_g = English for Geeks
|
||||||
|
_language_default = en
|
||||||
|
|
||||||
|
; The externally visible name & domain of your host
|
||||||
|
_host_name = psyc
|
||||||
|
;_host_domain = example.org
|
||||||
|
;_host_domain = homelinux.org
|
||||||
|
|
||||||
|
; Would you like to bind the server to a specific IP address?
|
||||||
|
; If you do you MUST also provide _host_name and _host_domain
|
||||||
|
;_host_IP = 127.0.0.1
|
||||||
|
|
||||||
|
; Nickname for the chatserver. Appears in login message, telnet prompt,
|
||||||
|
; IRC gateways and some web pages. Will use _host_name if unspecified.
|
||||||
|
_nick_server = polvo
|
||||||
|
|
||||||
|
[_administrators]
|
||||||
|
; Space-seperated list of administrator user nicknames.
|
||||||
|
_list_nicks = theBoss k lynX
|
||||||
|
; If the administrators have not been registered yet, this password will be
|
||||||
|
; assigned to them. If you leave this out you will be prompted for each as yet
|
||||||
|
; unregistered administrator, but you have to run psyconf manually!
|
||||||
|
;_password_default = my secret
|
||||||
|
|
||||||
|
[_protocols]
|
||||||
|
; if you don't have TLS or SSL simply set this to
|
||||||
|
; no and all the _encrypted ports will be ignored
|
||||||
|
_use_encryption = 0
|
||||||
|
|
||||||
|
[_protocols_port]
|
||||||
|
_PSYC = 4404
|
||||||
|
_PSYC_encrypted = 9404
|
||||||
|
_telnet = 2323
|
||||||
|
_telnet_encrypted = 9992
|
||||||
|
_jabber_S2S = 5269
|
||||||
|
_jabber_clients = 5222
|
||||||
|
_jabber_clients_encrypted = 5223
|
||||||
|
_IRC = 6667
|
||||||
|
_IRC_encrypted = 9999
|
||||||
|
_HTTP = 44444
|
||||||
|
_HTTP_encrypted = 4433
|
||||||
|
_applet = 2008
|
||||||
|
_SMTP = 2525
|
||||||
|
;_SMTP_encrypted = 4656
|
||||||
|
|
||||||
|
; Experimental protocol services
|
||||||
|
;_POP3 = 1100
|
||||||
|
;_POP3_encrypted = 9950
|
||||||
|
;_NNTP = 1199
|
||||||
|
;_NNTP_encrypted = 5636
|
||||||
|
|
||||||
|
[_optional]
|
||||||
|
; Enable web-based configuration tool
|
||||||
|
_config_HTTP = 0
|
||||||
|
|
||||||
|
; Runtime output can either be in .out and .err files or onto the console
|
||||||
|
; For development, _console_debug is extremely useful,
|
||||||
|
; for regular service it is better to have output in files.
|
||||||
|
_console_debug = 0
|
||||||
|
; If your console charset differs from UTF-8, output will look nicer if you
|
||||||
|
; enable the following line. The charset must be something iconv understands.
|
||||||
|
;_charset_console = ISO-8859-15
|
||||||
|
; '0' is tranquility unless something serious happens. best choice.
|
||||||
|
; '1' gives you slightly interesting output and LPC development debug.
|
||||||
|
; '2' or '3' is too much and too detailed. we hardly ever use that ourselves.
|
||||||
|
_level_debug = 0
|
||||||
|
|
||||||
|
; We create files that are editable by the psyc group
|
||||||
|
_umask = 007
|
||||||
|
|
311
config/psyced.settings
Normal file
311
config/psyced.settings
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# settings/psyced version 4.0
|
||||||
|
#
|
||||||
|
# $Id: psyced.settings,v 1.10 2007/05/08 00:52:01 lynx Exp $
|
||||||
|
#
|
||||||
|
# LDMUD compilation settings for psyced, the LPC server and client
|
||||||
|
# implementation of the protocol for synchronous conferencing.
|
||||||
|
# Please execute this instead of ./configure before compilation.
|
||||||
|
#
|
||||||
|
# The latest version of this file is in the psyced-CVS and usually also
|
||||||
|
# at http://www.psyced.org/dist/config/psyced.settings
|
||||||
|
# The version in the LDMUD distribution may be slightly outdated.
|
||||||
|
#
|
||||||
|
# Documents and download on: http://www.psyced.org
|
||||||
|
# Information about PSYC: http://www.psyc.eu
|
||||||
|
#
|
||||||
|
# the PSYC implementation and library is designed in a way that it should
|
||||||
|
# easily co-host in a running LPMUD, it just needs a few patches to the
|
||||||
|
# master object and #includes in simul_efun.
|
||||||
|
#
|
||||||
|
# how to multiplex InterMUD and PSYC on the same udp port:
|
||||||
|
# PSYC UDP packets always start with ".\n".
|
||||||
|
#
|
||||||
|
# configure will strip this part from the script.
|
||||||
|
|
||||||
|
cp $0 settings/psyced-current
|
||||||
|
exec ./configure --prefix=/opt/psyced --bindir=/opt/psyced/bin --libdir=/opt/psyced/world --libexec=/opt/psyced/run --with-setting=psyced-current $*
|
||||||
|
exit
|
||||||
|
|
||||||
|
#-- PSYCLPC EXTENSIONS
|
||||||
|
|
||||||
|
# compile json c library in, if available
|
||||||
|
enable_use_json=yes
|
||||||
|
|
||||||
|
# compile expat xml & xmpp parser in, if available
|
||||||
|
enable_use_expat=yes
|
||||||
|
|
||||||
|
# enable this if you want use http://about.psyc.eu/psyclpc#Authlocal
|
||||||
|
enable_use_authlocal=yes
|
||||||
|
# requires procfs with readable /proc/net/tcp
|
||||||
|
#
|
||||||
|
# some kernel configurations show wrong port numbers however,
|
||||||
|
# in that case the correlation from peer port to user id fails.
|
||||||
|
# there is however no risk of error (the peer ports are unprivileged
|
||||||
|
# whereas the 'wrong' ones are privileged ones. could be related to
|
||||||
|
# iptables or some other port mapping magic).
|
||||||
|
|
||||||
|
#-- FILE PATHES
|
||||||
|
|
||||||
|
with_master_name=drivers/ldmud/master/master
|
||||||
|
# unused really
|
||||||
|
with_swap_file=log/psyced.swap
|
||||||
|
|
||||||
|
#-- NETWORKING & DATA BASES
|
||||||
|
|
||||||
|
# cool tool that does external name server resolution and more
|
||||||
|
enable_erq=erq
|
||||||
|
|
||||||
|
# the "sorry" message of the built-in ACL isn't flexible enough:
|
||||||
|
# it cannot output a properly formatted HTTP or PSYC message
|
||||||
|
# and why shouldn't this be done in LPC anyway?
|
||||||
|
enable_access_control=no
|
||||||
|
|
||||||
|
# zlib compression, really
|
||||||
|
enable_use_mccp=yes
|
||||||
|
|
||||||
|
# Enable support for TLS (Transport Layer Security).
|
||||||
|
#
|
||||||
|
# 'no': TLS support is not compiled it
|
||||||
|
# 'gnu': TLS support using GnuTLS is compiled in if found.
|
||||||
|
# 'ssl': TLS support using OpenSSL is compiled in if found.
|
||||||
|
# 'yes': TLS support using either OpenSSL or GnuTLS is compiled in if found.
|
||||||
|
# The configuration script looks first for OpenSSL, then GnuTLS.
|
||||||
|
# If both are available, OpenSSL is used.
|
||||||
|
#
|
||||||
|
# gnutls does not offer features we need
|
||||||
|
enable_use_tls=ssl
|
||||||
|
|
||||||
|
# SQL storage not implemented. Maybe PSYC synchronization is good enough?
|
||||||
|
# see http://about.psyc.eu/storage for info.
|
||||||
|
enable_use_mysql=no
|
||||||
|
enable_use_pgsql=no
|
||||||
|
enable_use_sqlite=no
|
||||||
|
|
||||||
|
# maximum permitted tcp connections
|
||||||
|
with_max_players=900
|
||||||
|
|
||||||
|
# The maximum number of ports to listen for connections on.
|
||||||
|
with_maxnumports=33
|
||||||
|
|
||||||
|
# size of the buffer for incoming data of each socket
|
||||||
|
with_size_socket_buffer=32768
|
||||||
|
|
||||||
|
# The maximum number of simultaneous connect() calls
|
||||||
|
with_max_net_connects=33
|
||||||
|
|
||||||
|
# how can i set all the other port numbers?
|
||||||
|
# still using the historic dirty command line hack?
|
||||||
|
with_portno=4404
|
||||||
|
|
||||||
|
# Maximum size of a socket send buffer.
|
||||||
|
with_set_buffer_size_max=262144
|
||||||
|
|
||||||
|
# the PSYC port
|
||||||
|
with_udp_port=4404
|
||||||
|
|
||||||
|
# Enable support for IPv6 (this should better be autodetected!!)
|
||||||
|
#enable_use_ipv6=no
|
||||||
|
|
||||||
|
# Enable the use of pthreads for background socket IO.
|
||||||
|
enable_use_pthreads=no
|
||||||
|
|
||||||
|
# If PThreads are used, this is the max amount of data held pending
|
||||||
|
# for writing. If the amount is exceeded, the oldest data blocks
|
||||||
|
# are discarded.
|
||||||
|
# If 0, any amount of data is allowed.
|
||||||
|
with_pthread_write_max_size=333333
|
||||||
|
|
||||||
|
#-- RUNTIME LIMITS
|
||||||
|
#
|
||||||
|
# currently we consider a psyced a friendly environment
|
||||||
|
# where no coders will abuse cpu time and other limits
|
||||||
|
# you may want to change this if you have many room coders
|
||||||
|
|
||||||
|
# you can lower this value for better debugging
|
||||||
|
with_max_cost=9999999
|
||||||
|
#with_catch_reserved_cost=2000
|
||||||
|
#with_master_reserved_cost=512
|
||||||
|
enable_dynamic_costs=no
|
||||||
|
|
||||||
|
# Maximum function call depth for normal program execution
|
||||||
|
#with_max_user_trace=60
|
||||||
|
# Maximum function call depth during error handling.
|
||||||
|
# It must be bigger than MAX_USER_TRACE (check at compile time).
|
||||||
|
#with_max_trace=65
|
||||||
|
# Maximum number of bits in a bit string.
|
||||||
|
# The limit is more based on considerations of speed than memory consumption.
|
||||||
|
#with_max_bits=6144
|
||||||
|
# Allowed number of ed commands per backend cycle (for faster file upload).
|
||||||
|
#with_allowed_ed_cmds=20
|
||||||
|
|
||||||
|
# disabled "mud" limits
|
||||||
|
with_max_array_size=0
|
||||||
|
with_max_mapping_size=0
|
||||||
|
with_max_mapping_keys=0
|
||||||
|
with_read_file_max_size=0
|
||||||
|
with_max_byte_transfer=0
|
||||||
|
with_max_callouts=0
|
||||||
|
# new, was =100000
|
||||||
|
with_pthread_write_max_size=0
|
||||||
|
|
||||||
|
# Compiler stack size. This value affects the complexity the compiler can
|
||||||
|
# parse.
|
||||||
|
#with_compiler_stack_size=400
|
||||||
|
|
||||||
|
# Maximum number of local variables
|
||||||
|
#with_max_local=50
|
||||||
|
|
||||||
|
# Maximum size of an expanded preprocessor definition.
|
||||||
|
#with_defmax=65000
|
||||||
|
|
||||||
|
#-- MEMORY ALLOCATION
|
||||||
|
|
||||||
|
# slabmalloc seems to interact badly with net/jabber
|
||||||
|
#with_malloc=sysmalloc
|
||||||
|
# but other mallocs don't even compile & run
|
||||||
|
|
||||||
|
enable_malloc_sbrk=yes
|
||||||
|
enable_malloc_check=no
|
||||||
|
enable_malloc_trace=no
|
||||||
|
enable_malloc_sbrk_trace=no
|
||||||
|
#enable_malloc_lpc_trace=no, MALLOC_slaballoc
|
||||||
|
|
||||||
|
# disabled, sort of
|
||||||
|
with_reserved_user_size=100000
|
||||||
|
|
||||||
|
# hash table sizes. we have many chat strings (like lastlogs), but few objects
|
||||||
|
# (max: 65536)
|
||||||
|
with_htable_size=32768
|
||||||
|
with_otable_size=256
|
||||||
|
# Size of the hash table for defines, reserved words, identifiers, and
|
||||||
|
# efun names. This should be several times smaller than HTABLE_SIZE.
|
||||||
|
#with_itable_size=256
|
||||||
|
# Size of the apply cache, expressed in the bitsize of its indices.
|
||||||
|
# The number of entries is 2**cache_bits.
|
||||||
|
#with_apply_cache_bits=12
|
||||||
|
|
||||||
|
# Select whether compiled regular expressions shall be cached, and
|
||||||
|
# how big the cache shall be (max: 65536).
|
||||||
|
enable_rxcache_table=yes
|
||||||
|
with_rxcache_table=4096
|
||||||
|
|
||||||
|
#-- TIMER MECHANISMS
|
||||||
|
|
||||||
|
# short resets, not strictly necessary but useful
|
||||||
|
with_time_to_reset=1000
|
||||||
|
with_time_to_clean_up=9000
|
||||||
|
#with_time_to_swap=1500
|
||||||
|
#with_time_to_swap_variables=2500
|
||||||
|
with_time_to_swap=0
|
||||||
|
with_time_to_swap_variables=0
|
||||||
|
|
||||||
|
#-- MUD FEATURES
|
||||||
|
|
||||||
|
# should work in "native" too, after a tweak or two
|
||||||
|
# however, psyced expects create() to get called instead of reset(0)
|
||||||
|
enable_compat_mode=yes
|
||||||
|
enable_strict_euids=no
|
||||||
|
|
||||||
|
# The Input escape character.
|
||||||
|
# If this character is typed as first on the line, the normal input_to()s
|
||||||
|
# are bypassed.
|
||||||
|
#with_input_escape="!"
|
||||||
|
|
||||||
|
# Define ALLOW_FILENAME_SPACES if the driver should accept space characters
|
||||||
|
# in filenames. If it is not defined, a hardcoded test for space characters
|
||||||
|
# is activated.
|
||||||
|
enable_filename_spaces=yes
|
||||||
|
|
||||||
|
with_wizlist_file=no
|
||||||
|
enable_use_set_light=no
|
||||||
|
enable_use_set_is_wizard=no
|
||||||
|
|
||||||
|
#-- LANGUAGE
|
||||||
|
|
||||||
|
enable_use_parse_command=no
|
||||||
|
enable_use_process_string=no
|
||||||
|
enable_lpc_nosave=yes
|
||||||
|
# if turned to yes this causes errors
|
||||||
|
# in textdb and room history:
|
||||||
|
enable_share_variables=no
|
||||||
|
# keep .o files crossplatform
|
||||||
|
enable_use_system_crypt=no
|
||||||
|
|
||||||
|
# Define this to enable LPC structs.
|
||||||
|
enable_use_structs=no
|
||||||
|
|
||||||
|
# new inline closure and function syntax, see doc/LPC/inline-closures
|
||||||
|
# ... We don't want to use them as yet, but current
|
||||||
|
# 3.3.5xx doesn't compile properly without! :-(
|
||||||
|
enable_use_new_inlines=yes
|
||||||
|
|
||||||
|
enable_use_alists=no
|
||||||
|
# we use it for system shout
|
||||||
|
enable_lpc_array_calls=yes
|
||||||
|
# only enables the ancient transfer() efun we don't use
|
||||||
|
enable_use_deprecated=no
|
||||||
|
|
||||||
|
# Enable PCRE instead of traditional regexps
|
||||||
|
# 'no': use traditional regexps by default
|
||||||
|
# 'no-builtin': use traditional regexps by default, or the builtin PCRE
|
||||||
|
# package if PCRE is requested
|
||||||
|
# 'builtin': use PCRE package by default, using the builtin package
|
||||||
|
# 'yes': use the system's PCRE package if available, otherwise the
|
||||||
|
# builtin package
|
||||||
|
enable_use_pcre=yes
|
||||||
|
|
||||||
|
#-- COMPILATION
|
||||||
|
|
||||||
|
# The optimization level in the generated Makefile
|
||||||
|
# Settings: no, low, med, high
|
||||||
|
with_optimize=med
|
||||||
|
|
||||||
|
#-- DEBUGGING
|
||||||
|
|
||||||
|
# Enable basic run time sanity checks. This will use more time
|
||||||
|
# and space, but nevertheless you are strongly encouraged to keep
|
||||||
|
# it defined.
|
||||||
|
enable_debug=yes
|
||||||
|
# LPC compiler debug
|
||||||
|
#enable_yydebug=no
|
||||||
|
|
||||||
|
# Disable inlining. Use this to debug obscure crashes, or for
|
||||||
|
# speed tests.
|
||||||
|
#enable_no_inlines=no
|
||||||
|
|
||||||
|
# Activate debug prints in the telnet machine (lots of output).
|
||||||
|
#enable_debug_telnet=no
|
||||||
|
|
||||||
|
# Activate allocation debug prints in the malloc module (lots of output).
|
||||||
|
# Supported by: MALLOC_smalloc, MALLOC_slaballoc
|
||||||
|
#enable_debug_malloc_allocs=no
|
||||||
|
|
||||||
|
# The DEBUG level for the ERQ daemon:
|
||||||
|
# 0 : no debug output
|
||||||
|
# 1 : standard debug output
|
||||||
|
# 2 : verbose debug output
|
||||||
|
with_erq_debug=0
|
||||||
|
|
||||||
|
# If TRACE_CODE is enable, the driver keeps a log of TOTAL_TRACE_LENGTH
|
||||||
|
# most recently execute bytecode instructions.
|
||||||
|
enable_trace_code=yes
|
||||||
|
with_total_trace_length=1024
|
||||||
|
|
||||||
|
# Enable these for runtime statistics:
|
||||||
|
# COMM_STAT: number and size of outgoing packets
|
||||||
|
# APPLY_CACHE_STAT: number of hits and misses in the apply cache
|
||||||
|
enable_comm_stat=yes
|
||||||
|
enable_apply_cache_stat=no
|
||||||
|
|
||||||
|
# Enable usage statistics of VM instructions.
|
||||||
|
enable_opcprof=no
|
||||||
|
enable_verbose_opcprof=no
|
||||||
|
|
||||||
|
# Lars' hardcore debug features
|
||||||
|
#enable_check_object_stat=no
|
||||||
|
#enable_check_mapping_total=no
|
||||||
|
#enable_check_object_ref=no
|
||||||
|
#enable_check_object_gc_ref=no
|
||||||
|
#enable_dump_gc_refs=no
|
64
config/psycmuve.powwow
Normal file
64
config/psycmuve.powwow
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#savefile-version 6
|
||||||
|
#host localhost 2000
|
||||||
|
#delim normal
|
||||||
|
#setvar mem=1048576
|
||||||
|
#mark Benachrichtigung:=red
|
||||||
|
#mark Anwesende Freunde=green
|
||||||
|
#mark Freundschaft=red
|
||||||
|
#mark & sagt Dir:=bold red
|
||||||
|
#mark & fragt Dich:=bold red
|
||||||
|
#mark Mozilla/&\)=green
|
||||||
|
#mark ^~&>=black on red
|
||||||
|
#mark ^@&>=cyan on blue
|
||||||
|
#mark ^&:&:& Du &:=blue
|
||||||
|
#mark ^Du &: =bold blue
|
||||||
|
#mark In & spricht=blue
|
||||||
|
#mark psyc=bold red
|
||||||
|
#mark Psyc=bold red
|
||||||
|
#mark PSYC=bold red
|
||||||
|
#mark ^In &:=blue
|
||||||
|
#mark \(&Mail\) &:=bold cyan on black
|
||||||
|
#mark \(&News\)=yellow
|
||||||
|
#mark http://&=blue
|
||||||
|
#mark \(CVS\) &=YELLOW
|
||||||
|
#bind BS ^H=&del-char-left
|
||||||
|
#bind C-a ^A=&begin-of-line
|
||||||
|
#bind C-b ^B=&prev-char
|
||||||
|
#bind C-d ^D=&del-char-right
|
||||||
|
#bind C-e ^E=&end-of-line
|
||||||
|
#bind C-f ^F=&next-char
|
||||||
|
#bind C-k ^K=&kill-to-eol
|
||||||
|
#bind C-l ^L={#keyedit &to-history§#keyedit &enter-line}
|
||||||
|
#bind C-n ^N=&next-line
|
||||||
|
#bind C-p ^P=&prev-line
|
||||||
|
#bind C-t ^T=&transpose
|
||||||
|
#bind C-w ^W=&to-history
|
||||||
|
#bind C-z ^Z=&suspend
|
||||||
|
#bind Del ^?=&del-char-left
|
||||||
|
#bind Down =&next-line
|
||||||
|
#bind KP2 ^[Or=s
|
||||||
|
#bind KP3 ^[Os=d
|
||||||
|
#bind KP4 ^[Ot=w
|
||||||
|
#bind KP5 ^[Ou=exits
|
||||||
|
#bind KP6 ^[Ov=e
|
||||||
|
#bind KP7 ^[Ow=look
|
||||||
|
#bind KP8 ^[Ox=n
|
||||||
|
#bind KP9 ^[Oy=u
|
||||||
|
#bind LF ^J=&enter-line
|
||||||
|
#bind Left =&prev-char
|
||||||
|
#bind M-BS ^[^H=&del-word-left
|
||||||
|
#bind M-Del ^[^?=&del-word-left
|
||||||
|
#bind M-Tab ^[^I=&complete-line
|
||||||
|
#bind M-b ^[b=&prev-word
|
||||||
|
#bind M-d ^[d=&del-word-right
|
||||||
|
#bind M-f ^[f=&next-word
|
||||||
|
#bind M-k ^[k=&redraw-line-noprompt
|
||||||
|
#bind M-l ^[l=&downcase-word
|
||||||
|
#bind M-t ^[t=&transpose-words
|
||||||
|
#bind M-u ^[u=&upcase-word
|
||||||
|
#bind Ret ^M=&enter-line
|
||||||
|
#bind Right =&next-char
|
||||||
|
#bind Tab ^I=&complete-word
|
||||||
|
#bind Up =&prev-line
|
||||||
|
#option +exit -history -words -compact -debug +echo +info +keyecho -speedwalk
|
||||||
|
#option -wrap -autoprint -reprint -sendsize +autoclear
|
1305
install.sh
Executable file
1305
install.sh
Executable file
File diff suppressed because it is too large
Load Diff
59
makefile
Normal file
59
makefile
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# how do i check if $ENV{PAGER} is already set?
|
||||||
|
PAGER=more
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
## INSTALLATION
|
||||||
|
|
||||||
|
install: INSTALL.txt README.txt
|
||||||
|
# @$(PAGER) echo Your environment variable PAGER is not configured!
|
||||||
|
$(PAGER) INSTALL.txt
|
||||||
|
@clear
|
||||||
|
./install.sh || ksh install.sh
|
||||||
|
|
||||||
|
test:
|
||||||
|
(cd bin && perl -c edata && perl -c psyconf && perl -c fmt2textdb)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm INSTALL.txt world/LP_SWAP* world/OBJ_DUMP world/*.log world/log
|
||||||
|
-rm world/WIZLIST world/.methods
|
||||||
|
# find . -follow -name '.*.swp' -print
|
||||||
|
# find . -follow -name '*.b' -print -exec rm {} \;
|
||||||
|
|
||||||
|
README.txt:
|
||||||
|
lynx -dump http://www.psyced.org/README.html >$@
|
||||||
|
|
||||||
|
INSTALL.txt:
|
||||||
|
lynx -dump http://www.psyced.org/INSTALL.html >$@
|
||||||
|
|
||||||
|
corpses:
|
||||||
|
find . -name .#\* -print
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
## USER AND PLACE DATA MAINTAINANCE
|
||||||
|
|
||||||
|
MTIME = +120
|
||||||
|
|
||||||
|
clean.log:
|
||||||
|
(cd data;nice find person -mtime $(MTIME) -print -exec rm {} \;) >$@
|
||||||
|
wc clean.log
|
||||||
|
|
||||||
|
preview:
|
||||||
|
(cd data;nice find person -mtime $(MTIME) -exec ls -l {} \;) | $(PAGER)
|
||||||
|
(cd data;nice find place -mtime $(MTIME) -exec ls -l {} \;) | $(PAGER)
|
||||||
|
|
||||||
|
today:
|
||||||
|
(cd data;nice find person -mtime -1 -print) | wc
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
## THE REST OF THE MAKEFILE PROBABLY ISN'T VERY INTERESTING OR USEFUL FOR YOU
|
||||||
|
|
||||||
|
# generate a file that autoloads all lpc classes.. good only for debugging
|
||||||
|
local/all.ls:
|
||||||
|
(cd world;find . -follow -name '*.c' -print) | grep -vw not >$@
|
||||||
|
|
||||||
|
.methods:
|
||||||
|
(cd world;../bin/rmeth net/* pro/*) | sort >$@
|
||||||
|
|
||||||
|
.links:
|
||||||
|
(cd world;../bin/findlinks */de/* */en/*) >$@
|
||||||
|
|
84
pike/net.pmod/library.pmod/module.pmod
Normal file
84
pike/net.pmod/library.pmod/module.pmod
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#include <url.h>
|
||||||
|
#include <sandbox.h>
|
||||||
|
|
||||||
|
// more elegant way to do it
|
||||||
|
import net.library.uniforms;
|
||||||
|
// but for now let's just include like crazy
|
||||||
|
#include "../../../local/config.h"
|
||||||
|
|
||||||
|
#define SERVER_HOST "localhost" // TPD
|
||||||
|
#undef JABBER_PATH
|
||||||
|
|
||||||
|
// this library file clearly no longer belongs into drivers/ldmud ;)
|
||||||
|
#include "../../../world/drivers/ldmud/library/library.c"
|
||||||
|
|
||||||
|
#include "../../../world/net/library/legal.c"
|
||||||
|
#include "../../../world/net/library/text.c"
|
||||||
|
#include "../../../world/net/library/library2.i"
|
||||||
|
#include "../../../world/net/psyc/library.i"
|
||||||
|
#include "../../../world/net/library.i"
|
||||||
|
|
||||||
|
// EMULATION.. really needs port of library, circuit etc
|
||||||
|
int trustworthy = 0;
|
||||||
|
string myuni;
|
||||||
|
volatile string myIP;
|
||||||
|
|
||||||
|
void debug_message(string text, vaint flags) {
|
||||||
|
debug_write(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
int is_localhost(string host) {
|
||||||
|
return 0; // TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void register_localhost(string a, vastring b) {
|
||||||
|
//debug_write("register_localhost(%O, %O)\n", a, b);
|
||||||
|
return; // TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_server_uniform(string bla) {
|
||||||
|
myuni = bla;
|
||||||
|
}
|
||||||
|
|
||||||
|
string query_ip_name(vamixed ip) {
|
||||||
|
return ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
// emulation of LPC write_file efun.
|
||||||
|
int write_file(string file, string str, vaint flags) {
|
||||||
|
Stdio.File fd;
|
||||||
|
debug_write("write_file(%O, %O, %O)\n", file, str, flags);
|
||||||
|
// should prefix file access with $sandbox
|
||||||
|
#if 0
|
||||||
|
if (flags) rm(file);
|
||||||
|
unless (fd = Stdio.File()) return 0;
|
||||||
|
unless (fd->open(file, "wa")) return 0;
|
||||||
|
if (fd->write(str) == -1) {
|
||||||
|
debug_write("Something went wrong in write_file(%O). %O\n",
|
||||||
|
file, errno());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
fd->close();
|
||||||
|
#endif
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void rootMsg(mixed source, string mc, string data, vamapping vars, vamixed t) {
|
||||||
|
debug_write("wrong.. rootMsg %s\n", mc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sTextPath() {
|
||||||
|
debug_write("sTextPath\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void sAuthhosts(mapping whatever) {
|
||||||
|
debug_write("sAuthhosts %O\n", whatever);
|
||||||
|
}
|
||||||
|
|
||||||
|
int hostCheck(string peerip, int peerport) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EMULATION
|
||||||
|
|
1
pike/net.pmod/library.pmod/uniforms.pmod
Normal file
1
pike/net.pmod/library.pmod/uniforms.pmod
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "../../../world/net/library/url.c"
|
74
pike/net.pmod/psyc.pmod/circuit.pike
Normal file
74
pike/net.pmod/psyc.pmod/circuit.pike
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
Stdio.File s;
|
||||||
|
function inputto;
|
||||||
|
|
||||||
|
#include <net.h>
|
||||||
|
#include <url.h>
|
||||||
|
|
||||||
|
import net.library.uniforms;
|
||||||
|
import net.library;
|
||||||
|
|
||||||
|
#define PSYC_TCP
|
||||||
|
#define QUIT byebye("parse error"); return 0;
|
||||||
|
#include "../../../world/net/psyc/circuit.c"
|
||||||
|
|
||||||
|
// START EMULATION (TODO STUFF)
|
||||||
|
|
||||||
|
int emit(string whatever) {
|
||||||
|
s->write(whatever);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
string query_ip_number(object|void sucket) {
|
||||||
|
mixed rc;
|
||||||
|
unless (s) return 0;
|
||||||
|
rc = s->query_address();
|
||||||
|
unless (rc) return 0;
|
||||||
|
rc = rc / " ";
|
||||||
|
if (rc) return rc[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// END EMULATION
|
||||||
|
|
||||||
|
void write_cb() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void close_cb() {
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void next_input_to(function cb) {
|
||||||
|
//write("next_input_to ("+ function_name(cb) +")\n");
|
||||||
|
inputto = cb;
|
||||||
|
}
|
||||||
|
|
||||||
|
int read_cb(mixed id, string data) {
|
||||||
|
// line comes with CR LF.. wicked!
|
||||||
|
data = slice_from_end(data, 0, 3);
|
||||||
|
// probably need to explode here, since input doesnt
|
||||||
|
// always come line by line in pike TODO
|
||||||
|
write(function_name(inputto) +"(\""+ data +"\")\n");
|
||||||
|
inputto(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
int doneParse(mixed ip, string host, string mc,
|
||||||
|
string data, mapping cvars) {
|
||||||
|
write("done_parsing(%O, %O, %O, %O).\ncvars = %O\n",
|
||||||
|
ip, host, mc, data, cvars);
|
||||||
|
write("\nTest successful. Good bye.\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove_interactive(object who) {
|
||||||
|
s->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected int quit() {
|
||||||
|
byebye("timeout");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void byebye(string reason) {
|
||||||
|
write("%O self-destructing because of %s\n", ME, reason || "timeout");
|
||||||
|
s->close();
|
||||||
|
destruct(ME);
|
||||||
|
}
|
||||||
|
|
19
pike/net.pmod/psyc.pmod/server.pike
Normal file
19
pike/net.pmod/psyc.pmod/server.pike
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// this file should be the pike equivalent of net/psyc/server.c
|
||||||
|
|
||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
import net.library;
|
||||||
|
|
||||||
|
#include "../../../world/net/psyc/server.c"
|
||||||
|
|
||||||
|
void create(Stdio.File sucket, string|void x) {
|
||||||
|
s = sucket;
|
||||||
|
set_server_uniform(x || "psyc://localhost");
|
||||||
|
write("\n%O created for new connection\n", this_object());
|
||||||
|
// peeraddr = query_ip_number();
|
||||||
|
write("peer %O\n", s->query_address());
|
||||||
|
write("self %O\n", s->query_address(1));
|
||||||
|
s->set_nonblocking(read_cb, write_cb, close_cb);
|
||||||
|
logon(0);
|
||||||
|
}
|
||||||
|
|
20
pike/net.pmod/psyced.pike
Normal file
20
pike/net.pmod/psyced.pike
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// first step at making parts of psyced available for pike programmers.
|
||||||
|
//
|
||||||
|
// in theory this could progress up to a point where all of psyced also
|
||||||
|
// runs on pike by preprocessor and include magic - then one could even
|
||||||
|
// think of forking away from the psyclpc-driven psyced to a native pike
|
||||||
|
// psyced. but as you can see it's a long way and it isn't a good idea
|
||||||
|
// to give up psyced as it is, being a fabulous piece of software. ;)
|
||||||
|
|
||||||
|
Stdio.Port listener;
|
||||||
|
|
||||||
|
void create(int port) {
|
||||||
|
write("The psyced net/psyc/parse module is connected to port "
|
||||||
|
+ port +" right now.\n");
|
||||||
|
listener = Stdio.Port(port, accept);
|
||||||
|
}
|
||||||
|
|
||||||
|
void accept() {
|
||||||
|
net.psyc.server(listener->accept());
|
||||||
|
}
|
||||||
|
|
1
place/africa.c
Normal file
1
place/africa.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <place.gen>
|
12
place/aljazeera.c
Normal file
12
place/aljazeera.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "AlJazeera"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://english.aljazeera.net/NR/exeres/4D6139CD-6BB5-438A-8F33-96A7F25F40AF.htm?ArticleGuid=55ABE840-AC30-41D2-BDC9-06BBE2A36665"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
52
place/allostack.c
Normal file
52
place/allostack.c
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// stack implementation donated by psyc://psyced.org/~allo
|
||||||
|
//
|
||||||
|
#include <net.h>
|
||||||
|
#define ON_COMMAND if (mycmd(command, args, source)) return 1;
|
||||||
|
|
||||||
|
#include <place.gen>
|
||||||
|
|
||||||
|
mycmd(a, args, source) {
|
||||||
|
unless (source) source = previous_object(); // really needed???
|
||||||
|
string *stack=allocate(0);
|
||||||
|
if (v("stack")){
|
||||||
|
stack=v("stack");
|
||||||
|
}
|
||||||
|
switch (a){
|
||||||
|
case "push":
|
||||||
|
stack=stack + ({ARGS(1)});
|
||||||
|
vSet("stack", stack);
|
||||||
|
castmsg(ME, "_notice_public_stack_add", "Eintrag #[_num] hinzugefuegt: "+stack[sizeof(stack)-1], (["_nick": "stack", "_num": sizeof(stack)]));
|
||||||
|
break;
|
||||||
|
case "get":
|
||||||
|
if(sizeof(stack)>0){
|
||||||
|
if(sizeof(args)==1){
|
||||||
|
castmsg(ME, "_notice_public_stack", "Eintrag #[_num]: "+stack[sizeof(stack)-1], (["_nick": "stack", "_num": sizeof(stack)]));
|
||||||
|
}else{
|
||||||
|
args[1]=to_int(args[1]);
|
||||||
|
if(sizeof(stack)>=args[1]){
|
||||||
|
castmsg(ME, "_notice_public_stack", "Eintrag #[_num]: "+stack[(args[1])-1], (["_nick": "stack", "_num": args[1]]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "pop":
|
||||||
|
if(sizeof(args)==1){
|
||||||
|
if(sizeof(stack)>0){
|
||||||
|
castmsg(ME, "_notice_public_stack_delete", "Eintrag #[_num] entfernt: "+stack[sizeof(stack)-1], (["_nick": "stack", "_num": sizeof(stack)]));
|
||||||
|
stack=stack - ({stack[sizeof(stack)-1]});
|
||||||
|
vSet("stack", stack);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
args[1]=to_int(args[1]);
|
||||||
|
if(sizeof(stack)>=to_int(args[1])){
|
||||||
|
castmsg(ME, "_notice_public_stack_delete", "Eintrag #[_num] entfernt: "+stack[(args[1])-1], (["_nick": "stack", "_num": args[1]]));
|
||||||
|
stack=stack - ({stack[args[1]-1]});
|
||||||
|
vSet("stack", stack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
1
place/america.c
Normal file
1
place/america.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <place.gen>
|
1
place/asia.c
Normal file
1
place/asia.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <place.gen>
|
1
place/australia.c
Normal file
1
place/australia.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <place.gen>
|
11
place/auto.c
Normal file
11
place/auto.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "Auto"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://shortnews.stern.de/rss/Auto.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
7
place/babeldos.c
Normal file
7
place/babeldos.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// vim:syntax=lpc
|
||||||
|
#define NAME "BabelDoS"
|
||||||
|
|
||||||
|
#define TRANSLATION "de_en"
|
||||||
|
#define TRANSLATION2 "en_de"
|
||||||
|
|
||||||
|
#include "babeldos.i"
|
115
place/babeldos.i
Normal file
115
place/babeldos.i
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
// vim:noexpandtab:syntax=lpc
|
||||||
|
// $Id: babeldos.i,v 1.3 2007/10/08 11:00:30 lynx Exp $
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this is one of the most impressive abuses of psyc rooms i've seen
|
||||||
|
* so far.. have fun with it.. then maybe patch it in a fashion that
|
||||||
|
* it becomes potentially actually useful. yet another drunken master-
|
||||||
|
* piece coded by heldensaga and elridion.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <input_to.h>
|
||||||
|
#include <ht/http.h>
|
||||||
|
#define INHERIT_CONNECT
|
||||||
|
|
||||||
|
start();
|
||||||
|
babel();
|
||||||
|
|
||||||
|
#define CRESET start();
|
||||||
|
inherit "net/connect";
|
||||||
|
#include <place.gen>
|
||||||
|
|
||||||
|
#define emit binary_message
|
||||||
|
|
||||||
|
volatile int has_con, is_translating, is_con;
|
||||||
|
volatile mixed *current;
|
||||||
|
volatile string krank, buffer;
|
||||||
|
|
||||||
|
start() {
|
||||||
|
qInit(ME, 1000, 100);
|
||||||
|
unless (has_con || is_con) {
|
||||||
|
is_con = 1;
|
||||||
|
call_out(#'connect, 0, "babelfish.altavista.com", 80);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
escape(data) {
|
||||||
|
return regreplace(data, "[^a-zA-Z0-9]", (: return sprintf("%%%x", $1[0]); :), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
disconnect() {
|
||||||
|
has_con = 0;
|
||||||
|
switch (pointerp(current) ? current[0] : "") {
|
||||||
|
string k;
|
||||||
|
case TRANSLATION:
|
||||||
|
if (sscanf(buffer, "%~s<td bgcolor=white class=s><div style=padding:10px;>%s</div></td>%~s", k)) {
|
||||||
|
krank = k;
|
||||||
|
}
|
||||||
|
#ifdef TRANSLATION2
|
||||||
|
babel(TRANSLATION2, current[1], current[2], krank, current[4]);
|
||||||
|
break;
|
||||||
|
case TRANSLATION2:
|
||||||
|
if (sscanf(buffer, "%~s<td bgcolor=white class=s><div style=padding:10px;>%s</div></td>%~s", k)) {
|
||||||
|
krank = k;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
::msg(current[1], current[2], replace(krank, """, "\""), current[4]);
|
||||||
|
default:
|
||||||
|
current = 0;
|
||||||
|
start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parse(data) {
|
||||||
|
buffer += data + " ";
|
||||||
|
input_to(#'parse, INPUT_IGNORE_BANG);
|
||||||
|
}
|
||||||
|
|
||||||
|
logon(int f) {
|
||||||
|
is_con = 0;
|
||||||
|
unless (::logon(f)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
has_con = 1;
|
||||||
|
input_to(#'parse, INPUT_IGNORE_BANG);
|
||||||
|
|
||||||
|
if (qSize(ME)) {
|
||||||
|
funcall(lambda(({}), ({ #'babel }) + shift(ME) ));
|
||||||
|
} else {
|
||||||
|
is_translating = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
translat(source, mc, data, mapping vars, count) {
|
||||||
|
if (is_translating) {
|
||||||
|
//debug_message("enqueing: " + data + "\n");
|
||||||
|
enqueue(ME, ({ TRANSLATION, source, mc, data, vars }));
|
||||||
|
} else {
|
||||||
|
//debug_message("babeling: " + data + "\n");
|
||||||
|
is_translating = 1;
|
||||||
|
babel(TRANSLATION, source, mc, data, vars);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
babel(mode, source, mc, data, mapping vars) {
|
||||||
|
unless (has_con) {
|
||||||
|
unshift(ME, ({ mode, source, mc, data, vars }));
|
||||||
|
start();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = "";
|
||||||
|
krank = 0;
|
||||||
|
current = ({ mode, source, mc, data, vars });
|
||||||
|
emit("GET /tr?lp=" + mode + "&urltext=" + escape(data) + " HTTP/1.1\r\n"
|
||||||
|
"Host: babelfish.altavista.com\r\n\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
msg(source, mc, data, mapping vars) {
|
||||||
|
if (abbrev("_message_public", mc) && data) {
|
||||||
|
return translat(source, mc, data, vars);
|
||||||
|
}
|
||||||
|
return ::msg(source, mc, data, vars);
|
||||||
|
}
|
8
place/babelen.c
Normal file
8
place/babelen.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#define TRANSLATION "en_de"
|
||||||
|
#define TRANSLATION2 "de_en"
|
||||||
|
|
||||||
|
#ifdef ADMINISTRATORS
|
||||||
|
# define PLACE_OWNED ADMINISTRATORS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "babeldos.i"
|
127
place/basic.c
Normal file
127
place/basic.c
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/* Last Change SNAKE at DM0TUI1S on Fri, 27 Jul 1990 15:32:10 CES */
|
||||||
|
|
||||||
|
/* C64 version by CURBOIS Software, Holland.
|
||||||
|
* Amiga/UNIX/VM version by LYNX, Teldor, 1990.
|
||||||
|
* PSYC LPC version by symlynX, Berlin, 2003.
|
||||||
|
*
|
||||||
|
* $Id: basic.c,v 1.12 2007/08/15 23:58:06 lynx Exp $
|
||||||
|
*/
|
||||||
|
sys42336();
|
||||||
|
sys64738();
|
||||||
|
sys64764();
|
||||||
|
|
||||||
|
#define NAME "BASIC"
|
||||||
|
#define PLACE_HISTORY_EXPORT
|
||||||
|
#define ON_ENTER sys64738(source);
|
||||||
|
#define ON_CONVERSE sys42336(source, mc, data, vars);
|
||||||
|
#define CREATE sys64764();
|
||||||
|
#include <place.gen>
|
||||||
|
|
||||||
|
static int listflag = 0;
|
||||||
|
static int chanzcount = 0;
|
||||||
|
|
||||||
|
static mapping tab;
|
||||||
|
static string *chanz;
|
||||||
|
|
||||||
|
sys64764() {
|
||||||
|
tab = ([
|
||||||
|
"RUN": "RUN, RUN, RUN, DOESN'T ANYONE THINK OF MY LEGS?",
|
||||||
|
"?": "YOU AND YOUR ABBREVIATIONS...\nIF YOU MEAN 'PRINT' THEN WHY NOT JUST TYPE 'PRINT' ?",
|
||||||
|
"PRINT": "PRINT? DO YOU THINK I HAVE NOTHING BETTER TO DO\nTHAN TO CATER TO YOUR EVERY WHIM? LEAVE ME ALONE!",
|
||||||
|
"LOAD": "IF I THOUGHT YOU HAD ANYTHING WORTHWHILE, I WOULD",
|
||||||
|
"SAVE": "PRESS PLAY AND RECORD ON NEAREST STEREO",
|
||||||
|
"GOTO": "GO THERE YOURSELF, BUDDY!\nSEE HOW YOU LIKE IT",
|
||||||
|
"VERIFY": "NO NEED TO START THE TAPE\nI'LL VOUCH FOR IT",
|
||||||
|
"NEW": "BOY, AM I GLAD YOU GOT RID OF THAT GARBAGE\nWHY DON'T YOU LET ME REST NOW?",
|
||||||
|
"POKE": "OUCH!!!!! YOU LOOKING FOR A FAT LIP?",
|
||||||
|
"SYS": "SYS? WHAT SYS?",
|
||||||
|
"CALL": "YAAAAOOO!!! NO ANSWER",
|
||||||
|
"OPEN": "HAVE YOU GOT A CORKSCREW?",
|
||||||
|
"CLOSE": "I THINK I'LL JUST LEAVE IT OPEN, YOU'LL NEED IT LATER",
|
||||||
|
"DIM": "YEA? WELL YOU'RE NOT SO BRIGHT EITHER",
|
||||||
|
"CLR": "HMM. WOULD YOU MIND IF I HELP MYSELF TO A GUMMY BEAR?",
|
||||||
|
"FOR": "? FOR WITHOUT TO ERROR",
|
||||||
|
"GOSUB": "IF I GOSUB I MIGHT NOT RETURN!!",
|
||||||
|
"RETURN": "? RETURN WITHOUT NEXT ERROR IN 4404",
|
||||||
|
"STOP": "BREAK IN 536.5^2",
|
||||||
|
"INPUT": "YEAH, I'D EAT ANYTHING *HUNGRY*",
|
||||||
|
"TRON": "SAW THE MOVIE, EH?",
|
||||||
|
"TROFF": "WILL YOU MAKE THE MOVIE FOR THIS ONE?",
|
||||||
|
"REST": "I FORGOT HOW TO DO THAT ONE",
|
||||||
|
"DELETE": "OK, I'LL DELETE THAT GARBAGE AND ALL OTHER...",
|
||||||
|
"DATA": "23 57 89 23 60 58 30 69 94 76 48 90 47 21 83 23.",
|
||||||
|
"KILL": "NO, PLEASE DONT DO THAT, IT'S JUST A BABY!",
|
||||||
|
"LET": "YEAH, LET THERE BE ROCK",
|
||||||
|
"LLIST": "SEND ME A PRINTER IN AN EMAIL AND I'LL DO IT.",
|
||||||
|
"PEEK": "KEEP YOUR HANDS OFF, YOU MACHO!",
|
||||||
|
"END": "EVERYTHING HAS AN END, EXCEPT ME.",
|
||||||
|
"WHILE": "MEANWHILE I'LL FORMAT THE HARDDISK",
|
||||||
|
"READ": "I ALREADY ERASED IT, SORRY, I THOUGHT YOU WERE NOT GOING TO NEED IT.",
|
||||||
|
"REM": "REMARKS ARE NO USE, YOU WON'T UNDERSTAND THE PROGRAM ANYWAY.",
|
||||||
|
"WAIT": "WHAT DO YOU THINK I'M DOING?? *YAWN*",
|
||||||
|
"HELP": "NO HUMAN CAN HELP YOU NOW.",
|
||||||
|
"ERASE": "IS THERE ANYTHING LEFT TO ERASE?"
|
||||||
|
]);
|
||||||
|
/* edit erase exit get if lprint merge next
|
||||||
|
restore troff wait ... help */
|
||||||
|
|
||||||
|
chanz = ({
|
||||||
|
"? PERMISSION DENIED",
|
||||||
|
"REDO FROM HALFWAY",
|
||||||
|
"? WIND WITHOUT WELL ERROR",
|
||||||
|
"? STRING TOO MEANINGLESS ERROR",
|
||||||
|
"? DEVICE NOT PRESENTABLE ERROR",
|
||||||
|
"? TOO MANY FINGERS ON KEYBOARD ERROR",
|
||||||
|
"? ILLEGAL MOTION IN BACKFIELD ERROR",
|
||||||
|
"I THINK I HEARD A MEMORY CHIP EXPLODE!",
|
||||||
|
"I'M WRITING ON YOUR DISK !!!",
|
||||||
|
"? UNDEFINED PARACHUTE ERROR",
|
||||||
|
"? STRANGE OUT OF RANGE ERROR",
|
||||||
|
"SIT BACK A WAYS, YOU'LL RUIN YOUR EYES"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#define puts(string) castmsg(ME, "_notice_application_basic", string, ([]))
|
||||||
|
#define tell(user,string) sendmsg(user,"_notice_application_basic",string,([]))
|
||||||
|
|
||||||
|
sys64738(source) {
|
||||||
|
tell(source, "**** CBM BASIC V2 ****");
|
||||||
|
tell(source, "49152 BASIC BYTES FREE");
|
||||||
|
tell(source, "READY.");
|
||||||
|
}
|
||||||
|
|
||||||
|
sys42336(source, mc, data, mapping vars) {
|
||||||
|
string t;
|
||||||
|
|
||||||
|
if (stringp(data)) {
|
||||||
|
sscanf(data, "%s %s", data, t);
|
||||||
|
data = upper_case(data);
|
||||||
|
if (tab[data]) puts(tab[data]);
|
||||||
|
else if (data == "LIST") {
|
||||||
|
listflag = !listflag;
|
||||||
|
if (listflag) {
|
||||||
|
puts ("DIDN'T YOU WRITE IT DOWN SOMEWHERE?");
|
||||||
|
puts ("YOU KNOW HOW UNRELIABLE COMPUTERS CAN BE");
|
||||||
|
puts ("MAYBE TRY AGAIN");
|
||||||
|
} else {
|
||||||
|
puts ("10 DIMA(-5):FRY=1TO10:NEXTWEEK:POKE99,OUCH!:WAITFORIT:OPENFILEORRASP");
|
||||||
|
puts ("20 IF 1 HEN CAN LAY 3 EGGS IN ONE DAY");
|
||||||
|
puts ("30 HOW LONG WOULD IT TAKE A ROOSTER TO");
|
||||||
|
puts ("40 LAY A GOLDEN DOORKNOB?");
|
||||||
|
puts ("41.5 IFPEEKABOO(53280)=EGG THEN HALT AND CATCH FIRE");
|
||||||
|
puts ("50 END OF THE BEGINNING");
|
||||||
|
}
|
||||||
|
} else if (data == "DIR") {
|
||||||
|
puts("DIRECTORY OF BERLIN, IOWA:");
|
||||||
|
puts(" HELLO.BAS GOTOSLEEP.BAS");
|
||||||
|
puts(" WHOLEPILACRAP.BAS IRC.BAS");
|
||||||
|
puts("8734123445782 BYTES OF PIZZA IN 4 BOXES.");
|
||||||
|
} else if (random(4) < 1) {
|
||||||
|
if (!chanzcount) chanzcount = sizeof(chanz);
|
||||||
|
puts (chanz[--chanzcount]);
|
||||||
|
}
|
||||||
|
else return;
|
||||||
|
puts ("READY.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
12
place/bbc.c
Normal file
12
place/bbc.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "BBC"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/bbcvideo.c
Normal file
12
place/bbcvideo.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "BBCvideo"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://newsrss.bbc.co.uk/rss/newsplayer_uk_edition/front_page/rss.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
14
place/bbcworld.c
Normal file
14
place/bbcworld.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
// unfortunately http://www.bbcworld.com/Pages/News.aspx?feedName=world
|
||||||
|
// doesn't exist as feed, so this is really BBC UK's world feed.
|
||||||
|
#define NAME "BBCworld"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://newsrss.bbc.co.uk/rss/newsplayer_uk_edition/world/rss.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
2
place/berlin.c
Normal file
2
place/berlin.c
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define PLACE_HISTORY_EXPORT
|
||||||
|
#include <place.gen>
|
200
place/blackjack.c
Normal file
200
place/blackjack.c
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
/* a room that plays 17+4
|
||||||
|
*
|
||||||
|
* output messages are not multilingual/textdb compliant. :(
|
||||||
|
* they are also all missing trailing periods.. ;)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define ON_COMMAND if (mycmd(command, args, source)) return 1;
|
||||||
|
#define NAME "BLACKJACK"
|
||||||
|
|
||||||
|
#include <place.gen>
|
||||||
|
|
||||||
|
#define DECK_SIZE 52
|
||||||
|
#define GAME_RUNNING sizeof(players)
|
||||||
|
volatile array(int) deck;
|
||||||
|
volatile int deck_top; // oberste karte
|
||||||
|
volatile array(mixed) cards;
|
||||||
|
volatile array(int) deny;
|
||||||
|
volatile array(object) players;
|
||||||
|
volatile int currentplayer;
|
||||||
|
|
||||||
|
volatile mapping colormap = ([ 0 : "Herz", 1 : "Karo", 2: "Pik", 3: "Kreuz" ]);
|
||||||
|
volatile mapping facemap = ([0:"As", 1:"2", 2:"3", 3:"4", 4:"5", 5:"6", 6:"7", 7:"8", 8:"9", 9:"10", 10:"Bube", 11:"Dame", 12:"Koenig" ]);
|
||||||
|
volatile mapping valuemap = ([0:11, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7, 7:8, 8:9, 9:10, 10:10, 11:10, 12:10 ]);
|
||||||
|
|
||||||
|
#define card_name(i) colormap[i / 13] + " " + facemap[i % 13]
|
||||||
|
#define card_value(i) valuemap[i % 13]
|
||||||
|
#define PLAYER(o) (objectp(o) ? o->qName() : o)
|
||||||
|
void shuffle() {
|
||||||
|
deck = allocate(DECK_SIZE);
|
||||||
|
for (int i = 0; i < DECK_SIZE; i++)
|
||||||
|
deck[i] = i;
|
||||||
|
for (int i=0; i<DECK_SIZE-1; i++) {
|
||||||
|
int r = i + random(DECK_SIZE-i);
|
||||||
|
{ // swap
|
||||||
|
int t = deck[i];
|
||||||
|
deck[i] = deck[r];
|
||||||
|
deck[r] = t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deck_top = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int calculate_value() {
|
||||||
|
int sum = 0;
|
||||||
|
for (int i = 0; i < sizeof(cards[currentplayer]); i++)
|
||||||
|
sum += card_value(cards[currentplayer][i]);
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
int next_player() {
|
||||||
|
for (int next = (currentplayer+1) % sizeof(players);
|
||||||
|
next != currentplayer;
|
||||||
|
next = (next + 1) % sizeof(players))
|
||||||
|
if (!deny[next])
|
||||||
|
return next;
|
||||||
|
if (!deny[currentplayer])
|
||||||
|
return currentplayer;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
end_game() {
|
||||||
|
int winner_sum = 0;
|
||||||
|
int winner = -1;
|
||||||
|
int draw = 0;
|
||||||
|
// evaluate statistics for each player
|
||||||
|
for (currentplayer = 0; currentplayer < sizeof(players); currentplayer++) {
|
||||||
|
int val = calculate_value();
|
||||||
|
if (val > 21)
|
||||||
|
continue;
|
||||||
|
if (val > winner_sum) {
|
||||||
|
winner_sum = val;
|
||||||
|
winner = currentplayer;
|
||||||
|
draw = 0;
|
||||||
|
} else if (val == winner_sum) {
|
||||||
|
if (sizeof(cards[currentplayer]) < sizeof(cards[winner])) {
|
||||||
|
winner = currentplayer;
|
||||||
|
} else if (sizeof(cards[currentplayer]) == sizeof(cards[winner])) {
|
||||||
|
draw = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (winner == -1 || draw) {
|
||||||
|
castmsg(ME, "_notice_place_game_end_draw", "Game over. It's a draw.", ([ ]));
|
||||||
|
} else {
|
||||||
|
castmsg(ME, "_notice_place_game_end",
|
||||||
|
"Game over. " + PLAYER(players[winner]) + " gewinnt mit " + winner_sum + " Punkten.",
|
||||||
|
([ ]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset globals
|
||||||
|
currentplayer = 0;
|
||||||
|
players = ({ });
|
||||||
|
}
|
||||||
|
|
||||||
|
// deals a card (and shows everyone (public_card=1) or just the player
|
||||||
|
void deal_card(int public_card) {
|
||||||
|
int current_card = deck[deck_top];
|
||||||
|
deck_top++;
|
||||||
|
cards[currentplayer] += ({ current_card });
|
||||||
|
if (public_card) {
|
||||||
|
castmsg(ME, "_notice_place_game_card",
|
||||||
|
PLAYER(players[currentplayer]) + " zieht " + card_name(current_card)+". " + calculate_value() + " Punkte.",
|
||||||
|
([ ]));
|
||||||
|
} else {
|
||||||
|
sendmsg(players[currentplayer], "_notice_place_game_card",
|
||||||
|
"Du ziehst " + card_name(current_card) + ". " + calculate_value() + " Punkte.",
|
||||||
|
([ "_nick_place" : MYNICK ]));
|
||||||
|
}
|
||||||
|
if (current_card == DECK_SIZE) {
|
||||||
|
end_game();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
start_game() {
|
||||||
|
shuffle();
|
||||||
|
players = m_indices(_u);
|
||||||
|
deny = allocate(sizeof(players), 0);
|
||||||
|
cards = allocate(sizeof(players), ({ }));
|
||||||
|
|
||||||
|
castmsg(ME, "_notice_place_game_start", "Das Spiel beginnt.", ([ ]));
|
||||||
|
// two rounds for everyone, first one public
|
||||||
|
for (currentplayer = 0; currentplayer < sizeof(players); currentplayer++) {
|
||||||
|
deal_card(1);
|
||||||
|
}
|
||||||
|
for (currentplayer = 0; currentplayer < sizeof(players); currentplayer++) {
|
||||||
|
deal_card(0);
|
||||||
|
}
|
||||||
|
// no one can lose currently
|
||||||
|
currentplayer = 0;
|
||||||
|
castmsg(ME, "_notice_place_game_player_next", PLAYER(players[currentplayer]) + " ist am Zug", ([ ]));
|
||||||
|
}
|
||||||
|
|
||||||
|
take_card(object theplayer) {
|
||||||
|
if (theplayer == players[currentplayer]) {
|
||||||
|
deal_card(0);
|
||||||
|
if (calculate_value() > 21) { // verloren
|
||||||
|
// potentiell offenlegen
|
||||||
|
castmsg(ME, "_notice_place_game_player_lose",
|
||||||
|
PLAYER(players[currentplayer]) + " verliert mit mehr als 21 Punkten", ([ ]));
|
||||||
|
deny[currentplayer] = 1;
|
||||||
|
}
|
||||||
|
if (players) {
|
||||||
|
currentplayer = next_player();
|
||||||
|
if (currentplayer != -1)
|
||||||
|
castmsg(ME, "_notice_place_game_player_next", PLAYER(players[currentplayer]) + " ist am Zug", ([ ]));
|
||||||
|
else
|
||||||
|
end_game();
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
P0(("%O ist nicht dran, %O ist am zug\n", theplayer, players[currentplayer]))
|
||||||
|
// FIXME: du bist nicht dran
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deny_card(object theplayer) {
|
||||||
|
if (theplayer == players[currentplayer]) {
|
||||||
|
deny[currentplayer] = 1;
|
||||||
|
castmsg(ME, "_notice_place_game_deny", PLAYER(players[currentplayer]) + " zieht keine Karte.", ([ ]));
|
||||||
|
currentplayer = next_player();
|
||||||
|
if (currentplayer != -1)
|
||||||
|
castmsg(ME, "_notice_place_game_player_next", PLAYER(players[currentplayer]) + " ist am Zug", ([ ]));
|
||||||
|
else
|
||||||
|
end_game();
|
||||||
|
} else {
|
||||||
|
// hm... not taking a card may be decided in advance?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mycmd(a, args, source) {
|
||||||
|
switch (a) {
|
||||||
|
case "start":
|
||||||
|
if (GAME_RUNNING) {
|
||||||
|
// FIXME: game is running, error
|
||||||
|
start_game();
|
||||||
|
} else {
|
||||||
|
start_game();
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
case "take":
|
||||||
|
if (GAME_RUNNING) {
|
||||||
|
take_card(source);
|
||||||
|
} else {
|
||||||
|
P0(("take card went wrong, no game is running\n"))
|
||||||
|
// FIXME: no game running
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
case "deny":
|
||||||
|
if (GAME_RUNNING) {
|
||||||
|
deny_card(source);
|
||||||
|
} else {
|
||||||
|
P0(("deny card went wrong, no game is running\n"))
|
||||||
|
// FIXME: no gaming running
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
19
place/blog.c
Normal file
19
place/blog.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// experimental: example of a blog type room
|
||||||
|
// which probably needs some work to get running
|
||||||
|
//
|
||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "blog"
|
||||||
|
#define THREADS
|
||||||
|
#define HISTORY_GLIMPSE 12
|
||||||
|
|
||||||
|
#ifdef ADMINISTRATORS
|
||||||
|
// psyconf puts ADMINISTRATORS into psyconf.h
|
||||||
|
# define PLACE_OWNED ADMINISTRATORS
|
||||||
|
#else
|
||||||
|
// example set-up
|
||||||
|
# define PLACE_OWNED "fippo", "lynx", "bartman"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define UNIFORM_STYLE "http://www.your-community.de/fippo/blog.css"
|
||||||
|
#include <place.gen>
|
11
place/brennpunkte.c
Normal file
11
place/brennpunkte.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "Brennpunkte"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://shortnews.stern.de/rss/Brennpunkte.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
16
place/buper.c
Normal file
16
place/buper.c
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#define NAME "Buper"
|
||||||
|
|
||||||
|
#include <place.gen>
|
||||||
|
|
||||||
|
/* fun room */
|
||||||
|
|
||||||
|
msg(source, mc, data, mapping vars) {
|
||||||
|
string a;
|
||||||
|
if (stringp(data)) {
|
||||||
|
// does this need special treatment now that system
|
||||||
|
// charset is utf8 ? iconv before and after ? lol.
|
||||||
|
data = regreplace(data, "(^| )([aeiouüöäAEIOUÜÖÄ])", "\\1b\\2", 1);
|
||||||
|
data = regreplace(data, "\\<[a-zA-Z]", "b", 1);
|
||||||
|
}
|
||||||
|
return ::msg(source, mc, data, vars);
|
||||||
|
}
|
29
place/cnet.c
Normal file
29
place/cnet.c
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "CNET"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
/* this is an example for an RSS-based newsfeed room for PSYC
|
||||||
|
* just copy it and enter your favourite RSS URL. you can also
|
||||||
|
* specify a RESET_INTERVAL in minutes. please don't run your
|
||||||
|
* own news gateway if one already exists - PSYC packets are
|
||||||
|
* much much more efficient than polling RSS files, therefore
|
||||||
|
* if you like getting cnet news, simply /subscribe or /enrol
|
||||||
|
* to psyc://psyced.org/@cnet (until cnet catch the
|
||||||
|
* drift and provide such a PSYC news service themselves ;))
|
||||||
|
* see also http://rss.news.com/
|
||||||
|
*
|
||||||
|
* by the way, RSS is not the only newsfeed interface to PSYC -
|
||||||
|
* in the perlpsyc distribution is an email filter script which
|
||||||
|
* parses dpa news coming by email and creates PSYC notices out
|
||||||
|
* of it. the best idea would obviously be if publishing tools
|
||||||
|
* learned how to notify changes directly to a PSYC newsroom.
|
||||||
|
* it's really simple.. just connect and dump a few lines!
|
||||||
|
*/
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://news.com.com/2547-1_3-0-5.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/cnn.c
Normal file
12
place/cnn.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "CNN"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://rss.cnn.com/rss/cnn_topstories.rss"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/cnnvideo.c
Normal file
12
place/cnnvideo.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "CNNvideo"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://rss.cnn.com/rss/cnn_freevideo.rss"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/computertechnik.c
Normal file
12
place/computertechnik.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "ComputerTechnik"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
// # define NEWSFEED_RSS "http://www.stern.de/standard/rss.php?channel=computer-technik"
|
||||||
|
# define NEWSFEED_RSS "http://shortnews.stern.de/rss/HighTech.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/cryptochat.c
Normal file
12
place/cryptochat.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// this room lets people in who are either connected via a SSL/TLS
|
||||||
|
// protocol or are coming from the localhost (probably SSH users).
|
||||||
|
//
|
||||||
|
// both cases are no absolute guarantee for safety.. it is still
|
||||||
|
// in the hands of each user in the room to safeguard true secrecy
|
||||||
|
//
|
||||||
|
// -lynX 2004
|
||||||
|
|
||||||
|
#define NAME "CryptoChat"
|
||||||
|
#define SECURE
|
||||||
|
#include <place.gen>
|
||||||
|
|
13
place/deutschewelle.c
Normal file
13
place/deutschewelle.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#define NAME "deutschewelle"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://rss.dw-world.de/rdf/rss-en-all"
|
||||||
|
# define RESET_INTERVAL 40 // minutes
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/diezeit.c
Normal file
11
place/diezeit.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "DieZeit"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://newsfeed.zeit.de/index"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/digdl.c
Normal file
12
place/digdl.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "DigDL"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://blogs.forbes.com/digitaldownload/index.rdf"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/economist.c
Normal file
12
place/economist.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "Economist"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.economist.com/rss/news_analysis_and_views_rss.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/economistaudio.c
Normal file
12
place/economistaudio.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "EconomistAudio"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://feeds.newyorker.com/services/rss/feeds/online.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
16
place/elridionshanfgarten.c
Normal file
16
place/elridionshanfgarten.c
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#define NAME "ElridionsHanfGarten"
|
||||||
|
#define PLACE_HISTORY
|
||||||
|
#define HISTORY_GLIMPSE 8
|
||||||
|
|
||||||
|
#include <place.gen>
|
||||||
|
|
||||||
|
msg(source, mc, data, mapping vars) {
|
||||||
|
string a;
|
||||||
|
a = ::msg(source, mc, data, vars);
|
||||||
|
if (stringp(data)) {
|
||||||
|
if (strstr(lower_case(data), "marihuana") != -1) {
|
||||||
|
castmsg(ME, "_notice_kidding_CSU", "Halt - CSU! Hat hier jemand Marihuana gesagt?", ([ ]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
}
|
11
place/enwiki.c
Normal file
11
place/enwiki.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "enWiki"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://feeds.feedburner.com/WikinewsLatestNews"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/enwikiaudio.c
Normal file
11
place/enwikiaudio.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "enWikiAudio"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://feeds.feedburner.com/AudioWikinewsNewsBriefs"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/enwikirecent.c
Normal file
12
place/enwikirecent.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "enWikiRecent"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
// irc://irc.wikimedia.org/en.wikinews
|
||||||
|
# define CONNECT_IRC "irc.wikimedia.org"
|
||||||
|
# define CHAT_CHANNEL "en.wikinews"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/erotik.c
Normal file
11
place/erotik.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "Erotik"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://shortnews.stern.de/rss/Erotik.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/euronews-de.c
Normal file
11
place/euronews-de.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "EuroNews-DE"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.euronews.net/rss/euronews_ge.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/euronews-en.c
Normal file
11
place/euronews-en.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "EuroNews-EN"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.euronews.net/rss/euronews_en.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/euronews-es.c
Normal file
11
place/euronews-es.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "EuroNews-ES"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.euronews.net/rss/euronews_sp.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/euronews-fr.c
Normal file
11
place/euronews-fr.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "EuroNews-FR"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.euronews.net/rss/euronews_fr.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/euronews-it.c
Normal file
11
place/euronews-it.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "EuroNews-IT"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.euronews.net/rss/euronews_it.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/euronews-pt.c
Normal file
11
place/euronews-pt.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "EuroNews-PT"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.euronews.net/rss/euronews_po.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/euronews-ru.c
Normal file
11
place/euronews-ru.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "EuroNews-RU"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.euronews.net/rss/euronews_ru.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
1
place/europa.c
Normal file
1
place/europa.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <place.gen>
|
13
place/faz.c
Normal file
13
place/faz.c
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#define NAME "FAZ"
|
||||||
|
#define SILENCE
|
||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://bootleg-rss.g-blog.net/faz_net.php?ressort=politik"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/fm4.c
Normal file
11
place/fm4.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "FM4"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://rss.orf.at/fm4.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/forbes.c
Normal file
12
place/forbes.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "Forbes"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.forbes.com/feeds/mostemailed.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
12
place/forbesvideo.c
Normal file
12
place/forbesvideo.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <net.h>
|
||||||
|
|
||||||
|
#define NAME "ForbesVideo"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://www.forbes.com/video/index.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
24
place/freenode.c
Normal file
24
place/freenode.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "freeNode"
|
||||||
|
|
||||||
|
//
|
||||||
|
// «freenode:TomSawyer» TomSawyer sagt Dir: you're able to talk to me, not because I'm an admin, but because I have /msg nickserv set unfiltered on
|
||||||
|
// «freenode:TomSawyer» TomSawyer sagt Dir: once you register, /msg nickserv set unfiltered on
|
||||||
|
// «freenode:TomSawyer» TomSawyer sagt Dir: that will ensure you are able to get messages from unregistered users
|
||||||
|
//
|
||||||
|
// ok weiss bescheid, aber ist eh netter wenn man unseren gate nur als
|
||||||
|
// registrierter user benutzen kann.. basst scho.. jdf gut zu wissen
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# echo BRAIN: connecting to freenode IRC server
|
||||||
|
# define CONNECT_IRC "irc." NAME ".net"
|
||||||
|
//# define CHAT_CHANNEL "esp"
|
||||||
|
//# define CHAT_CHANNEL "23c3"
|
||||||
|
# define PASS_IRC IRCGATE_FREENODE
|
||||||
|
#else
|
||||||
|
# echo SLAVE: connecting to psyced.org for freenode gateway
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/freizeit.c
Normal file
11
place/freizeit.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "Freizeit"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://shortnews.stern.de/rss/Freizeit.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/futurezone.c
Normal file
11
place/futurezone.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define SILENCE
|
||||||
|
#define NAME "futureZone"
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://rss.orf.at/futurezone.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
11
place/gesundheit.c
Normal file
11
place/gesundheit.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <net.h>
|
||||||
|
#define NAME "Gesundheit"
|
||||||
|
#define SILENCE
|
||||||
|
|
||||||
|
#ifdef BRAIN
|
||||||
|
# define NEWSFEED_RSS "http://shortnews.stern.de/rss/Gesundheit.xml"
|
||||||
|
#else
|
||||||
|
# define CONNECT_DEFAULT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <place.gen>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user