From d1d520817ad848abecee3a3fb07d75edfe43dcc0 Mon Sep 17 00:00:00 2001 From: Facinorous <63425706+Facinorous-420@users.noreply.github.com> Date: Sun, 27 Mar 2022 09:30:40 -0400 Subject: [PATCH] Initial commit --- .gitignore | 29 + LICENSE | 661 ++++++++++++++++++ README.md | 176 +++++ dick_example_1.png | Bin 0 -> 83846 bytes dick_example_2.png | Bin 0 -> 19319 bytes package.json | 63 ++ postcss.config.js | 11 + src/CONSTANTS.ts.example | 33 + src/Pager.ts | 138 ++++ src/dashboard.ts | 71 ++ src/public/css/tailwind.css | 46 ++ src/public/images/dick-logo.png | Bin 0 -> 61828 bytes src/public/images/profile-2.png | Bin 0 -> 131116 bytes src/public/images/profile.png | Bin 0 -> 1351 bytes src/public/js/components.js | 205 ++++++ src/public/js/theme/theme-set.js | 9 + src/public/js/theme/theme-switcher.js | 40 ++ src/public/modules/app.js | 1 + src/public/modules/components/lucide.js | 15 + src/routes/route.admin.ts | 16 + src/routes/route.auth.ts | 73 ++ src/routes/route.public.ts | 13 + src/routes/route.user.ts | 36 + src/typings/ASSTypes.d.ts | 18 + src/typings/Pager.d.ts | 5 + src/typings/express-ext.d.ts | 8 + src/typings/passport-ext.d.ts | 12 + src/utils/assJSONStructure.ts | 60 ++ src/utils/passport.ts | 30 + src/utils/utils.ts | 83 +++ tailwind.config.js | 55 ++ tsconfig.json | 19 + views/pages/admin/main.ejs | 2 + views/pages/public/login.ejs | 86 +++ views/pages/user/main.ejs | 153 ++++ views/pages/user/tabs/configgen.ejs | 3 + views/pages/user/tabs/filemanager.ejs | 135 ++++ .../user/tabs/filemanager/pagination.ejs | 40 ++ .../user/tabs/filemanager/typefilter.ejs | 121 ++++ .../pages/user/tabs/filemanager/uppermenu.ejs | 75 ++ views/templates/errors/404.ejs | 19 + views/templates/partials/footer.ejs | 3 + views/templates/partials/head.ejs | 25 + views/templates/partials/nav.ejs | 29 + views/templates/partials/nav/breadcrumb.ejs | 16 + views/templates/partials/nav/logo.ejs | 4 + views/templates/partials/nav/menu.ejs | 83 +++ views/templates/partials/nav/profile.ejs | 35 + .../partials/nav/profile_dropdown.ejs | 36 + views/templates/public.ejs | 10 + views/templates/user.ejs | 23 + webpack.mix.js | 7 + 52 files changed, 2831 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 dick_example_1.png create mode 100644 dick_example_2.png create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 src/CONSTANTS.ts.example create mode 100644 src/Pager.ts create mode 100644 src/dashboard.ts create mode 100644 src/public/css/tailwind.css create mode 100644 src/public/images/dick-logo.png create mode 100644 src/public/images/profile-2.png create mode 100644 src/public/images/profile.png create mode 100644 src/public/js/components.js create mode 100644 src/public/js/theme/theme-set.js create mode 100644 src/public/js/theme/theme-switcher.js create mode 100644 src/public/modules/app.js create mode 100644 src/public/modules/components/lucide.js create mode 100644 src/routes/route.admin.ts create mode 100644 src/routes/route.auth.ts create mode 100644 src/routes/route.public.ts create mode 100644 src/routes/route.user.ts create mode 100644 src/typings/ASSTypes.d.ts create mode 100644 src/typings/Pager.d.ts create mode 100644 src/typings/express-ext.d.ts create mode 100644 src/typings/passport-ext.d.ts create mode 100644 src/utils/assJSONStructure.ts create mode 100644 src/utils/passport.ts create mode 100644 src/utils/utils.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 views/pages/admin/main.ejs create mode 100644 views/pages/public/login.ejs create mode 100644 views/pages/user/main.ejs create mode 100644 views/pages/user/tabs/configgen.ejs create mode 100644 views/pages/user/tabs/filemanager.ejs create mode 100644 views/pages/user/tabs/filemanager/pagination.ejs create mode 100644 views/pages/user/tabs/filemanager/typefilter.ejs create mode 100644 views/pages/user/tabs/filemanager/uppermenu.ejs create mode 100644 views/templates/errors/404.ejs create mode 100644 views/templates/partials/footer.ejs create mode 100644 views/templates/partials/head.ejs create mode 100644 views/templates/partials/nav.ejs create mode 100644 views/templates/partials/nav/breadcrumb.ejs create mode 100644 views/templates/partials/nav/logo.ejs create mode 100644 views/templates/partials/nav/menu.ejs create mode 100644 views/templates/partials/nav/profile.ejs create mode 100644 views/templates/partials/nav/profile_dropdown.ejs create mode 100644 views/templates/public.ejs create mode 100644 views/templates/user.ejs create mode 100644 webpack.mix.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6968ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz +*.swp + +pids +logs +results +tmp + +# Constants +src/CONSTANTS.ts + +# Dependency directory +node_modules + +# OS metadata +.DS_Store +Thumbs.db + +# Ignore built files +dist/**/* + +package-lock.json \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0ad25db --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 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 Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are 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. + + 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. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + 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 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 work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero 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 Affero 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 Affero 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 Affero 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 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. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + 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 AGPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5da4074 --- /dev/null +++ b/README.md @@ -0,0 +1,176 @@ +
+

+ + Login + +

+ Profile Preview + + Profile + +
+ +

DICK (Directly Integrated Client for Keisters)

+ +

+ The main repository for DICK, an ASS front end +
+
+ Report Bug + ยท + Request Feature +

+

+ + +
+ Table of Contents +
    +
  1. About The Project
  2. +
  3. Running The Dashboard + +
  4. +
  5. + Contributing +
  6. +
  7. + Contact +
  8. +
  9. + Acknowledgements +
  10. +
