From 619d47ae66c785ff41d4ed619030e1938a112fe5 Mon Sep 17 00:00:00 2001 From: Diogo Cordeiro Date: Wed, 25 Dec 2019 13:40:45 +0000 Subject: [PATCH] dump solution --- LICENSE | 674 +++++++++++++++++++++++++++++++++++++++++ Makefile | 14 + README.md | 45 +++ assignment.pdf | Bin 0 -> 180492 bytes src/ChatClient.java | 181 +++++++++++ src/ChatServer.java | 634 ++++++++++++++++++++++++++++++++++++++ src/Message.java | 253 ++++++++++++++++ src/Room.java | 58 ++++ src/User.java | 137 +++++++++ src/chat.iml | 11 + test_package_input.txt | 4 + 11 files changed, 2011 insertions(+) create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 assignment.pdf create mode 100644 src/ChatClient.java create mode 100644 src/ChatServer.java create mode 100644 src/Message.java create mode 100644 src/Room.java create mode 100644 src/User.java create mode 100644 src/chat.iml create mode 100644 test_package_input.txt diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + 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. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6ddfa37 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +JAVA = javac + +RM = /bin/rm -f + +all: + #${JAVA} src/Message.java + #${JAVA} src/Room.java + #${JAVA} src/User.java + ${JAVA} src/ChatClient.java + ${JAVA} src/ChatServer.java + +clean: + ${RM} *.class + ${RM} src/*.class diff --git a/README.md b/README.md new file mode 100644 index 0000000..00472c4 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# A simple Chat program written in Java with NIO package +This program was written as a solution for an assignment given in +DCC-FCUP's [Networking and Communication](https://sigarra.up.pt/fcup/en/UCURR_GERAL.FICHA_UC_VIEW?pv_ocorrencia_id=445231) module. +The server implements a [multiplex model](http://tutorials.jenkov.com/java-nio/selectors.html) using [Java's NIO API](http://tutorials.jenkov.com/java-nio/index.html). + +The protocol specified in the [assignment.pdf](assignment.pdf) (in Portuguese) is vaguely similar to IRC. + +## Usage +1. Compile it with `make` +2. Run the server with a listening port as argument +```Shell + java ChatServer 31337 +``` +3. Run the client with the server IP address and the listening port +```Shell + java ChatClient 127.0.0.1 31337 +``` + +## Tests +To test the sending of a fragmented message divided in various packages, use `netcat` with ``, as in +```Shell + /nick Chuck Norris +``` +To test the sending of various messages in a single package, you can try it with +```Shell + netcat localhost 31337 < test_package_input.txt +``` + +## Credits +Developed by [Diogo Cordeiro](https://www.diogo.site/) and [Hugo Sales](https://github.com/someonewithpc) + +## License +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +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 +Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public +License along with this program, in the file "LICENSE". If not, see +. diff --git a/assignment.pdf b/assignment.pdf new file mode 100644 index 0000000000000000000000000000000000000000..09c8b9e28a60e69828c07b8d4e9586f8d6eeca87 GIT binary patch literal 180492 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