+
+ + + +## About The Project + +Dick was created to be an easy to use front end for Ass as there was no public option to allow users to view their saved images on their server. I decided to learn tailwind and also at the same time build this. I did this all in my spare time, and will keep updating as best as I can while I use it. I'm still learning all this so if anyone has suggestions on how to do things better, I am all ears! I love learning! :) + +**Current Feautres:** +1. General statistics on your file uploads +2. File browser, allows you to see all your uploads on one webpage (plans to make it more powerful) +3. Deletion of items (currently one at a time, plans for multiple at once) +4. Copy link of items (currently one at a time, plans for multiple with spaces in between in pastebin) + +**Planned Feautres:** +1. There are a lot of good ideas out there, to keep track of what is currently planned see the v1.1 project board + +The front end is built using Tailwind CSS, Lucide Icons, as well as hand crafted components all templated using EJS. I plan to eventually rewrite this in React. + +The back end is written in Typescript, utilizing expressJS. + + +## Running The Dashboard + +Running DICK is very simple, though there is no docker container.
+You must have `Node >=v16.14.0`, which you should if you're running ASS. + + +### Config + +Inside of your dick root folder, you will see `src/CONSTANTS.ts.example`. Copy this to `CONSTANTS.ts`
+Inside this file, is some basic configuration you can change for your set up. There are only 5 variables you need to worry about in this file: + +| Variable | Description | +| --------------------------------------------- | :---------------------: | +| `DICK_SUBMODULE = false` | Put this to true if you wish to run DICK as an ASS submoduke, false if seperate | +| `ASSLOCATION = "../ass"` | If running DICK seperately, DICK will use this to find your ASS install folder | +| `ASSSECURE = false` | Put this to true if you are running ASS behind a domain with HTTPS,. false if HTTP | +| `ASSDOMAIN = "127.0.0.1:40115"` | Put this to your ASS domain. Can be an ip, or domain for example `https://cdn.mydomain.com` | +| `STAFF_IDS = ["ass"]` | Change this to whatever your username is in your ASS `auth.json` file. Default user in ASS, is `ass` | + +### Running +#### Development + +
+ Open to view the development set up steps + + 1. Create a folder, call it whatever you wish + 2. Install, and run ASS https://github.com/tycrek/ass#installation (This will create an `ass` folder) + 3. Go back into the folder you created and clone this repo `git clone https://github.com/Facinorous-420/dick` + 4. Go into the newly created `dick` folder `cd dick` + 5. Go into `/src` and copy `CONSTANTS.ts.example` to `CONSTANTS.ts` and edit it as needed + 6. Go back to the root of `dick` and install the dependancies for the frontend, `npm i` + 7. Run `npm run build:dev` to compile the code base in watch mode + 8. In a new terminal, run `npm run serve:dev` to run DICK using nodemon + +:warning:```ASS will be running under it's port of 40115 whereas the dashboard will be under the port 3000.```
+
+ +#### Production +
+ Open to view the production set up steps
+ + 1. Create a folder, call it whatever you wish + 2. Install, and run ASS https://github.com/tycrek/ass#installation (This will create an `ass` folder) + 3. Go back into the folder you created and clone this repo `git clone https://github.com/Facinorous-420/dick` + 4. Go into the newly created `dick` folder `cd dick` + 5. Go into `/src` and copy `CONSTANTS.ts.example` to `CONSTANTS.ts` and edit it as needed + 6. Go back to the root of `dick` and install the dependancies for the frontend, `npm i` + 7. Run `npm start` to compile the code base and run DICK + +
+ +When you approach the login screen, your secret key is the key generated for your account. You should not share this with anyone. + +:warning:```ASS and the dashboard will be under their own ports.```
+ They will have entirely different routing. This means you can use two different domains for each, such as `cdn.yourdomain.com` for ASS and `dashboard.yourdomain.com` for DICK. + +
+ Open to view the set up steps to run this as a submodule to ass
+ +**Preface:** You need to edit `/src/CONSTANTS.ts`'s variable of `DICK_SUBMODULE` to `true` + +1. Setup ASS https://github.com/tycrek/ass#installation + For when it asks for name of front end, leave as `ass-x` (default) for now. + +2. Add this repo as a submodule into ASS `git submodule add https://github.com/Facinorous-420/dick` +3. Go into the frontend's directory, `cd dick`, and run `git submodule update --init --recursive` to initiaze it +4. Install the dependancies for the frontend, `npm i` +5. Run `npm run build` to compile the frontend and get it ready to run +6. Then move to the ASS directory and run the ASS setup again `npm run setup` +7. Leave everything as you did prior, but this time under `frontend name`, type `dick` and continue +8. Go into the `.gitmodules` file, and youll notice two submodules. Remove the + ``` + [submodule "ass-x"] + path = ass-x + url = git@github.com:tycrek/ass-x.git + ``` + submodule so only the + ``` + [submodule "dick"] + path = dick + url = https://github.com/Facinorous-420/dick + ``` + one is left +9. Run `npm run build` to recompile this change +10. You can run ASS, `npm start` or however you normally run your ass instance + +
+ +## Contributing + + If using VSCode, I'd recommend using this extension: https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + + + +## Contact + +| Developer | Job | +| --------------------------------------------- | :---------------------: | +| [Facinorous](https://github.com/facinorous-420) | Lead | +| [Sublime](https://github.com/senpaiSubby)#4233 | Helping hand, my sensei, created the back end | diff --git a/dick_example_1.png b/dick_example_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb5dd3387d28d00b6d4b4c90e61ef8b47a562da GIT binary patch literal 83846 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%0DwFN_-ZOv= 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..2749eff --- /dev/null +++ b/package.json @@ -0,0 +1,63 @@ +{ + "name": "dick", + "version": "1.0.0", + "description": "A frontend for ASS", + "main": "./dist/dashboard.js", + "repository": { + "type": "git", + "url": "https://github.com/Facinorous-420/dick" + }, + "author": "facinorous-420", + "license": "AGPL-3.0", + "scripts": { + "start": "npm run build && npm run serve", + "build": "tsc && mix --production && postcss ./src/public/css/tailwind.css -o ./dist/public/css/app.css", + "build:dev": "concurrently --kill-others \"tsc -w\" \"mix watch\" \"tailwindcss build -i ./src/public/css/tailwind.css -o ./dist/public/css/app.css --watch\" ", + "serve": "node dist/dashboard.js", + "serve:dev": "nodemon dist/dashboard.js" + }, + "dependencies": { + "@callmekory/logger": "^1.1.1", + "async": "^3.2.3", + "bcrypt": "^5.0.1", + "body-parser": "^1.19.2", + "compression": "^1.7.4", + "connect-flash": "^0.1.1", + "cookie-parser": "^1.4.6", + "cookie-session": "^2.0.0", + "ejs": "^3.1.6", + "errorhandler": "^1.5.1", + "express": "^4.17.3", + "lucide": "^0.17.13", + "passport": "^0.5.2", + "passport-local": "^1.0.0" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.0", + "@types/async": "^3.2.12", + "@types/body-parser": "^1.19.2", + "@types/compression": "^1.7.2", + "@types/connect-flash": "^0.0.37", + "@types/cookie-session": "^2.0.44", + "@types/errorhandler": "^1.5.0", + "@types/express": "^4.17.13", + "@types/express-busboy": "^8.0.0", + "@types/express-session": "^1.17.4", + "@types/fs-extra": "^9.0.13", + "@types/node": "^17.0.22", + "@types/passport": "^1.0.7", + "@types/passport-local": "^1.0.34", + "@types/request": "^2.48.8", + "autoprefixer": "^10.4.4", + "concurrently": "^7.1.0", + "cssnano": "5.1.5", + "laravel-mix": "^6.0.43", + "nodemon": "^2.0.15", + "postcss-advanced-variables": "^3.0.1", + "postcss-cli": "^9.1.0", + "tailwindcss": "^3.0.23", + "ts-node": "^10.7.0", + "tslint": "^5.20.1", + "typescript": "^4.6.2" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..3d15333 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,11 @@ +module.exports = { + plugins: [ + require('tailwindcss'), + require("postcss-advanced-variables"), + require("tailwindcss/nesting"), + require('autoprefixer'), + require('cssnano')({ + preset: 'default', + }), + ], + } \ No newline at end of file diff --git a/src/CONSTANTS.ts.example b/src/CONSTANTS.ts.example new file mode 100644 index 0000000..09c230e --- /dev/null +++ b/src/CONSTANTS.ts.example @@ -0,0 +1,33 @@ +import { templatePathBuilder } from "./utils/utils" + +/* +------------------- USER CONSTANTS ------------------------ +*/ +// Variable to set DICK to run as a submodule to ASS or seperately: true = submodule | false = seperate +export const DICK_SUBMODULE = false + +// * ------------------- ASS HOST INFORMATION ---------------------------- +// Boolean variable if your ASS is secured with HTTPS: true = https | false = http +export const ASSSECURE = false +// This is the domain your ASS is hosted at: "127.0.0.1" | "cdn.domain.com" +export const ASSDOMAIN = "127.0.0.1:40115" +// If running DICK in seperate mode, it will need to know where your ASS is installed +export const ASSLOCATION = "../ass" + +// * ------------------- STAFF ID CONSTANTS ---------------------------- <--- this will eventually be moved away from constants +// Array of all USERNAMES in your ASS auth.json file that will have admin access: ["ass", "dick", "frank"] +export const STAFF_IDS = ["ass"] + + +/* +------------------- SYSTEM CONSTANTS ------------------------ +*/ +// * ------------------- TEMPLATE PATH CONSTANTS ------------------------ +export const TEMPLATE = { + USER: templatePathBuilder("/user.ejs"), + PUBLIC: templatePathBuilder("/public.ejs"), + ERRORS: { + 403: templatePathBuilder("/errors/403.ejs"), + 404: templatePathBuilder("/errors/404.ejs") + } +} diff --git a/src/Pager.ts b/src/Pager.ts new file mode 100644 index 0000000..501e822 --- /dev/null +++ b/src/Pager.ts @@ -0,0 +1,138 @@ +import { Response } from "express" +import { parseAuthFile, parseDataFile } from "./utils/assJSONStructure" +import { RenderOptions } from "./typings/Pager" +import { ASSDOMAIN, ASSSECURE, STAFF_IDS } from "./CONSTANTS" +import { convertTimestamp, formatSize } from "./utils/utils" +import { ASSUser, ASSItem } from "./typings/ASSTypes" +import { IExtendedRequest } from "./typings/express-ext" + +export class Pager { + /** + * Process and render the specified template with provided options + */ + static async render( + res: Response, + req: IExtendedRequest, + template: string, + options?: RenderOptions + ) { + if (!options) options = { params: {} } + if (!options.params) options.params = [] + + const data: Array = parseDataFile() + const users: Array = parseAuthFile() + + // If user is already authenticated load the authenticated data + if (req.isAuthenticated()) { + return this.renderAuthenticatedData(res, req, template, options, data, users) + } + + // If user is not authenticated only load guest data + return this.renderUnauthenticatedData(res, req, template, options, data, users) + } + + /** + * Renders templates for unauthenticated templates + */ + static async renderUnauthenticatedData( + res: Response, + req: IExtendedRequest, + template: string, + options: RenderOptions, + data: Array, + users: Array + ) { + const totalUsers = users.length + const totalData = data.length + const totalSize = formatSize(data.map(item => item.size).reduce((prev, curr) => prev + curr, 0)) + + const baseData = { + params: options.params, + path: req.path, + totalUsers, + totalData, + totalSize + } + + // We render template using the absolute path of the template and the merged default data with the additional data provided. + return res.render(template, Object.assign(baseData, options)) + } + + /** + * Renders templates for authenticated templates, + */ + // eslint-disable-next-line complexity + static async renderAuthenticatedData( + res: Response, + req: IExtendedRequest, + template: string, + options: RenderOptions, + data: Array, + users: Array + ) { + // * -------------------- BUILD DATA OBJECT FOR FRONTEND EJS VARIABLES ------------ + const totalUsers = users.length + const totalData = data.length + const totalSize = formatSize(data.map(item => item.size).reduce((prev, curr) => prev + curr, 0)) + const hasRole = STAFF_IDS.indexOf(req.user.username) > -1 + // Get all the specific users file information, using secret key to match + const usersData = data.filter(item => item.owner == req.user.password).map((item) => ({ + ...item, + timestamp: convertTimestamp(item.timestamp) + })).sort((a, b) => { + let da = new Date(a.timestamp), + db = new Date(b.timestamp) + return db.getTime() - da.getTime() + }) + + // I feel like this could be done better, but I created an object filled with useful variables for the user data to be rendered on the pages + const usersDataObj = { + data: usersData, + allImages: usersData.filter(item=> item.type.includes('image')), + allVideos: usersData.filter(item=> item.type.includes('video')), + allFiles: usersData.filter(item=> item.type.includes('file')), + allOthers: usersData.filter(item=> item.type.includes('other')), + totalSize:formatSize(usersData.map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalImageSize: formatSize(usersData.filter(item=> item.type.includes('image')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalVideosSize: formatSize(usersData.filter(item=> item.type.includes('video')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalFilesSize: formatSize(usersData.filter(item=> item.type.includes('file')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalOthersSize: formatSize(usersData.filter(item=> item.type.includes('other')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)) + } + + let targetDataObj = {} + // If the user is staff and is trying to view another users information, we will grab it here to render that as well.. + /* + if (options.params.userID) { + const targetData = data.filter((item: ASSItem ) => (item: { owner: string }) => item.owner == options.params.userID) + targetDataObj = { + data: targetData, + allImages: targetData.filter(item=> item.type.includes('image')), + allVideos: targetData.filter(item=> item.type.includes('video')), + allFiles: targetData.filter(item=> item.type.includes('file')), + allOthers: targetData.filter(item=> item.type.includes('other')), + totalSize:formatSize(targetData.map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalImageSize: formatSize(targetData.filter(item=> item.type.includes('image')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalVideosSize: formatSize(targetData.filter(item=> item.type.includes('video')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalFilesSize: formatSize(targetData.filter(item=> item.type.includes('file')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)), + totalOthersSize: formatSize(targetData.filter(item=> item.type.includes('other')).map(item => item.size).reduce((prev, curr) => prev + curr, 0)) + } + } + */ + + const baseData = { + assDomain: ASSDOMAIN, + assSecure: ASSSECURE, + user: req.user, + totalSize, + totalUsers, + totalData, + usersDataObj, + //targetDataObj: options.params.userID ? targetDataObj : null, + params: options.params, + path: req.path, + hasRole + } + + return res.render(template, Object.assign(baseData, options)) + } +} diff --git a/src/dashboard.ts b/src/dashboard.ts new file mode 100644 index 0000000..7a27e2e --- /dev/null +++ b/src/dashboard.ts @@ -0,0 +1,71 @@ +import express from "express" +import compression from "compression" // compresses requests +import path from "path" +import passport from "passport" +import cookieSession from "cookie-session" +import bodyParser from 'body-parser' +import flash from 'connect-flash' +import errorHandler from "errorhandler" + +import { Pager } from "./Pager" +import { TEMPLATE } from "./CONSTANTS" +import { authRoutes } from "./routes/route.auth" +import { publicRoutes } from "./routes/route.public" +import { userRoutes } from "./routes/route.user" +import { adminRoutes } from "./routes/route.admin" + +// Add async into express cause async is megachad +const app = express() + +// Setting up express +app.set("port", process.env.PORT || 3000) +app.set("trust proxy", true) +app.set("views", path.join(__dirname, "../views")) +app.set("view engine", "ejs") +app.use(bodyParser.urlencoded({ extended: false })) +app.use(compression()) +app.use(express.json()) +app.use(express.urlencoded({ extended: true })) +app.use(errorHandler()) + +// Make express use passport and session to store the user cookie +app.use(cookieSession({ + name: 'DICK', + keys: ['_H-A*7LKy0ivJCc3JJ!p7GriVigPN+faeXKl3QS8tx)SRoJV6l6s2biA#BAR2a9siA=xfcXW(2D-Ig9J2eP83zeBC6Fc%BSvg+DQbeWljQ$ypx!dtJ(#VTu!Cu#hXQQoilz4-Mr33xz&#(PdRwuP1T'], + maxAge: 30 * 24 * 60 * 1000 // 30 days +})) +app.use(flash()); +app.use(passport.initialize()) +app.use(passport.session()) + +// Global variables +app.use((request, response, next) => { + response.locals.success_alert_message = request.flash('success_alert_message'); + response.locals.error_message = request.flash('error_message'); + response.locals.error = request.flash('error'); + next(); +}) + +// Make the public folder available publically, you know, so the public can view the public files that should be freely open to the genreal public +app.use( + express.static(path.join(__dirname, "public/"), { maxAge: 31557600000 }) +) + +// Add the routes +authRoutes(app) +publicRoutes(app) +userRoutes(app) +adminRoutes(app) + +// Catch all 404 page +app.use(async (req, res) => await Pager.render(res, req, TEMPLATE.ERRORS[404])) + +// Run DICK +app.listen(app.get("port"), () => { + console.log( + " Dick is running at http://localhost:%d in %s mode", + app.get("port"), + app.get("env") + ) + console.log(" Press CTRL-C to stop\n") +}) diff --git a/src/public/css/tailwind.css b/src/public/css/tailwind.css new file mode 100644 index 0000000..a6dbb8b --- /dev/null +++ b/src/public/css/tailwind.css @@ -0,0 +1,46 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + /* Custom Background Colors */ + .bg-primary { + @apply bg-lighttheme-primary dark:bg-darktheme-primary; + } + .bg-secondary { + @apply bg-lighttheme-secondary dark:bg-darktheme-secondary; + } + .bg-secondary-hover { + @apply bg-lighttheme-secondaryHover dark:bg-darktheme-secondaryHover; + } + .bg-tertiary { + @apply bg-lighttheme-tertiary dark:bg-darktheme-tertiary; + } + .bg-tertiary-hover { + @apply bg-lighttheme-tertiaryHover dark:bg-darktheme-tertiaryHover; + } + .text-color-primary { + @apply text-lightthemeText-primary dark:text-darkthemeText-primary; + } + .text-color-secondary { + @apply text-lightthemeText-secondary dark:text-darkthemeText-secondary; + } + .text-color-accent { + @apply text-lightthemeText-accentPrimary dark:text-darkthemeText-accentPrimary; + } + .text-color-accentsecondary { + @apply text-lightthemeText-accentSecondary dark:text-darkthemeText-accentSecondary; + } +} + +@layer components { + /* Component Sizing */ + .custom-size-profile { + height: 200px; + width: 200px; + } + .custom-w-preview { + height: 800px; + width: 800px; + } +} diff --git a/src/public/images/dick-logo.png b/src/public/images/dick-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8a9a65a98d3d2d810b68eff3a6d4bda3081789 GIT binary patch literal 61828 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 Hr-UW|ZsTbp literal 0 HcmV?d00001 diff --git a/src/public/images/profile-2.png b/src/public/images/profile-2.png new file mode 100644 index 0000000000000000000000000000000000000000..16bc8fe025ac84308f832c4f917938d839a799db GIT binary patch literal 131116 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 literal 0 HcmV?d00001 diff --git a/src/public/images/profile.png b/src/public/images/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..6ddc51a12546bbdfa9e3da6b4b22c0770bb6501a GIT binary patch literal 1351 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4rZW;-{LxVAjOjI=P8L_6q{PG zVCm}J`wu^P_WaYQ&;S4bKY8Z7lTXBxr_a}I+HPX+vtZfktfHF9Gv{X&Re${SdGd_; z{t+nw5h)e*?G^PMlV>bguyoCbphE|NCNq@;`33*`Yrmj>6_Cf6?NMQuIx`(c{n(wr!_x#$iTpS+0(@_q~g}wyS;vo-6R|W zcX=LYNjbc!{>$I^E!|pMLs_S2zggIMzP5p*Pwm{1jn8)fTC%;Y^y|g?gOaS;EJG5S zh-7cR8++f!xU9H#_uUw!YjxJEFWsc-ywnd}>)uUEEzK6a~TOVlss!pt>qBi6i)OupN9^wwO{YZtt)t=GSj z-n;d~-M0Gg1=k{y*Dm9{c4}kU^1s!;%BRfeeL7F4@vg(YCmM{jW`}&-@CWk zFMDr<{j%`tcae*}CjC909CQBewss7ia3i3MdktT|madt<;on4dXQpe*AD^EtZ&~%_ z#Kr1n46RXYuWxH@kl_^FkY-i+bpw~q@f)IR*x6O~$!5>uTmJsNRrTjB)el?s1+zCM ztYtmzctz2DPJ7vVc8$C9Os8$+QDnCFa$f)8blj$C$EAMR&3W1Jn*XrTzf~p$nYw#6 zuqDX0$8LQ$O)l9wLE^~<{v$`*Z}dqR|FSsts_zm0Xkxq!^40j0|)QOmz*7 xLJTad3@ojT%ykV+tPBji_HQUd(U6;;l9^VCTZ8o@j#EGl44$rjF6*2UngC##7YP6W literal 0 HcmV?d00001 diff --git a/src/public/js/components.js b/src/public/js/components.js new file mode 100644 index 0000000..8a31835 --- /dev/null +++ b/src/public/js/components.js @@ -0,0 +1,205 @@ +// DOM Ready Function +function ready(fn) { + if (document.readyState != 'loading') { + fn(); + } else { + document.addEventListener('DOMContentLoaded', fn); + } +} + +// DOM Ready Called +ready(function () { + + const openFile = document.getElementById('openFile'); + const showFile = document.getElementById('showFile'); + + const traMove = document.getElementsByClassName('traMove'); + const tabsProfile = document.getElementsByClassName('tabsProfile'); + const tabsProfileContent = document.getElementsByClassName('tabsProfileContent'); + const dropdownNavBtn = document.getElementById('dropdownNavBtn'); + const dropdownNav = document.getElementById('dropdownNav'); + + const dropdownProfileBtn = document.getElementsByClassName('dropdownProfileBtn'); + const dropdownProfile = document.getElementsByClassName('dropdownProfile'); + + const dropdownSearchBtn = document.getElementsByClassName('dropdownSearchBtn'); + const dropdownSearch = document.getElementsByClassName('dropdownSearch'); + const dropdownFileBtn = document.getElementsByClassName('dropdownFileBtn'); + + // Open File Manager Event + /* + function fireFileManager(){ + openFile.addEventListener('click', () => { + showFile.click(); + }); + } + fireFileManager(); +*/ + + // Dropdown Navbar Event + function fireDropdownNav(){ + dropdownNavBtn.addEventListener('click', () => { + if (dropdownNav.classList.contains('-translate-y-full')) { + dropdownNav.classList.remove('-translate-y-full'); + dropdownNav.classList.add('translate-y-0', 'ease-linear'); + + // When the event get fired, every 'traMove' id attibute will move down + Array.prototype.forEach.call(traMove, (e) => { + e.classList.remove('-translate-y-32'); + e.classList.add('translate-y-0', 'ease-linear'); + }); + } else { + dropdownNav.classList.add('-translate-y-full',); + dropdownNav.classList.remove('translate-y-0', 'ease-linear'); + + // Then if you hide the event, every 'traMove' id attribute will back to normal + Array.prototype.forEach.call(traMove, (e) => { + e.classList.add('-translate-y-32'); + e.classList.remove('translate-y-0', 'ease-linear'); + }); + } + }); + } + fireDropdownNav(); + + // Dropdown Profile Event + function fireDropdownProfile() { + Array.prototype.forEach.call(dropdownProfileBtn, function (e, index) { + e.addEventListener('click', () => { + var timer; + if (dropdownProfile[index].classList.contains('opacity-0')) { + window.clearTimeout(timer); + dropdownProfile[index].classList.remove('opacity-0', 'translate-y-6', 'invisible'); + dropdownProfile[index].classList.add('translate-y-0', 'opacity-100'); + } else { + dropdownProfile[index].classList.add('opacity-0', 'translate-y-6'); + dropdownProfile[index].classList.remove('translate-y-0', 'opacity-100'); + + //Set timer to hide the dropdown + //the value of timer '250' must be same as the tailwind class 'duration-250' in the class dropdownProfile attribute + timer = window.setTimeout( () => { + dropdownProfile[index].classList.add('invisible'); + }, 250); + } + }); + + // Click outside event + window.addEventListener('click', (eve) => { + if (!dropdownProfileBtn[index].contains(eve.target) && !dropdownProfile[index].contains(eve.target)) { + dropdownProfile[index].classList.add('opacity-0', 'translate-y-6'); + dropdownProfile[index].classList.remove('translate-y-0', 'opacity-100'); + + // Same as above + timer = window.setTimeout( () => { + dropdownProfile[index].classList.add('invisible'); + }, 250); + } + }); + }); + } + fireDropdownProfile(); + + + // Dropdown Search Event + function fireDropdownSearch() { + Array.prototype.forEach.call(dropdownSearchBtn, (e, index) => { + e.addEventListener('click', () => { + var timer; + if (dropdownSearch[index].classList.contains('opacity-0')) { + window.clearTimeout(timer); + dropdownSearch[index].classList.remove('opacity-0', 'translate-y-6', 'invisible'); + dropdownSearch[index].classList.add('translate-y-0', 'opacity-100'); + } else { + dropdownSearch[index].classList.add('opacity-0', 'translate-y-6'); + dropdownSearch[index].classList.remove('translate-y-0', 'opacity-100'); + + //Set timer to hide the dropdown + //the value of timer '250' must be same as the tailwind class 'duration-250' in the class dropdownSearch attribute + timer = window.setTimeout( () => { + dropdownSearch[index].classList.add('invisible'); + }, 250); + } + + }); + + // Click outside event + window.addEventListener('click', (eve) => { + if (!dropdownSearchBtn[index].contains(eve.target) && !dropdownSearch[index].contains(eve.target)) { + dropdownSearch[index].classList.add('opacity-0', 'translate-y-6'); + dropdownSearch[index].classList.remove('translate-y-0', 'opacity-100'); + + // Same as above + timer = window.setTimeout( () => { + dropdownSearch[index].classList.add('invisible'); + }, 250); + } + }); + + }); + } + fireDropdownSearch(); + + // Dropdown File Event + function fireDropdownFile() { + Array.prototype.forEach.call(dropdownFileBtn, (e, index) => { + const findSibling = e.parentElement.children[1]; + e.addEventListener('click', () => { + var timer; + if (findSibling.classList.contains('opacity-0')) { + window.clearTimeout(timer); + findSibling.classList.remove('opacity-0', 'translate-y-6', 'invisible'); + findSibling.classList.add('translate-y-0', 'opacity-100'); + } else { + findSibling.classList.add('opacity-0', 'translate-y-6'); + findSibling.classList.remove('translate-y-0', 'opacity-100'); + + //Set timer to hide the dropdown + //the value of timer '250' must be same as the tailwind class 'duration-250' in the class dropdownFile attribute + timer = window.setTimeout( () => { + findSibling.classList.add('invisible'); + }, 250); + } + }); + + // Click outside event + window.addEventListener('click', (eve) => { + if (!dropdownFileBtn[index].contains(eve.target) && !findSibling.contains(eve.target)) { + findSibling.classList.add('opacity-0', 'translate-y-6'); + findSibling.classList.remove('translate-y-0', 'opacity-100'); + + // Same as above + timer = window.setTimeout( () => { + findSibling.classList.add('invisible'); + }, 250); + } + + }); + + }); + } + fireDropdownFile(); + + // Tabs Profile Event + function fireTabsProfile(){ + //File Manager Tab = 0 + tabsProfile[0].addEventListener('click', () => { + if (tabsProfile[1].classList.contains('border-b-2', 'border-purple-400', 'font-semibold')) { + tabsProfile[1].classList.remove('border-b-2', 'border-purple-400', 'font-semibold'); + tabsProfile[0].classList.add('border-b-2', 'border-purple-400', 'font-semibold'); + tabsProfileContent[1].classList.add('hidden'); + tabsProfileContent[0].classList.remove('hidden'); + } + }); + //Config Gen Tab = 1 + tabsProfile[1].addEventListener('click', () => { + if (tabsProfile[0].classList.contains('border-b-2', 'border-purple-400', 'font-semibold')) { + tabsProfile[0].classList.remove('border-b-2', 'border-purple-400', 'font-semibold'); + tabsProfile[1].classList.add('border-b-2', 'border-purple-400', 'font-semibold'); + tabsProfileContent[0].classList.add('hidden'); + tabsProfileContent[1].classList.remove('hidden'); + } + }); + } + fireTabsProfile(); + +}); \ No newline at end of file diff --git a/src/public/js/theme/theme-set.js b/src/public/js/theme/theme-set.js new file mode 100644 index 0000000..76d5f82 --- /dev/null +++ b/src/public/js/theme/theme-set.js @@ -0,0 +1,9 @@ +if ( + localStorage.getItem('color-theme') === 'dark' || + (!('color-theme' in localStorage) && + window.matchMedia('(prefers-color-scheme: dark)').matches) + ) { + document.documentElement.classList.add('dark'); + } else { + document.documentElement.classList.remove('dark'); + } \ No newline at end of file diff --git a/src/public/js/theme/theme-switcher.js b/src/public/js/theme/theme-switcher.js new file mode 100644 index 0000000..89e8f6e --- /dev/null +++ b/src/public/js/theme/theme-switcher.js @@ -0,0 +1,40 @@ +var themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon'); +var themeToggleLightIcon = document.getElementById('theme-toggle-light-icon'); + +// Change the icons inside the button based on previous settings +if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { + themeToggleLightIcon.classList.remove('hidden'); +} else { + themeToggleDarkIcon.classList.remove('hidden'); +} + +var themeToggleBtn = document.getElementById('theme-toggle'); + +themeToggleBtn.addEventListener('click', function() { + + // toggle icons inside button + themeToggleDarkIcon.classList.toggle('hidden'); + themeToggleLightIcon.classList.toggle('hidden'); + + // if set via local storage previously + if (localStorage.getItem('color-theme')) { + if (localStorage.getItem('color-theme') === 'light') { + document.documentElement.classList.add('dark'); + localStorage.setItem('color-theme', 'dark'); + } else { + document.documentElement.classList.remove('dark'); + localStorage.setItem('color-theme', 'light'); + } + + // if NOT set via local storage previously + } else { + if (document.documentElement.classList.contains('dark')) { + document.documentElement.classList.remove('dark'); + localStorage.setItem('color-theme', 'light'); + } else { + document.documentElement.classList.add('dark'); + localStorage.setItem('color-theme', 'dark'); + } + } + +}); \ No newline at end of file diff --git a/src/public/modules/app.js b/src/public/modules/app.js new file mode 100644 index 0000000..c8eacdd --- /dev/null +++ b/src/public/modules/app.js @@ -0,0 +1 @@ +import "./components/lucide" \ No newline at end of file diff --git a/src/public/modules/components/lucide.js b/src/public/modules/components/lucide.js new file mode 100644 index 0000000..db42b07 --- /dev/null +++ b/src/public/modules/components/lucide.js @@ -0,0 +1,15 @@ +import { createIcons, icons } from "lucide" + +(function () { + "use strict" + + // Lucide Icons + createIcons({ + icons, + nameAttr: "data-lucide", + }) + window.lucide = { + createIcons: createIcons, + icons: icons, + } +})() diff --git a/src/routes/route.admin.ts b/src/routes/route.admin.ts new file mode 100644 index 0000000..294d6b3 --- /dev/null +++ b/src/routes/route.admin.ts @@ -0,0 +1,16 @@ +import { Request, Response, Router } from "express" +import { authCheck, adminCheck, wrap } from "../utils/utils" +import { TEMPLATE } from "../CONSTANTS" +import { Pager } from "../Pager" + +export const adminRoutes = (app: Router) => { + app.get( + "/admin", + authCheck, + adminCheck, + wrap, + async (req: Request, res: Response) => { + return Pager.render(res, req, TEMPLATE.USER, {}) + } + ) +} diff --git a/src/routes/route.auth.ts b/src/routes/route.auth.ts new file mode 100644 index 0000000..81edbc2 --- /dev/null +++ b/src/routes/route.auth.ts @@ -0,0 +1,73 @@ +import { Request, Response, NextFunction, Router } from "express" +import { authCheck } from "../utils/utils" + +const { passport } = require("../utils/passport") + +export const authRoutes = (app: Router) => { + // If user is already logged in, send the profile response, + // Otherwise, send a 401 response that the user is not authenticated + // AuthCheck before navigating to home page + app.get("/auth/check", authCheck, (req: Request, res: Response) => { + res.status(200).json({ + authenticated: true, + message: "user successfully authenticated", + user: req.user, + cookies: req.cookies, + }) + }) + + // When login is successful, retrieve user info + app.get("/auth/login/success", (req: Request, res: Response) => { + if (req.user) { + res.json({ + success: true, + message: "user has successfully authenticated", + user: req.user, + cookies: req.cookies, + }) + } + }) + + // When login failed, send failed msg + app.get("/auth/login/failed", (req: Request, res: Response) => { + res.status(401).json({ + success: false, + message: "Username or password is incorrect.", + }) + }) + + // When logout, redirect to client + app.get("/auth/logout", (req: Request, res: Response) => { + const user = req.user + req.logout() + req.flash('success_alert_message', 'You have been succesfully logged out') + return res.redirect("/login") + }) + + // Auth with local passport, send them to ricky boy to prevent brute forcing 'cause Im too lazy to add proper captcha rn + app.post( + "/auth/login", + passport.authenticate("local", { + successRedirect: "/", + failureRedirect: "https://www.youtube.com/watch?v=dQw4w9WgXcQ", + failureFlash: true + }), + (req: Request, res: Response, next: NextFunction) => { + next() + } + ) + + + // Redirect to home page after successfully login + app.get( + "/auth/callback", + passport.authenticate("local"), + (req: Request, res: Response) => { + if (req.user) { + return res.redirect("/") + } + console.log('we hit here') + return res.redirect("/login") + } + ) +} diff --git a/src/routes/route.public.ts b/src/routes/route.public.ts new file mode 100644 index 0000000..79ad557 --- /dev/null +++ b/src/routes/route.public.ts @@ -0,0 +1,13 @@ +import { Request, Response, Router } from "express" +import { TEMPLATE } from "../CONSTANTS" +import { Pager } from "../Pager" + +export const publicRoutes = (app: Router) => { + app.get("/login", async (req: Request, res: Response) => { + // If the user is already logged in via cookies, redirect them to the dashboard + if (req.user) { + return res.redirect('/') + } + await Pager.render(res, req, TEMPLATE.PUBLIC) + }) +} diff --git a/src/routes/route.user.ts b/src/routes/route.user.ts new file mode 100644 index 0000000..8ee673a --- /dev/null +++ b/src/routes/route.user.ts @@ -0,0 +1,36 @@ +import { Request, Response, Router } from "express" +import { adminCheck, authCheck, wrap } from "../utils/utils" +import { TEMPLATE } from "../CONSTANTS" +import { Pager } from "../Pager" +import { parseAuthFile } from "../utils/assJSONStructure" + +export const userRoutes = (app: Router) => { + // User Profile + app.get( + "/", + authCheck, + wrap, + async (req: Request, res: Response) => { + await Pager.render(res, req, TEMPLATE.USER, {}) + } + ) + + // External Viewing Of Other User Profiles (Admin Only) + app.get( + "/:userID", + authCheck, + adminCheck, + wrap, + async (req: Request, res: Response) => { + const allUsers = parseAuthFile() + const User = allUsers.find((user) => user.username === req.params.userID) + if (!User) { + // TODO ADD USER NOT FOUND PAGE FOR THIS ERROR INSTEAD OF SENDING A 404 + return Pager.render(res, req, TEMPLATE.ERRORS[404]) + } + return Pager.render(res, req, TEMPLATE.USER, { + params: req.params, + }) + } + ) +} diff --git a/src/typings/ASSTypes.d.ts b/src/typings/ASSTypes.d.ts new file mode 100644 index 0000000..91c6ac7 --- /dev/null +++ b/src/typings/ASSTypes.d.ts @@ -0,0 +1,18 @@ +export interface ASSUser { + username: string + password: string + count: number +} + +export interface ASSItem { + id: string + deleteId: string + type: Array + thumbnailName: string + originalName: string + fileExtension: string + fileLocation: string + timestamp: number + size: number + owner: string +} \ No newline at end of file diff --git a/src/typings/Pager.d.ts b/src/typings/Pager.d.ts new file mode 100644 index 0000000..193c8d5 --- /dev/null +++ b/src/typings/Pager.d.ts @@ -0,0 +1,5 @@ +export interface RenderOptions { + pageName?: string + params?: any + message?: any +} diff --git a/src/typings/express-ext.d.ts b/src/typings/express-ext.d.ts new file mode 100644 index 0000000..394e81e --- /dev/null +++ b/src/typings/express-ext.d.ts @@ -0,0 +1,8 @@ +import { Request } from "express" + +export interface IExtendedRequest extends Request { + user?: { + username?: string + password?: string + } +} diff --git a/src/typings/passport-ext.d.ts b/src/typings/passport-ext.d.ts new file mode 100644 index 0000000..fc8a47b --- /dev/null +++ b/src/typings/passport-ext.d.ts @@ -0,0 +1,12 @@ +type User = { + username: string + password: string +} + +declare namespace Express { + export interface Request { + User: User + path: string + params?: any + } +} diff --git a/src/utils/assJSONStructure.ts b/src/utils/assJSONStructure.ts new file mode 100644 index 0000000..322fc23 --- /dev/null +++ b/src/utils/assJSONStructure.ts @@ -0,0 +1,60 @@ +import { DICK_SUBMODULE, ASSLOCATION } from "../CONSTANTS" +import fs from "fs" +import path from "path" +import { ASSItem } from "typings/ASSTypes" + + let DATA_FILE_PATH = path.resolve(`${ASSLOCATION}/data.json`) + let AUTH_FILE_PATH = path.resolve(`${ASSLOCATION}/auth.json`) + if (DICK_SUBMODULE !== false) { + DATA_FILE_PATH = path.resolve(`data.json`) + AUTH_FILE_PATH = path.resolve(`auth.json`) + } + + export const parseDataFile = () => { + const rawDataJson = JSON.parse(fs.readFileSync(DATA_FILE_PATH).toString()) + console.log(DATA_FILE_PATH) + // Parsed users, raw file stores the password as the key in the json file + const allDataIDs = Object.keys(rawDataJson) + + // Create a new object to contain the important information we use + const allData: any[] | Array = [] + for (const id of allDataIDs) { + const fileType = Object.keys(rawDataJson[id].is).filter((type: any) => rawDataJson[id].is[type]) + allData.push({ + id, + deleteId: rawDataJson[id].deleteId, + type: fileType, + thumbnailName: rawDataJson[id].thumbnail, + originalName: rawDataJson[id].originalname, + fileExtension: rawDataJson[id].ext, + fileLocation: rawDataJson[id].path, + timestamp: rawDataJson[id].timestamp, + size: rawDataJson[id].size, + owner: rawDataJson[id].token + }) + } + + return allData + } + +export const parseAuthFile = () => { + const rawAuthJson = JSON.parse(fs.readFileSync(AUTH_FILE_PATH).toString()) + + const unparsedAuthUsers = rawAuthJson.users + + // Parsed users, raw file stores the password as the key in the json file + const Allpasswords = Object.keys(unparsedAuthUsers) + + // Create a new object to contain login information in a more standard + // Way, a list with multiple objects containing the keys "username" and "password" + const allUsers = [] + for (const password of Allpasswords) { + allUsers.push({ + username: unparsedAuthUsers[password].username, + password, + count: unparsedAuthUsers[password].count + }) + } + + return allUsers +} \ No newline at end of file diff --git a/src/utils/passport.ts b/src/utils/passport.ts new file mode 100644 index 0000000..0714416 --- /dev/null +++ b/src/utils/passport.ts @@ -0,0 +1,30 @@ +import passport from "passport" +import { Strategy } from "passport-local" +import { parseAuthFile } from "./assJSONStructure" + +passport.use( + new Strategy(async (username: string, password: string, done: any) => { + const allUsers = parseAuthFile() + + // Check if username exists + const User = allUsers.find((user) => user.username === username) + if (!User) return done(null, false, { message: 'Username does not exist!' }) + + // Compare bcrypt password hash to the supplied password + // ! UNCOMMENT THIS WHEN BCRYPT IS ENABLED LATER ON FOR PASSWORD HASHING TO WORK CORRECTLY + // const isPassCorrect = bcrypt.compareSync(password, user.passwordHash) + const isPassCorrect = password == User.password ? true : false + + // If password is incorrent return a null user object to the auth callback + if (!isPassCorrect) return done(null, false, { message: 'Password is incorrect!' }) + + // If password is correct return the entire user object + return done(null, User) + }) +) + +// Deserializing and serializing users without any additional logic. +passport.serializeUser((user: User, done) => done(null, user)) +passport.deserializeUser((obj, done) => done(null, obj)) + +module.exports = { passport } diff --git a/src/utils/utils.ts b/src/utils/utils.ts new file mode 100644 index 0000000..9584cbd --- /dev/null +++ b/src/utils/utils.ts @@ -0,0 +1,83 @@ +import { Log } from "@callmekory/logger" +import { STAFF_IDS } from "../CONSTANTS" +import { Response, NextFunction } from "express" +import { join, normalize } from "path" +import { IExtendedRequest } from "../typings/express-ext" +/** + * Generate the appropriate pathing for the a template to be rendered + */ +export const templatePathBuilder = (templatePath: string) => { + const templateDir = normalize(join(__dirname, "..", "..", "views")) + + return normalize(join(templateDir, "templates", templatePath)) +} + +/** + * Wraps the express route in a function that passes the + * `next` method from the route to the promise's catch + * statement which allows the middleware to catch the + * exception. + */ +export const wrap = (req: IExtendedRequest, res: Response, next: NextFunction) => { + if (req.user) { + Log.info(`${req.user.username} navigated to page ${req.path}`) + } + + return next() +} + +// Express middleware to check if username/password match one of the users +// in auth.json +export const authCheck = (req: IExtendedRequest, res: Response, next: NextFunction) => { + if (!req.user) { + Log.info(`A user navigated to page ${req.path} and is not logged in, redirecting to login page`) + req.flash('error_message', 'Please log in to access the requested page') + res.redirect('/login') + } else next() +} + +// Express middleware to check if username trying to access the page matches the users +// in CONSTANTS +export const adminCheck = (req: IExtendedRequest, res: Response, next: NextFunction) => { + if ((STAFF_IDS.indexOf(req.user.username) > -1) == false) { + Log.info(`${req.user.username} navigated to page ${req.path} and is not an admin, redirecting to users dashboard`) + res.redirect('/') + } else next() +} + +/** + * + * @param obj Object to be checked if empty + */ +export const isObjectEmpty = (obj: object) => { + for (const key in obj) { + // eslint-disable-next-line no-prototype-builtins + if (obj.hasOwnProperty(key)) return false + } + return true +} + +/** + * + * @param kb Number value of the size to be formatted + * @param decimals The amount of decimals you wish to add to the converted value + */ +export const formatSize = (kb: number, decimals = 2) => { + if (kb === 0) return '0 Bytes'; + + const k = 1024; + const dm = decimals < 0 ? 0 : decimals; + const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + + const i = Math.floor(Math.log(kb) / Math.log(k)); + + return parseFloat((kb / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; +} + +/** + * + * @param unixTimestamp Unix timestamp you wish to convert to a Date object + */ + export const convertTimestamp = (unixTimestamp: number) => { + return new Date(unixTimestamp) +} \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..da57935 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,55 @@ +const defaultTheme = require('tailwindcss/defaultTheme') +const colors = require('tailwindcss/colors') + +module.exports = { + darkMode: 'class', + content: [ + './**/*.ejs', + './src/public/**/*.js' +], + theme: { + extend: { + colors: { + darktheme: { + primary: '#1b253b', + secondary: '#232d45', + secondaryHover: '#222f4d', + tertiary: '#28334e', + tertiaryHover: '#2d3c5d' + }, + darkthemeText: { + primary: colors.white, + secondary: colors.slate[400], + accentPrimary: colors.purple[400], + accentSecondary: colors.purple[800] + }, + lighttheme: { + primary: '#2b910e', + secondary: '#f1f5f9', + secondaryHover: '#294ab3', + tertiary: colors.white, + tertiaryHover: '#eef1f6' + }, + lightthemeText: { + primary: colors.slate[800], + secondary: colors.slate[400], + accentPrimary: colors.purple[600], + accentSecondary: colors.purple[800] + } + }, + maxHeight: { + '0': '0', + xl: '36rem', + }, + fontFamily: { + sans: ['Inter', ...defaultTheme.fontFamily.sans], + }, + borderRadius: { + 'full': '2.5rem', + } + }, + }, + plugins: [ + require('@tailwindcss/forms'), + ] +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a3a365c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": ["esnext", "dom"], + "target": "esnext", + "esModuleInterop": true, + "noImplicitAny": true, + "moduleResolution": "node", + "outDir": "dist", + "baseUrl": "src", + "typeRoots": [ + "node_modules/@types" + ] + }, + "exclude": ["node_modules"], + "include": [ + "src/**/*.ts" + ] +} diff --git a/views/pages/admin/main.ejs b/views/pages/admin/main.ejs new file mode 100644 index 0000000..dfb45c4 --- /dev/null +++ b/views/pages/admin/main.ejs @@ -0,0 +1,2 @@ +