0g=rr#Adrl>I4Yqbf>}) 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 _ux_H_a&9oKQ~R$i%rl;JvRGAe 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 nickname_user = new HashMap<>(); + private static final HashMap nickname_room = new HashMap<>(); + + /** + * Run the server + * + * @param args + */ + public static void + main (String[] args) + { + // Port to listen + int server_port = Integer.parseInt(args[0]); + + try + { + // Instead of creating a ServerSocket, create a ServerSocketChannel + ServerSocketChannel ssc = ServerSocketChannel.open(); + + // Set it to non-blocking, so we can use select + ssc.configureBlocking(false); + + // Get the Socket connected to this channel, and bind + // it to the listening port + ServerSocket ss = ssc.socket(); + InetSocketAddress isa = new InetSocketAddress(server_port); + ss.bind(isa); + + // Create a new Selector for selecting + Selector selector = Selector.open(); + + // Register the ServerSocketChannel, so we can listen + // for incoming connections + ssc.register(selector, SelectionKey.OP_ACCEPT); + System.out.println("Listening on port " + server_port); + + while (true) + { + // See if we've had any activity -- either an incoming connection, + // or incoming data on an existing connection + int num = selector.select(); + + // If we don't have any activity, loop around and wait again + if (num == 0) + { + continue; + } + + // Get the keys corresponding to the activity that has been + // detected, and process them one by one + Set keys = selector.selectedKeys(); + for (SelectionKey key : keys) + { + // Get a key representing one of bits of I/O activity + // What kind of activity is it? + if (key.isAcceptable()) + { + // It's an incoming connection. Register this socket with + // the Selector so we can listen for input on it + Socket s = ss.accept(); + System.out.println("Got connection from " + s + "."); + + // Make sure to make it non-blocking, so we can use a selector + // on it. + SocketChannel sc = s.getChannel(); + sc.configureBlocking(false); + + // Register it with the selector, for reading + sc.register(selector, SelectionKey.OP_READ, new User(sc)); + } + else if (key.isReadable()) + { + SocketChannel sc = null; + + try + { + // It's incoming data on a connection -- process it + sc = (SocketChannel) key.channel(); + boolean ok = processInput(key, sc); + + // If the connection is dead, remove it from the selector + // and close it + if (!ok) + { + key.cancel(); + close_client(key, sc); + } + } + catch (IOException ie) + { + // On exception, remove this channel from the selector + key.cancel(); + close_client(key, sc); + } + } + } + + // We remove the selected keys, because we've dealt with them. + keys.clear(); + } + } + catch (IOException ie) + { + System.err.println(ie.getMessage()); + } + } + + /** + * Close a connection with a client + * + * @param key + * @param sc + */ + private static void + close_client (SelectionKey key, SocketChannel sc) + { + User sender = (User)key.attachment(); + if (sender.get_state() == State.INSIDE) + { + Room room = sender.get_room(); + room.left_user(sender); + TreeSet user_list = room.get_users(); + + for (User user : user_list) + { + try + { + send_left_message(user, sender.get_nickname()); + } + catch (IOException ie) + { + System.err.println("Error sending left message: " + ie); + } + } + + if (user_list.size() == 0) + { + nickname_room.remove(room.get_name()); + } + } + + nickname_user.remove(sender.get_nickname()); + key.cancel(); + + Socket s = sc.socket(); + try + { + System.out.println("Closing connection to " + s); + sc.close(); + } + catch (IOException ie) + { + System.err.println("Error closing socket " + s + ": " + ie); + } + } + + /** + * Read a message from the socket and process it + * + * @param key + * @param sc + * @return boolean false if connection closed, true otherwise + * @throws IOException + */ + private static boolean + processInput (SelectionKey key, SocketChannel sc) + throws IOException + { + // Read the message to the buffer + buffer.clear(); + sc.read(buffer); + buffer.flip(); + + // If no data, close the connection + if (buffer.limit() == 0) + { + return false; + } + + // Decode and add to buffer + User sender = (User)key.attachment(); + sender.add_to_buffer(decoder.decode(buffer).toString()); + String instructions = sender.get_buffer().toString(); + + // // Print byte representation of incoming package + // for (final char c : instructions.toCharArray()) { + // System.out.print((int) c + " "); + // } + // System.out.println(); + + // We only want to process full instructions + if (!instructions.endsWith("\n")) + { + return true; + } + + for (String instruction : instructions.split("\n")) + { + Matcher tokens; + if (instruction.startsWith("/")) + { + String cmd = instruction.substring(1).trim(); + + if ((tokens = Pattern.compile(REGEX_MSG_NEW_NICKNAME).matcher(cmd)).find()) + { + send_nickname_command(sender, tokens.group(1)); + } + else if ((tokens = Pattern.compile(REGEX_MSG_JOIN).matcher(cmd)).find()) + { + send_join_command(sender, tokens.group(1)); + } + else if (Pattern.matches(REGEX_MSG_LEAVE, cmd)) + { + send_leave_command(sender); + } + else if (Pattern.matches(REGEX_MSG_BYE, cmd)) + { + send_bye_command(key, sender); + } + else if ((tokens = Pattern.compile(REGEX_MSG_PRIVATE).matcher(cmd)).find()) + { + send_private_command( + sender, + // Emitter + tokens.group(1), + // Message + tokens.group(2) + ); + } + else if (cmd.startsWith("/")) + { + send_public_message(sender, cmd); + } + else + { + send_error_message(sender, "Unknown command."); + } + + } + else if (instruction.length() != 0) + { + send_public_message(sender, instruction.trim()); + } + + + sender.advance_buffer(instruction.length() + 1); + } + return true; + } + + /** + * Helper function to send a message + * + * @param sc + * @param message + * @throws IOException + */ + private static void + send_message (SocketChannel sc, Message message) + throws IOException + { + sc.write(encoder.encode(CharBuffer.wrap(message.toString()))); + } + + /** + * Helper function to send a message + * + * @param receiver + * @param sender + * @param message_value + * @throws IOException + */ + private static void + send_message (User receiver, String sender, String message_value) + throws IOException + { + Message message = new Message(MessageType.MESSAGE, sender, message_value); + send_message(receiver.get_socket(), message); + } + + /** + * Send error message + * + * @param receiver + * @param error_message + * @throws IOException + */ + private static void + send_error_message (User receiver, String error_message) + throws IOException + { + Message message = new Message(MessageType.ERROR, error_message); + send_message(receiver.get_socket(), message); + } + + /** + * Send ok message + * + * @param receiver + * @throws IOException + */ + private static void + send_ok_message (User receiver) + throws IOException + { + Message message = new Message(MessageType.OK); + send_message(receiver.get_socket(), message); + } + + /** + * Send newnick message + * + * @param receiver + * @param old_nickname + * @param new_nickname + * @throws IOException + */ + private static void + send_nickname_message (User receiver, String old_nickname, String new_nickname) + throws IOException + { + Message message = new Message(MessageType.NEW_NICKNAME, old_nickname, new_nickname); + send_message(receiver.get_socket(), message); + } + + /** + * Send joined message + * + * @param receiver + * @param join_nickname + * @throws IOException + */ + private static void + send_joined_message (User receiver, String join_nickname) + throws IOException + { + Message message = new Message(MessageType.JOINED, join_nickname); + send_message(receiver.get_socket(), message); + } + + /** + * Send left message + * + * @param receiver + * @param left_nickname + * @throws IOException + */ + private static void + send_left_message (User receiver, String left_nickname) + throws IOException + { + Message message = new Message(MessageType.LEFT, left_nickname); + send_message(receiver.get_socket(), message); + } + + /** + * Send bye message + * + * @param receiver + * @throws IOException + */ + private static void + send_bye_message (User receiver) + throws IOException + { + Message message = new Message(MessageType.BYE); + send_message(receiver.get_socket(), message); + } + + /** + * Send private message + * + * @param receiver + * @param sender + * @param message_value + * @throws IOException + */ + private static void + send_private_message (User receiver, String sender, String message_value) + throws IOException + { + Message message = new Message(MessageType.PRIVATE, sender, message_value); + send_message(receiver.get_socket(), message); + } + + /** + * Send simple message + * + * @param sender + * @param message_value + * @throws IOException + */ + private static void + send_public_message (User sender, String message_value) + throws IOException + { + if (sender.get_state() == State.INSIDE) + { + Room sender_room = sender.get_room(); + TreeSet user_list = sender_room.get_users(); + + for (User user : user_list) + { + send_message(user, sender.get_nickname(), message_value); + } + } + else + { + send_error_message(sender, "You are not in a room."); + } + } + + /** + * Send nick command + * + * @param sender + * @param nick + * @throws IOException + */ + private static void + send_nickname_command (User sender, String nick) + throws IOException + { + if ( + // Allow to change to the current nick + // Only compare if the user already has a nickname + ((sender.get_state() != State.INIT) + && sender.get_nickname().equals(nick)) + || // Don't allow to set a nickname already in use + !nickname_user.containsKey(nick) + ) + { + if (sender.get_state() == State.INIT) + { + sender.set_state(State.OUTSIDE); + } + + if (sender.get_state() == State.INSIDE) + { + Room sender_room = sender.get_room(); + TreeSet user_list = sender_room.get_users(); + + for (User user : user_list) + { + if (user != sender) + { + send_nickname_message(user, sender.get_nickname(), nick); + } + } + } + + nickname_user.remove(sender.get_nickname()); + nickname_user.put(nick, sender); + send_ok_message(sender); + sender.set_nickname(nick); + } + else + { + send_error_message(sender, "There already is a user with nick " + nick); + } + } + + /** + * Send join command + * + * @param sender + * @param room_name + * @throws IOException + */ + private static void + send_join_command (User sender, String room_name) + throws IOException + { + if (sender.get_state() == State.INIT) + { + send_error_message(sender, "You don't have a nickname."); + } + /*else if (sender.get_room().get_name().equals(room_name)) + { + send_error_message(sender, "You already are in that room."); + }*/ + else + { + // If already in a room, leave it first + if (sender.get_state() == State.INSIDE) + { + send_leave_command(sender); + } + + // If room doesn't exist + if (!nickname_room.containsKey(room_name)) + { + nickname_room.put(room_name, new Room(room_name)); + } + + // Notify + Room new_room = nickname_room.get(room_name); + TreeSet current_room_user_list = new_room.get_users(); + new_room.join_user(sender); + + for (User user : current_room_user_list) + { + send_joined_message(user, sender.get_nickname()); + } + + send_ok_message(sender); + sender.set_room(new_room); + sender.set_state(State.INSIDE); + } + } + + /** + * Send leave command + * + * @param sender + * @throws IOException + */ + private static void + send_leave_command (User sender) + throws IOException + { + if (sender.get_state() != State.INSIDE) + { + send_error_message(sender, "You are not in a room."); + } + else + { + Room room = sender.get_room(); + room.left_user(sender); + TreeSet user_list = room.get_users(); + + for (User user : user_list) + { + send_left_message(user, sender.get_nickname()); + } + + if (user_list.size() == 0) + { + nickname_room.remove(room.get_name()); + } + + send_ok_message(sender); + sender.set_state(State.OUTSIDE); + } + } + + + /** + * Send bye command + * + * @param key + * @param sender + * @throws IOException + */ + private static void + send_bye_command (SelectionKey key, User sender) + throws IOException + { + send_bye_message(sender); + close_client(key, sender.get_socket()); + } + + /** + * Send private message + * + * @param sender + * @param receiver + * @param message_value + * @throws IOException + */ + private static void + send_private_command (User sender, String receiver, String message_value) + throws IOException + { + if (sender.get_state() == State.INIT) + { + send_error_message(sender, "You don't have a nickname."); + } + else + { + if (nickname_user.containsKey(receiver)) + { + send_ok_message(sender); + send_private_message(nickname_user.get(receiver), sender.get_nickname(), message_value); + } + else + { + send_error_message(sender, receiver + ": No such nickname online."); + } + } + } +} diff --git a/src/Message.java b/src/Message.java new file mode 100644 index 0000000..52e61ee --- /dev/null +++ b/src/Message.java @@ -0,0 +1,253 @@ +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Type of the Message + */ +enum MessageType +{ + OK, ERROR, MESSAGE, NEW_NICKNAME, JOINED, LEFT, BYE, PRIVATE +} + +/** + * Message class + */ +public class +Message +{ + public static final String REGEX_NICKNAME = "([^ .]+)"; + public static final String REGEX_ROOM_NAME = "([^ .]+)"; + public static final String REGEX_TEXT = "(.*)"; + // Regex for command process + private static final String REGEX_CMD_OK = "OK"; + private static final String REGEX_CMD_ERROR = "ERROR"; + private static final String REGEX_CMD_MESSAGE = "MESSAGE " + REGEX_NICKNAME + " " + REGEX_TEXT; + private static final String REGEX_CMD_NEW_NICKNAME = "NEWNICK " + REGEX_NICKNAME + " " + REGEX_NICKNAME; + private static final String REGEX_CMD_JOINED = "JOINED " + REGEX_NICKNAME; + private static final String REGEX_CMD_LEFT = "LEFT " + REGEX_NICKNAME; + private static final String REGEX_CMD_BYE = "BYE"; + private static final String REGEX_CMD_PRIVATE = "PRIVATE " + REGEX_NICKNAME + " " + REGEX_TEXT; + private final MessageType type; + // There are no getters for these two attributes, refer to toString + private final String token1; + private final String token2; + + + /** + * Constructor + * + * @param type + */ + public Message (MessageType type) + { + this.type = type; + this.token1 = ""; + this.token2 = ""; + } + + /** + * Constructor + * + * @param type + * @param token1 + */ + public Message (MessageType type, String token1) + { + this.type = type; + this.token1 = token1; + this.token2 = ""; + } + + /** + * Constructor + * + * @param type + * @param token1 + * @param token2 + */ + public Message (MessageType type, String token1, String token2) + { + this.type = type; + this.token1 = token1; + this.token2 = token2; + } + + /** + * Message from String + * ONLY TO BE USED BY CHAT CLIENT (that is, command process and not + * message process as happens in the server) + * + * @param text + * @return Message + */ + public static Message + parse_string (String text) + { + MessageType type; + Matcher tokens; + String token1 = ""; + String token2 = ""; + + if (Pattern.matches(REGEX_CMD_OK, text)) + { + type = MessageType.OK; + } + else if (Pattern.matches(REGEX_CMD_ERROR, text)) + { + type = MessageType.ERROR; + } + else if ((tokens = Pattern.compile(REGEX_CMD_MESSAGE).matcher(text)).find()) + { + type = MessageType.MESSAGE; + token1 = tokens.group(1); // Emitter + token2 = tokens.group(2); // Message + } + else if ((tokens = Pattern.compile(REGEX_CMD_NEW_NICKNAME).matcher(text)).find()) + { + type = MessageType.NEW_NICKNAME; + token1 = tokens.group(1); // Old nickname + token2 = tokens.group(2); // New nickname + } + else if ((tokens = Pattern.compile(REGEX_CMD_JOINED).matcher(text)).find()) + { + type = MessageType.JOINED; + token1 = tokens.group(1); + } + else if ((tokens = Pattern.compile(REGEX_CMD_LEFT).matcher(text)).find()) + { + type = MessageType.LEFT; + token1 = tokens.group(1); + } + else if (Pattern.matches(REGEX_CMD_BYE, text)) + { + type = MessageType.BYE; + } + else if ((tokens = Pattern.compile(REGEX_CMD_PRIVATE).matcher(text)).find()) + { + type = MessageType.PRIVATE; + token1 = tokens.group(1); // Emitter + token2 = tokens.group(2); // Message + } + else + { + type = MessageType.ERROR; + } + + return new Message(type, token1, token2); + } + + /** + * @return MessageType + */ + public MessageType + get_type () + { + return this.type; + } + + /** + * @return String + */ + @Override + public String + toString () + { + return this.toString(false); + } + + /** + * @param pretty + * @return String + */ + public String + toString (boolean pretty) + { + String output = ""; + + switch (this.type) + { + case OK: + if (pretty) + { + output = "Command successful."; + } + else + { + output = "OK"; + } + break; + case ERROR: + if (pretty) + { + output = "Error. " + this.token1; + } + else + { + output = "ERROR"; + } + break; + case MESSAGE: + if (pretty) + { + output = this.token1 + ": " + this.token2; + } + else + { + output = "MESSAGE " + this.token1 + " " + this.token2; + } + break; + case NEW_NICKNAME: + if (pretty) + { + output = this.token1 + " is now known as " + this.token2; + } + else + { + output = "NEWNICK " + this.token1 + " " + this.token2; + } + break; + case JOINED: + if (pretty) + { + output = this.token1 + " has joined the room."; + } + else + { + output = "JOINED " + this.token1; + } + break; + case LEFT: + if (pretty) + { + output = this.token1 + " left the room."; + } + else + { + output = "LEFT " + this.token1; + } + break; + case BYE: + if (pretty) + { + output = "Disconnected..."; + } + else + { + output = "BYE"; + } + break; + case PRIVATE: + if (pretty) + { + output = "<" + this.token1 + ">: " + this.token2; + } + else + { + output = "PRIVATE " + this.token1 + " " + this.token2; + } + break; + } + + return output + "\n"; + } +} diff --git a/src/Room.java b/src/Room.java new file mode 100644 index 0000000..670d6f1 --- /dev/null +++ b/src/Room.java @@ -0,0 +1,58 @@ +import java.util.TreeSet; + +/** + * Room class + */ +public class +Room +{ + private final TreeSet users; + private final String name; + + /** + * Constructor + * + * @param name + */ + public Room (String name) + { + this.users = new TreeSet<>(); + this.name = name; + } + + /** + * @return TreeSet + */ + public TreeSet + get_users () + { + return this.users; + } + + /** + * @param user + */ + public void + join_user (User user) + { + this.users.add(user); + } + + /** + * @param user + */ + public void + left_user (User user) + { + this.users.remove(user); + } + + /** + * @return String + */ + public String + get_name () + { + return this.name; + } +} diff --git a/src/User.java b/src/User.java new file mode 100644 index 0000000..3b3af00 --- /dev/null +++ b/src/User.java @@ -0,0 +1,137 @@ +import java.nio.channels.SocketChannel; + +/** + * User state + */ +enum State +{ + INIT, OUTSIDE, INSIDE +} + +/** + * User class + */ +public class +User +implements Comparable +{ + private String nickname; + private State state = State.INIT; + private Room room; + private final SocketChannel socket; + private StringBuilder buffer = new StringBuilder(); + + /** + * Constructor + * + * @param socket + */ + public User (SocketChannel socket) + { + this.socket = socket; + } + + /** + * Comparator + * + * @param other + * @return int + */ + @Override + public int + compareTo (User other) + { + return this.nickname.compareTo(other.nickname); + } + + + /** + * @return String + */ + public String + get_nickname () + { + return this.nickname; + } + + /** + * @param nickname + */ + public void + set_nickname (String nickname) + { + this.nickname = nickname; + } + + /** + * @return State + */ + public State + get_state () + { + return this.state; + } + + /** + * @param state + */ + public void + set_state (State state) + { + this.state = state; + } + + /** + * @return Room + */ + public Room + get_room () + { + return this.room; + } + + /** + * @param room + */ + public void + set_room (Room room) + { + this.room = room; + } + + /** + * @return SocketChannel + */ + public SocketChannel + get_socket () + { + return this.socket; + } + + /** + * @param cmd + */ + public void + add_to_buffer (String cmd) + { + this.buffer.append(cmd); + } + + /** + * @return String + */ + public StringBuilder + get_buffer () + { + return this.buffer; + } + + /** + * @param idx + */ + public void + advance_buffer (int idx) + { + this.buffer.delete(0, idx); + } +} diff --git a/src/chat.iml b/src/chat.iml new file mode 100644 index 0000000..e8a8ece --- /dev/null +++ b/src/chat.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/test_package_input.txt b/test_package_input.txt new file mode 100644 index 0000000..6f94974 --- /dev/null +++ b/test_package_input.txt @@ -0,0 +1,4 @@ +/nick bomrapaz +/join sala +Bom dia! +