I already said this page was TBA, what more do you want from me? To + actually code it? ๐Ÿ˜œ

\ No newline at end of file diff --git a/views/pages/public/login.ejs b/views/pages/public/login.ejs new file mode 100644 index 0000000..27186ab --- /dev/null +++ b/views/pages/public/login.ejs @@ -0,0 +1,86 @@ +
+
+
+
+

DICK

+

Sign in to easily manage your nudes.

+ + + <% if(success_alert_message != ''){ %> + + <% } %> + + <% if(error_message != ''){ %> + + <% } %> + +
+ + + + +
+ +
+
+
+
+ +
+
+
+ +

Total Files Saved

+

+ <%= totalData %> +

+
+
+ +

Total Space Used

+

+ <%= totalSize %> +

+
+
+ +

Total Users

+

+ <%= totalUsers %> +

+
+
+
\ No newline at end of file diff --git a/views/pages/user/main.ejs b/views/pages/user/main.ejs new file mode 100644 index 0000000..e65da33 --- /dev/null +++ b/views/pages/user/main.ejs @@ -0,0 +1,153 @@ + + + Your Profile + + + +
+ +
+ +
+
+ Profile +
+
+
+ <%= user.username %> +
+
+ <% if(hasRole){ %> admin <% } else { %> user <% } %> +
+
+
+ + +
+ +
+
+
+ +

+ <%= totalSize %> +

+
+
+ <%= usersDataObj.data.length %> +
+
+ Total Files +
+
+
+ + + +
+
+
+ +

+ <%= usersDataObj.totalImageSize %> +

+
+
+ <%= usersDataObj.allImages.length %> +
+
+ <% if(usersDataObj.allImages.length==1){ %> Image <% } else { %> Images <% } %> +
+
+
+ +
+
+
+ +

+ <%= usersDataObj.totalVideosSize %> +

+
+
+ <%= usersDataObj.allVideos.length %> +
+
+ <% if(usersDataObj.allVideos.length==1){ %> Video <% } else { %> Videos <% } %> +
+
+
+ +
+
+
+ +

+ <%= usersDataObj.totalFilesSize %> +

+
+
+ <%= usersDataObj.allFiles.length %> +
+
+ <% if(usersDataObj.allFiles.length==1){ %> File <% } else { %> Files <% } %> +
+
+
+ +
+
+
+ +

+ <%= usersDataObj.totalOthersSize %> +

+
+
+ <%= usersDataObj.allOthers.length %> +
+
+ <% if(usersDataObj.allOthers.length==1){ %> Other <% } else { %> Others <% } %> +
+
+
+ +
+ + +
+ + + +
+ + + +
+ +
+ +
+
+ <%- include("./tabs/filemanager") %> +
+ +
+ + diff --git a/views/pages/user/tabs/configgen.ejs b/views/pages/user/tabs/configgen.ejs new file mode 100644 index 0000000..50ed859 --- /dev/null +++ b/views/pages/user/tabs/configgen.ejs @@ -0,0 +1,3 @@ +
+

This tab is coming to a DICK near you soon

+
\ No newline at end of file diff --git a/views/pages/user/tabs/filemanager.ejs b/views/pages/user/tabs/filemanager.ejs new file mode 100644 index 0000000..3d5f849 --- /dev/null +++ b/views/pages/user/tabs/filemanager.ejs @@ -0,0 +1,135 @@ + + +
+ + + + +
+ <% if (usersDataObj.data.length == 0) { %> +

Looks like you have no files!
+ Upload some to see some action here.

+ <% } else { %> + <% usersDataObj.data.forEach(item => { %> + +
+ +
+ + ๐Ÿ† + +
+ + + + + + + +
+
+ + +
+ + <% if (item.type == 'image') { %> + > +
+ alt=<%= item.originalName %> /> +
+
+ <% } else { %> + > +
+ + + + +
+ <%= item.fileExtension %> +
+
+
+ <% } %> + +
+ class="text-base font-medium text-color-primary md:text-lg lg:text-lg"> +

<%= item.originalName %>

+
+
+ <%= item.timestamp.toISOString().split('T')[0] %> +
+
+ <% const k = 1024 %> + <% const dm = 2 %> + <% const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] %> + <% const i = Math.floor(Math.log(item.size) / Math.log(k)) %> + <% const convertedSize = parseFloat((item.size / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; item.size %> + <%= convertedSize %> +
+
+
+
+ + <% }) %> + <% } %> +
+ +
+ + + + + \ No newline at end of file diff --git a/views/pages/user/tabs/filemanager/pagination.ejs b/views/pages/user/tabs/filemanager/pagination.ejs new file mode 100644 index 0000000..d09d9bc --- /dev/null +++ b/views/pages/user/tabs/filemanager/pagination.ejs @@ -0,0 +1,40 @@ +
+
+
+ + + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/views/pages/user/tabs/filemanager/typefilter.ejs b/views/pages/user/tabs/filemanager/typefilter.ejs new file mode 100644 index 0000000..c53c053 --- /dev/null +++ b/views/pages/user/tabs/filemanager/typefilter.ejs @@ -0,0 +1,121 @@ + +
+
+ +
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ + + +
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ +
+
+ \ No newline at end of file diff --git a/views/pages/user/tabs/filemanager/uppermenu.ejs b/views/pages/user/tabs/filemanager/uppermenu.ejs new file mode 100644 index 0000000..f20aeb3 --- /dev/null +++ b/views/pages/user/tabs/filemanager/uppermenu.ejs @@ -0,0 +1,75 @@ +
+
+ +
+ +
+ + + + + + + +
+
+ + + + + +
+ +
+
+ +
+ + +
+ +
+
+
\ No newline at end of file diff --git a/views/templates/errors/404.ejs b/views/templates/errors/404.ejs new file mode 100644 index 0000000..200e16f --- /dev/null +++ b/views/templates/errors/404.ejs @@ -0,0 +1,19 @@ +<%- include("../partials/head") %> + +
+
+
+
+
404
+
Oops. This page does not exist.
+
You may have mistyped the address or DICK seems to be malfunctioning
+ + Back to Home + +
+
+
+
+ + + \ No newline at end of file diff --git a/views/templates/partials/footer.ejs b/views/templates/partials/footer.ejs new file mode 100644 index 0000000..bd4cf7c --- /dev/null +++ b/views/templates/partials/footer.ejs @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/views/templates/partials/head.ejs b/views/templates/partials/head.ejs new file mode 100644 index 0000000..dd19058 --- /dev/null +++ b/views/templates/partials/head.ejs @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + DICK (Directly Intregrated Client for Keisters) + + + + + diff --git a/views/templates/partials/nav.ejs b/views/templates/partials/nav.ejs new file mode 100644 index 0000000..e51f031 --- /dev/null +++ b/views/templates/partials/nav.ejs @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/views/templates/partials/nav/breadcrumb.ejs b/views/templates/partials/nav/breadcrumb.ejs new file mode 100644 index 0000000..b06ad35 --- /dev/null +++ b/views/templates/partials/nav/breadcrumb.ejs @@ -0,0 +1,16 @@ +
+
+ ๐Ÿ† + + + + + + <% if(path == '/'){ %>
Dashboard
<% } %> + <% if(path == '/admin'){ %>
Admin Dashboard
<% } %> + +
+
\ No newline at end of file diff --git a/views/templates/partials/nav/logo.ejs b/views/templates/partials/nav/logo.ejs new file mode 100644 index 0000000..268150a --- /dev/null +++ b/views/templates/partials/nav/logo.ejs @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/views/templates/partials/nav/menu.ejs b/views/templates/partials/nav/menu.ejs new file mode 100644 index 0000000..e189bb1 --- /dev/null +++ b/views/templates/partials/nav/menu.ejs @@ -0,0 +1,83 @@ + \ No newline at end of file diff --git a/views/templates/partials/nav/profile.ejs b/views/templates/partials/nav/profile.ejs new file mode 100644 index 0000000..d370b46 --- /dev/null +++ b/views/templates/partials/nav/profile.ejs @@ -0,0 +1,35 @@ +
+
+
+
+ + + + + + + + +
+
+
+
\ No newline at end of file diff --git a/views/templates/partials/nav/profile_dropdown.ejs b/views/templates/partials/nav/profile_dropdown.ejs new file mode 100644 index 0000000..249d7b1 --- /dev/null +++ b/views/templates/partials/nav/profile_dropdown.ejs @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/views/templates/public.ejs b/views/templates/public.ejs new file mode 100644 index 0000000..8021f92 --- /dev/null +++ b/views/templates/public.ejs @@ -0,0 +1,10 @@ +<%- include("./partials/head") %> +
+
+ + <% if(path == '/login'){ %> <%- include("../pages/public/login") %> <% } %> + <%//We will enable this when we add the server logic to toggle registration if(path == '/register'){ %> <%-// include("../pages/public/register") %> <%// } %> + +
+
+<%- include("./partials/footer") %> \ No newline at end of file diff --git a/views/templates/user.ejs b/views/templates/user.ejs new file mode 100644 index 0000000..d249337 --- /dev/null +++ b/views/templates/user.ejs @@ -0,0 +1,23 @@ + + +<%- include("./partials/head") %> + + <%- include("./partials/nav") %> +
+ <%- include("./partials/nav/profile_dropdown") %> +
+
+ + <% if(path=='/' ){ %> + <%- include("../pages/user/main") %> + <% } %> + <% if(path=='/admin' ){ %> + <%- include("../pages/admin/main") %> + <% } %> + +
+
+
+ <%- include("./partials/footer") %> + + \ No newline at end of file diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 0000000..d93155f --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,7 @@ +const mix = require('laravel-mix') + +// I'm using laravel-mix to copy all the images, and js to the public folder then transpile the EJSmodules in src/public/modules/app.js +mix.setPublicPath('dist/public') + .copyDirectory("src/public/js", "dist/public/js") + .copyDirectory("src/public/images", "dist/public/images") + .js('src/public/modules/app.js', 'dist/public/js') \ No newline at end of file