diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..412eeda --- /dev/null +++ b/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7ddf5ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,209 @@ +################# +## Program O +################# + +!admin/downloads +admin/downloads/* +!admin/downloads/index.html +admin/scripts/dataTables.js +admin/scripts/old +!admin/uploads +admin/uploads/* +!admin/uploads/index.html +admin/ses* +admin/editAIML.htm +config/global_config.php +config/global_config*.php +global_config.php +chatbot/debug/*.txt +#library/reference/*.txt +logs/*.log +logs/*.txt +backups +backups/* +patch.php +DOM_ProofOfConcept +.htaccess + +################# +## WeBuilder/ Rapid PHP +################# + +*.flist +prev*~.php +~*.* + +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + +################# +## IntelliJ +################# + +## Ignore intellij files + +# User-specific files +*.idea +.idea +.idea/* +*.iml + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +./[Dd]ebug/ +./[Rr]elease/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +.builds +*.dotCover + +## TODO: If you have NuGet Package Restore enabled, uncomment this +#packages/ + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp + +# ReSharper is a .NET coding add-in +_ReSharper* + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish + +# Others +[Bb]in +[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML + + + +############ +## Windows +############ + +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + +# Mac crap +.DS_Store diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..577bc39 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,538 @@ +# [Program O](http://www.program-o.com) + +## CHANGELOG info: + +- Version: 2.6.11 +- Date: October 04th 2018 + + +## Version History: +2.6.11 + #433 Hot fix patch to temporarily plug the hole caused by the CSRF vunerability + +2.6.10 Code Cleanup, another round of bug fixes + + From a performance boost with filling the SRAI lookup table, to addressing multiple + issues on GitHub, a number of improvements have been made: + + 1. Refactored the code that filled the lookup table with SRAI data + 2. Additionally, fixed the bug in the function that actually uses the lookup table, + finally making it possible to use the feature + 3. Fixed bug reported in issue #354 - thatstar mis-counts + 4. Fixed the bug reported in issue #366 regarding user defined AIML + 5. Fixed the bug reported in issue #369 where "Search/Edit AIML" can't search punctuation + 6. Fixed a bug in the JSON GUI that periodically created an empty convo_id + 7. Partially addressed issue #370 where the custom `` tag always returned + "Invalid math operation" + 8. Changed the minimum PHP version from 5.3.x to 5.4.x in order to be able to utilize + certain improved functionality that isn't supported in the older PHP version + + There are other fixes as well, but let's not get carried away. :smile: + +2.6.9 Last New Feature, More Bug fixes + + A README viewer was added to the admin's "Home" panel, mainly to get rid of all of the + empty, wasted space on that panel, but also to provide relevant information about the + current version of Program O in a convenient place to view it. + + Several bug fixes have also been applied. The following is a short list of the more + 'important' fixes: + + 1. Replace all instances of `include({fileName})` with `require_once` + 2. Fix a bug in the code debugger built into the HTML GUI's page + 3. Fix a bug in the functios `db_fetch()` and `db_fetchAll()` where certain read + failures were not being reported or logged + 4. Fixed a bug in the function `set_wildcards()` where typos in some of the + RegEx code were causing search failures + 5. Fixed a bug in the function `parse_condition_tag()` that was causing certain + variations of the tag to fail + 6. Fixed a bug in the function `log_conversation()` that was causing duplicate + entries in the `client_properties` table of the database + +2.6.8 Code Refactor, new tag attributes + +### Bug Fixes +The following bugs were found and fixed: + 1. A bug in Windows with certain locales (Hungarian, for example) have no UTF-8 support, so + were triggering errors in the code that parses the AIML `` tag. This has been fixed. + 2. While testing the fix for the `` tag it was discovered that the downloads page + was adding files to the Zip archive to be downloaded that didn't belong to the selected + chatbot. this isn't noticeable when there is only one bot, but with multiple chatbots + it created an issue. This has also been fixed. + +### Code Refactoring + A review of some of the admin pages has shown that some of the code that deals with input + variables from HTML forms was out of date, so some refactoring has been done to correct this. + Several admin pages were affected, with more to come in the near future. + + Another thing that has been improved is error handling within the admin page system. Now all + errors within the admin pages will be logged from a central function that will provide more + detailed information about what's going on when errors, warnings or notices are triggered. + Each script will now have their own log files, as well as error context log files in order to + help isolate and identify bugs faster and more efficiently. + + Program O's custom error handler for the admin pages has also been revamped and upgraded, + with more features and options being made available for debugging. The error handler has been + moved into the library in order to make it more accessible to ALL admin scripts, and an + option has been added to create a "context" file that contains all variables defined at + the time an error was triggered. When this option is set to TRUE in the global config file + a new context log is created in the `logs` folder, with the filename of the script where + the error occurred, as well as the date and time (to the second) when the error was + triggered. **WARNING!** this option should only be enabled for long enough to troubleshoot + issues. It generates a new (and rather large) file for EVERY ERROR that's triggered, and + can add up fast. + +### New Tag Attributes + While testing the `` tag it was noticed that there was a decided lack of flexibility + with regard to what the tag could be used for; notably in the area of past or future dates. + The AIML specification only allowed for changing the format, timezone or the locale (language) + of the tag. This is fine if you're referring to the current date/time, but there was no way + to have the date shown for some time in the past or future. This has beeh addressed by adding + support for two new attributes for the `` tag: `timestamp` and `offset`. These attributes + are optional and work as follows: + + 1. timestamp: + The timestamp defaults to the current Unix timestamp at the time the tag is parsed. It + requires a 32 bit signed integer if used, and equates to the number of seconds elapsed + from the [Unix Epoch](https://en.wikipedia.org/wiki/Unix_time). + 2. offset + The offset attribute (which defaults to an empty string) provides a fairly simple way + to obtain past or future dates by specifying how many units of time (e.g. seconds, + minutes, etc.) to add or subtract. The following are some valid examples of time offsets: + + * +1 hour + * -1 day (this is "yesterday") + * +3 weeks + * -5 years + + Valid time units are: + + * seconds ('sec', 'second', 'seconds') + * minutes ('min', 'minute', 'minutes') + * hours ('hr', 'hour', 'hours') + * days ('day', 'days') + * weeks ('week', 'weeks') + * fortnights ('fortnight', 'fortnights') + * months ('month', 'months') + * years ('year', 'years') + + This added flexibility allows for improved use of the `` tag in situations + where a user might ask about information about past or future dates. For example, + if a user asks what the date will be in 3 weeks (``), or what + day of the week yesterday was (``), the chatbot + can respond easily, without a lot of hoops to jump through. + + + +2.6.7 Requirements Checklist + +A new "Requirements Checklist" has been added to the install script to show botmasters what PHP +extensions are required and their current state, as well as whether the current PHP version is +sufficient to run Program O. It also shows the current state of the three "recommended" PHP +extensions (cURL, zip and mbstring). The install script will provide warnings about the missing +recommended extensions, but will allow the user to continue if all other requirements are met. +If the PHP version is too low, or there are no suitable PDO extensions available, then an error +message is displayed, and installation is halted. + + +2.6.6 Improvements to the Database, Code Streamlining + +1. It was discovered that the aiml_userdefined table had not been properly indexed, and that + the SQL queries that searched both that table and the main aiml table were still somewhat + broken, so some changes were made that have drastically improved performance. + +2. More progress has been made with streamlining the code, and a number of unused functions + have been removed. the end result is an improvement in performance. + +Since changes were made to the structure of the database, a full, "CLEAN" install will be required +for this new version. It is highly suggested that you download all of your AIML files, backup the +botpersonality table, and any other data that you feel is important. **WARNING!** DO NOT backup +either the aiml or the aiml_userdefined tables. The structures of these tables has been altered +such that you won't be able to restore the data within them via SQL files without extensive +modifications. If you only have a few rows of data in the aiml_userdefined table, you might wish +to try modifying that SQL file, but I don't recommend it. the aiml table's SQL file would just +be too much work to contemplate. We apologize for the inconvenience, but these changes are worth +the effort involved. :) + +2.6.5 Major Bug Fix, New Option for Response Selection + +1. A rather glaring bug was discovered in the SQL query that collects all potential responses + that was leaving out certain AIML categories that could have been relevant. This has been + corrected. + +2. It has been suggested that the "winning" response be the first category found with the highest score, + rather than a random selection from all high scoring responses. It was also suggested that the most + recent (e.g. the last) response should be chosen, with newer AIML categories superseding older ones. + There are now three (3) defined constants in the config file that allow botmasters to determine for + themselves which response to choose when there are multiple versions with the same score. + +Given that this new version involves changes to the config file, an "overlay" install would be a good +idea. It's not __VITAL__ to the operation of the chatbot, but using it without doing so will tend to +generate some rather annoying error messages in the logs, so it's best to just re-run the install script +with all of the same information. + + +2.6.4 Reimplemented Custom Session Handling, Bug Fixes + +1. After months of researching, pulling hair out and banging heads against computer monitors, + we were finally able to work out a better implementation of custom session handling that is + both functional and secure. This time it should stick! __NOTE!__ This will require a "clean" + install of Program O, which is why we have a new version number. + +2. We also added in the option for botmasters to assign a file name other than 'admin_added.aiml' + to new AIML categories in the Teach page of the admin. The default is still 'admin_added.aiml', + but now it's not hard-coded in. + +3. The list of bugs fixed is too large to list here, but suffice it to say that most of the bugs + listed in the issues section in 2016 have been found and either killed or at least rendered + ineffective. There are still some things to address, but not as many as before. + + +2.6.3 New Features! + +1. We expanded upon the success of the jQuery-based Search/Edit page and incorporated the new + design into the srai_lookup page. Now botmasters can add, edit and delete entries in the + srai_lookup table to better help with performance of their chatbots. + +2. Improved the algorithm that initially populates the srai_lookup table so that simple wildcards + are included in the search. This added more than 30% additional entries to the table. Between + this improvement and the ability to edit directly what is already in the table, botmasters can + expect to see as much as a 65-70% improvement in bot response times. + +3. We had to fall back on not checking for "valid text" (e.g. just letters, numbers, spaces and + the two wildcards) within `` and `` tags due to a conflict with PHP's XML + parsing and validating functions not being compatible with XML Schema 1.1 specifications, so + it's now up to the botmaster to make sure that no punctuation is included within these AIML + tags. + +4. Corrected some minor visual bugs in the CSS for both the Search/Edit page and the srai_lookup + page that was causing some slight alignment issues. + +5. Resigned the parse_learn_tag() and parse_eval_tag() functions to make them work properly, based + on papers at [alicebot.org](http://www.alicebot.org/) that describe how they are implemented. + +6. Altered the first entry of all debugging modes to include relevant system specs (Program O + version, Server software type and version, OS and OS version, MySQL version and whether + Mulit-byte functions are enabled), making it easier to troubleshoot problems should any occur. + +7. Added a script to the debug viewer that allows for primitive "profiling of the selected debug + file. this profiler looks through all of the debug file's entries and gathers relevant + information, then orders that data by elapsed time, listing the longest elapsed times first. + +2.6.2 Add Option to Update From DEV Branch, Other Features/Bug Fixes + +1. Added an option in the Select Bot panel to allow checking for version updates from either the + MASTER or DEV branches, giving botmasters the ability to more readily use new features/fixes + that haven't yet made it into the stable release. +2. Added links to the admin nav panel to the debug and logs folders, making it easier to access + both debug files and error logs, directly from the admin page. These folders require admin + level access to be able to view the files themselves, so the information in these files is + still safe from unauthorized access. +3. Transitioned from YUI to jQuery for the Search/Edit AIML page, both for consistency, and to + correct an intermittent bug (issue #140) that prevents some edited AIML categories from being + saved. + +2.6.1 AIML Validation Change + +1. Changed the validation method in admin/validateAIML.php from using XML DocType Declaration (DTD) + to XML Schema (XSD). This allows the validation script to check for improper characters in both + `` and `` tags, which has been a real issue in the past +2. Incorporated the same validation method into the AIML upload script, so that you are not now + required to validate the files before uploading them. You now cannot upload invalid AIML files. + +2.6.0 Restructure the aiml_userdefined Table, Other Fixes and Changes + +1. Changed the structure of the aiml_userdefined table to correct a bug where the user ID didn't match + the current user, even though the conversation ID was the same +2. Created an XML Schema file for AIML in preparation for later changes to be implemented with the AIML + validation script +3. Improved the internal documentation for the file PDO_functions.php as part of an ongoing effort to + update and improve all internal documentation + +**While this version includes changes to the structure of the database, a patch file is included that will make the +necessary changes so that a clean install should not be required. Please note, however, that it will empty all entries +in the affected table (aiml_userdefined). This is a necessary step** + +2.5.4 Multiple Bug Fixes and Changes + +1. Fixed a bug in the function that parses the `` tag that failed to properly normalize multi-byte strings. Thanks to @LorenzCK for this fix! +2. Fixed a bug in the function that scores AIML categories that use the `` tag that was allowing incorrect categories to be selected. +3. Corrected several typos and uninitiated variables that were silently creating errors. +4. Updated version information in 62 files throughout the script. + +2.4.9 - 2.5.3 - Changes "slipped through the cracks" - oops? + +2.4.8 Housekeeping + +1. Removed dead links from the admin area and obsolete information pages +2. Merge pull requests including topic upload fix and an expansion to the make_like_pattern() + + +2.4.7 Security fixes + +1. Added XSS and CSRF attack prevention to the code-base + **Please note that this bug fix affects the config file, so will require a reinstall of the script** + +2.4.6 Bug fixes, refined the admin login routines + +1. Added code to the install script that detects the current session path, creating a new, + uniquely named folder for the session files if one does not currently exist. +2. Fixed a bug with the Search/Edit AIML admin page that prevented any AIML categories from + being displayed due to the wrong session variables being loaded. +3. Fixed a bug with the RSS feed display where garbage was sometimes displayed if the forum + pages were down. +4. Fixed another bug with the RSS feed display where the admin script would time out if the + forum pages were not responding. +5. Cleaned up some of the code where needed, standardizing the remaining PHP comment headers + to make them all the same. +6. Added getbots.php to the project, which returns a JSON encoded array of ID/name pairs for + all active chatbots, enabling botmasters to build selectboxes or radio button groups of + chatbots. No more hard-coding bot IDs or bot names! there is a new example GUI in the + jQuery folder (multibot_gui_with_chatlog.php) that can be used to learn how to implement + this wih a selectbox in an AJAX driven chatbot interface page. + +2.4.5 Relocated the session save path + +1. Moved the session save path from the server default to a new folder. this increases + security for those on shared hosts, and ensures that there are no permissions problems + (or problems with the session save path not being set in the PHP config) for those who + have been experiencing login problems due to sessions not being saved. + +2.4.4 Multiple bug fixes, consolidated SELECT type DB queries into calls to two functions + +1. Fixed a bug in the core code that allowed fatal errors to be generated if the variable + bot_id is empty or not set +2. Fixed a bug in the new Search/Edit AIML admin page that caused only the default chatbot's + AIML to be displayed, rather than the currently selected chatbot. +3. Created 2 new PDO query functions (db_fetch() and db_fetchAll()) to handle retrieving all + SELECT type queries, resulting in fewer lines of code to the tune of over 150 +4. Fixed a security bug where users could directly access certain admin pages without actually + being logged in. +5. Changed the download admin page to enable downloading multiple files as a zip arcvhive. + +2.4.3 Multiple bug fixes, started adding internal documentation with descriptions + +1. Fixed a bug in the XML GUI that was creating fatal errors when called from the admin page +2. Fixed bugs in the functions that parse SRAI, SR and CONDITION tags +3. Corrected a bug where certain admin pages didn't display if a new chatbot was created but not saved. +4. Began the process of adding internal documentation to the script, which will allow for later + automatic generation of external documentation. +5. Refactored and/or removed some duplicate functions within the admin pages, to avoid conflicts + with the generation of the above mentioned external documentation. + +2.4.2 Added Local AIML Validation and SRAI Lookup Admin + +1. Added a "local" AIML validator script, specifically designed to validate + AIML files for Program O and Pandorabots. +2. Added a new page to the admin to work with the new SRAI lookup table. For + now, the page only fills the lookup table with direct matches to existing + SRAI calls within the AIML table, but soon it will also include functionality + for searching the lookup table, finding "indirect match" patterns, and the + ability to edit the templates for matched SRAI calls. +3. Several minor bug fixes, including one that limited the number of characters + that the admin user name could have (without any warning of the limit). The + new limit is 255 characters, instead of the previous 10. + +2.4.1 Complete refactor for PDO support, added SRAI lookup + +1. Refactored the code that deals with DB access to completely remove the + last of the mysql_* functions, including "fallback support". +2. Added an additional table to the database to handle looking up previously + used calls to `` tags. This will improve performance in the future, + in that if an `` tag is stored in the lookup table, the script doesn't + have to run through the entire AIML table to find it. If a suitable srai + category is found that isn't already in the lookup table, it's added for + future use. While the table is being added now, the feature is not yet + enabled. We'll be enabling it in the near future, once further testing is + completed. + +2.4.0 Conditional PDO support added, major bug fixes + +1. Added PDO support for PHP versions that support it (and have it enabled), + with a fallback to the original MySQL functions if no PDO support is detected +2. Finally found the problem with template-side `` tags not being displayed + correctly. Special thanks to Tom (AKA Slow Putzo) for the assist with this! +3. Also fixed the long-standing bug with pattern-side `` tags not being + scored and chosen correctly. Once again, Thanks Tom! :D +4. Removed the DB stats page from the admin. It was more or less a failed + experiment, and really needed to be removed. +5. Also removed the scripts to upgrade from version 2.0 to 2.3 - If you have any + version of Program O that's older than 2.3.1, you need to do a fresh install + and more or less start from scratch. Sorry, but that's just the way it is. +6. Other miscellaneous, minor bug fixes, mainly dealing with unnecessary error + log entries. + +2.3.1 Bug fixes, repaired missing table columns + +1. Corrected a bug in the function parse_learn_tag that prevented new data from being + inserted into the aiml_userdefined table +2. Added a column in the aiml_userdefined table that was missing, which was also + preventing new data from being added. + +2.3.0 Minor DB refactor, in preparation for version 2.5 + +1. removed the last of the PHP code columns from the database +2. added an unknown_user field to the bots table, allowing per-bot settings for what the + will call someone they don't know +3. Altered the chatbot general config page in the admin to reflect the above changes +4. added a bot_id field and dropped a user_id field in the unknown_inputs table +5. dropped the user_id field from the undefined_defaults table, as it was not used +6. added a "memory bailout" feature to the function that returns potential AIML categories + to prevent memory overflow errors +7. other miscellaneous minor bug fixes + +2.2.2 Bug Fixes/versioning refactor + +1. Fixed a bug that prevented proper implementation of template-side `` tags +2. updated and corrected the script version in all files that contain version information +3. implemented functionality that sets the scripts internal version based on the contents + of version.txt, rather than hard-coding it + +2.2.1 Major bug fixes + +1. Fixed a bug that was mangling Unicode characters while removing punctuation +2. Fixed a bug where the chatbot's debug level wasn't being used +3. re-wrote several functions to be more efficient + + +2.2.0 Foreign Langague Support + +1. Program O now support foreign languages! YEEHAAAA +2. Tested against, Russian, Arabic, Turkish, French, Thai, Greek, Chinese +3. Converted all character coding both internal and external to UTF-8 +4. Added the correct XML header to the display conversation functions for xml requests +5. Updated the XML example gui to use simpleXML to send requests to the bot + + +2.1.5 Bug fixes/merge to "Master" branch + +1. Corrected a bug that improperly ordered the collections of words gathered in `` and `` tags +2. Corrected multiple minor bugs in the Download script that affected the use of said downloaded AIML + files with Pandorabots. +3. Adjusted the function that checks GitHub for the current version of the script, based on changes they + made to their API. Also added some error handling, in case GitHub can't be reached. +4. Modified some of the debugging output descriptors to avoid unnecessary and potentially confusing + message duplication. +5. Corrected a bug in the main SQL query that caused certain valid AIML categories that use the `` tag + to be missed in the main search. +6. Added 'experimental' support for Pandorabots style `` tags, adding functionality for both LOCALE + and TIMEZONE attributes (support for these attributes was mentioned previously, but not added at that + time). +7. Other minor cosmetic changes and typo corrections that didn't affect functionality. + +2.1.4 Bug fixes & minor styling/feature changes + +1. Fixed several bugs that arose from the database refactor. +2. Fixed the long-standing bug that caused the script to create a new user + instead of just updating the current user when they typed in the phrase + "clear properties". +3. Fixed bugs in both the word censor and spell checker addons that prevented + botmasters from making changes to the DB. +4. Updated the spell checker addon to allow botmasters to enable/disable + spell checking by editing the config file. In time, this will expand to + the ability to enable or disable the addon per bot (future plans). +5. Changed the styling of the admin pages to include visible cues for BBCode + [code] blocks from the Program O Support Forums, when viewing posts from + the Support tab of the admin pages. + +2.1.3 Added the last of the AIML tag functions/Refactored the DB/Multiple Bug Fixes + +1. Added functions for the remaining AIML tags: + `` + `` + `` +2. Refactored the database, standardizing field names across all of the tables. +3. Refactored the admin pages, replacing $_GET, $_POST and $_REQUEST with input + filtering functions. +4. Fixed several minor bugs that were discovered during the database refactoring + process. +5. Re-designed the AIML tag functions, consolidating duplicate code into a single + function. this cut more than 70 lines of code from the script while retaining + exactly the same functionality and performance. +6. Created an experimental config file editor to the admin folder, to allow + botmasters to edit the file directly. For now, the script doesn't actually + change the config file, but that functionality will be added in the coming + weeks. +7. Updated and modified the automatic upgrade script to incorporate all of the + above listed changes. + +2.1.2 Added more AIML tag functions/Script Streamlining + +1. Added functions for the following AIML tags: + `` + `` + `` +2. I went through the entire script, looking for and deleting "orphaned" functions + and streamlining code wherever possible. + +2.1.1 Added functions for some AIML tags + +1. Added functions for the following AIML tags: + `` + `` + `` + +2.1.0 Major revision change / Bug fixes + +1. Altered the way that client properties are handled, by storing them in a table + in the DB, rather than keeping them in an element of the conversation array. +2. Removed the AIML to PHP code functions, replacing it with an XML parser to + both improve performance and to address several bugs that arose from trying to + evaluate faulty PHP code strings. +3. removed the function get_convo_var, replacing calls to that function with direct + queries to the conversation array. +4. Corrected several minor bugs that were preventing proper use/setting of some variables + Please note that at this point, several functions still need to be written to parse certain AIML + tags. The file TODO lists all of the tags that are still not handled. + +2.0.9 Feature Update + +1. Added a function to the admin page to poll GitHub for the current release version, and notify + the botmaster if a new version is available, providing a link to the latest version. + +2.0.8 Performed the following upgrades/fixes: + +1. Added version information to the admin page. so that botmasters can see at a glance which version + they're using. This is a prelude to a new "version check" feature that I'm working on. +2. Corrected a bug where changing the bot's default page format wasn't being reflected in the config + file. PLEASE NOTE that if you have several chatbots, this will affect ALL of them, but if that's + the case, you shouldn't be relying on the default chatbot page anyway. + +2.0.7 Two major changes, this time: + +1. Removed some settings from the install script that had been causing new chatbots to + fail to respond. These settings are still available in the admin pages, but during installation + are given default values. +2. Added support for uploading ZIP file archives of AIML files, to make the process of adding + AIML files less faster and less tedious. the size limit for uploading files is still 2MB, + but a 2MB ZIP file can hold a LOT of AIML files. + +2.0.6 Performed the following upgrades/fixes: + +1. Corrected typographical errors in several files, both in the admin pages, and in the config files. +2. Consolidated error logging, adding a /logs/ folder to the base directory. Error logs are + also named for the pages where the errors occur. (e.g. admin.error.log for the admin pages, + install.error.log, etc. +3. Updated the addon checkForBan, activating it, and adding functionality to add banned users + to the list of banned IP addresses. It's still up to the botmaster to implement banning in + their AIML files. To ban a user, insert the following into the apropriate AIML template: + `` + For further assistance, please check out the Program O Support Forums. + +2.0.5 Bug fixes + +1. Fixed a bug where uploaded AIML files were not being added to the DB, even if they passed validation. +2. Added the variable $default_charset to allow character encoding other than UTF-8 for both AIML files + and chatbot pages. +3. Added experimental support for international characters. This is far from it's "final" implementation, + but we hope that it's a start. + +2.0.4 Fixed a bug in the debugging functions that caused empty debugging files to be created on non-Windows systems + +2.0.3 Added simple AIML validation to the upload script, and restyled the admin pages accordingly + +2.0.2 Unspecified Bug fixes + +2.0.1 Unspecified Bug fixes + +2.0.0 Initial Release diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD new file mode 100644 index 0000000..eafc319 --- /dev/null +++ b/CONTRIBUTING.MD @@ -0,0 +1,16 @@ +# Contributing + +The development team for Program O welcomes contributers who desire to help improve the project, +and we encourage everyone to join in on the fun! We just ask a few things before you do. + +## Reporting Issues + +Before reporting new issues, please take the time to read [this wiki page](https://github.com/Program-O/Program-O/wiki/Reporting-Issues) +in order to learn what information you can provide that can help up to help you. + +## Pull Requests + +Please make all pull requests on the `DEV` branch. this is where we _actively_ work on Program O. +The `MASTER` branch is our "__stable__" release version, and only gets updated when we feel that +the `DEV` branch is (relatively) bug free. + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9e00393 --- /dev/null +++ b/LICENSE @@ -0,0 +1,191 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and giving a relevant date. +b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. +c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. +d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. +b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. +c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. +d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. +e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or +b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or +c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or +d) Limiting the use for publicity purposes of names of licensors or authors of the material; or +e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or +f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + + diff --git a/Program-Output-Files/1.png b/Program-Output-Files/1.png new file mode 100644 index 0000000..19d7bd7 Binary files /dev/null and b/Program-Output-Files/1.png differ diff --git a/Program-Output-Files/2.png b/Program-Output-Files/2.png new file mode 100644 index 0000000..3961cfe Binary files /dev/null and b/Program-Output-Files/2.png differ diff --git a/Program-Output-Files/3.png b/Program-Output-Files/3.png new file mode 100644 index 0000000..192dd5c Binary files /dev/null and b/Program-Output-Files/3.png differ diff --git a/Program-Output-Files/4.png b/Program-Output-Files/4.png new file mode 100644 index 0000000..085018c Binary files /dev/null and b/Program-Output-Files/4.png differ diff --git a/Program-Output-Files/5.png b/Program-Output-Files/5.png new file mode 100644 index 0000000..c8f8991 Binary files /dev/null and b/Program-Output-Files/5.png differ diff --git a/Program-Output-Files/6.png b/Program-Output-Files/6.png new file mode 100644 index 0000000..a4b2c88 Binary files /dev/null and b/Program-Output-Files/6.png differ diff --git a/Program-Output-Files/AIML files from GitHub.pdf b/Program-Output-Files/AIML files from GitHub.pdf new file mode 100644 index 0000000..745193d Binary files /dev/null and b/Program-Output-Files/AIML files from GitHub.pdf differ diff --git a/Program-Output-Files/Notes.txt b/Program-Output-Files/Notes.txt new file mode 100644 index 0000000..075935c --- /dev/null +++ b/Program-Output-Files/Notes.txt @@ -0,0 +1,5 @@ +Install URL +http://192.168.140.128/Program-O/ + +Admin URL +http://192.168.140.128/Program-O/admin/ \ No newline at end of file diff --git a/Program-Output-Files/Program O Installation 0 Guide.pdf b/Program-Output-Files/Program O Installation 0 Guide.pdf new file mode 100644 index 0000000..28cf0e9 Binary files /dev/null and b/Program-Output-Files/Program O Installation 0 Guide.pdf differ diff --git a/Program-Output-Files/Program O Installation 1.pdf b/Program-Output-Files/Program O Installation 1.pdf new file mode 100644 index 0000000..9368d91 Binary files /dev/null and b/Program-Output-Files/Program O Installation 1.pdf differ diff --git a/Program-Output-Files/Program O Installation 2.pdf b/Program-Output-Files/Program O Installation 2.pdf new file mode 100644 index 0000000..e119246 Binary files /dev/null and b/Program-Output-Files/Program O Installation 2.pdf differ diff --git a/Program-Output-Files/Program O Installation 3.pdf b/Program-Output-Files/Program O Installation 3.pdf new file mode 100644 index 0000000..28859d3 Binary files /dev/null and b/Program-Output-Files/Program O Installation 3.pdf differ diff --git a/Program-Output-Files/Program O Installation 4.pdf b/Program-Output-Files/Program O Installation 4.pdf new file mode 100644 index 0000000..569cc35 Binary files /dev/null and b/Program-Output-Files/Program O Installation 4.pdf differ diff --git a/Program-Output-Files/Program O Installation 5.pdf b/Program-Output-Files/Program O Installation 5.pdf new file mode 100644 index 0000000..07097fb Binary files /dev/null and b/Program-Output-Files/Program O Installation 5.pdf differ diff --git a/Program-Output-Files/Program-O Putty SSH Logs 1.txt b/Program-Output-Files/Program-O Putty SSH Logs 1.txt new file mode 100644 index 0000000..fd1b1b4 --- /dev/null +++ b/Program-Output-Files/Program-O Putty SSH Logs 1.txt @@ -0,0 +1,2024 @@ + Verifying : selinux-policy-3.13.1-229.el7_6.6.noarch 38/1372 + Verifying : gnome-shell-extension-launch-new-instance-3.28.1-5.el7.noarch 39/1372 + Verifying : 1:grub2-pc-modules-2.02-0.76.el7.centos.noarch 40/1372 + Verifying : librdmacm-17.2-3.el7.x86_64 41/1372 + Verifying : 1:java-1.7.0-openjdk-1.7.0.201-2.6.16.1.el7_6.x86_64 42/1372 + Verifying : abrt-addon-xorg-2.1.11-52.el7.centos.x86_64 43/1372 + Verifying : zlib-1.2.7-18.el7.x86_64 44/1372 + Verifying : 2:vim-common-7.4.160-5.el7.x86_64 45/1372 + Verifying : systemd-libs-219-62.el7.x86_64 46/1372 + Verifying : logrotate-3.8.6-17.el7.x86_64 47/1372 + Verifying : abrt-python-2.1.11-52.el7.centos.x86_64 48/1372 + Verifying : abrt-dbus-2.1.11-52.el7.centos.x86_64 49/1372 + Verifying : spice-server-0.14.0-6.el7.x86_64 50/1372 + Verifying : webkitgtk4-2.20.5-1.el7.x86_64 51/1372 + Verifying : libvirt-daemon-driver-nwfilter-4.5.0-10.el7_6.3.x86_64 52/1372 + Verifying : 1:NetworkManager-ppp-1.12.0-8.el7_6.x86_64 53/1372 + Verifying : libwacom-data-0.30-1.el7.noarch 54/1372 + Verifying : boost-iostreams-1.53.0-27.el7.x86_64 55/1372 + Verifying : coreutils-8.22-23.el7.x86_64 56/1372 + Verifying : libosinfo-1.1.0-2.el7.x86_64 57/1372 + Verifying : python2-subprocess32-3.2.6-13.el7.x86_64 58/1372 + Verifying : python-linux-procfs-0.4.9-4.el7.noarch 59/1372 + Verifying : samba-common-libs-4.8.3-4.el7.x86_64 60/1372 + Verifying : 1:iwl1000-firmware-39.31.5.1-69.el7.noarch 61/1372 + Verifying : spice-vdagent-0.14.0-16.el7.x86_64 62/1372 + Verifying : gnome-software-3.28.2-3.el7.x86_64 63/1372 + Verifying : dracut-033-554.el7.x86_64 64/1372 + Verifying : 4:perl-macros-5.16.3-293.el7.x86_64 65/1372 + Verifying : ghostscript-9.07-31.el7_6.6.x86_64 66/1372 + Verifying : libfastjson-0.99.4-3.el7.x86_64 67/1372 + Verifying : binutils-2.27-34.base.el7.x86_64 68/1372 + Verifying : libreport-2.1.11-42.el7.centos.x86_64 69/1372 + Verifying : 1:openssl-1.0.2k-16.el7.x86_64 70/1372 + Verifying : python-firewall-0.5.3-5.el7.noarch 71/1372 + Verifying : hypervfcopyd-0-0.34.20180415git.el7.x86_64 72/1372 + Verifying : libgovirt-0.3.4-1.el7.x86_64 73/1372 + Verifying : libsmbios-2.3.3-8.el7.x86_64 74/1372 + Verifying : libgxps-0.3.0-4.el7.x86_64 75/1372 + Verifying : net-tools-2.0-0.24.20131004git.el7.x86_64 76/1372 + Verifying : gnome-session-xsession-3.28.1-6.el7.x86_64 77/1372 + Verifying : icedax-1.1.11-25.el7.x86_64 78/1372 + Verifying : gtk3-immodule-xim-3.22.30-3.el7.x86_64 79/1372 + Verifying : firewalld-0.5.3-5.el7.noarch 80/1372 + Verifying : 12:dhcp-libs-4.2.5-68.el7.centos.1.x86_64 81/1372 + Verifying : python-ethtool-0.8-7.el7.x86_64 82/1372 + Verifying : 1:java-1.8.0-openjdk-headless-1.8.0.191.b12-1.el7_6.x86_64 83/1372 + Verifying : evolution-data-server-3.28.5-1.el7.x86_64 84/1372 + Verifying : xorg-x11-drv-fbdev-0.5.0-1.el7.x86_64 85/1372 + Verifying : nss-sysinit-3.36.0-7.el7_5.x86_64 86/1372 + Verifying : gnome-packagekit-common-3.28.0-1.el7.x86_64 87/1372 + Verifying : gnome-shell-extension-user-theme-3.28.1-5.el7.noarch 88/1372 + Verifying : poppler-0.26.5-20.el7.x86_64 89/1372 + Verifying : brasero-libs-3.12.2-5.el7.x86_64 90/1372 + Verifying : rsyslog-8.24.0-34.el7.x86_64 91/1372 + Verifying : gnome-desktop3-3.28.2-2.el7.x86_64 92/1372 + Verifying : sane-backends-1.0.24-12.el7.x86_64 93/1372 + Verifying : adwaita-cursor-theme-3.28.0-1.el7.noarch 94/1372 + Verifying : imsettings-gsettings-1.6.3-10.el7.x86_64 95/1372 + Verifying : python2-pyatspi-2.26.0-3.el7.noarch 96/1372 + Verifying : gnome-disk-utility-3.28.3-1.el7.x86_64 97/1372 + Verifying : 12:dhcp-common-4.2.5-68.el7.centos.1.x86_64 98/1372 + Verifying : lm_sensors-libs-3.4.0-6.20160601gitf9185e5.el7.x86_64 99/1372 + Verifying : gnome-terminal-nautilus-3.28.2-2.el7.x86_64 100/1372 + Verifying : glusterfs-fuse-3.12.2-18.el7.x86_64 101/1372 + Verifying : gnome-session-3.28.1-6.el7.x86_64 102/1372 + Verifying : kexec-tools-2.0.15-21.el7.x86_64 103/1372 + Verifying : audit-2.8.4-4.el7.x86_64 104/1372 + Verifying : libref_array-0.1.5-32.el7.x86_64 105/1372 + Verifying : libpeas-gtk-1.22.0-1.el7.x86_64 106/1372 + Verifying : gssdp-1.0.2-1.el7.x86_64 107/1372 + Verifying : zenity-3.28.1-1.el7.x86_64 108/1372 + Verifying : crash-7.2.3-8.el7.x86_64 109/1372 + Verifying : python2-ipalib-4.6.4-10.el7.centos.noarch 110/1372 + Verifying : libvirt-daemon-config-network-4.5.0-10.el7_6.3.x86_64 111/1372 + Verifying : python2-ipaclient-4.6.4-10.el7.centos.noarch 112/1372 + Verifying : libreport-gtk-2.1.11-42.el7.centos.x86_64 113/1372 + Verifying : libgee-0.20.1-1.el7.x86_64 114/1372 + Verifying : gnome-shell-extension-top-icons-3.28.1-5.el7.noarch 115/1372 + Verifying : xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 116/1372 + Verifying : vte-profile-0.52.2-2.el7.x86_64 117/1372 + Verifying : targetcli-2.1.fb46-7.el7.noarch 118/1372 + Verifying : 1:perl-Pod-Escapes-1.04-293.el7.noarch 119/1372 + Verifying : libreport-cli-2.1.11-42.el7.centos.x86_64 120/1372 + Verifying : libX11-1.6.5-2.el7.x86_64 121/1372 + Verifying : bison-3.0.4-2.el7.x86_64 122/1372 + Verifying : iwl135-firmware-18.168.6.1-69.el7.noarch 123/1372 + Verifying : libvirt-daemon-4.5.0-10.el7_6.3.x86_64 124/1372 + Verifying : libstdc++-4.8.5-36.el7.x86_64 125/1372 + Verifying : satyr-0.13-15.el7.x86_64 126/1372 + Verifying : abrt-2.1.11-52.el7.centos.x86_64 127/1372 + Verifying : e2fsprogs-libs-1.42.9-13.el7.x86_64 128/1372 + Verifying : 1:dbus-x11-1.10.24-12.el7.x86_64 129/1372 + Verifying : cairo-1.15.12-3.el7.x86_64 130/1372 + Verifying : libsss_autofs-1.16.2-13.el7.x86_64 131/1372 + Verifying : gnome-shell-extension-apps-menu-3.28.1-5.el7.noarch 132/1372 + Verifying : libcgroup-0.41-20.el7.x86_64 133/1372 + Verifying : evince-libs-3.28.2-5.el7.x86_64 134/1372 + Verifying : mesa-libGLES-18.0.5-3.el7.x86_64 135/1372 + Verifying : 7:lvm2-libs-2.02.180-10.el7_6.2.x86_64 136/1372 + Verifying : libvirt-daemon-driver-storage-mpath-4.5.0-10.el7_6.3.x86_64 137/1372 + Verifying : geocode-glib-3.26.0-2.el7.x86_64 138/1372 + Verifying : util-linux-2.23.2-59.el7.x86_64 139/1372 + Verifying : gobject-introspection-1.56.1-1.el7.x86_64 140/1372 + Verifying : cronie-1.4.11-20.el7_6.x86_64 141/1372 + Verifying : gcr-3.28.0-1.el7.x86_64 142/1372 + Verifying : libselinux-2.5-14.1.el7.x86_64 143/1372 + Verifying : 10:qemu-kvm-1.5.3-160.el7.x86_64 144/1372 + Verifying : gnupg2-2.0.22-5.el7_5.x86_64 145/1372 + Verifying : patch-2.7.1-10.el7_5.x86_64 146/1372 + Verifying : accountsservice-0.6.50-2.el7.x86_64 147/1372 + Verifying : mesa-libEGL-18.0.5-3.el7.x86_64 148/1372 + Verifying : 1:findutils-4.5.11-6.el7.x86_64 149/1372 + Verifying : nss-softokn-3.36.0-5.el7_5.x86_64 150/1372 + Verifying : kbd-legacy-1.15.5-15.el7.noarch 151/1372 + Verifying : 2:tar-1.26-35.el7.x86_64 152/1372 + Verifying : systemd-sysv-219-62.el7.x86_64 153/1372 + Verifying : nautilus-extensions-3.26.3.1-2.el7.x86_64 154/1372 + Verifying : abrt-addon-ccpp-2.1.11-52.el7.centos.x86_64 155/1372 + Verifying : poppler-glib-0.26.5-20.el7.x86_64 156/1372 + Verifying : open-vm-tools-desktop-10.2.5-3.el7.x86_64 157/1372 + Verifying : 2:yelp-3.28.1-1.el7.x86_64 158/1372 + Verifying : libsecret-0.18.6-1.el7.x86_64 159/1372 + Verifying : gvfs-goa-1.36.2-1.el7.x86_64 160/1372 + Verifying : libvirt-daemon-driver-nodedev-4.5.0-10.el7_6.3.x86_64 161/1372 + Verifying : libvirt-daemon-driver-qemu-4.5.0-10.el7_6.3.x86_64 162/1372 + Verifying : file-roller-3.28.1-2.el7.x86_64 163/1372 + Verifying : libreport-plugin-reportuploader-2.1.11-42.el7.centos.x86_64 164/1372 + Verifying : gvfs-smb-1.36.2-1.el7.x86_64 165/1372 + Verifying : cryptsetup-python-2.0.3-3.el7.x86_64 166/1372 + Verifying : libgcc-4.8.5-36.el7.x86_64 167/1372 + Verifying : abrt-retrace-client-2.1.11-52.el7.centos.x86_64 168/1372 + Verifying : gdb-7.6.1-114.el7.x86_64 169/1372 + Verifying : libtalloc-2.1.13-1.el7.x86_64 170/1372 + Verifying : 2:shadow-utils-4.1.5.1-25.el7.x86_64 171/1372 + Verifying : libsemanage-2.5-14.el7.x86_64 172/1372 + Verifying : tigervnc-license-1.8.0-13.el7.noarch 173/1372 + Verifying : libpath_utils-0.2.1-32.el7.x86_64 174/1372 + Verifying : gnome-shell-extension-common-3.28.1-5.el7.noarch 175/1372 + Verifying : 1:NetworkManager-bluetooth-1.12.0-8.el7_6.x86_64 176/1372 + Verifying : policycoreutils-python-2.5-29.el7.x86_64 177/1372 + Verifying : sane-backends-libs-1.0.24-12.el7.x86_64 178/1372 + Verifying : gvfs-fuse-1.36.2-1.el7.x86_64 179/1372 + Verifying : rpm-libs-4.11.3-35.el7.x86_64 180/1372 + Verifying : poppler-utils-0.26.5-20.el7.x86_64 181/1372 + Verifying : anaconda-tui-21.48.22.147-1.el7.centos.x86_64 182/1372 + Verifying : libgnomekbd-3.26.0-1.el7.x86_64 183/1372 + Verifying : 2:vim-filesystem-7.4.160-5.el7.x86_64 184/1372 + Verifying : 1:libvorbis-1.3.3-8.el7.1.x86_64 185/1372 + Verifying : gdk-pixbuf2-2.36.12-3.el7.x86_64 186/1372 + Verifying : ipa-client-common-4.6.4-10.el7.centos.noarch 187/1372 + Verifying : 1:grub2-tools-minimal-2.02-0.76.el7.centos.x86_64 188/1372 + Verifying : xorg-x11-server-common-1.20.1-5.1.el7.x86_64 189/1372 + Verifying : libreport-plugin-ureport-2.1.11-42.el7.centos.x86_64 190/1372 + Verifying : openldap-2.4.44-20.el7.x86_64 191/1372 + Verifying : python-perf-3.10.0-957.1.3.el7.x86_64 192/1372 + Verifying : libmediaart-1.9.4-1.el7.x86_64 193/1372 + Verifying : 1:dbus-libs-1.10.24-12.el7.x86_64 194/1372 + Verifying : alsa-utils-1.1.6-1.el7.x86_64 195/1372 + Verifying : libmount-2.23.2-59.el7.x86_64 196/1372 + Verifying : upower-0.99.7-1.el7.x86_64 197/1372 + Verifying : libibverbs-17.2-3.el7.x86_64 198/1372 + Verifying : kernel-3.10.0-957.1.3.el7.x86_64 199/1372 + Verifying : libpeas-loader-python-1.22.0-1.el7.x86_64 200/1372 + Verifying : evince-3.28.2-5.el7.x86_64 201/1372 + Verifying : libusal-1.1.11-25.el7.x86_64 202/1372 + Verifying : linux-firmware-20180911-69.git85c5d90.el7.noarch 203/1372 + Verifying : osinfo-db-20180531-1.el7.noarch 204/1372 + Verifying : fribidi-1.0.2-1.el7.x86_64 205/1372 + Verifying : sssd-krb5-common-1.16.2-13.el7.x86_64 206/1372 + Verifying : firefox-60.4.0-1.el7.centos.x86_64 207/1372 + Verifying : 1:nfs-utils-1.3.0-0.61.el7.x86_64 208/1372 + Verifying : libchamplain-gtk-0.12.16-2.el7.x86_64 209/1372 + Verifying : gnome-getting-started-docs-3.28.2-1.el7.noarch 210/1372 + Verifying : gstreamer1-plugins-base-1.10.4-2.el7.x86_64 211/1372 + Verifying : python-2.7.5-76.el7.x86_64 212/1372 + Verifying : anaconda-core-21.48.22.147-1.el7.centos.x86_64 213/1372 + Verifying : 1:NetworkManager-libnm-1.12.0-8.el7_6.x86_64 214/1372 + Verifying : libgexiv2-0.10.8-1.el7.x86_64 215/1372 + Verifying : open-vm-tools-10.2.5-3.el7.x86_64 216/1372 + Verifying : policycoreutils-2.5-29.el7.x86_64 217/1372 + Verifying : cronie-anacron-1.4.11-20.el7_6.x86_64 218/1372 + Verifying : libselinux-python-2.5-14.1.el7.x86_64 219/1372 + Verifying : at-spi2-atk-2.26.2-1.el7.x86_64 220/1372 + Verifying : shim-x64-15-1.el7.centos.x86_64 221/1372 + Verifying : glusterfs-api-3.12.2-18.el7.x86_64 222/1372 + Verifying : gvfs-afp-1.36.2-1.el7.x86_64 223/1372 + Verifying : scl-utils-20130529-19.el7.x86_64 224/1372 + Verifying : libuuid-2.23.2-59.el7.x86_64 225/1372 + Verifying : ipa-common-4.6.4-10.el7.centos.noarch 226/1372 + Verifying : gcc-c++-4.8.5-36.el7.x86_64 227/1372 + Verifying : glusterfs-client-xlators-3.12.2-18.el7.x86_64 228/1372 + Verifying : mesa-dri-drivers-18.0.5-3.el7.x86_64 229/1372 + Verifying : 1:vorbis-tools-1.4.0-13.el7.x86_64 230/1372 + Verifying : python-dmidecode-3.12.2-3.el7.x86_64 231/1372 + Verifying : totem-pl-parser-3.26.1-1.el7.x86_64 232/1372 + Verifying : libmspack-0.5-0.6.alpha.el7.x86_64 233/1372 + Verifying : libvirt-daemon-driver-network-4.5.0-10.el7_6.3.x86_64 234/1372 + Verifying : sssd-krb5-1.16.2-13.el7.x86_64 235/1372 + Verifying : gnome-packagekit-installer-3.28.0-1.el7.x86_64 236/1372 + Verifying : python-sss-murmur-1.16.2-13.el7.x86_64 237/1372 + Verifying : copy-jdk-configs-3.3-10.el7_5.noarch 238/1372 + Verifying : gupnp-1.0.2-5.el7.x86_64 239/1372 + Verifying : grilo-0.3.6-1.el7.x86_64 240/1372 + Verifying : polkit-0.112-18.el7.x86_64 241/1372 + Verifying : 1:gnome-bluetooth-libs-3.28.2-1.el7.x86_64 242/1372 + Verifying : libstdc++-devel-4.8.5-36.el7.x86_64 243/1372 + Verifying : rest-0.8.1-2.el7.x86_64 244/1372 + Verifying : kbd-1.15.5-15.el7.x86_64 245/1372 + Verifying : gnome-packagekit-updater-3.28.0-1.el7.x86_64 246/1372 + Verifying : atk-2.28.1-1.el7.x86_64 247/1372 + Verifying : abrt-console-notification-2.1.11-52.el7.centos.x86_64 248/1372 + Verifying : abrt-cli-2.1.11-52.el7.centos.x86_64 249/1372 + Verifying : iscsi-initiator-utils-6.2.0.874-10.el7.x86_64 250/1372 + Verifying : libstoragemgmt-python-1.6.2-4.el7.noarch 251/1372 + Verifying : gnome-classic-session-3.28.1-5.el7.noarch 252/1372 + Verifying : libsss_nss_idmap-1.16.2-13.el7.x86_64 253/1372 + Verifying : libfprint-0.8.2-1.el7.x86_64 254/1372 + Verifying : PackageKit-1.1.10-1.el7.centos.x86_64 255/1372 + Verifying : PackageKit-yum-1.1.10-1.el7.centos.x86_64 256/1372 + Verifying : libcollection-0.7.0-32.el7.x86_64 257/1372 + Verifying : ndctl-libs-62-1.el7.x86_64 258/1372 + Verifying : libvirt-daemon-driver-storage-logical-4.5.0-10.el7_6.3.x86_64 259/1372 + Verifying : libwayland-server-1.15.0-1.el7.x86_64 260/1372 + Verifying : mokutil-15-1.el7.centos.x86_64 261/1372 + Verifying : libwacom-0.30-1.el7.x86_64 262/1372 + Verifying : redhat-rpm-config-9.1.0-87.el7.centos.noarch 263/1372 + Verifying : 2:microcode_ctl-2.1-47.el7.x86_64 264/1372 + Verifying : ipset-libs-6.38-3.el7_6.x86_64 265/1372 + Verifying : 2:nmap-ncat-6.40-16.el7.x86_64 266/1372 + Verifying : tigervnc-server-minimal-1.8.0-13.el7.x86_64 267/1372 + Verifying : sssd-common-1.16.2-13.el7.x86_64 268/1372 + Verifying : tzdata-java-2018g-1.el7.noarch 269/1372 + Verifying : gnome-system-monitor-3.28.2-1.el7.x86_64 270/1372 + Verifying : systemtap-runtime-3.3-3.el7.x86_64 271/1372 + Verifying : 1:wpa_supplicant-2.6-12.el7.x86_64 272/1372 + Verifying : rdma-core-17.2-3.el7.x86_64 273/1372 + Verifying : libinput-1.10.7-2.el7.x86_64 274/1372 + Verifying : libblockdev-mdraid-2.18-3.el7.x86_64 275/1372 + Verifying : sssd-1.16.2-13.el7.x86_64 276/1372 + Verifying : 1:java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64 277/1372 + Verifying : gnome-initial-setup-3.28.0-1.el7.x86_64 278/1372 + Verifying : gnome-boxes-3.28.5-2.el7.x86_64 279/1372 + Verifying : augeas-libs-1.4.0-6.el7.x86_64 280/1372 + Verifying : 1:dbus-1.10.24-12.el7.x86_64 281/1372 + Verifying : vdo-6.1.1.125-3.el7.x86_64 282/1372 + Verifying : xorg-x11-drv-wacom-0.36.1-1.el7.x86_64 283/1372 + Verifying : grubby-8.28-25.el7.x86_64 284/1372 + Verifying : 2:vim-enhanced-7.4.160-5.el7.x86_64 285/1372 + Verifying : 7:device-mapper-event-libs-1.02.149-10.el7_6.2.x86_64 286/1372 + Verifying : initscripts-9.49.46-1.el7.x86_64 287/1372 + Verifying : sysstat-10.1.5-17.el7.x86_64 288/1372 + Verifying : libical-3.0.3-2.el7.x86_64 289/1372 + Verifying : libcroco-0.6.12-4.el7.x86_64 290/1372 + Verifying : rpm-4.11.3-35.el7.x86_64 291/1372 + Verifying : 32:bind-utils-9.9.4-72.el7.x86_64 292/1372 + Verifying : gssproxy-0.7.0-21.el7.x86_64 293/1372 + Verifying : iptables-1.4.21-28.el7.x86_64 294/1372 + Verifying : xorg-x11-drv-intel-2.99.917-28.20180530.el7.x86_64 295/1372 + Verifying : 1:grub2-tools-2.02-0.76.el7.centos.x86_64 296/1372 + Verifying : libgtop2-2.38.0-3.el7.x86_64 297/1372 + Verifying : ipa-client-4.6.4-10.el7.centos.x86_64 298/1372 + Verifying : lsof-4.87-6.el7.x86_64 299/1372 + Verifying : libblockdev-loop-2.18-3.el7.x86_64 300/1372 + Verifying : adwaita-icon-theme-3.28.0-1.el7.noarch 301/1372 + Verifying : 12:dhclient-4.2.5-68.el7.centos.1.x86_64 302/1372 + Verifying : iscsi-initiator-utils-iscsiuio-6.2.0.874-10.el7.x86_64 303/1372 + Verifying : alsa-lib-1.1.6-2.el7.x86_64 304/1372 + Verifying : centos-release-7-6.1810.2.el7.centos.x86_64 305/1372 + Verifying : xdg-desktop-portal-gtk-1.0.2-1.el7.x86_64 306/1372 + Verifying : libquadmath-4.8.5-36.el7.x86_64 307/1372 + Verifying : libreport-centos-2.1.11-42.el7.centos.x86_64 308/1372 + Verifying : samba-client-4.8.3-4.el7.x86_64 309/1372 + Verifying : ipset-6.38-3.el7_6.x86_64 310/1372 + Verifying : libblockdev-nvdimm-2.18-3.el7.x86_64 311/1372 + Verifying : glibc-headers-2.17-260.el7.x86_64 312/1372 + Verifying : 1:librbd1-10.2.5-4.el7.x86_64 313/1372 + Verifying : abrt-tui-2.1.11-52.el7.centos.x86_64 314/1372 + Verifying : fuse-libs-2.9.2-11.el7.x86_64 315/1372 + Verifying : efivar-libs-36-11.el7.x86_64 316/1372 + Verifying : pcsc-lite-libs-1.8.8-8.el7.x86_64 317/1372 + Verifying : 1:grub2-common-2.02-0.76.el7.centos.noarch 318/1372 + Verifying : libsmartcols-2.23.2-59.el7.x86_64 319/1372 + Verifying : 1:autofs-5.0.7-99.el7.x86_64 320/1372 + Verifying : setroubleshoot-3.2.30-3.el7.x86_64 321/1372 + Verifying : libcgroup-tools-0.41-20.el7.x86_64 322/1372 + Verifying : abrt-addon-vmcore-2.1.11-52.el7.centos.x86_64 323/1372 + Verifying : gvfs-mtp-1.36.2-1.el7.x86_64 324/1372 + Verifying : glusterfs-3.12.2-18.el7.x86_64 325/1372 + Verifying : hwdata-0.252-9.1.el7.x86_64 326/1372 + Verifying : ledmon-0.90-1.el7.x86_64 327/1372 + Verifying : sssd-ipa-1.16.2-13.el7.x86_64 328/1372 + Verifying : setools-libs-3.3.8-4.el7.x86_64 329/1372 + Verifying : nss-tools-3.36.0-7.el7_5.x86_64 330/1372 + Verifying : shotwell-0.28.4-1.el7.x86_64 331/1372 + Verifying : libsoup-2.62.2-2.el7.x86_64 332/1372 + Verifying : motif-2.3.4-14.el7_5.x86_64 333/1372 + Verifying : PackageKit-glib-1.1.10-1.el7.centos.x86_64 334/1372 + Verifying : PackageKit-gtk3-module-1.1.10-1.el7.centos.x86_64 335/1372 + Verifying : 10:qemu-guest-agent-2.12.0-2.el7.x86_64 336/1372 + Verifying : gnutls-3.3.29-8.el7.x86_64 337/1372 + Verifying : gnome-font-viewer-3.28.0-1.el7.x86_64 338/1372 + Verifying : libvirt-daemon-driver-interface-4.5.0-10.el7_6.3.x86_64 339/1372 + Verifying : libdhash-0.5.0-32.el7.x86_64 340/1372 + Verifying : elfutils-default-yama-scope-0.172-2.el7.noarch 341/1372 + Verifying : abrt-addon-kerneloops-2.1.11-52.el7.centos.x86_64 342/1372 + Verifying : kernel-headers-3.10.0-957.1.3.el7.x86_64 343/1372 + Verifying : python-libs-2.7.5-76.el7.x86_64 344/1372 + Verifying : libXfont-1.5.4-1.el7.x86_64 345/1372 + Verifying : tzdata-2018g-1.el7.noarch 346/1372 + Verifying : glusterfs-cli-3.12.2-18.el7.x86_64 347/1372 + Verifying : glx-utils-8.3.0-10.el7.x86_64 348/1372 + Verifying : libreport-plugin-bugzilla-2.1.11-42.el7.centos.x86_64 349/1372 + Verifying : 1:gdm-3.28.2-10.el7.x86_64 350/1372 + Verifying : xorg-x11-drv-synaptics-1.9.0-2.el7.x86_64 351/1372 + Verifying : PackageKit-command-not-found-1.1.10-1.el7.centos.x86_64 352/1372 + Verifying : xdg-desktop-portal-1.0.2-1.el7.x86_64 353/1372 + Verifying : libvirt-daemon-driver-storage-gluster-4.5.0-10.el7_6.3.x86_64 354/1372 + Verifying : gnome-settings-daemon-3.28.1-2.el7.x86_64 355/1372 + Verifying : rpm-build-4.11.3-35.el7.x86_64 356/1372 + Verifying : gnome-color-manager-3.28.0-1.el7.x86_64 357/1372 + Verifying : 1:xorg-x11-font-utils-7.5-21.el7.x86_64 358/1372 + Verifying : libreport-plugin-mantisbt-2.1.11-42.el7.centos.x86_64 359/1372 + Verifying : libstoragemgmt-1.6.2-4.el7.x86_64 360/1372 + Verifying : 1:totem-nautilus-3.26.2-1.el7.x86_64 361/1372 + Verifying : xkeyboard-config-2.24-1.el7.noarch 362/1372 + Verifying : openjpeg-libs-1.5.1-18.el7.x86_64 363/1372 + Verifying : libvirt-daemon-driver-storage-disk-4.5.0-10.el7_6.3.x86_64 364/1372 + Verifying : ghostscript-cups-9.07-31.el7_6.6.x86_64 365/1372 + Verifying : imsettings-libs-1.6.3-10.el7.x86_64 366/1372 + Verifying : libldb-1.3.4-1.el7.x86_64 367/1372 + Verifying : libblockdev-part-2.18-3.el7.x86_64 368/1372 + Verifying : elfutils-libelf-0.172-2.el7.x86_64 369/1372 + Verifying : dnsmasq-2.76-7.el7.x86_64 370/1372 + Verifying : fprintd-pam-0.8.1-2.el7.x86_64 371/1372 + Verifying : systemtap-3.3-3.el7.x86_64 372/1372 + Verifying : selinux-policy-targeted-3.13.1-229.el7_6.6.noarch 373/1372 + Verifying : jasper-libs-1.900.1-33.el7.x86_64 374/1372 + Verifying : libX11-common-1.6.5-2.el7.noarch 375/1372 + Verifying : scap-security-guide-0.1.40-12.el7.centos.0.1.noarch 376/1372 + Verifying : gucharmap-10.0.4-1.el7.x86_64 377/1372 + Verifying : iwl7260-firmware-22.0.7.0-69.el7.noarch 378/1372 + Verifying : gnome-shell-extension-places-menu-3.28.1-5.el7.noarch 379/1372 + Verifying : hypervkvpd-0-0.34.20180415git.el7.x86_64 380/1372 + Verifying : udisks2-2.7.3-8.el7.x86_64 381/1372 + Verifying : mozjs52-52.9.0-1.el7.x86_64 382/1372 + Verifying : sudo-1.8.23-3.el7.x86_64 383/1372 + Verifying : kmod-20-23.el7.x86_64 384/1372 + Verifying : libgdata-0.17.9-1.el7.x86_64 385/1372 + Verifying : flex-2.5.37-6.el7.x86_64 386/1372 + Verifying : pyOpenSSL-0.13.1-4.el7.x86_64 387/1372 + Verifying : fprintd-0.8.1-2.el7.x86_64 388/1372 + Verifying : nspr-4.19.0-1.el7_5.x86_64 389/1372 + Verifying : kpartx-0.4.9-123.el7.x86_64 390/1372 + Verifying : sg3_utils-libs-1.37-17.el7.x86_64 391/1372 + Verifying : libreport-plugin-mailx-2.1.11-42.el7.centos.x86_64 392/1372 + Verifying : 1:control-center-filesystem-3.28.1-4.el7.x86_64 393/1372 + Verifying : gcc-gfortran-4.8.5-36.el7.x86_64 394/1372 + Verifying : ndctl-62-1.el7.x86_64 395/1372 + Verifying : dracut-network-033-554.el7.x86_64 396/1372 + Verifying : 1:librados2-10.2.5-4.el7.x86_64 397/1372 + Verifying : curl-7.29.0-51.el7.x86_64 398/1372 + Verifying : cairo-gobject-1.15.12-3.el7.x86_64 399/1372 + Verifying : xorg-x11-drv-void-1.4.1-2.el7.1.x86_64 400/1372 + Verifying : abrt-gui-libs-2.1.11-52.el7.centos.x86_64 401/1372 + Verifying : libvirt-daemon-driver-storage-rbd-4.5.0-10.el7_6.3.x86_64 402/1372 + Verifying : perl-Git-1.8.3.1-20.el7.noarch 403/1372 + Verifying : 1:dmidecode-3.1-2.el7.x86_64 404/1372 + Verifying : gnome-shell-extension-window-list-3.28.1-5.el7.noarch 405/1372 + Verifying : file-5.11-35.el7.x86_64 406/1372 + Verifying : libss-1.42.9-13.el7.x86_64 407/1372 + Verifying : 1:folks-0.11.4-1.el7.x86_64 408/1372 + Verifying : libvirt-daemon-driver-secret-4.5.0-10.el7_6.3.x86_64 409/1372 + Verifying : elfutils-0.172-2.el7.x86_64 410/1372 + Verifying : realmd-0.16.1-11.el7.x86_64 411/1372 + Verifying : 2:yelp-libs-3.28.1-1.el7.x86_64 412/1372 + Verifying : nss-util-3.36.0-1.el7_5.x86_64 413/1372 + Verifying : abrt-addon-pstoreoops-2.1.11-52.el7.centos.x86_64 414/1372 + Verifying : 7:device-mapper-event-1.02.149-10.el7_6.2.x86_64 415/1372 + Verifying : 1:NetworkManager-team-1.12.0-8.el7_6.x86_64 416/1372 + Verifying : 1:NetworkManager-wwan-1.12.0-8.el7_6.x86_64 417/1372 + Verifying : xorg-x11-drv-vesa-2.4.0-1.el7.x86_64 418/1372 + Verifying : 1:grub2-2.02-0.76.el7.centos.x86_64 419/1372 + Verifying : gnome-keyring-3.28.2-1.el7.x86_64 420/1372 + Verifying : libcom_err-1.42.9-13.el7.x86_64 421/1372 + Verifying : libappstream-glib-0.7.8-2.el7.x86_64 422/1372 + Verifying : libipa_hbac-1.16.2-13.el7.x86_64 423/1372 + Verifying : iwl6000-firmware-9.221.4.1-69.el7.noarch 424/1372 + Verifying : iw-4.3-2.el7.x86_64 425/1372 + Verifying : glibc-2.17-260.el7.x86_64 426/1372 + Verifying : sg3_utils-1.37-17.el7.x86_64 427/1372 + Verifying : 32:bind-libs-lite-9.9.4-72.el7.x86_64 428/1372 + Verifying : firewall-config-0.5.3-5.el7.noarch 429/1372 + Verifying : anaconda-widgets-21.48.22.147-1.el7.centos.x86_64 430/1372 + Verifying : gnome-user-docs-3.28.2-1.el7.noarch 431/1372 + Verifying : harfbuzz-1.7.5-2.el7.x86_64 432/1372 + Verifying : iwl6000g2b-firmware-17.168.5.2-69.el7.noarch 433/1372 + Verifying : libquadmath-devel-4.8.5-36.el7.x86_64 434/1372 + Verifying : wayland-devel-1.15.0-1.el7.x86_64 435/1372 + Verifying : gupnp-igd-0.2.5-2.el7.x86_64 436/1372 + Verifying : libteam-1.27-5.el7.x86_64 437/1372 + Verifying : nss-3.36.0-7.el7_5.x86_64 438/1372 + Verifying : audit-libs-2.8.4-4.el7.x86_64 439/1372 + Verifying : gnome-keyring-pam-3.28.2-1.el7.x86_64 440/1372 + Verifying : gvfs-gphoto2-1.36.2-1.el7.x86_64 441/1372 + Verifying : gnome-clocks-3.28.0-1.el7.x86_64 442/1372 + Verifying : gdisk-0.8.10-2.el7.x86_64 443/1372 + Verifying : google-noto-emoji-color-fonts-20180508-4.el7.noarch 444/1372 + Verifying : 1:grub2-pc-2.02-0.76.el7.centos.x86_64 445/1372 + Verifying : sssd-ldap-1.16.2-13.el7.x86_64 446/1372 + Verifying : hyperv-daemons-0-0.34.20180415git.el7.x86_64 447/1372 + Verifying : iwl3945-firmware-15.32.2.9-69.el7.noarch 448/1372 + Verifying : libtevent-0.9.36-1.el7.x86_64 449/1372 + Verifying : mutter-3.28.3-5.el7.x86_64 450/1372 + Verifying : 4:perl-libs-5.16.3-293.el7.x86_64 451/1372 + Verifying : libreswan-3.25-2.el7.x86_64 452/1372 + Verifying : libwayland-client-1.15.0-1.el7.x86_64 453/1372 + Verifying : kernel-tools-3.10.0-957.1.3.el7.x86_64 454/1372 + Verifying : xorg-x11-drv-vmmouse-13.1.0-1.el7.1.x86_64 455/1372 + Verifying : libvirt-libs-4.5.0-10.el7_6.3.x86_64 456/1372 + Verifying : dosfstools-3.0.20-10.el7.x86_64 457/1372 + Verifying : samba-client-libs-4.8.3-4.el7.x86_64 458/1372 + Verifying : 2:cheese-libs-3.28.0-1.el7.x86_64 459/1372 + Verifying : libvirt-daemon-driver-storage-scsi-4.5.0-10.el7_6.3.x86_64 460/1372 + Verifying : device-mapper-multipath-libs-0.4.9-123.el7.x86_64 461/1372 + Verifying : gvfs-afc-1.36.2-1.el7.x86_64 462/1372 + Verifying : systemtap-client-3.3-3.el7.x86_64 463/1372 + Verifying : vino-3.22.0-7.el7.x86_64 464/1372 + Verifying : python2-blockdev-2.18-3.el7.x86_64 465/1372 + Verifying : libXcursor-1.1.15-1.el7.x86_64 466/1372 + Verifying : 10:qemu-kvm-common-1.5.3-160.el7.x86_64 467/1372 + Verifying : sane-backends-drivers-scanners-1.0.24-12.el7.x86_64 468/1372 + Verifying : appstream-data-7-20180614.el7.noarch 469/1372 + Verifying : libsemanage-python-2.5-14.el7.x86_64 470/1372 + Verifying : libreport-plugin-rhtsupport-2.1.11-42.el7.centos.x86_64 471/1372 + Verifying : setroubleshoot-plugins-3.0.67-3.el7.noarch 472/1372 + Verifying : 32:bind-license-9.9.4-72.el7.noarch 473/1372 + Verifying : tuned-2.10.0-6.el7.noarch 474/1372 + Verifying : genisoimage-1.1.11-25.el7.x86_64 475/1372 + Verifying : 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64 476/1372 + Verifying : mesa-filesystem-18.0.5-3.el7.x86_64 477/1372 + Verifying : iwl2030-firmware-18.168.6.1-69.el7.noarch 478/1372 + Verifying : sssd-ad-1.16.2-13.el7.x86_64 479/1372 + Verifying : gom-0.3.3-1.el7.x86_64 480/1372 + Verifying : python2-futures-3.1.1-5.el7.noarch 481/1372 + Verifying : nss-pem-1.0.3-5.el7.x86_64 482/1372 + Verifying : gvfs-archive-1.36.2-1.el7.x86_64 483/1372 + Verifying : libssh2-1.4.3-12.el7.x86_64 484/1372 + Verifying : libchamplain-0.12.16-2.el7.x86_64 485/1372 + Verifying : abrt-desktop-2.1.11-52.el7.centos.x86_64 486/1372 + Verifying : brasero-nautilus-3.12.2-5.el7.x86_64 487/1372 + Verifying : glibc-common-2.17-260.el7.x86_64 488/1372 + Verifying : gsettings-desktop-schemas-3.28.0-2.el7.x86_64 489/1372 + Verifying : gnome-screenshot-3.26.0-1.el7.x86_64 490/1372 + Verifying : libwnck3-3.24.1-2.el7.x86_64 491/1372 + Verifying : freetype-2.8-12.el7.x86_64 492/1372 + Verifying : cryptsetup-libs-2.0.3-3.el7.x86_64 493/1372 + Verifying : mesa-libgbm-18.0.5-3.el7.x86_64 494/1372 + Verifying : 1:java-1.7.0-openjdk-headless-1.7.0.201-2.6.16.1.el7_6.x86_64 495/1372 + Verifying : spice-glib-0.35-2.el7.x86_64 496/1372 + Verifying : json-glib-1.4.2-2.el7.x86_64 497/1372 + Verifying : fwupd-1.0.8-4.el7.x86_64 498/1372 + Verifying : nautilus-3.26.3.1-2.el7.x86_64 499/1372 + Verifying : empathy-3.12.13-1.el7.x86_64 500/1372 + Verifying : libgomp-4.8.5-36.el7.x86_64 501/1372 + Verifying : at-3.1.13-24.el7.x86_64 502/1372 + Verifying : xorg-x11-drv-vmware-13.2.1-1.el7.1.x86_64 503/1372 + Verifying : iwl100-firmware-39.31.5.1-69.el7.noarch 504/1372 + Verifying : setup-2.8.71-10.el7.noarch 505/1372 + Verifying : gtksourceview3-3.24.8-1.el7.x86_64 506/1372 + Verifying : kbd-misc-1.15.5-15.el7.noarch 507/1372 + Verifying : gnome-packagekit-3.28.0-1.el7.x86_64 508/1372 + Verifying : gnome-shell-3.28.3-6.el7.x86_64 509/1372 + Verifying : gnome-dictionary-3.26.1-2.el7.x86_64 510/1372 + Verifying : xorg-x11-drv-evdev-2.10.6-1.el7.x86_64 511/1372 + Verifying : glibmm24-2.56.0-1.el7.x86_64 512/1372 + Verifying : 1:libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64 513/1372 + Verifying : python-rtslib-2.1.fb63-13.el7.noarch 514/1372 + Verifying : libreport-web-2.1.11-42.el7.centos.x86_64 515/1372 + Verifying : 1:libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64 516/1372 + Verifying : mesa-libGL-18.0.5-3.el7.x86_64 517/1372 + Verifying : gtk-update-icon-cache-3.22.30-3.el7.x86_64 518/1372 + Verifying : flatpak-1.0.2-2.el7.x86_64 519/1372 + Verifying : iwl4965-firmware-228.61.2.24-69.el7.noarch 520/1372 + Verifying : libreport-rhel-anaconda-bugzilla-2.1.11-42.el7.centos.x86_64 521/1372 + Verifying : gjs-1.52.3-1.el7.x86_64 522/1372 + Verifying : systemd-python-219-62.el7.x86_64 523/1372 + Verifying : xorg-x11-server-Xorg-1.20.1-5.1.el7.x86_64 524/1372 + Verifying : sushi-3.28.3-1.el7.x86_64 525/1372 + Verifying : iprutils-2.4.16.1-1.el7.x86_64 526/1372 + Verifying : 1:openssl-libs-1.0.2k-16.el7.x86_64 527/1372 + Verifying : cryptsetup-2.0.3-3.el7.x86_64 528/1372 + Verifying : kmod-libs-20-23.el7.x86_64 529/1372 + Verifying : libxcb-1.13-1.el7.x86_64 530/1372 + Verifying : libini_config-1.3.1-32.el7.x86_64 531/1372 + Verifying : libepoxy-1.5.2-1.el7.x86_64 532/1372 + Verifying : dconf-0.28.0-4.el7.x86_64 533/1372 + Verifying : libX11-devel-1.6.5-2.el7.x86_64 534/1372 + Verifying : libdrm-2.4.91-3.el7.x86_64 535/1372 + Verifying : file-libs-5.11-35.el7.x86_64 536/1372 + Verifying : fwupdate-libs-12-5.el7.centos.x86_64 537/1372 + Verifying : evince-nautilus-3.28.2-5.el7.x86_64 538/1372 + Verifying : 10:qemu-img-1.5.3-160.el7.x86_64 539/1372 + Verifying : 1:NetworkManager-wifi-1.12.0-8.el7_6.x86_64 540/1372 + Verifying : vte291-0.52.2-2.el7.x86_64 541/1372 + Verifying : 1:totem-3.26.2-1.el7.x86_64 542/1372 + Verifying : iwl6050-firmware-41.28.5.1-69.el7.noarch 543/1372 + Verifying : libbasicobjects-0.1.1-32.el7.x86_64 544/1372 + Verifying : rpm-build-libs-4.11.3-35.el7.x86_64 545/1372 + Verifying : libsepol-2.5-10.el7.x86_64 546/1372 + Verifying : fwupdate-efi-12-5.el7.centos.x86_64 547/1372 + Verifying : kernel-devel-3.10.0-957.1.3.el7.x86_64 548/1372 + Verifying : abrt-addon-python-2.1.11-52.el7.centos.x86_64 549/1372 + Verifying : yum-3.4.3-161.el7.centos.noarch 550/1372 + Verifying : firewalld-filesystem-0.5.3-5.el7.noarch 551/1372 + Verifying : libblkid-2.23.2-59.el7.x86_64 552/1372 + Verifying : gvfs-1.36.2-1.el7.x86_64 553/1372 + Verifying : libpeas-1.22.0-1.el7.x86_64 554/1372 + Verifying : libvirt-daemon-driver-storage-4.5.0-10.el7_6.3.x86_64 555/1372 + Verifying : 7:device-mapper-1.02.149-10.el7_6.2.x86_64 556/1372 + Verifying : glib-networking-2.56.1-1.el7.x86_64 557/1372 + Verifying : geoclue2-2.4.8-1.el7.x86_64 558/1372 + Verifying : 2:ethtool-4.8-9.el7.x86_64 559/1372 + Verifying : 32:bind-libs-9.9.4-72.el7.x86_64 560/1372 + Verifying : libwayland-egl-1.15.0-1.el7.x86_64 561/1372 + Verifying : gnome-tweak-tool-3.28.1-2.el7.noarch 562/1372 + Verifying : 1:nautilus-sendto-3.8.6-1.el7.x86_64 563/1372 + Verifying : device-mapper-multipath-0.4.9-123.el7.x86_64 564/1372 + Verifying : libkadm5-1.15.1-34.el7.x86_64 565/1372 + Verifying : python-sssdconfig-1.16.2-13.el7.noarch 566/1372 + Verifying : e2fsprogs-1.42.9-13.el7.x86_64 567/1372 + Verifying : 7:device-mapper-libs-1.02.149-10.el7_6.2.x86_64 568/1372 + Verifying : 4:perl-5.16.3-293.el7.x86_64 569/1372 + Verifying : teamd-1.27-5.el7.x86_64 570/1372 + Verifying : mesa-libxatracker-18.0.5-3.el7.x86_64 571/1372 + Verifying : eog-3.28.3-1.el7.x86_64 572/1372 + Verifying : 1:NetworkManager-1.12.0-8.el7_6.x86_64 573/1372 + Verifying : 2:cheese-3.28.0-1.el7.x86_64 574/1372 + Verifying : openscap-scanner-1.2.17-2.el7.x86_64 575/1372 + Verifying : iwl2000-firmware-18.168.6.1-69.el7.noarch 576/1372 + Verifying : setroubleshoot-server-3.2.30-3.el7.x86_64 577/1372 + Verifying : krb5-libs-1.15.1-34.el7.x86_64 578/1372 + Verifying : 1:NetworkManager-adsl-1.12.0-8.el7_6.x86_64 579/1372 + Verifying : geoclue2-libs-2.4.8-1.el7.x86_64 580/1372 + Verifying : samba-common-4.8.3-4.el7.noarch 581/1372 + Verifying : libreport-anaconda-2.1.11-42.el7.centos.x86_64 582/1372 + Verifying : dyninst-9.3.1-2.el7.x86_64 583/1372 + Verifying : libjpeg-turbo-1.2.90-6.el7.x86_64 584/1372 + Verifying : hyperv-daemons-license-0-0.34.20180415git.el7.noarch 585/1372 + Verifying : 1:NetworkManager-tui-1.12.0-8.el7_6.x86_64 586/1372 + Verifying : rpcbind-0.2.0-47.el7.x86_64 587/1372 + Verifying : elfutils-libs-0.172-2.el7.x86_64 588/1372 + Verifying : yum-utils-1.1.31-50.el7.noarch 589/1372 + Verifying : adwaita-gtk2-theme-3.28-2.el7.x86_64 590/1372 + Verifying : gspell-1.6.1-1.el7.x86_64 591/1372 + Verifying : fontconfig-2.13.0-4.3.el7.x86_64 592/1372 + Verifying : 1:grub2-tools-extra-2.02-0.76.el7.centos.x86_64 593/1372 + Verifying : iwl5150-firmware-8.24.2.2-69.el7.noarch 594/1372 + Verifying : strace-4.12-9.el7.x86_64 595/1372 + Verifying : gvfs-client-1.36.2-1.el7.x86_64 596/1372 + Verifying : python-urlgrabber-3.10-9.el7.noarch 597/1372 + Verifying : libblockdev-crypto-2.18-3.el7.x86_64 598/1372 + Verifying : mesa-libglapi-18.0.5-3.el7.x86_64 599/1372 + Verifying : webkitgtk4-plugin-process-gtk2-2.20.5-1.el7.x86_64 600/1372 + Verifying : libwbclient-4.8.3-4.el7.x86_64 601/1372 + Verifying : audit-libs-python-2.8.4-4.el7.x86_64 602/1372 + Verifying : xorg-x11-drv-qxl-0.1.5-4.el7.1.x86_64 603/1372 + Verifying : bolt-0.4-3.el7.x86_64 604/1372 + Verifying : gtk3-3.22.30-3.el7.x86_64 605/1372 + Verifying : certmonger-0.78.4-10.el7.x86_64 606/1372 + Verifying : xorg-x11-xkb-utils-7.7-14.el7.x86_64 607/1372 + Verifying : libreport-python-2.1.11-42.el7.centos.x86_64 608/1372 + Verifying : libvirt-daemon-driver-storage-iscsi-4.5.0-10.el7_6.3.x86_64 609/1372 + Verifying : xfsprogs-4.5.0-18.el7.x86_64 610/1372 + Verifying : cpp-4.8.5-36.el7.x86_64 611/1372 + Verifying : sssd-client-1.16.2-13.el7.x86_64 612/1372 + Verifying : spice-gtk3-0.35-2.el7.x86_64 613/1372 + Verifying : libxcb-devel-1.13-1.el7.x86_64 614/1372 + Verifying : python-libipa_hbac-1.16.2-13.el7.x86_64 615/1372 + Verifying : 2:vim-minimal-7.4.160-5.el7.x86_64 616/1372 + Verifying : llvm-private-6.0.1-2.el7.x86_64 617/1372 + Verifying : 1:xorg-x11-drv-nouveau-1.0.15-1.el7.x86_64 618/1372 + Verifying : kpatch-0.6.1-1.el7.noarch 619/1372 + Verifying : rhythmbox-3.4.2-2.el7.x86_64 620/1372 + Verifying : GeoIP-1.5.0-13.el7.x86_64 621/1372 + Verifying : kmod-kvdo-6.1.1.125-5.el7.x86_64 622/1372 + Verifying : libblockdev-2.18-3.el7.x86_64 623/1372 + Verifying : clutter-gst3-3.0.26-1.el7.x86_64 624/1372 + Verifying : baobab-3.28.0-2.el7.x86_64 625/1372 + Verifying : 1:net-snmp-libs-5.7.2-37.el7.x86_64 626/1372 + Verifying : iwl7265-firmware-22.0.7.0-69.el7.noarch 627/1372 + Verifying : mdadm-4.1-rc1_2.el7.x86_64 628/1372 + Verifying : rfkill-0.4-10.el7.x86_64 629/1372 + Verifying : evolution-data-server-langpacks-3.28.5-1.el7.noarch 630/1372 + Verifying : 1:control-center-3.28.1-4.el7.x86_64 631/1372 + Verifying : libXfont2-2.0.3-1.el7.x86_64 632/1372 + Verifying : systemd-219-62.el7.x86_64 633/1372 + Verifying : nfs4-acl-tools-0.3.3-19.el7.x86_64 634/1372 + Verifying : webkitgtk4-jsc-2.20.5-1.el7.x86_64 635/1372 + Verifying : sssd-proxy-1.16.2-13.el7.x86_64 636/1372 + Verifying : yelp-xsl-3.28.0-1.el7.noarch 637/1372 + Verifying : kernel-tools-libs-3.10.0-957.1.3.el7.x86_64 638/1372 + Verifying : 1:mariadb-libs-5.5.60-1.el7_5.x86_64 639/1372 + Verifying : pykickstart-1.99.66.19-2.el7.noarch 640/1372 + Verifying : libudisks2-2.7.3-8.el7.x86_64 641/1372 + Verifying : libicu-50.1.2-17.el7.x86_64 642/1372 + Verifying : wget-1.14-18.el7.x86_64 643/1372 + Verifying : libcurl-7.29.0-51.el7.x86_64 644/1372 + Verifying : libtirpc-0.2.4-0.15.el7.x86_64 645/1372 + Verifying : libsss_idmap-1.16.2-13.el7.x86_64 646/1372 + Verifying : at-spi2-core-2.28.0-1.el7.x86_64 647/1372 + Verifying : 1:emacs-filesystem-24.3-22.el7.noarch 648/1372 + Verifying : procps-ng-3.3.10-23.el7.x86_64 649/1372 + Verifying : 2:postfix-2.10.1-7.el7.x86_64 650/1372 + Verifying : yum-plugin-fastestmirror-1.1.31-50.el7.noarch 651/1372 + Verifying : PackageKit-gstreamer-plugin-1.1.10-1.el7.centos.x86_64 652/1372 + Verifying : gnome-online-accounts-3.28.0-1.el7.x86_64 653/1372 + Verifying : wodim-1.1.11-25.el7.x86_64 654/1372 + Verifying : xorg-x11-drv-ati-18.0.1-1.el7.x86_64 655/1372 + Verifying : 1:gnome-bluetooth-3.28.2-1.el7.x86_64 656/1372 + Verifying : grilo-plugins-0.3.7-1.el7.x86_64 657/1372 + Verifying : librsvg2-2.40.20-1.el7.x86_64 658/1372 + Verifying : gnome-calculator-3.28.2-1.el7.x86_64 659/1372 + Verifying : crda-3.18_2018.05.31-4.el7.x86_64 660/1372 + Verifying : gucharmap-libs-10.0.4-1.el7.x86_64 661/1372 + Verifying : xorg-x11-proto-devel-2018.4-1.el7.noarch 662/1372 + Verifying : libvirt-daemon-driver-storage-core-4.5.0-10.el7_6.3.x86_64 663/1372 + Verifying : gnome-terminal-3.28.2-2.el7.x86_64 664/1372 + Verifying : iwl6000g2a-firmware-17.168.5.3-69.el7.noarch 665/1372 + Verifying : 1:NetworkManager-glib-1.12.0-8.el7_6.x86_64 666/1372 + Verifying : git-1.8.3.1-20.el7.x86_64 667/1372 + Verifying : flatpak-libs-1.0.2-2.el7.x86_64 668/1372 + Verifying : libblockdev-utils-2.18-3.el7.x86_64 669/1372 + Verifying : 1:python-configshell-1.1.fb23-5.el7.noarch 670/1372 + Verifying : file-roller-nautilus-3.28.1-2.el7.x86_64 671/1372 + Verifying : libreport-filesystem-2.1.11-42.el7.centos.x86_64 672/1372 + Verifying : libsss_certmap-1.16.2-13.el7.x86_64 673/1372 + Verifying : libsmbclient-4.8.3-4.el7.x86_64 674/1372 + Verifying : bash-4.2.46-31.el7.x86_64 675/1372 + Verifying : checkpolicy-2.5-8.el7.x86_64 676/1372 + Verifying : libgudev1-219-62.el7.x86_64 677/1372 + Verifying : iwl105-firmware-18.168.6.1-69.el7.noarch 678/1372 + Verifying : gnome-contacts-3.28.2-1.el7.x86_64 679/1372 + Verifying : anaconda-gui-21.48.22.147-1.el7.centos.x86_64 680/1372 + Verifying : abrt-gui-2.1.11-52.el7.centos.x86_64 681/1372 + Verifying : 7:lvm2-2.02.180-10.el7_6.2.x86_64 682/1372 + Verifying : libstoragemgmt-python-clibs-1.6.2-4.el7.x86_64 683/1372 + Verifying : gcc-4.8.5-36.el7.x86_64 684/1372 + Verifying : xorg-x11-drv-v4l-0.2.0-49.el7.x86_64 685/1372 + Verifying : libcdio-0.92-3.el7.x86_64 686/1372 + Verifying : glade-libs-3.22.1-1.el7.x86_64 687/1372 + Verifying : accountsservice-libs-0.6.50-2.el7.x86_64 688/1372 + Verifying : iwl5000-firmware-8.83.5.1_1-69.el7.noarch 689/1372 + Verifying : man-pages-overrides-7.6.2-1.el7.x86_64 690/1372 + Verifying : rpm-sign-4.11.3-35.el7.x86_64 691/1372 + Verifying : gnome-themes-standard-3.28-2.el7.x86_64 692/1372 + Verifying : 1:python-blivet-0.61.15.72-1.el7.noarch 693/1372 + Verifying : sos-3.6-11.el7.centos.noarch 694/1372 + Verifying : man-db-2.6.3-11.el7.x86_64 695/1372 + Verifying : 1:libglvnd-gles-1.0.1-0.8.git5baa1e5.el7.x86_64 696/1372 + Verifying : libblockdev-swap-2.18-3.el7.x86_64 697/1372 + Verifying : glade-libs-3.20.0-1.el7.x86_64 698/1372 + Verifying : iwl5150-firmware-8.24.2.2-62.el7.noarch 699/1372 + Verifying : libbasicobjects-0.1.1-29.el7.x86_64 700/1372 + Verifying : libgcc-4.8.5-28.el7.x86_64 701/1372 + Verifying : icedax-1.1.11-23.el7.x86_64 702/1372 + Verifying : geocode-glib-3.20.1-1.el7.x86_64 703/1372 + Verifying : systemd-sysv-219-57.el7.x86_64 704/1372 + Verifying : libsss_idmap-1.16.0-19.el7.x86_64 705/1372 + Verifying : glibc-2.17-222.el7.x86_64 706/1372 + Verifying : gvfs-mtp-1.30.4-5.el7.x86_64 707/1372 + Verifying : python2-ipalib-4.5.4-10.el7.centos.noarch 708/1372 + Verifying : python-rtslib-2.1.fb63-5.el7.noarch 709/1372 + Verifying : dosfstools-3.0.20-9.el7.x86_64 710/1372 + Verifying : gssproxy-0.7.0-17.el7.x86_64 711/1372 + Verifying : libsepol-2.5-8.1.el7.x86_64 712/1372 + Verifying : 32:bind-license-9.9.4-61.el7.noarch 713/1372 + Verifying : glib-networking-2.50.0-1.el7.x86_64 714/1372 + Verifying : libvirt-daemon-driver-storage-disk-3.9.0-14.el7.x86_64 715/1372 + Verifying : xorg-x11-drv-evdev-2.10.5-2.1.el7.x86_64 716/1372 + Verifying : wayland-devel-1.14.0-2.el7.x86_64 717/1372 + Verifying : harfbuzz-icu-1.3.2-1.el7.x86_64 718/1372 + Verifying : hypervvssd-0-0.32.20161211git.el7.x86_64 719/1372 + Verifying : procps-ng-3.3.10-17.el7.x86_64 720/1372 + Verifying : libvirt-daemon-driver-storage-gluster-3.9.0-14.el7.x86_64 721/1372 + Verifying : audit-libs-python-2.8.1-3.el7.x86_64 722/1372 + Verifying : rpm-python-4.11.3-32.el7.x86_64 723/1372 + Verifying : iwl6000g2a-firmware-17.168.5.3-62.el7.noarch 724/1372 + Verifying : evolution-data-server-3.22.7-8.el7.x86_64 725/1372 + Verifying : libblockdev-swap-2.12-3.el7.x86_64 726/1372 + Verifying : sssd-ad-1.16.0-19.el7.x86_64 727/1372 + Verifying : wodim-1.1.11-23.el7.x86_64 728/1372 + Verifying : libini_config-1.3.1-29.el7.x86_64 729/1372 + Verifying : xdg-desktop-portal-gtk-0.5-1.el7.x86_64 730/1372 + Verifying : libXfont2-2.0.1-2.el7.x86_64 731/1372 + Verifying : gnome-shell-extension-apps-menu-3.26.2-3.el7.noarch 732/1372 + Verifying : device-mapper-multipath-0.4.9-119.el7.x86_64 733/1372 + Verifying : libteam-1.27-4.el7.x86_64 734/1372 + Verifying : libgudev1-219-57.el7.x86_64 735/1372 + Verifying : libreport-rhel-anaconda-bugzilla-2.1.11-40.el7.centos.x86_64 736/1372 + Verifying : gtk-update-icon-cache-3.22.26-3.el7.x86_64 737/1372 + Verifying : gnome-desktop3-3.22.2-2.el7.x86_64 738/1372 + Verifying : 2:tar-1.26-34.el7.x86_64 739/1372 + Verifying : xorg-x11-drv-vesa-2.3.2-25.1.el7.x86_64 740/1372 + Verifying : evince-nautilus-3.22.1-7.el7.x86_64 741/1372 + Verifying : libvirt-daemon-driver-nodedev-3.9.0-14.el7.x86_64 742/1372 + Verifying : libstdc++-4.8.5-28.el7.x86_64 743/1372 + Verifying : fuse-2.9.2-10.el7.x86_64 744/1372 + Verifying : kexec-tools-2.0.15-13.el7.x86_64 745/1372 + Verifying : PackageKit-glib-1.1.5-1.el7.centos.x86_64 746/1372 + Verifying : libreport-centos-2.1.11-40.el7.centos.x86_64 747/1372 + Verifying : firewalld-0.4.4.4-14.el7.noarch 748/1372 + Verifying : pango-1.40.4-1.el7.x86_64 749/1372 + Verifying : sg3_utils-1.37-12.el7.x86_64 750/1372 + Verifying : libreport-web-2.1.11-40.el7.centos.x86_64 751/1372 + Verifying : libicu-50.1.2-15.el7.x86_64 752/1372 + Verifying : gnome-screenshot-3.22.0-1.el7.x86_64 753/1372 + Verifying : libX11-1.6.5-1.el7.x86_64 754/1372 + Verifying : realmd-0.16.1-9.el7.x86_64 755/1372 + Verifying : 1:nautilus-sendto-3.8.4-1.el7.x86_64 756/1372 + Verifying : gnome-shell-extension-alternate-tab-3.26.2-3.el7.noarch 757/1372 + Verifying : libipa_hbac-1.16.0-19.el7.x86_64 758/1372 + Verifying : anaconda-tui-21.48.22.134-1.el7.centos.x86_64 759/1372 + Verifying : 4:perl-libs-5.16.3-292.el7.x86_64 760/1372 + Verifying : kernel-headers-3.10.0-862.el7.x86_64 761/1372 + Verifying : genisoimage-1.1.11-23.el7.x86_64 762/1372 + Verifying : rpm-build-libs-4.11.3-32.el7.x86_64 763/1372 + Verifying : geoclue2-2.4.5-1.el7.x86_64 764/1372 + Verifying : abrt-addon-xorg-2.1.11-50.el7.centos.x86_64 765/1372 + Verifying : libreswan-3.23-3.el7.x86_64 766/1372 + Verifying : abrt-2.1.11-50.el7.centos.x86_64 767/1372 + Verifying : gnome-contacts-3.22.1-1.el7.x86_64 768/1372 + Verifying : tigervnc-license-1.8.0-5.el7.noarch 769/1372 + Verifying : abrt-retrace-client-2.1.11-50.el7.centos.x86_64 770/1372 + Verifying : imsettings-gsettings-1.6.3-9.el7.x86_64 771/1372 + Verifying : libreport-plugin-ureport-2.1.11-40.el7.centos.x86_64 772/1372 + Verifying : gucharmap-libs-3.18.2-1.el7.x86_64 773/1372 + Verifying : gvfs-goa-1.30.4-5.el7.x86_64 774/1372 + Verifying : 1:control-center-filesystem-3.26.2-8.el7.x86_64 775/1372 + Verifying : at-3.1.13-23.el7.x86_64 776/1372 + Verifying : 1:yelp-3.22.0-1.el7.x86_64 777/1372 + Verifying : samba-client-4.7.1-6.el7.x86_64 778/1372 + Verifying : poppler-glib-0.26.5-17.el7_4.x86_64 779/1372 + Verifying : libstoragemgmt-python-1.6.1-2.el7.noarch 780/1372 + Verifying : ghostscript-9.07-28.el7_4.2.x86_64 781/1372 + Verifying : cairo-gobject-1.14.8-2.el7.x86_64 782/1372 + Verifying : 4:perl-5.16.3-292.el7.x86_64 783/1372 + Verifying : python-2.7.5-68.el7.x86_64 784/1372 + Verifying : kbd-legacy-1.15.5-13.el7.noarch 785/1372 + Verifying : util-linux-2.23.2-52.el7.x86_64 786/1372 + Verifying : nss-3.34.0-4.el7.x86_64 787/1372 + Verifying : libwayland-client-1.14.0-2.el7.x86_64 788/1372 + Verifying : libsmbclient-4.7.1-6.el7.x86_64 789/1372 + Verifying : libsoup-2.56.0-6.el7.x86_64 790/1372 + Verifying : cronie-anacron-1.4.11-19.el7.x86_64 791/1372 + Verifying : 1:librados2-0.94.5-2.el7.x86_64 792/1372 + Verifying : gnome-initial-setup-3.22.1-5.el7.x86_64 793/1372 + Verifying : abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64 794/1372 + Verifying : mutter-3.26.2-13.el7.x86_64 795/1372 + Verifying : xorg-x11-server-Xorg-1.19.5-5.el7.x86_64 796/1372 + Verifying : shotwell-0.24.5-2.el7.x86_64 797/1372 + Verifying : librsvg2-2.40.16-1.el7.x86_64 798/1372 + Verifying : empathy-3.12.12-4.el7.x86_64 799/1372 + Verifying : glusterfs-api-3.8.4-53.el7.centos.x86_64 800/1372 + Verifying : python-libipa_hbac-1.16.0-19.el7.x86_64 801/1372 + Verifying : caribou-0.4.21-1.el7.x86_64 802/1372 + Verifying : 1:NetworkManager-tui-1.10.2-13.el7.x86_64 803/1372 + Verifying : gnome-online-accounts-3.26.2-1.el7.x86_64 804/1372 + Verifying : satyr-0.13-14.el7.x86_64 805/1372 + Verifying : libselinux-utils-2.5-12.el7.x86_64 806/1372 + Verifying : sane-backends-libs-1.0.24-11.el7.x86_64 807/1372 + Verifying : libreport-filesystem-2.1.11-40.el7.centos.x86_64 808/1372 + Verifying : pyatspi-2.20.3-1.el7.noarch 809/1372 + Verifying : appstream-data-7-20170301.el7.noarch 810/1372 + Verifying : nss-softokn-freebl-3.34.0-2.el7.x86_64 811/1372 + Verifying : libvirt-daemon-config-network-3.9.0-14.el7.x86_64 812/1372 + Verifying : gnome-clocks-3.22.1-1.el7.x86_64 813/1372 + Verifying : libtalloc-2.1.10-1.el7.x86_64 814/1372 + Verifying : libical-1.0.1-1.el7.x86_64 815/1372 + Verifying : gnome-disk-utility-3.22.1-1.el7.x86_64 816/1372 + Verifying : elfutils-libelf-0.170-4.el7.x86_64 817/1372 + Verifying : tzdata-java-2018c-1.el7.noarch 818/1372 + Verifying : gvfs-archive-1.30.4-5.el7.x86_64 819/1372 + Verifying : imsettings-1.6.3-9.el7.x86_64 820/1372 + Verifying : python-sss-murmur-1.16.0-19.el7.x86_64 821/1372 + Verifying : cryptsetup-1.7.4-4.el7.x86_64 822/1372 + Verifying : kmod-libs-20-21.el7.x86_64 823/1372 + Verifying : mesa-libGLES-17.2.3-8.20171019.el7.x86_64 824/1372 + Verifying : webkitgtk4-plugin-process-gtk2-2.16.6-6.el7.x86_64 825/1372 + Verifying : yum-plugin-fastestmirror-1.1.31-45.el7.noarch 826/1372 + Verifying : spice-gtk3-0.34-3.el7.x86_64 827/1372 + Verifying : libsss_sudo-1.16.0-19.el7.x86_64 828/1372 + Verifying : gnome-settings-daemon-3.26.2-9.el7.x86_64 829/1372 + Verifying : llvm-private-5.0.0-3.el7.x86_64 830/1372 + Verifying : iwl4965-firmware-228.61.2.24-62.el7.noarch 831/1372 + Verifying : 1:NetworkManager-bluetooth-1.10.2-13.el7.x86_64 832/1372 + Verifying : curl-7.29.0-46.el7.x86_64 833/1372 + Verifying : bison-3.0.4-1.el7.x86_64 834/1372 + Verifying : 2:gedit-3.22.0-3.el7.x86_64 835/1372 + Verifying : 1:perl-Pod-Escapes-1.04-292.el7.noarch 836/1372 + Verifying : firefox-52.7.0-1.el7.centos.x86_64 837/1372 + Verifying : libvirt-daemon-kvm-3.9.0-14.el7.x86_64 838/1372 + Verifying : 1:gdm-3.26.2.1-5.el7.x86_64 839/1372 + Verifying : libwacom-data-0.24-3.el7.noarch 840/1372 + Verifying : libpeas-gtk-1.20.0-1.el7.x86_64 841/1372 + Verifying : gnome-packagekit-3.22.1-2.el7.x86_64 842/1372 + Verifying : libsecret-0.18.5-2.el7.x86_64 843/1372 + Verifying : hyperv-daemons-0-0.32.20161211git.el7.x86_64 844/1372 + Verifying : 1:net-snmp-libs-5.7.2-32.el7.x86_64 845/1372 + Verifying : iptables-1.4.21-24.el7.x86_64 846/1372 + Verifying : libcurl-7.29.0-46.el7.x86_64 847/1372 + Verifying : spice-server-0.14.0-2.el7.x86_64 848/1372 + Verifying : 1:vorbis-tools-1.4.0-12.el7.x86_64 849/1372 + Verifying : python-firewall-0.4.4.4-14.el7.noarch 850/1372 + Verifying : openjpeg-libs-1.5.1-17.el7.x86_64 851/1372 + Verifying : libwnck3-3.20.1-1.el7.x86_64 852/1372 + Verifying : libssh2-1.4.3-10.el7_2.1.x86_64 853/1372 + Verifying : firewalld-filesystem-0.4.4.4-14.el7.noarch 854/1372 + Verifying : pyOpenSSL-0.13.1-3.el7.x86_64 855/1372 + Verifying : elfutils-0.170-4.el7.x86_64 856/1372 + Verifying : libvirt-daemon-driver-storage-3.9.0-14.el7.x86_64 857/1372 + Verifying : libgfortran-4.8.5-28.el7.x86_64 858/1372 + Verifying : abrt-desktop-2.1.11-50.el7.centos.x86_64 859/1372 + Verifying : brasero-libs-3.12.1-2.el7.x86_64 860/1372 + Verifying : fuse-libs-2.9.2-10.el7.x86_64 861/1372 + Verifying : libcgroup-tools-0.41-15.el7.x86_64 862/1372 + Verifying : harfbuzz-1.3.2-1.el7.x86_64 863/1372 + Verifying : kpartx-0.4.9-119.el7.x86_64 864/1372 + Verifying : zlib-1.2.7-17.el7.x86_64 865/1372 + Verifying : wget-1.14-15.el7_4.1.x86_64 866/1372 + Verifying : python-ethtool-0.8-5.el7.x86_64 867/1372 + Verifying : firewall-config-0.4.4.4-14.el7.noarch 868/1372 + Verifying : cronie-1.4.11-19.el7.x86_64 869/1372 + Verifying : GeoIP-1.5.0-11.el7.x86_64 870/1372 + Verifying : spice-glib-0.34-3.el7.x86_64 871/1372 + Verifying : 1:grub2-pc-modules-2.02-0.65.el7.centos.2.noarch 872/1372 + Verifying : targetcli-2.1.fb46-1.el7.noarch 873/1372 + Verifying : libtevent-0.9.33-2.el7.x86_64 874/1372 + Verifying : python2-caribou-0.4.21-1.el7.noarch 875/1372 + Verifying : glibc-devel-2.17-222.el7.x86_64 876/1372 + Verifying : PackageKit-command-not-found-1.1.5-1.el7.centos.x86_64 877/1372 + Verifying : file-roller-3.22.3-1.el7.x86_64 878/1372 + Verifying : 1:iwl1000-firmware-39.31.5.1-62.el7.noarch 879/1372 + Verifying : gnome-keyring-pam-3.20.0-3.el7.x86_64 880/1372 + Verifying : gnome-shell-extension-places-menu-3.26.2-3.el7.noarch 881/1372 + Verifying : certmonger-0.78.4-3.el7.x86_64 882/1372 + Verifying : kpatch-0.4.0-3.el7.noarch 883/1372 + Verifying : 12:dhcp-common-4.2.5-68.el7.centos.x86_64 884/1372 + Verifying : xorg-x11-server-common-1.19.5-5.el7.x86_64 885/1372 + Verifying : gdb-7.6.1-110.el7.x86_64 886/1372 + Verifying : 32:bind-utils-9.9.4-61.el7.x86_64 887/1372 + Verifying : gvfs-1.30.4-5.el7.x86_64 888/1372 + Verifying : gcc-gfortran-4.8.5-28.el7.x86_64 889/1372 + Verifying : caribou-gtk3-module-0.4.21-1.el7.x86_64 890/1372 + Verifying : 1:gnome-bluetooth-3.20.1-1.el7.x86_64 891/1372 + Verifying : net-tools-2.0-0.22.20131004git.el7.x86_64 892/1372 + Verifying : libXfont-1.5.2-1.el7.x86_64 893/1372 + Verifying : mesa-libxatracker-17.2.3-8.20171019.el7.x86_64 894/1372 + Verifying : xfsprogs-4.5.0-15.el7.x86_64 895/1372 + Verifying : sssd-common-pac-1.16.0-19.el7.x86_64 896/1372 + Verifying : motif-2.3.4-12.el7.x86_64 897/1372 + Verifying : rfkill-0.4-9.el7.x86_64 898/1372 + Verifying : upower-0.99.4-2.el7.x86_64 899/1372 + Verifying : gvfs-fuse-1.30.4-5.el7.x86_64 900/1372 + Verifying : nss-softokn-3.34.0-2.el7.x86_64 901/1372 + Verifying : libXres-1.0.7-2.1.el7.x86_64 902/1372 + Verifying : gvfs-gphoto2-1.30.4-5.el7.x86_64 903/1372 + Verifying : file-roller-nautilus-3.22.3-1.el7.x86_64 904/1372 + Verifying : libkadm5-1.15.1-18.el7.x86_64 905/1372 + Verifying : libvirt-libs-3.9.0-14.el7.x86_64 906/1372 + Verifying : 10:qemu-guest-agent-2.8.0-2.el7.x86_64 907/1372 + Verifying : xorg-x11-drv-intel-2.99.917-27.20160929.el7.x86_64 908/1372 + Verifying : open-vm-tools-10.1.10-3.el7.x86_64 909/1372 + Verifying : iwl2000-firmware-18.168.6.1-62.el7.noarch 910/1372 + Verifying : evince-libs-3.22.1-7.el7.x86_64 911/1372 + Verifying : adcli-0.8.1-4.el7.x86_64 912/1372 + Verifying : gnome-packagekit-installer-3.22.1-2.el7.x86_64 913/1372 + Verifying : gvfs-smb-1.30.4-5.el7.x86_64 914/1372 + Verifying : 2:nmap-ncat-6.40-13.el7.x86_64 915/1372 + Verifying : git-1.8.3.1-13.el7.x86_64 916/1372 + Verifying : dyninst-9.3.1-1.el7.x86_64 917/1372 + Verifying : gom-0.3.2-1.el7.x86_64 918/1372 + Verifying : gnome-font-viewer-3.22.0-1.el7.x86_64 919/1372 + Verifying : gvfs-afp-1.30.4-5.el7.x86_64 920/1372 + Verifying : abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64 921/1372 + Verifying : xorg-x11-drv-wacom-0.34.2-4.el7.x86_64 922/1372 + Verifying : xorg-x11-drv-v4l-0.2.0-47.el7.x86_64 923/1372 + Verifying : python-libs-2.7.5-68.el7.x86_64 924/1372 + Verifying : eog-3.20.5-2.el7.x86_64 925/1372 + Verifying : polkit-0.112-14.el7.x86_64 926/1372 + Verifying : flatpak-libs-0.8.8-3.el7.x86_64 927/1372 + Verifying : libmediaart-1.9.1-1.el7.x86_64 928/1372 + Verifying : libusal-1.1.11-23.el7.x86_64 929/1372 + Verifying : sssd-krb5-1.16.0-19.el7.x86_64 930/1372 + Verifying : rpm-sign-4.11.3-32.el7.x86_64 931/1372 + Verifying : abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64 932/1372 + Verifying : 1:java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.el7.x86_64 933/1372 + Verifying : 2:vim-common-7.4.160-4.el7.x86_64 934/1372 + Verifying : iscsi-initiator-utils-iscsiuio-6.2.0.874-7.el7.x86_64 935/1372 + Verifying : gnupg2-2.0.22-4.el7.x86_64 936/1372 + Verifying : gnome-shell-extension-common-3.26.2-3.el7.noarch 937/1372 + Verifying : iwl100-firmware-39.31.5.1-62.el7.noarch 938/1372 + Verifying : gnome-user-docs-3.22.0-1.el7.noarch 939/1372 + Verifying : gnome-packagekit-common-3.22.1-2.el7.x86_64 940/1372 + Verifying : libfprint-0.5.0-4.el7.x86_64 941/1372 + Verifying : accountsservice-0.6.45-7.el7.x86_64 942/1372 + Verifying : alsa-utils-1.1.3-2.el7.x86_64 943/1372 + Verifying : libjpeg-turbo-1.2.90-5.el7.x86_64 944/1372 + Verifying : anaconda-core-21.48.22.134-1.el7.centos.x86_64 945/1372 + Verifying : libreport-gtk-2.1.11-40.el7.centos.x86_64 946/1372 + Verifying : libudisks2-2.7.3-6.el7.x86_64 947/1372 + Verifying : 1:NetworkManager-team-1.10.2-13.el7.x86_64 948/1372 + Verifying : grilo-0.3.3-1.el7.x86_64 949/1372 + Verifying : redhat-rpm-config-9.1.0-80.el7.centos.noarch 950/1372 + Verifying : nspr-4.17.0-1.el7.x86_64 951/1372 + Verifying : glibmm24-2.50.0-1.el7.x86_64 952/1372 + Verifying : clutter-gst3-3.0.22-1.el7.x86_64 953/1372 + Verifying : gcr-3.20.0-1.el7.x86_64 954/1372 + Verifying : abrt-dbus-2.1.11-50.el7.centos.x86_64 955/1372 + Verifying : systemtap-devel-3.2-4.el7.x86_64 956/1372 + Verifying : xorg-x11-drv-synaptics-1.9.0-1.el7.x86_64 957/1372 + Verifying : krb5-workstation-1.15.1-18.el7.x86_64 958/1372 + Verifying : gnome-boxes-3.22.4-4.el7.x86_64 959/1372 + Verifying : libgxps-0.2.5-1.el7.x86_64 960/1372 + Verifying : man-pages-overrides-7.5.2-1.el7.x86_64 961/1372 + Verifying : libblockdev-loop-2.12-3.el7.x86_64 962/1372 + Verifying : 1:dmidecode-3.0-5.el7.x86_64 963/1372 + Verifying : iwl5000-firmware-8.83.5.1_1-62.el7.noarch 964/1372 + Verifying : vte291-0.46.2-1.el7.x86_64 965/1372 + Verifying : glusterfs-libs-3.8.4-53.el7.centos.x86_64 966/1372 + Verifying : 1:mariadb-libs-5.5.56-2.el7.x86_64 967/1372 + Verifying : yelp-xsl-3.20.1-1.el7.noarch 968/1372 + Verifying : scl-utils-20130529-18.el7_4.x86_64 969/1372 + Verifying : libgomp-4.8.5-28.el7.x86_64 970/1372 + Verifying : dconf-0.26.0-2.el7.x86_64 971/1372 + Verifying : PackageKit-gstreamer-plugin-1.1.5-1.el7.centos.x86_64 972/1372 + Verifying : selinux-policy-targeted-3.13.1-192.el7.noarch 973/1372 + Verifying : 1:python-configshell-1.1.fb23-3.el7.noarch 974/1372 + Verifying : grilo-plugins-0.3.4-3.el7.x86_64 975/1372 + Verifying : vino-3.22.0-3.el7.x86_64 976/1372 + Verifying : abrt-cli-2.1.11-50.el7.centos.x86_64 977/1372 + Verifying : nss-util-3.34.0-2.el7.x86_64 978/1372 + Verifying : webkitgtk4-jsc-2.16.6-6.el7.x86_64 979/1372 + Verifying : 7:device-mapper-libs-1.02.146-4.el7.x86_64 980/1372 + Verifying : brasero-3.12.1-2.el7.x86_64 981/1372 + Verifying : iwl3160-firmware-22.0.7.0-62.el7.noarch 982/1372 + Verifying : libreport-anaconda-2.1.11-40.el7.centos.x86_64 983/1372 + Verifying : libxcb-1.12-1.el7.x86_64 984/1372 + Verifying : pcsc-lite-libs-1.8.8-7.el7.x86_64 985/1372 + Verifying : coreutils-8.22-21.el7.x86_64 986/1372 + Verifying : initscripts-9.49.41-1.el7.x86_64 987/1372 + Verifying : ca-certificates-2017.2.20-71.el7.noarch 988/1372 + Verifying : libblockdev-mdraid-2.12-3.el7.x86_64 989/1372 + Verifying : adwaita-cursor-theme-3.26.0-1.el7.noarch 990/1372 + Verifying : libgweather-3.26.0-1.el7.x86_64 991/1372 + Verifying : zenity-3.22.0-1.el7.x86_64 992/1372 + Verifying : xkeyboard-config-2.20-1.el7.noarch 993/1372 + Verifying : jasper-libs-1.900.1-31.el7.x86_64 994/1372 + Verifying : rdma-core-15-6.el7.x86_64 995/1372 + Verifying : setroubleshoot-3.2.29-3.el7.x86_64 996/1372 + Verifying : nfs4-acl-tools-0.3.3-17.el7.x86_64 997/1372 + Verifying : fprintd-pam-0.5.0-4.0.el7_0.x86_64 998/1372 + Verifying : glibc-common-2.17-222.el7.x86_64 999/1372 + Verifying : selinux-policy-3.13.1-192.el7.noarch 1000/1372 + Verifying : gnome-session-xsession-3.26.1-11.el7.x86_64 1001/1372 + Verifying : atk-2.22.0-3.el7.x86_64 1002/1372 + Verifying : hypervfcopyd-0-0.32.20161211git.el7.x86_64 1003/1372 + Verifying : abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64 1004/1372 + Verifying : gjs-1.50.4-4.el7.x86_64 1005/1372 + Verifying : kernel-tools-3.10.0-862.el7.x86_64 1006/1372 + Verifying : geoclue2-libs-2.4.5-1.el7.x86_64 1007/1372 + Verifying : libXcursor-1.1.14-8.el7.x86_64 1008/1372 + Verifying : flex-2.5.37-3.el7.x86_64 1009/1372 + Verifying : gnome-terminal-nautilus-3.22.1-2.el7.x86_64 1010/1372 + Verifying : 2:shadow-utils-4.1.5.1-24.el7.x86_64 1011/1372 + Verifying : 1:java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64 1012/1372 + Verifying : yum-utils-1.1.31-45.el7.noarch 1013/1372 + Verifying : libstdc++-devel-4.8.5-28.el7.x86_64 1014/1372 + Verifying : libref_array-0.1.5-29.el7.x86_64 1015/1372 + Verifying : sssd-common-1.16.0-19.el7.x86_64 1016/1372 + Verifying : vdo-6.1.0.149-16.x86_64 1017/1372 + Verifying : 1:grub2-common-2.02-0.65.el7.centos.2.noarch 1018/1372 + Verifying : libpeas-loader-python-1.20.0-1.el7.x86_64 1019/1372 + Verifying : dracut-033-535.el7.x86_64 1020/1372 + Verifying : libvirt-daemon-driver-network-3.9.0-14.el7.x86_64 1021/1372 + Verifying : brasero-nautilus-3.12.1-2.el7.x86_64 1022/1372 + Verifying : logrotate-3.8.6-15.el7.x86_64 1023/1372 + Verifying : libchamplain-gtk-0.12.15-1.el7.x86_64 1024/1372 + Verifying : systemtap-3.2-4.el7.x86_64 1025/1372 + Verifying : 7:device-mapper-1.02.146-4.el7.x86_64 1026/1372 + Verifying : abrt-console-notification-2.1.11-50.el7.centos.x86_64 1027/1372 + Verifying : libcollection-0.7.0-29.el7.x86_64 1028/1372 + Verifying : tuned-2.9.0-1.el7.noarch 1029/1372 + Verifying : 1:openssl-1.0.2k-12.el7.x86_64 1030/1372 + Verifying : libquadmath-devel-4.8.5-28.el7.x86_64 1031/1372 + Verifying : gnome-shell-extension-top-icons-3.26.2-3.el7.noarch 1032/1372 + Verifying : libuuid-2.23.2-52.el7.x86_64 1033/1372 + Verifying : ledmon-0.80-2.el7.x86_64 1034/1372 + Verifying : 1:NetworkManager-glib-1.10.2-13.el7.x86_64 1035/1372 + Verifying : setup-2.8.71-9.el7.noarch 1036/1372 + Verifying : ipset-libs-6.29-1.el7.x86_64 1037/1372 + Verifying : yum-3.4.3-158.el7.centos.noarch 1038/1372 + Verifying : cryptsetup-python-1.7.4-4.el7.x86_64 1039/1372 + Verifying : elfutils-libs-0.170-4.el7.x86_64 1040/1372 + Verifying : gnutls-3.3.26-9.el7.x86_64 1041/1372 + Verifying : gstreamer1-plugins-base-1.10.4-1.el7.x86_64 1042/1372 + Verifying : openscap-scanner-1.2.16-6.el7.x86_64 1043/1372 + Verifying : libappstream-glib-0.6.10-1.el7.x86_64 1044/1372 + Verifying : mesa-dri-drivers-17.2.3-8.20171019.el7.x86_64 1045/1372 + Verifying : openscap-1.2.16-6.el7.x86_64 1046/1372 + Verifying : xorg-x11-drv-vmware-13.2.1-1.el7.x86_64 1047/1372 + Verifying : 10:qemu-kvm-common-1.5.3-156.el7.x86_64 1048/1372 + Verifying : man-db-2.6.3-9.el7.x86_64 1049/1372 + Verifying : 12:dhcp-libs-4.2.5-68.el7.centos.x86_64 1050/1372 + Verifying : sssd-client-1.16.0-19.el7.x86_64 1051/1372 + Verifying : systemd-libs-219-57.el7.x86_64 1052/1372 + Verifying : libvirt-daemon-driver-qemu-3.9.0-14.el7.x86_64 1053/1372 + Verifying : libgovirt-0.3.3-6.el7.x86_64 1054/1372 + Verifying : libosinfo-1.0.0-1.el7.x86_64 1055/1372 + Verifying : iw-4.3-1.el7.x86_64 1056/1372 + Verifying : kmod-kvdo-6.1.0.153-15.el7.x86_64 1057/1372 + Verifying : linux-firmware-20180220-62.git6d51311.el7.noarch 1058/1372 + Verifying : iwl7265-firmware-22.0.7.0-62.el7.noarch 1059/1372 + Verifying : libmspack-0.5-0.5.alpha.el7.x86_64 1060/1372 + Verifying : libreport-python-2.1.11-40.el7.centos.x86_64 1061/1372 + Verifying : sssd-krb5-common-1.16.0-19.el7.x86_64 1062/1372 + Verifying : kbd-misc-1.15.5-13.el7.noarch 1063/1372 + Verifying : checkpolicy-2.5-6.el7.x86_64 1064/1372 + Verifying : gtksourceview3-3.22.2-1.el7.x86_64 1065/1372 + Verifying : sg3_utils-libs-1.37-12.el7.x86_64 1066/1372 + Verifying : libvirt-daemon-driver-storage-scsi-3.9.0-14.el7.x86_64 1067/1372 + Verifying : binutils-2.27-27.base.el7.x86_64 1068/1372 + Verifying : elfutils-default-yama-scope-0.170-4.el7.noarch 1069/1372 + Verifying : 1:NetworkManager-wwan-1.10.2-13.el7.x86_64 1070/1372 + Verifying : iwl105-firmware-18.168.6.1-62.el7.noarch 1071/1372 + Verifying : libpath_utils-0.2.1-29.el7.x86_64 1072/1372 + Verifying : libwacom-0.24-3.el7.x86_64 1073/1372 + Verifying : osinfo-db-20170813-6.el7.noarch 1074/1372 + Verifying : gnome-classic-session-3.26.2-3.el7.noarch 1075/1372 + Verifying : libgnomekbd-3.22.0.1-1.el7.x86_64 1076/1372 + Verifying : gnome-shell-3.26.2-5.el7.x86_64 1077/1372 + Verifying : setools-libs-3.3.8-2.el7.x86_64 1078/1372 + Verifying : sssd-proxy-1.16.0-19.el7.x86_64 1079/1372 + Verifying : 1:gnome-bluetooth-libs-3.20.1-1.el7.x86_64 1080/1372 + Verifying : python-linux-procfs-0.4.9-3.el7.noarch 1081/1372 + Verifying : sos-3.5-6.el7.centos.noarch 1082/1372 + Verifying : radvd-1.9.2-9.el7.x86_64 1083/1372 + Verifying : 1:grub2-pc-2.02-0.65.el7.centos.2.x86_64 1084/1372 + Verifying : libstoragemgmt-1.6.1-2.el7.x86_64 1085/1372 + Verifying : freetype-2.4.11-15.el7.x86_64 1086/1372 + Verifying : libblockdev-fs-2.12-3.el7.x86_64 1087/1372 + Verifying : xdg-desktop-portal-0.5-2.el7.x86_64 1088/1372 + Verifying : setroubleshoot-plugins-3.0.66-2.1.el7.noarch 1089/1372 + Verifying : glx-utils-8.2.0-3.el7.x86_64 1090/1372 + Verifying : xorg-x11-drv-qxl-0.1.5-3.el7.x86_64 1091/1372 + Verifying : dnsmasq-2.76-5.el7.x86_64 1092/1372 + Verifying : libreport-2.1.11-40.el7.centos.x86_64 1093/1372 + Verifying : libdrm-2.4.83-2.el7.x86_64 1094/1372 + Verifying : flatpak-0.8.8-3.el7.x86_64 1095/1372 + Verifying : samba-common-4.7.1-6.el7.noarch 1096/1372 + Verifying : patch-2.7.1-8.el7.x86_64 1097/1372 + Verifying : 7:device-mapper-event-libs-1.02.146-4.el7.x86_64 1098/1372 + Verifying : python-sssdconfig-1.16.0-19.el7.noarch 1099/1372 + Verifying : gvfs-client-1.30.4-5.el7.x86_64 1100/1372 + Verifying : crash-7.2.0-6.el7.x86_64 1101/1372 + Verifying : sushi-3.21.91-1.el7.x86_64 1102/1372 + Verifying : 1:folks-0.11.3-1.el7.x86_64 1103/1372 + Verifying : 1:control-center-3.26.2-8.el7.x86_64 1104/1372 + Verifying : setroubleshoot-server-3.2.29-3.el7.x86_64 1105/1372 + Verifying : gsettings-desktop-schemas-3.24.1-1.el7.x86_64 1106/1372 + Verifying : e2fsprogs-libs-1.42.9-11.el7.x86_64 1107/1372 + Verifying : 1:totem-nautilus-3.22.1-1.el7.x86_64 1108/1372 + Verifying : 1:nfs-utils-1.3.0-0.54.el7.x86_64 1109/1372 + Verifying : libepoxy-1.3.1-1.el7.x86_64 1110/1372 + Verifying : kernel-tools-libs-3.10.0-862.el7.x86_64 1111/1372 + Verifying : 1:libvorbis-1.3.3-8.el7.x86_64 1112/1372 + Verifying : at-spi2-core-2.22.0-1.el7.x86_64 1113/1372 + Verifying : 1:xorg-x11-drv-nouveau-1.0.13-3.el7.x86_64 1114/1372 + Verifying : gdisk-0.8.6-5.el7.x86_64 1115/1372 + Verifying : libldb-1.2.2-1.el7.x86_64 1116/1372 + Verifying : sysstat-10.1.5-13.el7.x86_64 1117/1372 + Verifying : evince-3.22.1-7.el7.x86_64 1118/1372 + Verifying : gnome-shell-extension-launch-new-instance-3.26.2-3.el7.noarch 1119/1372 + Verifying : mesa-libGL-17.2.3-8.20171019.el7.x86_64 1120/1372 + Verifying : libselinux-2.5-12.el7.x86_64 1121/1372 + Verifying : gnome-keyring-3.20.0-3.el7.x86_64 1122/1372 + Verifying : gnome-dictionary-3.20.0-1.el7.x86_64 1123/1372 + Verifying : 1:wpa_supplicant-2.6-9.el7.x86_64 1124/1372 + Verifying : libpeas-1.20.0-1.el7.x86_64 1125/1372 + Verifying : libvirt-daemon-driver-storage-mpath-3.9.0-14.el7.x86_64 1126/1372 + Verifying : json-glib-1.2.6-1.el7.x86_64 1127/1372 + Verifying : libinput-1.8.4-2.el7.x86_64 1128/1372 + Verifying : 1:NetworkManager-adsl-1.10.2-13.el7.x86_64 1129/1372 + Verifying : 1:grub2-tools-extra-2.02-0.65.el7.centos.2.x86_64 1130/1372 + Verifying : xorg-x11-utils-7.5-22.el7.x86_64 1131/1372 + Verifying : 1:grub2-2.02-0.65.el7.centos.2.x86_64 1132/1372 + Verifying : sssd-1.16.0-19.el7.x86_64 1133/1372 + Verifying : xorg-x11-xkb-utils-7.7-12.el7.x86_64 1134/1372 + Verifying : file-libs-5.11-33.el7.x86_64 1135/1372 + Verifying : grubby-8.28-23.el7.x86_64 1136/1372 + Verifying : xorg-x11-drv-vmmouse-13.1.0-1.el7.x86_64 1137/1372 + Verifying : libvirt-daemon-driver-nwfilter-3.9.0-14.el7.x86_64 1138/1372 + Verifying : rest-0.8.0-2.el7.x86_64 1139/1372 + Verifying : dracut-network-033-535.el7.x86_64 1140/1372 + Verifying : systemd-python-219-57.el7.x86_64 1141/1372 + Verifying : libcroco-0.6.11-1.el7.x86_64 1142/1372 + Verifying : strace-4.12-6.el7.x86_64 1143/1372 + Verifying : 1:dbus-libs-1.10.24-7.el7.x86_64 1144/1372 + Verifying : libvirt-daemon-driver-storage-rbd-3.9.0-14.el7.x86_64 1145/1372 + Verifying : libgee-0.18.1-1.el7.x86_64 1146/1372 + Verifying : libsss_certmap-1.16.0-19.el7.x86_64 1147/1372 + Verifying : 2:vim-minimal-7.4.160-4.el7.x86_64 1148/1372 + Verifying : xorg-x11-drv-ati-7.10.0-1.el7.x86_64 1149/1372 + Verifying : 1:NetworkManager-1.10.2-13.el7.x86_64 1150/1372 + Verifying : 2:vim-enhanced-7.4.160-4.el7.x86_64 1151/1372 + Verifying : bash-4.2.46-30.el7.x86_64 1152/1372 + Verifying : rng-tools-5-13.el7.x86_64 1153/1372 + Verifying : 1:dbus-x11-1.10.24-7.el7.x86_64 1154/1372 + Verifying : file-5.11-33.el7.x86_64 1155/1372 + Verifying : gupnp-1.0.1-1.el7.x86_64 1156/1372 + Verifying : gnome-tweak-tool-3.22.0-1.el7.noarch 1157/1372 + Verifying : kmod-20-21.el7.x86_64 1158/1372 + Verifying : cpp-4.8.5-28.el7.x86_64 1159/1372 + Verifying : gnome-shell-extension-user-theme-3.26.2-3.el7.noarch 1160/1372 + Verifying : libwayland-server-1.14.0-2.el7.x86_64 1161/1372 + Verifying : mesa-filesystem-17.2.3-8.20171019.el7.x86_64 1162/1372 + Verifying : libss-1.42.9-11.el7.x86_64 1163/1372 + Verifying : xorg-x11-drv-dummy-0.3.7-1.el7.x86_64 1164/1372 + Verifying : gtk3-immodule-xim-3.22.26-3.el7.x86_64 1165/1372 + Verifying : gssdp-1.0.1-1.el7.x86_64 1166/1372 + Verifying : 1:totem-3.22.1-1.el7.x86_64 1167/1372 + Verifying : lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.x86_64 1168/1372 + Verifying : copy-jdk-configs-3.3-2.el7.noarch 1169/1372 + Verifying : webkitgtk4-2.16.6-6.el7.x86_64 1170/1372 + Verifying : abrt-gui-2.1.11-50.el7.centos.x86_64 1171/1372 + Verifying : libvirt-daemon-driver-storage-core-3.9.0-14.el7.x86_64 1172/1372 + Verifying : PackageKit-1.1.5-1.el7.centos.x86_64 1173/1372 + Verifying : gnome-software-3.22.7-5.el7.x86_64 1174/1372 + Verifying : iwl6050-firmware-41.28.5.1-62.el7.noarch 1175/1372 + Verifying : 7:device-mapper-event-1.02.146-4.el7.x86_64 1176/1372 + Verifying : 1:NetworkManager-ppp-1.10.2-13.el7.x86_64 1177/1372 + Verifying : libsss_autofs-1.16.0-19.el7.x86_64 1178/1372 + Verifying : 1:xorg-x11-font-utils-7.5-20.el7.x86_64 1179/1372 + Verifying : nss-pem-1.0.3-4.el7.x86_64 1180/1372 + Verifying : mesa-libwayland-egl-17.2.3-8.20171019.el7.x86_64 1181/1372 + Verifying : ipa-client-common-4.5.4-10.el7.centos.noarch 1182/1372 + Verifying : udisks2-2.7.3-6.el7.x86_64 1183/1372 + Verifying : gnome-shell-extension-window-list-3.26.2-3.el7.noarch 1184/1372 + Verifying : iwl2030-firmware-18.168.6.1-62.el7.noarch 1185/1372 + Verifying : caribou-gtk2-module-0.4.21-1.el7.x86_64 1186/1372 + Verifying : libX11-common-1.6.5-1.el7.noarch 1187/1372 + Verifying : 1:grub2-tools-2.02-0.65.el7.centos.2.x86_64 1188/1372 + Verifying : PackageKit-gtk3-module-1.1.5-1.el7.centos.x86_64 1189/1372 + Verifying : sudo-1.8.19p2-13.el7.x86_64 1190/1372 + Verifying : 1:python-blivet-0.61.15.69-1.el7.noarch 1191/1372 + Verifying : systemtap-runtime-3.2-4.el7.x86_64 1192/1372 + Verifying : libblkid-2.23.2-52.el7.x86_64 1193/1372 + Verifying : 1:dbus-1.10.24-7.el7.x86_64 1194/1372 + Verifying : e2fsprogs-1.42.9-11.el7.x86_64 1195/1372 + Verifying : libsemanage-python-2.5-11.el7.x86_64 1196/1372 + Verifying : abrt-addon-python-2.1.11-50.el7.centos.x86_64 1197/1372 + Verifying : libblockdev-part-2.12-3.el7.x86_64 1198/1372 + Verifying : poppler-0.26.5-17.el7_4.x86_64 1199/1372 + Verifying : totem-pl-parser-3.10.7-1.el7.x86_64 1200/1372 + Verifying : gnome-system-monitor-3.22.2-3.el7.x86_64 1201/1372 + Verifying : python2-ipaclient-4.5.4-10.el7.centos.noarch 1202/1372 + Verifying : gcc-c++-4.8.5-28.el7.x86_64 1203/1372 + Verifying : mesa-libgbm-17.2.3-8.20171019.el7.x86_64 1204/1372 + Verifying : 10:qemu-img-1.5.3-156.el7.x86_64 1205/1372 + Verifying : 2:ethtool-4.8-7.el7.x86_64 1206/1372 + Verifying : imsettings-libs-1.6.3-9.el7.x86_64 1207/1372 + Verifying : gucharmap-3.18.2-1.el7.x86_64 1208/1372 + Verifying : libmount-2.23.2-52.el7.x86_64 1209/1372 + Verifying : audit-2.8.1-3.el7.x86_64 1210/1372 + Verifying : rpm-build-4.11.3-32.el7.x86_64 1211/1372 + Verifying : alsa-lib-1.1.4.1-2.el7.x86_64 1212/1372 + Verifying : glusterfs-fuse-3.8.4-53.el7.centos.x86_64 1213/1372 + Verifying : mokutil-12-1.el7.centos.x86_64 1214/1372 + Verifying : 1:librbd1-0.94.5-2.el7.x86_64 1215/1372 + Verifying : fprintd-0.5.0-4.0.el7_0.x86_64 1216/1372 + Verifying : 1:NetworkManager-wifi-1.10.2-13.el7.x86_64 1217/1372 + Verifying : crda-3.13_2016.02.08-1.el7.x86_64 1218/1372 + Verifying : anaconda-gui-21.48.22.134-1.el7.centos.x86_64 1219/1372 + Verifying : sssd-ipa-1.16.0-19.el7.x86_64 1220/1372 + Verifying : 2:vim-filesystem-7.4.160-4.el7.x86_64 1221/1372 + Verifying : at-spi2-atk-2.22.0-2.el7.x86_64 1222/1372 + Verifying : 1:grub2-tools-minimal-2.02-0.65.el7.centos.2.x86_64 1223/1372 + Verifying : 1:java-1.8.0-openjdk-headless-1.8.0.161-2.b14.el7.x86_64 1224/1372 + Verifying : libchamplain-0.12.15-1.el7.x86_64 1225/1372 + Verifying : efivar-libs-31-4.el7.x86_64 1226/1372 + Verifying : libblockdev-2.12-3.el7.x86_64 1227/1372 + Verifying : libtirpc-0.2.4-0.10.el7.x86_64 1228/1372 + Verifying : libstoragemgmt-python-clibs-1.6.1-2.el7.x86_64 1229/1372 + Verifying : libblockdev-utils-2.12-3.el7.x86_64 1230/1372 + Verifying : glibc-headers-2.17-222.el7.x86_64 1231/1372 + Verifying : perl-Git-1.8.3.1-13.el7.noarch 1232/1372 + Verifying : cairo-1.14.8-2.el7.x86_64 1233/1372 + Verifying : gnome-terminal-3.22.1-2.el7.x86_64 1234/1372 + Verifying : 7:lvm2-2.02.177-4.el7.x86_64 1235/1372 + Verifying : libwbclient-4.7.1-6.el7.x86_64 1236/1372 + Verifying : rpm-libs-4.11.3-32.el7.x86_64 1237/1372 + Verifying : hypervkvpd-0-0.32.20161211git.el7.x86_64 1238/1372 + Verifying : libselinux-python-2.5-12.el7.x86_64 1239/1372 + Verifying : nss-sysinit-3.34.0-4.el7.x86_64 1240/1372 + Verifying : poppler-utils-0.26.5-17.el7_4.x86_64 1241/1372 + Verifying : iwl6000g2b-firmware-17.168.5.2-62.el7.noarch 1242/1372 + Verifying : libblockdev-crypto-2.12-3.el7.x86_64 1243/1372 + Verifying : gnome-color-manager-3.22.2-2.el7.x86_64 1244/1372 + Verifying : lsof-4.87-5.el7.x86_64 1245/1372 + Verifying : gobject-introspection-1.50.0-1.el7.x86_64 1246/1372 + Verifying : libibverbs-15-6.el7.x86_64 1247/1372 + Verifying : tzdata-2018c-1.el7.noarch 1248/1372 + Verifying : libvirt-daemon-driver-interface-3.9.0-14.el7.x86_64 1249/1372 + Verifying : mdadm-4.0-13.el7.x86_64 1250/1372 + Verifying : 1:autofs-5.0.7-83.el7.x86_64 1251/1372 + Verifying : sssd-ldap-1.16.0-19.el7.x86_64 1252/1372 + Verifying : baobab-3.22.1-1.el7.x86_64 1253/1372 + Verifying : libcom_err-1.42.9-11.el7.x86_64 1254/1372 + Verifying : 1:openssl-libs-1.0.2k-12.el7.x86_64 1255/1372 + Verifying : scap-security-guide-0.1.36-7.el7.centos.noarch 1256/1372 + Verifying : 2:cheese-3.22.1-2.el7.x86_64 1257/1372 + Verifying : libvirt-daemon-driver-storage-iscsi-3.9.0-14.el7.x86_64 1258/1372 + Verifying : gnome-themes-standard-3.22.2-1.el7.x86_64 1259/1372 + Verifying : iwl3945-firmware-15.32.2.9-62.el7.noarch 1260/1372 + Verifying : fontconfig-2.10.95-11.el7.x86_64 1261/1372 + Verifying : ghostscript-cups-9.07-28.el7_4.2.x86_64 1262/1372 + Verifying : 7:lvm2-libs-2.02.177-4.el7.x86_64 1263/1372 + Verifying : rsyslog-8.24.0-16.el7.x86_64 1264/1372 + Verifying : mesa-libglapi-17.2.3-8.20171019.el7.x86_64 1265/1372 + Verifying : hyperv-daemons-license-0-0.32.20161211git.el7.noarch 1266/1372 + Verifying : glusterfs-client-xlators-3.8.4-53.el7.centos.x86_64 1267/1372 + Verifying : 4:perl-macros-5.16.3-292.el7.x86_64 1268/1372 + Verifying : gvfs-afc-1.30.4-5.el7.x86_64 1269/1372 + Verifying : libdhash-0.5.0-29.el7.x86_64 1270/1372 + Verifying : glusterfs-cli-3.8.4-53.el7.centos.x86_64 1271/1372 + Verifying : dracut-config-rescue-033-535.el7.x86_64 1272/1372 + Verifying : python-perf-3.10.0-862.el7.x86_64 1273/1372 + Verifying : libreport-plugin-reportuploader-2.1.11-40.el7.centos.x86_64 1274/1372 + Verifying : spice-vdagent-0.14.0-15.el7.x86_64 1275/1372 + Verifying : nautilus-extensions-3.22.3-5.el7.x86_64 1276/1372 + Verifying : kbd-1.15.5-13.el7.x86_64 1277/1372 + Verifying : tigervnc-server-minimal-1.8.0-5.el7.x86_64 1278/1372 + Verifying : samba-client-libs-4.7.1-6.el7.x86_64 1279/1372 + Verifying : PackageKit-yum-1.1.5-1.el7.centos.x86_64 1280/1372 + Verifying : alsa-plugins-pulseaudio-1.1.1-1.el7.x86_64 1281/1372 + Verifying : xorg-x11-drv-void-1.4.1-2.el7.x86_64 1282/1372 + Verifying : gdk-pixbuf2-2.36.5-1.el7.x86_64 1283/1372 + Verifying : 1:findutils-4.5.11-5.el7.x86_64 1284/1372 + Verifying : abrt-libs-2.1.11-50.el7.centos.x86_64 1285/1372 + Verifying : abrt-gui-libs-2.1.11-50.el7.centos.x86_64 1286/1372 + Verifying : teamd-1.27-4.el7.x86_64 1287/1372 + Verifying : abrt-tui-2.1.11-50.el7.centos.x86_64 1288/1372 + Verifying : 12:dhclient-4.2.5-68.el7.centos.x86_64 1289/1372 + Verifying : 32:bind-libs-9.9.4-61.el7.x86_64 1290/1372 + Verifying : iwl6000-firmware-9.221.4.1-62.el7.noarch 1291/1372 + Verifying : ipset-6.29-1.el7.x86_64 1292/1372 + Verifying : libgexiv2-0.10.4-4.el7.x86_64 1293/1372 + Verifying : samba-common-libs-4.7.1-6.el7.x86_64 1294/1372 + Verifying : policycoreutils-python-2.5-22.el7.x86_64 1295/1372 + Verifying : pykickstart-1.99.66.18-1.el7.noarch 1296/1372 + Verifying : libvirt-daemon-3.9.0-14.el7.x86_64 1297/1372 + Verifying : 1:emacs-filesystem-24.3-20.el7_4.noarch 1298/1372 + Verifying : 2:cheese-libs-3.22.1-2.el7.x86_64 1299/1372 + Verifying : libreport-plugin-mantisbt-2.1.11-40.el7.centos.x86_64 1300/1372 + Verifying : gnome-packagekit-updater-3.22.1-2.el7.x86_64 1301/1372 + Verifying : librdmacm-15-6.el7.x86_64 1302/1372 + Verifying : ipa-client-4.5.4-10.el7.centos.x86_64 1303/1372 + Verifying : systemtap-client-3.2-4.el7.x86_64 1304/1372 + Verifying : 1:yelp-libs-3.22.0-1.el7.x86_64 1305/1372 + Verifying : gnome-calculator-3.22.3-1.el7.x86_64 1306/1372 + Verifying : vte-profile-0.46.2-1.el7.x86_64 1307/1372 + Verifying : 1:NetworkManager-libnm-1.10.2-13.el7.x86_64 1308/1372 + Verifying : libsss_nss_idmap-1.16.0-19.el7.x86_64 1309/1372 + Verifying : libcdio-0.92-1.el7.x86_64 1310/1372 + Verifying : gupnp-igd-0.2.4-1.el7.x86_64 1311/1372 + Verifying : libsemanage-2.5-11.el7.x86_64 1312/1372 + Verifying : openldap-2.4.44-13.el7.x86_64 1313/1372 + Verifying : libwayland-cursor-1.14.0-2.el7.x86_64 1314/1372 + Verifying : gcc-4.8.5-28.el7.x86_64 1315/1372 + Verifying : sane-backends-1.0.24-11.el7.x86_64 1316/1372 + Verifying : libcgroup-0.41-15.el7.x86_64 1317/1372 + Verifying : sane-backends-drivers-scanners-1.0.24-11.el7.x86_64 1318/1372 + Verifying : libgdata-0.17.8-1.el7.x86_64 1319/1372 + Verifying : device-mapper-multipath-libs-0.4.9-119.el7.x86_64 1320/1372 + Verifying : libfastjson-0.99.4-2.el7.x86_64 1321/1372 + Verifying : gnome-getting-started-docs-3.22.0-1.el7.noarch 1322/1372 + Verifying : ipa-common-4.5.4-10.el7.centos.noarch 1323/1372 + Verifying : abrt-python-2.1.11-50.el7.centos.x86_64 1324/1372 + Verifying : gnome-session-3.26.1-11.el7.x86_64 1325/1372 + Verifying : 2:postfix-2.10.1-6.el7.x86_64 1326/1372 + Verifying : gspell-1.2.3-1.el7.x86_64 1327/1372 + Verifying : nautilus-3.22.3-5.el7.x86_64 1328/1372 + Verifying : libreport-cli-2.1.11-40.el7.centos.x86_64 1329/1372 + Verifying : gtk3-3.22.26-3.el7.x86_64 1330/1372 + Verifying : adwaita-icon-theme-3.26.0-1.el7.noarch 1331/1372 + Verifying : libreport-plugin-bugzilla-2.1.11-40.el7.centos.x86_64 1332/1372 + Verifying : xorg-x11-drv-fbdev-0.4.3-25.el7.x86_64 1333/1372 + Verifying : rhythmbox-3.4.1-1.el7.x86_64 1334/1372 + Verifying : 2:microcode_ctl-2.1-29.el7.x86_64 1335/1372 + Verifying : centos-release-7-5.1804.el7.centos.x86_64 1336/1372 + Verifying : rpcbind-0.2.0-44.el7.x86_64 1337/1372 + Verifying : libquadmath-4.8.5-28.el7.x86_64 1338/1372 + Verifying : 32:bind-libs-lite-9.9.4-61.el7.x86_64 1339/1372 + Verifying : rpm-4.11.3-32.el7.x86_64 1340/1372 + Verifying : xorg-x11-proto-devel-7.7-20.el7.noarch 1341/1372 + Verifying : iwl7260-firmware-22.0.7.0-62.el7.noarch 1342/1372 + Verifying : anaconda-widgets-21.48.22.134-1.el7.centos.x86_64 1343/1372 + Verifying : iprutils-2.4.15.1-1.el7.x86_64 1344/1372 + Verifying : libxcb-devel-1.12-1.el7.x86_64 1345/1372 + Verifying : libgtop2-2.34.2-2.el7.x86_64 1346/1372 + Verifying : libvirt-daemon-driver-storage-logical-3.9.0-14.el7.x86_64 1347/1372 + Verifying : libreport-plugin-mailx-2.1.11-40.el7.centos.x86_64 1348/1372 + Verifying : policycoreutils-2.5-22.el7.x86_64 1349/1372 + Verifying : mesa-libEGL-17.2.3-8.20171019.el7.x86_64 1350/1372 + Verifying : python-urlgrabber-3.10-8.el7.noarch 1351/1372 + Verifying : libvirt-daemon-driver-secret-3.9.0-14.el7.x86_64 1352/1372 + Verifying : iscsi-initiator-utils-6.2.0.874-7.el7.x86_64 1353/1372 + Verifying : nss-tools-3.34.0-4.el7.x86_64 1354/1372 + Verifying : adwaita-gtk2-theme-3.22.2-1.el7.x86_64 1355/1372 + Verifying : gnome-dictionary-libs-3.20.0-1.el7.x86_64 1356/1372 + Verifying : libX11-devel-1.6.5-1.el7.x86_64 1357/1372 + Verifying : 1:java-1.7.0-openjdk-1.7.0.171-2.6.13.2.el7.x86_64 1358/1372 + Verifying : glusterfs-3.8.4-53.el7.centos.x86_64 1359/1372 + Verifying : glib2-2.54.2-2.el7.x86_64 1360/1372 + Verifying : iwl135-firmware-18.168.6.1-62.el7.noarch 1361/1372 + Verifying : cryptsetup-libs-1.7.4-4.el7.x86_64 1362/1372 + Verifying : krb5-libs-1.15.1-18.el7.x86_64 1363/1372 + Verifying : accountsservice-libs-0.6.45-7.el7.x86_64 1364/1372 + Verifying : libreport-plugin-rhtsupport-2.1.11-40.el7.centos.x86_64 1365/1372 + Verifying : augeas-libs-1.4.0-5.el7.x86_64 1366/1372 + Verifying : audit-libs-2.8.1-3.el7.x86_64 1367/1372 + Verifying : systemd-219-57.el7.x86_64 1368/1372 + Verifying : hwdata-0.252-8.8.el7.x86_64 1369/1372 + Verifying : open-vm-tools-desktop-10.1.10-3.el7.x86_64 1370/1372 + Verifying : 10:qemu-kvm-1.5.3-156.el7.x86_64 1371/1372 + Verifying : python-dmidecode-3.12.2-2.el7.x86_64 1372/1372 + +Installed: + gnome-dictionary.x86_64 0:3.26.1-2.el7 gnome-shell.x86_64 0:3.28.3-6.el7 gnome-tweak-tool.noarch 0:3.28.1-2.el7 + grub2.x86_64 1:2.02-0.76.el7.centos grub2-tools.x86_64 1:2.02-0.76.el7.centos grub2-tools-extra.x86_64 1:2.02-0.76.el7.centos + grub2-tools-minimal.x86_64 1:2.02-0.76.el7.centos kernel.x86_64 0:3.10.0-957.1.3.el7 kernel-devel.x86_64 0:3.10.0-957.1.3.el7 + libwayland-egl.x86_64 0:1.15.0-1.el7 python2-pyatspi.noarch 0:2.26.0-3.el7 + +Dependency Installed: + bolt.x86_64 0:0.4-3.el7 boost-iostreams.x86_64 0:1.53.0-27.el7 boost-random.x86_64 0:1.53.0-27.el7 + compat-libical1.x86_64 0:1.0.1-2.el7 daxctl-libs.x86_64 0:62-1.el7 evolution-data-server-langpacks.noarch 0:3.28.5-1.el7 + fribidi.x86_64 0:1.0.2-1.el7 fwupd.x86_64 0:1.0.8-4.el7 fwupdate-efi.x86_64 0:12-5.el7.centos + fwupdate-libs.x86_64 0:12-5.el7.centos google-noto-emoji-color-fonts.noarch 0:20180508-4.el7 libblockdev-nvdimm.x86_64 0:2.18-3.el7 + libglvnd.x86_64 1:1.0.1-0.8.git5baa1e5.el7 libglvnd-egl.x86_64 1:1.0.1-0.8.git5baa1e5.el7 libglvnd-gles.x86_64 1:1.0.1-0.8.git5baa1e5.el7 + libglvnd-glx.x86_64 1:1.0.1-0.8.git5baa1e5.el7 libsmartcols.x86_64 0:2.23.2-59.el7 libsmbios.x86_64 0:2.3.3-8.el7 + mozjs52.x86_64 0:52.9.0-1.el7 ndctl.x86_64 0:62-1.el7 ndctl-libs.x86_64 0:62-1.el7 + python2-blockdev.x86_64 0:2.18-3.el7 python2-futures.noarch 0:3.1.1-5.el7 python2-subprocess32.x86_64 0:3.2.6-13.el7 + shim-x64.x86_64 0:15-1.el7.centos + +Updated: + GeoIP.x86_64 0:1.5.0-13.el7 NetworkManager.x86_64 1:1.12.0-8.el7_6 + NetworkManager-adsl.x86_64 1:1.12.0-8.el7_6 NetworkManager-bluetooth.x86_64 1:1.12.0-8.el7_6 + NetworkManager-glib.x86_64 1:1.12.0-8.el7_6 NetworkManager-libnm.x86_64 1:1.12.0-8.el7_6 + NetworkManager-ppp.x86_64 1:1.12.0-8.el7_6 NetworkManager-team.x86_64 1:1.12.0-8.el7_6 + NetworkManager-tui.x86_64 1:1.12.0-8.el7_6 NetworkManager-wifi.x86_64 1:1.12.0-8.el7_6 + NetworkManager-wwan.x86_64 1:1.12.0-8.el7_6 PackageKit.x86_64 0:1.1.10-1.el7.centos + PackageKit-command-not-found.x86_64 0:1.1.10-1.el7.centos PackageKit-glib.x86_64 0:1.1.10-1.el7.centos + PackageKit-gstreamer-plugin.x86_64 0:1.1.10-1.el7.centos PackageKit-gtk3-module.x86_64 0:1.1.10-1.el7.centos + PackageKit-yum.x86_64 0:1.1.10-1.el7.centos abrt.x86_64 0:2.1.11-52.el7.centos + abrt-addon-ccpp.x86_64 0:2.1.11-52.el7.centos abrt-addon-kerneloops.x86_64 0:2.1.11-52.el7.centos + abrt-addon-pstoreoops.x86_64 0:2.1.11-52.el7.centos abrt-addon-python.x86_64 0:2.1.11-52.el7.centos + abrt-addon-vmcore.x86_64 0:2.1.11-52.el7.centos abrt-addon-xorg.x86_64 0:2.1.11-52.el7.centos + abrt-cli.x86_64 0:2.1.11-52.el7.centos abrt-console-notification.x86_64 0:2.1.11-52.el7.centos + abrt-dbus.x86_64 0:2.1.11-52.el7.centos abrt-desktop.x86_64 0:2.1.11-52.el7.centos + abrt-gui.x86_64 0:2.1.11-52.el7.centos abrt-gui-libs.x86_64 0:2.1.11-52.el7.centos + abrt-libs.x86_64 0:2.1.11-52.el7.centos abrt-python.x86_64 0:2.1.11-52.el7.centos + abrt-retrace-client.x86_64 0:2.1.11-52.el7.centos abrt-tui.x86_64 0:2.1.11-52.el7.centos + accountsservice.x86_64 0:0.6.50-2.el7 accountsservice-libs.x86_64 0:0.6.50-2.el7 + adcli.x86_64 0:0.8.1-6.el7 adwaita-cursor-theme.noarch 0:3.28.0-1.el7 + adwaita-gtk2-theme.x86_64 0:3.28-2.el7 adwaita-icon-theme.noarch 0:3.28.0-1.el7 + alsa-lib.x86_64 0:1.1.6-2.el7 alsa-plugins-pulseaudio.x86_64 0:1.1.6-1.el7 + alsa-utils.x86_64 0:1.1.6-1.el7 anaconda-core.x86_64 0:21.48.22.147-1.el7.centos + anaconda-gui.x86_64 0:21.48.22.147-1.el7.centos anaconda-tui.x86_64 0:21.48.22.147-1.el7.centos + anaconda-widgets.x86_64 0:21.48.22.147-1.el7.centos appstream-data.noarch 0:7-20180614.el7 + at.x86_64 0:3.1.13-24.el7 at-spi2-atk.x86_64 0:2.26.2-1.el7 + at-spi2-core.x86_64 0:2.28.0-1.el7 atk.x86_64 0:2.28.1-1.el7 + audit.x86_64 0:2.8.4-4.el7 audit-libs.x86_64 0:2.8.4-4.el7 + audit-libs-python.x86_64 0:2.8.4-4.el7 augeas-libs.x86_64 0:1.4.0-6.el7 + autofs.x86_64 1:5.0.7-99.el7 baobab.x86_64 0:3.28.0-2.el7 + bash.x86_64 0:4.2.46-31.el7 bind-libs.x86_64 32:9.9.4-72.el7 + bind-libs-lite.x86_64 32:9.9.4-72.el7 bind-license.noarch 32:9.9.4-72.el7 + bind-utils.x86_64 32:9.9.4-72.el7 binutils.x86_64 0:2.27-34.base.el7 + bison.x86_64 0:3.0.4-2.el7 brasero.x86_64 0:3.12.2-5.el7 + brasero-libs.x86_64 0:3.12.2-5.el7 brasero-nautilus.x86_64 0:3.12.2-5.el7 + ca-certificates.noarch 0:2018.2.22-70.0.el7_5 cairo.x86_64 0:1.15.12-3.el7 + cairo-gobject.x86_64 0:1.15.12-3.el7 centos-release.x86_64 0:7-6.1810.2.el7.centos + certmonger.x86_64 0:0.78.4-10.el7 checkpolicy.x86_64 0:2.5-8.el7 + cheese.x86_64 2:3.28.0-1.el7 cheese-libs.x86_64 2:3.28.0-1.el7 + clutter-gst3.x86_64 0:3.0.26-1.el7 control-center.x86_64 1:3.28.1-4.el7 + control-center-filesystem.x86_64 1:3.28.1-4.el7 copy-jdk-configs.noarch 0:3.3-10.el7_5 + coreutils.x86_64 0:8.22-23.el7 cpp.x86_64 0:4.8.5-36.el7 + crash.x86_64 0:7.2.3-8.el7 crda.x86_64 0:3.18_2018.05.31-4.el7 + cronie.x86_64 0:1.4.11-20.el7_6 cronie-anacron.x86_64 0:1.4.11-20.el7_6 + cryptsetup.x86_64 0:2.0.3-3.el7 cryptsetup-libs.x86_64 0:2.0.3-3.el7 + cryptsetup-python.x86_64 0:2.0.3-3.el7 curl.x86_64 0:7.29.0-51.el7 + dbus.x86_64 1:1.10.24-12.el7 dbus-libs.x86_64 1:1.10.24-12.el7 + dbus-x11.x86_64 1:1.10.24-12.el7 dconf.x86_64 0:0.28.0-4.el7 + device-mapper.x86_64 7:1.02.149-10.el7_6.2 device-mapper-event.x86_64 7:1.02.149-10.el7_6.2 + device-mapper-event-libs.x86_64 7:1.02.149-10.el7_6.2 device-mapper-libs.x86_64 7:1.02.149-10.el7_6.2 + device-mapper-multipath.x86_64 0:0.4.9-123.el7 device-mapper-multipath-libs.x86_64 0:0.4.9-123.el7 + dhclient.x86_64 12:4.2.5-68.el7.centos.1 dhcp-common.x86_64 12:4.2.5-68.el7.centos.1 + dhcp-libs.x86_64 12:4.2.5-68.el7.centos.1 dmidecode.x86_64 1:3.1-2.el7 + dnsmasq.x86_64 0:2.76-7.el7 dosfstools.x86_64 0:3.0.20-10.el7 + dracut.x86_64 0:033-554.el7 dracut-config-rescue.x86_64 0:033-554.el7 + dracut-network.x86_64 0:033-554.el7 dyninst.x86_64 0:9.3.1-2.el7 + e2fsprogs.x86_64 0:1.42.9-13.el7 e2fsprogs-libs.x86_64 0:1.42.9-13.el7 + efivar-libs.x86_64 0:36-11.el7 elfutils.x86_64 0:0.172-2.el7 + elfutils-default-yama-scope.noarch 0:0.172-2.el7 elfutils-libelf.x86_64 0:0.172-2.el7 + elfutils-libs.x86_64 0:0.172-2.el7 emacs-filesystem.noarch 1:24.3-22.el7 + empathy.x86_64 0:3.12.13-1.el7 eog.x86_64 0:3.28.3-1.el7 + ethtool.x86_64 2:4.8-9.el7 evince.x86_64 0:3.28.2-5.el7 + evince-libs.x86_64 0:3.28.2-5.el7 evince-nautilus.x86_64 0:3.28.2-5.el7 + evolution-data-server.x86_64 0:3.28.5-1.el7 file.x86_64 0:5.11-35.el7 + file-libs.x86_64 0:5.11-35.el7 file-roller.x86_64 0:3.28.1-2.el7 + file-roller-nautilus.x86_64 0:3.28.1-2.el7 findutils.x86_64 1:4.5.11-6.el7 + firefox.x86_64 0:60.4.0-1.el7.centos firewall-config.noarch 0:0.5.3-5.el7 + firewalld.noarch 0:0.5.3-5.el7 firewalld-filesystem.noarch 0:0.5.3-5.el7 + flatpak.x86_64 0:1.0.2-2.el7 flatpak-libs.x86_64 0:1.0.2-2.el7 + flex.x86_64 0:2.5.37-6.el7 folks.x86_64 1:0.11.4-1.el7 + fontconfig.x86_64 0:2.13.0-4.3.el7 fprintd.x86_64 0:0.8.1-2.el7 + fprintd-pam.x86_64 0:0.8.1-2.el7 freetype.x86_64 0:2.8-12.el7 + fuse.x86_64 0:2.9.2-11.el7 fuse-libs.x86_64 0:2.9.2-11.el7 + gcc.x86_64 0:4.8.5-36.el7 gcc-c++.x86_64 0:4.8.5-36.el7 + gcc-gfortran.x86_64 0:4.8.5-36.el7 gcr.x86_64 0:3.28.0-1.el7 + gdb.x86_64 0:7.6.1-114.el7 gdisk.x86_64 0:0.8.10-2.el7 + gdk-pixbuf2.x86_64 0:2.36.12-3.el7 gdm.x86_64 1:3.28.2-10.el7 + gedit.x86_64 2:3.28.1-1.el7 genisoimage.x86_64 0:1.1.11-25.el7 + geoclue2.x86_64 0:2.4.8-1.el7 geoclue2-libs.x86_64 0:2.4.8-1.el7 + geocode-glib.x86_64 0:3.26.0-2.el7 ghostscript.x86_64 0:9.07-31.el7_6.6 + ghostscript-cups.x86_64 0:9.07-31.el7_6.6 git.x86_64 0:1.8.3.1-20.el7 + gjs.x86_64 0:1.52.3-1.el7 glade-libs.x86_64 0:3.22.1-1.el7 + glib-networking.x86_64 0:2.56.1-1.el7 glib2.x86_64 0:2.56.1-2.el7 + glibc.x86_64 0:2.17-260.el7 glibc-common.x86_64 0:2.17-260.el7 + glibc-devel.x86_64 0:2.17-260.el7 glibc-headers.x86_64 0:2.17-260.el7 + glibmm24.x86_64 0:2.56.0-1.el7 glusterfs.x86_64 0:3.12.2-18.el7 + glusterfs-api.x86_64 0:3.12.2-18.el7 glusterfs-cli.x86_64 0:3.12.2-18.el7 + glusterfs-client-xlators.x86_64 0:3.12.2-18.el7 glusterfs-fuse.x86_64 0:3.12.2-18.el7 + glusterfs-libs.x86_64 0:3.12.2-18.el7 glx-utils.x86_64 0:8.3.0-10.el7 + gnome-bluetooth.x86_64 1:3.28.2-1.el7 gnome-bluetooth-libs.x86_64 1:3.28.2-1.el7 + gnome-boxes.x86_64 0:3.28.5-2.el7 gnome-calculator.x86_64 0:3.28.2-1.el7 + gnome-classic-session.noarch 0:3.28.1-5.el7 gnome-clocks.x86_64 0:3.28.0-1.el7 + gnome-color-manager.x86_64 0:3.28.0-1.el7 gnome-contacts.x86_64 0:3.28.2-1.el7 + gnome-desktop3.x86_64 0:3.28.2-2.el7 gnome-disk-utility.x86_64 0:3.28.3-1.el7 + gnome-font-viewer.x86_64 0:3.28.0-1.el7 gnome-getting-started-docs.noarch 0:3.28.2-1.el7 + gnome-initial-setup.x86_64 0:3.28.0-1.el7 gnome-keyring.x86_64 0:3.28.2-1.el7 + gnome-keyring-pam.x86_64 0:3.28.2-1.el7 gnome-online-accounts.x86_64 0:3.28.0-1.el7 + gnome-packagekit.x86_64 0:3.28.0-1.el7 gnome-packagekit-common.x86_64 0:3.28.0-1.el7 + gnome-packagekit-installer.x86_64 0:3.28.0-1.el7 gnome-packagekit-updater.x86_64 0:3.28.0-1.el7 + gnome-screenshot.x86_64 0:3.26.0-1.el7 gnome-session.x86_64 0:3.28.1-6.el7 + gnome-session-xsession.x86_64 0:3.28.1-6.el7 gnome-settings-daemon.x86_64 0:3.28.1-2.el7 + gnome-shell-extension-alternate-tab.noarch 0:3.28.1-5.el7 gnome-shell-extension-apps-menu.noarch 0:3.28.1-5.el7 + gnome-shell-extension-common.noarch 0:3.28.1-5.el7 gnome-shell-extension-launch-new-instance.noarch 0:3.28.1-5.el7 + gnome-shell-extension-places-menu.noarch 0:3.28.1-5.el7 gnome-shell-extension-top-icons.noarch 0:3.28.1-5.el7 + gnome-shell-extension-user-theme.noarch 0:3.28.1-5.el7 gnome-shell-extension-window-list.noarch 0:3.28.1-5.el7 + gnome-software.x86_64 0:3.28.2-3.el7 gnome-system-monitor.x86_64 0:3.28.2-1.el7 + gnome-terminal.x86_64 0:3.28.2-2.el7 gnome-terminal-nautilus.x86_64 0:3.28.2-2.el7 + gnome-themes-standard.x86_64 0:3.28-2.el7 gnome-user-docs.noarch 0:3.28.2-1.el7 + gnupg2.x86_64 0:2.0.22-5.el7_5 gnutls.x86_64 0:3.3.29-8.el7 + gobject-introspection.x86_64 0:1.56.1-1.el7 gom.x86_64 0:0.3.3-1.el7 + grilo.x86_64 0:0.3.6-1.el7 grilo-plugins.x86_64 0:0.3.7-1.el7 + grub2-common.noarch 1:2.02-0.76.el7.centos grub2-pc.x86_64 1:2.02-0.76.el7.centos + grub2-pc-modules.noarch 1:2.02-0.76.el7.centos grubby.x86_64 0:8.28-25.el7 + gsettings-desktop-schemas.x86_64 0:3.28.0-2.el7 gspell.x86_64 0:1.6.1-1.el7 + gssdp.x86_64 0:1.0.2-1.el7 gssproxy.x86_64 0:0.7.0-21.el7 + gstreamer1-plugins-base.x86_64 0:1.10.4-2.el7 gtk-update-icon-cache.x86_64 0:3.22.30-3.el7 + gtk3.x86_64 0:3.22.30-3.el7 gtk3-immodule-xim.x86_64 0:3.22.30-3.el7 + gtksourceview3.x86_64 0:3.24.8-1.el7 gucharmap.x86_64 0:10.0.4-1.el7 + gucharmap-libs.x86_64 0:10.0.4-1.el7 gupnp.x86_64 0:1.0.2-5.el7 + gupnp-igd.x86_64 0:0.2.5-2.el7 gvfs.x86_64 0:1.36.2-1.el7 + gvfs-afc.x86_64 0:1.36.2-1.el7 gvfs-afp.x86_64 0:1.36.2-1.el7 + gvfs-archive.x86_64 0:1.36.2-1.el7 gvfs-client.x86_64 0:1.36.2-1.el7 + gvfs-fuse.x86_64 0:1.36.2-1.el7 gvfs-goa.x86_64 0:1.36.2-1.el7 + gvfs-gphoto2.x86_64 0:1.36.2-1.el7 gvfs-mtp.x86_64 0:1.36.2-1.el7 + gvfs-smb.x86_64 0:1.36.2-1.el7 harfbuzz.x86_64 0:1.7.5-2.el7 + harfbuzz-icu.x86_64 0:1.7.5-2.el7 hwdata.x86_64 0:0.252-9.1.el7 + hyperv-daemons.x86_64 0:0-0.34.20180415git.el7 hyperv-daemons-license.noarch 0:0-0.34.20180415git.el7 + hypervfcopyd.x86_64 0:0-0.34.20180415git.el7 hypervkvpd.x86_64 0:0-0.34.20180415git.el7 + hypervvssd.x86_64 0:0-0.34.20180415git.el7 icedax.x86_64 0:1.1.11-25.el7 + imsettings.x86_64 0:1.6.3-10.el7 imsettings-gsettings.x86_64 0:1.6.3-10.el7 + imsettings-libs.x86_64 0:1.6.3-10.el7 initscripts.x86_64 0:9.49.46-1.el7 + ipa-client.x86_64 0:4.6.4-10.el7.centos ipa-client-common.noarch 0:4.6.4-10.el7.centos + ipa-common.noarch 0:4.6.4-10.el7.centos iprutils.x86_64 0:2.4.16.1-1.el7 + ipset.x86_64 0:6.38-3.el7_6 ipset-libs.x86_64 0:6.38-3.el7_6 + iptables.x86_64 0:1.4.21-28.el7 iscsi-initiator-utils.x86_64 0:6.2.0.874-10.el7 + iscsi-initiator-utils-iscsiuio.x86_64 0:6.2.0.874-10.el7 iw.x86_64 0:4.3-2.el7 + iwl100-firmware.noarch 0:39.31.5.1-69.el7 iwl1000-firmware.noarch 1:39.31.5.1-69.el7 + iwl105-firmware.noarch 0:18.168.6.1-69.el7 iwl135-firmware.noarch 0:18.168.6.1-69.el7 + iwl2000-firmware.noarch 0:18.168.6.1-69.el7 iwl2030-firmware.noarch 0:18.168.6.1-69.el7 + iwl3160-firmware.noarch 0:22.0.7.0-69.el7 iwl3945-firmware.noarch 0:15.32.2.9-69.el7 + iwl4965-firmware.noarch 0:228.61.2.24-69.el7 iwl5000-firmware.noarch 0:8.83.5.1_1-69.el7 + iwl5150-firmware.noarch 0:8.24.2.2-69.el7 iwl6000-firmware.noarch 0:9.221.4.1-69.el7 + iwl6000g2a-firmware.noarch 0:17.168.5.3-69.el7 iwl6000g2b-firmware.noarch 0:17.168.5.2-69.el7 + iwl6050-firmware.noarch 0:41.28.5.1-69.el7 iwl7260-firmware.noarch 0:22.0.7.0-69.el7 + iwl7265-firmware.noarch 0:22.0.7.0-69.el7 jasper-libs.x86_64 0:1.900.1-33.el7 + java-1.7.0-openjdk.x86_64 1:1.7.0.201-2.6.16.1.el7_6 java-1.7.0-openjdk-headless.x86_64 1:1.7.0.201-2.6.16.1.el7_6 + java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-1.el7_6 java-1.8.0-openjdk-headless.x86_64 1:1.8.0.191.b12-1.el7_6 + json-glib.x86_64 0:1.4.2-2.el7 kbd.x86_64 0:1.15.5-15.el7 + kbd-legacy.noarch 0:1.15.5-15.el7 kbd-misc.noarch 0:1.15.5-15.el7 + kernel-headers.x86_64 0:3.10.0-957.1.3.el7 kernel-tools.x86_64 0:3.10.0-957.1.3.el7 + kernel-tools-libs.x86_64 0:3.10.0-957.1.3.el7 kexec-tools.x86_64 0:2.0.15-21.el7 + kmod.x86_64 0:20-23.el7 kmod-kvdo.x86_64 0:6.1.1.125-5.el7 + kmod-libs.x86_64 0:20-23.el7 kpartx.x86_64 0:0.4.9-123.el7 + kpatch.noarch 0:0.6.1-1.el7 krb5-libs.x86_64 0:1.15.1-34.el7 + krb5-workstation.x86_64 0:1.15.1-34.el7 ledmon.x86_64 0:0.90-1.el7 + libX11.x86_64 0:1.6.5-2.el7 libX11-common.noarch 0:1.6.5-2.el7 + libX11-devel.x86_64 0:1.6.5-2.el7 libXcursor.x86_64 0:1.1.15-1.el7 + libXfont.x86_64 0:1.5.4-1.el7 libXfont2.x86_64 0:2.0.3-1.el7 + libXres.x86_64 0:1.2.0-1.el7 libappstream-glib.x86_64 0:0.7.8-2.el7 + libbasicobjects.x86_64 0:0.1.1-32.el7 libblkid.x86_64 0:2.23.2-59.el7 + libblockdev.x86_64 0:2.18-3.el7 libblockdev-crypto.x86_64 0:2.18-3.el7 + libblockdev-fs.x86_64 0:2.18-3.el7 libblockdev-loop.x86_64 0:2.18-3.el7 + libblockdev-mdraid.x86_64 0:2.18-3.el7 libblockdev-part.x86_64 0:2.18-3.el7 + libblockdev-swap.x86_64 0:2.18-3.el7 libblockdev-utils.x86_64 0:2.18-3.el7 + libcdio.x86_64 0:0.92-3.el7 libcgroup.x86_64 0:0.41-20.el7 + libcgroup-tools.x86_64 0:0.41-20.el7 libchamplain.x86_64 0:0.12.16-2.el7 + libchamplain-gtk.x86_64 0:0.12.16-2.el7 libcollection.x86_64 0:0.7.0-32.el7 + libcom_err.x86_64 0:1.42.9-13.el7 libcroco.x86_64 0:0.6.12-4.el7 + libcurl.x86_64 0:7.29.0-51.el7 libdhash.x86_64 0:0.5.0-32.el7 + libdrm.x86_64 0:2.4.91-3.el7 libepoxy.x86_64 0:1.5.2-1.el7 + libfastjson.x86_64 0:0.99.4-3.el7 libfprint.x86_64 0:0.8.2-1.el7 + libgcc.x86_64 0:4.8.5-36.el7 libgdata.x86_64 0:0.17.9-1.el7 + libgee.x86_64 0:0.20.1-1.el7 libgexiv2.x86_64 0:0.10.8-1.el7 + libgfortran.x86_64 0:4.8.5-36.el7 libgnomekbd.x86_64 0:3.26.0-1.el7 + libgomp.x86_64 0:4.8.5-36.el7 libgovirt.x86_64 0:0.3.4-1.el7 + libgtop2.x86_64 0:2.38.0-3.el7 libgudev1.x86_64 0:219-62.el7 + libgweather.x86_64 0:3.28.2-2.el7 libgxps.x86_64 0:0.3.0-4.el7 + libibverbs.x86_64 0:17.2-3.el7 libical.x86_64 0:3.0.3-2.el7 + libicu.x86_64 0:50.1.2-17.el7 libini_config.x86_64 0:1.3.1-32.el7 + libinput.x86_64 0:1.10.7-2.el7 libipa_hbac.x86_64 0:1.16.2-13.el7 + libjpeg-turbo.x86_64 0:1.2.90-6.el7 libkadm5.x86_64 0:1.15.1-34.el7 + libldb.x86_64 0:1.3.4-1.el7 libmediaart.x86_64 0:1.9.4-1.el7 + libmount.x86_64 0:2.23.2-59.el7 libmspack.x86_64 0:0.5-0.6.alpha.el7 + libosinfo.x86_64 0:1.1.0-2.el7 libpath_utils.x86_64 0:0.2.1-32.el7 + libpeas.x86_64 0:1.22.0-1.el7 libpeas-gtk.x86_64 0:1.22.0-1.el7 + libpeas-loader-python.x86_64 0:1.22.0-1.el7 libquadmath.x86_64 0:4.8.5-36.el7 + libquadmath-devel.x86_64 0:4.8.5-36.el7 librados2.x86_64 1:10.2.5-4.el7 + librbd1.x86_64 1:10.2.5-4.el7 librdmacm.x86_64 0:17.2-3.el7 + libref_array.x86_64 0:0.1.5-32.el7 libreport.x86_64 0:2.1.11-42.el7.centos + libreport-anaconda.x86_64 0:2.1.11-42.el7.centos libreport-centos.x86_64 0:2.1.11-42.el7.centos + libreport-cli.x86_64 0:2.1.11-42.el7.centos libreport-filesystem.x86_64 0:2.1.11-42.el7.centos + libreport-gtk.x86_64 0:2.1.11-42.el7.centos libreport-plugin-bugzilla.x86_64 0:2.1.11-42.el7.centos + libreport-plugin-mailx.x86_64 0:2.1.11-42.el7.centos libreport-plugin-mantisbt.x86_64 0:2.1.11-42.el7.centos + libreport-plugin-reportuploader.x86_64 0:2.1.11-42.el7.centos libreport-plugin-rhtsupport.x86_64 0:2.1.11-42.el7.centos + libreport-plugin-ureport.x86_64 0:2.1.11-42.el7.centos libreport-python.x86_64 0:2.1.11-42.el7.centos + libreport-rhel-anaconda-bugzilla.x86_64 0:2.1.11-42.el7.centos libreport-web.x86_64 0:2.1.11-42.el7.centos + libreswan.x86_64 0:3.25-2.el7 librsvg2.x86_64 0:2.40.20-1.el7 + libsecret.x86_64 0:0.18.6-1.el7 libselinux.x86_64 0:2.5-14.1.el7 + libselinux-python.x86_64 0:2.5-14.1.el7 libselinux-utils.x86_64 0:2.5-14.1.el7 + libsemanage.x86_64 0:2.5-14.el7 libsemanage-python.x86_64 0:2.5-14.el7 + libsepol.x86_64 0:2.5-10.el7 libsmbclient.x86_64 0:4.8.3-4.el7 + libsoup.x86_64 0:2.62.2-2.el7 libss.x86_64 0:1.42.9-13.el7 + libssh2.x86_64 0:1.4.3-12.el7 libsss_autofs.x86_64 0:1.16.2-13.el7 + libsss_certmap.x86_64 0:1.16.2-13.el7 libsss_idmap.x86_64 0:1.16.2-13.el7 + libsss_nss_idmap.x86_64 0:1.16.2-13.el7 libsss_sudo.x86_64 0:1.16.2-13.el7 + libstdc++.x86_64 0:4.8.5-36.el7 libstdc++-devel.x86_64 0:4.8.5-36.el7 + libstoragemgmt.x86_64 0:1.6.2-4.el7 libstoragemgmt-python.noarch 0:1.6.2-4.el7 + libstoragemgmt-python-clibs.x86_64 0:1.6.2-4.el7 libtalloc.x86_64 0:2.1.13-1.el7 + libteam.x86_64 0:1.27-5.el7 libtevent.x86_64 0:0.9.36-1.el7 + libtirpc.x86_64 0:0.2.4-0.15.el7 libudisks2.x86_64 0:2.7.3-8.el7 + libusal.x86_64 0:1.1.11-25.el7 libuuid.x86_64 0:2.23.2-59.el7 + libvirt-daemon.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-config-network.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-interface.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-driver-network.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-nodedev.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-driver-nwfilter.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-qemu.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-driver-secret.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-storage.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-driver-storage-core.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-storage-disk.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-driver-storage-gluster.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-storage-iscsi.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-driver-storage-logical.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-storage-mpath.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-driver-storage-rbd.x86_64 0:4.5.0-10.el7_6.3 + libvirt-daemon-driver-storage-scsi.x86_64 0:4.5.0-10.el7_6.3 libvirt-daemon-kvm.x86_64 0:4.5.0-10.el7_6.3 + libvirt-libs.x86_64 0:4.5.0-10.el7_6.3 libvorbis.x86_64 1:1.3.3-8.el7.1 + libwacom.x86_64 0:0.30-1.el7 libwacom-data.noarch 0:0.30-1.el7 + libwayland-client.x86_64 0:1.15.0-1.el7 libwayland-cursor.x86_64 0:1.15.0-1.el7 + libwayland-server.x86_64 0:1.15.0-1.el7 libwbclient.x86_64 0:4.8.3-4.el7 + libwnck3.x86_64 0:3.24.1-2.el7 libxcb.x86_64 0:1.13-1.el7 + libxcb-devel.x86_64 0:1.13-1.el7 linux-firmware.noarch 0:20180911-69.git85c5d90.el7 + llvm-private.x86_64 0:6.0.1-2.el7 lm_sensors-libs.x86_64 0:3.4.0-6.20160601gitf9185e5.el7 + logrotate.x86_64 0:3.8.6-17.el7 lsof.x86_64 0:4.87-6.el7 + lvm2.x86_64 7:2.02.180-10.el7_6.2 lvm2-libs.x86_64 7:2.02.180-10.el7_6.2 + man-db.x86_64 0:2.6.3-11.el7 man-pages-overrides.x86_64 0:7.6.2-1.el7 + mariadb-libs.x86_64 1:5.5.60-1.el7_5 mdadm.x86_64 0:4.1-rc1_2.el7 + mesa-dri-drivers.x86_64 0:18.0.5-3.el7 mesa-filesystem.x86_64 0:18.0.5-3.el7 + mesa-libEGL.x86_64 0:18.0.5-3.el7 mesa-libGL.x86_64 0:18.0.5-3.el7 + mesa-libGLES.x86_64 0:18.0.5-3.el7 mesa-libgbm.x86_64 0:18.0.5-3.el7 + mesa-libglapi.x86_64 0:18.0.5-3.el7 mesa-libxatracker.x86_64 0:18.0.5-3.el7 + microcode_ctl.x86_64 2:2.1-47.el7 mokutil.x86_64 0:15-1.el7.centos + motif.x86_64 0:2.3.4-14.el7_5 mutter.x86_64 0:3.28.3-5.el7 + nautilus.x86_64 0:3.26.3.1-2.el7 nautilus-extensions.x86_64 0:3.26.3.1-2.el7 + nautilus-sendto.x86_64 1:3.8.6-1.el7 net-snmp-libs.x86_64 1:5.7.2-37.el7 + net-tools.x86_64 0:2.0-0.24.20131004git.el7 nfs-utils.x86_64 1:1.3.0-0.61.el7 + nfs4-acl-tools.x86_64 0:0.3.3-19.el7 nmap-ncat.x86_64 2:6.40-16.el7 + nspr.x86_64 0:4.19.0-1.el7_5 nss.x86_64 0:3.36.0-7.el7_5 + nss-pem.x86_64 0:1.0.3-5.el7 nss-softokn.x86_64 0:3.36.0-5.el7_5 + nss-softokn-freebl.x86_64 0:3.36.0-5.el7_5 nss-sysinit.x86_64 0:3.36.0-7.el7_5 + nss-tools.x86_64 0:3.36.0-7.el7_5 nss-util.x86_64 0:3.36.0-1.el7_5 + open-vm-tools.x86_64 0:10.2.5-3.el7 open-vm-tools-desktop.x86_64 0:10.2.5-3.el7 + openjpeg-libs.x86_64 0:1.5.1-18.el7 openldap.x86_64 0:2.4.44-20.el7 + openscap.x86_64 0:1.2.17-2.el7 openscap-scanner.x86_64 0:1.2.17-2.el7 + openssl.x86_64 1:1.0.2k-16.el7 openssl-libs.x86_64 1:1.0.2k-16.el7 + osinfo-db.noarch 0:20180531-1.el7 pango.x86_64 0:1.42.4-1.el7 + patch.x86_64 0:2.7.1-10.el7_5 pcsc-lite-libs.x86_64 0:1.8.8-8.el7 + perl.x86_64 4:5.16.3-293.el7 perl-Git.noarch 0:1.8.3.1-20.el7 + perl-Pod-Escapes.noarch 1:1.04-293.el7 perl-libs.x86_64 4:5.16.3-293.el7 + perl-macros.x86_64 4:5.16.3-293.el7 policycoreutils.x86_64 0:2.5-29.el7 + policycoreutils-python.x86_64 0:2.5-29.el7 polkit.x86_64 0:0.112-18.el7 + poppler.x86_64 0:0.26.5-20.el7 poppler-glib.x86_64 0:0.26.5-20.el7 + poppler-utils.x86_64 0:0.26.5-20.el7 postfix.x86_64 2:2.10.1-7.el7 + procps-ng.x86_64 0:3.3.10-23.el7 pyOpenSSL.x86_64 0:0.13.1-4.el7 + pykickstart.noarch 0:1.99.66.19-2.el7 python.x86_64 0:2.7.5-76.el7 + python-blivet.noarch 1:0.61.15.72-1.el7 python-configshell.noarch 1:1.1.fb23-5.el7 + python-dmidecode.x86_64 0:3.12.2-3.el7 python-ethtool.x86_64 0:0.8-7.el7 + python-firewall.noarch 0:0.5.3-5.el7 python-libipa_hbac.x86_64 0:1.16.2-13.el7 + python-libs.x86_64 0:2.7.5-76.el7 python-linux-procfs.noarch 0:0.4.9-4.el7 + python-perf.x86_64 0:3.10.0-957.1.3.el7 python-rtslib.noarch 0:2.1.fb63-13.el7 + python-sss-murmur.x86_64 0:1.16.2-13.el7 python-sssdconfig.noarch 0:1.16.2-13.el7 + python-urlgrabber.noarch 0:3.10-9.el7 python2-ipaclient.noarch 0:4.6.4-10.el7.centos + python2-ipalib.noarch 0:4.6.4-10.el7.centos qemu-guest-agent.x86_64 10:2.12.0-2.el7 + qemu-img.x86_64 10:1.5.3-160.el7 qemu-kvm.x86_64 10:1.5.3-160.el7 + qemu-kvm-common.x86_64 10:1.5.3-160.el7 radvd.x86_64 0:2.17-3.el7 + rdma-core.x86_64 0:17.2-3.el7 realmd.x86_64 0:0.16.1-11.el7 + redhat-rpm-config.noarch 0:9.1.0-87.el7.centos rest.x86_64 0:0.8.1-2.el7 + rfkill.x86_64 0:0.4-10.el7 rhythmbox.x86_64 0:3.4.2-2.el7 + rng-tools.x86_64 0:6.3.1-3.el7 rpcbind.x86_64 0:0.2.0-47.el7 + rpm.x86_64 0:4.11.3-35.el7 rpm-build.x86_64 0:4.11.3-35.el7 + rpm-build-libs.x86_64 0:4.11.3-35.el7 rpm-libs.x86_64 0:4.11.3-35.el7 + rpm-python.x86_64 0:4.11.3-35.el7 rpm-sign.x86_64 0:4.11.3-35.el7 + rsyslog.x86_64 0:8.24.0-34.el7 samba-client.x86_64 0:4.8.3-4.el7 + samba-client-libs.x86_64 0:4.8.3-4.el7 samba-common.noarch 0:4.8.3-4.el7 + samba-common-libs.x86_64 0:4.8.3-4.el7 sane-backends.x86_64 0:1.0.24-12.el7 + sane-backends-drivers-scanners.x86_64 0:1.0.24-12.el7 sane-backends-libs.x86_64 0:1.0.24-12.el7 + satyr.x86_64 0:0.13-15.el7 scap-security-guide.noarch 0:0.1.40-12.el7.centos.0.1 + scl-utils.x86_64 0:20130529-19.el7 selinux-policy.noarch 0:3.13.1-229.el7_6.6 + selinux-policy-targeted.noarch 0:3.13.1-229.el7_6.6 setools-libs.x86_64 0:3.3.8-4.el7 + setroubleshoot.x86_64 0:3.2.30-3.el7 setroubleshoot-plugins.noarch 0:3.0.67-3.el7 + setroubleshoot-server.x86_64 0:3.2.30-3.el7 setup.noarch 0:2.8.71-10.el7 + sg3_utils.x86_64 0:1.37-17.el7 sg3_utils-libs.x86_64 0:1.37-17.el7 + shadow-utils.x86_64 2:4.1.5.1-25.el7 shotwell.x86_64 0:0.28.4-1.el7 + sos.noarch 0:3.6-11.el7.centos spice-glib.x86_64 0:0.35-2.el7 + spice-gtk3.x86_64 0:0.35-2.el7 spice-server.x86_64 0:0.14.0-6.el7 + spice-vdagent.x86_64 0:0.14.0-16.el7 sssd.x86_64 0:1.16.2-13.el7 + sssd-ad.x86_64 0:1.16.2-13.el7 sssd-client.x86_64 0:1.16.2-13.el7 + sssd-common.x86_64 0:1.16.2-13.el7 sssd-common-pac.x86_64 0:1.16.2-13.el7 + sssd-ipa.x86_64 0:1.16.2-13.el7 sssd-krb5.x86_64 0:1.16.2-13.el7 + sssd-krb5-common.x86_64 0:1.16.2-13.el7 sssd-ldap.x86_64 0:1.16.2-13.el7 + sssd-proxy.x86_64 0:1.16.2-13.el7 strace.x86_64 0:4.12-9.el7 + sudo.x86_64 0:1.8.23-3.el7 sushi.x86_64 0:3.28.3-1.el7 + sysstat.x86_64 0:10.1.5-17.el7 systemd.x86_64 0:219-62.el7 + systemd-libs.x86_64 0:219-62.el7 systemd-python.x86_64 0:219-62.el7 + systemd-sysv.x86_64 0:219-62.el7 systemtap.x86_64 0:3.3-3.el7 + systemtap-client.x86_64 0:3.3-3.el7 systemtap-devel.x86_64 0:3.3-3.el7 + systemtap-runtime.x86_64 0:3.3-3.el7 tar.x86_64 2:1.26-35.el7 + targetcli.noarch 0:2.1.fb46-7.el7 teamd.x86_64 0:1.27-5.el7 + tigervnc-license.noarch 0:1.8.0-13.el7 tigervnc-server-minimal.x86_64 0:1.8.0-13.el7 + totem.x86_64 1:3.26.2-1.el7 totem-nautilus.x86_64 1:3.26.2-1.el7 + totem-pl-parser.x86_64 0:3.26.1-1.el7 tuned.noarch 0:2.10.0-6.el7 + tzdata.noarch 0:2018g-1.el7 tzdata-java.noarch 0:2018g-1.el7 + udisks2.x86_64 0:2.7.3-8.el7 upower.x86_64 0:0.99.7-1.el7 + util-linux.x86_64 0:2.23.2-59.el7 vdo.x86_64 0:6.1.1.125-3.el7 + vim-common.x86_64 2:7.4.160-5.el7 vim-enhanced.x86_64 2:7.4.160-5.el7 + vim-filesystem.x86_64 2:7.4.160-5.el7 vim-minimal.x86_64 2:7.4.160-5.el7 + vino.x86_64 0:3.22.0-7.el7 vorbis-tools.x86_64 1:1.4.0-13.el7 + vte-profile.x86_64 0:0.52.2-2.el7 vte291.x86_64 0:0.52.2-2.el7 + wayland-devel.x86_64 0:1.15.0-1.el7 webkitgtk4.x86_64 0:2.20.5-1.el7 + webkitgtk4-jsc.x86_64 0:2.20.5-1.el7 webkitgtk4-plugin-process-gtk2.x86_64 0:2.20.5-1.el7 + wget.x86_64 0:1.14-18.el7 wodim.x86_64 0:1.1.11-25.el7 + wpa_supplicant.x86_64 1:2.6-12.el7 xdg-desktop-portal.x86_64 0:1.0.2-1.el7 + xdg-desktop-portal-gtk.x86_64 0:1.0.2-1.el7 xfsprogs.x86_64 0:4.5.0-18.el7 + xkeyboard-config.noarch 0:2.24-1.el7 xorg-x11-drv-ati.x86_64 0:18.0.1-1.el7 + xorg-x11-drv-dummy.x86_64 0:0.3.7-1.el7.1 xorg-x11-drv-evdev.x86_64 0:2.10.6-1.el7 + xorg-x11-drv-fbdev.x86_64 0:0.5.0-1.el7 xorg-x11-drv-intel.x86_64 0:2.99.917-28.20180530.el7 + xorg-x11-drv-nouveau.x86_64 1:1.0.15-1.el7 xorg-x11-drv-qxl.x86_64 0:0.1.5-4.el7.1 + xorg-x11-drv-synaptics.x86_64 0:1.9.0-2.el7 xorg-x11-drv-v4l.x86_64 0:0.2.0-49.el7 + xorg-x11-drv-vesa.x86_64 0:2.4.0-1.el7 xorg-x11-drv-vmmouse.x86_64 0:13.1.0-1.el7.1 + xorg-x11-drv-vmware.x86_64 0:13.2.1-1.el7.1 xorg-x11-drv-void.x86_64 0:1.4.1-2.el7.1 + xorg-x11-drv-wacom.x86_64 0:0.36.1-1.el7 xorg-x11-font-utils.x86_64 1:7.5-21.el7 + xorg-x11-proto-devel.noarch 0:2018.4-1.el7 xorg-x11-server-Xorg.x86_64 0:1.20.1-5.1.el7 + xorg-x11-server-common.x86_64 0:1.20.1-5.1.el7 xorg-x11-utils.x86_64 0:7.5-23.el7 + xorg-x11-xkb-utils.x86_64 0:7.7-14.el7 yelp.x86_64 2:3.28.1-1.el7 + yelp-libs.x86_64 2:3.28.1-1.el7 yelp-xsl.noarch 0:3.28.0-1.el7 + yum.noarch 0:3.4.3-161.el7.centos yum-plugin-fastestmirror.noarch 0:1.1.31-50.el7 + yum-utils.noarch 0:1.1.31-50.el7 zenity.x86_64 0:3.28.1-1.el7 + zlib.x86_64 0:1.2.7-18.el7 + +Replaced: + caribou.x86_64 0:0.4.21-1.el7 caribou-gtk2-module.x86_64 0:0.4.21-1.el7 caribou-gtk3-module.x86_64 0:0.4.21-1.el7 + gnome-dictionary-libs.x86_64 0:3.20.0-1.el7 gnome-tweak-tool.noarch 0:3.22.0-1.el7 grub2.x86_64 1:2.02-0.65.el7.centos.2 + grub2-tools.x86_64 1:2.02-0.65.el7.centos.2 mesa-libwayland-egl.x86_64 0:17.2.3-8.20171019.el7 pyatspi.noarch 0:2.20.3-1.el7 + python2-caribou.noarch 0:0.4.21-1.el7 + +Complete! +[root@centos7 ~]# yum list php +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Available Packages +php.x86_64 5.4.16-46.el7 base +[root@centos7 ~]# yum install php -y +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Resolving Dependencies +--> Running transaction check +---> Package php.x86_64 0:5.4.16-46.el7 will be installed +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-5.4.16-46.el7.x86_64 +--> Processing Dependency: php-cli(x86-64) = 5.4.16-46.el7 for package: php-5.4.16-46.el7.x86_64 +--> Processing Dependency: httpd-mmn = 20120211x8664 for package: php-5.4.16-46.el7.x86_64 +--> Processing Dependency: httpd for package: php-5.4.16-46.el7.x86_64 +--> Running transaction check +---> Package httpd.x86_64 0:2.4.6-88.el7.centos will be installed +--> Processing Dependency: httpd-tools = 2.4.6-88.el7.centos for package: httpd-2.4.6-88.el7.centos.x86_64 +--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-88.el7.centos.x86_64 +---> Package php-cli.x86_64 0:5.4.16-46.el7 will be installed +---> Package php-common.x86_64 0:5.4.16-46.el7 will be installed +--> Processing Dependency: libzip.so.2()(64bit) for package: php-common-5.4.16-46.el7.x86_64 +--> Running transaction check +---> Package httpd-tools.x86_64 0:2.4.6-88.el7.centos will be installed +---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed +---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed +--> Finished Dependency Resolution + +Dependencies Resolved + +==================================================================================================================================================================== + Package Arch Version Repository Size +==================================================================================================================================================================== +Installing: + php x86_64 5.4.16-46.el7 base 1.4 M +Installing for dependencies: + httpd x86_64 2.4.6-88.el7.centos base 2.7 M + httpd-tools x86_64 2.4.6-88.el7.centos base 90 k + libzip x86_64 0.10.1-8.el7 base 48 k + mailcap noarch 2.1.41-2.el7 base 31 k + php-cli x86_64 5.4.16-46.el7 base 2.7 M + php-common x86_64 5.4.16-46.el7 base 565 k + +Transaction Summary +==================================================================================================================================================================== +Install 1 Package (+6 Dependent packages) + +Total download size: 7.5 M +Installed size: 27 M +Downloading packages: +(1/7): httpd-tools-2.4.6-88.el7.centos.x86_64.rpm | 90 kB 00:00:00 +(2/7): libzip-0.10.1-8.el7.x86_64.rpm | 48 kB 00:00:00 +(3/7): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:00 +(4/7): php-5.4.16-46.el7.x86_64.rpm | 1.4 MB 00:00:00 +(5/7): httpd-2.4.6-88.el7.centos.x86_64.rpm | 2.7 MB 00:00:01 +(6/7): php-cli-5.4.16-46.el7.x86_64.rpm | 2.7 MB 00:00:00 +(7/7): php-common-5.4.16-46.el7.x86_64.rpm | 565 kB 00:00:00 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Total 3.0 MB/s | 7.5 MB 00:00:02 +Running transaction check +Running transaction test +Transaction test succeeded +Running transaction + Installing : libzip-0.10.1-8.el7.x86_64 1/7 + Installing : php-common-5.4.16-46.el7.x86_64 2/7 + Installing : php-cli-5.4.16-46.el7.x86_64 3/7 + Installing : httpd-tools-2.4.6-88.el7.centos.x86_64 4/7 + Installing : mailcap-2.1.41-2.el7.noarch 5/7 + Installing : httpd-2.4.6-88.el7.centos.x86_64 6/7 + Installing : php-5.4.16-46.el7.x86_64 7/7 + Verifying : php-5.4.16-46.el7.x86_64 1/7 + Verifying : mailcap-2.1.41-2.el7.noarch 2/7 + Verifying : httpd-tools-2.4.6-88.el7.centos.x86_64 3/7 + Verifying : php-cli-5.4.16-46.el7.x86_64 4/7 + Verifying : libzip-0.10.1-8.el7.x86_64 5/7 + Verifying : httpd-2.4.6-88.el7.centos.x86_64 6/7 + Verifying : php-common-5.4.16-46.el7.x86_64 7/7 + +Installed: + php.x86_64 0:5.4.16-46.el7 + +Dependency Installed: + httpd.x86_64 0:2.4.6-88.el7.centos httpd-tools.x86_64 0:2.4.6-88.el7.centos libzip.x86_64 0:0.10.1-8.el7 mailcap.noarch 0:2.1.41-2.el7 + php-cli.x86_64 0:5.4.16-46.el7 php-common.x86_64 0:5.4.16-46.el7 + +Complete! +[root@centos7 ~]# yum list mariadb +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Available Packages +mariadb.x86_64 1:5.5.60-1.el7_5 base +[root@centos7 ~]# yum install mariadb.x86_64 -y +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Resolving Dependencies +--> Running transaction check +---> Package mariadb.x86_64 1:5.5.60-1.el7_5 will be installed +--> Finished Dependency Resolution + +Dependencies Resolved + +==================================================================================================================================================================== + Package Arch Version Repository Size +==================================================================================================================================================================== +Installing: + mariadb x86_64 1:5.5.60-1.el7_5 base 8.9 M + +Transaction Summary +==================================================================================================================================================================== +Install 1 Package + +Total download size: 8.9 M +Installed size: 49 M +Downloading packages: +mariadb-5.5.60-1.el7_5.x86_64.rpm | 8.9 MB 00:00:01 +Running transaction check +Running transaction test +Transaction test succeeded +Running transaction + Installing : 1:mariadb-5.5.60-1.el7_5.x86_64 1/1 + Verifying : 1:mariadb-5.5.60-1.el7_5.x86_64 1/1 + +Installed: + mariadb.x86_64 1:5.5.60-1.el7_5 + +Complete! +[root@centos7 ~]# yum install phpMyAdmin -y +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +No package phpMyAdmin available. +Error: Nothing to do +[root@centos7 ~]# yum list phpMyAdmin +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Error: No matching Packages to list +[root@centos7 ~]# yum list *phpMyAdmin +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Error: No matching Packages to list +[root@centos7 ~]# yum list phpMyAdmin* +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Error: No matching Packages to list +[root@centos7 ~]# yum list php* +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Installed Packages +php.x86_64 5.4.16-46.el7 @base +php-cli.x86_64 5.4.16-46.el7 @base +php-common.x86_64 5.4.16-46.el7 @base +Available Packages +php-bcmath.x86_64 5.4.16-46.el7 base +php-dba.x86_64 5.4.16-46.el7 base +php-devel.x86_64 5.4.16-46.el7 base +php-embedded.x86_64 5.4.16-46.el7 base +php-enchant.x86_64 5.4.16-46.el7 base +php-fpm.x86_64 5.4.16-46.el7 base +php-gd.x86_64 5.4.16-46.el7 base +php-intl.x86_64 5.4.16-46.el7 base +php-ldap.x86_64 5.4.16-46.el7 base +php-mbstring.x86_64 5.4.16-46.el7 base +php-mysql.x86_64 5.4.16-46.el7 base +php-mysqlnd.x86_64 5.4.16-46.el7 base +php-odbc.x86_64 5.4.16-46.el7 base +php-pdo.x86_64 5.4.16-46.el7 base +php-pear.noarch 1:1.9.4-21.el7 base +php-pecl-memcache.x86_64 3.0.8-4.el7 base +php-pgsql.x86_64 5.4.16-46.el7 base +php-process.x86_64 5.4.16-46.el7 base +php-pspell.x86_64 5.4.16-46.el7 base +php-recode.x86_64 5.4.16-46.el7 base +php-snmp.x86_64 5.4.16-46.el7 base +php-soap.x86_64 5.4.16-46.el7 base +php-xml.x86_64 5.4.16-46.el7 base +php-xmlrpc.x86_64 5.4.16-46.el7 base +[root@centos7 ~]# cd /opt/ +[root@centos7 opt]# gir clone https://github.com/Program-O/Program-O +bash: gir: command not found... +[root@centos7 opt]# git clone https://github.com/Program-O/Program-O +Cloning into 'Program-O'... +remote: Enumerating objects: 8461, done. +remote: Total 8461 (delta 0), reused 0 (delta 0), pack-reused 8461 +Receiving objects: 100% (8461/8461), 4.36 MiB | 725.00 KiB/s, done. +Resolving deltas: 100% (5478/5478), done. +[root@centos7 opt]# ll +total 4 +drwxr-xr-x. 11 root root 4096 Dec 24 20:10 Program-O +drwxr-xr-x. 2 root root 6 Oct 31 00:47 rh +[root@centos7 opt]# cd Program-O/ +[root@centos7 Program-O]# ll +total 112 +drwxr-xr-x. 7 root root 4096 Dec 24 20:10 admin +-rw-r--r--. 1 root root 586 Dec 24 20:10 aiml tag list.txt +-rw-r--r--. 1 root root 30194 Dec 24 20:10 CHANGELOG.md +drwxr-xr-x. 5 root root 75 Dec 24 20:10 chatbot +drwxr-xr-x. 2 root root 110 Dec 24 20:10 config +-rw-r--r--. 1 root root 700 Dec 24 20:10 CONTRIBUTING.MD +-rw-r--r--. 1 root root 1150 Dec 24 20:10 favicon.ico +-rw-r--r--. 1 root root 2484 Dec 24 20:10 fresh_install_README.txt +-rw-r--r--. 1 root root 1355 Dec 24 20:10 getbots.php +drwxr-xr-x. 6 root root 76 Dec 24 20:10 gui +-rw-r--r--. 1 root root 1463 Dec 24 20:10 index.php +drwxr-xr-x. 3 root root 262 Dec 24 20:10 install +drwxr-xr-x. 3 root root 201 Dec 24 20:10 library +-rw-r--r--. 1 root root 31947 Dec 24 20:10 LICENSE +drwxr-xr-x. 2 root root 23 Dec 24 20:10 logs +-rw-r--r--. 1 root root 3751 Dec 24 20:10 README.md +-rw-r--r--. 1 root root 460 Dec 24 20:10 robots.txt +drwxr-xr-x. 3 root root 141 Dec 24 20:10 scripts +-rw-r--r--. 1 root root 170 Dec 24 20:10 style.css +-rw-r--r--. 1 root root 1067 Dec 24 20:10 TODO +-rw-r--r--. 1 root root 7 Dec 24 20:10 version.txt +[root@centos7 Program-O]# yum install httpd -y +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Package httpd-2.4.6-88.el7.centos.x86_64 already installed and latest version +Nothing to do +[root@centos7 Program-O]# cd /var/www/html/ +[root@centos7 html]# git clone https://github.com/Program-O/Program-O +Cloning into 'Program-O'... +remote: Enumerating objects: 8461, done. +remote: Total 8461 (delta 0), reused 0 (delta 0), pack-reused 8461 +Receiving objects: 100% (8461/8461), 4.36 MiB | 791.00 KiB/s, done. +Resolving deltas: 100% (5478/5478), done. +[root@centos7 html]# cd Program-O/ +[root@centos7 Program-O]# ll +total 112 +drwxr-xr-x. 7 root root 4096 Dec 24 20:12 admin +-rw-r--r--. 1 root root 586 Dec 24 20:12 aiml tag list.txt +-rw-r--r--. 1 root root 30194 Dec 24 20:12 CHANGELOG.md +drwxr-xr-x. 5 root root 75 Dec 24 20:12 chatbot +drwxr-xr-x. 2 root root 110 Dec 24 20:12 config +-rw-r--r--. 1 root root 700 Dec 24 20:12 CONTRIBUTING.MD +-rw-r--r--. 1 root root 1150 Dec 24 20:12 favicon.ico +-rw-r--r--. 1 root root 2484 Dec 24 20:12 fresh_install_README.txt +-rw-r--r--. 1 root root 1355 Dec 24 20:12 getbots.php +drwxr-xr-x. 6 root root 76 Dec 24 20:12 gui +-rw-r--r--. 1 root root 1463 Dec 24 20:12 index.php +drwxr-xr-x. 3 root root 262 Dec 24 20:12 install +drwxr-xr-x. 3 root root 201 Dec 24 20:12 library +-rw-r--r--. 1 root root 31947 Dec 24 20:12 LICENSE +drwxr-xr-x. 2 root root 23 Dec 24 20:12 logs +-rw-r--r--. 1 root root 3751 Dec 24 20:12 README.md +-rw-r--r--. 1 root root 460 Dec 24 20:12 robots.txt +drwxr-xr-x. 3 root root 141 Dec 24 20:12 scripts +-rw-r--r--. 1 root root 170 Dec 24 20:12 style.css +-rw-r--r--. 1 root root 1067 Dec 24 20:12 TODO +-rw-r--r--. 1 root root 7 Dec 24 20:12 version.txt +[root@centos7 Program-O]# systemctl status httpd +? httpd.service - The Apache HTTP Server + Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) + Active: inactive (dead) + Docs: man:httpd(8) + man:apachectl(8) +[root@centos7 Program-O]# systemctl staart httpd +Unknown operation 'staart'. +[root@centos7 Program-O]# systemctl start httpd +[root@centos7 Program-O]# systemctl status httpd +? httpd.service - The Apache HTTP Server + Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) + Active: active (running) since Mon 2018-12-24 20:13:21 IST; 1min 52s ago + Docs: man:httpd(8) + man:apachectl(8) + Main PID: 76447 (httpd) + Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" + Tasks: 6 + CGroup: /system.slice/httpd.service + +-76447 /usr/sbin/httpd -DFOREGROUND + +-76453 /usr/sbin/httpd -DFOREGROUND + +-76454 /usr/sbin/httpd -DFOREGROUND + +-76455 /usr/sbin/httpd -DFOREGROUND + +-76456 /usr/sbin/httpd -DFOREGROUND + +-76457 /usr/sbin/httpd -DFOREGROUND + +Dec 24 20:13:19 centos7 systemd[1]: Starting The Apache HTTP Server... +Dec 24 20:13:20 centos7 httpd[76447]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::1f35:7cec:21cc...is message +Dec 24 20:13:21 centos7 systemd[1]: Started The Apache HTTP Server. +Hint: Some lines were ellipsized, use -l to show in full. +[root@centos7 Program-O]# iptables -F +[root@centos7 Program-O]# ip a +1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever +2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 + link/ether 00:50:56:39:02:56 brd ff:ff:ff:ff:ff:ff + inet 192.168.140.128/24 brd 192.168.140.255 scope global noprefixroute dynamic ens33 + valid_lft 1569sec preferred_lft 1569sec + inet6 fe80::1f35:7cec:21cc:b67d/64 scope link noprefixroute + valid_lft forever preferred_lft forever +3: virbr0: mtu 1500 qdisc noqueue state DOWN group default qlen 1000 + link/ether 52:54:00:9d:34:53 brd ff:ff:ff:ff:ff:ff + inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 + valid_lft forever preferred_lft forever +4: virbr0-nic: mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000 + link/ether 52:54:00:9d:34:53 brd ff:ff:ff:ff:ff:ff +[root@centos7 Program-O]# pwd +/var/www/html/Program-O +[root@centos7 Program-O]# diff --git a/Program-Output-Files/Program-O Putty SSH Logs 2.txt b/Program-Output-Files/Program-O Putty SSH Logs 2.txt new file mode 100644 index 0000000..985b834 --- /dev/null +++ b/Program-Output-Files/Program-O Putty SSH Logs 2.txt @@ -0,0 +1,3911 @@ +login as: root +root@192.168.140.128's password: +Last login: Mon Dec 24 19:49:02 2018 from 192.168.140.1 +[root@centos7 ~]# history + 1 yum update + 2 ps aux |grep yum + 3 kill -9 2682 + 4 yum update + 5 yum list php + 6 yum install php -y + 7 yum list mariadb + 8 yum install mariadb.x86_64 -y + 9 yum install phpMyAdmin -y + 10 yum list phpMyAdmin + 11 yum list *phpMyAdmin + 12 yum list phpMyAdmin* + 13 yum list php* + 14 cd /opt/ + 15 gir clone https://github.com/Program-O/Program-O + 16 git clone https://github.com/Program-O/Program-O + 17 ll + 18 cd Program-O/ + 19 ll + 20 cd /var/www/html/ + 21 git clone https://github.com/Program-O/Program-O + 22 cd Program-O/ + 23 ll + 24 systemctl status httpd + 25 systemctl staart httpd + 26 systemctl start httpd + 27 systemctl status httpd + 28 iptables -F + 29 ip a + 30 pwd + 31 poweroff + 32 history +[root@centos7 ~]# systemctl status httpd +? httpd.service - The Apache HTTP Server + Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) + Active: inactive (dead) + Docs: man:httpd(8) + man:apachectl(8) +[root@centos7 ~]# systemctl enable httpd +Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. +[root@centos7 ~]# systemctl status httpd +? httpd.service - The Apache HTTP Server + Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) + Active: inactive (dead) + Docs: man:httpd(8) + man:apachectl(8) +[root@centos7 ~]# systemctl start httpd +[root@centos7 ~]# systemctl status httpd +? httpd.service - The Apache HTTP Server + Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) + Active: active (running) since Wed 2018-12-26 10:58:08 IST; 3s ago + Docs: man:httpd(8) + man:apachectl(8) + Main PID: 11403 (httpd) + Status: "Processing requests..." + Tasks: 6 + CGroup: /system.slice/httpd.service + +-11403 /usr/sbin/httpd -DFOREGROUND + +-11406 /usr/sbin/httpd -DFOREGROUND + +-11407 /usr/sbin/httpd -DFOREGROUND + +-11408 /usr/sbin/httpd -DFOREGROUND + +-11410 /usr/sbin/httpd -DFOREGROUND + +-11411 /usr/sbin/httpd -DFOREGROUND + +Dec 26 10:58:05 centos7 systemd[1]: Starting The Apache HTTP Server... +Dec 26 10:58:07 centos7 httpd[11403]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::1f35:7cec:21cc:b...is message +Dec 26 10:58:08 centos7 systemd[1]: Started The Apache HTTP Server. +Hint: Some lines were ellipsized, use -l to show in full. +[root@centos7 ~]# cd /var/www/html/ +[root@centos7 html]# ll +total 4 +drwxr-xr-x. 11 root root 4096 Dec 24 20:12 Program-O +[root@centos7 html]# cd Program-O/ +[root@centos7 Program-O]# ll +total 112 +drwxr-xr-x. 7 root root 4096 Dec 24 20:12 admin +-rw-r--r--. 1 root root 586 Dec 24 20:12 aiml tag list.txt +-rw-r--r--. 1 root root 30194 Dec 24 20:12 CHANGELOG.md +drwxr-xr-x. 5 root root 75 Dec 24 20:12 chatbot +drwxr-xr-x. 2 root root 110 Dec 24 20:12 config +-rw-r--r--. 1 root root 700 Dec 24 20:12 CONTRIBUTING.MD +-rw-r--r--. 1 root root 1150 Dec 24 20:12 favicon.ico +-rw-r--r--. 1 root root 2484 Dec 24 20:12 fresh_install_README.txt +-rw-r--r--. 1 root root 1355 Dec 24 20:12 getbots.php +drwxr-xr-x. 6 root root 76 Dec 24 20:12 gui +-rw-r--r--. 1 root root 1463 Dec 24 20:12 index.php +drwxr-xr-x. 3 root root 262 Dec 24 20:12 install +drwxr-xr-x. 3 root root 201 Dec 24 20:12 library +-rw-r--r--. 1 root root 31947 Dec 24 20:12 LICENSE +drwxr-xr-x. 2 root root 23 Dec 24 20:12 logs +-rw-r--r--. 1 root root 3751 Dec 24 20:12 README.md +-rw-r--r--. 1 root root 460 Dec 24 20:12 robots.txt +drwxr-xr-x. 3 root root 141 Dec 24 20:12 scripts +-rw-r--r--. 1 root root 170 Dec 24 20:12 style.css +-rw-r--r--. 1 root root 1067 Dec 24 20:12 TODO +-rw-r--r--. 1 root root 7 Dec 24 20:12 version.txt +[root@centos7 Program-O]# iptables -F +[root@centos7 Program-O]# +[root@centos7 Program-O]# yum search phpMyAdmin +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Warning: No matches found for: phpMyAdmin +No matches found +[root@centos7 Program-O]# yum search phpmyadmin +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Warning: No matches found for: phpmyadmin +No matches found +[root@centos7 Program-O]# yum search php* +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Warning: No matches found for: php* +No matches found +[root@centos7 Program-O]# yum list php* +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Installed Packages +php.x86_64 5.4.16-46.el7 @base +php-cli.x86_64 5.4.16-46.el7 @base +php-common.x86_64 5.4.16-46.el7 @base +Available Packages +php-bcmath.x86_64 5.4.16-46.el7 base +php-dba.x86_64 5.4.16-46.el7 base +php-devel.x86_64 5.4.16-46.el7 base +php-embedded.x86_64 5.4.16-46.el7 base +php-enchant.x86_64 5.4.16-46.el7 base +php-fpm.x86_64 5.4.16-46.el7 base +php-gd.x86_64 5.4.16-46.el7 base +php-intl.x86_64 5.4.16-46.el7 base +php-ldap.x86_64 5.4.16-46.el7 base +php-mbstring.x86_64 5.4.16-46.el7 base +php-mysql.x86_64 5.4.16-46.el7 base +php-mysqlnd.x86_64 5.4.16-46.el7 base +php-odbc.x86_64 5.4.16-46.el7 base +php-pdo.x86_64 5.4.16-46.el7 base +php-pear.noarch 1:1.9.4-21.el7 base +php-pecl-memcache.x86_64 3.0.8-4.el7 base +php-pgsql.x86_64 5.4.16-46.el7 base +php-process.x86_64 5.4.16-46.el7 base +php-pspell.x86_64 5.4.16-46.el7 base +php-recode.x86_64 5.4.16-46.el7 base +php-snmp.x86_64 5.4.16-46.el7 base +php-soap.x86_64 5.4.16-46.el7 base +php-xml.x86_64 5.4.16-46.el7 base +php-xmlrpc.x86_64 5.4.16-46.el7 base +[root@centos7 Program-O]# yum install php-pdo.x86_64 php-mysql.x86_64 php-devel.x86_64 +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Resolving Dependencies +--> Running transaction check +---> Package php-devel.x86_64 0:5.4.16-46.el7 will be installed +--> Processing Dependency: pcre-devel(x86-64) for package: php-devel-5.4.16-46.el7.x86_64 +---> Package php-mysql.x86_64 0:5.4.16-46.el7 will be installed +---> Package php-pdo.x86_64 0:5.4.16-46.el7 will be installed +--> Running transaction check +---> Package pcre-devel.x86_64 0:8.32-17.el7 will be installed +--> Finished Dependency Resolution + +Dependencies Resolved + +====================================================================================================================================================================== + Package Arch Version Repository Size +====================================================================================================================================================================== +Installing: + php-devel x86_64 5.4.16-46.el7 base 602 k + php-mysql x86_64 5.4.16-46.el7 base 101 k + php-pdo x86_64 5.4.16-46.el7 base 99 k +Installing for dependencies: + pcre-devel x86_64 8.32-17.el7 base 480 k + +Transaction Summary +====================================================================================================================================================================== +Install 3 Packages (+1 Dependent package) + +Total download size: 1.3 M +Installed size: 5.8 M +Is this ok [y/d/N]: y +Downloading packages: +(1/4): pcre-devel-8.32-17.el7.x86_64.rpm | 480 kB 00:00:00 +(2/4): php-mysql-5.4.16-46.el7.x86_64.rpm | 101 kB 00:00:00 +(3/4): php-pdo-5.4.16-46.el7.x86_64.rpm | 99 kB 00:00:00 +(4/4): php-devel-5.4.16-46.el7.x86_64.rpm | 602 kB 00:00:01 +---------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Total 821 kB/s | 1.3 MB 00:00:01 +Running transaction check +Running transaction test +Transaction test succeeded +Running transaction + Installing : php-pdo-5.4.16-46.el7.x86_64 1/4 + Installing : pcre-devel-8.32-17.el7.x86_64 2/4 + Installing : php-devel-5.4.16-46.el7.x86_64 3/4 + Installing : php-mysql-5.4.16-46.el7.x86_64 4/4 + Verifying : pcre-devel-8.32-17.el7.x86_64 1/4 + Verifying : php-mysql-5.4.16-46.el7.x86_64 2/4 + Verifying : php-pdo-5.4.16-46.el7.x86_64 3/4 + Verifying : php-devel-5.4.16-46.el7.x86_64 4/4 + +Installed: + php-devel.x86_64 0:5.4.16-46.el7 php-mysql.x86_64 0:5.4.16-46.el7 php-pdo.x86_64 0:5.4.16-46.el7 + +Dependency Installed: + pcre-devel.x86_64 0:8.32-17.el7 + +Complete! +[root@centos7 Program-O]# rpm -ql php-pdo-5.4.16-46.el7.x86_64 +/etc/php.d/pdo.ini +/etc/php.d/pdo_sqlite.ini +/etc/php.d/sqlite3.ini +/usr/lib64/php/modules/pdo.so +/usr/lib64/php/modules/pdo_sqlite.so +/usr/lib64/php/modules/sqlite3.so +[root@centos7 Program-O]# vi /etc/php.d/pdo.ini +[root@centos7 Program-O]# systemctl restart httpd +[root@centos7 Program-O]# yum list php* |grep string +php-mbstring.x86_64 5.4.16-46.el7 base +[root@centos7 Program-O]# yum install php-mbstring.x86_64 -y +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Resolving Dependencies +--> Running transaction check +---> Package php-mbstring.x86_64 0:5.4.16-46.el7 will be installed +--> Finished Dependency Resolution + +Dependencies Resolved + +====================================================================================================================================================================== + Package Arch Version Repository Size +====================================================================================================================================================================== +Installing: + php-mbstring x86_64 5.4.16-46.el7 base 505 k + +Transaction Summary +====================================================================================================================================================================== +Install 1 Package + +Total download size: 505 k +Installed size: 1.3 M +Downloading packages: +php-mbstring-5.4.16-46.el7.x86_64.rpm | 505 kB 00:00:00 +Running transaction check +Running transaction test +Transaction test succeeded +Running transaction + Installing : php-mbstring-5.4.16-46.el7.x86_64 1/1 + Verifying : php-mbstring-5.4.16-46.el7.x86_64 1/1 + +Installed: + php-mbstring.x86_64 0:5.4.16-46.el7 + +Complete! +[root@centos7 Program-O]# cd .. +[root@centos7 html]# ll +total 4 +drwxr-xr-x. 11 root root 4096 Dec 24 20:12 Program-O +[root@centos7 html]# chmod a+w Program-O/ +[root@centos7 html]# ll +total 4 +drwxrwxrwx. 11 root root 4096 Dec 24 20:12 Program-O +[root@centos7 html]# ll Program-O/ +total 112 +drwxr-xr-x. 7 root root 4096 Dec 24 20:12 admin +-rw-r--r--. 1 root root 586 Dec 24 20:12 aiml tag list.txt +-rw-r--r--. 1 root root 30194 Dec 24 20:12 CHANGELOG.md +drwxr-xr-x. 5 root root 75 Dec 24 20:12 chatbot +drwxr-xr-x. 2 root root 110 Dec 24 20:12 config +-rw-r--r--. 1 root root 700 Dec 24 20:12 CONTRIBUTING.MD +-rw-r--r--. 1 root root 1150 Dec 24 20:12 favicon.ico +-rw-r--r--. 1 root root 2484 Dec 24 20:12 fresh_install_README.txt +-rw-r--r--. 1 root root 1355 Dec 24 20:12 getbots.php +drwxr-xr-x. 6 root root 76 Dec 24 20:12 gui +-rw-r--r--. 1 root root 1463 Dec 24 20:12 index.php +drwxr-xr-x. 3 root root 262 Dec 24 20:12 install +drwxr-xr-x. 3 root root 201 Dec 24 20:12 library +-rw-r--r--. 1 root root 31947 Dec 24 20:12 LICENSE +drwxr-xr-x. 2 root root 23 Dec 24 20:12 logs +-rw-r--r--. 1 root root 3751 Dec 24 20:12 README.md +-rw-r--r--. 1 root root 460 Dec 24 20:12 robots.txt +drwxr-xr-x. 3 root root 141 Dec 24 20:12 scripts +-rw-r--r--. 1 root root 170 Dec 24 20:12 style.css +-rw-r--r--. 1 root root 1067 Dec 24 20:12 TODO +-rw-r--r--. 1 root root 7 Dec 24 20:12 version.txt +[root@centos7 html]# cd Program-O/ +[root@centos7 Program-O]# chmod a+w * +[root@centos7 Program-O]# systemctl restart httpd +[root@centos7 Program-O]# chmod a+w chatbot/debug/ +[root@centos7 Program-O]# systemctl restart httpd +[root@centos7 Program-O]# ll +total 112 +drwxrwxrwx. 7 root root 4096 Dec 24 20:12 admin +-rw-rw-rw-. 1 root root 586 Dec 24 20:12 aiml tag list.txt +-rw-rw-rw-. 1 root root 30194 Dec 24 20:12 CHANGELOG.md +drwxrwxrwx. 5 root root 75 Dec 24 20:12 chatbot +drwxrwxrwx. 2 root root 110 Dec 24 20:12 config +-rw-rw-rw-. 1 root root 700 Dec 24 20:12 CONTRIBUTING.MD +-rw-rw-rw-. 1 root root 1150 Dec 24 20:12 favicon.ico +-rw-rw-rw-. 1 root root 2484 Dec 24 20:12 fresh_install_README.txt +-rw-rw-rw-. 1 root root 1355 Dec 24 20:12 getbots.php +drwxrwxrwx. 6 root root 76 Dec 24 20:12 gui +-rw-rw-rw-. 1 root root 1463 Dec 24 20:12 index.php +drwxrwxrwx. 3 root root 262 Dec 24 20:12 install +drwxrwxrwx. 3 root root 201 Dec 24 20:12 library +-rw-rw-rw-. 1 root root 31947 Dec 24 20:12 LICENSE +drwxrwxrwx. 2 root root 23 Dec 24 20:12 logs +-rw-rw-rw-. 1 root root 3751 Dec 24 20:12 README.md +-rw-rw-rw-. 1 root root 460 Dec 24 20:12 robots.txt +drwxrwxrwx. 3 root root 141 Dec 24 20:12 scripts +-rw-rw-rw-. 1 root root 170 Dec 24 20:12 style.css +-rw-rw-rw-. 1 root root 1067 Dec 24 20:12 TODO +-rw-rw-rw-. 1 root root 7 Dec 24 20:12 version.txt +[root@centos7 Program-O]# vi /etc/selinux/config +[root@centos7 Program-O]# ll chatbot/ +total 12 +drwxr-xr-x. 8 root root 142 Dec 24 20:12 addons +-rw-r--r--. 1 root root 10839 Dec 24 20:12 conversation_start.php +drwxr-xr-x. 5 root root 50 Dec 24 20:12 core +drwxrwxrwx. 2 root root 60 Dec 24 20:12 debug +[root@centos7 Program-O]# cat /etc/passwd +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/bin:/sbin/nologin +daemon:x:2:2:daemon:/sbin:/sbin/nologin +adm:x:3:4:adm:/var/adm:/sbin/nologin +lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin +sync:x:5:0:sync:/sbin:/bin/sync +shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown +halt:x:7:0:halt:/sbin:/sbin/halt +mail:x:8:12:mail:/var/spool/mail:/sbin/nologin +operator:x:11:0:operator:/root:/sbin/nologin +games:x:12:100:games:/usr/games:/sbin/nologin +ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin +nobody:x:99:99:Nobody:/:/sbin/nologin +systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin +dbus:x:81:81:System message bus:/:/sbin/nologin +polkitd:x:999:998:User for polkitd:/:/sbin/nologin +libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin +rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin +colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin +gluster:x:996:993:GlusterFS daemons:/var/run/gluster:/sbin/nologin +saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin +abrt:x:173:173::/etc/abrt:/sbin/nologin +setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin +rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin +pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin +rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin +nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin +unbound:x:993:988:Unbound DNS resolver:/etc/unbound:/sbin/nologin +chrony:x:992:987::/var/lib/chrony:/sbin/nologin +qemu:x:107:107:qemu user:/:/sbin/nologin +radvd:x:75:75:radvd user:/:/sbin/nologin +tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin +usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin +geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin +ntp:x:38:38::/etc/ntp:/sbin/nologin +sssd:x:990:984:User for sssd:/:/sbin/nologin +gdm:x:42:42::/var/lib/gdm:/sbin/nologin +gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin +sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin +avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin +postfix:x:89:89::/var/spool/postfix:/sbin/nologin +tcpdump:x:72:72::/:/sbin/nologin +manish:x:1000:1000:Manish:/home/manish:/bin/bash +saned:x:988:982:SANE scanner daemon user:/usr/share/sane:/sbin/nologin +apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin +[root@centos7 Program-O]# cd .. +[root@centos7 html]# chown -R apache:apache Program-O/ +[root@centos7 html]# ll +total 4 +drwxrwxrwx. 11 apache apache 4096 Dec 24 20:12 Program-O +[root@centos7 html]# cd - +/var/www/html/Program-O +[root@centos7 Program-O]# ll +total 112 +drwxrwxrwx. 7 apache apache 4096 Dec 24 20:12 admin +-rw-rw-rw-. 1 apache apache 586 Dec 24 20:12 aiml tag list.txt +-rw-rw-rw-. 1 apache apache 30194 Dec 24 20:12 CHANGELOG.md +drwxrwxrwx. 5 apache apache 75 Dec 24 20:12 chatbot +drwxrwxrwx. 2 apache apache 110 Dec 24 20:12 config +-rw-rw-rw-. 1 apache apache 700 Dec 24 20:12 CONTRIBUTING.MD +-rw-rw-rw-. 1 apache apache 1150 Dec 24 20:12 favicon.ico +-rw-rw-rw-. 1 apache apache 2484 Dec 24 20:12 fresh_install_README.txt +-rw-rw-rw-. 1 apache apache 1355 Dec 24 20:12 getbots.php +drwxrwxrwx. 6 apache apache 76 Dec 24 20:12 gui +-rw-rw-rw-. 1 apache apache 1463 Dec 24 20:12 index.php +drwxrwxrwx. 3 apache apache 262 Dec 24 20:12 install +drwxrwxrwx. 3 apache apache 201 Dec 24 20:12 library +-rw-rw-rw-. 1 apache apache 31947 Dec 24 20:12 LICENSE +drwxrwxrwx. 2 apache apache 23 Dec 24 20:12 logs +-rw-rw-rw-. 1 apache apache 3751 Dec 24 20:12 README.md +-rw-rw-rw-. 1 apache apache 460 Dec 24 20:12 robots.txt +drwxrwxrwx. 3 apache apache 141 Dec 24 20:12 scripts +-rw-rw-rw-. 1 apache apache 170 Dec 24 20:12 style.css +-rw-rw-rw-. 1 apache apache 1067 Dec 24 20:12 TODO +-rw-rw-rw-. 1 apache apache 7 Dec 24 20:12 version.txt +[root@centos7 Program-O]# systemctl restart httpd +[root@centos7 Program-O]# reboot +login as: root +root@192.168.140.128's password: +Last login: Wed Dec 26 10:57:21 2018 from 192.168.140.1 +ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1545802041 +[root@centos7 ~]# systemctl status httpd +? httpd.service - The Apache HTTP Server + Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) + Active: active (running) since Wed 2018-12-26 11:48:43 IST; 6min ago + Docs: man:httpd(8) + man:apachectl(8) + Main PID: 9622 (httpd) + Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" + Tasks: 6 + CGroup: /system.slice/httpd.service + +-9622 /usr/sbin/httpd -DFOREGROUND + +-9910 /usr/sbin/httpd -DFOREGROUND + +-9913 /usr/sbin/httpd -DFOREGROUND + +-9914 /usr/sbin/httpd -DFOREGROUND + +-9915 /usr/sbin/httpd -DFOREGROUND + +-9917 /usr/sbin/httpd -DFOREGROUND + +Dec 26 11:48:41 centos7 systemd[1]: Starting The Apache HTTP Server... +Dec 26 11:48:42 centos7 httpd[9622]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::1f35:7cec:21cc:b6...is message +Dec 26 11:48:43 centos7 systemd[1]: Started The Apache HTTP Server. +Hint: Some lines were ellipsized, use -l to show in full. +[root@centos7 ~]# iptables -F +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# mysqladmin -u root password password +mysqladmin: connect to server at 'localhost' failed +error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)' +Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists! +[root@centos7 ~]# systemctl start mysql +Failed to start mysql.service: Unit not found. +[root@centos7 ~]# systemctl start mariadb +Failed to start mariadb.service: Unit not found. +[root@centos7 ~]# yum list mariadb* +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Installed Packages +mariadb.x86_64 1:5.5.60-1.el7_5 @base +mariadb-libs.x86_64 1:5.5.60-1.el7_5 @base +Available Packages +mariadb-bench.x86_64 1:5.5.60-1.el7_5 base +mariadb-devel.i686 1:5.5.60-1.el7_5 base +mariadb-devel.x86_64 1:5.5.60-1.el7_5 base +mariadb-embedded.i686 1:5.5.60-1.el7_5 base +mariadb-embedded.x86_64 1:5.5.60-1.el7_5 base +mariadb-embedded-devel.i686 1:5.5.60-1.el7_5 base +mariadb-embedded-devel.x86_64 1:5.5.60-1.el7_5 base +mariadb-libs.i686 1:5.5.60-1.el7_5 base +mariadb-server.x86_64 1:5.5.60-1.el7_5 base +mariadb-test.x86_64 1:5.5.60-1.el7_5 base +[root@centos7 ~]# rpm -ql mariadb.x86_64 +/etc/my.cnf.d/client.cnf +/usr/bin/aria_chk +/usr/bin/aria_dump_log +/usr/bin/aria_ftdump +/usr/bin/aria_pack +/usr/bin/aria_read_log +/usr/bin/msql2mysql +/usr/bin/my_print_defaults +/usr/bin/mysql +/usr/bin/mysql_find_rows +/usr/bin/mysql_waitpid +/usr/bin/mysqlaccess +/usr/bin/mysqladmin +/usr/bin/mysqlbinlog +/usr/bin/mysqlcheck +/usr/bin/mysqldump +/usr/bin/mysqlimport +/usr/bin/mysqlshow +/usr/bin/mysqlslap +/usr/share/doc/mariadb-5.5.60 +/usr/share/doc/mariadb-5.5.60/COPYING +/usr/share/doc/mariadb-5.5.60/COPYING.Google +/usr/share/doc/mariadb-5.5.60/COPYING.Percona +/usr/share/doc/mariadb-5.5.60/README +/usr/share/doc/mariadb-5.5.60/README.mysql-docs +/usr/share/doc/mariadb-5.5.60/README.mysql-license +/usr/share/man/man1/aria_chk.1.gz +/usr/share/man/man1/aria_dump_log.1.gz +/usr/share/man/man1/aria_ftdump.1.gz +/usr/share/man/man1/aria_pack.1.gz +/usr/share/man/man1/aria_read_log.1.gz +/usr/share/man/man1/my_print_defaults.1.gz +/usr/share/man/man1/mysql.1.gz +/usr/share/man/man1/mysql_find_rows.1.gz +/usr/share/man/man1/mysql_waitpid.1.gz +/usr/share/man/man1/mysqlaccess.1.gz +/usr/share/man/man1/mysqladmin.1.gz +/usr/share/man/man1/mysqldump.1.gz +/usr/share/man/man1/mysqlshow.1.gz +/usr/share/man/man1/mysqlslap.1.gz +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# yum install mariadb-server.x86_64 -y +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Resolving Dependencies +--> Running transaction check +---> Package mariadb-server.x86_64 1:5.5.60-1.el7_5 will be installed +--> Processing Dependency: perl-DBI for package: 1:mariadb-server-5.5.60-1.el7_5.x86_64 +--> Processing Dependency: perl-DBD-MySQL for package: 1:mariadb-server-5.5.60-1.el7_5.x86_64 +--> Processing Dependency: perl(DBI) for package: 1:mariadb-server-5.5.60-1.el7_5.x86_64 +--> Running transaction check +---> Package perl-DBD-MySQL.x86_64 0:4.023-6.el7 will be installed +---> Package perl-DBI.x86_64 0:1.627-4.el7 will be installed +--> Processing Dependency: perl(RPC::PlServer) >= 0.2001 for package: perl-DBI-1.627-4.el7.x86_64 +--> Processing Dependency: perl(RPC::PlClient) >= 0.2000 for package: perl-DBI-1.627-4.el7.x86_64 +--> Running transaction check +---> Package perl-PlRPC.noarch 0:0.2020-14.el7 will be installed +--> Processing Dependency: perl(Net::Daemon) >= 0.13 for package: perl-PlRPC-0.2020-14.el7.noarch +--> Processing Dependency: perl(Net::Daemon::Test) for package: perl-PlRPC-0.2020-14.el7.noarch +--> Processing Dependency: perl(Net::Daemon::Log) for package: perl-PlRPC-0.2020-14.el7.noarch +--> Processing Dependency: perl(Compress::Zlib) for package: perl-PlRPC-0.2020-14.el7.noarch +--> Running transaction check +---> Package perl-IO-Compress.noarch 0:2.061-2.el7 will be installed +--> Processing Dependency: perl(Compress::Raw::Zlib) >= 2.061 for package: perl-IO-Compress-2.061-2.el7.noarch +--> Processing Dependency: perl(Compress::Raw::Bzip2) >= 2.061 for package: perl-IO-Compress-2.061-2.el7.noarch +---> Package perl-Net-Daemon.noarch 0:0.48-5.el7 will be installed +--> Running transaction check +---> Package perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 will be installed +---> Package perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 will be installed +--> Finished Dependency Resolution + +Dependencies Resolved + +====================================================================================================================================================================== + Package Arch Version Repository Size +====================================================================================================================================================================== +Installing: + mariadb-server x86_64 1:5.5.60-1.el7_5 base 11 M +Installing for dependencies: + perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k + perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k + perl-DBD-MySQL x86_64 4.023-6.el7 base 140 k + perl-DBI x86_64 1.627-4.el7 base 802 k + perl-IO-Compress noarch 2.061-2.el7 base 260 k + perl-Net-Daemon noarch 0.48-5.el7 base 51 k + perl-PlRPC noarch 0.2020-14.el7 base 36 k + +Transaction Summary +====================================================================================================================================================================== +Install 1 Package (+7 Dependent packages) + +Total download size: 12 M +Installed size: 62 M +Downloading packages: +(1/8): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm | 32 kB 00:00:00 +(2/8): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm | 57 kB 00:00:00 +(3/8): perl-DBD-MySQL-4.023-6.el7.x86_64.rpm | 140 kB 00:00:00 +(4/8): mariadb-server-5.5.60-1.el7_5.x86_64.rpm | 11 MB 00:00:00 +(5/8): perl-IO-Compress-2.061-2.el7.noarch.rpm | 260 kB 00:00:00 +(6/8): perl-Net-Daemon-0.48-5.el7.noarch.rpm | 51 kB 00:00:00 +(7/8): perl-PlRPC-0.2020-14.el7.noarch.rpm | 36 kB 00:00:00 +(8/8): perl-DBI-1.627-4.el7.x86_64.rpm | 802 kB 00:00:00 +---------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Total 7.0 MB/s | 12 MB 00:00:01 +Running transaction check +Running transaction test +Transaction test succeeded +Running transaction + Installing : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 1/8 + Installing : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 2/8 + Installing : perl-IO-Compress-2.061-2.el7.noarch 3/8 + Installing : perl-Net-Daemon-0.48-5.el7.noarch 4/8 + Installing : perl-PlRPC-0.2020-14.el7.noarch 5/8 + Installing : perl-DBI-1.627-4.el7.x86_64 6/8 + Installing : perl-DBD-MySQL-4.023-6.el7.x86_64 7/8 + Installing : 1:mariadb-server-5.5.60-1.el7_5.x86_64 8/8 + Verifying : 1:mariadb-server-5.5.60-1.el7_5.x86_64 1/8 + Verifying : perl-Net-Daemon-0.48-5.el7.noarch 2/8 + Verifying : perl-DBD-MySQL-4.023-6.el7.x86_64 3/8 + Verifying : perl-IO-Compress-2.061-2.el7.noarch 4/8 + Verifying : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 5/8 + Verifying : perl-DBI-1.627-4.el7.x86_64 6/8 + Verifying : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 7/8 + Verifying : perl-PlRPC-0.2020-14.el7.noarch 8/8 + +Installed: + mariadb-server.x86_64 1:5.5.60-1.el7_5 + +Dependency Installed: + perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7 perl-DBI.x86_64 0:1.627-4.el7 + perl-IO-Compress.noarch 0:2.061-2.el7 perl-Net-Daemon.noarch 0:0.48-5.el7 perl-PlRPC.noarch 0:0.2020-14.el7 + +Complete! +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# rpm -ql mariadb-server.x86_64 +/etc/logrotate.d/mariadb +/etc/my.cnf.d/server.cnf +/usr/bin/innochecksum +/usr/bin/myisam_ftdump +/usr/bin/myisamchk +/usr/bin/myisamlog +/usr/bin/myisampack +/usr/bin/mysql_convert_table_format +/usr/bin/mysql_fix_extensions +/usr/bin/mysql_install_db +/usr/bin/mysql_plugin +/usr/bin/mysql_secure_installation +/usr/bin/mysql_setpermission +/usr/bin/mysql_tzinfo_to_sql +/usr/bin/mysql_upgrade +/usr/bin/mysql_zap +/usr/bin/mysqlbug +/usr/bin/mysqld_multi +/usr/bin/mysqld_safe +/usr/bin/mysqld_safe_helper +/usr/bin/mysqldumpslow +/usr/bin/mysqlhotcopy +/usr/bin/mysqltest +/usr/bin/perror +/usr/bin/replace +/usr/bin/resolve_stack_dump +/usr/bin/resolveip +/usr/lib/systemd/system/mariadb.service +/usr/lib/tmpfiles.d/mariadb.conf +/usr/lib64/mysql/INFO_BIN +/usr/lib64/mysql/INFO_SRC +/usr/lib64/mysql/mysqlbug +/usr/lib64/mysql/plugin +/usr/lib64/mysql/plugin/adt_null.so +/usr/lib64/mysql/plugin/auth_0x0100.so +/usr/lib64/mysql/plugin/auth_pam.so +/usr/lib64/mysql/plugin/auth_socket.so +/usr/lib64/mysql/plugin/auth_test_plugin.so +/usr/lib64/mysql/plugin/daemon_example.ini +/usr/lib64/mysql/plugin/dialog_examples.so +/usr/lib64/mysql/plugin/ha_innodb.so +/usr/lib64/mysql/plugin/ha_sphinx.so +/usr/lib64/mysql/plugin/handlersocket.so +/usr/lib64/mysql/plugin/libdaemon_example.so +/usr/lib64/mysql/plugin/mypluglib.so +/usr/lib64/mysql/plugin/qa_auth_client.so +/usr/lib64/mysql/plugin/qa_auth_interface.so +/usr/lib64/mysql/plugin/qa_auth_server.so +/usr/lib64/mysql/plugin/query_cache_info.so +/usr/lib64/mysql/plugin/semisync_master.so +/usr/lib64/mysql/plugin/semisync_slave.so +/usr/lib64/mysql/plugin/server_audit.so +/usr/lib64/mysql/plugin/sphinx.so +/usr/lib64/mysql/plugin/sql_errlog.so +/usr/libexec/mariadb-prepare-db-dir +/usr/libexec/mariadb-wait-ready +/usr/libexec/mysqld +/usr/share/man/man1/innochecksum.1.gz +/usr/share/man/man1/msql2mysql.1.gz +/usr/share/man/man1/myisam_ftdump.1.gz +/usr/share/man/man1/myisamchk.1.gz +/usr/share/man/man1/myisamlog.1.gz +/usr/share/man/man1/myisampack.1.gz +/usr/share/man/man1/mysql.server.1.gz +/usr/share/man/man1/mysql_convert_table_format.1.gz +/usr/share/man/man1/mysql_fix_extensions.1.gz +/usr/share/man/man1/mysql_install_db.1.gz +/usr/share/man/man1/mysql_plugin.1.gz +/usr/share/man/man1/mysql_secure_installation.1.gz +/usr/share/man/man1/mysql_setpermission.1.gz +/usr/share/man/man1/mysql_tzinfo_to_sql.1.gz +/usr/share/man/man1/mysql_upgrade.1.gz +/usr/share/man/man1/mysql_zap.1.gz +/usr/share/man/man1/mysqlbinlog.1.gz +/usr/share/man/man1/mysqlbug.1.gz +/usr/share/man/man1/mysqlcheck.1.gz +/usr/share/man/man1/mysqld_multi.1.gz +/usr/share/man/man1/mysqld_safe.1.gz +/usr/share/man/man1/mysqldumpslow.1.gz +/usr/share/man/man1/mysqlhotcopy.1.gz +/usr/share/man/man1/mysqlimport.1.gz +/usr/share/man/man1/mysqltest.1.gz +/usr/share/man/man1/perror.1.gz +/usr/share/man/man1/replace.1.gz +/usr/share/man/man1/resolve_stack_dump.1.gz +/usr/share/man/man1/resolveip.1.gz +/usr/share/man/man8/mysqld.8.gz +/usr/share/mysql/README.mysql-cnf +/usr/share/mysql/errmsg-utf8.txt +/usr/share/mysql/fill_help_tables.sql +/usr/share/mysql/my-huge.cnf +/usr/share/mysql/my-innodb-heavy-4G.cnf +/usr/share/mysql/my-large.cnf +/usr/share/mysql/my-medium.cnf +/usr/share/mysql/my-small.cnf +/usr/share/mysql/mysql_performance_tables.sql +/usr/share/mysql/mysql_system_tables.sql +/usr/share/mysql/mysql_system_tables_data.sql +/usr/share/mysql/mysql_test_data_timezone.sql +/var/lib/mysql +/var/log/mariadb +/var/log/mariadb/mariadb.log +/var/run/mariadb +[root@centos7 ~]# cat /etc/logrotate.d/mariadb +# This logname can be set in /etc/my.cnf +# by setting the variable "log-error" +# in the [mysqld_safe] section as follows: +# +# [mysqld_safe] +# log-error=/var/log/mariadb/mariadb.log +# +# If the root user has a password you have to create a +# /root/.my.cnf configuration file with the following +# content: +# +# [mysqladmin] +# password = +# user= root +# +# where "" is the password. +# +# ATTENTION: This /root/.my.cnf should be readable ONLY +# for root ! + +# Then, un-comment the following lines to enable rotation of mysql's log file: + +#/var/log/mariadb/mariadb.log { +# create 640 mysql mysql +# notifempty +# daily +# rotate 3 +# missingok +# compress +# postrotate +# # just if mysqld is really running +# if test -x /usr/bin/mysqladmin && \ +# /usr/bin/mysqladmin ping &>/dev/null +# then +# /usr/bin/mysqladmin flush-logs +# fi +# endscript +#} +[root@centos7 ~]# cat /etc/my.cnf.d/server.cnf +# +# These groups are read by MariaDB server. +# Use it for options that only the server (but not clients) should see +# +# See the examples of server my.cnf files in /usr/share/mysql/ +# + +# this is read by the standalone daemon and embedded servers +[server] + +# this is only for the mysqld standalone daemon +[mysqld] + +# this is only for embedded server +[embedded] + +# This group is only read by MariaDB-5.5 servers. +# If you use the same .cnf file for MariaDB of different versions, +# use this group for options that older servers don't understand +[mysqld-5.5] + +# These two groups are only read by MariaDB servers, not by MySQL. +# If you use the same .cnf file for MySQL and MariaDB, +# you can put MariaDB-only options here +[mariadb] + +[mariadb-5.5] + +[root@centos7 ~]# systemctl start mariadb +[root@centos7 ~]# systemctl status mariadb +? mariadb.service - MariaDB database server + Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) + Active: active (running) since Wed 2018-12-26 12:01:23 IST; 5s ago + Process: 10684 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS) + Process: 10604 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS) + Main PID: 10683 (mysqld_safe) + Tasks: 20 + CGroup: /system.slice/mariadb.service + +-10683 /bin/sh /usr/bin/mysqld_safe --basedir=/usr + +-10845 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-... + +Dec 26 12:01:21 centos7 mariadb-prepare-db-dir[10604]: MySQL manual for more instructions. +Dec 26 12:01:21 centos7 mariadb-prepare-db-dir[10604]: Please report any problems at http://mariadb.org/jira +Dec 26 12:01:21 centos7 mariadb-prepare-db-dir[10604]: The latest information about MariaDB is available at http://mariadb.org/. +Dec 26 12:01:21 centos7 mariadb-prepare-db-dir[10604]: You can find additional information about the MySQL part at: +Dec 26 12:01:21 centos7 mariadb-prepare-db-dir[10604]: http://dev.mysql.com +Dec 26 12:01:21 centos7 mariadb-prepare-db-dir[10604]: Consider joining MariaDB's strong and vibrant community: +Dec 26 12:01:21 centos7 mariadb-prepare-db-dir[10604]: https://mariadb.org/get-involved/ +Dec 26 12:01:21 centos7 mysqld_safe[10683]: 181226 12:01:21 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'. +Dec 26 12:01:21 centos7 mysqld_safe[10683]: 181226 12:01:21 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql +Dec 26 12:01:23 centos7 systemd[1]: Started MariaDB database server. +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# mysqladmin -u root password password +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# mysql -uroot -ppassword +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 3 +Server version: 5.5.60-MariaDB MariaDB Server + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +MariaDB [(none)]> show databa; +ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'databa' a t line 1 +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| test | ++--------------------+ +4 rows in set (0.00 sec) + +MariaDB [(none)]> create database program-o; +ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-o' at li ne 1 +MariaDB [(none)]> create database programo; +Query OK, 1 row affected (0.00 sec) + +MariaDB [(none)]> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| programo | +| test | ++--------------------+ +5 rows in set (0.00 sec) + +MariaDB [(none)]> use programo +Reading table information for completion of table and column names +You can turn off this feature to get a quicker startup with -A + +Database changed +MariaDB [programo]> use programo; +Database changed +MariaDB [programo]> show tables; ++--------------------+ +| Tables_in_programo | ++--------------------+ +| aiml | +| aiml_userdefined | +| botpersonality | +| bots | +| client_properties | +| conversation_log | +| myprogramo | +| spellcheck | +| srai_lookup | +| undefined_defaults | +| unknown_inputs | +| wordcensor | ++--------------------+ +12 rows in set (0.00 sec) + +MariaDB [programo]> desc aiml; ++-------------+--------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++-------------+--------------+------+-----+---------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| bot_id | int(11) | NO | MUL | 1 | | +| pattern | varchar(256) | NO | MUL | NULL | | +| thatpattern | varchar(256) | NO | MUL | NULL | | +| template | text | NO | | NULL | | +| topic | varchar(256) | NO | MUL | NULL | | +| filename | varchar(256) | NO | | NULL | | ++-------------+--------------+------+-----+---------+----------------+ +7 rows in set (0.00 sec) + +MariaDB [programo]> desc aiml_userdefined; ++-------------+--------------+------+-----+-------------------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++-------------+--------------+------+-----+-------------------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| pattern | varchar(256) | NO | MUL | NULL | | +| thatpattern | varchar(256) | NO | MUL | NULL | | +| template | text | NO | | NULL | | +| user_id | varchar(256) | NO | MUL | NULL | | +| bot_id | int(11) | NO | MUL | NULL | | +| date | timestamp | NO | | CURRENT_TIMESTAMP | | ++-------------+--------------+------+-----+-------------------+----------------+ +7 rows in set (0.00 sec) + +MariaDB [programo]> desc botpersonality + -> ; ++--------+--------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++--------+--------------+------+-----+---------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| bot_id | tinyint(4) | NO | MUL | 0 | | +| name | varchar(256) | NO | | | | +| value | text | NO | | NULL | | ++--------+--------------+------+-----+---------+----------------+ +4 rows in set (0.00 sec) + +MariaDB [programo]> +MariaDB [programo]> desc *; +ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*' at line 1 +MariaDB [programo]> desc ALL; +ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ALL' at line 1 +MariaDB [programo]> desc client_properties + -> ; ++---------+---------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++---------+---------+------+-----+---------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| user_id | int(11) | NO | | NULL | | +| bot_id | int(11) | NO | | NULL | | +| name | text | NO | | NULL | | +| value | text | NO | | NULL | | ++---------+---------+------+-----+---------+----------------+ +5 rows in set (0.00 sec) + +MariaDB [programo]> desc conversation_log; ++-----------+-----------+------+-----+-------------------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++-----------+-----------+------+-----+-------------------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| input | text | NO | | NULL | | +| response | longtext | NO | | NULL | | +| user_id | int(11) | NO | | NULL | | +| convo_id | text | NO | | NULL | | +| bot_id | int(11) | NO | | NULL | | +| timestamp | timestamp | NO | | CURRENT_TIMESTAMP | | ++-----------+-----------+------+-----+-------------------+----------------+ +7 rows in set (0.00 sec) + +MariaDB [programo]> +MariaDB [programo]> desc myprogramo; ++------------+--------------+------+-----+-------------------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++------------+--------------+------+-----+-------------------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| user_name | varchar(256) | NO | UNI | NULL | | +| password | varchar(256) | NO | | NULL | | +| last_ip | varchar(25) | NO | | NULL | | +| last_login | timestamp | NO | | CURRENT_TIMESTAMP | | ++------------+--------------+------+-----+-------------------+----------------+ +5 rows in set (0.00 sec) + +MariaDB [programo]> desc spellcheck; ++--------------+--------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++--------------+--------------+------+-----+---------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| missspelling | varchar(100) | NO | | NULL | | +| correction | varchar(100) | NO | | NULL | | ++--------------+--------------+------+-----+---------+----------------+ +3 rows in set (0.00 sec) + +MariaDB [programo]> desc srai_lookup; ++-------------+---------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++-------------+---------+------+-----+---------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| bot_id | int(11) | NO | MUL | NULL | | +| pattern | text | NO | | NULL | | +| template_id | int(11) | NO | MUL | NULL | | ++-------------+---------+------+-----+---------+----------------+ +4 rows in set (0.00 sec) + +MariaDB [programo]> desc undefined_defaults; ++----------+--------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++----------+--------------+------+-----+---------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| bot_id | int(11) | NO | | NULL | | +| user_id | int(11) | NO | | 0 | | +| pattern | text | NO | | NULL | | +| template | varchar(256) | NO | | NULL | | ++----------+--------------+------+-----+---------+----------------+ +5 rows in set (0.00 sec) + +MariaDB [programo]> desc unknown_inputs; ++-----------+-----------+------+-----+-------------------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++-----------+-----------+------+-----+-------------------+----------------+ +| id | int(11) | NO | PRI | NULL | auto_increment | +| bot_id | int(11) | NO | | NULL | | +| input | text | NO | | NULL | | +| user_id | int(11) | NO | | NULL | | +| timestamp | timestamp | NO | | CURRENT_TIMESTAMP | | ++-----------+-----------+------+-----+-------------------+----------------+ +5 rows in set (0.00 sec) + +MariaDB [programo]> desc wordcensor;; ++----------------+--------------+------+-----+---------+----------------+ +| Field | Type | Null | Key | Default | Extra | ++----------------+--------------+------+-----+---------+----------------+ +| censor_id | int(11) | NO | PRI | NULL | auto_increment | +| word_to_censor | varchar(50) | NO | | NULL | | +| replace_with | varchar(50) | NO | | **** | | +| bot_exclude | varchar(256) | NO | | NULL | | ++----------------+--------------+------+-----+---------+----------------+ +4 rows in set (0.00 sec) + +ERROR: No query specified + +MariaDB [programo]> Bye +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# yum install epel-release +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * extras: centos.excellmedia.net + * updates: centos.excellmedia.net +Resolving Dependencies +--> Running transaction check +---> Package epel-release.noarch 0:7-11 will be installed +--> Finished Dependency Resolution + +Dependencies Resolved + +======================================================================================================================================================================== + Package Arch Version Repository Size +======================================================================================================================================================================== +Installing: + epel-release noarch 7-11 extras 15 k + +Transaction Summary +======================================================================================================================================================================== +Install 1 Package + +Total download size: 15 k +Installed size: 24 k +Is this ok [y/d/N]: y +Downloading packages: +epel-release-7-11.noarch.rpm | 15 kB 00:00:00 +Running transaction check +Running transaction test +Transaction test succeeded +Running transaction + Installing : epel-release-7-11.noarch 1/1 + Verifying : epel-release-7-11.noarch 1/1 + +Installed: + epel-release.noarch 0:7-11 + +Complete! +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm +Retrieving http://rpms.famillecollet.com/enterprise/remi-release-7.rpm +warning: /var/tmp/rpm-tmp.CtwcPu: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY +Preparing... ################################# [100%] +Updating / installing... + 1:remi-release-7.6-1.el7.remi ################################# [100%] +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# php -version +PHP Parse error: syntax error, unexpected end of file in Command line code on line 1 +[root@centos7 ~]# php version +Could not open input file: version +[root@centos7 ~]# php --version +PHP 5.4.16 (cli) (built: Oct 30 2018 19:30:51) +Copyright (c) 1997-2013 The PHP Group +Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# yum --enablerepo=remi install phpmyadmin +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile +epel/x86_64/metalink | 6.5 kB 00:00:00 + * base: centos.excellmedia.net + * epel: mirror1.ku.ac.th + * extras: centos.excellmedia.net + * remi: mirror.xeonbd.com + * remi-safe: mirror.xeonbd.com + * updates: centos.excellmedia.net +epel | 3.2 kB 00:00:00 +remi | 3.0 kB 00:00:00 +remi-safe | 3.0 kB 00:00:00 +epel/x86_64/updateinfo FAILED ] 0.0 B/s | 0 B --:--:-- ETA +http://kartolo.sby.datautama.net.id/EPEL/7/x86_64/repodata/0eaa272202300cbd4e427fb0578787bebad1f49f87cb683dddd67b996548ea80-updateinfo.xml.bz2: [Errno 14] HTTP Error 404 - Not Found +Trying other mirror. +To address this issue please refer to the below wiki article + +https://wiki.centos.org/yum-errors + +If above article doesn't help to resolve this issue please use https://bugs.centos.org/. + +(1/5): epel/x86_64/group_gz | 88 kB 00:00:00 +epel/x86_64/primary FAILED +http://repos.del.extreme-ix.org/epel/7/x86_64/repodata/b61dc45f02b5f4216392a65689ecd6c21181a636ebcf069356077aeb7bf652df-primary.xml.gz: [Errno 14] HTTP Error 404 - Not Found +Trying other mirror. +(2/5): epel/x86_64/primary | 3.6 MB 00:00:01 +epel/x86_64/updateinfo FAILED +https://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora-projects/epel/7/x86_64/repodata/0eaa272202300cbd4e427fb0578787bebad1f49f87cb683dddd67b996548ea80-updateinfo.xml.bz2: [Errno 14] HTTPS Error 404 - Not Found +Trying other mirror. +(3/5): remi-safe/primary_db | 1.4 MB 00:00:02 +(4/5): epel/x86_64/updateinfo | 942 kB 00:00:01 +(5/5): remi/primary_db | 2.3 MB 00:00:05 +epel 12756/12756 +Resolving Dependencies +--> Running transaction check +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php-symfony-expression-language < 4 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-google-recaptcha >= 1.1 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpmyadmin-motranslator >= 4.0 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpmyadmin-shapefile >= 2.0 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpmyadmin-sql-parser >= 4.2.3 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpseclib >= 2.0.9 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-psr-container >= 1.0 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-symfony-polyfill >= 1.7.0-2 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-twig >= 1.34 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-twig-extensions >= 1.5.1 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-composer(fedora/autoloader) for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-gd for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-recode for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-xml for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-xmlwriter for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-fedora-autoloader.noarch 0:1.0.0-1.el7.remi will be installed +---> Package php-gd.x86_64 0:5.4.45-16.el7.remi will be installed +--> Processing Dependency: php-common(x86-64) = 5.4.45-16.el7.remi for package: php-gd-5.4.45-16.el7.remi.x86_64 +--> Processing Dependency: libt1.so.5()(64bit) for package: php-gd-5.4.45-16.el7.remi.x86_64 +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi will be installed +---> Package php-phpmyadmin-shapefile.noarch 0:2.1-1.el7.remi will be installed +---> Package php-phpmyadmin-sql-parser.noarch 0:4.2.5-1.el7.remi will be installed +---> Package php-phpseclib.noarch 0:2.0.13-1.el7.remi will be installed +--> Processing Dependency: php-bcmath for package: php-phpseclib-2.0.13-1.el7.remi.noarch +---> Package php-psr-container.noarch 0:1.0.0-1.el7.remi will be installed +---> Package php-recode.x86_64 0:5.4.45-16.el7.remi will be installed +--> Processing Dependency: librecode.so.0()(64bit) for package: php-recode-5.4.45-16.el7.remi.x86_64 +---> Package php-symfony-expression-language.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-symfony-common = 2.8.49-1.el7.remi for package: php-symfony-expression-language-2.8.49-1.el7.remi.noarch +---> Package php-symfony-polyfill.noarch 0:1.8.0-3.el7.remi will be installed +--> Processing Dependency: php-composer(ircmaxell/password-compat) < 2.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-composer(paragonie/random_compat) < 3.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-composer(ircmaxell/password-compat) >= 1.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-composer(paragonie/random_compat) >= 1.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-intl for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +---> Package php-twig.x86_64 0:1.36.0-1.el7.remi.5.4 will be installed +---> Package php-twig-extensions.noarch 0:1.5.4-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/translation) < 4.0 for package: php-twig-extensions-1.5.4-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/translation) >= 2.7.1 for package: php-twig-extensions-1.5.4-1.el7.remi.noarch +---> Package php-xml.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-bcmath.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package php-common.x86_64 0:5.4.16-46.el7 will be updated +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-mbstring-5.4.16-46.el7.x86_64 +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-cli-5.4.16-46.el7.x86_64 +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-5.4.16-46.el7.x86_64 +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-pdo-5.4.16-46.el7.x86_64 +---> Package php-common.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-intl.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package php-paragonie-random-compat.noarch 0:2.0.12-1.el7.remi will be installed +---> Package php-password-compat.noarch 0:1.0.4-1.el7.remi will be installed +---> Package php-symfony-common.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-symfony-class-loader = 2.8.49-1.el7.remi for package: php-symfony-common-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-translation.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php-symfony3-common = 3.4.20-1.el7.remi for package: php-symfony3-translation-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +---> Package recode.x86_64 0:3.6-38.el7 will be installed +---> Package t1lib.x86_64 0:5.1.2-14.el7 will be installed +--> Running transaction check +---> Package php.x86_64 0:5.4.16-46.el7 will be updated +---> Package php.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-cli.x86_64 0:5.4.16-46.el7 will be updated +--> Processing Dependency: php-cli(x86-64) = 5.4.16-46.el7 for package: php-devel-5.4.16-46.el7.x86_64 +---> Package php-cli.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-mbstring.x86_64 0:5.4.16-46.el7 will be updated +---> Package php-mbstring.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-pdo.x86_64 0:5.4.16-46.el7 will be updated +--> Processing Dependency: php-pdo(x86-64) = 5.4.16-46.el7 for package: php-mysql-5.4.16-46.el7.x86_64 +---> Package php-pdo.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-symfony-class-loader.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +--> Processing Dependency: composer for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package composer.noarch 0:1.8.0-1.el7.remi will be installed +--> Processing Dependency: php-composer(composer/ca-bundle) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/semver) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/spdx-licenses) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/xdebug-handler) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(psr/log) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/jsonlint) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/phar-utils) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-PsrLog >= 1.0.0-8 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/ca-bundle) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/semver) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/spdx-licenses) >= 1.2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/xdebug-handler) >= 1.1 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(psr/log) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/jsonlint) >= 1.4 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/phar-utils) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-seld-phar-utils >= 1.0.1 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-justinrainbow-json-schema5 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-console for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-filesystem for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-finder for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-process for package: composer-1.8.0-1.el7.remi.noarch +---> Package php-devel.x86_64 0:5.4.16-46.el7 will be updated +---> Package php-devel.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-mysql.x86_64 0:5.4.16-46.el7 will be updated +---> Package php-mysql.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-PsrLog.noarch 0:1.1.0-1.el7.remi will be installed +---> Package php-composer-ca-bundle.noarch 0:1.1.3-1.el7.remi will be installed +---> Package php-composer-semver.noarch 0:1.4.2-2.el7.remi will be installed +---> Package php-composer-spdx-licenses.noarch 0:1.5.0-1.el7.remi will be installed +---> Package php-composer-xdebug-handler.noarch 0:1.3.1-1.el7.remi will be installed +--> Processing Dependency: php-posix for package: php-composer-xdebug-handler-1.3.1-1.el7.remi.noarch +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-jsonlint.noarch 0:1.7.1-1.el7.remi will be installed +---> Package php-justinrainbow-json-schema5.noarch 0:5.2.7-1.el7.remi will be installed +---> Package php-seld-phar-utils.noarch 0:1.0.1-2.el7.remi will be installed +---> Package php-symfony-console.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/event-dispatcher) = 2.8.49 for package: php-symfony-console-2.8.49-1.el7.remi.noarch +---> Package php-symfony-filesystem.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-finder.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-process.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-process.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package php-symfony-event-dispatcher.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/dependency-injection) = 2.8.49 for package: php-symfony-event-dispatcher-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/http-kernel) = 2.8.49 for package: php-symfony-event-dispatcher-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-dependency-injection.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/config) = 2.8.49 for package: php-symfony-dependency-injection-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/yaml) = 2.8.49 for package: php-symfony-dependency-injection-2.8.49-1.el7.remi.noarch +---> Package php-symfony-http-kernel.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/browser-kit) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/debug) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/http-foundation) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/var-dumper) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-browser-kit.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/dom-crawler) = 2.8.49 for package: php-symfony-browser-kit-2.8.49-1.el7.remi.noarch +---> Package php-symfony-config.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-debug.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-http-foundation.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-var-dumper.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-yaml.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-dom-crawler.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/css-selector) = 2.8.49 for package: php-symfony-dom-crawler-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-css-selector.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Finished Dependency Resolution +Error: Package: php-google-recaptcha-1.2.1-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5 + Removing: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Updated By: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 +Error: Package: php-symfony3-common-3.4.20-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5.9 + Removing: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Updated By: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 +Error: Package: phpMyAdmin-4.8.4-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5 + Removing: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Updated By: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 +Error: Package: phpMyAdmin-4.8.4-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5 + Installed: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + You could try using --skip-broken to work around the problem + You could try running: rpm -Va --nofiles --nodigest +[root@centos7 ~]# yum --enablerepo=remi,remi-test install phpmyadmin +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * epel: epel.mirror.angkasa.id + * extras: centos.excellmedia.net + * remi: mirror.xeonbd.com + * remi-safe: mirror.xeonbd.com + * remi-test: mirror.xeonbd.com + * updates: centos.excellmedia.net +remi-test | 3.0 kB 00:00:00 +remi-test/primary_db | 612 kB 00:00:04 +Resolving Dependencies +--> Running transaction check +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php-symfony-expression-language < 4 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-google-recaptcha >= 1.1 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpmyadmin-motranslator >= 4.0 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpmyadmin-shapefile >= 2.0 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpmyadmin-sql-parser >= 4.2.3 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-phpseclib >= 2.0.9 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-psr-container >= 1.0 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-symfony-polyfill >= 1.7.0-2 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-twig >= 1.34 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-twig-extensions >= 1.5.1 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-composer(fedora/autoloader) for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-gd for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-recode for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-xml for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Processing Dependency: php-xmlwriter for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-fedora-autoloader.noarch 0:1.0.0-1.el7.remi will be installed +---> Package php-gd.x86_64 0:5.4.45-16.el7.remi will be installed +--> Processing Dependency: php-common(x86-64) = 5.4.45-16.el7.remi for package: php-gd-5.4.45-16.el7.remi.x86_64 +--> Processing Dependency: libt1.so.5()(64bit) for package: php-gd-5.4.45-16.el7.remi.x86_64 +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-phpmyadmin-motranslator.noarch 0:4.0-1.el7.remi will be installed +---> Package php-phpmyadmin-shapefile.noarch 0:2.1-1.el7.remi will be installed +---> Package php-phpmyadmin-sql-parser.noarch 0:4.2.5-1.el7.remi will be installed +---> Package php-phpseclib.noarch 0:2.0.13-1.el7.remi will be installed +--> Processing Dependency: php-bcmath for package: php-phpseclib-2.0.13-1.el7.remi.noarch +---> Package php-psr-container.noarch 0:1.0.0-1.el7.remi will be installed +---> Package php-recode.x86_64 0:5.4.45-16.el7.remi will be installed +--> Processing Dependency: librecode.so.0()(64bit) for package: php-recode-5.4.45-16.el7.remi.x86_64 +---> Package php-symfony-expression-language.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-symfony-common = 2.8.49-1.el7.remi for package: php-symfony-expression-language-2.8.49-1.el7.remi.noarch +---> Package php-symfony-polyfill.noarch 0:1.8.0-3.el7.remi will be installed +--> Processing Dependency: php-composer(ircmaxell/password-compat) < 2.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-composer(paragonie/random_compat) < 3.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-composer(ircmaxell/password-compat) >= 1.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-composer(paragonie/random_compat) >= 1.0 for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +--> Processing Dependency: php-intl for package: php-symfony-polyfill-1.8.0-3.el7.remi.noarch +---> Package php-twig.x86_64 0:1.36.0-1.el7.remi.5.4 will be installed +---> Package php-twig-extensions.noarch 0:1.5.4-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/translation) < 4.0 for package: php-twig-extensions-1.5.4-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/translation) >= 2.7.1 for package: php-twig-extensions-1.5.4-1.el7.remi.noarch +---> Package php-xml.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-bcmath.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package php-common.x86_64 0:5.4.16-46.el7 will be updated +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-mbstring-5.4.16-46.el7.x86_64 +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-cli-5.4.16-46.el7.x86_64 +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-5.4.16-46.el7.x86_64 +--> Processing Dependency: php-common(x86-64) = 5.4.16-46.el7 for package: php-pdo-5.4.16-46.el7.x86_64 +---> Package php-common.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-intl.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package php-paragonie-random-compat.noarch 0:2.0.12-1.el7.remi will be installed +---> Package php-password-compat.noarch 0:1.0.4-1.el7.remi will be installed +---> Package php-symfony-common.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-symfony-class-loader = 2.8.49-1.el7.remi for package: php-symfony-common-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-translation.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php-symfony3-common = 3.4.20-1.el7.remi for package: php-symfony3-translation-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +---> Package recode.x86_64 0:3.6-38.el7 will be installed +---> Package t1lib.x86_64 0:5.1.2-14.el7 will be installed +--> Running transaction check +---> Package php.x86_64 0:5.4.16-46.el7 will be updated +---> Package php.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-cli.x86_64 0:5.4.16-46.el7 will be updated +--> Processing Dependency: php-cli(x86-64) = 5.4.16-46.el7 for package: php-devel-5.4.16-46.el7.x86_64 +---> Package php-cli.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-mbstring.x86_64 0:5.4.16-46.el7 will be updated +---> Package php-mbstring.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-pdo.x86_64 0:5.4.16-46.el7 will be updated +--> Processing Dependency: php-pdo(x86-64) = 5.4.16-46.el7 for package: php-mysql-5.4.16-46.el7.x86_64 +---> Package php-pdo.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-symfony-class-loader.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +--> Processing Dependency: composer for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package composer.noarch 0:1.8.0-1.el7.remi will be installed +--> Processing Dependency: php-composer(composer/ca-bundle) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/semver) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/spdx-licenses) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/xdebug-handler) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(psr/log) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/jsonlint) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/phar-utils) < 2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-PsrLog >= 1.0.0-8 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/ca-bundle) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/semver) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/spdx-licenses) >= 1.2 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(composer/xdebug-handler) >= 1.1 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(psr/log) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/jsonlint) >= 1.4 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-composer(seld/phar-utils) >= 1.0 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-seld-phar-utils >= 1.0.1 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-justinrainbow-json-schema5 for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-console for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-filesystem for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-finder for package: composer-1.8.0-1.el7.remi.noarch +--> Processing Dependency: php-symfony-process for package: composer-1.8.0-1.el7.remi.noarch +---> Package php-devel.x86_64 0:5.4.16-46.el7 will be updated +---> Package php-devel.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-mysql.x86_64 0:5.4.16-46.el7 will be updated +---> Package php-mysql.x86_64 0:5.4.45-16.el7.remi will be an update +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-PsrLog.noarch 0:1.1.0-1.el7.remi will be installed +---> Package php-composer-ca-bundle.noarch 0:1.1.3-1.el7.remi will be installed +---> Package php-composer-semver.noarch 0:1.4.2-2.el7.remi will be installed +---> Package php-composer-spdx-licenses.noarch 0:1.5.0-1.el7.remi will be installed +---> Package php-composer-xdebug-handler.noarch 0:1.3.1-1.el7.remi will be installed +--> Processing Dependency: php-posix for package: php-composer-xdebug-handler-1.3.1-1.el7.remi.noarch +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-jsonlint.noarch 0:1.7.1-1.el7.remi will be installed +---> Package php-justinrainbow-json-schema5.noarch 0:5.2.7-1.el7.remi will be installed +---> Package php-seld-phar-utils.noarch 0:1.0.1-2.el7.remi will be installed +---> Package php-symfony-console.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/event-dispatcher) = 2.8.49 for package: php-symfony-console-2.8.49-1.el7.remi.noarch +---> Package php-symfony-filesystem.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-finder.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-process.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-process.x86_64 0:5.4.45-16.el7.remi will be installed +---> Package php-symfony-event-dispatcher.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/dependency-injection) = 2.8.49 for package: php-symfony-event-dispatcher-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/http-kernel) = 2.8.49 for package: php-symfony-event-dispatcher-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-dependency-injection.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/config) = 2.8.49 for package: php-symfony-dependency-injection-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/yaml) = 2.8.49 for package: php-symfony-dependency-injection-2.8.49-1.el7.remi.noarch +---> Package php-symfony-http-kernel.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/browser-kit) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/debug) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/http-foundation) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +--> Processing Dependency: php-composer(symfony/var-dumper) = 2.8.49 for package: php-symfony-http-kernel-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-browser-kit.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/dom-crawler) = 2.8.49 for package: php-symfony-browser-kit-2.8.49-1.el7.remi.noarch +---> Package php-symfony-config.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-debug.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-http-foundation.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-var-dumper.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony-yaml.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-dom-crawler.noarch 0:2.8.49-1.el7.remi will be installed +--> Processing Dependency: php-composer(symfony/css-selector) = 2.8.49 for package: php-symfony-dom-crawler-2.8.49-1.el7.remi.noarch +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Running transaction check +---> Package php-google-recaptcha.noarch 0:1.2.1-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: php-google-recaptcha-1.2.1-1.el7.remi.noarch +---> Package php-symfony-css-selector.noarch 0:2.8.49-1.el7.remi will be installed +---> Package php-symfony3-common.noarch 0:3.4.20-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5.9 for package: php-symfony3-common-3.4.20-1.el7.remi.noarch +---> Package phpMyAdmin.noarch 0:4.8.4-1.el7.remi will be installed +--> Processing Dependency: php(language) >= 5.5 for package: phpMyAdmin-4.8.4-1.el7.remi.noarch +--> Finished Dependency Resolution +Error: Package: php-google-recaptcha-1.2.1-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5 + Removing: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Updated By: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 +Error: Package: php-symfony3-common-3.4.20-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5.9 + Removing: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Updated By: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 +Error: Package: phpMyAdmin-4.8.4-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5 + Removing: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Updated By: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 +Error: Package: phpMyAdmin-4.8.4-1.el7.remi.noarch (remi) + Requires: php(language) >= 5.5 + Installed: php-common-5.4.16-46.el7.x86_64 (@base) + php(language) = 5.4.16 + Available: php-common-5.4.45-15.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + Available: php-common-5.4.45-16.el7.remi.x86_64 (remi) + php(language) = 5.4.45 + You could try using --skip-broken to work around the problem + You could try running: rpm -Va --nofiles --nodigest +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# yum -y install phpmyadmin +Loaded plugins: fastestmirror, langpacks +Loading mirror speeds from cached hostfile + * base: centos.excellmedia.net + * epel: epel.mirror.angkasa.id + * extras: centos.excellmedia.net + * remi-safe: mirror.xeonbd.com + * updates: centos.excellmedia.net +Resolving Dependencies +--> Running transaction check +---> Package phpMyAdmin.noarch 0:4.4.15.10-3.el7 will be installed +--> Processing Dependency: php-gd >= 5.3.7 for package: phpMyAdmin-4.4.15.10-3.el7.noarch +--> Processing Dependency: php-xmlwriter for package: phpMyAdmin-4.4.15.10-3.el7.noarch +--> Processing Dependency: php-tcpdf-dejavu-sans-fonts for package: phpMyAdmin-4.4.15.10-3.el7.noarch +--> Processing Dependency: php-tcpdf for package: phpMyAdmin-4.4.15.10-3.el7.noarch +--> Processing Dependency: php-php-gettext for package: phpMyAdmin-4.4.15.10-3.el7.noarch +--> Running transaction check +---> Package php-gd.x86_64 0:5.4.16-46.el7 will be installed +--> Processing Dependency: libt1.so.5()(64bit) for package: php-gd-5.4.16-46.el7.x86_64 +---> Package php-php-gettext.noarch 0:1.0.12-1.el7 will be installed +---> Package php-tcpdf.noarch 0:6.2.26-1.el7 will be installed +--> Processing Dependency: php-tidy for package: php-tcpdf-6.2.26-1.el7.noarch +--> Processing Dependency: php-posix for package: php-tcpdf-6.2.26-1.el7.noarch +--> Processing Dependency: php-composer(fedora/autoloader) for package: php-tcpdf-6.2.26-1.el7.noarch +--> Processing Dependency: php-bcmath for package: php-tcpdf-6.2.26-1.el7.noarch +---> Package php-tcpdf-dejavu-sans-fonts.noarch 0:6.2.26-1.el7 will be installed +---> Package php-xml.x86_64 0:5.4.16-46.el7 will be installed +--> Running transaction check +---> Package php-bcmath.x86_64 0:5.4.16-46.el7 will be installed +---> Package php-fedora-autoloader.noarch 0:1.0.0-1.el7 will be installed +---> Package php-process.x86_64 0:5.4.16-46.el7 will be installed +---> Package php-tidy.x86_64 0:5.4.16-7.el7 will be installed +--> Processing Dependency: libtidy-0.99.so.0()(64bit) for package: php-tidy-5.4.16-7.el7.x86_64 +---> Package t1lib.x86_64 0:5.1.2-14.el7 will be installed +--> Running transaction check +---> Package compat-libtidy.x86_64 0:0.99.0-37.20091203.el7 will be installed +--> Finished Dependency Resolution + +Dependencies Resolved + +======================================================================================================================================================================== + Package Arch Version Repository Size +======================================================================================================================================================================== +Installing: + phpMyAdmin noarch 4.4.15.10-3.el7 epel 4.7 M +Installing for dependencies: + compat-libtidy x86_64 0.99.0-37.20091203.el7 epel 133 k + php-bcmath x86_64 5.4.16-46.el7 base 58 k + php-fedora-autoloader noarch 1.0.0-1.el7 epel 9.6 k + php-gd x86_64 5.4.16-46.el7 base 128 k + php-php-gettext noarch 1.0.12-1.el7 epel 23 k + php-process x86_64 5.4.16-46.el7 base 56 k + php-tcpdf noarch 6.2.26-1.el7 epel 2.1 M + php-tcpdf-dejavu-sans-fonts noarch 6.2.26-1.el7 epel 257 k + php-tidy x86_64 5.4.16-7.el7 epel 23 k + php-xml x86_64 5.4.16-46.el7 base 126 k + t1lib x86_64 5.1.2-14.el7 base 166 k + +Transaction Summary +======================================================================================================================================================================== +Install 1 Package (+11 Dependent packages) + +Total download size: 7.7 M +Installed size: 38 M +Downloading packages: +(1/12): php-bcmath-5.4.16-46.el7.x86_64.rpm | 58 kB 00:00:00 +warning: /var/cache/yum/x86_64/7/epel/packages/compat-libtidy-0.99.0-37.20091203.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEYkB --:--:-- ETA +Public key for compat-libtidy-0.99.0-37.20091203.el7.x86_64.rpm is not installed +(2/12): compat-libtidy-0.99.0-37.20091203.el7.x86_64.rpm | 133 kB 00:00:00 +(3/12): php-fedora-autoloader-1.0.0-1.el7.noarch.rpm | 9.6 kB 00:00:00 +(4/12): php-gd-5.4.16-46.el7.x86_64.rpm | 128 kB 00:00:00 +(5/12): php-php-gettext-1.0.12-1.el7.noarch.rpm | 23 kB 00:00:00 +(6/12): php-process-5.4.16-46.el7.x86_64.rpm | 56 kB 00:00:00 +(7/12): php-tcpdf-6.2.26-1.el7.noarch.rpm | 2.1 MB 00:00:00 +(8/12): php-tcpdf-dejavu-sans-fonts-6.2.26-1.el7.noarch.rpm | 257 kB 00:00:00 +(9/12): php-tidy-5.4.16-7.el7.x86_64.rpm | 23 kB 00:00:00 +(10/12): php-xml-5.4.16-46.el7.x86_64.rpm | 126 kB 00:00:00 +(11/12): t1lib-5.1.2-14.el7.x86_64.rpm | 166 kB 00:00:00 +(12/12): phpMyAdmin-4.4.15.10-3.el7.noarch.rpm | 4.7 MB 00:00:02 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +Total 1.6 MB/s | 7.7 MB 00:00:04 +Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 +Importing GPG key 0x352C64E5: + Userid : "Fedora EPEL (7) " + Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 + Package : epel-release-7-11.noarch (@extras) + From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 +Running transaction check +Running transaction test +Transaction test succeeded +Running transaction +Warning: RPMDB altered outside of yum. + Installing : php-xml-5.4.16-46.el7.x86_64 1/12 + Installing : php-php-gettext-1.0.12-1.el7.noarch 2/12 + Installing : php-process-5.4.16-46.el7.x86_64 3/12 + Installing : t1lib-5.1.2-14.el7.x86_64 4/12 + Installing : php-gd-5.4.16-46.el7.x86_64 5/12 + Installing : php-fedora-autoloader-1.0.0-1.el7.noarch 6/12 + Installing : php-bcmath-5.4.16-46.el7.x86_64 7/12 + Installing : compat-libtidy-0.99.0-37.20091203.el7.x86_64 8/12 + Installing : php-tidy-5.4.16-7.el7.x86_64 9/12 + Installing : php-tcpdf-6.2.26-1.el7.noarch 10/12 + Installing : php-tcpdf-dejavu-sans-fonts-6.2.26-1.el7.noarch 11/12 + Installing : phpMyAdmin-4.4.15.10-3.el7.noarch 12/12 + Verifying : phpMyAdmin-4.4.15.10-3.el7.noarch 1/12 + Verifying : compat-libtidy-0.99.0-37.20091203.el7.x86_64 2/12 + Verifying : php-tcpdf-6.2.26-1.el7.noarch 3/12 + Verifying : php-bcmath-5.4.16-46.el7.x86_64 4/12 + Verifying : php-fedora-autoloader-1.0.0-1.el7.noarch 5/12 + Verifying : php-tcpdf-dejavu-sans-fonts-6.2.26-1.el7.noarch 6/12 + Verifying : t1lib-5.1.2-14.el7.x86_64 7/12 + Verifying : php-process-5.4.16-46.el7.x86_64 8/12 + Verifying : php-tidy-5.4.16-7.el7.x86_64 9/12 + Verifying : php-gd-5.4.16-46.el7.x86_64 10/12 + Verifying : php-php-gettext-1.0.12-1.el7.noarch 11/12 + Verifying : php-xml-5.4.16-46.el7.x86_64 12/12 + +Installed: + phpMyAdmin.noarch 0:4.4.15.10-3.el7 + +Dependency Installed: + compat-libtidy.x86_64 0:0.99.0-37.20091203.el7 php-bcmath.x86_64 0:5.4.16-46.el7 php-fedora-autoloader.noarch 0:1.0.0-1.el7 + php-gd.x86_64 0:5.4.16-46.el7 php-php-gettext.noarch 0:1.0.12-1.el7 php-process.x86_64 0:5.4.16-46.el7 + php-tcpdf.noarch 0:6.2.26-1.el7 php-tcpdf-dejavu-sans-fonts.noarch 0:6.2.26-1.el7 php-tidy.x86_64 0:5.4.16-7.el7 + php-xml.x86_64 0:5.4.16-46.el7 t1lib.x86_64 0:5.1.2-14.el7 + +Complete! +[root@centos7 ~]# rpm -ql phpMyAdmin.noarch +/etc/httpd/conf.d/phpMyAdmin.conf +/etc/phpMyAdmin +/etc/phpMyAdmin/config.inc.php +/usr/share/doc/phpMyAdmin-4.4.15.10 +/usr/share/doc/phpMyAdmin-4.4.15.10/ChangeLog +/usr/share/doc/phpMyAdmin-4.4.15.10/DCO +/usr/share/doc/phpMyAdmin-4.4.15.10/README +/usr/share/doc/phpMyAdmin-4.4.15.10/examples +/usr/share/doc/phpMyAdmin-4.4.15.10/examples/config.manyhosts.inc.php +/usr/share/doc/phpMyAdmin-4.4.15.10/examples/config.sample.inc.php +/usr/share/doc/phpMyAdmin-4.4.15.10/examples/openid.php +/usr/share/doc/phpMyAdmin-4.4.15.10/examples/signon-script.php +/usr/share/doc/phpMyAdmin-4.4.15.10/examples/signon.php +/usr/share/doc/phpMyAdmin-4.4.15.10/html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/config.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/copyright.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/credits.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/developers.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/faq.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/glossary.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/import_export.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/index.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/intro.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/other.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/privileges.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/require.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/setup.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/transformations.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/user.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_sources/vendors.txt +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/ajax-loader.gif +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/basic.css +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/classic.css +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/comment-bright.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/comment-close.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/comment.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/default.css +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/doctools.js +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/down-pressed.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/down.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/file.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/jquery.js +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/minus.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/plus.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/pygments.css +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/searchtools.js +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/sidebar.js +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/underscore.js +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/up-pressed.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/up.png +/usr/share/doc/phpMyAdmin-4.4.15.10/html/_static/websupport.js +/usr/share/doc/phpMyAdmin-4.4.15.10/html/config.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/copyright.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/credits.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/developers.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/faq.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/genindex.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/glossary.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/import_export.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/index.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/intro.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/objects.inv +/usr/share/doc/phpMyAdmin-4.4.15.10/html/other.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/privileges.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/require.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/search.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/searchindex.js +/usr/share/doc/phpMyAdmin-4.4.15.10/html/setup.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/transformations.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/user.html +/usr/share/doc/phpMyAdmin-4.4.15.10/html/vendors.html +/usr/share/licenses/phpMyAdmin-4.4.15.10 +/usr/share/licenses/phpMyAdmin-4.4.15.10/LICENSE +/usr/share/licenses/phpMyAdmin-4.4.15.10/LICENSE-canvg +/usr/share/licenses/phpMyAdmin-4.4.15.10/LICENSE-codemirror +/usr/share/licenses/phpMyAdmin-4.4.15.10/LICENSE-jquery +/usr/share/licenses/phpMyAdmin-4.4.15.10/LICENSE-recaptcha +/usr/share/licenses/phpMyAdmin-4.4.15.10/LICENSE-sql-formatter +/usr/share/phpMyAdmin +/usr/share/phpMyAdmin/browse_foreigners.php +/usr/share/phpMyAdmin/build.xml +/usr/share/phpMyAdmin/changelog.php +/usr/share/phpMyAdmin/chk_rel.php +/usr/share/phpMyAdmin/composer.json +/usr/share/phpMyAdmin/db_central_columns.php +/usr/share/phpMyAdmin/db_create.php +/usr/share/phpMyAdmin/db_datadict.php +/usr/share/phpMyAdmin/db_designer.php +/usr/share/phpMyAdmin/db_events.php +/usr/share/phpMyAdmin/db_export.php +/usr/share/phpMyAdmin/db_import.php +/usr/share/phpMyAdmin/db_operations.php +/usr/share/phpMyAdmin/db_printview.php +/usr/share/phpMyAdmin/db_qbe.php +/usr/share/phpMyAdmin/db_routines.php +/usr/share/phpMyAdmin/db_search.php +/usr/share/phpMyAdmin/db_sql.php +/usr/share/phpMyAdmin/db_sql_autocomplete.php +/usr/share/phpMyAdmin/db_sql_format.php +/usr/share/phpMyAdmin/db_structure.php +/usr/share/phpMyAdmin/db_tracking.php +/usr/share/phpMyAdmin/db_triggers.php +/usr/share/phpMyAdmin/doc +/usr/share/phpMyAdmin/doc/html +/usr/share/phpMyAdmin/error_report.php +/usr/share/phpMyAdmin/export.php +/usr/share/phpMyAdmin/favicon.ico +/usr/share/phpMyAdmin/file_echo.php +/usr/share/phpMyAdmin/gis_data_editor.php +/usr/share/phpMyAdmin/import.php +/usr/share/phpMyAdmin/import_status.php +/usr/share/phpMyAdmin/index.php +/usr/share/phpMyAdmin/js +/usr/share/phpMyAdmin/js/OpenStreetMap.js +/usr/share/phpMyAdmin/js/ajax.js +/usr/share/phpMyAdmin/js/big_ints.js +/usr/share/phpMyAdmin/js/canvg +/usr/share/phpMyAdmin/js/canvg/canvg.js +/usr/share/phpMyAdmin/js/chart.js +/usr/share/phpMyAdmin/js/codemirror +/usr/share/phpMyAdmin/js/codemirror/addon +/usr/share/phpMyAdmin/js/codemirror/addon/hint +/usr/share/phpMyAdmin/js/codemirror/addon/hint/show-hint.js +/usr/share/phpMyAdmin/js/codemirror/addon/hint/sql-hint.js +/usr/share/phpMyAdmin/js/codemirror/addon/runmode +/usr/share/phpMyAdmin/js/codemirror/addon/runmode/runmode.js +/usr/share/phpMyAdmin/js/codemirror/lib +/usr/share/phpMyAdmin/js/codemirror/lib/codemirror.js +/usr/share/phpMyAdmin/js/codemirror/mode +/usr/share/phpMyAdmin/js/codemirror/mode/javascript +/usr/share/phpMyAdmin/js/codemirror/mode/javascript/javascript.js +/usr/share/phpMyAdmin/js/codemirror/mode/sql +/usr/share/phpMyAdmin/js/codemirror/mode/sql/sql.js +/usr/share/phpMyAdmin/js/codemirror/mode/xml +/usr/share/phpMyAdmin/js/codemirror/mode/xml/xml.js +/usr/share/phpMyAdmin/js/common.js +/usr/share/phpMyAdmin/js/config.js +/usr/share/phpMyAdmin/js/console.js +/usr/share/phpMyAdmin/js/cross_framing_protection.js +/usr/share/phpMyAdmin/js/db_central_columns.js +/usr/share/phpMyAdmin/js/db_operations.js +/usr/share/phpMyAdmin/js/db_qbe.js +/usr/share/phpMyAdmin/js/db_search.js +/usr/share/phpMyAdmin/js/db_structure.js +/usr/share/phpMyAdmin/js/db_tracking.js +/usr/share/phpMyAdmin/js/doclinks.js +/usr/share/phpMyAdmin/js/error_report.js +/usr/share/phpMyAdmin/js/export.js +/usr/share/phpMyAdmin/js/functions.js +/usr/share/phpMyAdmin/js/get_image.js.php +/usr/share/phpMyAdmin/js/get_scripts.js.php +/usr/share/phpMyAdmin/js/gis_data_editor.js +/usr/share/phpMyAdmin/js/import.js +/usr/share/phpMyAdmin/js/indexes.js +/usr/share/phpMyAdmin/js/jqplot +/usr/share/phpMyAdmin/js/jqplot/excanvas.js +/usr/share/phpMyAdmin/js/jqplot/jquery.jqplot.js +/usr/share/phpMyAdmin/js/jqplot/plugins +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.barRenderer.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.byteFormatter.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.canvasTextRenderer.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.categoryAxisRenderer.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.cursor.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.dateAxisRenderer.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.highlighter.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.pieRenderer.js +/usr/share/phpMyAdmin/js/jqplot/plugins/jqplot.pointLabels.js +/usr/share/phpMyAdmin/js/jquery +/usr/share/phpMyAdmin/js/jquery/jquery-1.11.1.min.js +/usr/share/phpMyAdmin/js/jquery/jquery-ui-1.11.2.min.js +/usr/share/phpMyAdmin/js/jquery/jquery-ui-timepicker-addon.js +/usr/share/phpMyAdmin/js/jquery/jquery.ba-hashchange-1.3.js +/usr/share/phpMyAdmin/js/jquery/jquery.cookie.js +/usr/share/phpMyAdmin/js/jquery/jquery.debounce-1.0.5.js +/usr/share/phpMyAdmin/js/jquery/jquery.event.drag-2.2.js +/usr/share/phpMyAdmin/js/jquery/jquery.fullscreen.js +/usr/share/phpMyAdmin/js/jquery/jquery.mousewheel.js +/usr/share/phpMyAdmin/js/jquery/jquery.sortableTable.js +/usr/share/phpMyAdmin/js/jquery/jquery.svg.js +/usr/share/phpMyAdmin/js/jquery/jquery.tablesorter.js +/usr/share/phpMyAdmin/js/jquery/jquery.uitablefilter.js +/usr/share/phpMyAdmin/js/keyhandler.js +/usr/share/phpMyAdmin/js/line_counts.php +/usr/share/phpMyAdmin/js/makegrid.js +/usr/share/phpMyAdmin/js/menu-resizer.js +/usr/share/phpMyAdmin/js/messages.php +/usr/share/phpMyAdmin/js/multi_column_sort.js +/usr/share/phpMyAdmin/js/navigation.js +/usr/share/phpMyAdmin/js/normalization.js +/usr/share/phpMyAdmin/js/openlayers +/usr/share/phpMyAdmin/js/openlayers/OpenLayers.js +/usr/share/phpMyAdmin/js/openlayers/img +/usr/share/phpMyAdmin/js/openlayers/img/blank.gif +/usr/share/phpMyAdmin/js/openlayers/img/cloud-popup-relative.png +/usr/share/phpMyAdmin/js/openlayers/img/drag-rectangle-off.png +/usr/share/phpMyAdmin/js/openlayers/img/drag-rectangle-on.png +/usr/share/phpMyAdmin/js/openlayers/img/east-mini.png +/usr/share/phpMyAdmin/js/openlayers/img/layer-switcher-maximize.png +/usr/share/phpMyAdmin/js/openlayers/img/layer-switcher-minimize.png +/usr/share/phpMyAdmin/js/openlayers/img/marker-blue.png +/usr/share/phpMyAdmin/js/openlayers/img/marker-gold.png +/usr/share/phpMyAdmin/js/openlayers/img/marker-green.png +/usr/share/phpMyAdmin/js/openlayers/img/marker.png +/usr/share/phpMyAdmin/js/openlayers/img/measuring-stick-off.png +/usr/share/phpMyAdmin/js/openlayers/img/measuring-stick-on.png +/usr/share/phpMyAdmin/js/openlayers/img/north-mini.png +/usr/share/phpMyAdmin/js/openlayers/img/panning-hand-off.png +/usr/share/phpMyAdmin/js/openlayers/img/panning-hand-on.png +/usr/share/phpMyAdmin/js/openlayers/img/slider.png +/usr/share/phpMyAdmin/js/openlayers/img/south-mini.png +/usr/share/phpMyAdmin/js/openlayers/img/west-mini.png +/usr/share/phpMyAdmin/js/openlayers/img/zoom-minus-mini.png +/usr/share/phpMyAdmin/js/openlayers/img/zoom-plus-mini.png +/usr/share/phpMyAdmin/js/openlayers/img/zoom-world-mini.png +/usr/share/phpMyAdmin/js/openlayers/img/zoombar.png +/usr/share/phpMyAdmin/js/openlayers/theme +/usr/share/phpMyAdmin/js/openlayers/theme/default +/usr/share/phpMyAdmin/js/openlayers/theme/default/framedCloud.css +/usr/share/phpMyAdmin/js/openlayers/theme/default/google.css +/usr/share/phpMyAdmin/js/openlayers/theme/default/ie6-style.css +/usr/share/phpMyAdmin/js/openlayers/theme/default/img +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/add_point_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/add_point_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/blank.gif +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/close.gif +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/drag-rectangle-off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/drag-rectangle-on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/draw_line_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/draw_line_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/draw_point_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/draw_point_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/draw_polygon_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/draw_polygon_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/editing_tool_bar.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/move_feature_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/move_feature_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/navigation_history.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/overview_replacement.gif +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/pan-panel-NOALPHA.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/pan-panel.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/pan_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/pan_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/panning-hand-off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/panning-hand-on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/remove_point_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/remove_point_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/ruler.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/save_features_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/save_features_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/view_next_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/view_next_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/view_previous_off.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/view_previous_on.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/zoom-panel-NOALPHA.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/img/zoom-panel.png +/usr/share/phpMyAdmin/js/openlayers/theme/default/style.css +/usr/share/phpMyAdmin/js/pmd +/usr/share/phpMyAdmin/js/pmd/designer_db.js +/usr/share/phpMyAdmin/js/pmd/designer_objects.js +/usr/share/phpMyAdmin/js/pmd/designer_page.js +/usr/share/phpMyAdmin/js/pmd/history.js +/usr/share/phpMyAdmin/js/pmd/iecanvas.js +/usr/share/phpMyAdmin/js/pmd/init.js +/usr/share/phpMyAdmin/js/pmd/move.js +/usr/share/phpMyAdmin/js/replication.js +/usr/share/phpMyAdmin/js/rte.js +/usr/share/phpMyAdmin/js/server_databases.js +/usr/share/phpMyAdmin/js/server_plugins.js +/usr/share/phpMyAdmin/js/server_privileges.js +/usr/share/phpMyAdmin/js/server_status_advisor.js +/usr/share/phpMyAdmin/js/server_status_monitor.js +/usr/share/phpMyAdmin/js/server_status_processes.js +/usr/share/phpMyAdmin/js/server_status_queries.js +/usr/share/phpMyAdmin/js/server_status_sorter.js +/usr/share/phpMyAdmin/js/server_status_variables.js +/usr/share/phpMyAdmin/js/server_user_groups.js +/usr/share/phpMyAdmin/js/server_variables.js +/usr/share/phpMyAdmin/js/sprintf.js +/usr/share/phpMyAdmin/js/sql.js +/usr/share/phpMyAdmin/js/tbl_change.js +/usr/share/phpMyAdmin/js/tbl_chart.js +/usr/share/phpMyAdmin/js/tbl_find_replace.js +/usr/share/phpMyAdmin/js/tbl_gis_visualization.js +/usr/share/phpMyAdmin/js/tbl_operations.js +/usr/share/phpMyAdmin/js/tbl_relation.js +/usr/share/phpMyAdmin/js/tbl_select.js +/usr/share/phpMyAdmin/js/tbl_structure.js +/usr/share/phpMyAdmin/js/tbl_tracking.js +/usr/share/phpMyAdmin/js/tbl_zoom_plot_jqplot.js +/usr/share/phpMyAdmin/js/tracekit +/usr/share/phpMyAdmin/js/tracekit/tracekit.js +/usr/share/phpMyAdmin/js/transformations +/usr/share/phpMyAdmin/js/transformations/image_upload.js +/usr/share/phpMyAdmin/js/transformations/json.js +/usr/share/phpMyAdmin/js/transformations/json_editor.js +/usr/share/phpMyAdmin/js/transformations/sql_editor.js +/usr/share/phpMyAdmin/js/transformations/xml.js +/usr/share/phpMyAdmin/js/transformations/xml_editor.js +/usr/share/phpMyAdmin/js/whitelist.php +/usr/share/phpMyAdmin/libraries +/usr/share/phpMyAdmin/libraries/Advisor.class.php +/usr/share/phpMyAdmin/libraries/Config.class.php +/usr/share/phpMyAdmin/libraries/Console.class.php +/usr/share/phpMyAdmin/libraries/DBQbe.class.php +/usr/share/phpMyAdmin/libraries/DatabaseInterface.class.php +/usr/share/phpMyAdmin/libraries/DbSearch.class.php +/usr/share/phpMyAdmin/libraries/DisplayResults.class.php +/usr/share/phpMyAdmin/libraries/Error.class.php +/usr/share/phpMyAdmin/libraries/Error_Handler.class.php +/usr/share/phpMyAdmin/libraries/File.class.php +/usr/share/phpMyAdmin/libraries/Font.class.php +/usr/share/phpMyAdmin/libraries/Footer.class.php +/usr/share/phpMyAdmin/libraries/Header.class.php +/usr/share/phpMyAdmin/libraries/Index.class.php +/usr/share/phpMyAdmin/libraries/List.class.php +/usr/share/phpMyAdmin/libraries/List_Database.class.php +/usr/share/phpMyAdmin/libraries/Menu.class.php +/usr/share/phpMyAdmin/libraries/Message.class.php +/usr/share/phpMyAdmin/libraries/OutputBuffering.class.php +/usr/share/phpMyAdmin/libraries/PDF.class.php +/usr/share/phpMyAdmin/libraries/PMA.php +/usr/share/phpMyAdmin/libraries/Partition.class.php +/usr/share/phpMyAdmin/libraries/RecentFavoriteTable.class.php +/usr/share/phpMyAdmin/libraries/Response.class.php +/usr/share/phpMyAdmin/libraries/SavedSearches.class.php +/usr/share/phpMyAdmin/libraries/Scripts.class.php +/usr/share/phpMyAdmin/libraries/ServerStatusData.class.php +/usr/share/phpMyAdmin/libraries/StorageEngine.class.php +/usr/share/phpMyAdmin/libraries/String.class.php +/usr/share/phpMyAdmin/libraries/StringAbstractType.class.php +/usr/share/phpMyAdmin/libraries/StringByte.int.php +/usr/share/phpMyAdmin/libraries/StringCType.class.php +/usr/share/phpMyAdmin/libraries/StringNativeType.class.php +/usr/share/phpMyAdmin/libraries/StringType.int.php +/usr/share/phpMyAdmin/libraries/Table.class.php +/usr/share/phpMyAdmin/libraries/TableSearch.class.php +/usr/share/phpMyAdmin/libraries/Theme.class.php +/usr/share/phpMyAdmin/libraries/Theme_Manager.class.php +/usr/share/phpMyAdmin/libraries/Tracker.class.php +/usr/share/phpMyAdmin/libraries/Types.class.php +/usr/share/phpMyAdmin/libraries/Util.class.php +/usr/share/phpMyAdmin/libraries/VersionInformation.php +/usr/share/phpMyAdmin/libraries/advisory_rules.txt +/usr/share/phpMyAdmin/libraries/bfShapeFiles +/usr/share/phpMyAdmin/libraries/bfShapeFiles/ShapeFile.lib.php +/usr/share/phpMyAdmin/libraries/bookmark.lib.php +/usr/share/phpMyAdmin/libraries/browse_foreigners.lib.php +/usr/share/phpMyAdmin/libraries/build_html_for_db.lib.php +/usr/share/phpMyAdmin/libraries/central_columns.lib.php +/usr/share/phpMyAdmin/libraries/charset_conversion.lib.php +/usr/share/phpMyAdmin/libraries/check_user_privileges.lib.php +/usr/share/phpMyAdmin/libraries/cleanup.lib.php +/usr/share/phpMyAdmin/libraries/common.inc.php +/usr/share/phpMyAdmin/libraries/config +/usr/share/phpMyAdmin/libraries/config.default.php +/usr/share/phpMyAdmin/libraries/config.values.php +/usr/share/phpMyAdmin/libraries/config/ConfigFile.class.php +/usr/share/phpMyAdmin/libraries/config/Form.class.php +/usr/share/phpMyAdmin/libraries/config/FormDisplay.class.php +/usr/share/phpMyAdmin/libraries/config/FormDisplay.tpl.php +/usr/share/phpMyAdmin/libraries/config/ServerConfigChecks.class.php +/usr/share/phpMyAdmin/libraries/config/Validator.class.php +/usr/share/phpMyAdmin/libraries/config/config_functions.lib.php +/usr/share/phpMyAdmin/libraries/config/messages.inc.php +/usr/share/phpMyAdmin/libraries/config/setup.forms.php +/usr/share/phpMyAdmin/libraries/config/user_preferences.forms.php +/usr/share/phpMyAdmin/libraries/core.lib.php +/usr/share/phpMyAdmin/libraries/create_addfield.lib.php +/usr/share/phpMyAdmin/libraries/data_dictionary_relations.lib.php +/usr/share/phpMyAdmin/libraries/database_interface.inc.php +/usr/share/phpMyAdmin/libraries/db_common.inc.php +/usr/share/phpMyAdmin/libraries/db_designer.lib.php +/usr/share/phpMyAdmin/libraries/db_info.inc.php +/usr/share/phpMyAdmin/libraries/db_printview.lib.php +/usr/share/phpMyAdmin/libraries/db_table_exists.lib.php +/usr/share/phpMyAdmin/libraries/dbi +/usr/share/phpMyAdmin/libraries/dbi/DBIDrizzle.class.php +/usr/share/phpMyAdmin/libraries/dbi/DBIDummy.class.php +/usr/share/phpMyAdmin/libraries/dbi/DBIExtension.int.php +/usr/share/phpMyAdmin/libraries/dbi/DBIMysql.class.php +/usr/share/phpMyAdmin/libraries/dbi/DBIMysqli.class.php +/usr/share/phpMyAdmin/libraries/dbi/drizzle-wrappers.lib.php +/usr/share/phpMyAdmin/libraries/display_change_password.lib.php +/usr/share/phpMyAdmin/libraries/display_create_database.lib.php +/usr/share/phpMyAdmin/libraries/display_create_table.lib.php +/usr/share/phpMyAdmin/libraries/display_export.inc.php +/usr/share/phpMyAdmin/libraries/display_export.lib.php +/usr/share/phpMyAdmin/libraries/display_git_revision.lib.php +/usr/share/phpMyAdmin/libraries/display_import.inc.php +/usr/share/phpMyAdmin/libraries/display_import.lib.php +/usr/share/phpMyAdmin/libraries/display_import_ajax.lib.php +/usr/share/phpMyAdmin/libraries/display_select_lang.lib.php +/usr/share/phpMyAdmin/libraries/display_structure.inc.php +/usr/share/phpMyAdmin/libraries/engines +/usr/share/phpMyAdmin/libraries/engines/bdb.lib.php +/usr/share/phpMyAdmin/libraries/engines/berkeleydb.lib.php +/usr/share/phpMyAdmin/libraries/engines/binlog.lib.php +/usr/share/phpMyAdmin/libraries/engines/innobase.lib.php +/usr/share/phpMyAdmin/libraries/engines/innodb.lib.php +/usr/share/phpMyAdmin/libraries/engines/memory.lib.php +/usr/share/phpMyAdmin/libraries/engines/merge.lib.php +/usr/share/phpMyAdmin/libraries/engines/mrg_myisam.lib.php +/usr/share/phpMyAdmin/libraries/engines/myisam.lib.php +/usr/share/phpMyAdmin/libraries/engines/ndbcluster.lib.php +/usr/share/phpMyAdmin/libraries/engines/pbxt.lib.php +/usr/share/phpMyAdmin/libraries/engines/performance_schema.lib.php +/usr/share/phpMyAdmin/libraries/error.inc.php +/usr/share/phpMyAdmin/libraries/error_report.lib.php +/usr/share/phpMyAdmin/libraries/export.lib.php +/usr/share/phpMyAdmin/libraries/file_listing.lib.php +/usr/share/phpMyAdmin/libraries/gis +/usr/share/phpMyAdmin/libraries/gis/GIS_Factory.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Geometry.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Geometrycollection.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Linestring.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Multilinestring.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Multipoint.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Multipolygon.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Point.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Polygon.class.php +/usr/share/phpMyAdmin/libraries/gis/GIS_Visualization.class.php +/usr/share/phpMyAdmin/libraries/iconv_wrapper.lib.php +/usr/share/phpMyAdmin/libraries/import.lib.php +/usr/share/phpMyAdmin/libraries/index.lib.php +/usr/share/phpMyAdmin/libraries/information_schema_relations.lib.php +/usr/share/phpMyAdmin/libraries/insert_edit.lib.php +/usr/share/phpMyAdmin/libraries/ip_allow_deny.lib.php +/usr/share/phpMyAdmin/libraries/js_escape.lib.php +/usr/share/phpMyAdmin/libraries/kanji-encoding.lib.php +/usr/share/phpMyAdmin/libraries/language_stats.inc.php +/usr/share/phpMyAdmin/libraries/logging.lib.php +/usr/share/phpMyAdmin/libraries/mime.lib.php +/usr/share/phpMyAdmin/libraries/mult_submits.inc.php +/usr/share/phpMyAdmin/libraries/mult_submits.lib.php +/usr/share/phpMyAdmin/libraries/mysql_charsets.inc.php +/usr/share/phpMyAdmin/libraries/mysql_charsets.lib.php +/usr/share/phpMyAdmin/libraries/mysql_relations.lib.php +/usr/share/phpMyAdmin/libraries/navigation +/usr/share/phpMyAdmin/libraries/navigation/Navigation.class.php +/usr/share/phpMyAdmin/libraries/navigation/NavigationHeader.class.php +/usr/share/phpMyAdmin/libraries/navigation/NavigationTree.class.php +/usr/share/phpMyAdmin/libraries/navigation/NodeFactory.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Column.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Column_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Database.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_DatabaseChild.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Database_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Event.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Event_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Function.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Function_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Index.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Index_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Procedure.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Procedure_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Table.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Table_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Trigger.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_Trigger_Container.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_View.class.php +/usr/share/phpMyAdmin/libraries/navigation/Nodes/Node_View_Container.class.php +/usr/share/phpMyAdmin/libraries/normalization.lib.php +/usr/share/phpMyAdmin/libraries/opendocument.lib.php +/usr/share/phpMyAdmin/libraries/operations.lib.php +/usr/share/phpMyAdmin/libraries/parse_analyze.inc.php +/usr/share/phpMyAdmin/libraries/plugin_interface.lib.php +/usr/share/phpMyAdmin/libraries/plugins +/usr/share/phpMyAdmin/libraries/plugins/AuthenticationPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/ExportPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/IOTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/ImportPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/SchemaPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/TransformationsInterface.int.php +/usr/share/phpMyAdmin/libraries/plugins/TransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/UploadInterface.int.php +/usr/share/phpMyAdmin/libraries/plugins/auth +/usr/share/phpMyAdmin/libraries/plugins/auth/AuthenticationConfig.class.php +/usr/share/phpMyAdmin/libraries/plugins/auth/AuthenticationCookie.class.php +/usr/share/phpMyAdmin/libraries/plugins/auth/AuthenticationHttp.class.php +/usr/share/phpMyAdmin/libraries/plugins/auth/AuthenticationSignon.class.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/ReCaptcha.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod/Post.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod/Socket.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod/SocketPost.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/RequestParameters.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/ReCaptcha/Response.php +/usr/share/phpMyAdmin/libraries/plugins/auth/recaptcha/autoload.php +/usr/share/phpMyAdmin/libraries/plugins/export +/usr/share/phpMyAdmin/libraries/plugins/export/ExportCodegen.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportCsv.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportExcel.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportHtmlword.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportJson.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportLatex.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportMediawiki.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportOds.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportOdt.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportPdf.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportPhparray.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportSql.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportTexytext.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportXml.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/ExportYaml.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/PMA_ExportPdf.class.php +/usr/share/phpMyAdmin/libraries/plugins/export/README +/usr/share/phpMyAdmin/libraries/plugins/export/TableProperty.class.php +/usr/share/phpMyAdmin/libraries/plugins/import +/usr/share/phpMyAdmin/libraries/plugins/import/AbstractImportCsv.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ImportCsv.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ImportLdi.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ImportMediawiki.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ImportOds.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ImportShp.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ImportSql.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ImportXml.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/README +/usr/share/phpMyAdmin/libraries/plugins/import/ShapeFile.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/ShapeRecord.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/upload +/usr/share/phpMyAdmin/libraries/plugins/import/upload/UploadApc.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/upload/UploadNoplugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/upload/UploadProgress.class.php +/usr/share/phpMyAdmin/libraries/plugins/import/upload/UploadSession.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema +/usr/share/phpMyAdmin/libraries/plugins/schema/Export_Relation_Schema.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/RelationStats.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/SchemaDia.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/SchemaEps.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/SchemaPdf.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/SchemaSvg.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/TableStats.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/dia +/usr/share/phpMyAdmin/libraries/plugins/schema/dia/Dia_Relation_Schema.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/dia/RelationStatsDia.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/dia/TableStatsDia.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/eps +/usr/share/phpMyAdmin/libraries/plugins/schema/eps/Eps_Relation_Schema.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/eps/RelationStatsEps.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/eps/TableStatsEps.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/pdf +/usr/share/phpMyAdmin/libraries/plugins/schema/pdf/Pdf_Relation_Schema.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/pdf/RelationStatsPdf.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/pdf/TableStatsPdf.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/svg +/usr/share/phpMyAdmin/libraries/plugins/schema/svg/RelationStatsSvg.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/svg/Svg_Relation_Schema.class.php +/usr/share/phpMyAdmin/libraries/plugins/schema/svg/TableStatsSvg.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations +/usr/share/phpMyAdmin/libraries/plugins/transformations/README +/usr/share/phpMyAdmin/libraries/plugins/transformations/TEMPLATE +/usr/share/phpMyAdmin/libraries/plugins/transformations/TEMPLATE_ABSTRACT +/usr/share/phpMyAdmin/libraries/plugins/transformations/Text_Plain_Link.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/Text_Plain_Longtoipv4.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/Text_Plain_Preappend.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/Text_Plain_Substring.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/Bool2TextTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/CodeMirrorEditorTransformationPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/DateFormatTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/DownloadTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/ExternalTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/FormattedTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/HexTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/ImageLinkTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/ImageUploadTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/InlineTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/LongToIPv4TransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/PreApPendTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/RegexValidationTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/SQLTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/SubstringTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/TextFileUploadTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/TextImageLinkTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/abstract/TextLinkTransformationsPlugin.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/input +/usr/share/phpMyAdmin/libraries/plugins/transformations/input/Image_JPEG_Upload.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/input/Text_Plain_Fileupload.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/input/Text_Plain_JsonEditor.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/input/Text_Plain_Regexvalidation.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/input/Text_Plain_SqlEditor.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/input/Text_Plain_XmlEditor.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Application_Octetstream_Download.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Application_Octetstream_Hex.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Image_JPEG_Inline.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Image_JPEG_Link.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Image_PNG_Inline.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Octetstream_Sql.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_Bool2text.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_Dateformat.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_External.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_Formatted.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_Imagelink.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_Json.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_Sql.class.php +/usr/share/phpMyAdmin/libraries/plugins/transformations/output/Text_Plain_Xml.class.php +/usr/share/phpMyAdmin/libraries/pmd_common.php +/usr/share/phpMyAdmin/libraries/properties +/usr/share/phpMyAdmin/libraries/properties/PropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options +/usr/share/phpMyAdmin/libraries/properties/options/OptionsPropertyGroup.class.php +/usr/share/phpMyAdmin/libraries/properties/options/OptionsPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/OptionsPropertyOneItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/groups +/usr/share/phpMyAdmin/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php +/usr/share/phpMyAdmin/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php +/usr/share/phpMyAdmin/libraries/properties/options/groups/OptionsPropertySubgroup.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items +/usr/share/phpMyAdmin/libraries/properties/options/items/BoolPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items/DocPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items/HiddenPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items/MessageOnlyPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items/NumberPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items/RadioPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items/SelectPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/options/items/TextPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/plugins +/usr/share/phpMyAdmin/libraries/properties/plugins/ExportPluginProperties.class.php +/usr/share/phpMyAdmin/libraries/properties/plugins/ImportPluginProperties.class.php +/usr/share/phpMyAdmin/libraries/properties/plugins/PluginPropertyItem.class.php +/usr/share/phpMyAdmin/libraries/properties/plugins/SchemaPluginProperties.class.php +/usr/share/phpMyAdmin/libraries/relation.lib.php +/usr/share/phpMyAdmin/libraries/relation_cleanup.lib.php +/usr/share/phpMyAdmin/libraries/replication.inc.php +/usr/share/phpMyAdmin/libraries/replication_gui.lib.php +/usr/share/phpMyAdmin/libraries/rte +/usr/share/phpMyAdmin/libraries/rte/rte_events.lib.php +/usr/share/phpMyAdmin/libraries/rte/rte_export.lib.php +/usr/share/phpMyAdmin/libraries/rte/rte_footer.lib.php +/usr/share/phpMyAdmin/libraries/rte/rte_general.lib.php +/usr/share/phpMyAdmin/libraries/rte/rte_list.lib.php +/usr/share/phpMyAdmin/libraries/rte/rte_main.inc.php +/usr/share/phpMyAdmin/libraries/rte/rte_routines.lib.php +/usr/share/phpMyAdmin/libraries/rte/rte_triggers.lib.php +/usr/share/phpMyAdmin/libraries/rte/rte_words.lib.php +/usr/share/phpMyAdmin/libraries/sanitizing.lib.php +/usr/share/phpMyAdmin/libraries/select_lang.lib.php +/usr/share/phpMyAdmin/libraries/select_server.lib.php +/usr/share/phpMyAdmin/libraries/server_bin_log.lib.php +/usr/share/phpMyAdmin/libraries/server_collations.lib.php +/usr/share/phpMyAdmin/libraries/server_common.inc.php +/usr/share/phpMyAdmin/libraries/server_common.lib.php +/usr/share/phpMyAdmin/libraries/server_databases.lib.php +/usr/share/phpMyAdmin/libraries/server_engines.lib.php +/usr/share/phpMyAdmin/libraries/server_plugins.lib.php +/usr/share/phpMyAdmin/libraries/server_privileges.lib.php +/usr/share/phpMyAdmin/libraries/server_status.lib.php +/usr/share/phpMyAdmin/libraries/server_status_advisor.lib.php +/usr/share/phpMyAdmin/libraries/server_status_monitor.lib.php +/usr/share/phpMyAdmin/libraries/server_status_processes.lib.php +/usr/share/phpMyAdmin/libraries/server_status_queries.lib.php +/usr/share/phpMyAdmin/libraries/server_status_variables.lib.php +/usr/share/phpMyAdmin/libraries/server_user_groups.lib.php +/usr/share/phpMyAdmin/libraries/server_users.lib.php +/usr/share/phpMyAdmin/libraries/server_variables.lib.php +/usr/share/phpMyAdmin/libraries/session.inc.php +/usr/share/phpMyAdmin/libraries/special_schema_links.lib.php +/usr/share/phpMyAdmin/libraries/sql-formatter +/usr/share/phpMyAdmin/libraries/sql-formatter/README.md +/usr/share/phpMyAdmin/libraries/sql-formatter/lib +/usr/share/phpMyAdmin/libraries/sql-formatter/lib/SqlFormatter.php +/usr/share/phpMyAdmin/libraries/sql.lib.php +/usr/share/phpMyAdmin/libraries/sql_query_form.lib.php +/usr/share/phpMyAdmin/libraries/sqlparser.data.php +/usr/share/phpMyAdmin/libraries/sqlparser.lib.php +/usr/share/phpMyAdmin/libraries/string.lib.php +/usr/share/phpMyAdmin/libraries/stringMb.lib.php +/usr/share/phpMyAdmin/libraries/stringNative.lib.php +/usr/share/phpMyAdmin/libraries/structure.lib.php +/usr/share/phpMyAdmin/libraries/sysinfo.lib.php +/usr/share/phpMyAdmin/libraries/tbl_chart.lib.php +/usr/share/phpMyAdmin/libraries/tbl_columns_definition_form.inc.php +/usr/share/phpMyAdmin/libraries/tbl_columns_definition_form.lib.php +/usr/share/phpMyAdmin/libraries/tbl_common.inc.php +/usr/share/phpMyAdmin/libraries/tbl_gis_visualization.lib.php +/usr/share/phpMyAdmin/libraries/tbl_indexes.lib.php +/usr/share/phpMyAdmin/libraries/tbl_info.inc.php +/usr/share/phpMyAdmin/libraries/tbl_printview.lib.php +/usr/share/phpMyAdmin/libraries/tbl_relation.lib.php +/usr/share/phpMyAdmin/libraries/tbl_views.lib.php +/usr/share/phpMyAdmin/libraries/tracking.lib.php +/usr/share/phpMyAdmin/libraries/transformations.lib.php +/usr/share/phpMyAdmin/libraries/url_generating.lib.php +/usr/share/phpMyAdmin/libraries/user_preferences.inc.php +/usr/share/phpMyAdmin/libraries/user_preferences.lib.php +/usr/share/phpMyAdmin/libraries/vendor_config.php +/usr/share/phpMyAdmin/libraries/zip.lib.php +/usr/share/phpMyAdmin/libraries/zip_extension.lib.php +/usr/share/phpMyAdmin/license.php +/usr/share/phpMyAdmin/locale +/usr/share/phpMyAdmin/locale/az +/usr/share/phpMyAdmin/locale/az/LC_MESSAGES +/usr/share/phpMyAdmin/locale/az/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/bg +/usr/share/phpMyAdmin/locale/bg/LC_MESSAGES +/usr/share/phpMyAdmin/locale/bg/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/bn +/usr/share/phpMyAdmin/locale/bn/LC_MESSAGES +/usr/share/phpMyAdmin/locale/bn/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/ca +/usr/share/phpMyAdmin/locale/ca/LC_MESSAGES +/usr/share/phpMyAdmin/locale/ca/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/cs +/usr/share/phpMyAdmin/locale/cs/LC_MESSAGES +/usr/share/phpMyAdmin/locale/cs/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/da +/usr/share/phpMyAdmin/locale/da/LC_MESSAGES +/usr/share/phpMyAdmin/locale/da/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/de +/usr/share/phpMyAdmin/locale/de/LC_MESSAGES +/usr/share/phpMyAdmin/locale/de/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/el +/usr/share/phpMyAdmin/locale/el/LC_MESSAGES +/usr/share/phpMyAdmin/locale/el/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/en_GB +/usr/share/phpMyAdmin/locale/en_GB/LC_MESSAGES +/usr/share/phpMyAdmin/locale/en_GB/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/es +/usr/share/phpMyAdmin/locale/es/LC_MESSAGES +/usr/share/phpMyAdmin/locale/es/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/et +/usr/share/phpMyAdmin/locale/et/LC_MESSAGES +/usr/share/phpMyAdmin/locale/et/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/fi +/usr/share/phpMyAdmin/locale/fi/LC_MESSAGES +/usr/share/phpMyAdmin/locale/fi/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/fr +/usr/share/phpMyAdmin/locale/fr/LC_MESSAGES +/usr/share/phpMyAdmin/locale/fr/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/gl +/usr/share/phpMyAdmin/locale/gl/LC_MESSAGES +/usr/share/phpMyAdmin/locale/gl/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/hi +/usr/share/phpMyAdmin/locale/hi/LC_MESSAGES +/usr/share/phpMyAdmin/locale/hi/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/hu +/usr/share/phpMyAdmin/locale/hu/LC_MESSAGES +/usr/share/phpMyAdmin/locale/hu/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/hy +/usr/share/phpMyAdmin/locale/hy/LC_MESSAGES +/usr/share/phpMyAdmin/locale/hy/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/ia +/usr/share/phpMyAdmin/locale/ia/LC_MESSAGES +/usr/share/phpMyAdmin/locale/ia/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/id +/usr/share/phpMyAdmin/locale/id/LC_MESSAGES +/usr/share/phpMyAdmin/locale/id/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/it +/usr/share/phpMyAdmin/locale/it/LC_MESSAGES +/usr/share/phpMyAdmin/locale/it/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/ja +/usr/share/phpMyAdmin/locale/ja/LC_MESSAGES +/usr/share/phpMyAdmin/locale/ja/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/ko +/usr/share/phpMyAdmin/locale/ko/LC_MESSAGES +/usr/share/phpMyAdmin/locale/ko/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/lt +/usr/share/phpMyAdmin/locale/lt/LC_MESSAGES +/usr/share/phpMyAdmin/locale/lt/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/nb +/usr/share/phpMyAdmin/locale/nb/LC_MESSAGES +/usr/share/phpMyAdmin/locale/nb/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/nl +/usr/share/phpMyAdmin/locale/nl/LC_MESSAGES +/usr/share/phpMyAdmin/locale/nl/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/pl +/usr/share/phpMyAdmin/locale/pl/LC_MESSAGES +/usr/share/phpMyAdmin/locale/pl/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/pt +/usr/share/phpMyAdmin/locale/pt/LC_MESSAGES +/usr/share/phpMyAdmin/locale/pt/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/pt_BR +/usr/share/phpMyAdmin/locale/pt_BR/LC_MESSAGES +/usr/share/phpMyAdmin/locale/pt_BR/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/ro +/usr/share/phpMyAdmin/locale/ro/LC_MESSAGES +/usr/share/phpMyAdmin/locale/ro/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/ru +/usr/share/phpMyAdmin/locale/ru/LC_MESSAGES +/usr/share/phpMyAdmin/locale/ru/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/si +/usr/share/phpMyAdmin/locale/si/LC_MESSAGES +/usr/share/phpMyAdmin/locale/si/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/sk +/usr/share/phpMyAdmin/locale/sk/LC_MESSAGES +/usr/share/phpMyAdmin/locale/sk/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/sl +/usr/share/phpMyAdmin/locale/sl/LC_MESSAGES +/usr/share/phpMyAdmin/locale/sl/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/sq +/usr/share/phpMyAdmin/locale/sq/LC_MESSAGES +/usr/share/phpMyAdmin/locale/sq/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/sr@latin +/usr/share/phpMyAdmin/locale/sr@latin/LC_MESSAGES +/usr/share/phpMyAdmin/locale/sr@latin/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/sv +/usr/share/phpMyAdmin/locale/sv/LC_MESSAGES +/usr/share/phpMyAdmin/locale/sv/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/tr +/usr/share/phpMyAdmin/locale/tr/LC_MESSAGES +/usr/share/phpMyAdmin/locale/tr/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/uk +/usr/share/phpMyAdmin/locale/uk/LC_MESSAGES +/usr/share/phpMyAdmin/locale/uk/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/zh_CN +/usr/share/phpMyAdmin/locale/zh_CN/LC_MESSAGES +/usr/share/phpMyAdmin/locale/zh_CN/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/locale/zh_TW +/usr/share/phpMyAdmin/locale/zh_TW/LC_MESSAGES +/usr/share/phpMyAdmin/locale/zh_TW/LC_MESSAGES/phpmyadmin.mo +/usr/share/phpMyAdmin/navigation.php +/usr/share/phpMyAdmin/normalization.php +/usr/share/phpMyAdmin/phpmyadmin.css.php +/usr/share/phpMyAdmin/phpunit.xml.dist +/usr/share/phpMyAdmin/phpunit.xml.hhvm +/usr/share/phpMyAdmin/phpunit.xml.nocoverage +/usr/share/phpMyAdmin/prefs_forms.php +/usr/share/phpMyAdmin/prefs_manage.php +/usr/share/phpMyAdmin/print.css +/usr/share/phpMyAdmin/schema_export.php +/usr/share/phpMyAdmin/server_binlog.php +/usr/share/phpMyAdmin/server_collations.php +/usr/share/phpMyAdmin/server_databases.php +/usr/share/phpMyAdmin/server_engines.php +/usr/share/phpMyAdmin/server_export.php +/usr/share/phpMyAdmin/server_import.php +/usr/share/phpMyAdmin/server_plugins.php +/usr/share/phpMyAdmin/server_privileges.php +/usr/share/phpMyAdmin/server_replication.php +/usr/share/phpMyAdmin/server_sql.php +/usr/share/phpMyAdmin/server_status.php +/usr/share/phpMyAdmin/server_status_advisor.php +/usr/share/phpMyAdmin/server_status_monitor.php +/usr/share/phpMyAdmin/server_status_processes.php +/usr/share/phpMyAdmin/server_status_queries.php +/usr/share/phpMyAdmin/server_status_variables.php +/usr/share/phpMyAdmin/server_user_groups.php +/usr/share/phpMyAdmin/server_variables.php +/usr/share/phpMyAdmin/setup +/usr/share/phpMyAdmin/setup/ajax.js +/usr/share/phpMyAdmin/setup/config.php +/usr/share/phpMyAdmin/setup/frames +/usr/share/phpMyAdmin/setup/frames/config.inc.php +/usr/share/phpMyAdmin/setup/frames/form.inc.php +/usr/share/phpMyAdmin/setup/frames/index.inc.php +/usr/share/phpMyAdmin/setup/frames/menu.inc.php +/usr/share/phpMyAdmin/setup/frames/servers.inc.php +/usr/share/phpMyAdmin/setup/index.php +/usr/share/phpMyAdmin/setup/lib +/usr/share/phpMyAdmin/setup/lib/ConfigGenerator.class.php +/usr/share/phpMyAdmin/setup/lib/common.inc.php +/usr/share/phpMyAdmin/setup/lib/form_processing.lib.php +/usr/share/phpMyAdmin/setup/lib/index.lib.php +/usr/share/phpMyAdmin/setup/scripts.js +/usr/share/phpMyAdmin/setup/styles.css +/usr/share/phpMyAdmin/setup/validate.php +/usr/share/phpMyAdmin/show_config_errors.php +/usr/share/phpMyAdmin/sql +/usr/share/phpMyAdmin/sql.php +/usr/share/phpMyAdmin/sql/create_tables.sql +/usr/share/phpMyAdmin/sql/create_tables_drizzle.sql +/usr/share/phpMyAdmin/sql/upgrade_column_info_4_3_0+.sql +/usr/share/phpMyAdmin/sql/upgrade_tables_mysql_4_1_2+.sql +/usr/share/phpMyAdmin/tbl_addfield.php +/usr/share/phpMyAdmin/tbl_change.php +/usr/share/phpMyAdmin/tbl_chart.php +/usr/share/phpMyAdmin/tbl_create.php +/usr/share/phpMyAdmin/tbl_export.php +/usr/share/phpMyAdmin/tbl_find_replace.php +/usr/share/phpMyAdmin/tbl_get_field.php +/usr/share/phpMyAdmin/tbl_gis_visualization.php +/usr/share/phpMyAdmin/tbl_import.php +/usr/share/phpMyAdmin/tbl_indexes.php +/usr/share/phpMyAdmin/tbl_operations.php +/usr/share/phpMyAdmin/tbl_printview.php +/usr/share/phpMyAdmin/tbl_recent_favorite.php +/usr/share/phpMyAdmin/tbl_relation.php +/usr/share/phpMyAdmin/tbl_replace.php +/usr/share/phpMyAdmin/tbl_row_action.php +/usr/share/phpMyAdmin/tbl_select.php +/usr/share/phpMyAdmin/tbl_sql.php +/usr/share/phpMyAdmin/tbl_structure.php +/usr/share/phpMyAdmin/tbl_tracking.php +/usr/share/phpMyAdmin/tbl_triggers.php +/usr/share/phpMyAdmin/tbl_zoom_select.php +/usr/share/phpMyAdmin/test +/usr/share/phpMyAdmin/test/.htaccess +/usr/share/phpMyAdmin/test/AllSeleniumTests.php +/usr/share/phpMyAdmin/test/Environment_test.php +/usr/share/phpMyAdmin/test/README.rst +/usr/share/phpMyAdmin/test/bootstrap-dist.php +/usr/share/phpMyAdmin/test/classes +/usr/share/phpMyAdmin/test/classes/PMA_Advisor_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Config_test.php +/usr/share/phpMyAdmin/test/classes/PMA_DBQbe_test.php +/usr/share/phpMyAdmin/test/classes/PMA_DbSearch_test.php +/usr/share/phpMyAdmin/test/classes/PMA_DisplayResults_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Error_Handler_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Error_test.php +/usr/share/phpMyAdmin/test/classes/PMA_File_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Font_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Footer_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Header_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Index_test.php +/usr/share/phpMyAdmin/test/classes/PMA_List_Database_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Menu_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Message_test.php +/usr/share/phpMyAdmin/test/classes/PMA_PDF_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Scripts_test.php +/usr/share/phpMyAdmin/test/classes/PMA_ServerStatusData_test.php +/usr/share/phpMyAdmin/test/classes/PMA_StorageEngine_test.php +/usr/share/phpMyAdmin/test/classes/PMA_TableReplaceSearch_test.php +/usr/share/phpMyAdmin/test/classes/PMA_TableSearch_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Table_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Theme_Manager_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Theme_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Types_Drizzle_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Types_MySQL_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Types_test.php +/usr/share/phpMyAdmin/test/classes/PMA_Util_test.php +/usr/share/phpMyAdmin/test/classes/VersionInformation_test.php +/usr/share/phpMyAdmin/test/classes/_data +/usr/share/phpMyAdmin/test/classes/_data/gen_version_info +/usr/share/phpMyAdmin/test/classes/_data/gen_version_info/info.inc.php +/usr/share/phpMyAdmin/test/classes/_data/incorrect_theme +/usr/share/phpMyAdmin/test/classes/_data/incorrect_theme/info.inc.php +/usr/share/phpMyAdmin/test/classes/config +/usr/share/phpMyAdmin/test/classes/config/PMA_FormDisplay_test.php +/usr/share/phpMyAdmin/test/classes/config/PMA_Form_test.php +/usr/share/phpMyAdmin/test/classes/dbi +/usr/share/phpMyAdmin/test/classes/dbi/DBIDrizzle_test.php +/usr/share/phpMyAdmin/test/classes/dbi/DBIMysql_test.php +/usr/share/phpMyAdmin/test/classes/dbi/DBIMysqli_test.php +/usr/share/phpMyAdmin/test/classes/gis +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Factory_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Geom_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Geometry_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Geometrycollection_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Linestring_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Multilinestring_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Multipoint_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Multipolygon_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Point_test.php +/usr/share/phpMyAdmin/test/classes/gis/PMA_GIS_Polygon_test.php +/usr/share/phpMyAdmin/test/classes/navigation +/usr/share/phpMyAdmin/test/classes/navigation/PMA_NavigationTree_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Navigation_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_NodeFactory_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Column_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Column_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_DatabaseChild_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Database_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Event_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Event_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Function_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Function_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Index_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Index_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Procedure_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Procedure_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Table_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Table_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Trigger_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_Trigger_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_View_Container_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_View_test.php +/usr/share/phpMyAdmin/test/classes/navigation/PMA_Node_test.php +/usr/share/phpMyAdmin/test/classes/plugin +/usr/share/phpMyAdmin/test/classes/plugin/auth +/usr/share/phpMyAdmin/test/classes/plugin/auth/PMA_AuthenticationConfig_test.php +/usr/share/phpMyAdmin/test/classes/plugin/auth/PMA_AuthenticationCookie_test.php +/usr/share/phpMyAdmin/test/classes/plugin/auth/PMA_AuthenticationHttp_test.php +/usr/share/phpMyAdmin/test/classes/plugin/auth/PMA_AuthenticationSignon_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportCodegen_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportCsv_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportExcel_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportHtmlword_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportJson_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportLatex_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportMediawiki_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportOds_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportOdt_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportPdf_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportPhparray_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportSql_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportTexytext_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportXml_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_ExportYaml_test.php +/usr/share/phpMyAdmin/test/classes/plugin/export/PMA_TableProperty_test.php +/usr/share/phpMyAdmin/test/classes/plugin/import +/usr/share/phpMyAdmin/test/classes/plugin/import/ImportCsv_test.php +/usr/share/phpMyAdmin/test/classes/plugin/import/ImportLdi_test.php +/usr/share/phpMyAdmin/test/classes/plugin/import/ImportMediawiki_test.php +/usr/share/phpMyAdmin/test/classes/plugin/import/ImportOds_test.php +/usr/share/phpMyAdmin/test/classes/plugin/import/ImportShp_test.php +/usr/share/phpMyAdmin/test/classes/plugin/import/ImportSql_test.php +/usr/share/phpMyAdmin/test/classes/plugin/import/ImportXml_test.php +/usr/share/phpMyAdmin/test/classes/plugin/transformations +/usr/share/phpMyAdmin/test/classes/plugin/transformations/Transformation_Plugins_test.php +/usr/share/phpMyAdmin/test/classes/properties +/usr/share/phpMyAdmin/test/classes/properties/PMA_PropertyItem_test.php +/usr/share/phpMyAdmin/test/classes/properties/options +/usr/share/phpMyAdmin/test/classes/properties/options/PMA_OptionsPropertyGroup_test.php +/usr/share/phpMyAdmin/test/classes/properties/options/PMA_OptionsPropertyItem_test.php +/usr/share/phpMyAdmin/test/classes/properties/options/PMA_OptionsPropertyOneItem_test.php +/usr/share/phpMyAdmin/test/classes/properties/options/groups +/usr/share/phpMyAdmin/test/classes/properties/options/groups/PMA_OptionsPropertyMainGroup_test.php +/usr/share/phpMyAdmin/test/classes/properties/options/groups/PMA_OptionsPropertyRootGroup_test.php +/usr/share/phpMyAdmin/test/classes/properties/options/groups/PMA_OptionsPropertySubgroup_test.php +/usr/share/phpMyAdmin/test/classes/properties/options/items +/usr/share/phpMyAdmin/test/classes/properties/options/items/PMA_PropertyItems_test.php +/usr/share/phpMyAdmin/test/classes/properties/plugins +/usr/share/phpMyAdmin/test/classes/properties/plugins/PMA_ExportPluginProperties_test.php +/usr/share/phpMyAdmin/test/classes/properties/plugins/PMA_ImportPluginProperties_test.php +/usr/share/phpMyAdmin/test/classes/properties/plugins/PMA_PluginPropertyItem_test.php +/usr/share/phpMyAdmin/test/classes/schema +/usr/share/phpMyAdmin/test/classes/schema/Dia_Relation_Schema_test.php +/usr/share/phpMyAdmin/test/classes/schema/Eps_Relation_Schema_test.php +/usr/share/phpMyAdmin/test/classes/schema/Export_Relation_Schema_test.php +/usr/share/phpMyAdmin/test/classes/schema/Pdf_Relation_Schema_test.php +/usr/share/phpMyAdmin/test/classes/schema/Svg_Relation_Schema_test.php +/usr/share/phpMyAdmin/test/engines +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_bdb_test.php +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_binlog_test.php +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_innodb_test.php +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_memory_test.php +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_mrg_myisam_test.php +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_myisam_test.php +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_ndbcluster_test.php +/usr/share/phpMyAdmin/test/engines/PMA_StorageEngine_pbxt_test.php +/usr/share/phpMyAdmin/test/install-browserstack +/usr/share/phpMyAdmin/test/install-runkit +/usr/share/phpMyAdmin/test/libraries +/usr/share/phpMyAdmin/test/libraries/PMA_ConfigFile_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_ConfigGenerator_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_FormDisplay_tpl_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_Form_Processing_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_GIS_modifyQuery_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_PMD_common_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_SQL_parse_analyze_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_SQL_parser_data_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_SQL_parser_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_SetupIndex_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_StringCType_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_StringNativeType_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_Tracker_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_bookmark_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_browse_foreigners_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_build_html_for_db_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_central_columns_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_charset_conversion_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_config_functions_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_designer_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_display_change_password_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_display_create_table_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_display_export_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_escapeJsString_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_export_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_generateCommonUrl_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_iconv_wrapper_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_import_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_insert_edit_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_ip_allow_deny_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_js_escape_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_kanji-encoding_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_mime_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_mult_submits_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_mysql_charsets_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_normalization_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_operations_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_prettyPrint_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_relation_cleanup_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_relation_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_sanitize_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_select_server_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_binlog_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_collations_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_common_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_databases_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_engines_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_plugins_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_privileges_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_replication_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_status_advisor_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_status_monitor_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_status_processes_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_status_queries_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_status_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_status_variables_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_user_groups_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_users_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_server_variables_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_sql_query_form_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_string_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_structure_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_chart_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_columns_definition_form_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_gis_visualization_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_indexes_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_printview_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_relation_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_tracking_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_tbl_views_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_transformation_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_user_preferences_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_zip_extension_test.php +/usr/share/phpMyAdmin/test/libraries/PMA_zip_test.php +/usr/share/phpMyAdmin/test/libraries/common +/usr/share/phpMyAdmin/test/libraries/common/PMA_browseUploadFile_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_buildActionTitles_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_cache_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_checkParameters_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_contains_nonprintable_ascii_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_convert_bit_default_value_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_escapeMySqlWildcards_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_expandUserString_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_extractColumnSpec_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_extractValueFromFormattedSize_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_foreignKeySupported_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_formatNumberByteDown_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_formatSql_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_generateHiddenMaxFileSize_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getCheckbox_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getDbLink_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getDivForSliderEffect_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getDropdown_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getFormattedMaximumUploadSize_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getIcon_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getRadioFields_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_getTitleForTarget_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_localisedDateTimespan_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_pow_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_printableBitValue_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_quoting_slashing_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_showDocu_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_showMessage_test_disabled.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_showPHPDocu_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_stringOperations_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_unsupportedDatatypes_test.php +/usr/share/phpMyAdmin/test/libraries/common/PMA_whichCrlf_test.php +/usr/share/phpMyAdmin/test/libraries/config +/usr/share/phpMyAdmin/test/libraries/config/PMA_messages_inc_test.php +/usr/share/phpMyAdmin/test/libraries/core +/usr/share/phpMyAdmin/test/libraries/core/PMA_array_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_checkPageValidity_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_fatalError_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_getLinks_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_getTableCount_test_dis.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_get_real_size_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_headerLocation_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_ifSetOr_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_isValid_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_safeUnserialize_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_sanitizeMySQLHost_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_securePath_test.php +/usr/share/phpMyAdmin/test/libraries/core/PMA_warnMissingExtension_test.php +/usr/share/phpMyAdmin/test/libraries/database_interface_test.php +/usr/share/phpMyAdmin/test/libraries/php-gettext +/usr/share/phpMyAdmin/test/libraries/php-gettext/Locales_test.php +/usr/share/phpMyAdmin/test/libraries/php-gettext/PMA_FileReader_test.php +/usr/share/phpMyAdmin/test/libraries/php-gettext/PMA_StreamReader_test.php +/usr/share/phpMyAdmin/test/libraries/php-gettext/PMA_StringReader_test.php +/usr/share/phpMyAdmin/test/libraries/php-gettext/PMA_gettext_test.php +/usr/share/phpMyAdmin/test/libraries/php-gettext/Parsing_test.php +/usr/share/phpMyAdmin/test/libraries/rte +/usr/share/phpMyAdmin/test/libraries/rte/PMA_EVN_getDataFromRequest_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_EVN_getEditorForm_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_EVN_getQueryFromRequest_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_RTN_ParameterParser_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_RTN_getDataFromRequest_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_RTN_getEditorForm_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_RTN_getExecuteForm_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_RTN_getQueryFromRequest_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_TRI_getDataFromRequest_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_TRI_getEditorForm_test.php +/usr/share/phpMyAdmin/test/libraries/rte/PMA_TRI_getQueryFromRequest_test.php +/usr/share/phpMyAdmin/test/libraries/select_lang +/usr/share/phpMyAdmin/test/libraries/select_lang/PMA_langDetails_test.php +/usr/share/phpMyAdmin/test/libraries/select_lang/PMA_langList_test.php +/usr/share/phpMyAdmin/test/libraries/select_lang/PMA_langName_test.php +/usr/share/phpMyAdmin/test/libraries/select_lang/locale_gettext_test.php +/usr/share/phpMyAdmin/test/libraries/sql-formatter +/usr/share/phpMyAdmin/test/libraries/sql-formatter/lib +/usr/share/phpMyAdmin/test/libraries/sql-formatter/lib/SqlFormatter_test.php +/usr/share/phpMyAdmin/test/libraries/stringMb_test.php +/usr/share/phpMyAdmin/test/libraries/stringNative_test.php +/usr/share/phpMyAdmin/test/libraries/string_test_abstract.php +/usr/share/phpMyAdmin/test/libraries/sysinfo_test.php +/usr/share/phpMyAdmin/test/selenium +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumCreateDropDatabaseTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumCreateRemoveUserTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumDbEventsTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumDbOperationsTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumDbProceduresTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumDbStructureTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumDbTriggersTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumExportTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumImportTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumLoginTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumNormalizationTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumPrivilegesTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumServerSettingsTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumTableBrowseTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumTableCreateTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumTableInsertTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumTableOperationsTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumTableStructureTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumTrackingTest.php +/usr/share/phpMyAdmin/test/selenium/PmaSeleniumXssTest.php +/usr/share/phpMyAdmin/test/selenium/TestBase.php +/usr/share/phpMyAdmin/test/test_data +/usr/share/phpMyAdmin/test/test_data/config.inc.php +/usr/share/phpMyAdmin/test/test_data/db_import.sql +/usr/share/phpMyAdmin/test/test_data/db_test.csv +/usr/share/phpMyAdmin/test/test_data/db_test.ods +/usr/share/phpMyAdmin/test/test_data/db_test_ldi.csv +/usr/share/phpMyAdmin/test/test_data/exploit_test.sql +/usr/share/phpMyAdmin/test/test_data/phpmyadmin.mediawiki +/usr/share/phpMyAdmin/test/test_data/phpmyadmin_importXML_For_Testing.xml +/usr/share/phpMyAdmin/test/test_data/pma_bookmark.sql +/usr/share/phpMyAdmin/test/test_data/server_import.sql +/usr/share/phpMyAdmin/test/test_data/table_import.sql +/usr/share/phpMyAdmin/test/test_data/test.bz2 +/usr/share/phpMyAdmin/test/test_data/test.file +/usr/share/phpMyAdmin/test/test_data/test.gz +/usr/share/phpMyAdmin/test/test_data/test.zip +/usr/share/phpMyAdmin/test/test_data/timezone.shp.zip +/usr/share/phpMyAdmin/test/theme.php +/usr/share/phpMyAdmin/test/travis.php.ini +/usr/share/phpMyAdmin/test/wui.php +/usr/share/phpMyAdmin/themes +/usr/share/phpMyAdmin/themes.php +/usr/share/phpMyAdmin/themes/dot.gif +/usr/share/phpMyAdmin/themes/original +/usr/share/phpMyAdmin/themes/original/css +/usr/share/phpMyAdmin/themes/original/css/common.css.php +/usr/share/phpMyAdmin/themes/original/css/navigation.css.php +/usr/share/phpMyAdmin/themes/original/img +/usr/share/phpMyAdmin/themes/original/img/ajax_clock_small.gif +/usr/share/phpMyAdmin/themes/original/img/arrow_ltr.png +/usr/share/phpMyAdmin/themes/original/img/arrow_rtl.png +/usr/share/phpMyAdmin/themes/original/img/b_bookmark.png +/usr/share/phpMyAdmin/themes/original/img/b_browse.png +/usr/share/phpMyAdmin/themes/original/img/b_calendar.png +/usr/share/phpMyAdmin/themes/original/img/b_chart.png +/usr/share/phpMyAdmin/themes/original/img/b_close.png +/usr/share/phpMyAdmin/themes/original/img/b_column_add.png +/usr/share/phpMyAdmin/themes/original/img/b_comment.png +/usr/share/phpMyAdmin/themes/original/img/b_dbstatistics.png +/usr/share/phpMyAdmin/themes/original/img/b_deltbl.png +/usr/share/phpMyAdmin/themes/original/img/b_docs.png +/usr/share/phpMyAdmin/themes/original/img/b_drop.png +/usr/share/phpMyAdmin/themes/original/img/b_edit.png +/usr/share/phpMyAdmin/themes/original/img/b_empty.png +/usr/share/phpMyAdmin/themes/original/img/b_engine.png +/usr/share/phpMyAdmin/themes/original/img/b_event_add.png +/usr/share/phpMyAdmin/themes/original/img/b_events.png +/usr/share/phpMyAdmin/themes/original/img/b_export.png +/usr/share/phpMyAdmin/themes/original/img/b_favorite.png +/usr/share/phpMyAdmin/themes/original/img/b_find_replace.png +/usr/share/phpMyAdmin/themes/original/img/b_ftext.png +/usr/share/phpMyAdmin/themes/original/img/b_globe.gif +/usr/share/phpMyAdmin/themes/original/img/b_group.png +/usr/share/phpMyAdmin/themes/original/img/b_help.png +/usr/share/phpMyAdmin/themes/original/img/b_home.png +/usr/share/phpMyAdmin/themes/original/img/b_import.png +/usr/share/phpMyAdmin/themes/original/img/b_index.png +/usr/share/phpMyAdmin/themes/original/img/b_index_add.png +/usr/share/phpMyAdmin/themes/original/img/b_info.png +/usr/share/phpMyAdmin/themes/original/img/b_inline_edit.png +/usr/share/phpMyAdmin/themes/original/img/b_insrow.png +/usr/share/phpMyAdmin/themes/original/img/b_minus.png +/usr/share/phpMyAdmin/themes/original/img/b_more.png +/usr/share/phpMyAdmin/themes/original/img/b_move.png +/usr/share/phpMyAdmin/themes/original/img/b_newdb.png +/usr/share/phpMyAdmin/themes/original/img/b_newtbl.png +/usr/share/phpMyAdmin/themes/original/img/b_nextpage.png +/usr/share/phpMyAdmin/themes/original/img/b_no_favorite.png +/usr/share/phpMyAdmin/themes/original/img/b_plus.png +/usr/share/phpMyAdmin/themes/original/img/b_primary.png +/usr/share/phpMyAdmin/themes/original/img/b_print.png +/usr/share/phpMyAdmin/themes/original/img/b_props.png +/usr/share/phpMyAdmin/themes/original/img/b_relations.png +/usr/share/phpMyAdmin/themes/original/img/b_report.png +/usr/share/phpMyAdmin/themes/original/img/b_routine_add.png +/usr/share/phpMyAdmin/themes/original/img/b_routines.png +/usr/share/phpMyAdmin/themes/original/img/b_save.png +/usr/share/phpMyAdmin/themes/original/img/b_saveimage.png +/usr/share/phpMyAdmin/themes/original/img/b_sbrowse.png +/usr/share/phpMyAdmin/themes/original/img/b_search.png +/usr/share/phpMyAdmin/themes/original/img/b_selboard.png +/usr/share/phpMyAdmin/themes/original/img/b_select.png +/usr/share/phpMyAdmin/themes/original/img/b_snewtbl.png +/usr/share/phpMyAdmin/themes/original/img/b_spatial.png +/usr/share/phpMyAdmin/themes/original/img/b_sql.png +/usr/share/phpMyAdmin/themes/original/img/b_sqlhelp.png +/usr/share/phpMyAdmin/themes/original/img/b_table_add.png +/usr/share/phpMyAdmin/themes/original/img/b_tblanalyse.png +/usr/share/phpMyAdmin/themes/original/img/b_tblexport.png +/usr/share/phpMyAdmin/themes/original/img/b_tblimport.png +/usr/share/phpMyAdmin/themes/original/img/b_tblops.png +/usr/share/phpMyAdmin/themes/original/img/b_tbloptimize.png +/usr/share/phpMyAdmin/themes/original/img/b_tipp.png +/usr/share/phpMyAdmin/themes/original/img/b_trigger_add.png +/usr/share/phpMyAdmin/themes/original/img/b_triggers.png +/usr/share/phpMyAdmin/themes/original/img/b_undo.png +/usr/share/phpMyAdmin/themes/original/img/b_unique.png +/usr/share/phpMyAdmin/themes/original/img/b_usradd.png +/usr/share/phpMyAdmin/themes/original/img/b_usrcheck.png +/usr/share/phpMyAdmin/themes/original/img/b_usrdrop.png +/usr/share/phpMyAdmin/themes/original/img/b_usredit.png +/usr/share/phpMyAdmin/themes/original/img/b_usrlist.png +/usr/share/phpMyAdmin/themes/original/img/b_versions.png +/usr/share/phpMyAdmin/themes/original/img/b_view.png +/usr/share/phpMyAdmin/themes/original/img/b_view_add.png +/usr/share/phpMyAdmin/themes/original/img/b_views.png +/usr/share/phpMyAdmin/themes/original/img/bd_browse.png +/usr/share/phpMyAdmin/themes/original/img/bd_deltbl.png +/usr/share/phpMyAdmin/themes/original/img/bd_drop.png +/usr/share/phpMyAdmin/themes/original/img/bd_edit.png +/usr/share/phpMyAdmin/themes/original/img/bd_empty.png +/usr/share/phpMyAdmin/themes/original/img/bd_export.png +/usr/share/phpMyAdmin/themes/original/img/bd_ftext.png +/usr/share/phpMyAdmin/themes/original/img/bd_index.png +/usr/share/phpMyAdmin/themes/original/img/bd_insrow.png +/usr/share/phpMyAdmin/themes/original/img/bd_nextpage.png +/usr/share/phpMyAdmin/themes/original/img/bd_primary.png +/usr/share/phpMyAdmin/themes/original/img/bd_routine_add.png +/usr/share/phpMyAdmin/themes/original/img/bd_sbrowse.png +/usr/share/phpMyAdmin/themes/original/img/bd_select.png +/usr/share/phpMyAdmin/themes/original/img/bd_spatial.png +/usr/share/phpMyAdmin/themes/original/img/bd_unique.png +/usr/share/phpMyAdmin/themes/original/img/centralColumns.png +/usr/share/phpMyAdmin/themes/original/img/centralColumns_add.png +/usr/share/phpMyAdmin/themes/original/img/centralColumns_delete.png +/usr/share/phpMyAdmin/themes/original/img/cleardot.gif +/usr/share/phpMyAdmin/themes/original/img/col_drop.png +/usr/share/phpMyAdmin/themes/original/img/col_pointer.png +/usr/share/phpMyAdmin/themes/original/img/col_pointer_ver.png +/usr/share/phpMyAdmin/themes/original/img/console.png +/usr/share/phpMyAdmin/themes/original/img/east-mini.png +/usr/share/phpMyAdmin/themes/original/img/error.ico +/usr/share/phpMyAdmin/themes/original/img/eye.png +/usr/share/phpMyAdmin/themes/original/img/eye_grey.png +/usr/share/phpMyAdmin/themes/original/img/lightbulb.png +/usr/share/phpMyAdmin/themes/original/img/lightbulb_off.png +/usr/share/phpMyAdmin/themes/original/img/logo_left.png +/usr/share/phpMyAdmin/themes/original/img/logo_right.png +/usr/share/phpMyAdmin/themes/original/img/more.png +/usr/share/phpMyAdmin/themes/original/img/new_data.png +/usr/share/phpMyAdmin/themes/original/img/new_data_hovered.png +/usr/share/phpMyAdmin/themes/original/img/new_data_selected.png +/usr/share/phpMyAdmin/themes/original/img/new_data_selected_hovered.png +/usr/share/phpMyAdmin/themes/original/img/new_struct.png +/usr/share/phpMyAdmin/themes/original/img/new_struct_hovered.png +/usr/share/phpMyAdmin/themes/original/img/new_struct_selected.png +/usr/share/phpMyAdmin/themes/original/img/new_struct_selected_hovered.png +/usr/share/phpMyAdmin/themes/original/img/normalize.png +/usr/share/phpMyAdmin/themes/original/img/north-mini.png +/usr/share/phpMyAdmin/themes/original/img/pause.png +/usr/share/phpMyAdmin/themes/original/img/play.png +/usr/share/phpMyAdmin/themes/original/img/s_asc.png +/usr/share/phpMyAdmin/themes/original/img/s_asci.png +/usr/share/phpMyAdmin/themes/original/img/s_attention.png +/usr/share/phpMyAdmin/themes/original/img/s_cancel.png +/usr/share/phpMyAdmin/themes/original/img/s_cog.png +/usr/share/phpMyAdmin/themes/original/img/s_collapseall.png +/usr/share/phpMyAdmin/themes/original/img/s_db.png +/usr/share/phpMyAdmin/themes/original/img/s_desc.png +/usr/share/phpMyAdmin/themes/original/img/s_error.png +/usr/share/phpMyAdmin/themes/original/img/s_error2.png +/usr/share/phpMyAdmin/themes/original/img/s_fulltext.png +/usr/share/phpMyAdmin/themes/original/img/s_host.png +/usr/share/phpMyAdmin/themes/original/img/s_info.png +/usr/share/phpMyAdmin/themes/original/img/s_lang.png +/usr/share/phpMyAdmin/themes/original/img/s_link.png +/usr/share/phpMyAdmin/themes/original/img/s_lock.png +/usr/share/phpMyAdmin/themes/original/img/s_loggoff.png +/usr/share/phpMyAdmin/themes/original/img/s_notice.png +/usr/share/phpMyAdmin/themes/original/img/s_partialtext.png +/usr/share/phpMyAdmin/themes/original/img/s_passwd.png +/usr/share/phpMyAdmin/themes/original/img/s_really.png +/usr/share/phpMyAdmin/themes/original/img/s_reload.png +/usr/share/phpMyAdmin/themes/original/img/s_replication.png +/usr/share/phpMyAdmin/themes/original/img/s_rights.png +/usr/share/phpMyAdmin/themes/original/img/s_sortable.png +/usr/share/phpMyAdmin/themes/original/img/s_status.png +/usr/share/phpMyAdmin/themes/original/img/s_success.png +/usr/share/phpMyAdmin/themes/original/img/s_sync.png +/usr/share/phpMyAdmin/themes/original/img/s_tbl.png +/usr/share/phpMyAdmin/themes/original/img/s_theme.png +/usr/share/phpMyAdmin/themes/original/img/s_top.png +/usr/share/phpMyAdmin/themes/original/img/s_unlink.png +/usr/share/phpMyAdmin/themes/original/img/s_vars.png +/usr/share/phpMyAdmin/themes/original/img/s_views.png +/usr/share/phpMyAdmin/themes/original/img/south-mini.png +/usr/share/phpMyAdmin/themes/original/img/spacer.png +/usr/share/phpMyAdmin/themes/original/img/sprites.png +/usr/share/phpMyAdmin/themes/original/img/toggle-ltr.png +/usr/share/phpMyAdmin/themes/original/img/toggle-rtl.png +/usr/share/phpMyAdmin/themes/original/img/vertical_line.png +/usr/share/phpMyAdmin/themes/original/img/west-mini.png +/usr/share/phpMyAdmin/themes/original/img/window-new.png +/usr/share/phpMyAdmin/themes/original/img/zoom-minus-mini.png +/usr/share/phpMyAdmin/themes/original/img/zoom-plus-mini.png +/usr/share/phpMyAdmin/themes/original/img/zoom-world-mini.png +/usr/share/phpMyAdmin/themes/original/info.inc.php +/usr/share/phpMyAdmin/themes/original/jquery +/usr/share/phpMyAdmin/themes/original/jquery/images +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_flat_75_ffffff_40x100.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_glass_65_ffffff_1x400.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_glass_75_dadada_1x400.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-icons_222222_256x240.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-icons_2e83ff_256x240.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-icons_454545_256x240.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-icons_888888_256x240.png +/usr/share/phpMyAdmin/themes/original/jquery/images/ui-icons_cd0a0a_256x240.png +/usr/share/phpMyAdmin/themes/original/jquery/jquery-ui-1.11.2.css +/usr/share/phpMyAdmin/themes/original/layout.inc.php +/usr/share/phpMyAdmin/themes/original/screen.png +/usr/share/phpMyAdmin/themes/original/sprites.lib.php +/usr/share/phpMyAdmin/themes/pmahomme +/usr/share/phpMyAdmin/themes/pmahomme/css +/usr/share/phpMyAdmin/themes/pmahomme/css/codemirror.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/common.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/enum_editor.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/gis.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/jqplot.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/navigation.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/pmd.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/resizable-menu.css.php +/usr/share/phpMyAdmin/themes/pmahomme/css/rte.css.php +/usr/share/phpMyAdmin/themes/pmahomme/img +/usr/share/phpMyAdmin/themes/pmahomme/img/ajax_clock_small.gif +/usr/share/phpMyAdmin/themes/pmahomme/img/arrow_ltr.png +/usr/share/phpMyAdmin/themes/pmahomme/img/arrow_rtl.png +/usr/share/phpMyAdmin/themes/pmahomme/img/asc_order.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_bookmark.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_browse.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_calendar.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_chart.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_close.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_column_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_comment.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_dbstatistics.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_deltbl.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_docs.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_docsql.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_drop.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_edit.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_empty.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_engine.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_event_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_events.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_export.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_favorite.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_find_replace.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_firstpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_ftext.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_globe.gif +/usr/share/phpMyAdmin/themes/pmahomme/img/b_group.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_help.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_home.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_import.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_index.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_index_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_info.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_inline_edit.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_insrow.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_lastpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_minus.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_more.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_move.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_newdb.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_newtbl.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_nextpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_no_favorite.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_pdfdoc.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_plus.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_prevpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_primary.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_print.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_props.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_relations.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_report.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_routine_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_routines.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_save.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_saveimage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_sbrowse.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_sdb.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_search.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_selboard.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_select.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_snewtbl.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_spatial.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_sql.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_sqldoc.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_sqlhelp.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_table_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_tblanalyse.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_tblexport.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_tblimport.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_tblops.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_tbloptimize.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_tipp.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_trigger_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_triggers.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_undo.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_unique.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_usradd.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_usrcheck.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_usrdrop.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_usredit.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_usrlist.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_versions.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_view.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_view_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/b_views.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_browse.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_deltbl.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_drop.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_edit.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_empty.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_export.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_firstpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_ftext.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_index.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_insrow.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_lastpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_nextpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_prevpage.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_primary.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_routine_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_sbrowse.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_select.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_spatial.png +/usr/share/phpMyAdmin/themes/pmahomme/img/bd_unique.png +/usr/share/phpMyAdmin/themes/pmahomme/img/centralColumns.png +/usr/share/phpMyAdmin/themes/pmahomme/img/centralColumns_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/centralColumns_delete.png +/usr/share/phpMyAdmin/themes/pmahomme/img/col_drop.png +/usr/share/phpMyAdmin/themes/pmahomme/img/col_pointer.png +/usr/share/phpMyAdmin/themes/pmahomme/img/col_pointer_ver.png +/usr/share/phpMyAdmin/themes/pmahomme/img/console.png +/usr/share/phpMyAdmin/themes/pmahomme/img/database.png +/usr/share/phpMyAdmin/themes/pmahomme/img/east-mini.png +/usr/share/phpMyAdmin/themes/pmahomme/img/error.ico +/usr/share/phpMyAdmin/themes/pmahomme/img/eye.png +/usr/share/phpMyAdmin/themes/pmahomme/img/eye_grey.png +/usr/share/phpMyAdmin/themes/pmahomme/img/item.png +/usr/share/phpMyAdmin/themes/pmahomme/img/left_nav_bg.png +/usr/share/phpMyAdmin/themes/pmahomme/img/lightbulb.png +/usr/share/phpMyAdmin/themes/pmahomme/img/lightbulb_off.png +/usr/share/phpMyAdmin/themes/pmahomme/img/logo_left.png +/usr/share/phpMyAdmin/themes/pmahomme/img/logo_right.png +/usr/share/phpMyAdmin/themes/pmahomme/img/more.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_data.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_data_hovered.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_data_selected.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_data_selected_hovered.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_struct.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_struct_hovered.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_struct_selected.png +/usr/share/phpMyAdmin/themes/pmahomme/img/new_struct_selected_hovered.png +/usr/share/phpMyAdmin/themes/pmahomme/img/normalize.png +/usr/share/phpMyAdmin/themes/pmahomme/img/north-mini.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pause.png +/usr/share/phpMyAdmin/themes/pmahomme/img/php_sym.png +/usr/share/phpMyAdmin/themes/pmahomme/img/play.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pma_logo2.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/1.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/2.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/2leftarrow.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/2leftarrow_m.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/2rightarrow.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/2rightarrow_m.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/3.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/4.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/5.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/6.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/7.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/8.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/FieldKey_small.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/Field_small.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/Field_small_char.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/Field_small_date.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/Field_small_int.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/Header.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/Header_Linked.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/anchor.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/and_icon.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/ang_direct.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/bord.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/bottom.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/def.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/display_field.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/downarrow1.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/downarrow2.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/downarrow2_m.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/exec.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/exec_small.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/exitFullscreen.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/export.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/favicon.ico +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/grid.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/help.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/help_relation.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/left_panel_butt.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/left_panel_tab.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/minus.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/or_icon.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/page_add.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/page_delete.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/page_edit.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/pdf.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/plus.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/query_builder.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/relation.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/reload.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/resize.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/resizeright.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/rightarrow1.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/rightarrow2.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/save.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/save_as.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/small_tab.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/table.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/toggle_lines.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/top_panel.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/uparrow2_m.png +/usr/share/phpMyAdmin/themes/pmahomme/img/pmd/viewInFullscreen.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_asc.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_asci.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_attention.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_cancel.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_cancel2.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_cog.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_collapseall.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_db.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_desc.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_error.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_error2.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_fulltext.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_host.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_info.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_lang.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_link.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_lock.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_loggoff.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_notice.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_okay.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_partialtext.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_passwd.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_process.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_really.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_reload.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_replication.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_rights.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_sortable.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_status.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_success.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_sync.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_tbl.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_theme.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_top.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_unlink.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_vars.png +/usr/share/phpMyAdmin/themes/pmahomme/img/s_views.png +/usr/share/phpMyAdmin/themes/pmahomme/img/select_bg.png +/usr/share/phpMyAdmin/themes/pmahomme/img/south-mini.png +/usr/share/phpMyAdmin/themes/pmahomme/img/spacer.png +/usr/share/phpMyAdmin/themes/pmahomme/img/sprites.png +/usr/share/phpMyAdmin/themes/pmahomme/img/toggle-ltr.png +/usr/share/phpMyAdmin/themes/pmahomme/img/toggle-rtl.png +/usr/share/phpMyAdmin/themes/pmahomme/img/vertical_line.png +/usr/share/phpMyAdmin/themes/pmahomme/img/west-mini.png +/usr/share/phpMyAdmin/themes/pmahomme/img/window-new.png +/usr/share/phpMyAdmin/themes/pmahomme/img/zoom-minus-mini.png +/usr/share/phpMyAdmin/themes/pmahomme/img/zoom-plus-mini.png +/usr/share/phpMyAdmin/themes/pmahomme/img/zoom-world-mini.png +/usr/share/phpMyAdmin/themes/pmahomme/info.inc.php +/usr/share/phpMyAdmin/themes/pmahomme/jquery +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_flat_75_ffffff_40x100.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_glass_65_ffffff_1x400.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_glass_75_dadada_1x400.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-icons_222222_256x240.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-icons_2e83ff_256x240.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-icons_454545_256x240.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-icons_888888_256x240.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/images/ui-icons_cd0a0a_256x240.png +/usr/share/phpMyAdmin/themes/pmahomme/jquery/jquery-ui-1.11.2.css +/usr/share/phpMyAdmin/themes/pmahomme/layout.inc.php +/usr/share/phpMyAdmin/themes/pmahomme/screen.png +/usr/share/phpMyAdmin/themes/pmahomme/sprites.lib.php +/usr/share/phpMyAdmin/themes/sprites.css.php +/usr/share/phpMyAdmin/themes/svg_gradient.php +/usr/share/phpMyAdmin/transformation_overview.php +/usr/share/phpMyAdmin/transformation_wrapper.php +/usr/share/phpMyAdmin/url.php +/usr/share/phpMyAdmin/user_password.php +/usr/share/phpMyAdmin/version_check.php +/usr/share/phpMyAdmin/view_create.php +/usr/share/phpMyAdmin/view_operations.php +/usr/share/phpMyAdmin/webapp.php +/var/lib/phpMyAdmin +/var/lib/phpMyAdmin/config +/var/lib/phpMyAdmin/save +/var/lib/phpMyAdmin/upload +[root@centos7 ~]# cat /etc/httpd/conf.d/phpMyAdmin.conf +# phpMyAdmin - Web based MySQL browser written in php +# +# Allows only localhost by default +# +# But allowing phpMyAdmin to anyone other than localhost should be considered +# dangerous unless properly secured by SSL + +Alias /phpMyAdmin /usr/share/phpMyAdmin +Alias /phpmyadmin /usr/share/phpMyAdmin + + + AddDefaultCharset UTF-8 + + + # Apache 2.4 + + Require ip 127.0.0.1 + Require ip ::1 + + + + # Apache 2.2 + Order Deny,Allow + Deny from All + Allow from 127.0.0.1 + Allow from ::1 + + + + + + # Apache 2.4 + + Require ip 127.0.0.1 + Require ip ::1 + + + + # Apache 2.2 + Order Deny,Allow + Deny from All + Allow from 127.0.0.1 + Allow from ::1 + + + +# These directories do not require access over HTTP - taken from the original +# phpMyAdmin upstream tarball +# + + Order Deny,Allow + Deny from All + Allow from None + + + + Order Deny,Allow + Deny from All + Allow from None + + + + Order Deny,Allow + Deny from All + Allow from None + + +# This configuration prevents mod_security at phpMyAdmin directories from +# filtering SQL etc. This may break your mod_security implementation. +# +# +# +# SecRuleInheritance Off +# +# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# systemctl restart httpd +[root@centos7 ~]# cp -p /etc/httpd/conf.d/phpMyAdmin.conf/etc/httpd/conf.d/phpMyAdmin.conf.orig +cp: missing destination file operand after /etc/httpd/conf.d/phpMyAdmin.conf/etc/httpd/conf.d/phpMyAdmin.conf.orig +Try 'cp --help' for more information. +[root@centos7 ~]# cp -p /etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.orig +[root@centos7 ~]# vi /etc/httpd/conf.d/phpMyAdmin.conf +[root@centos7 ~]# systemctl restart httpd +[root@centos7 ~]# vi /etc/httpd/conf.d/phpMyAdmin.conf +[root@centos7 ~]# systemctl restart httpd +[root@centos7 ~]# vi /etc/httpd/conf.d/phpMyAdmin.conf +[root@centos7 ~]# systemctl restart httpd +[root@centos7 ~]# systemctl status httpd +? httpd.service - The Apache HTTP Server + Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) + Active: active (running) since Wed 2018-12-26 12:48:34 IST; 3s ago + Docs: man:httpd(8) + man:apachectl(8) + Process: 13465 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) + Main PID: 13472 (httpd) + Status: "Processing requests..." + Tasks: 6 + CGroup: /system.slice/httpd.service + +-13472 /usr/sbin/httpd -DFOREGROUND + +-13474 /usr/sbin/httpd -DFOREGROUND + +-13475 /usr/sbin/httpd -DFOREGROUND + +-13476 /usr/sbin/httpd -DFOREGROUND + +-13477 /usr/sbin/httpd -DFOREGROUND + +-13478 /usr/sbin/httpd -DFOREGROUND + +Dec 26 12:48:33 centos7 systemd[1]: Stopped The Apache HTTP Server. +Dec 26 12:48:33 centos7 systemd[1]: Starting The Apache HTTP Server... +Dec 26 12:48:33 centos7 httpd[13472]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::1f35:7cec:21cc:b67...is message +Dec 26 12:48:34 centos7 systemd[1]: Started The Apache HTTP Server. +Hint: Some lines were ellipsized, use -l to show in full. +[root@centos7 ~]# vi /etc/httpd/conf.d/phpMyAdmin.conf +[root@centos7 ~]# cd /etc/httpd/conf.d/ +[root@centos7 conf.d]# ll +total 28 +-rw-r--r--. 1 root root 2926 Nov 5 07:17 autoindex.conf +-rw-r--r--. 1 root root 691 Oct 31 01:03 php.conf +-rw-r--r-- 1 root root 1831 Dec 26 12:48 phpMyAdmin.conf +-rw-r--r-- 1 root root 1779 May 26 2018 phpMyAdmin.conf.orig +-rw-r--r--. 1 root root 366 Nov 5 07:17 README +-rw-r--r--. 1 root root 1252 Oct 30 20:30 userdir.conf +-rw-r--r--. 1 root root 824 Oct 30 20:30 welcome.conf +[root@centos7 conf.d]# cp -p phpMyAdmin.conf.orig phpMyAdmin.conf +cp: overwrite phpMyAdmin.conf? y +[root@centos7 conf.d]# systemctl restart httpd +[root@centos7 conf.d]# +[root@centos7 conf.d]# +[root@centos7 conf.d]# + + + +[root@centos7 conf.d]# cd +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# history + 1 yum update + 2 ps aux |grep yum + 3 kill -9 2682 + 4 yum update + 5 yum list php + 6 yum install php -y + 7 yum list mariadb + 8 yum install mariadb.x86_64 -y + 9 yum install phpMyAdmin -y + 10 yum list phpMyAdmin + 11 yum list *phpMyAdmin + 12 yum list phpMyAdmin* + 13 yum list php* + 14 cd /opt/ + 15 gir clone https://github.com/Program-O/Program-O + 16 git clone https://github.com/Program-O/Program-O + 17 ll + 18 cd Program-O/ + 19 ll + 20 cd /var/www/html/ + 21 git clone https://github.com/Program-O/Program-O + 22 cd Program-O/ + 23 ll + 24 systemctl status httpd + 25 systemctl staart httpd + 26 systemctl start httpd + 27 systemctl status httpd + 28 iptables -F + 29 ip a + 30 pwd + 31 poweroff + 32 history + 33 systemctl status httpd + 34 systemctl enable httpd + 35 systemctl status httpd + 36 systemctl start httpd + 37 systemctl status httpd + 38 cd /var/www/html/ + 39 ll + 40 cd Program-O/ + 41 ll + 42 iptables -F + 43 yum search phpMyAdmin + 44 yum search phpmyadmin + 45 yum search php* + 46 yum list php* + 47 yum install php-pdo.x86_64 php-mysql.x86_64 php-devel.x86_64 + 48 rpm -ql php-pdo-5.4.16-46.el7.x86_64 + 49 vi /etc/php.d/pdo.ini + 50 systemctl restart httpd + 51 yum list php* |grep string + 52 yum install php-mbstring.x86_64 -y + 53 cd .. + 54 ll + 55 chmod a+w Program-O/ + 56 ll + 57 ll Program-O/ + 58 cd Program-O/ + 59 chmod a+w * + 60 systemctl restart httpd + 61 chmod a+w chatbot/debug/ + 62 systemctl restart httpd + 63 ll + 64 vi /etc/selinux/config + 65 ll chatbot/ + 66 cat /etc/passwd + 67 cd .. + 68 chown -R apache:apache Program-O/ + 69 ll + 70 cd - + 71 ll + 72 systemctl restart httpd + 73 reboot + 74 systemctl status httpd + 75 iptables -F + 76 mysqladmin -u root password password + 77 systemctl start mysql + 78 systemctl start mariadb + 79 yum list mariadb* + 80 rpm -ql mariadb.x86_64 + 81 yum install mariadb-server.x86_64 -y + 82 rpm -ql mariadb-server.x86_64 + 83 cat /etc/logrotate.d/mariadb + 84 cat /etc/my.cnf.d/server.cnf + 85 systemctl start mariadb + 86 systemctl status mariadb + 87 mysqladmin -u root password password + 88 mysql -uroot -ppassword + 89 yum install epel-release + 90 rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm + 91 php -version + 92 php version + 93 php --version + 94 yum --enablerepo=remi install phpmyadmin + 95 yum --enablerepo=remi,remi-test install phpmyadmin + 96 yum -y install phpmyadmin + 97 rpm -ql phpMyAdmin.noarch + 98 cat /etc/httpd/conf.d/phpMyAdmin.conf + 99 systemctl restart httpd + 100 cp -p /etc/httpd/conf.d/phpMyAdmin.conf/etc/httpd/conf.d/phpMyAdmin.conf.orig + 101 cp -p /etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.orig + 102 vi /etc/httpd/conf.d/phpMyAdmin.conf + 103 systemctl restart httpd + 104 vi /etc/httpd/conf.d/phpMyAdmin.conf + 105 systemctl restart httpd + 106 vi /etc/httpd/conf.d/phpMyAdmin.conf + 107 systemctl restart httpd + 108 systemctl status httpd + 109 vi /etc/httpd/conf.d/phpMyAdmin.conf + 110 cd /etc/httpd/conf.d/ + 111 ll + 112 cp -p phpMyAdmin.conf.orig phpMyAdmin.conf + 113 systemctl restart httpd + 114 pwd + 115 cd + 116 history +[root@centos7 ~]# + + + +[root@centos7 ~]# cd /var/www/html/Program-O/ +[root@centos7 Program-O]# ll +total 112 +drwxrwxrwx. 8 apache apache 4096 Dec 26 11:56 admin +-rw-rw-rw-. 1 apache apache 586 Dec 24 20:12 aiml tag list.txt +-rw-rw-rw-. 1 apache apache 30194 Dec 24 20:12 CHANGELOG.md +drwxrwxrwx. 5 apache apache 75 Dec 24 20:12 chatbot +drwxrwxrwx. 2 apache apache 135 Dec 26 12:04 config +-rw-rw-rw-. 1 apache apache 700 Dec 24 20:12 CONTRIBUTING.MD +-rw-rw-rw-. 1 apache apache 1150 Dec 24 20:12 favicon.ico +-rw-rw-rw-. 1 apache apache 2484 Dec 24 20:12 fresh_install_README.txt +-rw-rw-rw-. 1 apache apache 1355 Dec 24 20:12 getbots.php +drwxrwxrwx. 6 apache apache 76 Dec 24 20:12 gui +-rw-rw-rw-. 1 apache apache 1463 Dec 24 20:12 index.php +drwxrwxrwx. 3 apache apache 262 Dec 24 20:12 install +drwxrwxrwx. 3 apache apache 201 Dec 24 20:12 library +-rw-rw-rw-. 1 apache apache 31947 Dec 24 20:12 LICENSE +drwxrwxrwx. 2 apache apache 187 Dec 26 13:03 logs +-rw-rw-rw-. 1 apache apache 3751 Dec 24 20:12 README.md +-rw-rw-rw-. 1 apache apache 460 Dec 24 20:12 robots.txt +drwxrwxrwx. 3 apache apache 141 Dec 24 20:12 scripts +-rw-rw-rw-. 1 apache apache 170 Dec 24 20:12 style.css +-rw-rw-rw-. 1 apache apache 1067 Dec 24 20:12 TODO +-rw-rw-rw-. 1 apache apache 7 Dec 24 20:12 version.txt +[root@centos7 Program-O]# +[root@centos7 Program-O]# cp chatbot/conversation_start.php +admin/ config/ getbots.php gui/ LICENSE scripts/ +aiml tag list.txt CONTRIBUTING.MD .git/ index.php logs/ style.css +CHANGELOG.md favicon.ico .gitattributes install/ README.md TODO +chatbot/ fresh_install_README.txt .gitignore library/ robots.txt version.txt +[root@centos7 Program-O]# cp -p chatbot/conversation_start.php chatbot/conversation_start.php.orig +[root@centos7 Program-O]# vi chatbot/conversation_start.php +[root@centos7 Program-O]# cd chatbot/ +[root@centos7 chatbot]# ll +total 24 +drwxr-xr-x. 8 apache apache 142 Dec 24 20:12 addons +-rw-r--r--. 1 apache apache 10839 Dec 24 20:12 conversation_start.php +-rw-r--r-- 1 apache apache 10839 Dec 24 20:12 conversation_start.php.orig +drwxr-xr-x. 5 apache apache 50 Dec 24 20:12 core +drwxrwxrwx. 2 apache apache 250 Dec 26 18:27 debug +[root@centos7 chatbot]# cat conversation_start.php | grep -i url +[root@centos7 chatbot]# cat conversation_start.php | grep -i uri +[root@centos7 chatbot]# cd .. +[root@centos7 Program-O]# cd gui/jquery/ +[root@centos7 jquery]# ll +total 172 +-rw-r--r--. 1 apache apache 1150 Dec 24 20:12 favicon.ico +-rw-r--r--. 1 apache apache 7209 Dec 24 20:12 index.php +-rw-r--r--. 1 apache apache 92629 Dec 24 20:12 jquery-1.9.1.min.js +-rw-r--r--. 1 apache apache 5852 Dec 24 20:12 main.css +-rw-r--r--. 1 apache apache 8667 Dec 24 20:12 multibot_gui_with_chatlog.php +-rw-r--r--. 1 apache apache 21026 Dec 24 20:12 small_dog.png +-rw-r--r--. 1 apache apache 12622 Dec 24 20:12 small_man.png +-rw-r--r--. 1 apache apache 7876 Dec 24 20:12 test_gui.php +[root@centos7 jquery]# cat multibot_gui_with_chatlog.php | grep -i url +$base_URL = 'http://' . $_SERVER['HTTP_HOST']; // set domain name for the script +$this_path = str_replace($_SERVER['DOCUMENT_ROOT'], $base_URL, $this_path); // transform it from a file path to a URL +$root_url = str_replace('gui/jquery', '', $this_path); // and set it to the correct script location +$url = $root_url . 'chatbot/conversation_start.php'; // and set it to the correct script location + Example URL's for use with the chatbot API + $url = 'http://api.program-o.com/v2.3.1/chatbot/'; + $url = 'http://localhost/Program-O/Program-O/chatbot/conversation_start.php'; + $url = 'chat.php'; +$display = "The URL for the API is currently set as:
\n$url.
\n"; +$display .= 'Please make sure that you edit this file to change the value of the variable $url in this file to reflect the correct URL address of your chatbot, and to remove this message.' . PHP_EOL; + #shameless_plug, #urlwarning { + #urlwarning { +
+ var gbURL = 'getbots.php'; + $.getJSON(gbURL, function (data) { + $.post('', formdata, function (data) { + $('#urlwarning').html("Something went wrong! Error = " + errorThrown); +[root@centos7 jquery]# cd +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# reboot +login as: root +root@192.168.140.128's password: +Last login: Wed Dec 26 11:54:31 2018 from 192.168.140.1 +ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1545805471 +[root@centos7 ~]# iptables -F +[root@centos7 ~]# systemctl status mariadb +? mariadb.service - MariaDB database server + Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) + Active: inactive (dead) +[root@centos7 ~]# systemctl enable mariadb +Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. +[root@centos7 ~]# systemctl start mariadb +[root@centos7 ~]# systemctl status mariadb +? mariadb.service - MariaDB database server + Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) + Active: active (running) since Wed 2018-12-26 18:47:34 IST; 1s ago + Process: 10445 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS) + Process: 10413 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS) + Main PID: 10444 (mysqld_safe) + Tasks: 20 + CGroup: /system.slice/mariadb.service + +-10444 /bin/sh /usr/bin/mysqld_safe --basedir=/usr + +-10606 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-... + +Dec 26 18:47:32 centos7 systemd[1]: Starting MariaDB database server... +Dec 26 18:47:32 centos7 mariadb-prepare-db-dir[10413]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done. +Dec 26 18:47:32 centos7 mysqld_safe[10444]: 181226 18:47:32 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'. +Dec 26 18:47:32 centos7 mysqld_safe[10444]: 181226 18:47:32 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql +Dec 26 18:47:34 centos7 systemd[1]: Started MariaDB database server. +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# +[root@centos7 ~]# + +[root@centos7 ~]# cd /var/www/html/Program-O/ +[root@centos7 Program-O]# vi gui/plain/index.php +[root@centos7 Program-O]# +[root@centos7 Program-O]# +[root@centos7 Program-O]# +[root@centos7 Program-O]# +[root@centos7 Program-O]# +[root@centos7 Program-O]# cd /opt/ +[root@centos7 opt]# df -h +Filesystem Size Used Avail Use% Mounted on +/dev/mapper/centos-root 50G 5.4G 45G 11% / +devtmpfs 2.0G 0 2.0G 0% /dev +tmpfs 2.0G 0 2.0G 0% /dev/shm +tmpfs 2.0G 13M 2.0G 1% /run +tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup +/dev/sda1 1014M 205M 810M 21% /boot +/dev/mapper/centos-home 146G 130M 146G 1% /home +tmpfs 394M 12K 394M 1% /run/user/42 +tmpfs 394M 0 394M 0% /run/user/0 +[root@centos7 opt]# +[root@centos7 opt]# +[root@centos7 opt]# +[root@centos7 opt]# +[root@centos7 opt]# ll +total 4 +drwxr-xr-x. 11 root root 4096 Dec 24 20:10 Program-O +drwxr-xr-x. 2 root root 6 Oct 31 00:47 rh +[root@centos7 opt]# ll Program-O/ +total 112 +drwxr-xr-x. 7 root root 4096 Dec 24 20:10 admin +-rw-r--r--. 1 root root 586 Dec 24 20:10 aiml tag list.txt +-rw-r--r--. 1 root root 30194 Dec 24 20:10 CHANGELOG.md +drwxr-xr-x. 5 root root 75 Dec 24 20:10 chatbot +drwxr-xr-x. 2 root root 110 Dec 24 20:10 config +-rw-r--r--. 1 root root 700 Dec 24 20:10 CONTRIBUTING.MD +-rw-r--r--. 1 root root 1150 Dec 24 20:10 favicon.ico +-rw-r--r--. 1 root root 2484 Dec 24 20:10 fresh_install_README.txt +-rw-r--r--. 1 root root 1355 Dec 24 20:10 getbots.php +drwxr-xr-x. 6 root root 76 Dec 24 20:10 gui +-rw-r--r--. 1 root root 1463 Dec 24 20:10 index.php +drwxr-xr-x. 3 root root 262 Dec 24 20:10 install +drwxr-xr-x. 3 root root 201 Dec 24 20:10 library +-rw-r--r--. 1 root root 31947 Dec 24 20:10 LICENSE +drwxr-xr-x. 2 root root 23 Dec 24 20:10 logs +-rw-r--r--. 1 root root 3751 Dec 24 20:10 README.md +-rw-r--r--. 1 root root 460 Dec 24 20:10 robots.txt +drwxr-xr-x. 3 root root 141 Dec 24 20:10 scripts +-rw-r--r--. 1 root root 170 Dec 24 20:10 style.css +-rw-r--r--. 1 root root 1067 Dec 24 20:10 TODO +-rw-r--r--. 1 root root 7 Dec 24 20:10 version.txt +[root@centos7 opt]# rm -rf Program-O/ +[root@centos7 opt]# +[root@centos7 opt]# +[root@centos7 opt]# +[root@centos7 opt]# cat /etc/redhat-release +CentOS Linux release 7.6.1810 (Core) +[root@centos7 opt]# poweroff diff --git a/Program-Output-Files/Validation Errors.html b/Program-Output-Files/Validation Errors.html new file mode 100644 index 0000000..4b79a74 --- /dev/null +++ b/Program-Output-Files/Validation Errors.html @@ -0,0 +1,2 @@ + +Validation Errors

Validation Errors


A total of 13 errors have been found in the file ai.aiml.


Error 1871: Element '<category>': This element is not expected. on line 40.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 162.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 162.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 261.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 261.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 279.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 279.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 351.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 351.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 523.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 523.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 523.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 523.


A total of 18 errors have been found in the file alice.aiml.


Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 172.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 172.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 218.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 218.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 285.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 285.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 454.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 454.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 539.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 539.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 559.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 559.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 707.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 707.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 710.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 710.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 710.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 710.


A total of 7 errors have been found in the file atomic.aiml.


Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 2,745.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 2,745.
Error 1843: Element '<random>': Character content other than whitespace is not allowed
because the content type is 'element-only'. on line 3,398.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 6,713.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 6,713.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 10,855.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 10,855.


A total of 5 errors have been found in the file biography.aiml.


Error 1871: Element '<EM>': This element is not expected. Expected is one of ( a, b, set,
think, br, get, random, li, srai, star ). on line 550.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 694.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 694.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 889.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 889.


A total of 3 errors have been found in the file client.aiml.


Error 1871: Element '<think>': This element is not expected. Expected is ( li ). on line 443.
Error 1871: Element '<think>': This element is not expected. Expected is ( li ). on line 1,733.
Error 1871: Element '<BR>': This element is not expected. on line 2,756.


A total of 4 errors have been found in the file computers.aiml.


Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 124.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 124.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 421.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 421.


A total of 17 errors have been found in the file default.aiml.


Error 1843: Element '<random>': Character content other than whitespace is not allowed
because the content type is 'element-only'. on line 4,311.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 4,725.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 4,725.
Error 1843: Element '<random>': Character content other than whitespace is not allowed
because the content type is 'element-only'. on line 4,848.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 5,877.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 5,877.
Error 1843: Element '<random>': Character content other than whitespace is not allowed
because the content type is 'element-only'. on line 8,844.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 9,393.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 9,393.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 9,399.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 9,399.
Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 10,089.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 10,089.
Error 1871: Element '<get_likes>': This element is not expected. Expected is one of ( a,
b, set, think, br, get, random, li, srai, star ). on line 10,591.
Error 1871: Element '<atir>': This element is not expected. Expected is one of ( a, b,
set, think, br, get, random, li, srai, star ). on line 12,063.
Error 1871: Element '<peron>': This element is not expected. Expected is one of ( a, b,
set, think, br, get, random, li, srai, star ). on line 12,288.
Error 1871: Element '<peron>': This element is not expected. Expected is one of ( a, b,
set, think, br, get, random, li, srai, star ). on line 14,730.


A total of 2 errors have been found in the file money.aiml.


Error 1866: Element '<bot>', attribute 'Name': The attribute 'Name' is not allowed. on line 61.
Error 1868: Element '<bot>': The attribute 'name' is required but missing. on line 61.


File psychology.aiml is NOT valid!
Fatal Error 9:
Input is not proper UTF-8, indicate encoding ! Bytes: 0x85 0x2C 0x62 0x75 on
line 31.


File reduction4.safe.aiml is NOT valid!
Fatal Error
9
: Input is not proper UTF-8, indicate encoding ! Bytes: 0xB4 0x53 0x20
0x2A on line 399.


A total of 2 errors have been found in the file sex.aiml.


Error 1839: Element '<a>', attribute 'target': [facet 'pattern'] The value '_new' is not
accepted by the pattern '_(blank|self|parent|top)|[A-Za-z]\c*'. on line 401.
Error 1824: Element '<a>', attribute 'target': '_new' is not a valid value of the atomic
type 'FrameTarget'. on line 401.


File update1.aiml is NOT valid!
Fatal Error 9:
Input is not proper UTF-8, indicate encoding ! Bytes: 0xEA 0x74 0x72 0x65 on
line 860.



Upload complete. 65 files were processed, and 12 files encountered errors.
\ No newline at end of file diff --git a/README b/README deleted file mode 100644 index e8cccb5..0000000 --- a/README +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************** -* http://www.program-o.com -* PROGRAM O -* Version: 2.0.1 -* README -********************************************************/ - -Introduction ---------------------------------------------------------- -Program O is an AIML interpretor written in PHP -The bot engine sits in the /chatbot/ directory -The admin area can be found in the /admin/ directory -Functions used by the bot and the admin area are in the /library/ directory -Any optional addons are found in the /chatbot/addons/ directory - -Configuration ---------------------------------------------------------- -v2.0.1 has support for multiple bots -Configuration of the individual bots is done from inside the admin area. -Bot specific variables are stored in the database. -Configuration of Program O itself is done in /config/global_config.php - -Using the bot ---------------------------------------------------------- -After installation you can chat to Program O in one of 3 ways --HTML form (example in /gui/plain/index.php or /gui/pretty/index.php or /gui/jquery/index.php) --HTML form using CURL (return response in XML or JSON) (example in /gui/htmltoxml/index.php) --send XML using CURL (return response in XML or JSON) (example in /gui/xml/index.php) - -Upgrade ---------------------------------------------------------- -If you are upgrading from v1 you will need to make the following changes to the db -Back up your old files then overwrite with the new ones - -Clean install ---------------------------------------------------------- -v2.0.1 has an automatic installer for clean installation. -Simply point your web browser to your freshly uploaded -Program O directory to run the install script. Then -follow the instructions on the page. The installer is -designed to only run once. -Please note that the installer script will NOT install your -bot's AIML files. Once you complete the installation -process, simply go to your new Program O admin page -(e.g. http://www.example.com/ProgramO/admin) and log -in using the admin credentials you provided during the -install process. Then select "Upload AIML" from the -navigation link on the left and upload your AIML files. -Then sit back and enjoy your new bot! \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..87cbfb2 --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +# [Program O](http://www.program-o.com) + +Readme info: +- Version: 2.6.11 +- Authors: Elizabeth Perreau and Dave Morton +- Date: June 19th 2014 + +**NEWS:** Version 2.6.9 is out. Please see the [CHANGELOG](CHANGELOG.md) for details. + +## Introduction + +Program O is an AIML interpreter written in PHP, and uses a MySQL database to store +chatbot information, including the AIML files used to formulate the chatbot's responses. + +## System Requirements + +Program O requires PHP version 5.4.0 or higher to function. It also requires the following +PHP extensions: + +- PDO (as well as at least one PDO driver - the MySQL driver is recommended for most users) +- cURL +- mbString +- Zip + +## Configuration + +Program O supports the creation of multiple chatbots. The individual bots are configured +from the admin area. Bot specific settings and variables are stored in the database. +Configuration of Program O itself is stored in `/config/global_config.php`. + +## Using the bot + +After installation you can chat with your Program O chatbot using several methods: + +- Through a static HTML page (example in [`/gui/plain/index.php`](gui/plain/index.php)) +- Through an AJAX enabled web page (example in [`/gui/jquery/index.php`](gui/jquery/index.php)) +- Through the Program O API (example in [`/gui/xml/index.php`](gui/xml/index.php)) + +For advanced botmasters and programmers, it is possible to use the Program O +API to access a chatbot from stand-alone applications through HTTP requests. +for information on how to create and/or use such a stand-alone application, please +visit [the Program O website](http://www.program-o.com). + +## Foreign Language Support + +v2.2 and higher now supports Unicode characters, allowing chatbots to be created that use +non-English languages, such as Arabic, Chinese, French, Greek, Russian, Turkish, Thai, +and many others. + +## Upgrade + +Upgrading from version 1 to version 2 is no longer supported. If you want to "upgrade" +your chatbot from version 1 to version 2, you will need to save your AIML files from the +current chatbot, perform a "clean install" of Program O, and then upload the AIML files +to the new installation. With the release of Program O version 2.2, the differences +in structure and functionality between version 1 and version 2 became too great to +continue supporting the transition. + +## Clean install + +Starting with version 2.0.1 and later, there is an automatic installer provided for clean +installation. Simply point your web browser to your freshly uploaded Program O directory +to run the install script. Then follow the instructions on the page. The installer is +designed to only run once. + +Please note that the installer script will NOT create your database for you, nor will +it install your bot's AIML files. The database, along with the username/password used to +access it, needs to be created in advance. See the file [fresh_install_README.txt](fresh_install_README.txt) for more +information. + +After you create the database, and once you complete the installation process, simply go to +your new Program O admin page (e.g. http://www.example.com/ProgramO/admin) and log in using +the admin credentials you provided during the install process. Then select "Upload AIML" +from the navigation link on the left and upload your AIML files. Then sit back and enjoy your +new bot! + +## Program O has a WordPress Plugin! + +If you have a WordPress driven website, and wish to incorporate your Program O chatbot into your +website with a minimum of fuss and hassle, then maybe the Elizaibots plugin is what you need! +Add an Elizaibots chatbot to your WordPress site using the short code to embed the bot and conversation +on your blog. Keep your readers amused! Check out http://WordPress.org/plugins/elizaibot-chatbots/ +for more details. diff --git a/TODO b/TODO new file mode 100644 index 0000000..ae8055a --- /dev/null +++ b/TODO @@ -0,0 +1,28 @@ +/*************************************** +* http://www.program-o.com +* PROGRAM O +* Version: 2.6.11 +* FILE: TODO +* AUTHOR: Elizabeth Perreau and Dave Morton +* DATE: 02-18-2013 +* DETAILS: List of things to accomplish for the next revision +* Please note that this list is NOT prioritized +***************************************/ + + +1.) Add functionality for botmasters to see what inputs triggered the default + response category, so that they may be able to more easily determine what + AIML categories need to be added. + +2.) Add a page to the admin script that helps botmasters create new AIML categories + based on the functionality mentioned in item 1, above. + +3.) Add a page to the admin script that allows botmasters to edit the config file + directly. + +4.) Add config options for enable/disable of BBCode, spell check and word censor addons + +5.) Create configurable functionality to delete users and conversation entries that are + older than a given amount of time (defalts to 30 days) + +6.) Add ability to delete selected files from both log and debug file viewers \ No newline at end of file diff --git a/admin/.htaccess b/admin/.htaccess deleted file mode 100644 index 10eda69..0000000 --- a/admin/.htaccess +++ /dev/null @@ -1,25 +0,0 @@ -ErrorDocument 400 /Program_O/test/myError.php -ErrorDocument 401 /Program_O/test/myError.php -ErrorDocument 402 /Program_O/test/myError.php -ErrorDocument 403 /Program_O/test/myError.php -ErrorDocument 404 /Program_O/test/myError.php -ErrorDocument 405 /Program_O/test/myError.php -ErrorDocument 406 /Program_O/test/myError.php -ErrorDocument 407 /Program_O/test/myError.php -ErrorDocument 408 /Program_O/test/myError.php -ErrorDocument 409 /Program_O/test/myError.php -ErrorDocument 410 /Program_O/test/myError.php -ErrorDocument 411 /Program_O/test/myError.php -ErrorDocument 412 /Program_O/test/myError.php -ErrorDocument 413 /Program_O/test/myError.php -ErrorDocument 414 /Program_O/test/myError.php -ErrorDocument 415 /Program_O/test/myError.php -ErrorDocument 416 /Program_O/test/myError.php -ErrorDocument 417 /Program_O/test/myError.php -ErrorDocument 500 /Program_O/test/myError.php -ErrorDocument 501 /Program_O/test/myError.php -ErrorDocument 502 /Program_O/test/myError.php -ErrorDocument 503 /Program_O/test/myError.php -ErrorDocument 504 /Program_O/test/myError.php -ErrorDocument 505 /Program_O/test/myError.php - diff --git a/admin/AIML_Header.dat b/admin/AIML_Header.dat index 66811a2..b25eb83 100644 --- a/admin/AIML_Header.dat +++ b/admin/AIML_Header.dat @@ -1,34 +1,30 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/admin/SQL_Header.dat b/admin/SQL_Header.dat index 801b6f0..491f747 100644 --- a/admin/SQL_Header.dat +++ b/admin/SQL_Header.dat @@ -1,19 +1,19 @@ --- Program O SQL Dump --- --- Host: [host] --- Generation Time: [curDate] --- PHP Version: [phpVer] --- --- Database: `[dbn]` --- --- Data for table `aiml` --- --- File: [fileName] --- --- Created for: [botmaster_name] --- --- SQL Query: [sql] - --- -------------------------------------------------------- -insert into aiml (id,bot_id,aiml,pattern,thatpattern,template,topic,filename,php_code) values - +-- Program O SQL Dump +-- +-- Host: [host] +-- Generation Time: [curDate] +-- PHP Version: [phpVer] +-- +-- Database: `[dbn]` +-- +-- Data for table `aiml` +-- +-- File: [fileName] +-- +-- Created for: [botmaster_name] +-- +-- SQL Query: [sql] + +-- -------------------------------------------------------- +insert into aiml (bot_id,pattern,thatpattern,template,topic,filename) values + diff --git a/admin/admin.css b/admin/admin.css deleted file mode 100644 index 3b71949..0000000 --- a/admin/admin.css +++ /dev/null @@ -1,508 +0,0 @@ -body { - background-attachment: fixed; - background-color: #a5c739; - background-image: url(images/repeated_header.jpg); - background-repeat: repeat-x; - height: 100%; -/*overflow: hidden;*/ - margin: 0; - padding: 0; - width: 100%; -} - -fieldset { - border: 1px solid black; - line-height: 125%; - padding: 12px; - padding-left: 5%; - padding-right: 5%; -} - -label { - cursor: pointer; - margin-right: 20px; -} - -legend { - font-size: xx-large; - font-weight: bold; - margin-left: -5px; - margin-top: -15px; -} - -p {text-indent: 1em;} - -strong { - text-align: center; - width: 100%; -} - -table {border: 6px outset orange;/**/} - -tr, td { - background-color: #EEEEEE; - border: 3px yellow inset; - border-bottom-color: #993300; - border-left-color: #FF9900; - border-right-color: #993300; - border-top-color: #FF9900; - margin: 0; - padding: 0; -} - -.bold {font-weight: bold;} - -.border {border: 1px solid black;} - -.error { - clear: left; - color: red; - text-decoration: underline; -} - -.floatRight {float: right;} - -.fullSize { - width: 99.5%;/* border: 1px solid red;*/ -} - -.halfSize {width: 50%;} - -.ll { - background-image: url(images/ll.png); - bottom: 0; - left: 0; -} - -.lr { - background-image: url(images/lr.png); - bottom: 0; - right: 0; -} - -.m10r {margin-right: 30px;} - -.m5r {margin-right: 5px;} - -.orange { - background-color: transparent; - color: orange; -} - -.pad5 {padding: 5px;} - -.red { - background-color: transparent; - color: red; - font-size: large; - font-weight: bold; -} - -.shadowBorderInset { - border-bottom: 1px solid white; - border-left: 2px solid #707070; - border-right: 1px solid white; - border-top: 2px solid #505050; -} - -.shadowBorderOutset { - border-bottom: 2px solid #505050; - border-left: 1px solid white; - border-right: 2px solid #707070; - border-top: 1px solid white; -} - -.small {font-size: x-small;} - -.spacer_left {margin-left: 20px;} - -.underline { - text-decoration: underline; -} - -div.row { - clear: both; - padding-top: 5px; -} - -div.row span.formw { - float: right; - text-align: left; - width: 49.75%; -} - -div.row span.formw input [ type = checkbox ], div.row span.formw input [ type = radio ] { - margin: 0; - width: 15px; -} - -div.row span.formw input, div.row span.formw textarea { - margin: 0; - width: 150px; -} - -div.row span.formw select { - margin: 0; - width: 155px; -} - -div.row span.formxw input [ type = checkbox ], div.row span.formxw input [ type = radio ] { - margin: 0; - margin-left: 6px; - text-align: left; - width: 15px; -} - -div.row span.formxw input, div.row span.formxw textarea { - margin: 0; - margin-left: 6px; - width: 40%; -} - -div.row span.formxw select { - margin: 0; - width: 42%; -} - -div.row span.label { - float: left; - text-align: left; - width: 49.75%; -} - -div.spacer {clear: both;} - -tr, td, .center {text-align: center;} - -#botNames {height: 20px;} - -#container{ - margin: 0 auto; - padding: 1em; - text-align: left; -} - -#container1, #container2 { - margin: 0; - margin-left: auto; - margin-right: auto; - padding: 0px; - position: relative; - width: 95%; -} - -#container2 { - background-color: #FFFF99; - border: 4px inset #a5c739; - overflow: auto; -} - -#footer { - background-color: #AFEEEE; - bottom: 15px; - color: #000; - height: 60px; - left: 5%; - margin-left: auto; - margin-right: auto; - padding: 0px; - position: absolute; - right: 5%; - width: 90%; -} - -#footer a { - color: #467AA7; - font-size: 1em; - font-weight: normal; - text-align: center; - text-decoration: none; -} - -#footer p { - color: #333; - font-family: arial; - font-size: 0.7em; - font-weight: normal; - line-height: 1.4em; - padding: 2px; - text-align: center; -} - -#formSubmit { - border: none; - float: right; - margin-right: 4%; - margin-top: 4px; - text-align: right; - width: 95%; -} - -#form_table { - margin-left: auto; - margin-right: auto; - margin-top: 20px; - padding: 12px; - width: 250px; -} - -#gcData, #lsData, #rsData { - background-color: #FFFF99; - left: 0; - margin: 0; - margin-bottom: 6px; - padding: 0; - padding-bottom: 6px; - position: relative; - top: 0; - width: 100%; -} - -#leftPanel {left: 5px;} - -#leftPanel, #midPanel, #rightPanel { - background-color: #FFFF99; - border: 4px inset #a5c739; - overflow: auto; - padding: 3px; - position: absolute; - text-align: left; - top: 5px; - width: 31%; -} - -#ll { - background-image: url(images/ll.png); - bottom: 3px; - left: 0; -} - -#logo { - background-image: url(images/bg_header.gif); - background-position: center 0; - background-repeat: no-repeat; - height: 217px; - left: 0; - position: absolute; - top: 0; - width: 100%; - z-index: 1; -} - -#lr { - background-image: url(images/lr.png); - bottom: 3px; - right: 0; -} - -#main {height: 450px;} - -#main { - background-color: white; - bottom: 200px; - left: 240px; - max-height: 400px; - min-height: 200px; - position: absolute; - right: 5%; - top: 60px;/**/ -} - -#midPanel {right: 34%;} - -#nav { - left: 0; - list-style: none; - position: absolute; - top: 44px; -} - -#nav .ll { - background-image: url(images/ll.png); - bottom: 16px; - left: 40px; -} - -#nav .lr { - background-image: url(images/lr.png); - bottom: 16px; - right: 0; -} - -#nav .selected { - background-color: #f7f7f2; - color: #37210c; -} - -#nav .ul { - background-image: url(images/ul.png); - left: 40px; - top: 16px; -} - -#nav .ur { - background-image: url(images/ur.png); - right: 0; - top: 16px; -} - -#nav li { - border-bottom: 1px solid #eaeada; - text-align: left; -} - -#nav ul {list-style: none;} - -#nav ul li a { - background-color: #AFEEEE; - background-image: url(./pages/Img/bullet.gif); - background-position: left center; - background-repeat: no-repeat; - color: #666666; - display: block; - font-size: 0.8em; - font-weight: normal; - line-height: 1.7em; - margin: 0px; - padding-bottom: 6px; - padding-left: 22px; - padding-top: 6px; - text-decoration: none; - width: 165px; -} - -#navhorisontell { - background-color: transparent; - height: 50px; - margin-left: auto; - margin-right: auto; - width: 435px; -/*width: 90%;*/ -} - -#navhorisontell ul { - list-style: none; - margin: 0; -} - -#navhorisontell ul li a { - background-color: #008000; - border-right: 1px solid #fff; - color: #ecf9ff; - display: block; - font-size: 0.8em; - font-weight: normal; - line-height: 2.5em; - margin-right: 0px; - padding: 8px 14px 8px 14px; - text-decoration: none; -} - -#nocol { - font-size: 0.9em; - overflow: auto; - padding: 5px; - text-align: left; -} -/*#nocol .ul, #nocol .ll, #nocol .ur, #nocol .lr { width: 6px; height: 6px; position: absolute; background-color: transparent; z-index: 1;} - #nocol .ul { top: 60px; left: 240px; background-image: url(images/ul.png); } - #nocol .ll { bottom: 90px; left: 240px; background-image: url(images/ll.png); } - #nocol .ur { top: 60px; right: 5%; background-image: url(images/ur.png); } - #nocol .lr { bottom: 90px; right: 5%; background-image: url(images/lr.png); }*/ - -#notes { - bottom: 0; - left: 0; - position: absolute; -} - -#rightPanel {right: 5px;} - -#title { - background-color: transparent; - font-size: x-large; - font-weight: bold; - height: 30px; - left: 2.8%; - margin: 0; - padding: 0px; - position: absolute; - right: 33%; - text-align: center; - top: 206px; - width: 94%; - z-index: 2; -} - -#titlespan { - background-image: url(images/bg_list2.gif); - color: white; - width: 100%; - z-index: 5; -} - -#ul, #ll, #ur, #lr { - background-color: transparent; - height: 6px; - position: absolute; - width: 6px; - z-index: 4; -} - -#ul, .ul { - background-image: url(images/ul.png); - left: 0; - top: 0; -} - -#ur, .ur { - background-image: url(images/ur.png); - right: 0; - top: 0; -} - -#wrapper { - bottom: 0px; - left: 0px; - margin-top: 242px; - overflow: auto; - padding: 0; - padding-top: 0; - position: absolute; - right: 0px; - top: 0px; -} - -.floatLeft, #navhorisontell li { - float: left; -} - -.ul, .ll, .ur, .lr, #nav .ul, #nav .ll, #nav .ur, #nav .lr { - background-color: transparent; - height: 6px; - position: absolute; - width: 6px; - z-index: 1; -} - -#footer a:hover { - color: #467AA7; - font-weight: normal; - text-align: center; - text-decoration: underline; -} - -#nav li a:hover { - border-bottom: 1px solid yellow; - color: #000; -} - -#navhorisontell li a:hover, #navhorisontell ul li .selected { - background-color: #9ACD32; - color: #ecf9ff; -} - -#navhorisontell ul li .selected:hover { - background-color: #008000; - color: #ecf9ff; -} \ No newline at end of file diff --git a/admin/aiml.xsd b/admin/aiml.xsd new file mode 100644 index 0000000..b073ee6 --- /dev/null +++ b/admin/aiml.xsd @@ -0,0 +1,969 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scope is simpler than headers attribute for common tables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + render in this frame + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATTLIST date format CDATA #REQUIRED + + + + + + + + + + + + + diff --git a/admin/allowedPages.php b/admin/allowedPages.php new file mode 100644 index 0000000..188ea99 --- /dev/null +++ b/admin/allowedPages.php @@ -0,0 +1,238 @@ + array( + 'age' => FILTER_SANITIZE_STRING, + 'baseballteam' => FILTER_SANITIZE_STRING, + 'birthday' => FILTER_SANITIZE_STRING, + 'birthplace' => FILTER_SANITIZE_STRING, + 'botmaster' => FILTER_SANITIZE_STRING, + 'boyfriend' => FILTER_SANITIZE_STRING, + 'build' => FILTER_SANITIZE_STRING, + 'celebrities' => FILTER_SANITIZE_STRING, + 'celebrity' => FILTER_SANITIZE_STRING, + 'class' => FILTER_SANITIZE_STRING, + 'email' => FILTER_SANITIZE_STRING, + 'emotions' => FILTER_SANITIZE_STRING, + 'ethics' => FILTER_SANITIZE_STRING, + 'etype' => FILTER_SANITIZE_STRING, + 'family' => FILTER_SANITIZE_STRING, + 'favoriteactor' => FILTER_SANITIZE_STRING, + 'favoriteactress' => FILTER_SANITIZE_STRING, + 'favoriteartist' => FILTER_SANITIZE_STRING, + 'favoriteauthor' => FILTER_SANITIZE_STRING, + 'favoriteband' => FILTER_SANITIZE_STRING, + 'favoritebook' => FILTER_SANITIZE_STRING, + 'favoritecolor' => FILTER_SANITIZE_STRING, + 'favoritefood' => FILTER_SANITIZE_STRING, + 'favoritemovie' => FILTER_SANITIZE_STRING, + 'favoritemusician' => FILTER_SANITIZE_STRING, + 'favoritesong' => FILTER_SANITIZE_STRING, + 'favoritesport' => FILTER_SANITIZE_STRING, + 'feelings' => FILTER_SANITIZE_STRING, + 'footballteam' => FILTER_SANITIZE_STRING, + 'forfun' => FILTER_SANITIZE_STRING, + 'friend' => FILTER_SANITIZE_STRING, + 'friends' => FILTER_SANITIZE_STRING, + 'gender' => FILTER_SANITIZE_STRING, + 'genus' => FILTER_SANITIZE_STRING, + 'girlfriend' => FILTER_SANITIZE_STRING, + 'hockeyteam' => FILTER_SANITIZE_STRING, + 'kindmusic' => FILTER_SANITIZE_STRING, + 'kingdom' => FILTER_SANITIZE_STRING, + 'language' => FILTER_SANITIZE_STRING, + 'location' => FILTER_SANITIZE_STRING, + 'looklike' => FILTER_SANITIZE_STRING, + 'loves' => FILTER_SANITIZE_STRING, + 'master' => FILTER_SANITIZE_STRING, + 'name' => FILTER_SANITIZE_STRING, + 'nationality' => FILTER_SANITIZE_STRING, + 'order' => FILTER_SANITIZE_STRING, + 'orientation' => FILTER_SANITIZE_STRING, + 'party' => FILTER_SANITIZE_STRING, + 'phylum' => FILTER_SANITIZE_STRING, + 'president' => FILTER_SANITIZE_STRING, + 'question' => FILTER_SANITIZE_STRING, + 'religion' => FILTER_SANITIZE_STRING, + 'sign' => FILTER_SANITIZE_STRING, + 'size' => FILTER_SANITIZE_STRING, + 'species' => FILTER_SANITIZE_STRING, + 'talkabout' => FILTER_SANITIZE_STRING, + 'version' => FILTER_SANITIZE_STRING, + 'vocabulary' => FILTER_SANITIZE_STRING, + 'wear' => FILTER_SANITIZE_STRING, + 'website' => FILTER_SANITIZE_STRING, + 'newEntryName' => array( + 'filter' => FILTER_SANITIZE_STRING, + 'flags' => FILTER_REQUIRE_ARRAY, + ), + 'newEntryValue' => array( + 'filter' => FILTER_SANITIZE_STRING, + 'flags' => FILTER_REQUIRE_ARRAY, + ), + 'bot_id' => FILTER_SANITIZE_NUMBER_INT, + 'func' => FILTER_SANITIZE_STRING, + 'action' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + ), + 'clear' => array( + 'action' => FILTER_SANITIZE_STRING, + 'clearFile' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + ), + 'demochat' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'download' => array( + 'type' => FILTER_SANITIZE_STRING, + 'filenames' => FILTER_DEFAULT, + 'page' => FILTER_SANITIZE_STRING, + ), + 'editAiml' => array( + 'page' => FILTER_SANITIZE_STRING, + 'draw' => FILTER_SANITIZE_STRING, + 'columns' => FILTER_DEFAULT, + 'order' => FILTER_SANITIZE_STRING, + 'start' => FILTER_SANITIZE_STRING, + 'length' => FILTER_SANITIZE_STRING, + 'search' => FILTER_SANITIZE_STRING, + '_' => FILTER_SANITIZE_STRING, + ), + 'editAJAX' => array( + '_' => FILTER_SANITIZE_STRING, + 'action' => FILTER_SANITIZE_STRING, + 'columns' => FILTER_SANITIZE_STRING, + 'draw' => FILTER_SANITIZE_STRING, + 'filename' => FILTER_SANITIZE_STRING, + 'id' => FILTER_SANITIZE_NUMBER_INT, + 'length' => FILTER_SANITIZE_STRING, + 'order' => FILTER_SANITIZE_STRING, + 'pattern' => FILTER_UNSAFE_RAW, + 'search' => FILTER_SANITIZE_STRING, + 'start' => FILTER_SANITIZE_STRING, + 'template' => FILTER_UNSAFE_RAW, + 'thatpattern' => FILTER_UNSAFE_RAW, + 'topic' => FILTER_UNSAFE_RAW, + ), + 'editUDAiml' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'logs' => array( + 'showing' => FILTER_SANITIZE_STRING, + 'id' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + ), + 'main' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'members' => array( + 'memberSelect' => FILTER_SANITIZE_STRING, + 'user_name' => FILTER_SANITIZE_STRING, + 'password' => FILTER_SANITIZE_STRING, + 'passwordConfirm' => FILTER_SANITIZE_STRING, + 'id' => FILTER_SANITIZE_NUMBER_INT, + 'action' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + ), + 'select_bots' => array( + 'bot_name' => FILTER_SANITIZE_STRING, + 'bot_active' => FILTER_SANITIZE_STRING, + 'format' => FILTER_SANITIZE_STRING, + 'unknown_user' => FILTER_SANITIZE_STRING, + 'debugemail' => FILTER_SANITIZE_STRING, + 'default_aiml_pattern' => FILTER_SANITIZE_STRING, + 'error_response' => FILTER_SANITIZE_STRING, + 'bot_desc' => FILTER_SANITIZE_STRING, + 'bot_parent_id' => FILTER_SANITIZE_STRING, + 'save_state' => FILTER_SANITIZE_STRING, + 'remember_up_to' => FILTER_SANITIZE_STRING, + 'conversation_lines' => FILTER_SANITIZE_STRING, + 'debugmode' => FILTER_SANITIZE_STRING, + 'debugshow' => FILTER_SANITIZE_STRING, + 'bot_id' => FILTER_SANITIZE_NUMBER_INT, + 'action' => FILTER_SANITIZE_STRING, + 'useBranch' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + ), + 'spellcheck' => array( + 'missspell' => FILTER_SANITIZE_STRING, + 'correction' => FILTER_SANITIZE_STRING, + 'group' => FILTER_SANITIZE_STRING, + 'action' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + 'search' => FILTER_SANITIZE_STRING, + 'missspelling' => FILTER_SANITIZE_STRING, + 'id' => FILTER_SANITIZE_NUMBER_INT, + ), + 'srai_lookup' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'teach' => array( + 'topic' => FILTER_SANITIZE_STRING, + 'thatpattern' => FILTER_SANITIZE_STRING, + 'pattern' => FILTER_SANITIZE_STRING, + 'template' => FILTER_SANITIZE_STRING, + 'action' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + ), + 'upload' => array( + 'clearDB' => FILTER_SANITIZE_STRING, + 'bot_id' => FILTER_SANITIZE_STRING, + 'action' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + ), + 'unknown_inputs' => array( + 'id' => FILTER_SANITIZE_NUMBER_INT, + 'page' => FILTER_SANITIZE_STRING, + ), + 'wordcensor' => array( + 'word_to_censor' => FILTER_SANITIZE_STRING, + 'replace_with' => FILTER_SANITIZE_STRING, + 'censor_id' => FILTER_SANITIZE_STRING, + 'group' => FILTER_SANITIZE_STRING, + 'action' => FILTER_SANITIZE_STRING, + 'page' => FILTER_SANITIZE_STRING, + 'search' => FILTER_SANITIZE_STRING, + ), + 'login' => array( + 'page' => FILTER_SANITIZE_STRING, + 'user_name' => FILTER_SANITIZE_STRING, + 'pw' => FILTER_SANITIZE_STRING, + ), + 'logout' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'stats' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'bugs' => array( + 'page' => FILTER_SANITIZE_STRING, + 'name' => FILTER_SANITIZE_STRING, + 'email' => FILTER_SANITIZE_STRING, + 'subject' => FILTER_SANITIZE_STRING, + 'message' => FILTER_SANITIZE_STRING, + 'captcha' => FILTER_SANITIZE_STRING, + ), + 'support' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'search' => array( + 'page' => FILTER_SANITIZE_STRING, + ), + 'person' => array( + 'page' => FILTER_SANITIZE_STRING, + 'action' => FILTER_SANITIZE_STRING, + 'srch' => FILTER_SANITIZE_STRING, + 'repl' => FILTER_SANITIZE_STRING, + ), +); diff --git a/admin/botpersonality.php b/admin/botpersonality.php new file mode 100644 index 0000000..3f73fa0 --- /dev/null +++ b/admin/botpersonality.php @@ -0,0 +1,424 @@ +getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); + +$navHeader = $template->getSection('NavHeader'); + +$FooterInfo = getFooter(); +$errMsgClass = (!empty ($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); +$headerTitle = 'Actions:'; +$pageTitle = 'My-Program O - Bot Personality'; +$mainContent = "main content"; + +switch ($func) +{ + case 'updateBot' : + case 'addBotPersonality' : + $msg = $func(); + $mainContent = getBot(); + break; + default : + $mainContent = $func(); +} + +$mainTitle = 'Bot Personality Settings for ' . $bot_name; + +/** + * Function getBot + * + * @return string + */ +function getBot() +{ + $formCell = + ' + + +'; + $blankCell = + ' +   + + +'; + + $startDiv = ' ' . "\n "; + $endDiv = "\n \n
\n"; + $inputs = ""; + $row_class = 'row fm-opt'; + + $bot_name = $_SESSION['poadmin']['bot_name']; + $bot_id = (isset ($_SESSION['poadmin']['bot_id'])) ? $_SESSION['poadmin']['bot_id'] : 0; + $bot_id = ($bot_id == 'new') ? 0 : $bot_id; + + //get the current bot's personality table from the db + /** @noinspection SqlDialectInspection */ + $sql = "SELECT * FROM `botpersonality` WHERE `bot_id` = :bot_id"; + $params = array(':bot_id' => $bot_id); + + $rows = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + $rowCount = count($rows); + + if ($rowCount > 0) + { + $left = true; + $colCount = 0; + + foreach ($rows as $row) + { + $rid = $row['id']; + $label = $row['name']; + $value = stripslashes_deep($row['value']); + $tmpRow = str_replace('[row_class]', $row_class, $formCell); + $tmpRow = str_replace('[row_id]', $rid, $tmpRow); + $tmpRow = str_replace('[row_label]', $label, $tmpRow); + $tmpRow = str_replace('[row_value]', $value, $tmpRow); + $inputs .= $tmpRow; + $colCount++; + + if ($colCount >= 3) + { + $inputs .= ' + ' . PHP_EOL; + $colCount = 0; + } + } + + $inputs .= "\n"; + + if (($colCount > 0) && ($colCount < 3)) + { + for ($n = 0; $n < (3 - $colCount); $n++) + { + $addCell = str_replace('[cid]', "[$n]", $blankCell); + $inputs .= $addCell; + } + } + $action = 'Update Data'; + $func = 'updateBot'; + } + else + { + $inputs = newForm(); + $action = 'Add New Data'; + $func = 'addBotPersonality'; + } + + if (empty ($func)) { + $func = 'getBot'; + } + + $form = << + + +$inputs + + + + +
+ + + +
+ + +endForm2; + + return $form; +} + +/** + * Function stripslashes_deep + * + * @param $value + * @return string + */ +function stripslashes_deep($value) +{ + $newValue = stripslashes($value); + + while ($newValue != $value) + { + $value = $newValue; + $newValue = stripslashes($value); + } + + return $newValue; +} + +/** + * Function updateBot + * + * @return string + */ +function updateBot() +{ + global $bot_id, $bot_name, $post_vars; + + $msg = ""; + + if (!empty ($post_vars['newEntryName'])) + { + $newEntryNames = $post_vars['newEntryName']; + $newEntryValues = $post_vars['newEntryValue']; + + /** @noinspection SqlDialectInspection */ + $sql = "INSERT INTO `botpersonality` (`id`, `bot_id`, `name`, `value`) VALUES (null, $bot_id, :name, :value);"; + $params = array(); + + foreach ($newEntryNames as $index => $key) + { + $value = $newEntryValues[$index]; + + if (empty ($value)) { + continue; + } + + $params[] = array(':name' => $key, ':value' => $value); + } + + $rowsAffected = db_write($sql, $params, true, __FILE__, __FUNCTION__, __LINE__); + + if ($rowsAffected > 0) + { + $msg = (empty ($msg)) ? "Bot personality added. \n" : $msg; + } + else { + $msg = 'Error updating bot personality.'; + } + } + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT * FROM `botpersonality` WHERE `bot_id` = :bot_id;"; + $params = array(':bot_id' => $bot_id); + $result = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + $rows = array(); + $insertParams = array(); + $updateParams = array(); + + foreach ($result as $row) + { + $name = $row['name']; + $value = $row['value']; + $rows[$name] = array('id' => $row['id'], 'value' => $value); + } + + /** @noinspection SqlDialectInspection */ + $insertSQL = "INSERT INTO `botpersonality` (`id`, `bot_id`, `name`, `value`) VALUES (null, $bot_id, :name, :value);"; + /** @noinspection SqlDialectInspection */ + $updateSQL = "UPDATE `botpersonality` SET `value` = :value WHERE `id` = :id;"; + + $exclude = array('bot_id', 'func', 'action', 'newEntryName', 'newEntryValue'); + $values = ''; + + foreach ($post_vars as $key => $value) + { + if (in_array($key, $exclude)) { + continue; + } + + if (!isset($rows[$key])) + { + $insertParams[] = array(':name' => $key, ':value' => $value); + } + else + { + $oldValue = $rows[$key]['value']; + + if ($value != $oldValue) + { + $curId = $rows[$key]['id']; + $updateParams[] = array(':value' => $value, ':id' => $curId); + } + } + } + + if (empty($insertParams) && empty($updateParams)) { + return 'No changes found.'; + } + + $affectedRows = (!empty($updateParams)) ? db_write($updateSQL, $updateParams, true, __FILE__, __FUNCTION__, __LINE__) : 0; + $affectedRows += (!empty($updateParams)) ? db_write($insertSQL, $insertParams, true, __FILE__, __FUNCTION__, __LINE__) : 0; + + if ($affectedRows > 0) { + $msg = 'Bot Personality Updated.'; + } + else { + $msg = "Something went wrong! Affected rows = $affectedRows."; + } + + return $msg; +} + +/** + * Function addBotPersonality + * + * @return string + */ +function addBotPersonality() +{ + global $post_vars; + $bot_id = $post_vars['bot_id']; + + /** @noinspection SqlDialectInspection */ + $sql = "INSERT INTO `botpersonality` (`id`, `bot_id`, `name`, `value`) VALUES (null, $bot_id, :name, :value);"; + $msg = ""; + $params = array(); + + $newEntryNames = (isset ($post_vars['newEntryName'])) ? $post_vars['newEntryName'] : ''; + $newEntryValues = (isset ($post_vars['newEntryValue'])) ? $post_vars['newEntryValue'] : ''; + + if (!empty ($newEntryNames)) + { + if (is_string($newEntryNames)) + { + $newEntryNames = array(0 => $newEntryNames); + } + + foreach ($newEntryNames as $index => $key) + { + $value = trim($newEntryValues[$index]); + + if (!empty ($value)) + { + $params[] = array(':name' => $key, ':value' => $value); + } + } + } + + $skipKeys = array('bot_id', 'action', 'func', 'newEntryName', 'newEntryValue'); + $sqlParams = array(); + + foreach ($post_vars as $key => $value) + { + if (in_array($key, $skipKeys)) { + continue; + } + + if (is_array($value)) + { + foreach ($value as $index => $fieldValue) + { + $field = $key[$fieldValue]; + $fieldValue = trim($fieldValue); + $params[] = array(':name' => $field, ':value' => $fieldValue); + } + continue; + } + else + { + $value = trim($value); + $params[] = array(':name' => $key, ':value' => $value); + } + } + + $rowsAffected = db_write($sql, $params, true, __FILE__, __FUNCTION__, __LINE__); + + if ($rowsAffected > 0) { + $msg = (empty ($msg)) ? "Bot personality added. \n" : $msg; + } + else { + $msg = 'Error updating bot personality.'; + } + + return $msg; +} + +/** + * Function newForm + * + * @return string + */ +function newForm() +{ + $out = ' + +'; + $rowTemplate = + ' +'; + $tr = ' + +'; + $blankTD = ' +'; + $lastBit = + ' + + + + + +
 
   
+'; + + $fields = file(_CONF_PATH_ . 'default_botpersonality_fields.dat'); + $count = 0; + + foreach ($fields as $field) + { + $count++; + $field = trim($field); + $tmpRow = str_replace('[field]', $field, $rowTemplate); + $tmpRow = str_replace('[uc_field]', ucfirst($field), $tmpRow); + $out .= $tmpRow; + + if ($count % 3 == 0) + { + $out .= $tr; + } + } + + switch ($count % 3) + { + case 1 : + $out .= $blankTD; + break; + case 2 : + $out .= $blankTD . $blankTD; + } + + $out .= $lastBit; + + return $out; +} diff --git a/admin/bots.php b/admin/bots.php deleted file mode 100644 index f0903a9..0000000 --- a/admin/bots.php +++ /dev/null @@ -1,305 +0,0 @@ -getSection('TopNav'); - $leftNav = $template->getSection('LeftNav'); - $main = $template->getSection('Main'); - $topNavLinks = makeLinks('top', $topLinks, 12); - $navHeader = $template->getSection('NavHeader'); - $leftNavLinks = makeLinks('left', $leftLinks, 12); - $FooterInfo = getFooter(); - $errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgClass); - $noLeftNav = ''; - $noTopNav = ''; - $noRightNav = $template->getSection('NoRightNav'); - $headerTitle = 'Actions:'; - $pageTitle = 'My-Program O - Bot Personality'; - $mainContent = ($func != 'updateBot') ? $func() : ''; - #$mainContent = "test... func = $func"; - $mainTitle = 'Bot Personality Settings for '.$bot_name; - if ($func == 'updateBot' or $func == 'addBotPersonaity') { - $msg = updateBot(); - include('main.php'); - } -function getBot() { - #die('entered function.'); - global $dbn; - $dbconn = db_open(); - $formCell = ' -'; - $blankCell ='   -'; - $startDiv = ' ' . "\n "; - $endDiv = "\n \n
\n"; - $inputs=""; - $row_class = 'row fm-opt'; - $bot_name = $_SESSION['poadmin']['bot_name']; - $bot_id = (isset($_SESSION['poadmin']['bot_id'])) ? $_SESSION['poadmin']['bot_id'] : 0; - //get the current bot's personality table from the db - $sql = "SELECT * FROM `botpersonality` where bot = $bot_id"; - #die ("SQL = $sql
db name = $dbn\n"); - $result = mysql_query($sql,$dbconn)or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . '.'); - $rowCount = mysql_num_rows($result); - if ($rowCount > 0) { - $left = true; - $colCount = 0; - while($row = mysql_fetch_assoc($result)) { - $rid = $row['id']; - $label = $row['name']; - $value = stripslashes_deep($row['value']); - $tmpRow = str_replace('[row_class]', $row_class, $formCell); - $tmpRow = str_replace('[row_id]', $rid, $tmpRow); - $tmpRow = str_replace('[row_label]', $label, $tmpRow); - $tmpRow = str_replace('[row_value]', $value, $tmpRow); - $inputs .= $tmpRow; - $colCount++; - if ($colCount >=3) { - $inputs .= ' - '; - $colCount = 0; - } - } - $inputs .= "\n"; - if (($colCount > 0) and ($colCount < 3)) { - for ($n = 0; $n < (3 - $colCount); $n++) { - $addCell = str_replace('[cid]',"[$n]", $blankCell); - $inputs .= $addCell; - } - } - mysql_close($dbconn); - $action = 'Update Data'; - $func = 'updateBot'; - } - else { - $inputs = newForm(); - $action = 'Add New Data'; - $func = 'addBotPersonality'; - } - if (empty($func)) $func = 'getBot'; - $form = << - - -$inputs - - - - -
- - - -
- - -endForm2; - return $form; -} - -function stripslashes_deep($value) { - $newValue = stripslashes($value); - while ($newValue != $value) { - $value = $newValue; - $newValue = stripslashes($value); - } - return $newValue; -} - - -function updateBot() { - global $bot_id, $bot_name; - $botId = (isset($_POST['bot_id'])) ? $_POST['bot_id'] : $bot_id; - $dbconn = db_open(); - $msg = ""; -/* -$sql = "UPDATE categories SET display_order = CASE id "; -foreach ($display_order as $id => $ordinal) { - $sql .= sprintf("WHEN %d THEN %d ", $id, $ordinal); -} -$sql .= "END WHERE id IN ($ids)"; -echo $sql; -*/ - $updateSQL = "UPDATE `botpersonality` SET `value` = CASE `name` \n"; - $sql = "select `id`, `name`, `value` from `botpersonality` where `bot` = $botId;"; - $changes = array(); - $additions = array(); - $result = mysql_query($sql, $dbconn) or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . ".
SQL:
\n$sql\n
\n
\n"); - while ($row = mysql_fetch_assoc($result)) { - $id = $row['id']; - $name = $row['name']; - $value = $row['value']; - $postVal = (isset($_POST[$name])) ? $_POST[$name] : ''; - if (!empty($postVal)) { - if ($postVal != $value){ - $changes[$id] = mysql_escape_string(stripslashes_deep($postVal)); - $additions[$id] = $name; - } - } - } - $changesText = implode(',', array_keys($changes)); - foreach ($changes as $id => $value) { - $name = $additions[$id]; - $updateSQL .= sprintf("WHEN '%s' THEN '%s' \n", $name, $value); - } - $updateSQL .= "END WHERE `id` IN ($changesText);"; - #die ("
\nupdate SQL = \n$updateSQL\n

\n"); - $saveSQL = str_replace("\n", "\r\n", $updateSQL); - $x = file_put_contents('sql.txt', "$saveSQL\r\n\r\n", FILE_APPEND); - $result = mysql_query($updateSQL, $dbconn) ;#or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . ".
SQL:
\n$updateSQL\n
\n
\n"); - #die("result = $result
\n error = |" . mysql_error($link) . "|\nSQL = $updateSQL
\n"); - if (!$result) $msg = 'Error updating bot.'; - $msg = (empty($msg)) ? 'Bot personality updated.' : $msg; - mysql_close($dbconn); - return $msg; -} -function addBotPersonality() { - $dbconn = db_open(); - $bot_id = $_POST['bot_id']; - $sql = "Insert into `botpersonality` (`id`, `bot`, `name`, `value`) values\n"; - $sql2 = "(null, $bot_id, '[key]', '[value]'),\n"; - $msg = ""; - $skipKeys = array('bot_id', 'action', 'func'); - foreach($_POST as $key => $value) { - if(!in_array($key, $skipKeys)) { - if($value=="") continue; - $value = mysql_escape_string(trim($value)); - $tmpSQL = str_replace('[key]', $key, $sql2); - $tmpSQL = str_replace('[value]', $value, $tmpSQL); - $sql .= $tmpSQL; - } - } - $sql = rtrim($sql,",\n"); - $result = mysql_query($sql,$dbconn) or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . ".
SQL:
\n$sql\n
\n
\n"); - if(!$result) { - $msg = 'Error updating bot personality.'; - } - elseif($msg == "") { - $msg = 'Bot personality added.'; - } - mysql_close($dbconn); - return $msg; -} - - function newForm() { - return << - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -endForm; - } -?> \ No newline at end of file diff --git a/admin/bugs.php b/admin/bugs.php index eb7ee4f..d9fbfc7 100644 --- a/admin/bugs.php +++ b/admin/bugs.php @@ -1,207 +1,182 @@ - - - -endScript; - foreach ($_POST as $key => $value) { - $$key = mysql_escape_string($value); - } - $func = (isset($_POST['func'])) ? $_POST['func'] : 'showBugForm'; -# Build page sections -# ordered here in the order that the page is constructed -# Only the variables that are different from the -# login page need be set here. - $topNav = $template->getSection('TopNav'); - $leftNav = $template->getSection('LeftNav'); - $main = $template->getSection('Main'); - $topNavLinks = makeLinks('top', $topLinks, 12); - $navHeader = $template->getSection('NavHeader'); - $leftNavLinks = makeLinks('left', $leftLinks, 12); - $FooterInfo = getFooter(); - $errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgClass); - $noLeftNav = ''; - $noTopNav = ''; - $noRightNav = $template->getSection('NoRightNav'); - $headerTitle = 'Actions:'; - $pageTitle = 'My-Program O - Report a Bug'; - $mainContent = $func(); - $lowerScripts .= ' '; - $mainTitle = 'Send a Bug Report'; - - - function showBugForm() { - return << - - - - - - - - - - - - - - - - - - - -
- Your Name:
- -
- Your Email Address:
- -
- Subject:
- -
- Message:
- -
-

- Use this handy form to submit a bug report to Liz and Company over at the Program O website. - Please describe the problem as completely as possible, including what actions you were trying - to perform at the time that you noticed the problem. -

-
-
- -
-

- Answer the question you see in the image on the left into the text area - below. We are looking for a one word answer (no numbers). Sry, but bots are not allowed. -

- -
- -
- -endForm; - } - function sendMail() { - global $email, $name, $subject, $message, $captcha; - #print "\n"; - if ($isPresent !== false) $out = 1; - } - $content .= "\n"; - return $out; - } - - function checkBadIP () { - global $content; - $IP = $_SERVER['REMOTE_ADDR']; - $out = 0; - $excluded = array("89.28.114", "85.140.66.54"); - foreach ($excluded as $check) { - $isPresent = strpos($IP, $check); - $content .= "\n"; - if ($isPresent !== false) $out = 1; - } - $content .= "\n"; - return $out; - } -?> \ No newline at end of file +getSection('UpperScripts'); +$post_vars = filter_input_array(INPUT_POST); + +if (count($post_vars) > 0) +{ + foreach ($post_vars as $key => $value) + { + $$key = $value; + } +} + +$func = (isset($post_vars['func'])) ? $post_vars['func'] : 'showBugForm'; +if(!in_array($func,$allowed_functions_array)){ + die('This method is not allowed'); +} + +# Build page sections +# ordered here in the order that the page is constructed +# Only the variables that are different from the +# login page need be set here. +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); + +$navHeader = $template->getSection('NavHeader'); + +$FooterInfo = getFooter(); +$errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); +$headerTitle = 'Actions:'; +$pageTitle = 'My-Program O - Report a Bug'; +$mainContent = $func(); +$lowerScripts .= ' '; +$mainTitle = 'Send a Bug Report'; + + +/** + * Function showBugForm + * + * @return string + */ +function showBugForm() +{ + global $debugemail, $template; + + $out = $template->getSection('BugForm'); + $out = str_replace('[blank]', '', $out); + $out = str_replace('[debugemail]', $debugemail, $out); + + return $out; +} + +/** + * Function sendMail + * + * + * @return string + */ +function sendMail() +{ + global $email, $name, $subject, $message, $captcha; + + #print "\n"; - $dbconn = db_open(); - $optionTemplate = " \n"; - $sql = 'SELECT DISTINCT filename FROM aiml order by filename;'; - #return "SQL = $sql"; - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - while ($row = mysql_fetch_assoc($result)) { - if (empty($row['filename'])) { - $curOption = " \n"; - } - else $curOption = str_replace('[val]', $row['filename'], $optionTemplate); - $out .= $curOption; - } - mysql_close($dbconn); - $out .= " \n"; - return $out; - } - - function renderMain() { - $selectOptions = getSelOpts(); - $content = <<permanent!
- This action CANNOT be undone!
-
- - - - - - - - - - -
- - -
- -
- -
- -
-
-endForm; - - return $content; - } -?> \ No newline at end of file +getSection('UpperScripts'); +$post_vars = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); + +if ((isset ($post_vars['action'])) && ($post_vars['action'] == "clear")) +{ + $msg = clearAIML(); +} +elseif ((isset ($post_vars['clearFile'])) && ($post_vars['clearFile'] != "null")) +{ + $msg = clearAIMLByFileName($post_vars['clearFile']); +} +else { } + +$content .= buildMain(); +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); +$navHeader = $template->getSection('NavHeader'); +$FooterInfo = getFooter(); +$errMsgClass = (!empty ($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); +$headerTitle = 'Actions:'; +$pageTitle = "My-Program O - Clear AIML Categories"; +$mainContent = $content; +$mainTitle = "Clear AIML Categories for the bot named $bot_name [helpLink]"; +$showHelp = $template->getSection('ClearShowHelp'); +$mainTitle = str_replace('[helpLink]', $template->getSection('HelpLink'), $mainTitle); +$mainContent = str_replace('[showHelp]', $showHelp, $mainContent); +$mainContent = str_replace('[upperScripts]', $upperScripts, $mainContent); +$mainContent = str_replace('[bot_name]', $bot_name, $mainContent); + +/** + * Function clearAIML + * + * + * @return string + */ +function clearAIML() +{ + global $bot_id, $bot_name; + /** @noinspection SqlDialectInspection */ + $sql = "DELETE FROM `aiml` WHERE `bot_id` = :bot_id;"; + $params = array(':bot_id' => $bot_id); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + $msg = "All AIML categories cleared for $bot_name!
"; + + return $msg; +} + +/** + * Function clearAIMLByFileName + * + * * @param $filename + * @return string + */ +function clearAIMLByFileName($filename) +{ + global $bot_id; + /** @noinspection SqlDialectInspection */ + $sql = "DELETE FROM `aiml` WHERE `filename` LIKE :filename AND `bot_id` = :bot_id;"; + $params = array( + ':bot_id' => $bot_id, + ':filename' => $filename, + ); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + $msg = "
AIML categories cleared for file $filename!
"; + + return $msg; +} + +/** + * Function buildSelOpts + * + * + * @return string + */ +function buildSelOpts() +{ + global $bot_id, $bot_name, $msg; + /** @noinspection SqlDialectInspection */ + $sql = "SELECT DISTINCT filename FROM `aiml` WHERE `bot_id` = :bot_id ORDER BY `filename`;"; + $params = array(':bot_id' => $bot_id); + $result = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + + if (count($result) == 0) + { + $msg = "The chatbot '$bot_name' has no AIML categories to clear."; + return false; + } + + $out = " \n"; + $optionTemplate = " \n"; + + foreach ($result as $row) + { + if (empty ($row['filename'])) + { + $curOption = " \n"; + } + else { + $curOption = str_replace('[val]', $row['filename'], $optionTemplate); + } + $out .= $curOption; + } + $out .= " \n"; + + return $out; +} + +/** + * Function buildMain + * + * + * @return string + */ +function buildMain() +{ + global $msg, $template; + $selectOptions = buildSelOpts(); + + if ($selectOptions === false) + { + return "
$msg

\n"; + } + + $content = $template->getSection('ClearAIML'); + $content = str_replace('[selectOptions]', $selectOptions, $content); + $content = str_replace('[blank]', '', $content); + + return $content; +} \ No newline at end of file diff --git a/admin/config_edit.php b/admin/config_edit.php new file mode 100644 index 0000000..9418fdc --- /dev/null +++ b/admin/config_edit.php @@ -0,0 +1,75 @@ +', '', $contents); +$search = '~\[(\w+?)\]~'; +$contents = preg_replace_callback($search, 'make_input', $contents); + +/** + * Function make_input + * + * @param $matches + * @return string + */ +function make_input($matches) +{ + global $all_vars; + $my_var = (in_array($matches[1], array_keys($all_vars))) ? $all_vars[$matches[1]] : ''; + $replace = ''; + + return $replace; +} + +?> + + + + Program O Global Config File Editor + + + +

Program O Config File Editor

+

+ Use this (somewhat unconventional) form to edit your chatbot's confituration + file directly. Only the settings that you should need to change are + available here. If you need to change other settings, then you'll need to + make those changes in a text editor. +

+
+
+
+
+
+        
+
+
+
+
+ + \ No newline at end of file diff --git a/admin/datatables.css b/admin/datatables.css new file mode 100644 index 0000000..aeebada --- /dev/null +++ b/admin/datatables.css @@ -0,0 +1,343 @@ +@media screen and(max-width: 767px) { + .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} + +@media screen and(max-width: 640px) { + .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} + +table.dataTable { + border-collapse: separate; + border-spacing: 0; + clear: both; + margin: 0 auto; + width: 100%; +} + +table.dataTable thead th, table.dataTable tfoot th { + font-weight: bold; +} + +table.dataTable thead th, table.dataTable thead td { + /*border-bottom:1px solid #111; + padding:10px 18px;*/ +} + +table.dataTable thead th:active, table.dataTable thead td:active { + outline: none; +} + +table.dataTable tfoot th, table.dataTable tfoot td { + /*border-top:1px solid #111; + padding:10px 18px 6px 18px;*/ +} + +table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting { + *cursor: hand; + cursor: pointer; +} + +table.dataTable thead .sorting { + background: url("images/sort_both.png") no-repeat center right; +} + +table.dataTable thead .sorting_asc { + background: url("images/sort_asc.png") no-repeat center right; +} + +table.dataTable thead .sorting_desc { + background: url("images/sort_desc.png") no-repeat center right; +} + +table.dataTable thead .sorting_asc_disabled { + background: url("../install/images/sort_asc_disabled.png") no-repeat center right; +} + +table.dataTable thead .sorting_desc_disabled { + background: url("../install/images/sort_desc_disabled.png") no-repeat center right; +} + +table.dataTable tbody tr { + background: #fff; +} + +table.dataTable tbody tr.selected { + background: #b0bed9; +} + +table.dataTable tbody th, table.dataTable tbody td { + padding: 8px 10px; +} + +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} + +table.dataTable.row-border tbody tr:first-child th, table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, table.dataTable.display tbody tr:first-child td, table.dataTable.cell-border tbody tr:first-child th, table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} + +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-right: 1px solid #ddd; + border-top: 1px solid #ddd; +} + +table.dataTable.cell-border tbody tr th:first-child, table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} + +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd, table.dataTable.order-column tbody tr > .sorting_1, table.dataTable.order-column tbody tr > .sorting_2, table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, table.dataTable.display tbody tr > .sorting_2, table.dataTable.display tbody tr > .sorting_3, table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background: #f9f9f9; +} + +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background: #abb9d3; +} + +table.dataTable.hover tbody tr:hover, table.dataTable.hover tbody tr.odd:hover, table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover, table.dataTable.display tbody tr.odd:hover, table.dataTable.display tbody tr.even:hover, table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background: #f5f5f5; +} + +table.dataTable.hover tbody tr:hover.selected, table.dataTable.hover tbody tr.odd:hover.selected, table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected, table.dataTable.display tbody tr.odd:hover.selected, table.dataTable.display tbody tr.even:hover.selected { + background: #a9b7d1; +} + +table.dataTable.order-column tbody tr.selected > .sorting_1, table.dataTable.order-column tbody tr.selected > .sorting_2, table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, table.dataTable.display tbody tr.selected > .sorting_2, table.dataTable.display tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background: #acbad4; +} + +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background: #f1f1f1; +} + +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background: #f3f3f3; +} + +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background: #a6b3cd; +} + +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background: #a7b5ce; +} + +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background: #a9b6d0; +} + +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background: #fbfbfb; +} + +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background: #fdfdfd; +} + +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background: #adbbd6; +} + +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background: #afbdd8; +} + +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.display tbody tr.odd:hover > .sorting_1, table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1, table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 { + background: #eaeaea; +} + +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.display tbody tr.odd:hover > .sorting_2, table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2, table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 { + background: #ebebeb; +} + +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.display tbody tr.odd:hover > .sorting_3, table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3, table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 { + background: #eee; +} + +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.display tbody tr.odd:hover.selected > .sorting_1, table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 { + background: #a1aec7; +} + +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.display tbody tr.odd:hover.selected > .sorting_2, table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 { + background: #a2afc8; +} + +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.display tbody tr.odd:hover.selected > .sorting_3, table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 { + background: #a4b2cb; +} + +table.dataTable.no-footer, .dataTables_wrapper.no-footer .dataTables_scrollBody { + /*border-bottom:1px solid #111;*/ +} + +table.dataTable.nowrap th, table.dataTable.nowrap td, table.dataTable th.dt-nowrap, table.dataTable td.dt-nowrap, table.dataTable thead th.dt-head-nowrap, table.dataTable thead td.dt-head-nowrap, table.dataTable tfoot th.dt-head-nowrap, table.dataTable tfoot td.dt-head-nowrap, table.dataTable tbody th.dt-body-nowrap, table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable.compact thead th, table.dataTable.compact thead td { + padding: 5px 9px; +} + +table.dataTable.compact tfoot th, table.dataTable.compact tfoot td { + padding: 5px 9px 3px 9px; +} + +table.dataTable.compact tbody th, table.dataTable.compact tbody td { + padding: 4px 5px; +} + +table.dataTable th.dt-left, table.dataTable td.dt-left, table.dataTable thead th.dt-head-left, table.dataTable thead td.dt-head-left, table.dataTable tfoot th.dt-head-left, table.dataTable tfoot td.dt-head-left, table.dataTable tbody th.dt-body-left, table.dataTable tbody td.dt-body-left { + text-align: left; +} + +table.dataTable th.dt-center, table.dataTable td.dt-center, table.dataTable td.dataTables_empty, table.dataTable thead th.dt-head-center, table.dataTable thead td.dt-head-center, table.dataTable tfoot th.dt-head-center, table.dataTable tfoot td.dt-head-center, table.dataTable tbody th.dt-body-center, table.dataTable tbody td.dt-body-center { + text-align: center; +} + +table.dataTable th.dt-right, table.dataTable td.dt-right, table.dataTable thead th.dt-head-right, table.dataTable thead td.dt-head-right, table.dataTable tfoot th.dt-head-right, table.dataTable tfoot td.dt-head-right, table.dataTable tbody th.dt-body-right, table.dataTable tbody td.dt-body-right { + text-align: right; +} + +table.dataTable th.dt-justify, table.dataTable td.dt-justify, table.dataTable thead th.dt-head-justify, table.dataTable thead td.dt-head-justify, table.dataTable tfoot th.dt-head-justify, table.dataTable tfoot td.dt-head-justify, table.dataTable tbody th.dt-body-justify, table.dataTable tbody td.dt-body-justify { + text-align: justify; +} + +table.dataTable, table.dataTable th, table.dataTable td { + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} + +.dataTables_wrapper { + *zoom: 1; + clear: both; + position: relative; + zoom: 1; +} + +.dataTables_wrapper .dataTables_length { + float: left; +} + +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} + +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} + +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} + +.dataTables_wrapper .dataTables_paginate { + float: right; + padding-top: 0; + text-align: center; + margin-right: 5px; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button { + *cursor: hand; + border: 1px solid transparent; + box-sizing: border-box; + color: #333 !important; + cursor: pointer; + display: inline-block; + margin: 0 auto; + min-width: 1.5em; + padding: 3px; + text-align: left; + text-decoration: none !important; + float: none; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + background: #fff; + border: 1px solid #cacaca; + color: #333 !important; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + background: transparent; + border: 1px solid transparent; + box-shadow: none; + color: #666 !important; + cursor: default; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + background: #585858; + /*border:1px solid #111;*/ + color: white !important; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + background: #2b2b2b; + box-shadow: inset 0 0 3px #111; + outline: none; +} + +.dataTables_wrapper .dataTables_processing { + background: white; + font-size: 1.2em; + height: 40px; + left: 50%; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + position: absolute; + text-align: center; + top: 50%; + width: 100%; +} + +.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { + color: #333; +} + +.dataTables_wrapper .dataTables_scroll { + clear: both; +} + +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} + +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { + height: 0; + margin: 0 !important; + overflow: hidden; + padding: 0 !important; +} + +.dataTables_wrapper.no-footer div.dataTables_scrollHead table, .dataTables_wrapper.no-footer div.dataTables_scrollBody table { + border-bottom: none; +} + +.dataTables_wrapper:after { + clear: both; + content: ""; + display: block; + height: 0; + visibility: hidden; +} \ No newline at end of file diff --git a/admin/date.php b/admin/date.php deleted file mode 100644 index d0a181e..0000000 --- a/admin/date.php +++ /dev/null @@ -1,7 +0,0 @@ -\n"; -print "The formatted hour is " . strftime('%H') . "

\n"; -require_once("global_config.php"); -print "The current time is " . date('h:i:s') . "
\n"; -print "The formatted hour is " . strftime('%H') . "
\n"; -?> \ No newline at end of file diff --git a/admin/default.page.htm b/admin/default.page.htm index b21768e..3024d8a 100644 --- a/admin/default.page.htm +++ b/admin/default.page.htm @@ -1,769 +1,1454 @@ - - - - - [pageTitle] - - [noLeftNav][noRightNav][upperScripts][errMsgStyle] - - - -[blank] - -
-
-[errMsg] -
-[logo] -[topNav] -[leftNav] -[main] -[rightNav] -[footer] -
-[lowerScripts] - - - -Individual sections are placed after this section. This comment should NEVER be visible on any page! - -[blank] - - -[blank]
-[divDecoration] -
    -[topNavLinks] -
-
- -You don't even have to place documentation within comment tags, since the sections -between the start and end section tags are the only parts of the template that are displayed. - -[blank]
-[divDecoration] -[navHeader] -
    -[leftNavLinks] -
-
- - -[blank]
-[divDecoration] -
- [mainTitle] -
-
-[mainContent] -
-
- - -[blank]
-[divDecoration] -[navHeader] -[rightNavLinks] -
- - -[blank] - - -[blank] - - -[blank]
  • - -[divDecoration] - - [linkLabel] - - -
  • - - -[blank]
    -
    -
    -
    - - -[blank]
    -
    -[divDecoration] - My Program-O -
    -
    - - -[blank] - - -[blank] - - -[blank] - - -[blank] - - -[blank]
    [errorMessage]
    - - -[blank]
    -
    - Login -
    -
    - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    - - - -
    -
    -
    - - - -[blank]
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    -
    -
    - - -
    - - -
    - - -
    [bot_name]'s Conversation Logs
    -

    [convo]

    - - - -
    -
    -
    Add a Misspelled word and it's correction:
    -
    - - -
    -
    - - -
    -
    - -
    -
    -
    - - -
    -
    -
    Search for a Misspelled word:
    -
    - - -
    -
    -
    - - -
    -
    -
    Edit the entry for the Misspelled word [missspelling]:
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    -
    Add an improper word and it's replacement:
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    -
    Search for an improper word:
    -
    - - -
    -
    -
    - - -
    -
    -
    Edit the entry for the improper word [word_to_censor]:
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - - -[blank]
    -[teach_content] -
    -
    -[showHelp] -
    - - -[blank]
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    For help, click the icon in the title, above.
    -
    - -
    -
    -
    - - -[blank]
    -

    Help...

    -
    Adding a 'Topic' means that the bot will only be able to access this response if a previous aiml category has set this topic as it's current topic.
    -
    The 'Previous Bot Response' means that the bot must have answered with this text in it's last response.
    -
    The 'User Input' is the the users input used to access the bots response.
    -
    The 'Bot Response' is the text the bot will output when the 'user Input' has been matched.
    -
    -

    Simple Example

    -
    User input: hello how are you
    -
    Bot Response: I am well thank you and you?
    -
    -

    Intermediate example:

    -
    Previous Bot Response: I am well thank you and you
    -
    User input: ok thanks
    -
    Bot Response: That is great to hear
    -
    -

    Advanced example:

    -
    1. First response MUST set the topic
    -
    User input: I like chatbots
    -
    Bot Response: What do you like about them?
    -
    -
    2. Second pattern can only be accessed because the topic has been set in the previous response
    -
    Topic: chatbots
    -
    User input: I just think they are cool
    -
    Bot Response: Yes chatbots are cool
    -
    --You can find alot of information on the net about writing well formed aiml.
    --If you want to learn more about writing AIML start here -
    - - -[blank]
    -

    Help...

    -
    This part is still under construction.
    -
    -
    -
    -
    -
    - - -[blank]
    -

    Help...

    -
    If your aiml file will not upload you may want to check the following.
    -
    --Make sure the folder you are trying to upload to has read/write privs on it (CHMOD 755)
    -
    --Remove any comments from the aiml
    -
    --Replace everything above the first <cattegory> with a simple <aiml> tag
    -
    --You can find alot of information on the net about writing well formed aiml. -
    --If you want to learn more about writing AIML start here -
    - - - Click to toggle help - - -

    [rssRowTitle]

    -

    [rssRowContent]

    -
    - - - - - - - - - - - -
    Talk to [bot_name] using the [format] interface:
    -
    - - -[blank]
    -

    - Here's where you add, remove or edit admin accounts. -

    -[members_list_form] -[members_content] -
    -
    -[showHelp] -
    - - -[blank]

    [action] Admin Account:

    -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - - -
    -
    -
    - - -[blank]
    -
    -
    - - - - -
    -
    -
    - - -[blank]
    -

    - This uploader can only handle aiml files of 1MB or less. - This script does not perform XML validation, but you can - validate your AIML files prior to uploading - (STRONGLY SUGGESTED) using W3School's - XML Validator. -

    -[upload_content] -
    - List of Currently Stored AIML files:
    -[AIML_List] -
    -
    -
    -[showHelp] -
    - - -[blank]
    -
    -
    - -     -     - - -
    -
    -
    - - -[blank]
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - TIP: Use % as a wildcard along with your search word/phrase to improve chances of - finding what you're looking for (e.g. "I % you", "%hot" or "%live%") -
    -
    - -
    -
    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - - -[blank]
    -

    [bot_name]'s Stats

    -
    - Conversations:
    - Today: [oneday]
    - Last week: [oneweek]
    - Last month: [onemonth]
    - Last six months: [sixmonths]
    - Last year: [oneyear]
    - All time: [alltime] -
    -
    - Conversation Lines:
    - Single line: [singlelines]
    - 1-25 lines: [alines]
    - 25-50 lines: [blines]
    - 51-100 lines: [clines]
    - 101+ lines: [dlines]
    - Average: [avg] -
    -
    - + + + + + [pageTitle] + + [extraCSS][noLeftNav][noRightNav][upperScripts][errMsgStyle] + + + +[blank] + +
    [version]
    +
    + [logo] + [topNav] + [leftNav] + [main] + [rightNav] + [footer] +
    +[lowerScripts] + + + +Individual sections are placed after this section. This comment should NEVER be visible on any page! + +[blank] + + + +[blank] +
    + [divDecoration] +
      + [topNavLinks] +
    +
    + +You don't even have to place documentation within comment tags, since the sections +between the start and end section tags are the only parts of the template that are displayed. + +[blank] +
    + [divDecoration] + [navHeader] +
      + [leftNavLinks] +
    +
    + + +[blank] +
    +
     
    + [errMsg] +
    +
    + [divDecoration] +
    + [mainTitle] +
    +
    + [mainContent] +
    +
    + + +[blank] +
    + [divDecoration] + [navHeader] + [rightNavLinks] +
    + + +[blank] + + + +[blank] + + + +[blank] +
  • +
    + [divDecoration] + + [linkLabel] + +
    +
  • + + +[blank] +
    +
    +
    +
    + + +[blank] +
    +
    + [divDecoration] + My Program-O +
    +
    + + +[blank] + + + +[blank] + + + +[blank] + + + +[blank] + + + +[blank] +
    [errorMessage]
    + + +[blank] +
    +
    + Login +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + +[blank] +
    +
    + + + + Bot ID:  (Not + Editable) +
    +
    + + + +[blank] + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + +
    + + + +
    + The chatbot "[bot_name]" has [aiml_count] AIML categories in the database. +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    +
    + +
    + +
    +
    +
    + *Chooses the update branch on GitHub to check against the current install's version. +
    + + + +[blank] +
    + + +
    + + +[blank] +
    [bot_name]'s Conversation Logs
    +

    [convo]

    + + +[blank] +
    [bot_name]'s Unknown Inputs
    +

    [unk_inp]

    + + +[blank] +
    +
    +
    Add a Misspelled word and it's correction:
    +
    + + +
    +
    + + +
    +
    + +
    +
    +
    + + +[blank] +
    + The Spell checker addon is [sc_enabled]
    + + Note: + To enable or disable the spell checker, you will need to edit the config file. + Please see the README file in the chatbot/addons/spell_checker folder for more details. +
    + +
    + + +[blank] +
    +
    +
    Edit the entry for the Misspelled word [missspelling]:
    +
    + + +
    +
    + + +
    +
    + + + +
    +
    +
    + + +[blank] +
    +
    +
    Add an improper word and it's replacement:
    +
    + + +
    +
    + + +
    +
    + +   +
    +
    +
    + + +[blank] +
    + +
    + + +[blank] +
    +
    +
    Edit the entry for the improper word [word_to_censor]:
    +
    + + +
    +
    + + +
    +
    + +   + +
    +
    +
    + + +[blank] +
    + [teach_content] +
    +
    + [showHelp] +
    + + +[blank] +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    For help, click the icon in the title, above.
    +
    + +
    +
    +
    + + +[blank] +
    +

    Help...

    +
    + Adding a 'Topic' means that the bot will only be able to access this response if a previous aiml category has + set this topic as it's current topic. +
    +
    The 'Previous Bot Response' means that the bot must have answered with this text in it's last response.
    +
    The 'User Input' is the the users input used to access the bots response.
    +
    The 'Bot Response' is the text the bot will output when the 'user Input' has been matched.
    +
    +

    Simple Example

    +
    User input: hello how are you
    +
    Bot Response: I am well thank you and you?
    +
    +

    Intermediate example:

    +
    Previous Bot Response: I am well thank you and you
    +
    User input: ok thanks
    +
    Bot Response: That is great to hear
    +
    +

    Advanced example:

    +
    1. First response MUST set the topic
    +
    User input: I like chatbots
    +
    + Bot Response: What do you like about them? <set topic="chatbots"> +
    +
    +
    2. Second pattern can only be accessed because the topic has been set in the previous response
    +
    Topic: chatbots
    +
    User input: I just think they are cool
    +
    Bot Response: Yes chatbots are cool
    +
    + You can find alot of information on the net about writing well formed aiml.
    + If you want to learn more about writing AIML + + start here + . +
    + + +[blank] +
    +

    Help...

    +

    General/Searching

    +
    + Using the search/edit page is fairly straightforward. The page displays all of the available categories for the + selected chatbot 10 categories at a time by default, with options for displaying more, via a selectbox in the + upper lef corner of the main panel, up to 100 categories max. If the chatbot has more than 100 categories total + in the database, there is a set of links for additional pages in the lower right corner of the panel, so that + all stored AIML categories are accessible. The categories can be sorted by any of the visible fields, simply + by clicking on the header titles along the top of the table. +
    +
    + In order to quickly find the AIML category that you're looking for, simply use the search boxes along the top, + just below the field titles. Any combination of search fields can be used at any time to help narrow the search. +
    +
    +
    +

    Editing

    +
    + Editing can be accomplished by simply clicking on the desired field and changing the contents of that field to + suit your needs. You can cancel the edit at any time by pressing the Escape ([ESC]) key, or by "clicking off" + the field without making any changes. To save your edit, simply "click off" the field once you're satisfied + with the changes you've made. Please note, however, that the new AIML code that was saved is + NOT checked for valid AIML code prior to saving, so it's up to you to make sure that the edited code is valid. +
    +
    +
    +

    Deleting a Category (row)

    +
    + In order to delete an AIML category from the database, simply locate it using the search functionality, then + click on the DELETE icon () to the left of the category. + You will get a confirmation dialog prior to the deletion. WARNING! Once you confirm + that you want to delete the category, there is no going back! once deleted, that AIML category is gone and can only + be "brought back" by creating a new one in it's place. +
    +
    +
    --You can find alot of information on the net about writing well formed aiml.
    --If you want to learn more about + writing AIML start here. +
    + + +[blank] +
    +

    Help...

    +
    This area allows you remove individual or ALL aiml entries for a specific bot.
    +
    Ideal if you want to start again with a blank chatbot and repopulate via the upload panel.
    +
    BUT BE WARNED: This operation can not be undone so use with care.
    +
    --Ensure that the current bot is the correct bot.
    +
    --Select 'Clear categories from this AIML file' and choose the aiml file from the drop down.
    +
    --Or select 'Clear ALL AIML categories (Purge database)'.
    +
    --Then press 'Submit' to delete the entries for that file.
    +
    + + +[blank] +
    +

    Help...

    +
    This area allows you edit or add users to the admin account area.
    +
    --Select a current user.
    +
    --Or enter the details for a new user.
    +
    --Then press 'Save' to update the user.
    +
    --Or press 'Delete' to remove the user.
    +
    + + +[blank] +
    +

    Help...

    +
    If your aiml file will not upload you may want to check the following.
    +
    --Make sure the folder you are trying to upload to has read/write privs on it (CHMOD 755)
    +
    --Remove any comments from the aiml
    +
    --Replace everything above the first <cattegory> with a simple <aiml> tag
    +
    --You can find alot of information on the net about writing well formed aiml. +
    --If you want to learn more about writing AIML + start here. +
    + + +[blank] +
    +

    Help...

    +
    + First, choose whether to download the files as AIML files (the default action) or as SQL files. Once you've + made all of your selections, simply click the Download button, and your request will be processed. This + processing should take only a few seconds. A link will be given on the off chance that your file doesn't + pop up for downloading. +
    +
    + + +[blank] + Click to toggle help + + +[blank] +

    [rssRowTitle]

    +

    [rssRowContent]

    +
    + + +[blank] + + + +[blank] + + + [editScriptTag] + + + +[blank] + + + + +[blank] + + + +[blank] +
    Talk to [bot_name] using the [format] interface:
    +
    + +
    + + +[blank] +
    Database Stats for [dbn]
    +
    +

    Uptime: [stats_uptime]

    +

    Threads: [stats_threads]

    +

    Queries: [stats_query_count]

    +

    Slow queries: [stats_slow_queries]

    +

    Flush table count: [stats_flush_count]

    +

    Tables Opened: [stats_tables_open]

    +

    Queries per second avg: [stats_qps]

    +
    + + +[blank] +
    +

    + Here's where you add, remove or edit admin accounts. +

    + [members_list_form] + [members_content] +
    +
    + [showHelp] +
    + + +[blank] +

    [action] Admin Account:

    +
    +
    +
    + + Account ID: (not editable) +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + + +
    +
    +
    + + +[blank] +
    +
    +
    + + + + +
    +
    +
    + + +[blank] +
    +

    + Use this uploader to add AIML categories to your chatbot's database. You have the option + to upload either individual AIML files, or ZIP archive files of up to [fs_limit_title] in size. + This uploader no longer performs XML validation, so you need to validate your AIML files prior to + uploading them. It's STRONGLY SUGGESTED that you use either W3School's + XML Validator, + or the Program O AIML Validator. There are other XML validators + available, but the W3Schools validator works well, and the Program O Validator is specifically + designed to validate AIML files. Please note, however, that neither of the above mentioned + validators will work with zip files. +

    + [upload_content] +
    +
    + List of Currently Stored AIML files for [bot_name]:
    + [AIML_List] +
    +
    +
    +
    + [showHelp] +
    + + +[blank] +
    + + + + + + + + + + + + +
    + +     + +     + +
    + +     + +     + +
    + +
    +
    + + +[blank] + + +
    + The SRAI lookup table currently contains [row_count] entries for the chatbot named "[bot_name]". +
    +

    + Fill Lookup Table (See the HELP link for details) +

    +
    +
    + + + + + + + + + + + + + + + + + +
    IDBot IDPatternTemplate ID
    + + + +
    +
    + + + + + + + + + + + +
    Add New SRAI Entry:
    + + + + + + + + + + +
    +
    +
    +
    +[showHelp] + + +[blank] +
    +

    Help...

    +

    General

    +
    + The "Fill Lookup Table" link runs a script that searches the entire AIML table for SRAI calls for every chatbot + and stores valid entries (along with the bot ID and the IDs of categories with matching patterns) + into a special lookup table. The chatbot engine then uses this lookup table to select the proper + response for that SRAI call without having to search through the entire database for a "best match". + This can improve performance by as much as 70% for each SRAI call made that is in the lookup table. + Since the script runs for all current chatbots, you only have to run it once for all of your bots. + Just remember to run it again if you make any significant changes to your AIML, especially if you + add or remove a chatbot. You don't have to worry about duplicates because the script starts by + emptying the lookup table first, and then uses a routine that rejects duplicates on a per-bot basis. +
    +
    + The table and forms on the page are to help with searching for, editing, and inserting new entries within the + srai_lookup table. These aids are here mainly because the script that automatically inserts entries into + the table is far from perfect, and can often miss entries due to SRAI calls that contain other AIML tags. + The use of these tools requires a great deal of knowledge regarding the content of the chatbot's AIML, and + should be used with caution until you become proficient with the ins and outs of your chatbot's AIML code. +
    +

    Warning:

    +
    + Please note that if you have any manually edited entries in the srai_lookup table and run the script to + populate the table anew, all of those manually added entries will be lost. So before you run the script + to repopulate the table, you should use a database manager (such as phpMyAdmin) to back up those entries. +
    +
    +

    Editing

    +
    + Editing can be accomplished by simply clicking on the desired field and changing the contents of that field to + suit your needs. You can cancel the edit at any time by pressing the Escape ([ESC]) key, or by "clicking off" + the field without making any changes. To save your edit, simply "click off" the field once you're satisfied + with the changes you've made. Please note, however, that the new AIML code that was saved is NOT + checked for valid AIML code prior to saving, so it's up to you to make sure that the edited code is valid. +
    +
    +
    +

    Deleting a Category (row)

    +
    + In order to delete an SRAI entry from the database, simply locate it using the search functionality, then click + on the DELETE icon () to the left of the category. You + will get a confirmation dialog prior to the deletion. WARNING! Once you confirm + that you want to delete the category, there is no going back! once deleted that AIML category is gone, and can + only be "brought back" by creating a new one in it's place. +
    +
    + + +[blank] +
    +

    [bot_name]'s Stats

    +
    + Conversations:
    + Today: [oneday]
    + Last week: [oneweek]
    + Last month: [onemonth]
    + Last six months: [sixmonths]
    + Last year: [oneyear]
    + All time: [alltime] +
    +
    + Conversation Lines:
    + Single line: [singlelines]
    + 1-25 lines: [alines]
    + 25-50 lines: [blines]
    + 51-100 lines: [clines]
    + 101+ lines: [dlines]
    + Average: [avg] +
    +
    + + +[blank] +
    +

    1st to 2nd/2nd to 1st transforms

    +
    +

    This page is under construction!

    +
    +
    + + +[blank] + + +
    + + + + + + + + + + + + + + + + + + + + + +
    IDPatternthatpatternTemplateTopicFilename
    +
    + + + + + + + + + + + +
    Add new AIML Category:
    + + + + + + + + + + + + +
    +
    +
    +
    +[showHelp] + + +[blank] + + +
    + + + + + + + + + + + + + + + + + + + +
    IDUser IDPatternthatpatternTemplate
    +
    +
    +[showHelp] + + +[blank] +
    +
    + + + [thead_content] + + + [tfoot_content] + + + [tbody_content] + +
    +
    + + +[blank] +
    +
    Please select the AIML files you wish to download from the selections below.
    +
    +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    +
    +
    + [file_checkboxes] +
    +
    +
    + +
    +
    +
    [status]
    +
    +[showHelp] + + + + +[blank] + + + +[blank] +
    Deleting AIML categories from the database is permanent! + This action CANNOT be undone! +
    +
    +
    + + + + + + + + + +
    + +
    +
    + + +
    + + + +
    +
    +
    +[showHelp] + + + +[blank] +
    + + + + + + + + + + + + + + + + + + + +
    + Your Name:
    + +
    + Your Email Address:
    + +
    + Subject:
    + +
    + Message:
    + +
    +

    + Use this handy form to submit a bug report to Liz and Company over at the Program O website. + Please describe the problem as completely as possible, including what actions you were trying + to perform at the time that you noticed the problem. +

    +
    +
    + +
    +

    + Answer the question you see in the image on the left into the text area + below. We are looking for a one word answer (no numbers). Sorry, but bots are not allowed. +

    + +
    + +
    +
    + + diff --git a/admin/demochat.php b/admin/demochat.php index b893718..6af5933 100644 --- a/admin/demochat.php +++ b/admin/demochat.php @@ -1,52 +1,71 @@ -getSection('TopNav'); - $leftNav = $template->getSection('LeftNav'); - $main = $template->getSection('Main'); - $topNavLinks = makeLinks('top', $topLinks, 12); - $navHeader = $template->getSection('NavHeader'); - $leftNavLinks = makeLinks('left', $leftLinks, 12); - $FooterInfo = getFooter(); - $errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgClass); - $noLeftNav = ''; - $noTopNav = ''; - $noRightNav = $template->getSection('NoRightNav'); - $headerTitle = 'Actions:'; - $pageTitle = 'My-Program O - Chat Demo'; - $mainContent = 'This will eventually be the page for the chat demo.'; - $mainContent = showChatFrame(); - $mainTitle = 'Chat Demo'; - - function showChatFrame() { - global $template, $bot_name, $bot_id; - $dbconn = db_open(); - $sql = "select `format` from `bots` where `bot_id` = $bot_id limit 1;"; - $result = mysql_query($sql, $dbconn) or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . ".
    \nSQL = $sql
    \n"); - $row = mysql_fetch_assoc($result); - $format = strtolower($row['format']); - switch ($format) { - case "html": - $url = '../gui/plain/'; - break; - case "json": - $url = '../gui/jquery/'; - break; - case "xml": - $url = '../gui/xml/'; - break; - } - $out = $template->getSection('ChatDemo'); - $out = str_replace('[pageSource]', $url, $out); - $out = str_replace('[format]', strtoupper($format), $out); - return $out; - } -?> \ No newline at end of file +getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); +$navHeader = $template->getSection('NavHeader'); + +$FooterInfo = getFooter(); +$errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); + +$headerTitle = 'Actions:'; +$pageTitle = 'My-Program O - Chat Demo'; +$mainContent = 'This will eventually be the page for the chat demo.'; +$mainContent = showChatFrame(); +$mainTitle = 'Chat Demo'; + +/** + * Function showChatFrame + * + * + * @return mixed|string + */ +function showChatFrame() +{ + global $template, $bot_name, $bot_id; + + $qs = '?bot_id=' . $bot_id; + /** @noinspection SqlDialectInspection */ + $sql = "SELECT `format` FROM `bots` WHERE `bot_id` = :bot_id limit 1;"; + $params = array(':bot_id' => $bot_id); + $row = db_fetch($sql, $params, __FILE__, __FUNCTION__, __LINE__); + $format = strtolower($row['format']); + + switch ($format) + { + case "html": + $url = '../gui/plain/'; + break; + case "json": + $url = '../gui/jquery/'; + break; + case "xml": + $url = '../gui/xml/'; + break; + default: + $url = '../gui/plain/'; + } + + $url .= $qs; + $out = $template->getSection('ChatDemo'); + $out = str_replace('[pageSource]', $url, $out); + $out = str_replace('[format]', strtolower($format), $out); + + return $out; +} diff --git a/admin/download.php b/admin/download.php index c5d1596..ae645eb 100644 --- a/admin/download.php +++ b/admin/download.php @@ -1,234 +1,362 @@ - -getSection('TopNav'); - $leftNav = $template->getSection('LeftNav'); - $main = $template->getSection('Main'); - $topNavLinks = makeLinks('top', $topLinks, 12); - $navHeader = $template->getSection('NavHeader'); - $leftNavLinks = makeLinks('left', $leftLinks, 12); - $FooterInfo = getFooter(); - $errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgClass); - $noLeftNav = ''; - $noTopNav = ''; - $noRightNav = $template->getSection('NoRightNav'); - $headerTitle = 'Actions:'; - $pageTitle = 'My-Program O - Download AIML'; - $mainContent = $content; - $mainTitle = 'Download AIML'; - - function replaceTags(&$content) { - return $content; - } - - function getAIMLByFileName($filename) { - global $dbn,$botmaster_name; - $categoryTemplate = '[pattern][that]'; - $dbconn = db_open(); - $cleanedFilename = mysql_real_escape_string($filename, $dbconn); - # Get all topics within the file - $topicArray = array(); - $curPath = dirname(__FILE__); - chdir($curPath); - $fileContent = file_get_contents('./AIML_Header.dat'); - #$x = file_put_contents('./AIML_Header_tmp.dat', $fileContent); - $fileContent = str_replace('[botmaster_name]', $botmaster_name, $fileContent); - $curDate = date('m-d-Y', time()); - $fileContent = str_replace('[curDate]', $curDate, $fileContent); - $fileContent = str_replace('[fileName]', $cleanedFilename, $fileContent); - $sql = "select distinct topic from aiml where filename like '$cleanedFilename';"; - #return "SQL = $sql"; - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - while ($row = mysql_fetch_assoc($result)) { - $topicArray[] = $row['topic']; - } - foreach ($topicArray as $topic) { - if (!empty($topic)) $fileContent .= "\n"; - $sql = "select pattern, thatpattern, template from aiml where topic like '$topic' and filename like '$cleanedFilename';"; - $fileContent .= "\r\n\r\n\r\n\r\n"; - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - while ($row = mysql_fetch_assoc($result)) { - $pattern = strtoupper($row['pattern']); - $template = str_replace("\r\n",'',$row['template']); - $template = str_replace("\n",'',$row['template']); - $newLine = str_replace('[pattern]',$pattern, $categoryTemplate); - $newLine = str_replace('[template]',$template,$newLine); - $that = (!empty($row['thatpattern'])) ? '' . $row['thatpattern'].'' : ''; - $newLine = str_replace('[that]',$that,$newLine); - $fileContent .= "$newLine\n"; - } - if (!empty($topic)) $fileContent .= "\n"; - } - $fileContent .= "\r\n
    \r\n"; - $outFile = ltrim($fileContent, "\n\r\n"); - $x = file_put_contents("./downloads/$cleanedFilename", trim($outFile)); - - mysql_close($dbconn); - $msg = "
    AIML file $filename successfully saved!"; - $msg = "Your file, $filename, is being prepaired. If it doesn't start, please Click Here.
    \n"; - return serveFile($filename, $msg); - } - - function getSQLByFileName($filename) { - global $dbn,$botmaster_name, $dbh; - $curPath = dirname(__FILE__); - chdir($curPath); - $dbFilename = $filename; - $filename = str_ireplace('.aiml', '.sql', $filename); // change to sql extension for clarity - $categoryTemplate = " ([id],[bot_id],'[aiml]','[pattern]','[thatpattern]','[template]','[topic]','[filename]','[php_code]'),"; - $dbconn = db_open(); - $phpVer = phpversion(); - $cleanedFilename = mysql_real_escape_string($dbFilename, $dbconn); - # Get all topics within the file - $topicArray = array(); - $sql = "select * from aiml where filename like '$cleanedFilename' order by id asc;"; - $fileContent = file_get_contents('SQL_Header.dat'); - $fileContent = str_replace('[botmaster_name]', $botmaster_name, $fileContent); - $fileContent = str_replace('[host]', $dbh, $fileContent); - $fileContent = str_replace('[dbn]', $dbn, $fileContent); - $fileContent = str_replace('[sql]', $sql, $fileContent); - $fileContent = str_replace('[phpVer]', $phpVer, $fileContent); - $curDate = date('m-d-Y h:j:s A', time()); - $fileContent = str_replace('[curDate]', $curDate, $fileContent); - $fileContent = str_replace('[fileName]', $cleanedFilename, $fileContent); - - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - while ($row = mysql_fetch_assoc($result)) { - $aiml = str_replace("\r\n",'',$row['aiml']); - $aiml = str_replace("\n",'',$aiml); - $aiml = mysql_real_escape_string($aiml,$dbconn); - $template = str_replace("\r\n",'',$row['template']); - $template = str_replace("\n",'',$template); - $template = mysql_real_escape_string($template,$dbconn); - $newLine = str_replace('[id]', $row['id'], $categoryTemplate); - $newLine = str_replace('[bot_id]', $row['bot_id'], $newLine); - $newLine = str_replace('[aiml]', $aiml, $newLine); - $newLine = str_replace('[pattern]', $row['pattern'], $newLine); - $newLine = str_replace('[thatpattern]',$row['thatpattern'], $newLine); - $newLine = str_replace('[template]', $template, $newLine); - $newLine = str_replace('[topic]', $row['topic'], $newLine); - $newLine = str_replace('[filename]', $row['filename'], $newLine); - $newLine = str_replace('[php_code]', $row['php_code'], $newLine); - $fileContent .= "$newLine\r\n"; - } - $fileContent = trim($fileContent,",\r\n"); // remove the comma from the last row - $fileContent .= "\n"; - $x = file_put_contents("./downloads/$filename", trim($fileContent)); - - mysql_close($dbconn); - $msg = "Your file, $filename, is being prepaired. If it doesn't start, please Click Here.
    \n"; - return serveFile($filename, $msg); - } - - function getSelOpts() { - global $dbn; - $out = " \n"; - $dbconn = db_open(); - $optionTemplate = " \n"; - $sql = 'SELECT DISTINCT filename FROM aiml order by filename;'; - #return "SQL = $sql"; - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - while ($row = mysql_fetch_assoc($result)) { - if (empty($row['filename'])) { - $curOption = " \n"; - } - else $curOption = str_replace('[val]', $row['filename'], $optionTemplate); - $out .= $curOption; - } - mysql_close($dbconn); - $out .= " \n"; - return $out; - } - - function renderMain() { - $selectOptions = getSelOpts(); - $content = << -
    - - - - - - - - - -
    - - - -
    - - - - - -
    -
    -endForm; - - return $content; - } - - function serveFile($req_file, &$msg = '') { - $fileserver_path = dirname(__FILE__) . '/downloads'; // change this to the directory your files reside - $whoami = basename(__FILE__); // you are free to rename this file - $myMsg = urlencode($msg); -/* no web spamming */ -if (!preg_match("/^[a-zA-Z0-9._-]+$/", $req_file, $matches)) { - return "I don't know what you were trying to do, nor do I care. Just stop it."; -} - -/* download any file, but not this one */ -if ($req_file == $whoami) { - return "I don't know what you were trying to do, nor do I care. Just stop it."; -} - -/* check if file exists */ -if (!file_exists("$fileserver_path/$req_file")) { - return "File $req_file doesn't exist."; -} - -if (empty($_GET['send_file'])) { - header("Refresh: 5; url=$whoami?file=$req_file&send_file=yes&msg=$myMsg"); -} -else { - header('Content-Description: File Transfer'); - header('Content-Type: application/force-download'); - header('Content-Length: ' . filesize("$fileserver_path/$req_file")); - header('Content-Disposition: attachment; filename=' . $req_file); - #readfile("$fileserver_path/$req_file"); - print file_get_contents("$fileserver_path/$req_file"); - exit; -} - return $msg; - } -?> \ No newline at end of file +[filename]'; + +/** @noinspection PhpUndefinedVariableInspection */ +$bot_id = ($bot_id == 'new') ? 0 : $bot_id; +$referer = filter_input(INPUT_SERVER, 'HTTP_REFERER', FILTER_SANITIZE_URL); +$upperScripts = $template->getSection('UpperScripts'); + +$allowed_get_vars = $allowed_pages['download']; +$form_vars = clean_inputs($allowed_get_vars); + +//trigger_error('Test error: form vars =' . print_r($form_vars, true), E_USER_NOTICE); + +if (!empty($form_vars['type']) && !empty($form_vars['filenames'])) +{ + $type = $form_vars['type']; + + /** @noinspection PhpUndefinedVariableInspection */ + $zipFilename = "$bot_name.$type.zip"; + + if (!isset($form_vars['filenames'])) + { + $msg .= 'No files were selected for download. Please select at least one file.'; + } + else + { + $fileNames = $form_vars['filenames']; + + if($ZIPenabled) + { + // clear out old zip file if it exists, to prepare for the new one. + if(file_exists(_DOWNLOAD_PATH_ . $zipFilename)) unlink(_DOWNLOAD_PATH_ . $zipFilename); + $zip = new ZipArchive(); + $success = $zip->open(_DOWNLOAD_PATH_ . $zipFilename, ZipArchive::CREATE); + + if ($success === true) + { + foreach ($fileNames as $filename) + { + $curZipContent = ($type == 'SQL') ? getSQLByFileName($filename) : getAIMLByFileName($filename); + $filename = ($type == 'SQL') ? str_replace('.aiml', '.sql', $filename) : $filename; + $zip->addFromString("{$bot_name}.{$filename}", $curZipContent); + } + + $zip->close(); + $_SESSION['send_file'] = $zipFilename; + $_SESSION['referer'] = $referer; + + header("Refresh: 5; url=file.php"); + + $msg .= "The file $zipFilename is being processed. If the download doesn't start within a few seconds, please click here.\n"; + } + }else{ + //lets download all selected files individually + $msg .= 'The PHP ZipArchive class is not available on this server, so Zip files cannot be downloaded. However, individual AIML files can be downloaded. We apologise for the inconvenience.

    '; + foreach ($fileNames as $filename) + { + $curFileContent = ($type == 'SQL') ? getSQLByFileName($filename) : getAIMLByFileName($filename); + $filename = ($type == 'SQL') ? str_replace('.aiml', '.sql', $filename) : $filename; + //delete old aiml files + if(file_exists(_DOWNLOAD_PATH_ . $filename)) unlink(_DOWNLOAD_PATH_ . $filename); + file_put_contents(_DOWNLOAD_PATH_ . $filename, $curFileContent); + //get the download links + $downloadLinks .= str_replace('[filename]', trim($filename), $dlLinkTemplate); + } + $fnList = implode(', ', $fileNames); + $fnList = replace_last(', ', ' and ', $fnList); + $msg .= "The file(s) $fnList have been processed. Click on the filename(s) below to download individually.
    $downloadLinks"; + } + } +} + +$content .= renderMain(); +$showHelp = $template->getSection('DownloadShowHelp'); +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); + +$navHeader = $template->getSection('NavHeader'); + +$FooterInfo = getFooter(); +$errMsgClass = (!empty ($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); +$headerTitle = 'Actions:'; +$pageTitle = "My-Program O - Download AIML files"; + +$mainContent = $content; +$mainTitle = "Download AIML files for the bot named $bot_name [helpLink]"; +$mainContent = str_replace('[showHelp]', $showHelp, $mainContent); +$mainContent = str_replace('[status]', $status, $mainContent); +$mainTitle = str_replace('[helpLink]', $template->getSection('HelpLink'), $mainTitle); + +/** + * Function getAIMLByFileName + * + * @param $filename + * @return string + */ +function getAIMLByFileName($filename) +{ + if ($filename == 'null') + { + return "You need to select a file to download."; + } + + global $botmaster_name, $charset, $bot_id; + + $bmnLen = 51 - strlen($botmaster_name); + $bmnPadding = str_pad('', $bmnLen); + $categoryTemplate = '[pattern][that]'; + + $cleanedFilename = $filename; + + $topicArray = array(); + $curPath = dirname(__FILE__); + chdir($curPath); + + $fileContent = file_get_contents(_ADMIN_PATH_ . 'AIML_Header.dat'); + $fileContent = str_replace('[year]', date('Y'), $fileContent); + $fileContent = str_replace('[charset]', $charset, $fileContent); + $fileContent = str_replace('[bm_name]', $botmaster_name . $bmnPadding, $fileContent); + + $pad_len = 60 - strlen($cleanedFilename); +// NOTE: the value 60 in the previous line is the number of characters from the `[` to the first '-' +// in the comment that contains the filename. This makes the comment the same width as the others +// in the AIML file. + $space_padding = str_pad('', $pad_len, ' '); + $fileContent = str_replace('[fileName]', $cleanedFilename . $space_padding, $fileContent); + + $curDate = date('m-d-Y', time()); + $cdLen = strlen($curDate); + $curDateSearch = str_pad('[curDate]', $cdLen); + + $fileContent = str_replace($curDateSearch, $curDate, $fileContent); + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT DISTINCT topic FROM aiml WHERE filename LIKE :cleanedFilename and bot_id = :bot_id;"; + $params = array( + ':cleanedFilename' => $cleanedFilename, + ':bot_id' => $bot_id + ); + $result = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + + foreach ($result as $row) + { + $topicArray[] = $row['topic']; + } + + foreach ($topicArray as $topic) + { + if (!empty ($topic)) + { + $fileContent .= "\n"; + } + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT pattern, thatpattern, template FROM aiml WHERE topic LIKE :topic AND filename LIKE :cleanedFilename and bot_id = :bot_id;"; + $params = array( + ':topic' => $topic, + ':cleanedFilename' => $cleanedFilename, + ':bot_id' => $bot_id + ); + $result = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + + foreach ($result as $row) + { + $pattern = _strtoupper($row['pattern']); + + $template = str_replace("\r\n", '', $row['template']); + $template = str_replace("\n", '', $row['template']); + + $newLine = str_replace('[pattern]', $pattern, $categoryTemplate); + $newLine = str_replace('[template]', $template, $newLine); + + $that = (!empty ($row['thatpattern'])) ? '' . $row['thatpattern'] . + '' : ''; + + $newLine = str_replace('[that]', $that, $newLine); + $fileContent .= "$newLine\n"; + } + + if (!empty ($topic)) + { + $fileContent .= "\n"; + } + } + + $fileContent .= "\r\n
    \r\n"; + + $dom = new DOMDocument(); + $dom->preserveWhiteSpace = false; + $dom->formatOutput = true; + $dom->loadXML(trim($fileContent)); + + $fileContent = $dom->saveXML(); + + $outFile = ltrim($fileContent, "\n\r\n"); + $outFile = (IS_MB_ENABLED) ? mb_convert_encoding($outFile, 'UTF-8') : $outFile; + + return $outFile; +} + +/** + * Function getSQLByFileName + * + * * @param $filename + * @return string + */ +function getSQLByFileName($filename) +{ + global $dbn, $botmaster_name, $dbh, $bot_id; + + $curPath = dirname(__FILE__); + chdir($curPath); + $dbFilename = $filename; + $filename = str_ireplace('.aiml', '.sql', $filename); + $newLine = " ([bot_id],'[pattern]','[thatpattern]','[template]','[topic]','[filename]'),"; + $phpVer = phpversion(); + $cleanedFilename = $dbFilename; + $topicArray = array(); + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT * FROM aiml WHERE filename LIKE :cleanedFilename and bot_id = :bot_id ORDER BY id ASC;"; + $params = array(':cleanedFilename' => $cleanedFilename, ':bot_id' => $bot_id); + $fileContent = file_get_contents('SQL_Header.dat'); + + $fileContent = str_replace('[botmaster_name]', $botmaster_name, $fileContent); + $fileContent = str_replace('[host]', $dbh, $fileContent); + $fileContent = str_replace('[dbn]', $dbn, $fileContent); + $fileContent = str_replace('[sql]', $sql, $fileContent); + $fileContent = str_replace('[phpVer]', $phpVer, $fileContent); + + $curDate = date('m-d-Y h:j:s A', time()); + + $fileContent = str_replace('[curDate]', $curDate, $fileContent); + $fileContent = str_replace('[fileName]', $cleanedFilename, $fileContent); + + $result = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + + foreach ($result as $row) + { + $template = str_replace("\r\n", '', $row['template']); + $template = str_replace("\n", '', $template); + + //$newLine = str_replace('[id]', $row['id'], $categoryTemplate); + $newLine = str_replace('[bot_id]', $row['bot_id'], $newLine); + $newLine = str_replace('[pattern]', $row['pattern'], $newLine); + $newLine = str_replace('[thatpattern]', $row['thatpattern'], $newLine); + $newLine = str_replace('[template]', $template, $newLine); + $newLine = str_replace('[topic]', $row['topic'], $newLine); + $newLine = str_replace('[filename]', $row['filename'], $newLine); + + $fileContent .= "$newLine\r\n"; + } + + $fileContent = trim($fileContent, ",\r\n"); + $fileContent .= "\n"; + + return $fileContent; +} + +/** + * Function getCheckboxes + * + * @return string + */ +function getCheckboxes() +{ + global $bot_id, $bot_name, $msg; + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT DISTINCT filename FROM `aiml` WHERE `bot_id` = :bot_id ORDER BY `filename`;"; + $params = array(':bot_id' => $bot_id); + $result = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + + if (count($result) == 0) + { + $msg = "The chatbot '$bot_name' has no AIML categories to download. Please select another bot."; + return false; + } + + $out = ""; + $checkboxTemplate = << + + + +endRow; + $rowCount = 0; + + foreach ($result as $row) + { + if (empty ($row['filename'])) + { + $row['filename'] = 'unnamed_AIML.aiml'; + } + + $file_name = $row['filename']; + $file_name_id = str_replace('.', '_', $file_name); + $curCheckbox = str_replace('[file_name]', $file_name, $checkboxTemplate); + $curCheckbox = str_replace('[file_name_id]', $file_name_id, $curCheckbox); + $out .= $curCheckbox; + $rowCount++; + } + + return rtrim($out); +} + +/** + * Function renderMain + * + * + * @return string + */ +function renderMain() +{ + global $msg, $template; + + $file_checkboxes = getCheckboxes(); + + if ($file_checkboxes === false) + { + return "
    $msg

    \n"; + } + + $content = $template->getSection('DownloadForm'); + $content = str_replace('[file_checkboxes]', $file_checkboxes, $content); + + return $content; +} + +function replace_last($search, $replace, $subject) +{ + $pos = strripos($subject, $search); + if(false !== $pos) + { + $sLen = strlen($search); + $subject = substr_replace($subject, $replace, $pos, $sLen); + } + return $subject; +} + diff --git a/admin/error.log b/admin/downloads/index.html similarity index 100% rename from admin/error.log rename to admin/downloads/index.html diff --git a/admin/editAJAX.php b/admin/editAJAX.php new file mode 100644 index 0000000..8075ef5 --- /dev/null +++ b/admin/editAJAX.php @@ -0,0 +1,299 @@ + "No session found"))); +} + +// Open the DB +$action = (isset($form_vars['action'])) ? $form_vars['action'] : 'runSearch'; + +switch ($action) +{ + case 'add': + exit (insertAIML()); + break; + case 'update': + exit (updateAIML()); + break; + case 'del': + exit (delAIML($form_vars['id'])); + break; + default: + exit (runSearch()); +} + +/** + * Function delAIML + * + * @param $id + * @return string + */ +function delAIML($id) +{ + if ($id != "") + { + /** @noinspection SqlDialectInspection */ + $sql = "DELETE FROM `aiml` WHERE `id` = :id LIMIT 1"; + $params = array(':id' => $id); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + + if ($affectedRows == 0) + { + $msg = 'Error AIML couldn\'t be deleted - no changes made.'; + } + else { + $msg = 'AIML has been deleted.'; + } + } + else { + $msg = 'Error AIML couldn\'t be deleted - no changes made.'; + } + + return $msg; +} + +/** + * Function runSearch + * + * @return mixed|string + */ +function runSearch() +{ + global $bot_id, $form_vars, $group; + extract($form_vars); + $now = time(); + $search_fields = array('topic', 'filename', 'pattern', 'template', 'thatpattern'); + $searchTerms = array(); + $searchParams = array(':bot_id' => $bot_id); + $where = array(); + + // parse column searches + /** @noinspection PhpUndefinedVariableInspection */ + foreach ($columns as $index => $column) + { + if ($column['data'] == 'Delete') { + $column['data'] = 'id'; + } + + if (!empty($column['search']['value'])) + { + $srchValue = $column['search']['value']; + $tmpSearch = htmlspecialchars_decode($srchValue, ENT_QUOTES); + $sr = array( + "'" => "\'", + "<" => "\<", + ">" => "\>", + ); + if (strstr($tmpSearch, "'")) $tmpSearch = str_replace(array_keys($sr),array_values($sr), $tmpSearch); + $tmpName = $column['data']; + $tmpSearch = str_replace('_', '\\_', $tmpSearch); + $tmpSearch = str_replace('%', '\\$', $tmpSearch); + + $addWhere = "`{$tmpName}` like :{$tmpName}"; + $searchParams[":{$tmpName}"] = "%{$tmpSearch}%"; + $where[] = $addWhere; + } + } + + $searchTerms = (!empty($where)) ? implode(' AND ', $where) : 'TRUE'; + + // get search order + $oBy = array(); + + /** @noinspection PhpUndefinedVariableInspection */ + foreach ($order as $row) + { + $name = $columns[$row['column']]['data']; + if ($name == 'Delete') $name = 'id'; + $dir = $row['dir']; + $tmpOrder = "$name $dir"; + $oBy[] = $tmpOrder; + } + + $orderBy = implode(', ', $oBy); + + if (empty($oBy)) { + $orderBy = 'id'; + } + + /** @noinspection SqlDialectInspection */ + $countSQL = "SELECT count(id) FROM `aiml` WHERE `bot_id` = :bot_id AND ($searchTerms);"; + $count = db_fetch($countSQL, $searchParams, __FILE__, __FUNCTION__, __LINE__); + $total = $count['count(id)']; + + /** @noinspection SqlDialectInspection */ + /** @noinspection PhpUndefinedVariableInspection */ + $sql = "SELECT id, pattern, thatpattern, template, topic, filename FROM `aiml` WHERE `bot_id` = :bot_id AND ($searchTerms) order by $orderBy limit $start, $length;"; + $debugSQL = db_parseSQL($sql, $searchParams); + $result = db_fetchAll($sql, $searchParams, __FILE__, __FUNCTION__, __LINE__); + + /** @noinspection PhpUndefinedVariableInspection */ + $out = array( + 'draw' => $draw, + 'recordsTotal' => $total, + 'recordsFiltered' => $total, + 'data' => array() + ); + + if (empty($result)) + { + exit(json_encode($out)); + } + + foreach ($result as $index => $row) + { + $row['pattern'] = htmlentities($row['pattern'],ENT_NOQUOTES,'UTF-8'); + $row['topic'] = htmlentities($row['topic'],ENT_NOQUOTES,'UTF-8'); + $row['thatpattern'] = htmlentities($row['thatpattern'],ENT_NOQUOTES,'UTF-8'); + $row['template'] = htmlentities($row['template'],ENT_NOQUOTES,'UTF-8'); + $row['DT_RowId'] = $row['id']; + $out['data'][] = $row; + } + + return json_encode($out); +} + +/** + * Function updateAIML + * @return string + * @throws Exception + */ +function updateAIML() +{ + global $form_vars; + //if(ERROR_DEBUGGING) trigger_error('Form vars:' . print_r($form_vars, true)); + $template = trim($form_vars['template']); + $filename = trim($form_vars['filename']); + $pattern = _strtoupper(trim($form_vars['pattern'])); + $thatpattern = _strtoupper(trim($form_vars['thatpattern'])); + $topic = _strtoupper(trim($form_vars['topic'])); + $id = trim($form_vars['id']); + + if (($template == "") || ($pattern == "") || ($id == "")) + { + $msg = 'Please make sure you have entered a user input and bot response '; + } + else + { + /** @noinspection SqlDialectInspection */ + $sql = 'UPDATE `aiml` SET + `pattern`= :pattern, + `thatpattern`= :thatpattern, + `template`= :template, + `topic`= :topic, + `filename`= :filename + WHERE `id`= :id LIMIT 1;'; + + $params = array( + ':pattern' =>$pattern, + ':thatpattern' =>$thatpattern, + ':template' =>$template, + ':topic' =>$topic, + ':filename' =>$filename, + ':id' =>$id, + ); + + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + + if ($affectedRows > 0) + { + $msg = 'AIML Updated.'; + } + else { + $msg = 'Unable to update the AIML - no changes made.
    This is most likely because no changes were detected.'; + } + } + return $msg; +} + +/** + * Function insertAIML + * + * @throws Exception + * @return string + */ +function insertAIML() +{ + //db globals + global $msg, $form_vars, $bot_id; + + $aimltemplate = trim($form_vars['template']); + + $pattern = trim($form_vars['pattern']); + $pattern = _strtoupper($pattern); + + $thatpattern = trim($form_vars['thatpattern']); + $thatpattern = _strtoupper($thatpattern); + + $topic = trim($form_vars['topic']); + $topic = _strtoupper($topic); + + $filename = trim($form_vars['filename']); + if (empty($filename)) $filename = 'admin_added.aiml'; + + if (($pattern == "") || ($aimltemplate == "")) + { + $msg = 'You must enter a user input and bot response.'; + } + else + { + /** @noinspection SqlDialectInspection */ + $sql = "INSERT INTO `aiml` (`id`,`bot_id`, `pattern`, `thatpattern`, `template`, `topic`, `filename`) + values(NULL, :bot_id, :pattern, :thatpattern, :template, :topic, :filename)"; + $params = array( + ':bot_id' =>$bot_id, + ':pattern' =>$pattern, + ':thatpattern' =>$thatpattern, + ':template' =>$aimltemplate, + ':topic' =>$topic, + ':filename' =>$filename, + ); + //trigger_error(db_parseSQL($sql, $params)); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + + if ($affectedRows > 0) + { + $msg = "AIML added."; + } + else { + $msg = "AIML not updated - no changes made."; + } + } + + return $msg; +} diff --git a/admin/editAiml.php b/admin/editAiml.php new file mode 100644 index 0000000..bba0a53 --- /dev/null +++ b/admin/editAiml.php @@ -0,0 +1,33 @@ +getSection('EditAimlPage'); +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$rightNav = $template->getSection('RightNav'); +$main = $template->getSection('Main'); +$navHeader = $template->getSection('NavHeader'); +$FooterInfo = getFooter(); +$errMsgClass = (!empty ($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); +$headerTitle = 'Actions:'; +$pageTitle = 'My-Program O - Search/Edit AIML'; +$mainTitle = 'Search/Edit AIML' . $template->getSection('HelpLink'); +$showHelp = $template->getSection('editAIMLShowHelp'); +$mainContent = str_replace('[showHelp]', $showHelp, $mainContent); +$editScriptTemplate = ''; +$editScript = 'editAiml'; +$editScriptTag = str_replace('[editScript]', $editScript, $editScriptTemplate); + diff --git a/admin/editSRAI.php b/admin/editSRAI.php new file mode 100644 index 0000000..2d911c2 --- /dev/null +++ b/admin/editSRAI.php @@ -0,0 +1,284 @@ + "No session found"))); +} +// Open the DB +$action = (isset($form_vars['action'])) ? $form_vars['action'] : 'runSearch'; + +switch ($action) +{ + case 'add': + exit (insertSRAI()); + break; + case 'update': + exit (updateSRAI()); + break; + case 'del': + exit (delSRAI($form_vars['id'])); + break; + default: + exit (runSearch()); +} + +/** + * Function delSRAI + * + * * @param $id + * @return string + */ +function delSRAI($id) +{ + if ($id != "") + { + /** @noinspection SqlDialectInspection */ + $sql = "DELETE FROM `srai_lookup` WHERE `id` = :id LIMIT 1"; + $params = array(':id' => $id); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + + if ($affectedRows == 0) + { + $msg = 'Error SRAI couldn\'t be deleted - no changes made.'; + } + else { + $msg = 'Lookup entry has been deleted.'; + } + } + else { + $msg = 'Error" Lookup entry couldn\'t be deleted - no changes made.'; + } + + return $msg; +} + +/** + * Function runSearch + * + * @return mixed|string + */ +function runSearch() +{ + global $bot_id, $form_vars, $group; + + //file_put_contents(_LOG_PATH_ . "editSRAI.runSearch.form_vars.txt", print_r($form_vars, true)); + extract($form_vars); + + $search_fields = array('id', 'bot_id', 'pattern', 'template_id'); + $searchTerms = array(); + $searchParams = array(':bot_id' => $bot_id); + $where = array(); + + // parse column searches + foreach ($columns as $index => $column) + { + if ($column['data'] == 'Delete') + { + $column['data'] = 'id'; + } + + if (!empty($column['search']['value'])) + { + $tmpSearch = $column['search']['value']; + $tmpSearch = str_replace('_', '\\_', $tmpSearch); + $tmpSearch = str_replace('%', '\\$', $tmpSearch); + $tmpName = $column['data']; + $addWhere = "`$tmpName` like '%$tmpSearch%'"; + $where[] = $addWhere; + } + } + + $searchTerms = (!empty($where)) ? implode(' AND ', $where) : 'TRUE'; + + // get search order + $oBy = array(); + + foreach ($order as $row) + { + $name = $columns[$row['column']]['data']; + + if ($name == 'Delete') { + $name = 'id'; + } + + $dir = $row['dir']; + $tmpOrder = "$name $dir"; + $oBy[] = $tmpOrder; + } + + $orderBy = implode(', ', $oBy); + + if (empty($oBy)) + { + $orderBy = 'id'; + } + + /** @noinspection SqlDialectInspection */ + $countSQL = "SELECT count(id) FROM `srai_lookup` WHERE `bot_id` = :bot_id AND ($searchTerms);"; + + $count = db_fetch($countSQL, $searchParams, __FILE__, __FUNCTION__, __LINE__); + $total = $count['count(id)']; + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT id, bot_id, pattern, template_id FROM `srai_lookup` " . "WHERE `bot_id` = $bot_id AND ($searchTerms) ORDER BY $orderBy limit $start, $length;"; + //file_put_contents(_LOG_PATH_ . "editSRAI.runSearch.sql.txt", print_r($sql, true)); + $result = db_fetchAll($sql, $searchParams, __FILE__, __FUNCTION__, __LINE__); + + $out = array( + 'draw' => $draw, + 'recordsTotal' => $total, + 'recordsFiltered' => $total, + 'data' => array() + ); + //file_put_contents(_LOG_PATH_ . "editSRAI.runSearch.out1.txt", print_r($out, true)); + + if (empty($result)) + { + exit(json_encode($out)); + } + + foreach ($result as $index => $row) + { + $row['template_id'] = htmlentities($row['template_id']); + $row['DT_RowId'] = $row['id']; + $out['data'][] = $row; + } + //file_put_contents(_LOG_PATH_ . "editSRAI.runSearch.out.txt", print_r($out, true)); + return json_encode($out); +} + +/** + * Function updateSRAI + * + * @return string + */ +function updateSRAI() +{ + global $form_vars; + + $id = trim($form_vars['id']); + $bot_id = trim($form_vars['bot_id']); + $pattern = _strtoupper(trim($form_vars['pattern'])); + $template_id = trim($form_vars['template_id']); + + if (empty($bot_id) || empty($pattern) || empty($template_id)) + { + $msg = 'Please make sure that no fields are empty.([fields])'; + $fArray = array(); + + switch (true) + { + /** @noinspection PhpMissingBreakStatementInspection */ + case (empty($bot_id)): + $fields[] = 'bot_id'; + /** @noinspection PhpMissingBreakStatementInspection */ + case (empty($pattern)): + $fields[] = 'pattern'; + case (empty($template_id)): + $fields[] = 'template_id'; + } + + $fields = implode(', ', $fArray); + $msg = str_replace('[fields]', $fields, $msg); + } + else + { + $params = array( + ':id' => $id, + ':bot_id' => $bot_id, + ':pattern' => $pattern, + ':template_id' => $template_id + ); + + /** @noinspection SqlDialectInspection */ + $sql = "UPDATE `srai_lookup` SET `bot_id` = :bot_id, `pattern` = :pattern, `template_id` = :template_id WHERE `id` = :id;"; + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + if ($affectedRows > 0) + { + $msg = 'SRAI Updated.'; + } + else { + $msg = 'There was an error updating the SRAI - no changes made.'; + } + } + return $msg; +} + +/** + * Function insertSRAI + * + * @return string + */ +function insertSRAI() +{ + //db globals + global $msg, $form_vars; + + $bot_id = trim($form_vars['bot_id']); + $pattern = trim($form_vars['pattern']); + $pattern = _strtoupper($pattern); + $template_id = trim($form_vars['template_id']); + + /** @noinspection SqlDialectInspection */ + $sql = 'INSERT INTO `srai_lookup` (`id`, `bot_id`, `pattern`, `template_id`) VALUES (NULL, :bot_id, :pattern, :template_id);'; + $params = array( + ':bot_id' => $bot_id, + ':pattern' => $pattern, + ':template_id' => $template_id + ); + + if ((empty($bot_id) || empty($pattern) || empty($template_id))) + { + $msg = 'No fields can be empty.'; + } + else + { + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + + if ($affectedRows > 0) + { + $msg = "SRAI added."; + } + else { + $msg = "SRAI not updated - no changes made."; + } + } + + return $msg; +} + diff --git a/admin/editUDAJAX.php b/admin/editUDAJAX.php new file mode 100644 index 0000000..9cceefe --- /dev/null +++ b/admin/editUDAJAX.php @@ -0,0 +1,277 @@ + "No session found"))); +} + +$action = (isset($form_vars['action'])) ? $form_vars['action'] : 'runSearch'; + +switch ($action) +{ + case 'add': + exit (insertAIML()); + break; + case 'update': + exit (updateAIML()); + break; + case 'del': + exit (delAIML($form_vars['id'])); + break; + default: + exit (runSearch()); +} + +/** + * Function delAIML + * + * @param $id + * @return string + */ +function delAIML($id) +{ + if ($id != "") + { + /** @noinspection SqlDialectInspection */ + $sql = "DELETE FROM `aiml_userdefined` WHERE `id` = :id LIMIT 1"; + $params = array(':id' => $id); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + + if ($affectedRows == 0) + { + $msg = 'Error AIML couldn\'t be deleted - no changes made.'; + } + else { + $msg = 'AIML has been deleted.'; + } + } + else { + $msg = 'Error AIML couldn\'t be deleted - no changes made.'; + } + + return $msg; +} + +/** + * Function runSearch + * + * @return mixed|string + */ +function runSearch() +{ + global $bot_id, $form_vars, $group; + save_file(_LOG_PATH_ . 'editUDajax.runSearch.form_vars.txt', print_r($form_vars, true)); + extract($form_vars); + + $search_fields = array('user_id', 'pattern', 'template', 'thatpattern'); + $searchTerms = array(); + $searchParams = array(':bot_id' => $bot_id); + $where = array(); + + // parse column searches + /** @noinspection PhpUndefinedVariableInspection */ + foreach ($columns as $index => $column) + { + if ($column['data'] == 'Delete') { + $column['data'] = 'id'; + } + + if (!empty($column['search']['value'])) + { + $tmpSearch = $column['search']['value']; + $tmpSearch = str_replace('_', '\\_', $tmpSearch); + $tmpSearch = str_replace('%', '\\$', $tmpSearch); + + //if ($tmpSearch == '_') $tmpSearch = '\\_'; + $tmpName = $column['data']; + $addWhere = "`$tmpName` like '%$tmpSearch%'"; + $where[] = $addWhere; + } + } + + $searchTerms = (!empty($where)) ? implode(' AND ', $where) : 'TRUE'; + + // get search order + $oBy = array(); + + /** @noinspection PhpUndefinedVariableInspection */ + foreach ($order as $row) + { + $name = $columns[$row['column']]['data']; + if ($name == 'Delete') $name = 'id'; + $dir = $row['dir']; + $tmpOrder = "$name $dir"; + $oBy[] = $tmpOrder; + } + + $orderBy = implode(', ', $oBy); + + if (empty($oBy)) { + $orderBy = 'id'; + } + + /** @noinspection SqlDialectInspection */ + $countSQL = "SELECT count(id) FROM `aiml_userdefined` WHERE `bot_id` = :bot_id AND ($searchTerms);"; + $count = db_fetch($countSQL, $searchParams, __FILE__, __FUNCTION__, __LINE__); + $total = $count['count(id)']; + + /** @noinspection SqlDialectInspection */ + /** @noinspection PhpUndefinedVariableInspection */ + $sql = "SELECT id, user_id, pattern, thatpattern, template FROM `aiml_userdefined` " . "WHERE `bot_id` = :bot_id AND ($searchTerms) order by $orderBy limit $start, $length;"; // + $debugSQL = db_parseSQL($sql, $searchParams); + file_put_contents(_LOG_PATH_ . 'editUDAJAX.sql.txt', $debugSQL); + $result = db_fetchAll($sql, $searchParams, __FILE__, __FUNCTION__, __LINE__); + save_file(_LOG_PATH_ . 'editUDajax.' . __FUNCTION__ . '.result.txt', print_r($result, true)); + + /** @noinspection PhpUndefinedVariableInspection */ + $out = array( + 'draw' => $draw, + 'recordsTotal' => $total, + 'recordsFiltered' => $total, + 'data' => array() + ); + + if (empty($result)) + { + exit(json_encode($out)); + } + + foreach ($result as $index => $row) + { + $row['pattern'] = htmlentities($row['pattern'],ENT_NOQUOTES,'UTF-8'); + $row['user_id'] = htmlentities($row['user_id'],ENT_NOQUOTES,'UTF-8'); + $row['thatpattern'] = htmlentities($row['thatpattern'],ENT_NOQUOTES,'UTF-8'); + $row['template'] = htmlentities($row['template'],ENT_NOQUOTES,'UTF-8'); + $row['DT_RowId'] = $row['id']; + $out['data'][] = $row; + } + + return json_encode($out); +} + +/** + * Function updateAIML + * @return string + * @throws Exception + */ +function updateAIML() +{ + global $form_vars; + + $template = trim($form_vars['template']); + $pattern = _strtoupper(trim($form_vars['pattern'])); + $thatpattern = _strtoupper(trim($form_vars['thatpattern'])); + $user_id = _strtoupper(trim($form_vars['user_id'])); + $id = trim($form_vars['id']); + + if (($template == "") || ($pattern == "") || ($id == "")) + { + $msg = 'Please make sure you have entered a user input and bot response '; + } + else + { + /** @noinspection SqlDialectInspection */ + $sql = "UPDATE `aiml_userdefined` SET `pattern`=?,`thatpattern`=?,`template`=?,`user_id`=? WHERE `id`=? LIMIT 1"; + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + if ($affectedRows > 0) + { + $msg = 'AIML Updated.'; + } + else { + $msg = 'There was an error updating the AIML - no changes made.'; + } + } + return $msg; +} + +/** + * Function insertAIML + * + * @throws Exception + * @return string + */ +function insertAIML() +{ + //db globals + global $msg, $form_vars, $bot_id; + + $aiml = "[pattern][thatpattern]"; + $aimltemplate = trim($form_vars['template']); + + $pattern = trim($form_vars['pattern']); + $pattern = _strtoupper($pattern); + + $thatpattern = trim($form_vars['thatpattern']); + $thatpattern = _strtoupper($thatpattern); + + $aiml = str_replace('[pattern]', $pattern, $aiml); + $aiml = (empty ($thatpattern)) ? str_replace('[thatpattern]', "$thatpattern", $aiml) : $aiml; + $aiml = str_replace('[template]', $aimltemplate, $aiml); + + $user_id = trim($form_vars['user_id']); + $user_id = _strtoupper($user_id); + + if (($pattern == "") || ($aimltemplate == "")) + { + $msg = 'You must enter a user input and bot response.'; + } + else + { + /** @noinspection SqlDialectInspection */ + $sql = 'INSERT INTO `aiml_userdefined` (`id`,`bot_id`,`user_id`, `pattern`,`thatpattern`,`template`) VALUES (NULL, :bot_id, :user_id, :pattern, :thatpattern, :aimltemplate);'; + $params = array( + ':bot_id' => $bot_id, + ':user_id' => $user_id, + ':pattern' => $pattern, + ':thatpattern' => $thatpattern, + ':template' => $template, + ); + + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + + if ($affectedRows > 0) + { + $msg = "AIML added."; + } + else { + $msg = "AIML not updated - no changes made."; + } + } + + return $msg; +} + + diff --git a/admin/editUDAiml.php b/admin/editUDAiml.php new file mode 100644 index 0000000..0667280 --- /dev/null +++ b/admin/editUDAiml.php @@ -0,0 +1,33 @@ +getSection('EditUDAimlPage'); +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$rightNav = $template->getSection('RightNav'); +$main = $template->getSection('Main'); +$navHeader = $template->getSection('NavHeader'); +$FooterInfo = getFooter(); +$errMsgClass = (!empty ($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); +$headerTitle = 'Actions:'; +$pageTitle = 'My-Program O - Search/Edit User Defined AIML'; +$mainTitle = 'Search/Edit AIML' . $template->getSection('HelpLink'); +$showHelp = $template->getSection('editAIMLShowHelp'); +$mainContent = str_replace('[showHelp]', $showHelp, $mainContent); +$editScriptTemplate = ''; +$editScript = 'editUDAiml'; +$editScriptTag = str_replace('[editScript]', $editScript, $editScriptTemplate); + diff --git a/admin/file.php b/admin/file.php index 74b993c..1b4e531 100644 --- a/admin/file.php +++ b/admin/file.php @@ -1,48 +1,86 @@ -$req_file doesn't exist."; - exit; -} - -if (empty($_GET['send_file'])) { - header("Refresh: 5; url=$whoami?file=$req_file&send_file=yes"); -} -else { - header('Content-Description: File Transfer'); - header('Content-Type: application/force-download'); - header('Content-Length: ' . filesize("$fileserver_path/$req_file")); - header('Content-Disposition: attachment; filename=' . $req_file); - #readfile("$fileserver_path/$req_file"); - print file_get_contents("$fileserver_path/$req_file"); - exit; -} -header("Location: $pageBack"); -?> - + FILTER_DEFAULT, + //see http://php.net/manual/en/filter.constants.php for available options +); +$get_vars = clean_inputs($allowed_get_vars); + +// For single AIML files +if(isset($get_vars['singlefile'])) +{ + $filename = $get_vars['singlefile']; + + header('Content-Description: File Transfer'); + header('Content-Type: application/force-download'); + header('Content-Length: ' . filesize("$fileserver_path/$filename")); + header('Content-Disposition: attachment; filename=' . $filename); + + print file_get_contents("$fileserver_path/$filename"); + + exit; +} + +if (strstr($pageBack, 'google') !== false) +{ + header("Location: $pageBack"); + exit; +} +else +{ + header('Content-Description: File Transfer'); + header('Content-Type: application/force-download'); + header('Content-Length: ' . filesize("$fileserver_path/$req_file")); + header('Content-Disposition: attachment; filename=' . $req_file); + + print file_get_contents("$fileserver_path/$req_file"); + // Remove the created file after downloading + //unlink("$fileserver_path/$req_file"); + exit; +} + +/** @noinspection PhpUnreachableStatementInspection */ +header("Location: $pageBack"); \ No newline at end of file diff --git a/admin/formTest.php b/admin/formTest.php deleted file mode 100644 index e0412a8..0000000 --- a/admin/formTest.php +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    -
    -
    - - \ No newline at end of file diff --git a/admin/images/closeButton.png b/admin/images/closeButton.png new file mode 100644 index 0000000..3c82387 Binary files /dev/null and b/admin/images/closeButton.png differ diff --git a/admin/images/html5_valid.png b/admin/images/html5_valid.png new file mode 100644 index 0000000..73a90bc Binary files /dev/null and b/admin/images/html5_valid.png differ diff --git a/admin/images/index.html b/admin/images/index.html index f9055b0..af3abc5 100644 --- a/admin/images/index.html +++ b/admin/images/index.html @@ -1,10 +1,10 @@ - - - - -My Program-O - - - - - + + + + +My Program-O + + + + + diff --git a/admin/images/progressbar.gif b/admin/images/progressbar.gif new file mode 100644 index 0000000..e613613 Binary files /dev/null and b/admin/images/progressbar.gif differ diff --git a/admin/images/progressbar_orange.gif b/admin/images/progressbar_orange.gif new file mode 100644 index 0000000..3dff9bd Binary files /dev/null and b/admin/images/progressbar_orange.gif differ diff --git a/admin/images/quote.gif b/admin/images/quote.gif new file mode 100644 index 0000000..d199227 Binary files /dev/null and b/admin/images/quote.gif differ diff --git a/admin/images/sort_asc.png b/admin/images/sort_asc.png new file mode 100644 index 0000000..a88d797 Binary files /dev/null and b/admin/images/sort_asc.png differ diff --git a/admin/images/sort_both.png b/admin/images/sort_both.png new file mode 100644 index 0000000..1867040 Binary files /dev/null and b/admin/images/sort_both.png differ diff --git a/admin/images/sort_desc.png b/admin/images/sort_desc.png new file mode 100644 index 0000000..def071e Binary files /dev/null and b/admin/images/sort_desc.png differ diff --git a/admin/images/valid-xhtml10.png b/admin/images/valid-xhtml10.png deleted file mode 100644 index b81de91..0000000 Binary files a/admin/images/valid-xhtml10.png and /dev/null differ diff --git a/admin/index.php b/admin/index.php index 7982ad3..f2e7a0f 100644 --- a/admin/index.php +++ b/admin/index.php @@ -1,436 +1,661 @@ -getSection('Logo'); - $titleSpan = $template->getSection('TitleSpan'); - $main = $template->getSection('Main'); - $divDecoration = $template->getSection('DivDecoration'); - $mainContent = $template->getSection('LoginForm'); - $noLeftNav = $template->getSection('NoLeftNav'); - $noRightNav = $template->getSection('NoRightNav'); - $navHeader = $template->getSection('NavHeader'); - $footer = $template->getSection('Footer'); - $topNav = ''; - $leftNav = ''; - $rightNav = ''; - $rightNavLinks = ''; - $lowerScripts = $template->getSection('LogoLinkScript'); - $pageTitleInfo = ''; - #$topNavLinks = makeLinks('top', $topLinks, 12); - $topNavLinks = ''; - $leftNavLinks = ''; - $mediaType = ' media="screen"'; - $mainTitle = 'Program O Login'; - $FooterInfo = '

    © 2011 My Program-O
    www.program-o.com

    '; - $headerTitle = ''; - $pageTitle = 'My-Program O - Login'; - $upperScripts = ''; - - if((isset($_POST['uname']))&&(isset($_POST['pw']))) { - $_SESSION['poadmin']['display'] = $hide_logo; - $uname = mysql_escape_string(strip_tags(trim($_POST['uname']))); - $pw = mysql_escape_string(strip_tags(trim($_POST['pw']))); - $dbconn = db_open(); - $sql = "SELECT * FROM `myprogramo` WHERE uname = '".$uname."' AND pword = '".MD5($pw)."'"; - $result = mysql_query($sql,$dbconn) or die ("mySQL error:" . mysql_error($dbconn)); - $count = mysql_num_rows($result); - $msg =""; - if($count>0) { - $row=mysql_fetch_array($result); - $_SESSION['poadmin']['uid']=$row['id']; - $_SESSION['poadmin']['name']=$row['uname']; - $_SESSION['poadmin']['lip']=$row['lastip']; - $_SESSION['poadmin']['llastlogin']=date('l jS \of F Y h:i:s A', strtotime($row['lastlogin'])); - if(!empty($_SERVER['HTTP_CLIENT_IP'])) { //check ip from share internet - $ip=$_SERVER['HTTP_CLIENT_IP']; - } - elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //to check ip is pass from proxy - $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; - } - else { - $ip=$_SERVER['REMOTE_ADDR']; - } - $sqlupdate = "UPDATE `myprogramo` SET `lastip` = '$ip', `lastlogin` = CURRENT_TIMESTAMP WHERE uname = '$uname' limit 1"; - //echo $sql; - $result = mysql_query($sqlupdate,$dbconn); - $transact = mysql_affected_rows($dbconn); - $_SESSION['poadmin']['ip']=$ip; - $_SESSION['poadmin']['lastlogin']=date('l jS \of F Y h:i:s A'); - $sql = "SELECT * FROM `bots` WHERE bot_active = '1' ORDER BY bot_id ASC LIMIT 1"; - $result = mysql_query($sql,$dbconn); - $count = mysql_num_rows($result); - $msg =""; - if($count>0) { - $row=mysql_fetch_array($result); - $_SESSION['poadmin']['bot_id']=$row['bot_id']; - $_SESSION['poadmin']['bot_name']=$row['bot_name']; - } - else { - $_SESSION['poadmin']['bot_id']=-1; - $_SESSION['poadmin']['bot_name']="unknown"; - } - } - else { - $msg = "incorrect username/password"; - } - mysql_close($dbconn); - if($msg == "") { - include ('main.php'); - } - } - elseif(isset($_GET['msg'])) { - $msg = htmlentities($_GET['msg']); - } - elseif(isset($_GET['page'])) { - $curPage = $_GET['page']; - if ($curPage == 'logout') { - if(isset($_COOKIE[session_name()])) { - setcookie(session_name(), '', time()-42000, '/'); - } - session_destroy(); - //header('location: ./'); - } - else { - $_SESSION['poadmin']['curPage'] = $curPage; - include ("$curPage.php"); - } - } - $curPage = (isset($curPage)) ? $curPage : 'main'; - $upperScripts .= ($hide_logo == 'HideLogoCSS') ? $template->getSection('HideLogoCSS') : ''; - - # Build page content from the template - $content = $template->getSection('Header'); - #$content .= "hide_logo = $hide_logo"; - $content .= $template->getSection('PageBody'); - - # Replace template labels with real data - $styleSheet = 'style.css'; - $errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgClass); -/* These are the most common template replacement tags used. Any additional - replacement tags should be handled in the include file for the current page, - in a function named replaceTags(&$content). This function will alter the - $content variable directly, rather than change it and then return it. -*/ - $searches = array( - '[myPage]' => $curPage, - '[pageTitle]' => $pageTitle, - '[styleSheet]' => $styleSheet, - '[mediaType]' => $mediaType, - '[upperScripts]' => $upperScripts, - '[logo]' => $logo, - '[pageTitleInfo]' => $pageTitleInfo, - '[topNav]' => $topNav, - '[leftNav]' => $leftNav, - '[rightNav]' => $rightNav, - '[main]' => $main, - '[rightNav]' => $rightNav, - '[footer]' => $footer, - '[lowerScripts]' => $lowerScripts, - '[pageTitleInfo]' => $pageTitleInfo, - '[titleSpan]' => $titleSpan, - '[divDecoration]' => $divDecoration, - '[topNavLinks]' => $topNavLinks, - '[navHeader]' => $navHeader, - '[leftNavLinks]' => $leftNavLinks, - '[mainTitle]' => $mainTitle, - '[mainContent]' => $mainContent, - '[rightNavLinks]' => $rightNavLinks, - '[FooterInfo]' => $FooterInfo, - '[headerTitle]' => $headerTitle, - '[errMsg]' => $msg, - '[bot_id]' => $bot_id, - '[bot_name]' => $bot_name, - '[errMsgStyle]' => $errMsgStyle, - '[noRightNav]' => $noRightNav, - '[noLeftNav]' => $noLeftNav - ); - foreach ($searches as $search => $replace) { - $content = str_replace($search, $replace, $content); - } - $content = str_replace('[myPage]', $curPage, $content); - $content = str_replace('[divDecoration]', $divDecoration, $content); - $content = str_replace('[blank]', '', $content); - if(function_exists('replaceTags')) replaceTags($content); // Handle any extra replacement tags, as needed. - #die ('
    ' . print_r($_SESSION, true) . "

    \ndisplay = $hide_logo
    \n"); - exit($content); - - function makeLinks($section, $linkArray, $spaces = 2) { - #print "\n"; - global $template, $curPage; - $curPage = (empty($curPage)) ? 'main' : $curPage; - $botName = (isset($_SESSION['poadmin']['bot_name'])) ? $_SESSION['poadmin']['bot_name'] : 'unknown'; - $out = ''; - # [linkClass][linkHref][linkOnclick][linkAlt][linkTitle]>[linkLabel] - $linkText = $template->getSection('NavLink'); - foreach ($linkArray as $needle) { - $tmp = $linkText; - foreach ($needle as $search => $replace) { - $tmp = str_replace($search, $replace, $tmp); - } - $linkClass = $needle['[linkHref]']; - $linkClass = str_replace(' href="./?page=', '', $linkClass); - $linkClass = str_replace('"', '', $linkClass); - #die ("linkClass = $linkClass
    \nstrstr = $sp
    \n"); - #$curClass = ($linkClass == $curPage) ? 'selected' : 'noClass'; - $curClass = ($linkClass == $curPage) ? 'selected' : 'noClass'; - if ($curPage == 'main') $curClass = (stripos($linkClass,'main') !== false) ? 'selected' : 'noClass'; -/* -*/ - $tmp = str_replace('[curClass]', $curClass, $tmp); - $out .= "$tmp\n"; - } - #print "\n"; - $out = str_replace('[curBot]', $botName, $out); - return trim($out); - } - - - function getFooter() { - $ip = $_SERVER['REMOTE_ADDR']; - $name = $_SESSION['poadmin']['name']; - $lip = $_SESSION['poadmin']['lip']; - $last = $_SESSION['poadmin']['lastlogin']; - $llast = $_SESSION['poadmin']['llastlogin']; - $admess = "You are logged in as: $name from $ip since: $last"; - $admess .= "
    You last logged in from $lip on $llast"; - $today = date("Y"); - $out = <<© $today My Program-O
    $admess

    -endFooter; - return $out; - } - - function makeTopLinks() { - $out = array( - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=main"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Home"', - '[linkTitle]' => ' title="Home"', - '[linkLabel]' => 'Home' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="http://www.program-o.com/"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Get the latest news from the Program O website"', - '[linkTitle]' => ' title="Get the latest news from the Program O website"', - '[linkLabel]' => 'News' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="http://www.program-o.com/ns/faq/"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="The Program O User\'s Guide"', - '[linkTitle]' => ' title="The Program O User\'s Guide"', - '[linkLabel]' => 'Documentation' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=bugs"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Bug reporting"', - '[linkTitle]' => ' title="Bug reporting"', - '[linkLabel]' => 'Bug Reporting' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=stats"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Get bot statistics"', - '[linkTitle]' => ' title="Get bot statistics"', - '[linkLabel]' => 'Stats' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="http://www.program-o.com/support/"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Get support for Program O"', - '[linkTitle]' => ' title="Get support for Program O"', - '[linkLabel]' => 'Support' - ), - array( - '[linkClass]' => '', - '[linkHref]' => ' href="./?page=logout"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Log out"', - '[linkTitle]' => ' title="Log out"', - '[linkLabel]' => 'Log Out' - ) - ); - return $out; - } - function makeLeftLinks() { - $out = array( - array( # Change bot - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=select_bots"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Change or edit the current bot"', - '[linkTitle]' => ' title="Change or edit the current bot"', - '[linkLabel]' => 'Change/Edit Bot: ([curBot])' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=bots"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Edit your bot\'s personality"', - '[linkTitle]' => ' title="Edit your bot\'s personality"', - '[linkLabel]' => 'Bot Personality' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=logs"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="View the log files"', - '[linkTitle]' => ' title="View the log files"', - '[linkLabel]' => 'Logs' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=teach"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Train your bot"', - '[linkTitle]' => ' title="Train your bot"', - '[linkLabel]' => 'Teach' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=upload"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Upload AIML files"', - '[linkTitle]' => ' title="Upload AIML files"', - '[linkLabel]' => 'Upload AIML' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=download"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Download AIML files"', - '[linkTitle]' => ' title="Download AIML files"', - '[linkLabel]' => 'Download AIML' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=clear"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Clear AIML Categories"', - '[linkTitle]' => ' title="Clear AIML Categories"', - '[linkLabel]' => 'Clear AIML Categories' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=spellcheck"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Edit the SpellCheck entries"', - '[linkTitle]' => ' title="Edit the SpellCheck entries"', - '[linkLabel]' => 'Spell Check' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=wordcensor"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Edit the Word Censor entries"', - '[linkTitle]' => ' title="Edit the Word Censor entries"', - '[linkLabel]' => 'Word Censor' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=search"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Search and edit specific AIML categories"', - '[linkTitle]' => ' title="Search and edit specific AIML categories"', - '[linkLabel]' => 'Search/Edit AIML' - ), - array( - '[linkClass]' => ' class="[curClass]"', - '[linkHref]' => ' href="./?page=demochat"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Run a demo version of your bot"', - '[linkTitle]' => ' title="Run a demo version of your bot"', - '[linkLabel]' => 'Demo Chat' - ), - array( - '[linkClass]' => '', - '[linkHref]' => ' href="./?page=members"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Edit Admin Accounts"', - '[linkTitle]' => ' title="Edit Admin Accounts"', - '[linkLabel]' => 'Edit Admin Accounts' - ), - array( - '[linkClass]' => '', - '[linkHref]' => ' href="./?page=logout"', - '[linkOnclick]' => '', - '[linkAlt]' => ' alt="Log out"', - '[linkTitle]' => ' title="Log out"', - '[linkLabel]' => 'Log Out' - ), - array( - '[linkClass]' => '', - '[linkHref]' => ' href="#"', - '[linkOnclick]' => ' onclick="toggleLogo(); return false;"', - '[linkAlt]' => ' alt="Toggle the Logo"', - '[linkTitle]' => ' title="Toggle the Logo"', - '[linkLabel]' => 'Toggle the Logo' - ) - ); - return $out; - } - -?> + 'Master', + 'dev' => 'Development', + 'person' => 'Person Tag Testing', +); + +$editScript = ''; +$editScriptTag = ''; +// Set session parameters +$session_name = 'PGO_Admin'; +session_name($session_name); +session_start(); +$msg = ''; + +// Get form inputs +$page = filter_input(INPUT_GET, 'page', FILTER_SANITIZE_STRING); +$page = ($page === false || $page === null) ? 'main' : $page; + +if (!array_key_exists($page, $allowed_pages)) +{ + $msg = 'Invalid argument!'; +} + +$allowed_functions_array = array('updateBot','addBotPersonality','getBot','showBugForm','sendMail'); +$allowed_input_vars = (isset($allowed_pages[$page])) ? $allowed_pages[$page] : array(); +$form_vars = clean_inputs($allowed_input_vars); + +// Set default values +$bot_name = 'not selected'; +$hide_logo = ''; +$curPage = ''; +$branch = (!empty($_SESSION['useBranch'])) ? $_SESSION['useBranch'] : 'master'; + +// Begin script execution +$thisPath = dirname(__FILE__); +$template = new Template("$thisPath/default.page.htm"); +$githubVersion = trim(getCurrentVersion($branch)); +$currentLocalVersion = VERSION; + +$upToDate = <<Program O +
    Current Local Version: $currentLocalVersion
    +
    Current GitHub Version: $githubVersion
    +
    Current Branch: {$branches[$branch]}
    + +endUTD; + +$newVersionAvailable = "Program O $githubVersion is now available for the " + . $branches[$branch] . ' branch. Click here to download it.
    (You are currently using version ' . VERSION . ' of the ' + . $branches[$branch] . ' branch)'; + +$version = (version_compare(VERSION, $githubVersion, '>=')) ? $upToDate : $newVersionAvailable; + +if ($page == 'logout') +{ + logout(); +} + +$logged_in = getLoginStatus(); +$curPage = 'logout'; + +switch ($logged_in) +{ + case true: + $curPage = (isset($form_vars['page'])) ? $form_vars['page'] : 'main'; + break; + default: + $curPage = (isset($form_vars['page']) && $form_vars['page'] == 'login') ? login() : 'logout'; +} + +$name = (isset($_SESSION['poadmin']['name'])) ? $_SESSION['poadmin']['name'] : ''; +$ip = (isset($_SESSION['poadmin']['ip'])) ? $_SESSION['poadmin']['ip'] : ''; +$last = (isset($_SESSION['poadmin']['last_login'])) ? $_SESSION['poadmin']['last_login'] : ''; +$lip = (isset($_SESSION['poadmin']['lip'])) ? $_SESSION['poadmin']['lip'] : ''; +$llast = (isset($_SESSION['poadmin']['prior_login'])) ? $_SESSION['poadmin']['prior_login'] : ''; +$bot_name = (isset($_SESSION['poadmin']['bot_name'])) ? $_SESSION['poadmin']['bot_name'] : $bot_name; +$bot_id = (isset($_SESSION['poadmin']['bot_id'])) ? $_SESSION['poadmin']['bot_id'] : 1; +$hide_logo = (isset($_SESSION['display'])) ? $_SESSION['display'] : ''; +$bot_format = (isset($_SESSION['poadmin']['bot_format'])) ? $_SESSION['poadmin']['bot_format'] : ''; + + +# Build page sections +# ordered here in the order that the page is constructed +$logo = $template->getSection('Logo'); +$titleSpan = $template->getSection('TitleSpan'); +$main = $template->getSection('Main'); +$divDecoration = ''; +$mainContent = $template->getSection('LoginForm'); +$noLeftNav = $template->getSection('NoLeftNav'); +$noRightNav = $template->getSection('NoRightNav'); +$navHeader = $template->getSection('NavHeader'); +$footer = $template->getSection('Footer'); +$topNav = ''; +$leftNav = ''; +$rightNav = ''; +$rightNavLinks = ''; +$lowerScripts = $template->getSection('LogoLinkScript'); +$pageTitleInfo = ''; +$topNavLinks = makeLinks('top', makeTopLinks()); +$leftNavLinks = makeLinks('left', makeLeftLinks()); +$mediaType = ' media="screen"'; +$mainTitle = 'Program O Login'; +$FooterInfo = '

    © 2011-2014 My Program-O
    www.program-o.com

    '; +$headerTitle = ''; +$pageTitle = 'My-Program O - Login'; +$upperScripts = ''; +$extraCSS = ''; + +//if we get to the login page and we are still actually logged in +//just destroy the session to prevent weirdness +if ($curPage == 'login' && !empty($_SESSION['poadmin']['logged_in'])) +{ + $_SESSION = array(); +} + +$_SESSION['poadmin']['curPage'] = $curPage; +($curPage != 'logout' || $curPage == 'login') ? require_once("{$curPage}.php") : false; + +$bot_format_link = (!empty($bot_format)) ? "&format=$bot_format" : ''; +$curPage = (isset($curPage)) ? $curPage : 'main'; +$upperScripts .= ($hide_logo == 'HideLogoCSS') ? $template->getSection('HideLogoCSS') : ''; + + +# Build page content from the template + +$content = $template->getSection('Header'); +#$content .= "hide_logo = $hide_logo"; +$content .= $template->getSection('PageBody'); + +# Replace template labels with real data +$styleSheet = 'style.css'; +$errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$bot_id = ($bot_id == 'new') ? 0 : $bot_id; + +switch ($branch) +{ + case 'master': + $bSelOptD = ''; + $bSelOptM = ' selected="selected"'; + break; + default: + $bSelOptD = ' selected="selected"'; + $bSelOptM = ''; +} +$searches = array( + '[charset]' => $charset, + '[myPage]' => $curPage, + '[pageTitle]' => $pageTitle, + '[styleSheet]' => $styleSheet, + '[mediaType]' => $mediaType, + '[extraCSS]' => $extraCSS, + '[upperScripts]' => $upperScripts, + '[logo]' => $logo, + '[pageTitleInfo]' => $pageTitleInfo, + '[topNav]' => $topNav, + '[leftNav]' => $leftNav, + '[rightNav]' => $rightNav, + '[main]' => $main, + '[footer]' => $footer, + '[lowerScripts]' => $lowerScripts, + '[titleSpan]' => $titleSpan, + '[divDecoration]' => $divDecoration, + '[topNavLinks]' => $topNavLinks, + '[navHeader]' => $navHeader, + '[leftNavLinks]' => $leftNavLinks, + '[mainTitle]' => $mainTitle, + '[mainContent]' => $mainContent, + '[rightNavLinks]' => $rightNavLinks, + '[FooterInfo]' => $FooterInfo, + '[headerTitle]' => $headerTitle, + '[errMsg]' => $msg, + '[bot_id]' => $bot_id, + '[bot_name]' => $bot_name, + '[errMsgStyle]' => $errMsgStyle, + '[noRightNav]' => $noRightNav, + '[noLeftNav]' => $noLeftNav, + '[version]' => $version, + '[branch]' => $branches[$branch], + '[bSelOptD]' => $bSelOptD, + '[bSelOptM]' => $bSelOptM, + '[bot_format_link]' => $bot_format_link, + '[editScriptTag]' => $editScriptTag, +); + +foreach ($searches as $search => $replace) +{ + $content = str_replace($search, $replace, $content); +} + +$content = str_replace('[myPage]', $curPage, $content); +$content = str_replace('[divDecoration]', $divDecoration, $content); +$content = str_replace('[blank]', '', $content); + + pgo_session_gc(); + exit($content); + +/** + * Function makeLinks + * + * @param $section + * @param $linkArray + * @return string + */ +function makeLinks($section, $linkArray) +{ + $out = "\n"; + global $template, $curPage; + + $curPage = (empty($curPage)) ? 'main' : $curPage; + $botName = (isset($_SESSION['poadmin']['bot_name'])) ? $_SESSION['poadmin']['bot_name'] : 'not selected'; + $botId = (isset($_SESSION['poadmin']['bot_id'])) ? $_SESSION['poadmin']['bot_id'] : 1; + $botId = ($botId == 'new') ? 1 : $botId; + # [linkClass][linkHref][linkOnclick][linkAlt][linkTitle]>[linkLabel] + $linkText = $template->getSection('NavLink'); + + foreach ($linkArray as $needle) + { + $tmp = $linkText; + + foreach ($needle as $search => $replace) + { + $tmp = str_replace($search, $replace, $tmp); + } + + $linkClass = $needle['[linkHref]']; + $linkClass = str_replace(' href="index.php?page=', '', $linkClass); + $linkClass = str_replace('"', '', $linkClass); + $curClass = ($linkClass == $curPage) ? 'selected' : 'noClass'; + + if ($curPage == 'main') + { + $curClass = (stripos($linkClass, 'main') !== false) ? 'selected' : 'noClass'; + } + + $tmp = str_replace('[curClass]', $curClass, $tmp); + $out .= "$tmp\n"; + } + #print "\n"; + $strippedBotName = preg_replace('~\(.*?)\~', '$1', $botName); + $out = str_replace('[botId]', $botId, $out); + $out = str_replace('[curBot]', $botName, $out); + $out = str_replace('[curBot2]', $strippedBotName, $out); + + return trim($out); +} + + +/** + * Function makeTopLinks + * + * @return array + */ +function makeTopLinks() +{ + $out = array( + + array( + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="' . DOCS_URL . '"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="The Program O User\'s Guide"', + '[linkTitle]' => ' title="The Program O User\'s Guide"', + '[linkLabel]' => 'Documentation' + ), + array( + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="https://github.com/Program-O/Program-O/issues"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Bug reporting"', + '[linkTitle]' => ' title="Bug reporting"', + '[linkLabel]' => 'Bug Reporting' + ), + array( + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=stats"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Get bot statistics"', + '[linkTitle]' => ' title="Get bot statistics"', + '[linkLabel]' => 'Stats' + ), + array( + '[linkClass]' => '', + '[linkHref]' => ' href="index.php?page=logout"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Log out"', + '[linkTitle]' => ' title="Log out"', + '[linkLabel]' => 'Log Out' + ) + ); + return $out; +} + +/** + * Function makeLeftLinks + * + * @return array + */ +function makeLeftLinks() +{ + $out = array( + array( # Change bot + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Admin Home"', + '[linkTitle]' => ' title="Admin Home"', + '[linkLabel]' => 'Home' + ), + array( # Home + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=select_bots"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Change or edit the current bot"', + '[linkTitle]' => ' title="Change or edit the current bot"', + '[linkLabel]' => 'Current Bot: ([curBot])' + ), + array( # Bot Personality + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=botpersonality"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Edit your bot\'s personality"', + '[linkTitle]' => ' title="Edit your bot\'s personality"', + '[linkLabel]' => 'Bot Personality' + ), + array( # Conversation Logs + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=logs"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="View the Conversation Logs"', + '[linkTitle]' => ' title="View the Conversation Logs"', + '[linkLabel]' => 'Conversation Logs' + ), + array( # Unknown inputs + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=unknown_inputs"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="View Unknown Inputs for this bot"', + '[linkTitle]' => ' title="View Unknown Inputs"', + '[linkLabel]' => 'Unknown Inputs' + ), + array( # Teach + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=teach"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Train your bot"', + '[linkTitle]' => ' title="Train your bot"', + '[linkLabel]' => 'Teach' + ), + array( # Upload AIML + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=upload"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Upload AIML files"', + '[linkTitle]' => ' title="Upload AIML files"', + '[linkLabel]' => 'Upload AIML' + ), + array( # Download AIML + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=download"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Download AIML files"', + '[linkTitle]' => ' title="Download AIML files"', + '[linkLabel]' => 'Download AIML' + ), + array( # Clear AIML categories + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=clear"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Clear AIML Categories"', + '[linkTitle]' => ' title="Clear AIML Categories"', + '[linkLabel]' => 'Clear AIML Categories' + ), + array( # Spellcheck + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=spellcheck"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Edit the SpellCheck entries"', + '[linkTitle]' => ' title="Edit the SpellCheck entries"', + '[linkLabel]' => 'Spell Check' + ), + array( # Word censor + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=wordcensor"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Edit the Word Censor entries"', + '[linkTitle]' => ' title="Edit the Word Censor entries"', + '[linkLabel]' => 'Word Censor' + ), +/* + array( # person tag + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=person"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Person Transformations"', + '[linkTitle]' => ' title="Person Transformations"', + '[linkLabel]' => 'Person Transformations' + ), +*/ + array( # Edit AIML + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=editAiml"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Search and edit specific AIML categories"', + '[linkTitle]' => ' title="Search and edit specific AIML categories"', + '[linkLabel]' => 'Search/Edit AIML' + ), + array( # Edit user-defined AIML ( from tag) + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=editUDAiml"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Search and edit specific AIML categories"', + '[linkTitle]' => ' title="Search and edit specific AIML categories"', + '[linkLabel]' => 'User Defined AIML' + ), + array( + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=srai_lookup"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Search and edit entries in the srai_lookup table"', + '[linkTitle]' => ' title="Search and edit entries in the srai_lookup table"', + '[linkLabel]' => 'SRAI Lookup' + ), + array( + '[linkClass]' => ' class="[curClass]"', + '[linkHref]' => ' href="index.php?page=demochat"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Run a demo version of your bot"', + '[linkTitle]' => ' title="Run a demo version of your bot"', + '[linkLabel]' => 'Test Your Bot' + ), + array( + '[linkClass]' => '', + '[linkHref]' => ' href="index.php?page=members"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Edit Admin Accounts"', + '[linkTitle]' => ' title="Edit Admin Accounts"', + '[linkLabel]' => 'Edit Admin Accounts' + ), + array( + '[linkClass]' => '', + '[linkHref]' => ' href="index.php?page=logout"', + '[linkOnclick]' => '', + '[linkAlt]' => ' alt="Log out"', + '[linkTitle]' => ' title="Log out"', + '[linkLabel]' => 'Log Out' + ), + array( + '[linkClass]' => '', + '[linkHref]' => ' href="' . _BASE_URL_ . '?bot_id=[botId][bot_format_link]"', + '[linkOnclick]' => ' target="_blank"', + '[linkAlt]' => ' alt="open the page for [curBot] in a new tab/window"', + '[linkTitle]' => ' title="open the page for [curBot2] in a new tab/window"', + '[linkLabel]' => 'Talk to [curBot]' + ), + array( + '[linkClass]' => '', + '[linkHref]' => ' href="' . _BASE_URL_ . 'chatbot/debug/"', + '[linkOnclick]' => ' target="_blank"', + '[linkAlt]' => ' alt="Debug File Viewer"', + '[linkTitle]' => ' title="View the debug files in a new tab/window"', + '[linkLabel]' => 'Debug File Viewer' + ), + array( + '[linkClass]' => '', + '[linkHref]' => ' href="../logs/"', + '[linkOnclick]' => ' target="_blank"', + '[linkAlt]' => ' alt="Log File Viewer"', + '[linkTitle]' => ' title="Log File Viewer in a new tab/window"', + '[linkLabel]' => 'Log File Viewer' + ), + array( + '[linkClass]' => '', + '[linkHref]' => ' href="#"', + '[linkOnclick]' => ' onclick="toggleLogo(); return false;"', + '[linkAlt]' => ' alt="Toggle the Logo"', + '[linkTitle]' => ' title="Toggle the Logo"', + '[linkLabel]' => 'Toggle the Logo' + ), + ); + return $out; +} + + +/** + * Function getCurrentVersion + * + * @param $branch + * @return bool|mixed|string + */ +function getCurrentVersion($branch) +{ + if(isset($_SESSION['GitHubVersion'])) return $_SESSION['GitHubVersion']; + $versionURLtemplate = 'https://raw.githubusercontent.com/Program-O/Program-O/[branch]/version.txt'; + $url = str_replace('[branch]', $branch, $versionURLtemplate); + //file_put_contents("../logs/index.getCurrentVersion.branch_url.txt", print_r($url, true)); + $out = false; + + if (function_exists('curl_init')) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERAGENT, 'Program-O/Program-O'); + $out = curl_exec($ch); + + if (false === $out) + { + trigger_error('Not sure what it is, but there\'s a problem with checking the current version on GitHub. Maybe this will help: "' . curl_error($ch) . '"'); + } + + curl_close($ch); + } + + $_SESSION['GitHubVersion'] = $out; + + return ($out !== false) ? $out : VERSION; +} + +/** + * Function handle_exceptions + * + * @param exception $e + * @return string + */ + +function login() +{ + global $form_vars, $msg; + + if ((!isset($form_vars['user_name'])) || (!isset($form_vars['pw']))) + { + return 'logout'; + } + + //$_SESSION['poadmin']['display'] = $hide_logo; + $user_name = $form_vars['user_name']; + $pw_hash = md5($form_vars['pw']); + + /** @noinspection SqlDialectInspection */ + $sql = 'SELECT * FROM `myprogramo` WHERE user_name = :user_name AND password = :pw_hash;'; + $params = array(':user_name' => $user_name, ':pw_hash' => $pw_hash); + $debugSQL = db_parseSQL($sql, $params); + //save_file(_LOG_PATH_ . 'login.sql.txt', $debugSQL); + $row = db_fetch($sql, $params, __FILE__, __FUNCTION__, __LINE__); + + if (!empty($row)) + { + $_SESSION['poadmin']['uid'] = $row['id']; + $_SESSION['poadmin']['name'] = $row['user_name']; + $_SESSION['poadmin']['lip'] = $row['last_ip']; + $_SESSION['poadmin']['prior_login'] = date('l jS \of F Y h:i:s A', strtotime($row['last_login'])); + + switch (true) + { + case (!empty($_SERVER['HTTP_CLIENT_IP'])): + $ip = $_SERVER['HTTP_CLIENT_IP']; + break; + case (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])): + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + break; + default: + $ip = $_SERVER['REMOTE_ADDR']; + } + + /** @noinspection SqlDialectInspection */ + $sql = "UPDATE `myprogramo` SET `last_ip` = :ip, `last_login` = CURRENT_TIMESTAMP WHERE user_name = :user_name limit 1"; + $params = array(':ip' => $ip, ':user_name' => $user_name); + $transact = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + $_SESSION['poadmin']['ip'] = $ip; + $_SESSION['poadmin']['last_login'] = date('l jS \of F Y h:i:s A'); + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT * FROM `bots` WHERE bot_active = '1' ORDER BY bot_id ASC LIMIT 1"; + $row = db_fetch($sql,null, __FILE__, __FUNCTION__, __LINE__); + $count = count($row); + + if ($count > 0) + { + $_SESSION['poadmin']['bot_id'] = $row['bot_id']; + $_SESSION['poadmin']['bot_name'] = $row['bot_name']; + } + else + { + $_SESSION['poadmin']['bot_id'] = -1; + $_SESSION['poadmin']['bot_name'] = "unknown"; + } + } + else { + $msg .= "incorrect username/password
    \n"; + } + + if (empty($msg)) + { + $_SESSION['poadmin']['logged_in'] = true; + header('Location: index.php'); + return 'main'; + } + + return 'logout'; +} + +function logout() +{ + global $session_name, $session_cookie_domain, $session_cookie_path; + + $_SESSION = array(); + session_destroy(); + setcookie($session_name, '', time() - 3600, $session_cookie_path, $session_cookie_domain, false, false); + header('Location: ./'); + exit(); +} + +function getLoginStatus() +{ + return (isset($_SESSION['poadmin']['logged_in']) && $_SESSION['poadmin']['logged_in'] === true) ? true : false; +} diff --git a/admin/logs.php b/admin/logs.php index 0e40182..8808ac6 100644 --- a/admin/logs.php +++ b/admin/logs.php @@ -1,241 +1,365 @@ - - - -endScript; - - $topNav = $template->getSection('TopNav'); - $leftNav = $template->getSection('LeftNav'); - $main = $template->getSection('Main'); - $topNavLinks = makeLinks('top', $topLinks, 12); - $leftNavLinks = makeLinks('left', $leftLinks, 12); - $FooterInfo = getFooter(); - $errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgClass); - $rightNav = $template->getSection('RightNav'); - $navHeader = $template->getSection('NavHeader'); - $noLeftNav = ''; - $noTopNav = ''; - $noRightNav = ''; - $headerTitle = 'Actions:'; - $pageTitle = 'My-Program O - Chat Logs'; - $mainContent = $template->getSection('ConversationLogs1'); - $mainTitle = 'Chat Logs'; - - $rightNav = str_replace('[rightNavLinks]', $show_this . $user_list, $rightNav); - $rightNav = str_replace('[navHeader]', $navHeader, $rightNav); - $rightNav = str_replace('[headerTitle]', 'Log Actions:', $rightNav); - $mainContent = str_replace('[show_this]', '', $mainContent); - $mainContent = str_replace('[convo]', $convo, $mainContent); - $mainContent = str_replace('[bot_name]', $bot_name, $mainContent); - -function getUserNames() { - $dbconn = db_open(); - $sql = "select `id`, `name` from `users` where 1;"; - $result = mysql_query($sql,$dbconn); - $nameList = array(); - while ($row = mysql_fetch_assoc($result)) { - $nameList[$row['id']] = $row['name']; - } - mysql_close($dbconn); - return $nameList; -} - -function getuserList($showing) { - //db globals - global $template, $adm_dbn; - $nameList = getUserNames(); - $curUserid = (isset($_GET['id'])) ? $_GET['id'] : -1; - #die ("user names:
    \n" . print_r($nameList, true) . "\n
    \n"); - $dbconn = db_open(); - $bot_id = $_SESSION['poadmin']['bot_id']; - $linkTag = $template->getSection('NavLink'); - $sql = "SELECT DISTINCT(`userid`),COUNT(`userid`) AS TOT FROM `conversation_log` WHERE bot_id = '$bot_id' AND DATE(`timestamp`) = '[repl_date]' GROUP BY `userid` ORDER BY ABS(`userid`) ASC"; - $showarray = array("last 20","previous week","previous 2 weeks","previous month","last 6 months","this year","previous year","all years"); - switch ($showing) { - case "today": - $repl_date = date("Y-m-d"); - break; - case "previous week": - $repl_date = strtotime("-1 week"); - break; - case "previous 2 weeks": - $repl_date = strtotime("-2 week"); - break; - case "previous month": - $repl_date = strtotime("-1 month"); - break; - case "previous 6 months": - $repl_date = strtotime("-6 month"); - break; - case "past 12 months": - $repl_date = strtotime("-1 year"); - break; - case "all time": - $sql = "SELECT DISTINCT(`userid`),COUNT(`userid`) AS TOT FROM `conversation_log` WHERE bot_id = '$bot_id' GROUP BY `userid` ORDER BY ABS(`userid`) ASC"; - $repl_date = time(); - break; - default: - $sql = "SELECT DISTINCT(`userid`),COUNT(`userid`) AS TOT FROM `conversation_log` WHERE bot_id = '$bot_id' GROUP BY `userid` ORDER BY ABS(`userid`) ASC"; - $repl_date = time(); - } - $sql = str_replace('[repl_date]', $repl_date, $sql); - $list =<< -
      - -endList; - $result = mysql_query($sql,$dbconn) or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . ".
      \nSQL = $sql
      \n"); - while($row = mysql_fetch_array($result)) { - $userid = $row['userid']; - $linkClass = ($userid == $curUserid) ? 'selected' : 'noClass'; - $userName = @$nameList[$userid]; - $TOT = $row['TOT']; - $tmpLink = str_replace('[linkClass]'," class=\"$linkClass\"", $linkTag); - $tmpLink = str_replace('[linkOnclick]','', $tmpLink); - $tmpLink = str_replace('[linkHref]',"href=\"./?page=logs&showing=$showing&id=$userid#$userid\" name=\"$userid\"", $tmpLink); - $tmpLink = str_replace('[linkTitle]'," title=\"Show entries for user $userName\"", $tmpLink); - $tmpLink = str_replace('[linkLabel]',"USER:$userName($TOT)", $tmpLink); - $anchor = " \n"; - $anchor = ''; - $list .= "$tmpLink\n$anchor"; - } - $list .="\n \n"; - mysql_close($dbconn); - return $list; -} - -function showThis($showing="last 20") { - $showarray = array("last 20","today","previous week","previous 2 weeks","previous month","last 6 months","past 12 months","all time"); - $options = ""; - foreach($showarray as $index => $value) { - if($value == $showing) { - $sel = " SELECTED=SELECTED"; - } - else { - $sel = ""; - } - $options .= " \n"; - } - - $form = << - - - -endForm; - return $form; -} - -function getuserConvo($id, $showing) { - $bot_name= (isset($_SESSION['poadmin']['bot_name'])) ? $_SESSION['poadmin']['bot_name'] : 'Bot'; - $bot_id = (isset($_SESSION['poadmin']['bot_id'])) ? $_SESSION['poadmin']['bot_id'] : 0; - $nameList = getUserNames(); - $user_name = $nameList[$id]; - switch ($showing) { - case "today": - $sqladd = "AND DATE(`timestamp`) = '".date('Y-m-d')."'"; - $title = "Today's "; - break; - case "previous week": - $lastweek = strtotime("-1 week"); - $sqladd = "AND DATE(`timestamp`) >= '".$lastweek."'"; - $title = "Last week's "; - break; - case "previous 2 weeks": - $lasttwoweek = strtotime("-2 week"); - $sqladd = "AND DATE(`timestamp`) >= '".$lasttwoweek ."'"; - $title = "Last two week's "; - break; - case "previous month": - $lastmonth = strtotime("-1 month"); - $sqladd = "AND DATE(`timestamp`) >= '".$lastmonth ."'"; - $title = "Last month's "; - break; - case "previous 6 months": - $lastsixmonth = strtotime("-6 month"); - $sqladd = "AND DATE(`timestamp`) >= '".$lastsixmonth ."'"; - $title = "Last six month's "; - break; - case "past 12 months": - $lastyear = strtotime("-1 year"); - $sqladd = "AND DATE(`timestamp`) >= '".$lastyear ."'"; - $title = "Last twelve month's "; - break; - case "all time": - $sql = ""; - $title = "All "; - break; - default: - $sqladd = ""; - $title = "Last "; - } - $lasttimestamp = ""; - $i = 1; - $dbconn = db_open(); - //get undefined defaults from the db - $sql = "SELECT * FROM `conversation_log` WHERE `bot_id` = '$bot_id' AND `userid` = $id $sqladd ORDER BY `id` ASC"; - $list = "

      $title conversations for user: $id

      "; - $list .="
      "; - $result = mysql_query($sql,$dbconn)or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . ".
      \nSQL = $sql\n"); - while($row = mysql_fetch_array($result)) { - $thisdate = date("Y-m-d",strtotime($row['timestamp'])); - if($thisdate!=$lasttimestamp) { - if($i>1) { - if($showing == "last 20") { - break; - } - } - $date = date("Y-m-d"); - $list .= "

      Conversation#$i $thisdate

      "; - $i++; - } - $list .= "
      $user_name: ".$row['input'].""; - $list .= "
      $bot_name: ".$row['response'].""; - $lasttimestamp = $thisdate; - } - $list .="
      "; - mysql_close($dbconn); - $list = str_ireplace(' + FILTER_DEFAULT, + 'action' => FILTER_DEFAULT, + 'showing' => FILTER_DEFAULT, + 'id' => FILTER_VALIDATE_INT, + //see http://php.net/manual/en/filter.constants.php for available options + ); + $get_vars = clean_inputs($allowed_get_vars); + if (isset($get_vars['action']) && function_exists($get_vars['action'])) $get_vars['action'](); + + $show = (isset ($get_vars['showing'])) ? $get_vars['showing'] : "last 20"; + +//showThis($show) +$show_this = showThis($show); +$convo = (isset ($get_vars['id'])) ? getuserConvo($get_vars['id'], $show) : "Please select a conversation from the side bar."; +$user_list = (isset ($get_vars['id'])) ? getUserList($get_vars['id'], $show) : getUserList($_SESSION['poadmin']['bot_id'], $show); +$bot_name = (isset ($_SESSION['poadmin']['bot_name'])) ? $_SESSION['poadmin']['bot_name'] : 'unknown'; +$upperScripts = $template->getSection('UpperScripts'); +$lowerScripts = $template->getSection('LogoLinkScript'); +$lowerScripts .= $template->getSection('CLScript'); + +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); +$FooterInfo = getFooter(); +$errMsgClass = (!empty ($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$rightNav = $template->getSection('RightNav'); +$navHeader = $template->getSection('NavHeader'); + +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = ''; + +$headerTitle = 'Actions:'; +$pageTitle = 'My-Program O - Chat Logs'; +$mainContent = $template->getSection('ConversationLogs1'); +$mainTitle = 'Chat Logs'; + +$rightNav = str_replace('[rightNavLinks]', $show_this . $user_list, $rightNav); +$rightNav = str_replace('[navHeader]', $navHeader, $rightNav); +$rightNav = str_replace('[headerTitle]', 'Log Actions:', $rightNav); + +$mainContent = str_replace('[show_this]', '', $mainContent); +$mainContent = str_replace('[convo]', $convo, $mainContent); +$mainContent = str_replace('[bot_name]', $bot_name, $mainContent); + +/** + * Function getUserNames + * + * @return array + */ +function getUserNames() +{ + $nameList = array(); + + /** @noinspection SqlDialectInspection */ + $sql = "SELECT `id`, `user_name` FROM `users` WHERE 1 order by `id`;"; + $result = db_fetchAll($sql,null, __FILE__, __FUNCTION__, __LINE__); + foreach ($result as $row) { + $nameList[$row['id']] = $row['user_name']; + } + return $nameList; +} + +/** + * Function getUserList + * + * @param $bot_id + * @param $showing + * @return string + */ +function getUserList($bot_id, $showing) +{ + //db globals + global $template, $get_vars; + + $nameList = getUserNames(); + $curUserid = (isset ($get_vars['id'])) ? $get_vars['id'] : -1; + $bot_id = $_SESSION['poadmin']['bot_id']; + $linkTag = $template->getSection('NavLink'); + $ts = ''; + + $sql = "SELECT DISTINCT(`user_id`),COUNT(`user_id`) AS TOT FROM `conversation_log` WHERE bot_id = :bot_id AND DATE(`timestamp`) >= [ts] GROUP BY `user_id`, `convo_id` ORDER BY ABS(`user_id`) ASC;"; + + switch ($showing) + { + case "today" : + $ts = 'DATE(NOW())'; + break; + case "previous week" : + $ts = 'DATE(NOW() - interval 1 week)'; + break; + case "previous 2 weeks" : + $ts = 'DATE(NOW() - interval 2 week)'; + break; + case "previous month" : + $ts = 'DATE(NOW() - interval 1 month)'; + break; + case "previous 6 months" : + $ts = 'DATE(NOW() - interval 6 month)'; + break; + case "past 12 months" : + $ts = 'DATE(NOW() - interval 1 year)'; + break; + case "all time" : + $ts = '0'; + break; + case 'last 20': + $sql = "SELECT DISTINCT(`user_id`),COUNT(`user_id`) AS TOT FROM `conversation_log` WHERE bot_id = '$bot_id' GROUP BY `user_id` ORDER BY ABS(`user_id`) ASC limit 20;"; + //$repl_date = time(); + $repl_date = false; + break; + default : + /** @noinspection SqlDialectInspection */ + $sql = "SELECT DISTINCT(`user_id`),COUNT(`user_id`) AS TOT FROM `conversation_log` WHERE bot_id = :bot_id GROUP BY `user_id` ORDER BY ABS(`user_id`) ASC;"; + } + + $list = '
      \n"; + + return $list; +} + +/** + * Function showThis + * + * @param string $showing + * @return string + */ +function showThis($showing = "last 20") +{ + $showarray = array("last 20", "today", "previous week", "previous 2 weeks", "previous month", "last 6 months", "past 12 months", "all time"); + $options = ""; + + foreach ($showarray as $index => $value) + { + if ($value == $showing) + { + $sel = " SELECTED=SELECTED"; + } + else { + $sel = ""; + } + + $options .= " \n"; + } + + $form = << + + + +endForm; + + return $form; +} + +/** + * Function getuserConvo + * + * @param $id + * @param $showing + * @return mixed|string + */ +function getuserConvo($id, $showing) +{ + $bot_name = (isset ($_SESSION['poadmin']['bot_name'])) ? $_SESSION['poadmin']['bot_name'] : 'Bot'; + $bot_id = (isset ($_SESSION['poadmin']['bot_id'])) ? $_SESSION['poadmin']['bot_id'] : 0; + $nameList = getUserNames(); + $user_name = (!empty($nameList[$id])) ? $nameList[$id] : 'Unknown'; + $ts = ''; + $ats = ''; + /** @noinspection SqlDialectInspection */ + $sql = 'SELECT * FROM `conversation_log` WHERE `bot_id` = :bot_id AND `user_id` = :user_id AND DATE(`timestamp`) >= [ts] ORDER BY `id` ASC;'; + + switch ($showing) + { + case 'today' : + $ts = 'DATE(NOW())'; + $title = "Today's Conversations for user: $user_name (ID #{$id})"; + break; + case 'previous week' : + $ts = 'DATE(NOW() - interval 1 week)'; + $title = "Conversations for user: $user_name (ID #{$id}) for the past week"; + break; + case 'previous 2 weeks' : + $ts = 'DATE(NOW() - interval 2 week)'; + $title = "Conversations for user: $user_name (ID #{$id}) for the past two weeks"; + break; + case 'previous month' : + $ts = 'DATE(NOW() - interval 1 month)'; + $title = "Conversations for user: $user_name (ID #{$id}) for the past month"; + break; + case 'previous 6 months' : + $ts = 'DATE(NOW() - interval 6 month)'; + $title = "Conversations for user: $user_name (ID #{$id}) for the past six months"; + break; + case 'past 12 months' : + $ts = 'DATE(NOW() - interval 1 year)'; + $title = "Conversations for user: $user_name (ID #{$id}) for the past year"; + break; + case 'last 20': + /** @noinspection SqlDialectInspection */ + $sql = 'SELECT * FROM `conversation_log` WHERE `bot_id` = :bot_id AND `user_id` = :user_id ORDER BY `id` ASC limit 20;'; + $title = "Last 20 Conversation entries for user: $user_name (ID #{$id})"; + $ats = '0 limit 20'; + break; + case 'all time' : + $sql = 'SELECT * FROM `conversation_log` WHERE `bot_id` = :bot_id AND `user_id` = :user_id ORDER BY `id` ASC;'; + $title = "All conversations for user: $user_name (ID #{$id})"; + $ats = 'foo'; + break; + default : + $title = "(ERROR! Unexpected value for showing: {$showing}!)"; + } + + //get undefined defaults from the db + $params = array( + ':bot_id' => $bot_id, + ':user_id' => $id, + ); + $sql = str_replace('[ts]', $ts, $sql); + $ts = (!empty($ats)) ? $ats : $ts; + $clearLink = <<Clear logs for this conversation +endLink; + $list = "

      {$title}:

      "; + $list .= '
      '; + $debugSQL = db_parseSQL($sql, $params); + //save_file(_LOG_PATH_ . __FUNCTION__ . '.sql.txt', $debugSQL); + + $result = db_fetchAll($sql, $params, __FILE__, __FUNCTION__, __LINE__); + $storedRows = array(); + $queries = array(); + $lasttimestamp = ''; + $i = 1; + foreach ($result as $row) + { + extract($row); + $response = stripslashes($response); + $thisdate = date("Y-m-d", strtotime($timestamp)); + $storedRowsIndex = "{$bot_id}_{$user_id}_{$thisdate}"; + if (!isset($storedRows[$storedRowsIndex])) $storedRows[$storedRowsIndex] = array(); + if (!isset($queries[$storedRowsIndex])) $queries[$storedRowsIndex] = array(); + $storedRows[$storedRowsIndex][] = $id; + $queries[$storedRowsIndex][] = $sql; + + if ($thisdate != $lasttimestamp) + { + if ($i > 1 && $showing == 'last 20') { + break; + } + $cl = str_replace('[sr]', $storedRowsIndex, $clearLink); + $list .= "

      Conversation#$i $thisdate $cl

      "; + $i++; + } + + $list .= "
      $user_name: {$input}"; + $list .= "
      $bot_name: {$response}"; + $lasttimestamp = $thisdate; + } + $list .= "
      "; + $list = str_ireplace(' FILTER_DEFAULT, + ); + $get_vars = clean_inputs($allowed_get_vars); + $out['get_vars'] = print_r($get_vars, true); + extract($get_vars); + $storedRows = $_SESSION['stored_rows']; + + $idRegEx =implode(' OR `id` = ', $storedRows[$sr]); + list($bot_id, $user_id, $timestamp) = explode('_', $sr); + $sql = "DELETE from `conversation_log` where id = $idRegEx;"; + //save_file(_LOG_PATH_ . 'clearLogs.sql.txt', $sql); + $numRows = db_write($sql); + If ($numRows > 0) + { + $out['message'] = "Conversation log altered. {$numRows} entries deleted."; + } + else + { + $out['message'] = 'Deletion of log entries failed. Please check the error logs.'; + } + exit (json_encode($out)); +} + diff --git a/admin/main.php b/admin/main.php index 796aa83..ffdca72 100644 --- a/admin/main.php +++ b/admin/main.php @@ -1,98 +1,63 @@ -getSection('NoRightNav'); - $logo = $template->getSection('Logo'); - $topNav = $template->getSection('TopNav'); - $leftNav = $template->getSection('LeftNav'); - $main = $template->getSection('Main'); - $rightNav = ''; - $footer = trim($template->getSection('Footer')); - #$lowerScripts = ''; - #$pageTitleInfo = ''; - $divDecoration = $template->getSection('DivDecoration'); - $topNavLinks = makeLinks('top', $topLinks, 12); - $navHeader = $template->getSection('NavHeader'); - $leftNavLinks = makeLinks('left', $leftLinks, 12); - $mainTitle = 'Home'; - $rightNavLinks = ''; - $FooterInfo = getFooter(); - $titleSpan = $template->getSection('TitleSpan'); - $errMsgStyle = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgStyle); - $mediaType = ' media="screen"'; - $upperScripts = ''; - $noLeftNav = ''; - $noTopNav = ''; - $pageTitle = 'My-Program O - Main Page'; - $headerTitle = 'Actions:'; - $mainContent = << - Welcome to 'My Program-O', the Program-O chatbot admin area. Please - use the links above or to the left to perform administrative tasks, - as needed. -

      -
      -
      Latest News from Program-O.com
      -
      [rssOutput]
      -
      -endMain; - - $mainContent = str_replace('[rssOutput]', getRSS(), $mainContent); - - function getRSS() { - global $template; - $out = ''; - $itemTemplate = $template->getSection('RSSItemTemplate'); - $url = 'http://www.program-o.com/ns/feed/rss/'; - $xml = simplexml_load_file($url); //loading the document - $title = $xml->channel->title; //gets the title of the document. - $rss = simplexml_load_file($url); - if($rss) { - $items = $rss->channel->item; - foreach($items as $item) { - $title = $item->title; - $link = $item->link; - $published_on = $item->pubDate; - $description = $item->description; - $out .= "

      $title

      \n"; - $out .= "

      $description

      "; - } - } - return $out; - } - - function getXML_section($file, $tagName, $count = 1) { - $startTagSearch = "<$tagName>"; - $endTagSearch = ""; - $atomicTagSearch = "<$tagName />"; - $alternateAtomicTagSearch = "<$tagName/>"; - $foundPositions = array(-1); - $pos = 0; - $n = 0; - while ($pos !== false) { - switch (true) { - case ($newPos = stripos($file, $startTagSearch, $pos)): - case ($newPos = stripos($file, $atomicTagSearch, $pos)): - case ($newPos = stripos($file, $alternateAtomicTagSearch, $pos)): - $foundPositions[] = $newPos; - break; - default: - $pos = $newPos; - } - $n++; - if ($n > 50) break; - } - $startPos = $foundPositions[$count]; - $endPos = stripos($file, $endTagSearch, $startPos); - $len = $endPos - $startPos; - return substr($file, $startPos, $len); - } - -?> \ No newline at end of file +text($readMeRaw); + +$noRightNav = $template->getSection('NoRightNav'); +$logo = $template->getSection('Logo'); +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); + +$rightNav = ''; +$footer = trim($template->getSection('Footer')); +#$lowerScripts = ''; +#$pageTitleInfo = ''; +$divDecoration = $template->getSection('DivDecoration'); + +$navHeader = $template->getSection('NavHeader'); + +$mainTitle = 'Home'; +$rightNavLinks = ''; +$FooterInfo = getFooter(); +$titleSpan = $template->getSection('TitleSpan'); +$errMsgStyle = (!empty($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgStyle); +$mediaType = ' media="screen"'; +$upperScripts = ''; +$noLeftNav = ''; +$noTopNav = ''; +$pageTitle = 'My-Program O - Main Page'; +$headerTitle = 'Actions:'; +$mainContent = << + Welcome to 'My Program-O', the Program-O chatbot admin area. Please + use the links above or to the left to perform administrative tasks, + as needed. +

      +
      [readMe]
      +endMain; + +$mainContent = str_replace('[readMe]', $readMe, $mainContent); \ No newline at end of file diff --git a/admin/members.php b/admin/members.php index d35ad20..54b0c08 100644 --- a/admin/members.php +++ b/admin/members.php @@ -1,180 +1,214 @@ -$myPost"; - #if (!empty($_POST)) die ("
      \n Post Vars:\n$myPost\n
      \n"); - - $uname = ''; - $action = (isset($_POST['action'])) ? ucfirst(strtolower($_POST['action'])) : 'Add'; - if (!empty($_POST)) { - $msg = save($action); - $action = 'Add'; - } - $id = (isset($_POST['id'])) ? $_POST['id'] : getNextID(); - $id = ($id <= 0) ? getNextID() : $id; - if (isset($_POST['memberSelect'])) { - $id = $_POST['memberSelect']; - getMemberData($_POST['memberSelect']); - } - $upperScripts = << - - -endScript; - - $XmlEntities = array( - '&' => '&', - '<' => '<', - '>' => '>', - ''' => '\'', - '"' => '"', - ); - - $AdminsOpts = getAdminsOpts(); - - $membersForm = $template->getSection('MembersForm'); - $members_list_form = $template->getSection('MembersListForm'); - $showHelp = $template->getSection('MembersShowHelp'); - - $topNav = $template->getSection('TopNav'); - $leftNav = $template->getSection('LeftNav'); - $main = $template->getSection('Main'); - $topNavLinks = makeLinks('top', $topLinks, 12); - $navHeader = $template->getSection('NavHeader'); - $leftNavLinks = makeLinks('left', $leftLinks, 12); - $FooterInfo = getFooter(); - $errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; - $errMsgStyle = $template->getSection($errMsgClass); - $noLeftNav = ''; - $noTopNav = ''; - $noRightNav = $template->getSection('NoRightNav'); - $headerTitle = 'Actions:'; - $pageTitle = 'My-Program O - Admin Accounts'; - $mainContent = $template->getSection('MembersMain'); - $mainTitle = "Modify Admin Account Data [helpLink]"; - - $members_list_form = str_replace('[adminList]', $AdminsOpts, $members_list_form); - $mainContent = str_replace('[members_content]', $membersForm, $mainContent); - $mainContent = str_replace('[showHelp]', $showHelp, $mainContent); - $mainContent = str_replace('[members_list_form]', $members_list_form, $mainContent); - $mainContent = str_replace('[uname]', $uname, $mainContent); - $mainContent = str_replace('[action]', $action, $mainContent); - $mainContent = str_replace('[id]', $id, $mainContent); - $mainTitle = str_replace('[helpLink]', $template->getSection('HelpLink'), $mainTitle); - - - function updateDB($sql) { - $dbconn = db_open(); - $result = mysql_query($sql,$dbconn)or die('You have a SQL error on line '. __LINE__ . ' of ' . __FILE__ . '. Error message is: ' . mysql_error() . ".
      \nSQL =
      $sql

      \n"); - $commit = mysql_affected_rows($dbconn); - return $commit; - } - - function save($action) { - if (!isset($_POST['uname']) or !isset($_POST['pword']) or !isset($_POST['pwordConfirm'])) return 'You left something out!'; - $id = $_POST['id']; - $uname = $_POST['uname']; - $pword1 = $_POST['pword']; - $pword2 = $_POST['pwordConfirm']; - if ($action != 'Delete' and ($pword1 != $pword2)) return 'The passwords don\'t match!'; - $pword = md5($pword1); - switch ($action) { - case 'Add': - $sql = "insert into myprogramo (id, uname, pword, lastip, lastlogin) values (null, '$uname', '$pword','', CURRENT_TIMESTAMP);"; - $out = "Account for $uname successfully added!"; - break; - case 'Delete': - $sql = "DELETE FROM `pgov2_db1`.`myprogramo` WHERE `myprogramo`.`id` = $id LIMIT 1"; - $out = "Account for $uname successfully deleted!"; - break; - default: - $sql = "update myprogramo set uname = '$uname', pword = '$pword' where id = $id;"; - $out = "Account for $uname successfully updated!"; - } - $x = updateDB($sql); - #return "action = $action
      \n SQL = $sql"; - return $out; - } - - - - function getAdminsOpts() { - global $dbn; - $out = " \n"; - $dbconn = db_open(); - $optionTemplate = " \n"; - $sql = 'SELECT id, uname FROM myprogramo order by uname;'; - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - while ($row = mysql_fetch_assoc($result)) { - $uname = $row['uname']; - $id = $row['id']; - $curOption = str_replace('[key]', $row['uname'], $optionTemplate); - $curOption = str_replace('[val]', $row['id'], $curOption); - $out .= $curOption; - } - mysql_close($dbconn); - $out .= " \n"; - return $out; - } - - function getMemberData($id) { - if ($id <= 0) return false; - global $dbn, $uname, $id; - $sql = "select id, uname from myprogramo where id = $id limit 1;"; - $dbconn = db_open(); - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - $row = mysql_fetch_assoc($result); - $uname = $row['uname']; - $id = $row['id']; - mysql_close($dbconn); - } - - function getNextID() { - global $dbn, $uname; - $sql = "select id from myprogramo order by id desc limit 1;"; - $dbconn = db_open(); - $result = mysql_query($sql,$dbconn) or die(mysql_error()); - $row = mysql_fetch_assoc($result); - $id = $row['id']; - mysql_close($dbconn); - return $id + 1; - } - -?> \ No newline at end of file +getSection('UpperScripts'); +$XmlEntities = array( + '&' => '&', + '<' => '<', + '>' => '>', + ''' => '\'', + '"' => '"', +); + +$AdminsOpts = getAdminsOpts(); + +$membersForm = $template->getSection('MembersForm'); +$members_list_form = $template->getSection('MembersListForm'); +$showHelp = $template->getSection('MembersShowHelp'); +$topNav = $template->getSection('TopNav'); +$leftNav = $template->getSection('LeftNav'); +$main = $template->getSection('Main'); +$navHeader = $template->getSection('NavHeader'); +$FooterInfo = getFooter(); +$errMsgClass = (!empty($msg)) ? "ShowError" : "HideError"; +$errMsgStyle = $template->getSection($errMsgClass); +$noLeftNav = ''; +$noTopNav = ''; +$noRightNav = $template->getSection('NoRightNav'); +$headerTitle = 'Actions:'; +$pageTitle = 'My-Program O - Admin Accounts'; +$mainContent = $template->getSection('MembersMain'); +$mainTitle = "Modify Admin Account Data [helpLink]"; + +$members_list_form = str_replace('[adminList]', $AdminsOpts, $members_list_form); +$mainContent = str_replace('[showHelp]', $showHelp, $mainContent); +$mainContent = str_replace('[members_content]', $membersForm, $mainContent); +$mainContent = str_replace('[members_list_form]', $members_list_form, $mainContent); +$mainContent = str_replace('[user_name]', $user_name, $mainContent); +$mainContent = str_replace('[action]', $action, $mainContent); +$mainContent = str_replace('[id]', $id, $mainContent); +$mainTitle = str_replace('[helpLink]', $template->getSection('HelpLink'), $mainTitle); + + +/** + * Function save + * + * @param $action + * @return string + */ +function save($action) +{ + global $dbn, $action, $post_vars; + + if (isset($post_vars['memberSelect'])) + { + $id = $post_vars['memberSelect']; + } + else + { + if (!isset($post_vars['user_name']) || !isset($post_vars['password']) || !isset($post_vars['passwordConfirm'])) + { + return 'You left something out!'; + } + + $id = $post_vars['id']; + $user_name = $post_vars['user_name']; + $password1 = $post_vars['password']; + $password2 = $post_vars['passwordConfirm']; + $password = md5($password1); + + if ($action != 'Delete' && ($password1 != $password2)) + { + return 'The passwords don\'t match!'; + } + } + + switch ($action) + { + case 'Add': + $ip = $_SERVER['REMOTE_ADDR']; + /** @noinspection SqlDialectInspection */ + $sql = "INSERT INTO myprogramo (id, user_name, password, last_ip, last_login) VALUES (null, :user_name, :password,:ip, CURRENT_TIMESTAMP);"; + $params = array( + ':user_name' => $user_name, + ':password' => $password, + ':ip' => $ip + ); + $out = "Account for $user_name successfully added!"; + break; + case 'Delete': + $action = 'Add'; + /** @noinspection SqlDialectInspection */ + $sql = "DELETE FROM `$dbn`.`myprogramo` WHERE `myprogramo`.`id` = :id LIMIT 1"; + $params = array(':id' => $id); + $out = "Account for $user_name successfully deleted!"; + break; + case 'Edit': + $action = 'Add'; + /** @noinspection SqlDialectInspection */ + $sql = "UPDATE myprogramo SET user_name = :user_name, password = :password WHERE id = :id;"; + $params = array( + ':user_name' => $user_name, + ':password' => $password, + ':id' => $id + ); + + $out = "Account for $user_name successfully updated!"; + break; + default: + $action = 'Edit'; + $sql = ''; + $out = ''; + } + + if (!empty($sql)) + { + //save_file(_LOG_PATH_ . 'memberSQL.txt', $sql); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + // + } + return $out; +} + + +/** + * Function getAdminsOpts + * + * @return string + */ +function getAdminsOpts() +{ + $out = " \n"; + $optionTemplate = " \n"; + + /** @noinspection SqlDialectInspection */ + $sql = 'SELECT id, user_name FROM myprogramo ORDER BY user_name;'; + $result = db_fetchAll($sql,null, __FILE__, __FUNCTION__, __LINE__); + + foreach ($result as $row) + { + $user_name = $row['user_name']; + $id = $row['id']; + $curOption = str_replace('[key]', $row['user_name'], $optionTemplate); + $curOption = str_replace('[val]', $row['id'], $curOption); + $out .= $curOption; + } + + $out .= " \n"; + return $out; +} + +/** + * Function getMemberData + * + * @param $id + * @return mixed + */ +function getMemberData($id) +{ + if ($id <= 0) { + return ''; + } + /** @noinspection SqlDialectInspection */ + $sql = "SELECT id, user_name FROM myprogramo WHERE id = :id limit 1;"; + $params = array(':id' => $id); + $row = db_fetch($sql, $params, __FILE__, __FUNCTION__, __LINE__); + + return $row; +} + +/** + * Function getNextID + * + * + * @return int + */ +function getNextID() +{ + /** @noinspection SqlDialectInspection */ + $sql = "SELECT id FROM myprogramo ORDER BY id DESC limit 1;"; + $row = db_fetch($sql,null, __FILE__, __FUNCTION__, __LINE__); + + return $row['id'] + 1; +} \ No newline at end of file diff --git a/admin/scripts/dtree.js b/admin/scripts/dtree.js deleted file mode 100644 index beac994..0000000 --- a/admin/scripts/dtree.js +++ /dev/null @@ -1,693 +0,0 @@ -/*--------------------------------------------------| - -| dTree 2.05 | www.destroydrop.com/javascript/tree/ | - -|---------------------------------------------------| - -| Copyright (c) 2002-2003 Geir Landr | - -| | - -| This script can be used freely as long as all | - -| copyright messages are intact. | - -| | - -| Updated: 17.04.2003 | - -|--------------------------------------------------*/ - - - -// Node object - -function Node(id, pid, name, url, title, target, icon, iconOpen, open) { - - this.id = id; - - this.pid = pid; - - this.name = name; - - this.url = url; - - this.title = title; - - this.target = target; - - this.icon = icon; - - this.iconOpen = iconOpen; - - this._io = open || false; - - this._is = false; - - this._ls = false; - - this._hc = false; - - this._ai = 0; - - this._p; - -}; - - - -// Tree object - -function dTree(objName) { - - this.config = { - - target : null, - - folderLinks : true, - - useSelection : true, - - useCookies : true, - - useLines : true, - - useIcons : true, - - useStatusText : false, - - closeSameLevel : false, - - inOrder : false - - } - - this.icon = { - - root : 'img/base.gif', - - folder : 'img/folder.gif', - - folderOpen : 'img/folderopen.gif', - - node : 'img/page.gif', - - empty : 'img/empty.gif', - - line : 'img/line.gif', - - join : 'img/join.gif', - - joinBottom : 'img/joinbottom.gif', - - plus : 'img/plus.gif', - - plusBottom : 'img/plusbottom.gif', - - minus : 'img/minus.gif', - - minusBottom : 'img/minusbottom.gif', - - nlPlus : 'img/nolines_plus.gif', - - nlMinus : 'img/nolines_minus.gif' - - }; - - this.obj = objName; - - this.aNodes = []; - - this.aIndent = []; - - this.root = new Node(-1); - - this.selectedNode = null; - - this.selectedFound = false; - - this.completed = false; - -}; - - - -// Adds a new node to the node array - -dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) { - - this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open); - -}; - - - -// Open/close all nodes - -dTree.prototype.openAll = function() { - - this.oAll(true); - -}; - -dTree.prototype.closeAll = function() { - - this.oAll(false); - -}; - - - -// Outputs the tree to the page - -dTree.prototype.toString = function() { - - var str = '
      \n'; - - if (document.getElementById) { - - if (this.config.useCookies) this.selectedNode = this.getSelected(); - - str += this.addNode(this.root); - - } else str += 'Browser not supported.'; - - str += '
      '; - - if (!this.selectedFound) this.selectedNode = null; - - this.completed = true; - - return str; - -}; - - - -// Creates the tree structure - -dTree.prototype.addNode = function(pNode) { - - var str = ''; - - var n=0; - - if (this.config.inOrder) n = pNode._ai; - - for (n; n'; - - } - - if (node.url) { - - str += ''; - - str += node.name; - - if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += ''; - - str += ''; - - if (node._hc) { - - str += '
      '; - - str += this.addNode(node); - - str += '
      '; - - } - - this.aIndent.pop(); - - return str; - -}; - - - -// Adds the empty and line icons - -dTree.prototype.indent = function(node, nodeId) { - - var str = ''; - - if (this.root.id != node.pid) { - - for (var n=0; n'; - - (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1); - - if (node._hc) { - - str += ''; - - } else str += ''; - - } - - return str; - -}; - - - -// Checks if a node has any children and if it is the last sibling - -dTree.prototype.setCS = function(node) { - - var lastId; - - for (var n=0; n').html(oldData).text(); + if (oldData == curData || curData == dataText) return cancelEdit($(this)); + else if (typeof oldData !== 'undefined') { + console.log('current data =', curData); + console.log('old data =', oldData); + saveEdit($(this)); + return false; + } + else return cancelEdit($(this)); + }); + $('#AIML').on('click', '.editable', function (e) { + console.log('Clicked!'); + var cellID = $(this).closest('tr').attr('id'); + var rawClass = $(this).attr('class'); + var cellClass = rawClass.replace(' editable', '').replace(' sorting_1', ''); + console.log('Cell class =', cellClass); + var editCell = buildTA($(this), cellClass, $(this).html()); + editCell.focus(); + editCell.on('keyup', function (e) { + if (e.keyCode == 27) cancelEdit($(this)); + }); + }); + table = buildTable(); + $(window).on('resize', function () { + if (typeof table === 'undefined') table = buildTable(); + $('.holder').height(scrollY); + table.draw(false); + }); + $('.search-input-text').on('keyup click', function () { + var i = $(this).data('column'); + var v = $(this).val(); + console.info('searching for', v); + table.columns(i).search(v).draw(false); + }); + $('#addNewCat').on('submit', function (e) { + e.preventDefault(); + var fd = $(this).serialize(); + console.log('Form Data =', fd); + $.ajax({ + url: 'editAJAX.php', + type: 'post', + dataType: 'text', + data: fd, + success: function (data) { + $('#errMsg').html('
       
      ').show(); + $('').html(data).appendTo('#errMsg'); + table.draw(false); + setTimeout(hideMsg, 3000); + $('#btnClearNewCat').click(); + } + }); + }); +}); + +function showHide() { + $('#showHelp').toggle(); +} + +function hideMsg() { + $('#errMsg').fadeOut(); +} + +function cancelEdit(ele) { + console.log('Cancelling the edit.'); + var rowID = ele.attr('data-rowID'); + var fieldName = ele.attr('data-fieldName'); + var oldData = ele.attr('data-oldData'); + ele.parent().empty().html(oldData); +} + +function saveEdit(ele) { + console.log('Saving the edit.'); + var rowID = ele.attr('data-rowID'); + var fieldName = ele.attr('data-fieldName'); + // insert the new value into the current cell + var curVal = ele.val(); + ele.parent().text(curVal); + var row = $('#' + rowID); + var pattern = row.find('.pattern').text(); + var thatpattern = row.find('.thatpattern').text(); + var template = row.find('.template').text(); + var topic = row.find('.topic').text(); + var filename = row.find('.filename').text(); + console.log('pattern =', pattern, 'thatpattern =', thatpattern, 'template =', template, 'topic =', topic, 'filename =', filename); + // Now gether all of the fields and send the updated information + $.ajax({ + url: 'editAJAX.php', + type: 'post', + dataType: 'text', + data: { + action: 'update', + id: rowID, + pattern: pattern, + thatpattern: thatpattern, + template: template, + topic: topic, + filename: filename + }, + success: function (data) { + $('#errMsg').empty().html('
       
      ').show(); + $('
      ').html(data).appendTo('#errMsg');
      +            //console.log('Foo!');
      +            setTimeout(hideMsg, 3000);
      +            table.draw(false);
      +        }
      +    });
      +}
      +
      +function buildTA(ele, eleName, data) {
      +    var rowID = ele.closest('tr').attr('id');
      +    var w = ele.width() - 6;
      +    var name = eleName.replace(' ', '');
      +    var dataText = $('
      ').html(data).text(); + var field = $(' - - - - - - - - - - - - - - - Botmaster Info: - - - - - - - - - - - Remote Database Data - - - - - - - - - - - - - - - - - - - - - - - - - - - Debugging Options: - - - - - - - - - - - - - - - - - - - Debugging output method - - - - - - - - - [notes] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      -
      Individual Bot Configuration
      - [BotsTableForm] -
       
      - [SubmitButton] -
       
      -
      -
      - - -
      - - - - - - -
      - - -
      # Note: This is generally the server computer's local network name.
      -
      * Note: Place each bot name on a separate line. At least one name is required.
      - - - - -
      -   The configuration for both the bot and the database are complete, - but you now need to upload your bot's AIML categories. Please log into the - Admin Page to complete the process. -
      -
      -
      -
      NOTE:
      If you wish to use a different account - for your Program O Admin user, then you will need to edit the configuration - file manually. If you have any questions about this, or anything else about - Program O, please visit the forums at . -
      - - -
      Bot Info for [current_bot_name]
      -
      - - - - -
      -
      - - - - -
      -
      - - - - -
      -
      - - - - -
      -
      - - - - -
      -
      - - - - -
      -
      - - - - -
      -
      - - - - -
      - - -
      Installation Complete!
      - [notes] - - -
      - WARNING! - - Could not create the database. Please check your database settings and make any - necessary corrections. Some database hosts do not allow users to directly create - new databases. You may need to contact your hosting provider to learn how to set - up a new database. If you have questions about this, or anytyhing else regarding - Program O, please visit the forums at www.program-o.com - -
      - - - - - - - - - - - - - diff --git a/install/config_template_tags.dat b/install/config_template_tags.dat index 0b394ee..c61799f 100644 --- a/install/config_template_tags.dat +++ b/install/config_template_tags.dat @@ -1,54 +1,29 @@ -[adm_dbh] -[adm_dbn] -[adm_dbu] -[adm_dbp] -[alternate_local_server_name] -[botmaster_name] -[default_bot_id] -[default_format] -[default_pattern] -[default_update_aiml_code] -[default_conversation_lines] -[default_remember_up_to] -[default_debugemail] -[default_debugshow] -[default_debugmode] -[default_save_state] -[domain_name] -[error_response] -[host] -[local_dbh] -[local_dbPort] -[local_dbn] -[local_dbu] -[local_dbp] -[local_admin_dbh] -[local_admin_dbn] -[local_admin_dbu] -[local_admin_dbp] -[localhost] -[lsTZ] -[quickdebug] -[remote_admin_dbh] -[remote_admin_dbn] -[remote_admin_dbu] -[remote_admin_dbp] -[remote_dbh] -[remote_dbPort] -[remote_dbn] -[remote_dbu] -[remote_dbp] -[remote_default_format] -[remote_default_pattern] -[remote_default_update_aiml_code] -[remote_default_conversation_lines] -[remote_default_remember_up_to] -[remote_default_debugemail] -[remote_default_debugshow] -[remote_default_debugmode] -[remote_error_response] -[remote_quickdebug] -[remote_writetotemp] -[remotehost] -[rsTZ] -[writetotemp] +[adm_dbh] +[adm_dbn] +[adm_dbu] +[adm_dbp] +[alternate_local_server_name] +[botmaster_name] +[default_bot_id] +[format] +[pattern] +[conversation_lines] +[remember_up_to] +[debugemail] +[debug_level] +[debug_mode] +[save_state] +[domain_name] +[error_response] +[host] +[dbh] +[dbPort] +[dbn] +[dbu] +[dbp] +[localhost] +[time_zone_locale] +[quickdebug] +[remotehost] +[rsTZ] +[writetotemp] diff --git a/install/help.css b/install/help.css index cb92e60..c130e3c 100644 --- a/install/help.css +++ b/install/help.css @@ -1,91 +1,149 @@ -/* -My Program-O Version 2.0.1 -Program-O chatbot admin area -Written by Elizabeth Perreau and Dave Morton -Aug 2011 -for more information and support please visit www.program-o.com -*/ -html, body { - height: 100%; -} -body { - background-color: #9FC03A; - /*background-color: white;*/ - background-image: url(../admin/images/CompRule.png); - background-repeat: repeat; - background-image: url(../admin/images/repeated_header2.jpg); - background-repeat: repeat-x; - color: #000000; - margin: 0; - padding: 0; - width: 99.5%; - height: 99.5%; - overflow: hidden; -} -div.row { clear: both; padding-top: 8px; border: none; width: 95%; margin-left: auto; margin-right: auto; } -div.row span.label {float: left; width: 49.5%; text-align: left; padding-left: 3px; background-color: #DDFFFF; border: 1px outset #999; padding-top: 3px; padding-bottom: 3px;} -div.row span.label:hover, div.row span.formw:hover {background-color: #EEE;} -.center { text-align: center; } -.bold { font-weight: bold; } -.ul, .ll, .ur, .lr { - width: 6px; - height: 6px; - position: absolute; - background-color: transparent; - background-repeat: no-repeat; - z-index: 1; -} -.ul { top: 0; left: 0; background-image: url(../admin/images/ul.png); } -.ll { bottom: 0; left: 0; background-image: url(../admin/images/ll.png); } -.ur { top: 0; right: 0; background-image: url(../admin/images/ur.png); } -.lr { bottom: 0; right: 0; background-image: url(../admin/images/lr.png); } -#title { - text-align: center; - font-size: x-large; - font-weight: bold; - position: absolute; - top: 125px; - left: 25px; - right: 25px; - /*width: 94%;*/ - height: 30px; - z-index: 100; - background-color: transparent; - background-image: url(../admin/images/bg_list.gif); - background-position: bottom; - background-repeat: repeat-x; - margin: 0; - padding: 0px; -} -#titlespan { - background-repeat: no-repeat; - background-position: center; - background-color: transparent; - color: white; - z-index: 50; - width: 100%; -} -#logo { - background-image: url(../admin/images/bg_header2.jpg); - background-repeat: no-repeat; - background-position: center 0; - /*background-color: white;*/ - width: 100%; - height: 140px; - border: none; - margin: 0; - padding: 0; - float: none; -} -#container{ - margin: 0 auto; - padding: 1em; - text-align: left; - background-color: white; - overflow: auto; - position: absolute; - top: 160px; - left: 25px; - right: 25px; - bottom: 25px; -} +/*************************************** + * http://www.program-o.com + * PROGRAM O + * Version: 2.6.11 + * FILE: help.css + * AUTHOR: Elizabeth Perreau and Dave Morton + * DATE: 06-10-2013 + * DETAILS: Provides style and presentation settings for the help page + ***************************************/ +html, body { + height: 100%; +} + +body { + background: #9FC03A url(../admin/images/repeated_header2.jpg) repeat-x; + color: #000000; + margin: 0; + padding: 0; + width: 99.5%; + height: 99.5%; + overflow: hidden; +} + +div.row { + clear: both; + padding-top: 8px; + border: none; + width: 95%; + margin-left: auto; + margin-right: auto; +} + +div.row span.label { + float: left; + width: 49.5%; + text-align: left; + padding-left: 3px; + background-color: #DDFFFF; + border: 1px outset #999; + padding-top: 3px; + padding-bottom: 3px; +} + +div.row span.label:hover, div.row span.formw:hover { + background-color: #EEE; +} + +div.description { + padding: 0.5em; + text-align: justify; + box-sizing: border-box; +} + +.center { + text-align: center; +} + +.bold { + font-weight: bold; +} + +.underline { + border: 1px outset #666; + border-right-width: 2px; + border-bottom-width: 2px; +} + +.big { + font-size: larger; +} + +.ul, .ll, .ur, .lr { + width: 6px; + height: 6px; + position: absolute; + background: transparent no-repeat; + z-index: 1; +} + +.ul { + top: 0; + left: 0; + background-image: url(../admin/images/ul.png); +} + +.ll { + bottom: 0; + left: 0; + background-image: url(../admin/images/ll.png); +} + +.ur { + top: 0; + right: 0; + background-image: url(../admin/images/ur.png); +} + +.lr { + bottom: 0; + right: 0; + background-image: url(../admin/images/lr.png); +} + +#title { + text-align: center; + font-size: x-large; + font-weight: bold; + position: absolute; + top: 125px; + left: 25px; + right: 25px; + /*width: 94%;*/ + height: 30px; + z-index: 100; + background: transparent url(../admin/images/bg_list.gif) repeat-x bottom; + margin: 0; + padding: 0; +} + +#titlespan { + background: transparent no-repeat center; + color: white; + z-index: 50; + width: 100%; +} + +#logo { + background: url(../admin/images/bg_header2.jpg) no-repeat center 0; + /*background-color: white;*/ + width: 100%; + height: 140px; + border: none; + margin: 0; + padding: 0; + float: none; +} + +#container { + margin: 0 auto; + padding: 1em; + text-align: left; + background-color: white; + overflow: auto; + position: absolute; + top: 160px; + left: 25px; + right: 25px; + bottom: 25px; +} diff --git a/install/help.php b/install/help.php index 159f695..56b777a 100644 --- a/install/help.php +++ b/install/help.php @@ -1,47 +1,58 @@ -'); # search params for start and end of sections -define ('SECTION_END', ''); # search params for start and end of sections - -$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; -$section = "Page$page"; -$template = file_get_contents('help.tpl.htm'); - -$content = getSection('HelpPage', $template, false); -$helpContent = getSection($section,$template); -$content = str_replace('[helpContent]', $helpContent, $content); - -die($content); - - -function getSection($sectionName, $page_template, $notFoundReturn = true) { - $sectionStart = str_replace('[section]', $sectionName, SECTION_START); - $sectionStartLen = strlen($sectionStart); - $sectionEnd = str_replace('[section]', $sectionName, SECTION_END); - $startPos = strpos($page_template, $sectionStart, 0); - if ($startPos === false) { - if ($notFoundReturn) { - return ''; - } - else $startPos = 0; - } - else $startPos += $sectionStartLen; - $endPos = strpos($page_template, $sectionEnd, $startPos) - 1; - $sectionLen = $endPos - $startPos; - $out = substr($page_template, $startPos, $sectionLen); - return trim($out); -} - - -?> +'); # search params for start and end of sections +define('SECTION_END', ''); # search params for start and end of sections + +$template = file_get_contents('help.tpl.htm'); +$content = help_getSection('HelpPage', $template, false); +$helpContent = help_getSection('HelpMain', $template); +$content = str_replace('[helpContent]', $helpContent, $content); + +echo($content); + +/** + * Function help_getSection + * + * @param $sectionName + * @param $page_template + * @param bool $notFoundReturn + * @return string + */ +function help_getSection($sectionName, $page_template, $notFoundReturn = true) +{ + $sectionStart = str_replace('[section]', $sectionName, SECTION_START); + $sectionStartLen = strlen($sectionStart); + $sectionEnd = str_replace('[section]', $sectionName, SECTION_END); + $startPos = strpos($page_template, $sectionStart, 0); + + if ($startPos === false) + { + if ($notFoundReturn) { + return ''; + } + else { + $startPos = 0; + } + } + else { + $startPos += $sectionStartLen; + } + $endPos = strpos($page_template, $sectionEnd, $startPos) - 1; + $sectionLen = $endPos - $startPos; + $out = substr($page_template, $startPos, $sectionLen); + + return trim($out); +} diff --git a/install/help.tpl.htm b/install/help.tpl.htm index 963cc45..4c5d2bc 100644 --- a/install/help.tpl.htm +++ b/install/help.tpl.htm @@ -1,367 +1,398 @@ - - - - - Program O Installation help - - - - - -
      -
      - Program O Installation Help -
      -
      -
      -
      -
      -
      -
      - [helpContent] -
      -
       
      - - - - - - -
      What all this stuff means...
      -
      - This help file is intended to describe the various settings used to install Program O to your website. - Each section is explained, and when necessary examples are given. Some settings are automatically - generated, but should be checked carefully for accuracy. For more information, or to ask questions, - please check out the Program O Forums.
      -
       
      -
      -
      General Configuration
      -
      - Domain Name -
      - This is the base address for your bot's page. If your bot can be reached at http://www.example.com/myBot/ - then your domain name is www.example.com
      - The install script is set up to detect this value automatically, but you should verify the value, just - to be on the safe side. -
      -
      -
      - Alternate Local Server Name -
      - If your development server is on a local network, this setting will help Program O to determine the correct - database settings to use for your bot. Without this setting in place, trying to access your local bot from - another local network computer could result in errors, as it will try to use the remote database information, - rather than using the local DB settings. Set this to the local "network name" of your computer. -
      -
      -
      - Number of bots -
      - The default is one (1) bot, and in most cases the script will automatically set this to the correct value. - If, for some reason, it doesn't, then you can set it manually, after you set the names of your bot(s). -
      -
      -
      - Bot Names -
      Use this field to set the names of all your bots.
      -
      -
      - Name of the default bot -
      - This is the name of your primary (default) bot. Simply select the name you want to use from the drop-down list. -
      -
      -
      - Botmaster Info -
      -
      - Admin User Name -
      Required: The username that you wish to use to log into the admin pages.
      -
      -
      - Admin Password -
      Required: The password that you wish to use to log into the admin pages.
      -
      -
      - Confirm Password -
      - Required: This is checked against the above password to make sure you didn't mis-type it. - Saves your butt if you made a mistake. -
      -
      -
      - Your Name -
      Required: Also self-explanatory.
      -
      -
      - Email Address -
      Required: Used internally to set up contact details,and to send debugging data.
      -
      -
      - Debugging Options -
      -
      - Debugging output method -
      Default: File
      - This setting allows you to choose how to create debugging information in the following ways: -
        -
      • - Show in Source Places debugging data in the source code of the page, within - HTML comment tags. Note - only works when Response Format is set to HTML(See below) -
      • -
      • - File Creates a debug file that's based on the user's internal id and the current time. - Stored in the /chatbot/debug/ folder. -
      • -
      • - Display Prints debugging data directly to the screen. Note - only works when Response - Format is set to HTML(See below) -
      • -
      • - email Sends debugging data via email - WARNING! can create a LOT of email - traffic! Use sparingly, and with care. -
      • -
      -
      -
      -
      - Debug Level -
      - Here you have a choice of four options: -
        -
      • Nothing No debug data is created. Improves bot performance by a small amount.
      • -
      • General Only basic information is generated.
      • -
      • - General/SQL In addition to the data generated in General, above, all SQL statements - are also recorded. -
      • -
      • - Everything The results from a vast number of operations, calculations or function calls - (sometimes several times within certain functions) is generated. WARNING! HUGE amounts - of data is generated with this setting, to the point where script performance will be affected, - especially if the debug output method is set to "Show in Source". -
      • -
      - For the most part, this should be set to "Nothing", unless you're trying to trace a problem with your AIML - files, and even then, it's best to only use "General". The only time the other two settings should be used - is to troubleshoot the script itself. -
      -
      -
      - Save-State -
      - Default: Session
      - Again, you have some options: -
        -
      • - Session This is the default behavior, and it causes Program O to save all current user data into a - single session variable, in array format. -
      • -
      • - Database Instead of saving the user data in the PHP session array, this saves the data to the - bot's database instead. -
      • -
      - There's no real advantage, one way or the other here. It's simply a matter of preference. -
      -
      -
      - Response Format -
      - Default: HTML
      - Program O gives you three options for parsing your bot's responses: -
        -
      • - HTML This option causes Program O to output responses in HTML format. It's the best way for a - beginning Botmaster to get started with their bot, because it's the easiest to set up. -
      • -
      • - JSON This option causes the script to parse the bot's output as a JSON - (JavaScript Object Notation) object, which - your bot script can use to embed the responses within a currently open HTML page. This method is best - used by client-side scripts, such as jQuery. -
      • -
      • - XML Program O can also parse the bot's output as an XML document, which can be used by either - client-side scripts, server-side scripts, or even stand-alone computer applications. XML is by - far, the most versatile of the three available options, but it's also the most challenging to use and - configure. -
      • -
      - There are sample pages in the gui directory that you can - examine and use, but bear in mind that these are simply example pages, and will likely require some - modification prior to use. -
      -
      -
      - Error Response String -
      - This is what your bot will say to the user if it encounters an internal error. What you set it to is - completely up to you, but it must have a value of some sort. -
      -
      -
      - Default Pickup Line Pattern - Default: * -
      - This is usually best kept as the default pattern, unless you're upgrading from Program O version 1.0, - which used "RANDOM PICKUP LINE" as the pattern. Even if you are upgrading, you can also leave - this value as * and modify your AIML piclup line category to use * for it's pattern. -
      -
      -
      - Chat Line Count -
      - This setting tells Program O how many lines of chat to display at a time. Set it to zero (0) for unlimited, - but beware that this can affect your bot's performance if it gets a lot of users at one time. -
      -
      -
      - History Count -
      - This setting determines how far back your bot "remembers" the conversation. There is no "unlimited" - setting for this one, since that would eat up resources far more than necessary, and would severely - affect bot performance. It's suggested that this be set to no more than 30, to prevent undue lag. -
      -
      -
       
      -
      - Database Server Config
      - - Please note that you must have already created the database for your bot, - though that database can be empty (the script will create the necessary tables automatically). - Please have the database connection information ready at this point. - -
      -
      Local Database Data
      -
      - Local Database Host Name -
      - Default: localhost
      - Required: This setting is part of the local database login credentials that allow Program O to connect to your - bot's local database. Under the vast majority of circumstances, this is simply 'localhost', but there is - the occaisional rare exception. -
      -
      -
      - Local Database Port -
      - Default: 3306
      - Required only in the very rare case that the database server has been configured to use a different port. -
      -
      -
      - Local Database Name -
      - Required: When you performed the task of creating your local database, you should have already named the DB, - along with configuring username and password. The DB name from that information goes here. -
      -
      -
      - Local Database Username -
      - Required: Just as with the name of the database, above, this is part of the connection infrmation that you - should have gathered when you set up your bot's DB. -
      -
      -
      - Local Database Password -
      - Required: This is the password for your script to access your bot's database. There's no confirmation for - this field, like there was with the admin password, earlier, so be careful to ensure it's entered correctly. -
      -
      -
      - Local Database Timezone -
      - This is the timezone info for your local server (the one you're currently using). - This setting should be automatically set by the installation script, but you should verify it's accuracy. -
      -
      -
      Remote Database Data
      -
      - Remote Database Host Name -
      - Required: This is the host name of the remote database server, and again is part of the information that you - should have already gathered when you created your remote database. -
      -
      -
      - Remote Database Port -
      - Default: 3306
      - Just like the local database port, this setting is only required if the database server uses a non-standard - port. -
      -
      -
      - Remote Database Name -
      - Required: See Local DB name for details. -
      -
      -
      - Remote Database Username -
      - Required: See Local Database Username for details. -
      -
      -
      - Remote Database Password -
      - Required: See Local Database Password for details. -
      -
      -
      - Remote Database Timezone -
      - Required, but automatically generated: See Local Database Timezone for details. -
      -
      - - - - - + + + + + Program O Installation help + + + + + +
      +
      + Program O Installation Help +
      +
      +
      +
      +
      +
      +
      + [helpContent] +
      +
       
      + + + + + + +
      What all this stuff means...
      +
      + This help file is intended to describe the various settings used to install Program O to your website. + Each section is explained, and when necessary examples are given. Some settings are automatically + generated, but should be checked carefully for accuracy. please visit the website Program O.
      +
       
      +
      +
      General Configuration
      + +
       
      + +
      Botmaster Info
      + +
      + Your Name +
      + Fairly well self-explanatory. Just enter what you want your bot's visiters to know you by. +
      +
      + +
      + Email Address +
      + Used internally to set up contact details, and to (optionally) send debugging data. + See below for debugging options. +
      +
      + +
       
      +
      Bot Configuration
      + +
      + Much of the information in this section is pretty much self explanatory, but in the interest + of being thorough, the following items are included. :) +
      + +
      + Bot Name +
      + It's been said that names are the cornerstone of existence. Names also have power. Choose your + bot's name wisely. +
      +
      + +
      + Bot Description +
      + This is where you provide whatever "back-story" or attributes you like for your chatbot. Feel + free to leave this blank, but remember that a more well thought out bot will USUALLY make for + a higher quality bot. +
      +
      + +
      + Bot Active +
      + In order for a chatbot to be visible and/or usable, it has to be marked in the database as active, + but there are times when you need to disable or hide your chatbot. Changing this setting in the + admin pages is the best way to handle that. If you want folks to be able to use your bot, then + this needs to be set to TRUE (checked). +
      +
      + +
      + Default Pickup Line Pattern +
      + This is the "default" category that Program O searches for if nothing else matches. Traditionally + this is set to RANDOM PICKUP LINE or *, but it can be set to + pretty much anything (within reason). Whatever you set this to, just make sure that there is an + AIML category with a <pattern> that matches it. +
      +
      + +
      + Error Response String +
      + This is what your bot will say to the user if it encounters an internal error. What you set it to is + completely up to you, but it must have a value of some sort. +
      +
      + +
      + Chat Line Count +
      + This setting tells Program O how many lines of chat to display at a time. Set it to zero (0) for unlimited, + but beware that this can affect your bot's performance if it gets a lot of users at one time. +
      +
      + +
      + History Count +
      + This setting determines how far back your bot "remembers" the conversation. There is no "unlimited" + setting for this one, since that would eat up resources far more than necessary, and would severely + affect bot performance. It's suggested that this be set to no more than 30, to prevent undue lag. + If you're using the JSON response setting, you may want to set this to only 1, and use client-side + scripting to add the responses to a div of (possibly) already existing responses, so as to create + an "unlimited" chat log for the visitors. Just a suggestion, though. :) +
      +
      + +
      + Response Format +
      + Default: HTML
      + Program O gives you three options for parsing your bot's responses: +
        +
      • + HTML This option causes Program O to output responses in HTML format. It's the best way for a + beginning Botmaster to get started with their bot, because it's the easiest to set up. +
      • +
      • + JSON This option causes the script to parse the bot's output as a JSON + (JavaScript Object Notation) object, which + your bot script can use to embed the responses within a currently open HTML page. This method is best + used by client-side scripts, such as jQuery. +
      • +
      • + XML Program O can also parse the bot's output as an XML document, which can be used by either + client-side scripts, server-side scripts, or even stand-alone computer applications. XML is by + far, the most versatile of the three available options, but it's also the most challenging to use and + configure. +
      • +
      + There are sample pages in the GUI directory that you can + examine and use, but bear in mind that these are simply example pages, and will likely require some + modification prior to use. +
      +
      + +
       
      + +
      Database Configuration
      + +
       
      + +
      Database Connection Info
      + +
      + Please note that you must have already created the database for your bot, + though that database can be empty (the script will create the necessary tables automatically). + This is so because many web hosting companies do not allow their customers to create new + databases except through their web hosting control panels. + Please have the database connection information ready at this point. +
      + +
      + Database Host Name +
      + Default: localhost
      + This setting is part of the local database login credentials that allow Program O to connect to your + bot's local database. Under the vast majority of circumstances, this is simply 'localhost', but there is + the occasional rare exception. +
      +
      + +
      + Database Port +
      + Default: 3306
      + Required only in the very rare case that the database server has been configured to use a different port. +
      +
      + +
      + Database Name +
      + When you performed the task of creating your local database, you should have already named the DB, + along with configuring username and password. The DB name from that information goes here. +
      +
      + +
      + Database Username +
      + Just as with the name of the database, above, this is part of the connection information that you + should have gathered when you set up your bot's DB. +
      +
      + +
      + Database Password +
      + This is the password for your script to access your bot's database. There's no confirmation for + this field, like there was with the admin password, earlier, so be careful to ensure it's entered correctly. +
      +
      + +
      + Database Timezone +
      + This is the timezone info for server. + This setting should be automatically set by the installation script, but you should verify it's accuracy. +
      +
      + +
       
      + +
      Chatbot Administration Info
      + +
      + Admin Area Username +
      + The administration pages for Program O are restricted to the chatbot's administrator, and so + must be provided with proper credentials. This is the username for the Admin account. +
      +
      + +
      + Admin Area Password +
      + Just like the admin username, this setting is required. This password is encrypted in the + database, to help improve security. +
      +
      + +
       
      + +
      Debugging Options
      + +
      + Debug Level +
      + This setting determines the amount of data generated by the debugging functions. Here you have + a choice of four options: +
        +
      • Nothing No debug data is created. Improves bot performance by a small amount.
      • +
      • General Only basic information is generated.
      • +
      • + General/SQL In addition to the data generated in General, above, all SQL statements + are also recorded. +
      • +
      • + Everything The results from a vast number of operations, calculations or function calls + (sometimes several times within certain functions) is generated. WARNING! HUGE amounts + of data is generated with this setting, to the point where script performance will be affected, + especially if the debug output method is set to "Show in Source". And for God's sake, DON'T + use this if you're going to have debugging data sent to your email! +
      • +
      + For the most part, this should be set to "Nothing", unless you're trying to trace a problem with your AIML + files, and even then, it's best to only use "General". The only time the other two settings should be used + is to troubleshoot the script itself. +
      +
      + +
      + Debug Mode +
      Default: File
      + "Debug Mode" is a setting to determine which output method is used for providing debugging data. + This setting allows you to choose how to obtain debugging information in the following ways: +
        +
      • + Show in Source Places debugging data in the source code of the page, within + HTML comment tags. Note - only works when Response Format is set to HTML(See below) +
      • +
      • + File Creates a debug file that's based on the user's internal id and the current time. + Stored in the /chatbot/debug/ folder. +
      • +
      • + Display Prints debugging data directly to the screen. Note - only works when Response + Format is set to HTML(See below) +
      • +
      • + email Sends debugging data via email - WARNING! can create a LOT of email + traffic! Use sparingly, and with care. +
      • +
      +
      +
      + +
      + Save State +
      + Default: Session
      + This setting determines how Program O will manage user data. Again, you have some options: +
        +
      • + Session This is the default behavior, and it causes Program O to save all current user data into a + single session variable, in array format. +
      • +
      • + Database Instead of saving the user data in the PHP session array, this saves the data to the + bot's database instead. +
      • +
      + There's no real advantage, one way or the other here. It's simply a matter of preference. +
      +
      + +
       
      + +
      Troubleshooting
      + +
      + File Permissions +
      +

      + If you've been directed here, then your web server doesn't allow the install script to modify file permissions automatically. + If this is the case, then modification of the permissions for the config file will have to be done manually, BEFORE + the install script can continue. Otherwise, you'll end up with a corrupted installation, and will have to start over. + This problem seems to be limited to Linux systems, since Windows handles file permissions differently. +

      +

      + To manually change file permissions on a remote server, you usually have a couple of options. If your hosting provider provides + a user control panel, you can use the File Management section to change permissions. You can also use the FTP client software + that you used to upload the file to change permissions. The methods for changing file permissions with an FTP client application + vary from program to program, so if you're unsure about how to go about the task, try reading your FTP program's Help file. + Search for either "file permissions", or "CHMOD". +

      +

      + The correct setting for the file permissions for the config file is 755. If you're unsure what this means, then have a look at + http://www.perlfect.com/articles/chmod.shtml for a good tutorial + about the CHMOD command, and what the various settings mean. For our purposes, that setting means that the config file can + only be written to by the file's "owner", while everyone can read and execute the file. If the file can't be properly written + to, then the script can't save the settings that you've set or changed, and your bot won't work correctly, so it's important + that the config file has it's permissions set correctly. +

      +
      +
      + diff --git a/install/images/sort_asc_disabled.png b/install/images/sort_asc_disabled.png new file mode 100644 index 0000000..4e144cf Binary files /dev/null and b/install/images/sort_asc_disabled.png differ diff --git a/install/images/sort_desc_disabled.png b/install/images/sort_desc_disabled.png new file mode 100644 index 0000000..7824973 Binary files /dev/null and b/install/images/sort_desc_disabled.png differ diff --git a/install/index.php b/install/index.php index 36c3733..b121231 100644 --- a/install/index.php +++ b/install/index.php @@ -1,112 +1,97 @@ -0) - { - $row=mysql_fetch_array($result); - $_SESSION['poadmin']['uid']=$row['id']; - $_SESSION['poadmin']['name']=$row['uname']; - $_SESSION['poadmin']['lip']=$row['lastip']; - $_SESSION['poadmin']['llastlogin']=date('l jS \of F Y h:i:s A', strtotime($row['lastlogin'])); - - - if(!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet - { - $ip=$_SERVER['HTTP_CLIENT_IP']; - } - elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy - { - $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; - } - else - { - $ip=$_SERVER['REMOTE_ADDR']; - } - - $sqlupdate = "UPDATE `$dbn`.`myprogramo` SET `lastip` = '$ip', `lastlogin` = CURRENT_TIMESTAMP WHERE uname = '".$uname."' limit 1"; - //echo $sql; - mysql_query($sqlupdate,$dbconn)or die(mysql_error()); - - $_SESSION['poadmin']['ip']=$ip; - $_SESSION['poadmin']['lastlogin']=date('l jS \of F Y h:i:s A'); - } - else - { - $msg = "incorrect username/password"; - } - - mysql_close($dbconn); - - if($msg == "") - { - header("location: pages/index.php"); - } -} -elseif(isset($_GET['msg'])) -{ - $msg = htmlentities($_GET['msg']); -} -else -{ - $msg = ""; -} -?> - - - - -My Program-O - - - - -

       

      My Program-O

      -

      $msg

      ";?>

      -

       

      -

       

      - - - - -
      - Login -
      - -
      - - -
      -
      - - -
      - -
      - -
      -
      -

       

      -
      - - + + + + + + My-Program O + + + + +
      +
      +
      + +
      +
      +
      +
      +
      +
      + My Program O +
      +
      + It appears that Program O is already installed. If you wish to run the install script again, + click here. Otherwise, you can go to the + admin page, or check out your chatbot, here. +
      +
      + +
      + + diff --git a/install/install.tpl.htm b/install/install.tpl.htm new file mode 100644 index 0000000..ac9cc79 --- /dev/null +++ b/install/install.tpl.htm @@ -0,0 +1,360 @@ + + + + + Program O Installation + + + + +
      +
      + Program O Installation +
      +
      +
      +
      +
      +
      [cr6] + + +[blank]
      + [mainPanel] +
      +
      +
      [cr4] + + +[blank]
       
      + + + + + + + + + + + + + + [errorMessage] +
      + Help!
      + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Botmaster Info:
      Bot Configuration:
      + +
      + + + +
      + + + +
      [notes]
      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Database Configuration:
      + +
      + +
      + +
      + +
      + + +
      +
      +
      + + +
      Installation Complete!
      + [notes] + + +
      Installation Failed!
      + [errorMessage] + + +
      + WARNING! + + Could not create the database. Please check your database settings and make any + necessary corrections. Some database hosts do not allow users to directly create + new databases. You may need to contact your hosting provider to learn how to set + up a new database. If you have questions about this, or anytyhing else regarding + Program O, please visit us at www.program-o.com + +
      + + +

      + Please note that all fields are required, but some are already filled out with generic, default + values. +

      +

      + For more detailed information with this page, please see the Help Page, or + click the help icon for an individual field. +

      +   + + +
      + The configuration for both the bot and the database are complete, + but you now need to upload your bot's AIML categories.
      +
      Your bot will not work until you have completed these instructions outlined here: administer the chatbot.
      +
      Once you are confident you are ready to proceed please log into the Admin Page to upload your aiml files and create your bot.
      +
      +
      +
      NOTE:
      If you wish to use a different account + for your Program O Admin user, then you will need to edit the configuration + file manually.
      If you have any questions about this, or anything else Program O, please visit us at www.program-o.com. +
      + + +[blank]
      +

      + Hi, and welcome to the Program O version [pgo_version] installer. There's a lot to do, so let's get started. + First off, let's check your server to see if Program O will run smoothly (or at all) here. Please + note the checklist below. It shows the state of your PHP version, and any necessary (or recommended) + PHP extensions that Program O needs. Fail indicates a missing + dependency, while Pass means that dependency is good to go. +

      +

      Program O Requirements Checklist

      +
        +
      • PHP Version >= 5.4.0: [version]
      • +
      • + PHP PDO extensions (NOTE: At least one enabled extension must be listed below) +
          +[pdo_reqs] +[rec_exts] +
        +
      • +
      +
      +

      Program O folders that must be writable:

      +
        +
      • Config folder writable? [cfw]
      • +
      • Debug folder writable? [dfw]
      • +
      • Logs folder writable? [lfw]
      • +
      • Sessions folder writable? [sfw]
      • +
      +
      +
      + + +[blank]
      + Continue +
      + + +[blank]
      + + +
      + +[blank] + + diff --git a/install/install_config.php b/install/install_config.php new file mode 100644 index 0000000..70d2670 --- /dev/null +++ b/install/install_config.php @@ -0,0 +1,72 @@ +Warning! Unicode Support is not available on this server. Non-English languages will not display properly. Please ask your hosting provider to enable the PHP mbstring extension to correct this.

      \n"; +} \ No newline at end of file diff --git a/install/install_programo.php b/install/install_programo.php index 28df874..0311fe2 100644 --- a/install/install_programo.php +++ b/install/install_programo.php @@ -1,237 +1,795 @@ -'); # search params for start and end of sections -define ('SECTION_END', ''); # search params for start and end of sections -define ('PHP_SELF', $_SERVER['PHP_SELF']); # search params for start and end of sections -ini_set("display_errors", 1); -ini_set("log_errors",true); -ini_set("error_log","../logs/error.log"); - -$currentDir = getcwd(); -$defaultBaseDir = rtrim(str_ireplace('admin', '', $currentDir), '\\/'); -$sep = (substr($defaultBaseDir,0, 1) == '/') ? '/' : '\\'; - -$localhost = $remotehost = $local_dbh = $remote_dbh = $local_dbn = $remote_dbn = $local_dbu = $remote_dbu = $local_dbp = $remote_dbp = 'Required'; -$myHost = $_SERVER['SERVER_NAME']; -$domain_name = $myHost; -switch ($myHost) { - case 'localhost': - case $alternate_local_server_name: - $localhost = $myHost; - $local_dbh = $dbh; - $local_dbn = $dbn; - $local_dbu = $dbu; - $local_dbp = $dbp; - break; - default: - $remotehost = $myHost; - $remote_dbh = $dbh; - $remote_dbn = $dbn; - $remote_dbu = $dbu; - $remote_dbp = $dbp; -} -$PHP_SELF = $_SERVER['PHP_SELF']; # search params for start and end of sections - -$config_template = file_get_contents('../config/global_config.tpl'); -$replTagsArray = file('../install/config_template_tags.dat', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); -$replVarsArray = array(); -foreach ($replTagsArray as $value) { - $value = trim($value); - $tmpVal = str_replace('[', '', $value); - $tmpVal = str_replace(']', '', $tmpVal); - $replVarsArray[$value] = $tmpVal; -} -chdir(dirname( realpath( __FILE__ ))); -$rsTzVal = (function_exists('date_default_timezone_get')) ? date_default_timezone_get() : ''; -$validPages = array(1,2,3); -$page_template = file_get_contents('config.tpl.htm'); -if (isset($_POST)) { - foreach ($_POST as $key => $value) { - $_SESSION[$key] = rtrim($value); - } -} -$page = (isset($_REQUEST['page'])) ? $_REQUEST['page'] : 1; -if (!in_array($page, $validPages)) $page = 1; -$func = (isset($_REQUEST['func'])) ? $_REQUEST['func'] : ''; -if (!empty($func)) $nextPage = $func($page); -$pageTemplate = 'container'; -$pageNotes = ucwords("Page $page Notes"); -$content = getSection('Header', $page_template, false); -$content .= "\n"; -$content .= getSection($pageTemplate, $page_template); -$content .= getSection('Footer', $page_template); -$content .= getSection("jQuery$page", $page_template); -$notes = getSection($pageNotes, $page_template); -$submitButton = getSection('SubmitButton', $page_template); -$main = getMain($page, $page_template); -$tmpSearchArray = array(); -$content = str_replace('[title]', "Step $page", $content); -$content = str_replace('[mainPanel]', $main, $content); -$content = str_replace('[localhost]', $localhost, $content); -$content = str_replace('[notes]', $notes, $content); -$content = str_replace('[SubmitButton]', $submitButton, $content); -$content = str_replace('[rsTZ]', $rsTzVal, $content); -$content = str_replace('[local_dbPort]', $dbPort, $content); -$content = str_replace('[remote_dbPort]', $dbPort, $content); -$content = str_replace('[PHP_SELF]', PHP_SELF, $content); -foreach ($replVarsArray as $search => $replace) { - $replace = trim($replace); - if (!isset($$replace)) $$replace = 'crap'; - $repl1 = $$replace; - if (isset($$replace) and $$replace != 'crap') { - $content = str_replace($search, $$replace, $content); - } -} -if ($page == 2) $content = str_replace('[BotsTableForm]', page2form(), $content); -$content = str_replace('[cr6]', "\n ", $content); -$content = str_replace('[cr4]', "\n ", $content); -$content = str_replace('[nextPage]', $page + 1, $content); -$content = str_replace("\r\n", "\n", $content); -$content = str_replace("\n\n", "\n", $content); -foreach ($replVarsArray as $key => $value) { - if (isset($$value)) { - $content = str_replace($key, $$value, $content); - } -} -$content .= << - -endPage; - -exit($content); - -function getSection($sectionName, $page_template, $notFoundReturn = true) { - $sectionStart = str_replace('[section]', $sectionName, SECTION_START); - $sectionStartLen = strlen($sectionStart); - $sectionEnd = str_replace('[section]', $sectionName, SECTION_END); - $startPos = strpos($page_template, $sectionStart, 0); - if ($startPos === false) { - if ($notFoundReturn) { - return ''; - } - else $startPos = 0; - } - else $startPos += $sectionStartLen; - $endPos = strpos($page_template, $sectionEnd, $startPos) - 1; - $sectionLen = $endPos - $startPos; - $out = substr($page_template, $startPos, $sectionLen); - return trim($out); -} - -function save($page) { - global $replVarsArray, $quickdebug, $writetotemp; - $curSession = print_r($_SESSION, true); - switch ($page) { - case 1: - $out = 2; - break; - case 2: - $out = 3; - break; - case 3: - $newConfigFile = file_get_contents('../config/global_config.tpl'); - $addScriptInfo = 0; - if (isset($_SESSION['botNames'])) { - $botNameList = $_SESSION['botNames']; - $nameArray = split("\n", $botNameList); - $flippedNameArray = array_flip($nameArray); - $defaultBotID = $_SESSION['default_bot_id']; - } - $botArrayTemplate = '$botNames = array('; - foreach ($replVarsArray as $key => $value) { - if ($key == 'botNames') { - $nameList = split("\n", $value); - $listCount = 1; - foreach ($nameList as $botName) { - $botName = trim($botName); - $botArrayTemplate .= "$listCount => '$botName', "; - $listCount++; - } - $botArrayTemplate = rtrim($botArrayTemplate, ',') . ');'; - $value = $botArrayTemplate . "\r\n"; - } - $repl = (isset($_SESSION[$value])) ? $_SESSION[$value] : ''; - $newConfigFile = str_replace($key, $repl, $newConfigFile); - $newConfigFile = str_replace("\r\n", "\n", $newConfigFile); - } - $newConfigFile = str_replace('[addScriptInfo]', $addScriptInfo, $newConfigFile); - $x = file_put_contents('../config/global_config.php', $newConfigFile); - $out = ""; - break; - default: - } - return $out; -} - -function getMain($page, $page_template) { - global $dbh, $dbu, $dbp, $dbn, $dbPort; - switch ($page) { - case 1: - return getSection('GeneralConfig',$page_template); - break; - case 2: - return getSection('AIMLConfig', $page_template); - break; - } - $numBots = $_SESSION['bot_count']; - $sql_template = << \ No newline at end of file +getSection('Header'); +$content .= $template->getSection('Container'); +$content .= $template->getSection('Footer'); +$content .= $template->getSection("jQuery$page"); +$notes = $template->getSection(ucwords("Page $page Notes")); +$submitButton = $template->getSection('SubmitButton'); +switch ((int) $page) +{ + case 0: + $main = $template->getSection('Checklist'); + $writeCheckArray = array('config' => _CONF_PATH_, 'debug' => _DEBUG_PATH_, 'logs' => _LOG_PATH_, 'session' => _SESSION_PATH_); + $writeCheckKeys = array('config' => '[cfw]', 'debug' => '[dfw]', 'logs' => '[lfw]', 'session' => '[sfw]'); + $writeCheckRepl = array(); + $errFlag = false; + $writableTemplate = '[pf]'; + $writeErrorText = ''; + foreach ($writeCheckArray as $key => $folder) + { + $testFile = "{$folder}_test.txt"; + $searchTag = $writeCheckKeys[$key]; + $curSpan = $writableTemplate; + $permissions = fileperms($folder); + $txtPerms = showPerms($permissions); + $writeErrorTemplate = "
    • The {$key} folder ({$folder}) is not writable. Permissions: {$txtPerms}
    • "; + $writeFlag = (is_writable($folder)) ? true : (chmod($folder, 0755)); + //$writeFlag = ($key !== 'debug') ? true : false; // Debugging/testing code. Comment out unless testing or debugging + $writeErrorText .= ($writeFlag) ? '' : $writeErrorTemplate; + $errFlag = (!$writeFlag) ? true: $errFlag; + $curSpan = str_replace('[perms]', $txtPerms, $curSpan); + $curSpan = str_replace('[tf]', ($writeFlag) ? 'true' : 'false', $curSpan); + $curSpan = str_replace('[pf]', ($writeFlag) ? 'Pass' : 'Fail', $curSpan); + $main = str_replace($searchTag, $curSpan, $main); + } + + $additionalInfo = << +

      + The following folders had permissions problems that PHP could not fix. This is usually an 'ownership' issue, and + most often occurs with Linux-based systems. Please check owner and group settings for the following directories: +

        +$writeErrorText +
      +
      + Owner and group for these folders should be the same as those of your web server software. If they are not, then you + need to change that. If you have trouble with this, or have questions, please report the issue on + our GitHub page. +

      + +endInfo; + + $reqs_not_met = ''; + if ($errFlag) { + $reqs_not_met .= $additionalInfo; + } + + $pvpf = ($version_compare >= 0) ? 'true' : 'false'; + $liTemplate = '
    • PDO [ext] extension enabled?: [pf]
    • ' . PHP_EOL; + $pdo_reqs = ''; + $oddEven = 0; + foreach ($pdoExtensionsArray as $ext) + { + $oeClass = ($oddEven % 2 === 0) ? 'odd' : 'even'; + $tf = (extension_loaded($ext)) ? 'true' : 'false'; + $pf = ($tf === 'true') ? 'Pass' : 'Fail'; + $curLi = $liTemplate; + $curLi = str_replace('[ext]', $ext, $curLi); + $curLi = str_replace('[oe]', $oeClass, $curLi); + $curLi = str_replace('[tf]', $tf, $curLi); + $curLi = str_replace('[pf]', $pf, $curLi); + if ($tf === 'false') $curLi = ''; + $pdo_reqs .= $curLi; + if ($tf !== 'false') $oddEven++; + } + if (empty($pdo_reqs)) # || true # Again, debugging/testing code, to be commented out for actual use. + { + $pdo_reqs = $liTemplate; + $pdo_reqs = str_replace('[oe]', 'even', $pdo_reqs); + $pdo_reqs = str_replace('[ext]', '', $pdo_reqs); + $pdo_reqs = str_replace('[tf]', 'false', $pdo_reqs); + $pdo_reqs = str_replace('[pf]', 'Fail', $pdo_reqs); + $reqs_not_met .= 'There are no PDO extensions available, so the install process cannot continue.
      '; + } + elseif ($pvpf == 'false') + { + $reqs_not_met .= "Your PHP version ({$myPHP_Version}) is older than the minimum required version of {$php_min_version}, so the install process cannot continue.
      "; + } + $reqs_met = empty($reqs_not_met); + $main = str_replace('[pdo_reqs]', rtrim($pdo_reqs), $main); + $rec_exts = ''; + $oddEven = 0; + foreach ($recommendedExtensionsArray as $ext) + { + $oeClass = ($oddEven % 2 === 0) ? 'odd' : 'even'; + $curLi = $liTemplate; + $tf = (extension_loaded($ext)) ? 'true' : 'false'; + $pf = ($tf === 'true') ? 'Pass' : 'Fail'; + $curLi = str_replace('[ext]', $ext, $curLi); + $curLi = str_replace('[oe]', $oeClass, $curLi); + $curLi = str_replace('[tf]', $tf, $curLi); + $curLi = str_replace('[pf]', $pf, $curLi); + $rec_exts .= $curLi; + $oddEven++; + } + $main = str_replace('[rec_exts]', rtrim($rec_exts), $main); + $main = str_replace('[pgo_version]', VERSION, $main); + $main = str_replace('[pvpf]', $pvpf, $main); + $main = str_replace('[version]', $myPHP_Version, $main); + $continueLink = ($reqs_met) ? $template->getSection('Page0ContinueForm') :'
      ' . $reqs_not_met . 'Please correct the items above in order to continue.
      ' . PHP_EOL; + $main .= $continueLink; + $main = str_replace('[blank]', '', $main); + break; + case 1: + $main = $template->getSection('InstallForm'); + break; + default: $main = $message; +} +$tmpSearchArray = array(); +$content .= "\n \n"; + +$content = str_replace('[mainPanel]', $main, $content); +$content = str_replace('[http_host]', $myHost, $content); +$content = str_replace('[bot_default_aiml_pattern]', $pattern, $content); +$content = str_replace('[error_response]', $error_response, $content); +$content = str_replace('[notes]', $notes, $content); +$content = str_replace('[PHP_SELF]', PHP_SELF, $content); +$content = str_replace('[errorMessage]', $errorMessage, $content); +$content = str_replace('[cr6]', "\n ", $content); +$content = str_replace('[cr4]', "\n ", $content); +$content = str_replace("\r\n", "\n", $content); +$content = str_replace("\n\n", "\n", $content); +$content = str_replace('[admin_url]', _ADMIN_URL_, $content); +$content = str_replace('[mainPanel]', $main, $content); +$content = str_replace('[blank]', '', $content); + +exit($content); + +/** + * Function Save + * + * @return string + */ +function Save() +{ + global $template, $error_response, $session_dir, $dbConn, $dbh, $dbu, $dbp, $dbn, $dbPort; + $errorMessage = ''; + + // Do we want to start with a fresh, empty database? + // initialize some variables and set some defaults + $tagSearch = array(); + $varReplace = array(); + $conversation_lines = 1; + $remember_up_to = 10; + $error_response = 'No AIML category found. This is a Default Response.'; + $_SESSION['errorMessage'] = ''; + + + $configContents = file_get_contents(_INSTALL_PATH_ . 'config.template.php'); + $configContents = str_replace('[session_dir]', $session_dir, $configContents); + clearstatcache(); + + // First off, create the sessions folder and set permissions if it doesn't exist + if (!file_exists(_SESSION_PATH_)) + { + mkdir(_SESSION_PATH_, 0755); + + // Place an empty index file in the sessions folder to prevent direct access to the folder from a web browser + file_put_contents(_SESSION_PATH_ . 'index.html', ''); + } + + // Write the config file from all of the posted form values + + // Get the posted values, sanitize them and put them into an array + $myPostVars = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); + + // Sort the array - not strictly necessary, but we're doing it anyway + ksort($myPostVars); + + // Check to see if the user wants a 'fresh start' + $clearDB = (isset($myPostVars['clearDB'])) ? true : false; + + // Create the SEARCH and REPLACE arrays + foreach ($myPostVars as $key => $value) + { + $tagSearch[] = "[$key]"; + $varReplace[] = $value; + } + + // Replace all [placeholder] tags with the posted values + $configContents = str_replace($tagSearch, $varReplace, $configContents); + + // Write the new config file + $saveFile = file_put_contents(_CONF_PATH_ . 'global_config.php', $configContents); + + // Now, update the data to the database, starting with making sure the tables are installed + $dbh = $myPostVars['dbh']; + $dbn = $myPostVars['dbn']; + $dbu = $myPostVars['dbu']; + $dbp = $myPostVars['dbp']; + $dbPort = $myPostVars['dbPort']; + + // Open the database to begin storing stuff + $dbConn = db_open(); + + // Check to see if the database is empty, or if the user checked the "clear DB" option + $row = db_fetch('show tables'); + if (empty ($row) || true === $clearDB) + { + $sqlArray = file('new.sql', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + foreach ($sqlArray as $sql) + { + try { + $insertSuccess = db_write($sql,null, false, __FILE__, __FUNCTION__, __LINE__, false); + if (false === $insertSuccess){ + throw new Exception('SQL operation failed!'); + } + } + catch(Exception $e) + { + $words = explode(' ', $sql); + switch (strtoupper($words[0])) + { + case 'DROP': + $table = trim($words[4], '`;'); + break; + case 'CREATE': + $table = trim($words[5], '`'); + break; + case 'ALTER': + $table = trim($words[2], '`'); + break; + default: + $words[0] .= ' data into'; + $table = trim($words[2], '`'); + } + $errMsg = "Error while attempting to {$words[0]} the {$table} table. SQL:\n$sql\nError Code: {$e->getCode()}\nError message: {$e->getMessage()}\n-----------------------------------------------\n"; + error_log($errMsg, 3, _LOG_PATH_ . 'install.sql.error.log'); + } + + } + } + else + { + // Let's make sure that the srai lookup table exists + try { + /** @noinspection SqlNoDataSourceInspection */ + $sql = 'SELECT bot_id FROM srai_lookup;'; + $result = db_fetchAll($sql); + } + catch(Exception $e) { + try { + /** @noinspection SqlDialectInspection */ + /** @noinspection SqlNoDataSourceInspection */ + $sql = "DROP TABLE IF EXISTS `srai_lookup`; CREATE TABLE IF NOT EXISTS `srai_lookup` (`id` int(11) NOT NULL AUTO_INCREMENT, `bot_id` int(11) NOT NULL, `pattern` text NOT NULL, `template_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `pattern` (`pattern`(64)) COMMENT 'Search against this for performance boost') ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Contains previously stored SRAI calls' AUTO_INCREMENT=1;"; + $affectedRows = db_write($sql,null, false, __FILE__, __FUNCTION__, __LINE__, false); + } + catch(Exception $e) { + $errorMessage .= 'Could not add SRAI lookup table! Error is: ' . $e->getMessage(); + } + } + } + + /** @noinspection SqlDialectInspection */ + /** @noinspection SqlNoDataSourceInspection */ + $sql = 'SELECT `bot_id` FROM `bots`;'; + $result = db_fetchAll($sql); + + $bot_id = 1; + $bot_name = $myPostVars['bot_name']; + $bot_desc = $myPostVars['bot_desc']; + $bot_active = $myPostVars['bot_active']; + $bot_parent_id = 1; + $format = $myPostVars['format']; + $save_state = $myPostVars['save_state']; + $debugemail = $myPostVars['debugemail']; + $debugshow = $myPostVars['debug_level']; + $debugmode = $myPostVars['debug_mode']; + $error_response = $myPostVars['error_response']; + $default_aiml_pattern = 'RANDOM PICKUP LINE'; + + $params = array( + ':bot_id' => $bot_id, + ':bot_name' => $bot_name, + ':bot_desc' => $bot_desc, + ':bot_active' => $bot_active, + ':bot_parent_id' => $bot_parent_id, + ':format' => $format, + ':save_state' => $save_state, + ':conversation_lines' => $conversation_lines, + ':remember_up_to' => $remember_up_to, + ':debugemail' => $debugemail, + ':debugshow' => $debugshow, + ':debugmode' => $debugmode, + ':error_response' => $error_response, + ':default_aiml_pattern' => $default_aiml_pattern, + ); + + if (count($result) == 0) + { + /** @noinspection SqlDialectInspection */ + /** @noinspection SqlNoDataSourceInspection */ + $sql = 'insert ignore into `bots` (`bot_id`, `bot_name`, `bot_desc`, `bot_active`, `bot_parent_id`, `format`, `save_state`, `conversation_lines`, `remember_up_to`, `debugemail`, `debugshow`, `debugmode`, `error_response`, `default_aiml_pattern`) + values ( :bot_id, :bot_name, :bot_desc, :bot_active, :bot_parent_id, :format, :save_state, :conversation_lines, :remember_up_to, :debugemail, :debugshow, :debugmode, :error_response, :default_aiml_pattern);'; + + } + else + { + /** @noinspection SqlDialectInspection */ + /** @noinspection SqlNoDataSourceInspection */ + $sql = 'update `bots` set + `bot_name` = :bot_name, + `bot_desc` = :bot_desc, + `bot_active` = :bot_active, + `bot_parent_id` = :bot_parent_id, + `format` = :format, + `save_state` = :save_state, + `conversation_lines` = :conversation_lines, + `remember_up_to` = :remember_up_to, + `debugemail` = :debugemail, + `debugshow` = :debugshow, + `debugmode` = :debugmode, + `error_response` = :error_response, + `default_aiml_pattern` = :default_aiml_pattern +where `bot_id` = :bot_id; + '; + } + + try + { + $debugSQL = db_parseSQL($sql, $params); + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__, false); + $errorMessage .= ($affectedRows > 0) ? '' : ' Could not create new bot!
      '; + $errorMessage .= ($affectedRows > 0) ? '' : "SQL: {$debugSQL}"; + } + catch(Exception $e) { + $errorMessage .= $e->getMessage(); + } + $cur_ip = $_SERVER['REMOTE_ADDR']; + $encrypted_adm_dbp = md5($myPostVars['adm_dbp']); + $adm_dbu = $myPostVars['adm_dbu']; + + /** @noinspection SqlDialectInspection */ + /** @noinspection SqlNoDataSourceInspection */ + $sql = "SELECT id FROM `myprogramo` WHERE `user_name` = '$adm_dbu' AND `password` = '$encrypted_adm_dbp';"; + $result = db_fetchAll($sql); + + if (count($result) == 0) + { + /** @noinspection SqlDialectInspection */ + /** @noinspection SqlNoDataSourceInspection */ + $sql = "INSERT ignore INTO `myprogramo` (`id`, `user_name`, `password`, `last_ip`) VALUES(null, :adm_dbu, :encrypted_adm_dbp, :cur_ip);"; + $params = array( + ':adm_dbu' => $adm_dbu, + ':encrypted_adm_dbp' => $encrypted_adm_dbp, + ':cur_ip' => $cur_ip, + ); + + try { + $affectedRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__, false); + $errorMessage .= ($affectedRows > 0) ? '' : ' Could not create new Admin!'; + } + catch(Exception $e) { + $errorMessage .= $e->getMessage(); + } + } + + if (empty($errorMessage)) { + $out = $template->getSection('InstallComplete'); + } + else { + $out = $template->getSection('InstallError'); + } + + return $out . $errorMessage; +} + +/* + * function create_session_dirname + * Creates a cryptographically secure, random folder name for storing session files + * return (string) $out + */ + +function create_session_dirname() +{ + global $path_separator; + $randBytes = openssl_random_pseudo_bytes(12); + $suffix = bin2hex($randBytes); + $out = "ses_{$suffix}{$path_separator}"; + return $out; +} + +function showPerms ($permissions) +{ + switch ($permissions & 0xF000) { + case 0xC000: // socket + $info = 's'; + break; + case 0xA000: // symbolic link + $info = 'l'; + break; + case 0x8000: // regular + $info = 'r'; + break; + case 0x6000: // block special + $info = 'b'; + break; + case 0x4000: // directory + $info = 'd'; + break; + case 0x2000: // character special + $info = 'c'; + break; + case 0x1000: // FIFO pipe + $info = 'p'; + break; + default: // unknown + $info = 'u'; + } + +// Owner + $info .= (($permissions & 0x0100) ? 'r' : '-'); + $info .= (($permissions & 0x0080) ? 'w' : '-'); + $info .= (($permissions & 0x0040) ? + (($permissions & 0x0800) ? 's' : 'x' ) : + (($permissions & 0x0800) ? 'S' : '-')); + +// Group + $info .= (($permissions & 0x0020) ? 'r' : '-'); + $info .= (($permissions & 0x0010) ? 'w' : '-'); + $info .= (($permissions & 0x0008) ? + (($permissions & 0x0400) ? 's' : 'x' ) : + (($permissions & 0x0400) ? 'S' : '-')); + +// World + $info .= (($permissions & 0x0004) ? 'r' : '-'); + $info .= (($permissions & 0x0002) ? 'w' : '-'); + $info .= (($permissions & 0x0001) ? + (($permissions & 0x0200) ? 't' : 'x' ) : + (($permissions & 0x0200) ? 'T' : '-')); + + return $info; +} + + +/** + * function db_open() + * Connect to the database + * + * @link http://blog.program-o.com/?p=1340 + * @internal param string $host - db host + * @internal param string $user - db user + * @internal param string $password - db password + * @internal param string $database_name - db name + * @return PDO $dbConn - the database connection resource + */ +function db_open() +{ + global $dbh, $dbu, $dbp, $dbn, $dbPort; + + try + { + $dbConn = new PDO("mysql:host=$dbh;port=$dbPort;dbname=$dbn;charset=utf8", $dbu, $dbp); + $dbConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $dbConn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); + $dbConn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); + } + catch (Exception $e) { + //exit('Program O has encountered a problem with connecting to the database. With any luck, the following information will help: ' . $e->getMessage()); + $errMsg = << +Error message: {$e->getMessage()}
      +Host: {$dbh}
      +Port: {$dbPort}
      +User: {$dbu}
      +Pass: {$dbp}
      +endMsg; + exit($errMsg); + } + + return $dbConn; +} + +/** + * function db_close() + * Close the connection to the database + * + * @link http://blog.program-o.com/?p=1343 + * @internal param resource $dbConn - the open connection + * + * @return null + */ +function db_close($inPGO = true) +{ + if ($inPGO) runDebug(__FILE__, __FUNCTION__, __LINE__, 'This DB is now closed. You don\'t have to go home, but you can\'t stay here.', 2); + return null; +} + +/** + * function db_fetch + * Fetches a single row of data from the database + * + * @param string $sql - The SQL query to execute + * @param mixed $params - either an array of placeholder/value pairs, or null, for no parameters + * @param string $file - the path/filename of the file that the function call originated in + * @param string $function - the name of the function that the function call originated in + * @param string $line - the line number of the originating function call + * + * @return mixed $out - Either the row of data from the DB query, or false, if the query fails + */ +function db_fetch($sql, $params = null, $file = 'unknown', $function = 'unknown', $line = 'unknown', $inPGO = true) +{ + global $dbConn; + //error_log(print_r($dbConn, true), 3, _LOG_PATH_ . 'dbConn.txt'); + try + { + $sth = $dbConn->prepare($sql); + ($params === null) ? $sth->execute() : $sth->execute($params); + $out = $sth->fetch(); + + return $out; + } + catch (Exception $e) + { + //error_log("bad SQL encountered in file $file, line #$line. SQL:\n$sql\n", 3, _LOG_PATH_ . 'badSQL.txt'); + $pdoError = print_r($dbConn->errorInfo(), true); + + /** @noinspection PhpUndefinedVariableInspection */ + $psError = print_r($sth->errorInfo(), true); + if ($inPGO) runDebug(__FILE__, __FUNCTION__, __LINE__, "An error was generated while extracting a row of data from the database in file $file at line $line, in the function $function - SQL:\n$sql\nPDO error: $pdoError\nPDOStatement error: $psError", 0); + return false; + } +} + +/** + * function db_fetchAll + * Fetches rows of data from the database + * + * @param string $sql - The SQL query to execute + * @param mixed $params - either an array of placeholder/value pairs, or null, for no parameters + * @param string $file - the path/filename of the file that the function call originated in + * @param string $function - the name of the function that the function call originated in + * @param string $line - the line number of the originating function call + * + * @return mixed $out - Either an array of data from the DB query, or false, if the query fails + */ +function db_fetchAll($sql, $params = null, $file = 'unknown', $function = 'unknown', $line = 'unknown', $inPGO = true) +{ + global $dbConn; + + try { + $sth = $dbConn->prepare($sql); + ($params === null) ? $sth->execute() : $sth->execute($params); + return $sth->fetchAll(); + } + catch (Exception $e) + { + //error_log("bad SQL encountered in file $file, line #$line. SQL:\n$sql\n", 3, _LOG_PATH_ . 'badSQL.txt'); + $pdoError = print_r($dbConn->errorInfo(), true); + + /** @noinspection PhpUndefinedVariableInspection */ + $psError = print_r($sth->errorInfo(), true); + $errSql = db_parseSQL($sql, $params); + $dParams = (!is_null($params)) ? print_r($params, true) : 'null'; + $errMsg = <<prepare($sql); + + switch (true) + { + case ($params === null): + $sth->execute(); + break; + + case ($multi === true): + foreach ($params as $row) { + $sth->execute($row); + } + break; + + default: + $sth->execute($params); + } + + return $sth->rowCount(); + } + catch (Exception $e) + { + $errParams = ($multi) ? $row : $params; + $paramsText = print_r($errParams, true); + $pdoError = print_r($dbConn->errorInfo(), true); + + /** @noinspection PhpUndefinedVariableInspection */ + $psError = print_r($sth->errorInfo(), true); + $eMessage = $e->getMessage(); + $errSQL = db_parseSQL($sql, $errParams); + $errorMessage = << $value) + { + if (is_numeric($key)) // deal with unnamed placeholders (?) + { + $limit = 1; + $search = '/\?/'; + $value = (is_numeric($value)) ? $value : "'$value'"; // if $value is a string, encase it in quotes + $out = preg_replace($search, $value, $out, $limit); + } + else // handle named parameters + { + $value = (is_numeric($value)) ? $value : "'$value'"; // if $value is a string, encase it in quotes + $out = str_replace($key, $value, $out); + } + } + } + return $out; +} + +function db_lastInsertId($name = null) +{ + global $dbConn; + return $dbConn->lastInsertId($name); +} + + diff --git a/install/new.sql b/install/new.sql index db52bf7..e1761d9 100644 --- a/install/new.sql +++ b/install/new.sql @@ -1,239 +1,32 @@ -CREATE TABLE IF NOT EXISTS `aiml` ( - id int(11) NOT NULL AUTO_INCREMENT, - bot_id int(11) NOT NULL DEFAULT '1', - aiml text NOT NULL, - pattern varchar(255) NOT NULL, - thatpattern varchar(255) NOT NULL, - template text NOT NULL, - topic varchar(255) NOT NULL, - filename varchar(255) NOT NULL, - php_code text NOT NULL, - PRIMARY KEY (id), - KEY topic (topic) -); -CREATE TABLE IF NOT EXISTS `bots` ( - bot_id int(11) NOT NULL AUTO_INCREMENT, - bot_name varchar(255) NOT NULL, - bot_desc varchar(255) NOT NULL, - bot_active int(11) NOT NULL DEFAULT '1', - bot_parent_id int(11) NOT NULL DEFAULT '0', - format varchar(10) NOT NULL DEFAULT 'html', - update_aiml_code int(11) NOT NULL DEFAULT '1', - save_state enum('session','database') NOT NULL DEFAULT 'session', - conversation_lines int(11) NOT NULL DEFAULT '7', - remember_up_to int(11) NOT NULL DEFAULT '10', - debugemail int(11) NOT NULL, - debugshow int(11) NOT NULL DEFAULT '1', - debugmode int(11) NOT NULL DEFAULT '1', - default_aiml_pattern varchar(255) NOT NULL DEFAULT 'RANDOM PICKUP LINE', - PRIMARY KEY (bot_id) -); - - -CREATE TABLE IF NOT EXISTS `aiml_userdefined` ( - id int(11) NOT NULL AUTO_INCREMENT, - aiml text NOT NULL, - pattern text NOT NULL, - template text NOT NULL, - userid int(11) NOT NULL, - botid int(11) NOT NULL, - `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (id) -); -CREATE TABLE IF NOT EXISTS `botpersonality` ( - id int(11) NOT NULL AUTO_INCREMENT, - bot tinyint(4) NOT NULL DEFAULT '0', - `name` varchar(255) NOT NULL DEFAULT '', - `value` text NOT NULL, - PRIMARY KEY (id), - KEY botname (bot,`name`)); -CREATE TABLE IF NOT EXISTS `conversation_log` ( - id int(11) NOT NULL AUTO_INCREMENT, - input text NOT NULL, - response text NOT NULL, - userid int(11) NOT NULL, - bot_id int(11) NOT NULL, - `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (id)); -CREATE TABLE IF NOT EXISTS `myprogramo` ( - id int(11) NOT NULL AUTO_INCREMENT, - uname varchar(10) NOT NULL, - pword varchar(255) NOT NULL, - lastip varchar(25) NOT NULL, - lastlogin timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (id), - UNIQUE KEY uname (uname)); -CREATE TABLE IF NOT EXISTS `spellcheck` ( - id int(11) NOT NULL AUTO_INCREMENT, - missspelling varchar(100) NOT NULL, - correction varchar(100) NOT NULL, - PRIMARY KEY (id)); -INSERT IGNORE INTO spellcheck (id, missspelling, correction) VALUES -(1, 'shakespear', 'shakespeare'), -(2, 'shakesper', 'shakespeare'), -(3, 'ws', 'william shakespeare'), -(4, 'shakespaer', 'shakespeare'), -(5, 'shakespere', 'shakespeare'), -(6, 'shakepeare', 'shakespeare'), -(7, 'shakeper', 'shakespeare'), -(8, 'willam', 'william'), -(9, 'willaim', 'william'), -(10, 'romoe', 'romeo'), -(11, 'julet', 'juliet'), -(12, 'juleit', 'juliet'), -(13, 'thats', 'that is'), -(89, 'Youa aare', 'you are'), -(88, 'that s', 'that is'), -(87, 'wot s', 'what is'), -(17, 'whats', 'what is'), -(18, 'wot', 'what'), -(19, 'wots', 'what is'), -(86, 'what s', 'what is'), -(21, 'lool', 'lol'), -(27, 'pogram', 'program'), -(23, 'progam', 'program'), -(26, 'progam', 'program'), -(28, 'r', 'are'), -(29, 'u', 'you'), -(30, 'ur', 'your'), -(31, 'v', 'very'), -(32, 'k', 'ok'), -(33, 'np', 'no problem'), -(34, 'ta', 'thank you'), -(35, 'ty', 'thank you'), -(36, 'omg', 'oh my god'), -(37, 'letts', 'lets'), -(38, 'yeah', 'yes'), -(39, 'yeh', 'yes'), -(40, 'portugues', 'portuguese'), -(41, 'hehe', 'lol'), -(42, 'ha', 'lol'), -(43, 'intersting', 'interesting'), -(44, 'qestion', 'question'), -(45, 'elrond hubbard', 'l.ron hubbard'), -(46, 'programm', 'program'), -(47, 'c''mon', 'come on'), -(48, 'ye', 'yes'), -(49, 'im', 'i am'), -(50, 'fuckahh', 'fucker'), -(51, 'shakespeare bot', 'shakespearebot'), -(52, 'goodf', 'good'), -(53, 'dont', 'do not'), -(54, 'cos', 'because'), -(55, 'cus', 'because'), -(56, 'coz', 'because'), -(57, 'cuz', 'because'), -(58, 'isnt', 'is not'), -(59, 'isn''t', 'is not'), -(60, 'i''m', 'i am'), -(61, 'ima', 'i am a'), -(62, 'chheese', 'cheese'), -(63, 'watsup', 'what is up'), -(64, 'let s', 'let us'), -(65, 'he s', 'he is'), -(66, 'she''s', 'she is'), -(67, 'i ll', 'i will'), -(68, 'they ll', 'they will'), -(69, 'you re', 'you are'), -(70, 'you ve', 'you have'), -(71, 'hy', 'hey'), -(72, 'msician', 'musician'), -(74, 'don t', 'do not'), -(75, 'can t', 'cannot'), -(76, 'favourite', 'favorite'), -(77, 'colour', 'color'), -(78, 'won t', 'will not'), -(79, 'a/s/l', 'asl'), -(80, 'haven t', 'have not'), -(81, 'doesn t', 'does not'), -(82, 'a/s/l/', 'asl'), -(83, 'wht', 'what'), -(84, 'It s been', 'It has been'), -(85, 'its been', 'it has been'), -(90, 'you re', 'you are'), -(91, 'theres', 'there is'), -(92, 'youa re', 'you are'), -(93, 'youa aare', 'you are'), -(94, 'wath', 'what'), -(95, 'waths', 'what is'), -(96, 'hy', 'hey'), -(97, 'oke', 'ok'), -(98, 'okay', 'ok'), -(99, 'errm', 'erm'), -(100, 'aare', 'are'), -(101, 'shakespeare bot', 'william shakespeare'), -(102, 'shakespearebot', 'william shakespeare'), -(103, 'werwerwer', 'war'), -(109, 'program o', 'programo'), -(106, 'ddddddddd', 'ddddddddd'), -(107, 'ddddddddd', 'ddddddddd'), -(108, 'fgfgfgfg', 'fgfgfgfg'), -(110, 'program-o', 'programo'), -(111, 'fav', 'favorite'); - -CREATE TABLE IF NOT EXISTS `undefined_defaults` ( - id int(11) NOT NULL AUTO_INCREMENT, - bot int(11) NOT NULL, - pattern varchar(255) NOT NULL, - replacement varchar(255) NOT NULL, - PRIMARY KEY (id)); -INSERT IGNORE INTO undefined_defaults (id, bot, pattern, replacement) VALUES -(1, 1, 'your name', 'my friend'), -(2, 1, 'your it', 'it'), -(3, 1, 'your location', 'your town'), -(4, 1, 'your does', 'it'), -(5, 1, 'your genus', 'human'), -(6, 1, 'your he', 'him'), -(7, 1, 'your she', 'her'), -(8, 1, 'your them', 'those'), -(9, 1, 'your memory', 'that'), -(10, 1, 'your they', 'those'), -(11, 1, 'your gender', 'woman'), -(12, 1, 'your has', 'that'), -(13, 1, 'your we', 'you and me'), -(14, 1, 'your x', 'x'), -(15, 1, 'your personality', 'chatty'), -(16, 1, 'etype', 'great and witty'), -(17, 1, 'your top', 'om'), -(18, 1, 'your second', 'om'), -(19, 1, 'your third', 'om'), -(20, 1, 'your fourth', 'om'), -(21, 1, 'your fifth', 'om'), -(22, 1, 'your sixth', 'om'), -(23, 1, 'your seventh', 'om'), -(24, 1, 'your last', 'om'), -(25, 1, 'your want', 'it'), -(26, 1, 'your is', 'it'), -(27, 1, 'you dealerhand', 'The dealers hand'), -(28, 1, 'your playerhand', 'Your hand'), -(29, 1, 'your dealerace', 'dealer total'), -(30, 1, 'your playerace', 'your total'); - -CREATE TABLE IF NOT EXISTS `unknown_inputs` ( - id int(11) NOT NULL AUTO_INCREMENT, - input text NOT NULL, - userid int(11) NOT NULL, - `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (id)); -CREATE TABLE IF NOT EXISTS `users` ( - id int(11) NOT NULL AUTO_INCREMENT, - name text not null, - session_id varchar(255) NOT NULL, - bot_id int(11) NOT NULL, - chatlines int(11) NOT NULL, - ip varchar(100) NOT NULL, - referer text NOT NULL, - browser text NOT NULL, - date_logged_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - last_update timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', - state text NOT NULL, - PRIMARY KEY (id)); -CREATE TABLE IF NOT EXISTS `wordcensor` ( - censor_id int(11) NOT NULL AUTO_INCREMENT, - word_to_censor varchar(50) NOT NULL, - replace_with varchar(50) NOT NULL DEFAULT '****', - bot_exclude varchar(255) NOT NULL, - PRIMARY KEY (censor_id)); -INSERT IGNORE INTO wordcensor (censor_id, word_to_censor, replace_with, bot_exclude) VALUES -(1, 'shit', 's***', ''), -(2, 'fuck', 'f***', '') \ No newline at end of file +DROP TABLE IF EXISTS `aiml`; +DROP TABLE IF EXISTS `aiml_userdefined`; +DROP TABLE IF EXISTS `botpersonality`; +DROP TABLE IF EXISTS `bots`; +DROP TABLE IF EXISTS `client_properties`; +DROP TABLE IF EXISTS `conversation_log`; +DROP TABLE IF EXISTS `myprogramo`; +DROP TABLE IF EXISTS `spellcheck`; +DROP TABLE IF EXISTS `srai_lookup`; +DROP TABLE IF EXISTS `undefined_defaults`; +DROP TABLE IF EXISTS `unknown_inputs`; +DROP TABLE IF EXISTS `users`; +DROP TABLE IF EXISTS `wordcensor`; + +CREATE TABLE IF NOT EXISTS `aiml` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bot_id` int(11) NOT NULL DEFAULT '1', `pattern` varchar(256) NOT NULL, `thatpattern` varchar(256) NOT NULL, `template` text NOT NULL, `topic` varchar(256) NOT NULL, `filename` varchar(256) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`), KEY `topic` (`topic`), KEY `thatpattern` (`thatpattern`), KEY `pattern` (`pattern`), KEY `bot_id` (`bot_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `aiml_userdefined` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pattern` varchar(256) NOT NULL, `thatpattern` varchar(256) NOT NULL, `template` text NOT NULL, `user_id` varchar(256) NOT NULL, `bot_id` int(11) NOT NULL, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`), KEY `pattern` (`pattern`), KEY `thatpattern` (`thatpattern`), KEY `bot_id` (`bot_id`), KEY `user_id` (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `botpersonality` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bot_id` tinyint(4) NOT NULL DEFAULT '0', `name` varchar(256) NOT NULL DEFAULT '', `value` text NOT NULL, PRIMARY KEY (`id`), KEY `botname` (`bot_id`,`name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `bots` ( `bot_id` int(11) NOT NULL AUTO_INCREMENT, `bot_name` varchar(256) NOT NULL, `bot_desc` varchar(256) NOT NULL, `bot_active` int(11) NOT NULL DEFAULT '1', `bot_parent_id` int(11) NOT NULL DEFAULT '0', `format` varchar(10) NOT NULL DEFAULT 'html', `save_state` enum('session','database') NOT NULL DEFAULT 'session', `conversation_lines` int(11) NOT NULL DEFAULT '7', `remember_up_to` int(11) NOT NULL DEFAULT '10', `debugemail` text NOT NULL, `debugshow` int(11) NOT NULL DEFAULT '1', `debugmode` int(11) NOT NULL DEFAULT '1', `error_response` text NOT NULL, `default_aiml_pattern` varchar(256) NOT NULL DEFAULT 'RANDOM PICKUP LINE', `unknown_user` varchar(256) NOT NULL DEFAULT 'Seeker', PRIMARY KEY (`bot_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `client_properties` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `bot_id` int(11) NOT NULL, `name` text NOT NULL, `value` text NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `conversation_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `input` text NOT NULL, `response` longtext NOT NULL, `user_id` int(11) NOT NULL, `convo_id` text NOT NULL, `bot_id` int(11) NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `myprogramo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(256) NOT NULL, `password` varchar(256) NOT NULL, `last_ip` varchar(25) NOT NULL, `last_login` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `user_name` (`user_name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `spellcheck` ( `id` int(11) NOT NULL AUTO_INCREMENT, `missspelling` varchar(100) NOT NULL, `correction` varchar(100) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `srai_lookup` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bot_id` int(11) NOT NULL, `pattern` text NOT NULL, `template_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `template_id` (`template_id`), KEY `pattern` (`bot_id`,`pattern`(64))) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Contains previously stored SRAI calls'; +CREATE TABLE IF NOT EXISTS `undefined_defaults` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bot_id` int(11) NOT NULL, `user_id` int(11) NOT NULL DEFAULT '0', `pattern` text NOT NULL, `template` varchar(256) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `unknown_inputs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bot_id` int(11) NOT NULL, `input` text NOT NULL, `user_id` int(11) NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` text NOT NULL, `session_id` varchar(256) NOT NULL, `bot_id` int(11) NOT NULL, `chatlines` int(11) NOT NULL, `ip` varchar(100) NOT NULL, `referer` text NOT NULL, `browser` text NOT NULL, `date_logged_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `state` text NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `wordcensor` ( `censor_id` int(11) NOT NULL AUTO_INCREMENT, `word_to_censor` varchar(50) NOT NULL, `replace_with` varchar(50) NOT NULL DEFAULT '****', `bot_exclude` varchar(256) NOT NULL, PRIMARY KEY (`censor_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `bots` (`bot_id`, `bot_name`, `bot_desc`, `bot_active`, `bot_parent_id`, `format`, `save_state`, `conversation_lines`, `remember_up_to`, `debugemail`, `debugshow`, `debugmode`, `error_response`, `default_aiml_pattern`, `unknown_user`) VALUES (1, 'newTest', '', 1, 1, 'json', 'session', 1, 10, 'dmorton@geekcavecreations.com', 4, 1, '', 'RANDOM PICKUP LINE', 'Seeker'); +INSERT INTO `myprogramo` (`id`, `user_name`, `password`, `last_ip`, `last_login`) VALUES (0, 'dmorton@geekcavecreations.com', '986fb4494b455629e27ba1d1ad8cfdc8', '127.0.0.1', '2017-06-18 14:49:02'); +INSERT INTO `spellcheck` (`id`, `missspelling`, `correction`) VALUES (1, 'shakespear', 'shakespeare'), (2, 'shakesper', 'shakespeare'), (3, 'ws', 'william shakespeare'), (4, 'shakespaer', 'shakespeare'), (5, 'shakespere', 'shakespeare'), (6, 'shakepeare', 'shakespeare'), (7, 'shakeper', 'shakespeare'), (8, 'willam', 'william'), (9, 'willaim', 'william'), (10, 'romoe', 'romeo'), (11, 'julet', 'juliet'), (12, 'juleit', 'juliet'), (13, 'thats', 'that is'), (89, 'Youa aare', 'you are'), (88, 'that s', 'that is'), (87, 'wot s', 'what is'), (17, 'whats', 'what is'), (18, 'wot', 'what'), (19, 'wots', 'what is'), (86, 'what s', 'what is'), (21, 'lool', 'lol'), (27, 'pogram', 'program'), (23, 'progam', 'program'), (26, 'progam', 'program'), (28, 'r', 'are'), (29, 'u', 'you'), (30, 'ur', 'your'), (31, 'v', 'very'), (32, 'k', 'ok'), (33, 'np', 'no problem'), (34, 'ta', 'thank you'), (35, 'ty', 'thank you'), (36, 'omg', 'oh my god'), (37, 'letts', 'lets'), (38, 'yeah', 'yes'), (39, 'yeh', 'yes'), (40, 'portugues', 'portuguese'), (41, 'hehe', 'lol'), (42, 'ha', 'lol'), (43, 'intersting', 'interesting'), (44, 'qestion', 'question'), (45, 'elrond hubbard', 'l.ron hubbard'), (46, 'programm', 'program'), (47, 'c\'mon', 'come on'), (48, 'ye', 'yes'), (49, 'im', 'i am'), (50, 'fuckahh', 'fucker'), (51, 'shakespeare bot', 'shakespearebot'), (52, 'goodf', 'good'), (53, 'dont', 'do not'), (54, 'cos', 'because'), (55, 'cus', 'because'), (56, 'coz', 'because'), (57, 'cuz', 'because'), (58, 'isnt', 'is not'), (59, 'isn\'t', 'is not'), (60, 'i\'m', 'i am'), (61, 'ima', 'i am a'), (62, 'chheese', 'cheese'), (63, 'watsup', 'what is up'), (64, 'let s', 'let us'), (65, 'he s', 'he is'), (66, 'she\'s', 'she is'), (67, 'i ll', 'i will'), (68, 'they ll', 'they will'), (69, 'you re', 'you are'), (70, 'you ve', 'you have'), (71, 'hy', 'hey'), (72, 'msician', 'musician'), (74, 'don t', 'do not'), (75, 'can t', 'cannot'), (76, 'favourite', 'favorite'), (77, 'colour', 'color'), (78, 'won t', 'will not'), (79, 'a/s/l', 'asl'), (80, 'haven t', 'have not'), (81, 'doesn t', 'does not'), (82, 'a/s/l/', 'asl'), (83, 'wht', 'what'), (84, 'It s been', 'It has been'), (85, 'its been', 'it has been'), (90, 'you re', 'you are'), (91, 'theres', 'there is'), (92, 'youa re', 'you are'), (93, 'youa aare', 'you are'), (94, 'wath', 'what'), (95, 'waths', 'what is'), (96, 'hy', 'hey'), (97, 'oke', 'ok'), (98, 'okay', 'ok'), (99, 'errm', 'erm'), (100, 'aare', 'are'), (101, 'shakespeare bot', 'william shakespeare'), (102, 'shakespearebot', 'william shakespeare'), (103, 'werwerwer', 'war'), (109, 'program o', 'programo'), (106, 'ddddddddd', 'ddddddddd'), (107, 'ddddddddd', 'ddddddddd'), (108, 'fgfgfgfg', 'fgfgfgfg'), (110, 'program-o', 'programo'), (111, 'fav', 'favorite'), (112, 'FUCK', 'FUCK'), (113, 'U', 'YOU'); +INSERT INTO `wordcensor` (`censor_id`, `word_to_censor`, `replace_with`, `bot_exclude`) VALUES (1, 'SHIT', 'S***', ''), (2, 'fuck', 'f***', ''); diff --git a/install/upgrade.php b/install/upgrade.php deleted file mode 100644 index d8d32b8..0000000 --- a/install/upgrade.php +++ /dev/null @@ -1,90 +0,0 @@ - \ No newline at end of file diff --git a/library/PDO_functions.php b/library/PDO_functions.php new file mode 100644 index 0000000..f90fd18 --- /dev/null +++ b/library/PDO_functions.php @@ -0,0 +1,406 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + $dbConn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); + $dbConn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); + } + catch (Exception $e) { + //exit('Program O has encountered a problem with connecting to the database. With any luck, the following information will help: ' . $e->getMessage()); + $errMsg = << +Error message: {$e->getMessage()}
      +Host: {$dbh}
      +Port: {$dbPort}
      +User: {$dbu}
      +Pass: {$dbp}
      +endMsg; + exit($errMsg); + } + + return $dbConn; +} + +/** + * function db_close() + * Close the connection to the database + * + * @link http://blog.program-o.com/?p=1343 + * @internal param resource $dbConn - the open connection + * + * @return null + */ +function db_close($inPGO = true) +{ + if ($inPGO) runDebug(__FILE__, __FUNCTION__, __LINE__, 'This DB is now closed. You don\'t have to go home, but you can\'t stay here.', 2); + return null; +} + +/** + * function db_fetch + * Fetches a single row of data from the database + * + * @param string $sql - The SQL query to execute + * @param mixed $params - either an array of placeholder/value pairs, or null, for no parameters + * @param string $file - the path/filename of the file that the function call originated in + * @param string $function - the name of the function that the function call originated in + * @param string $line - the line number of the originating function call + * + * @return mixed $out - Either the row of data from the DB query, or false, if the query fails + */ +function db_fetch($sql, $params = null, $file = 'unknown', $function = 'unknown', $line = 'unknown', $inPGO = true) +{ + $fn = basename($file); + global $dbConn; + if (!isset($dbConn)) $dbConn = db_open(); + try + { + $sth = $dbConn->prepare($sql); + if ($params === null) $sth->execute(); + else + { + foreach ($params as $label => $value) + { + switch (gettype($value)) + { + case 'boolean': + $paramType = PDO::PARAM_BOOL; + break; + case 'integer': + $paramType = PDO::PARAM_INT; + break; + case 'NULL': + $paramType = PDO::PARAM_NULL; + break; + default: $paramType = PDO::PARAM_STR; + } + $sth->bindValue($label, $value, $paramType); + } + $sth->execute(); + } + $out = $sth->fetch(); + } + catch (Exception $e) + { + //error_log("bad SQL encountered in file $file, line #$line. SQL:\n$sql\n", 3, _LOG_PATH_ . 'badSQL.txt'); + $pdoError = print_r($dbConn->errorInfo(), true); + + /** @noinspection PhpUndefinedVariableInspection */ + $psError = print_r($sth->errorInfo(), true); + if ($inPGO) { + $errSQL = db_parseSQL($sql, $params); + $errParams = print_r($params, true); + $eMessage = $e->getMessage(); + $rdMsg = <<prepare($sql); + if ($params === null) $sth->execute(); + else + { + foreach ($params as $label => $value) + { + switch (gettype($value)) + { + case 'boolean': + $paramType = PDO::PARAM_BOOL; + break; + case 'integer': + $paramType = PDO::PARAM_INT; + break; + case 'NULL': + $paramType = PDO::PARAM_NULL; + break; + default: $paramType = PDO::PARAM_STR; + } + $sth->bindValue($label, $value, $paramType); + } + $sth->execute(); + } + $out = $sth->fetchAll(); + } + catch (Exception $e) + { + //error_log("bad SQL encountered in file $file, line #$line. SQL:\n$sql\n", 3, _LOG_PATH_ . 'badSQL.txt'); + $pdoError = print_r($dbConn->errorInfo(), true); + + /** @noinspection PhpUndefinedVariableInspection */ + $psError = print_r($sth->errorInfo(), true); + $errSql = db_parseSQL($sql, $params); + $dParams = (!is_null($params)) ? print_r($params, true) : 'null'; + $errMsg = <<prepare($sql); + + switch (true) + { + case ($params === null): + $sth->execute(); + break; + + case ($multi === true): + foreach ($params as $row) { + $sth->execute($row); + } + break; + + default: + $sth->execute($params); + } + + return (!$multi) ? $sth->rowCount() : count($params); + } + catch (Exception $e) + { + $errParams = ($multi) ? $row : $params; + $paramsText = print_r($errParams, true); + $pdoError = print_r($dbConn->errorInfo(), true); + + /** @noinspection PhpUndefinedVariableInspection */ + $psError = print_r($sth->errorInfo(), true); + $eMessage = $e->getMessage(); + $errSQL = db_parseSQL($sql, $errParams); + $errorMessage = << $value) + { + if (is_numeric($key)) // deal with unnamed placeholders (?) + { + $limit = 1; + $search = '/\?/'; + $value = (is_numeric($value)) ? $value : "'$value'"; // if $value is a string, encase it in quotes + $out = preg_replace($search, $value, $out, $limit); + } + else // handle named parameters + { + $value = (is_numeric($value)) ? $value : "'$value'"; // if $value is a string, encase it in quotes + $out = str_replace($key, $value, $out); + } + } + } + return $out; +} + +function db_quote($in) +{ + global $dbConn; + if (!isset($dbConn)) $dbConn = db_open(); + return $dbConn->quote($in); +} + +function db_lastInsertId($name = null) +{ + global $dbConn; + if (!isset($dbConn)) $dbConn = db_open(); + return $dbConn->lastInsertId($name); +} + +/* A custom function that automatically constructs a multi insert statement. + * + * @param string $tableName Name of the table we are inserting into. + * @param array $data An "array of arrays" containing our row data. + * @param PDO $pdoObject Our PDO object. + * @return boolean TRUE on success. FALSE on failure. + */ +function db_multi_insert($tableName, $data, $file = 'unknown', $function = 'unknown', $line = 'unknown') +{ + global $dbConn; + if (!isset($dbConn)) $dbConn = db_open(); + //Will contain SQL snippets. + $rowsSQL = array(); + + //Will contain the values that we need to bind. + $toBind = array(); + + //Get a list of column names to use in the SQL statement. + $columnNames = array_keys($data[0]); + + //Loop through our $data array. + foreach($data as $arrayIndex => $row){ + $params = array(); + foreach($row as $columnName => $columnValue){ + $param = ":" . $columnName . $arrayIndex; + $params[] = $param; + $toBind[$param] = $columnValue; + } + $rowsSQL[] = "(" . implode(", ", $params) . ")"; + } + //save_file(_LOG_PATH_ . 'pdo_functions.db_multi_insert.params.txt', print_r($params, true)); + //return false; + + //Construct our SQL statement + $sql = "INSERT INTO `$tableName` (" . implode(", ", $columnNames) . ") VALUES " . implode(", ", $rowsSQL); + + try + { + //Prepare our PDO statement. + $sth = $dbConn->prepare($sql); + + //Bind our values. + foreach($toBind as $param => $val){ + $sth->bindValue($param, $val); + } + //Execute our statement (i.e. insert the data). + $out = ($sth->execute()) ? $sth->rowCount() : false; + } + catch (Exception $e) + { + //error_log("bad SQL encountered in file $file, line #$line. SQL:\n$sql\n", 3, _LOG_PATH_ . 'badSQL.txt'); + $pdoError = print_r($dbConn->errorInfo(), true); + + /** @noinspection PhpUndefinedVariableInspection */ + $psError = print_r($sth->errorInfo(), true); + $errSql = db_parseSQL($sql, $params); + $dParams = (!is_null($params)) ? print_r($params, true) : 'null'; + $errMsg = << + + + Access Denied + + + +

      Access Denied!

      +

      + The action you attempted requires the proper credentials to perform. Please + re-enter your username and password to try again. +

      + + \ No newline at end of file diff --git a/library/buildSelect.php b/library/buildSelect.php index 8ad4a3a..0e6052a 100644 --- a/library/buildSelect.php +++ b/library/buildSelect.php @@ -1,29 +1,48 @@ - - -endDebug; - $out = ''; - $padding = str_pad(" ",$space); - if ($selectText != "") { - $selDefault = (!$useSelDefault) ? '' : ' selected="selected"'; - $out .= "$padding\n"; - } - foreach($optionList as $key => $value){ - $sel =(in_array($key, $selList)) ? ' selected="selected"' : ''; - $key = ($useOnlyValues) ? $value : $key; - $out .= "$padding$value\n"; - } - return rtrim($out); -} -?> + +endDebug; + */ + $out = ''; + $padding = str_pad(" ", $space); + + if ($selectText != "") + { + $selDefault = (!$useSelDefault) ? '' : ' selected="selected"'; + $out .= "$padding\n"; + } + + foreach ($optionList as $key => $value) + { + $sel = (in_array($key, $selList)) ? ' selected="selected"' : ''; + $key = ($useOnlyValues) ? $value : $key; + $out .= "$padding$value\n"; + } + + return rtrim($out); +} \ No newline at end of file diff --git a/library/class.Parsedown.php b/library/class.Parsedown.php new file mode 100644 index 0000000..4737eee --- /dev/null +++ b/library/class.Parsedown.php @@ -0,0 +1,1548 @@ +DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + $markup = $this->lines($lines); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = true; + } + + continue; + } + + if (strpos($line, "\t") !== false) + { + $parts = explode("\t", $line); + + $line = $parts[0]; + + unset($parts[0]); + + foreach ($parts as $part) + { + $shortage = 4 - mb_strlen($line, 'utf-8') % 4; + + $line .= str_repeat(' ', $shortage); + $line .= $part; + } + } + + $indent = 0; + + while (isset($line[$indent]) and $line[$indent] === ' ') + { + $indent ++; + } + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + $Blocks []= $CurrentBlock; + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + { + $CurrentBlock['element']['text'] .= "\n".$text; + } + else + { + $Blocks []= $CurrentBlock; + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + + # ~ + + $Blocks []= $CurrentBlock; + + unset($Blocks[0]); + + # ~ + + $markup = ''; + + foreach ($Blocks as $Block) + { + if (isset($Block['hidden'])) + { + continue; + } + + $markup .= "\n"; + $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + } + + $markup .= "\n"; + + # ~ + + return $markup; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block'.$Type.'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block'.$Type.'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['element']['text']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['text']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + { + $Block = array( + 'markup' => $Line['body'], + ); + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['markup'] .= "\n" . $Line['body']; + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches)) + { + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if (isset($matches[1])) + { + $class = 'language-'.$matches[1]; + + $Element['attributes'] = array( + 'class' => $class, + ); + } + + $Block = array( + 'char' => $Line['text'][0], + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => $Element, + ), + ); + + return $Block; + } + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) + { + $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['text']['text'] .= "\n".$Line['body'];; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + if (isset($Line['text'][1])) + { + $level = 1; + + while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') + { + $level ++; + } + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '# '); + + $Block = array( + 'element' => array( + 'name' => 'h' . min(6, $level), + 'text' => $text, + 'handler' => 'line', + ), + ); + + return $Block; + } + } + + # + # List + + protected function blockList($Line) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + + if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'element' => array( + 'name' => $name, + 'handler' => 'elements', + ), + ); + + if($name === 'ol') + { + $listStart = stristr($matches[0], '.', true); + + if($listStart !== '1') + { + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $matches[2], + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['li']['text'] []= ''; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $text, + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + return $Block; + } + + if ($Line['indent'] > 0) + { + $Block['li']['text'] []= ''; + + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + unset($Block['interrupted']); + + return $Block; + } + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) $matches[1], + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text'] []= ''; + + unset($Block['interrupted']); + } + + $Block['element']['text'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['text'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + { + $Block = array( + 'element' => array( + 'name' => 'hr' + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (chop($Line['text'], $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'depth' => 0, + 'markup' => $Line['text'], + ); + + $length = strlen($matches[0]); + + $remainder = substr($Line['text'], $length); + + if (trim($remainder) === '') + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + $Block['closed'] = true; + + $Block['void'] = true; + } + } + else + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + return; + } + + if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) + { + $Block['closed'] = true; + } + } + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open + { + $Block['depth'] ++; + } + + if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close + { + if ($Block['depth'] > 0) + { + $Block['depth'] --; + } + else + { + $Block['closed'] = true; + } + } + + if (isset($Block['interrupted'])) + { + $Block['markup'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['markup'] .= "\n".$Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (preg_match('/^\[(.+?)\]:[ ]*?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) + { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => null, + ); + + if (isset($matches[3])) + { + $Data['title'] = $matches[3]; + } + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'hidden' => true, + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') + { + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + continue; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['text']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'text' => $headerCell, + 'handler' => 'line', + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => 'text-align: '.$alignment.';', + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'handler' => 'elements', + ), + ); + + $Block['element']['text'] []= array( + 'name' => 'thead', + 'handler' => 'elements', + ); + + $Block['element']['text'] []= array( + 'name' => 'tbody', + 'handler' => 'elements', + 'text' => array(), + ); + + $Block['element']['text'][0]['text'] []= array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $HeaderElements, + ); + + return $Block; + } + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + + foreach ($matches[0] as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => 'line', + 'text' => $cell, + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: '.$Block['alignments'][$index].';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $Elements, + ); + + $Block['element']['text'][1]['text'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + ), + ); + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '"' => array('SpecialCharacter'), + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), + '>' => array('SpecialCharacter'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!"*_&[:<>`~\\'; + + # + # ~ + # + + public function line($text) + { + $markup = ''; + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strpos($text, $marker); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + $Inline = $this->{'inline'.$inlineType}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $markup .= $this->unmarkedText($unmarkedText); + + # compile the inline + $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $markup .= $this->unmarkedText($unmarkedText); + + $text = substr($text, $markerPosition + 1); + } + + $markup .= $this->unmarkedText($text); + + return $markup; + } + + # + # ~ + # + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = 'mailto:' . $url; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => 'line', + 'text' => $matches[1], + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'markup' => $Excerpt['text'][1], + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['text'], + ), + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => 'line', + 'text' => null, + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]|(?R))*)\]/', $remainder, $matches)) + { + $Element['text'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['text']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']); + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) + { + return array( + 'markup' => '&', + 'extent' => 1, + ); + } + + $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); + + if (isset($SpecialCharacter[$Excerpt['text'][0]])) + { + return array( + 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', + 'extent' => 1, + ); + } + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'text' => $matches[1], + 'handler' => 'line', + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) + { + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $matches[0][0], + 'attributes' => array( + 'href' => $matches[0][0], + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + { + $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]); + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + if ($this->breaksEnabled) + { + $text = preg_replace('/[ ]*\n/', "
      \n", $text); + } + else + { + $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
      \n", $text); + $text = str_replace(" \n", "\n", $text); + } + + return $text; + } + + # + # Handlers + # + + protected function element(array $Element) + { + $markup = '<'.$Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= ' '.$name.'="'.$value.'"'; + } + } + + if (isset($Element['text'])) + { + $markup .= '>'; + + if (isset($Element['handler'])) + { + $markup .= $this->{$Element['handler']}($Element['text']); + } + else + { + $markup .= $Element['text']; + } + + $markup .= ''; + } + else + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + foreach ($Elements as $Element) + { + $markup .= "\n" . $this->element($Element); + } + + $markup .= "\n"; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $markup = $this->lines($lines); + + $trimmedMarkup = trim($markup); + + if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

      ') + { + $markup = $trimmedMarkup; + $markup = substr($markup, 3); + + $position = strpos($markup, "

      "); + + $markup = substr_replace($markup, '', $position, 4); + } + + return $markup; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + # + # Static Methods + # + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'sub', 'mark', + 'u', 'xm', 'sup', 'nobr', + 'var', 'ruby', + 'wbr', 'span', + 'time', + ); +} diff --git a/library/db_functions.php b/library/db_functions.php deleted file mode 100644 index b4ec6d1..0000000 --- a/library/db_functions.php +++ /dev/null @@ -1,91 +0,0 @@ - \ No newline at end of file diff --git a/library/error_functions.php b/library/error_functions.php index a4cdb2b..6028d49 100644 --- a/library/error_functions.php +++ b/library/error_functions.php @@ -1,269 +1,476 @@ - $subArray){ - $log .= "[NEWLINE]".$time.": "; - foreach($subArray as $index=>$value){ - $log .= $index."=".$value.",\t"; - } - } - - //echo ">>>>".$convoArr['conversation']['debugmode']; - - switch($convoArr['conversation']['debugmode']){ - case 0: //show in source code - $log = str_replace("[NEWLINE]","\r\n",$log); - display_on_page(0,$log); - break; - case 1: //write to log file - $log = str_replace("[NEWLINE]","\r\n",$log); - writefile_debug($convoArr); - break; - case 2: //show in webpage - $log = str_replace("[NEWLINE]","
      ",$log); - display_on_page(1,$log); - break; - case 3: //email to user - $log = str_replace("[NEWLINE]","\r\n",$log); - email_debug($convoArr['conversation']['debugemail'],$log); - break; - } - - - return $convoArr; -} - -/** - * function writefile_debug() - * Handles the debug when written to a file - * @param string $filename - the name of the file which is also the convo id - * @param string $log - the data to write -**/ -function writefile_debug($array) -{ - $myFile = _DEBUG_PATH_.session_id().".txt"; - - $mode = "w"; - $file = ""; - $tabs = ""; - - - $file = print_r($array,true); - - if(isset($array['conversation'])) - { - - $file .= "\r\n----------------------------------------\r\n"; - - $tmp_array = $array; - unset($tmp_array['debug']); - $file .= str_replace("'","\'",serialize($tmp_array)); - } - file_put_contents($myFile, $file); -} - - - -/** - * function display_on_page() - * Handles the debug when it is displayed on the webpage either in the source or on the page - * @param int $show_on_page - 0=show in source 1=output to user - * @param string $log - the data to show -**/ -function display_on_page($show_on_page,$log) -{ - if($show_on_page==0){ - echo ""; - }else{ - echo "
      ";
      -		print_r($log);
      -		echo "
      "; - } -} - - -/** - * function email_debug() - * Handles the debug when it is emailed to the botmaster - * @param string $email - email address - * @param string $log - the data to send -**/ -function email_debug($email,$log) -{ - $to = $email; - $subject = 'Debug Data'; - $message = $log; - $headers = 'From: '.$email . "\r\n" . - 'Reply-To: '.$email . "\r\n" . - 'X-Mailer: PHP/' . phpversion(); - - mail($to, $subject, $message, $headers); -} - - - - -/** - * function outputDebug() - * Used in the install/upgrade files will display it straightaway - * @param string $fileName - the file the error came from - * @param string $functionName - the function that triggered the error - * @param string $line - the line of code - * @param string $info - the message to display -**/ -function outputDebug($fileName, $functionName, $line, $info) { - - global $srai_iterations; - list($usec, $sec) = explode(" ",microtime()); - - //build timestamp index for the debug array - $string = ((float)$usec + (float)$sec); - $string2 = explode(".", $string); - $index = date("d-m-Y H:i:s", $string2[0]).":".$string2[1]; - - if($srai_iterations<1){ - $sr_it = 0;} - else { - $sr_it = $srai_iterations;} - - //add to array - print "
      ----------------------------------------------------"; - print "
      ".$index.": ".$fileName; - print "
      ".$index.": ".$functionName; - print "
      ".$index.": ".$line; - print "
      ".$index.": ".$info; - print "
      ".$index.": srai:".$sr_it; - print "
      ----------------------------------------------------"; -} - - -?> \ No newline at end of file + $subArray) + { + $log .= $time . '[NEWLINE]'; + + foreach ($subArray as $index => $value) + { + if (($index == 'fileName') || ($index == 'functionName') || ($index == 'line')) { + $log .= "[$value]"; + } + elseif ($index == 'info') { + $log .= "[NEWLINE]$value [NEWLINE]-----------------------[NEWLINE]"; + } + } + } + + $log = rtrim($log); + + if ($debug_level == 4) + { + //show the full array + $showArr = $convoArr; + unset ($showArr['debug']); + } + else + { + //show a reduced array + $showArr = reduceConvoArr($convoArr); + } + + if ($debug_level != 0) + { + //$log .= '[NEWLINE]-----------------------[NEWLINE]'; + $log .= "Debug Level: $debug_level"; + $log .= '[NEWLINE]-----------------------[NEWLINE]'; + $log .= "Debug Mode: $debug_mode"; + $log .= '[NEWLINE]-----------------------[NEWLINE]'; + $log .= 'CONVERSATION ARRAY'; + $log .= '[NEWLINE]-----------------------[NEWLINE]'; + $log .= str_replace("\n", PHP_EOL, print_r($showArr, true)); + $log .= '[NEWLINE]-----------------------[NEWLINE]'; + $log .= "Total execution time: $et Milliseconds. Goodbye."; + } + + switch ($debug_mode) { + case 0 : + //show in source code + $log = str_replace('[NEWLINE]', "\n", $log); + display_on_page(0, $log); + break; + case 1 : + //write to log file + $log = str_replace('[NEWLINE]', PHP_EOL, $log); + write_debug_to_file($log); + break; + case 2 : + //show in webpage + $log = str_replace('[NEWLINE]', '
      ', $log); + display_on_page(1, $log); + break; + case 3 : + //email to user + $log = str_replace('[NEWLINE]', "\r\n", $log); + email_debug($convoArr['conversation']['debugemail'], $log); + break; + } + return $convoArr; +} + +/** reduceConvoArr() + * A small function to create a smaller convoArr just for debuggin! + * + * @param array $convoArr - the big array to be reduced + * @return array + */ +function reduceConvoArr($convoArr) +{ + runDebug(__FILE__, __FUNCTION__, __LINE__, 'Reducing the conversation array.', 0); + + $showConvoArr = array(); + $showConvoArr['conversation'] = (isset($convoArr['conversation'])) ? $convoArr['conversation'] : ''; + $showConvoArr['aiml'] = (isset($convoArr['aiml'])) ? $convoArr['aiml'] : ''; + $showConvoArr['topic'][1] = (isset($convoArr['topic'][1])) ? $convoArr['topic'][1] : ''; + $showConvoArr['that'][1] = (isset($convoArr['that'][1])) ? $convoArr['that'][1] : ''; + + if (isset($convoArr['aiml']['stars'])) + { + foreach ($convoArr['aiml']['stars'] as $index => $star) { + if (!empty ($star)) { + $showConvoArr['star'][$index] = $star; + } + } + } + + $showConvoArr['input'][1] = (isset($convoArr['input'][1])) ? $convoArr['input'][1] : ''; + $showConvoArr['stack']['top'] = (isset($convoArr['stack']['top'])) ? $convoArr['stack']['top'] : ''; + $showConvoArr['stack']['last'] = (isset($convoArr['stack']['last'])) ? $convoArr['stack']['last'] : ''; + $showConvoArr['client_properties'] = (isset($convoArr['client_properties'])) ? $convoArr['client_properties'] : ''; + $showConvoArr['aiml']['user_raw'] = (isset($convoArr['aiml']['user_raw'])) ? $convoArr['aiml']['user_raw'] : ''; + $showConvoArr['aiml']['lookingfor'] = (isset($convoArr['aiml']['lookingfor'])) ? $convoArr['aiml']['lookingfor'] : ''; + $showConvoArr['aiml']['pattern'] = (isset($convoArr['aiml']['pattern'])) ? $convoArr['aiml']['pattern'] : ''; + $showConvoArr['aiml']['thatpattern'] = (isset($convoArr['aiml']['thatpattern'])) ? $convoArr['aiml']['thatpattern'] : ''; + $showConvoArr['aiml']['topic'] = (isset($convoArr['aiml']['topic'])) ? $convoArr['aiml']['topic'] : ''; + $showConvoArr['aiml']['score'] = (isset($convoArr['aiml']['score'])) ? $convoArr['aiml']['score'] : ''; + $showConvoArr['aiml']['aiml_id'] = (isset($convoArr['aiml']['aiml_id'])) ? $convoArr['aiml']['aiml_id'] : ''; + $showConvoArr['aiml']['parsed_template'] = (isset($convoArr['aiml']['parsed_template'])) ? $convoArr['aiml']['parsed_template'] : ''; + $showConvoArr['user_say'][1] = (isset($convoArr['user_say'][1])) ? $convoArr['user_say'][1] : ''; + $showConvoArr['that_raw'][1] = (isset($convoArr['that_raw'][1])) ? $convoArr['that_raw'][1] : ''; + $showConvoArr['parsed_template'][1] = (isset($convoArr['parsed_template'][1])) ? $convoArr['parsed_template'][1] : ''; + + return $showConvoArr; +} + +/** + * function write_debug_to_file() + * Handles the debug when written to a file + * + * @param string $log - the data to write + * @internal param string $myFile - the name of the file which is also the convo id + */ +function write_debug_to_file($log) +{ + global $new_convo_id; + + $session_id = ($new_convo_id === false) ? session_id() : $new_convo_id; + $myFile = _DEBUG_PATH_ . $session_id . '.txt'; + $log = str_replace(array(PHP_EOL, "\r", "\n"), "\n", $log); + $log = str_replace("\n", PHP_EOL, $log); + + file_put_contents($myFile, $log); +} + +/** + * function display_on_page() + * Handles the debug when it is displayed on the webpage either in the source or on the page + * @param int $show_on_page - 0=show in source 1=output to user + * @param string $log - the data to show + **/ +function display_on_page($show_on_page, $log) +{ + if ($show_on_page == 0) + { + echo ''; + } + else + { + echo '
      ';
      +        print_r($log);
      +        echo '
      '; + } +} + +/** + * function email_debug() + * Handles the debug when it is emailed to the botmaster + * @param string $email - email address + * @param string $log - the data to send + **/ +function email_debug($email, $log) +{ + $to = $email; + $subject = 'Debug Data'; + $message = $log; + $headers = 'From: ' . $email . "\r\nReply-To: $email \r\n" . 'X-Mailer: PHP/' . phpversion(); + + mail($to, $subject, $message, $headers); +} + +/** + * function outputDebug() + * Used in the install/upgrade files will display it straightaway + * + * @param string $fileName - the file the error came from + * @param string $functionName - the function that triggered the error + * @param string $line - the line of code + * @param string $info - the message to display + **/ +function outputDebug($fileName, $functionName, $line, $info) +{ + global $srai_iterations; + + list($usec, $sec) = explode(' ', microtime()); + + //build timestamp index for the debug array + $string = ((float)$usec + (float)$sec); + $string2 = explode('.', $string); + $index = date('d-m-Y H:i:s', $string2[0]) . ':' . $string2[1]; + + if ($srai_iterations < 1) { + $sr_it = 0; + } + else { + $sr_it = $srai_iterations; + } + + //add to array + print '
      ----------------------------------------------------'; + print '
      ' . $index . ': ' . $fileName; + print '
      ' . $index . ': ' . $functionName; + print '
      ' . $index . ': ' . $line; + print '
      ' . $index . ': ' . $info; + print '
      ' . $index . ': srai:' . $sr_it; + print '
      ----------------------------------------------------'; +} + +/** + * Function save_file + * + * @param $file + * @param $content + * @param bool $append + * @return int + * @throws Exception + */ +function save_file($file, $content, $append = false) +{ + if (function_exists('file_put_contents')) + { + ($append) ? $x = file_put_contents($file, $content, FILE_APPEND) : $x = file_put_contents($file, $content); + } + else + { + $fileMode = ($append === true) ? 'a' : 'w'; + + if (($fh = fopen($file, $fileMode)) === false) { + throw new Exception('Can\'t open the file!'); + } + + $cLen = strlen($content); + fwrite($fh, $content, $cLen); + fclose($fh); + } + + return 1; +} + +/** + * Function mem_tracer + * + * @param $file + * @param $function + * @param $line + * @return void + */ +function mem_tracer($file, $function, $line) +{ + $file = str_replace(_BOTCORE_PATH_ . 'aiml' . DIRECTORY_SEPARATOR, '', $file); + $mem_state = number_format(memory_get_usage(true)); + $trace_file = _DEBUG_PATH_ . session_id() . '.mem_trace.txt'; + + if (!file_exists($trace_file)) /** @noinspection PhpUndefinedConstantInspection */ + { + save_file($trace_file, 'PHP memory limit = ' . ini_get('memory_limit') . "\nBase folder = " . _BASE_PATH_ . "\n"); + } + + $append = true; + $content = "{$file}.{$function}.{$line}: Memory used = {$mem_state} bytes\r\n"; + + save_file($trace_file, $content, $append); +} + +function wildcard_handler($errNum, $errMsg, $errFile, $errLine, $errContext) +{ + $saveContent = "An error (Number {$errNum}, {$errMsg}) was caught in file {$errFile}, line {$errLine}. The following variable is what you are looking for:\n"; + $saveContent .= print_r($errContext['aiml_pattern_wildcards'], true) . '[NEWLINE]-----------------------[NEWLINE]'; + + $log = ''; + global $debugArr; + foreach ($debugArr as $time => $subArray) + { + $log .= "{$time}[NEWLINE]"; + + foreach ($subArray as $index => $value) + { + if (($index == 'fileName') || ($index == 'functionName') || ($index == 'line')) { + $log .= "[$value]"; + } + elseif ($index == 'info') { + $log .= "[NEWLINE]{$value}[NEWLINE]-----------------------[NEWLINE]"; + } + } + } + + $log = rtrim($log); + $log = str_replace('[NEWLINE]', PHP_EOL, $log); + $saveContent = str_replace('[NEWLINE]', PHP_EOL, $saveContent); + save_file(_LOG_PATH_ . 'emergency_debug_file.txt', $log); + save_file(_LOG_PATH_ . 'wildcard_errors.txt', $saveContent, true); + save_file(_LOG_PATH_ . 'wildcard_error_context.txt', $errContext, true); + return json_encode(array('error' => 'Check the logs!', 'botsay' => 'Houston, we have a problem!')); + +} + +/** + * Function handle_errors + * + * @param (int) $errNum + * @param (string) $errMsg + * @param (string) $errFile + * @param (int) $errLine + * @param (array) $errContext + * @return (boolean) + */ +function handle_errors($errNum, $errMsg, $errFile, $errLine, $errContext) +{ + global $msg; + if (!defined('ERROR_DEBUGGING')) define('ERROR_DEBUGGING', false); //just in case a fresh install hasn't been performed for some reason + $myMsg = <<format("m.d.Y.H.i.s.u"); + save_file(_LOG_PATH_ . "admin.{$fn}.error.context.{$contextDate}.log", $myMsg . PHP_EOL . "Context:" . PHP_EOL . $context); + } + else save_file(_LOG_PATH_ . "admin.{$fn}.error.log", $myMsg . PHP_EOL . PHP_EOL, true); + //logout(); + $msg .= "
      $myMsg
      "; + return true; +} diff --git a/library/misc_functions.php b/library/misc_functions.php new file mode 100644 index 0000000..c1ec2bc --- /dev/null +++ b/library/misc_functions.php @@ -0,0 +1,290 @@ + 0) + { + foreach ($options as $key => $value) { + curl_setopt($ch, $key, $value); + } + } + + if (is_array($params) && count($params) > 0) + { + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $params); + } + + $data = curl_exec($ch); + curl_close($ch); + + return $data; + } + else { + return $failed; + } +} + +/** + * function _strtolower + * Performs multibyte or standard lowercase conversion of a string, + * based on configuration. + * + * @param string $text The string to convert. + * @return string The input string converted to lower case. + */ +function _strtolower($text) +{ + return (IS_MB_ENABLED) ? mb_strtolower($text) : strtolower($text); +} + +/** + * function _strtoupper + * Performs multibyte or standard uppercase conversion of a string, + * based on configuration. + * + * @param string $text The string to convert. + * @return string The string converted to UPPER CASE. + */ +function _strtoupper($text) +{ + return (IS_MB_ENABLED) ? mb_strtoupper($text) : strtoupper($text); +} + +/** + * function _title_case + * + * Performs multibyte or standard uppercase conversion of the first character of a string, + * based on configuration. + * + * @param string $text The string to convert. + * @return string The string converted to Title Case. + */ +function _title_case($text) +{ + global $charset; + return (IS_MB_ENABLED) ? mb_convert_case($text, MB_CASE_TITLE, $charset) : ucwords($text); +} + +/** + * function _substr + * + * Gets the substring of either single byte or multi-byte strings by index and length, depending on configuration + * + * @param string $text + * @param string $start + * @param string $len + * @param string $encoding + * @return string + */ +function _substr($text, $start, $len = null, $encoding = null) +{ + if ($encoding === null) { + $encoding = mb_internal_encoding(); + } + + return (IS_MB_ENABLED) ? mb_substr($text, $start, $len, $encoding) : substr($text, $start, $len); +} + +/** + * function normalize_text + * Transforms text to uppercase, removes all punctuation, and strips extra whitespace + * + * @param string $text - The text to perform the transformations on + * @param bool $convert_case - Flag for converting text to uppercase. Default = true + * @return string $normalized_text - The completely transformed text + */ +function normalize_text($text, $convert_case = true) +{ + runDebug(__FILE__, __FUNCTION__, __LINE__, "Begin normalization - text = '$text'", 4); + + $srch = array( + '/(\d+)\s*-\s*(\d+)/', + '/(\d+)\s*\+\s*(\d+)/', + '/(\d+)\s*\*\s*(\d+)/', + '/(\d+)\s*x\s*(\d+)/', + '/(\d+)\s*\/\s*(\d+)/', + '/[[:punct:]]/uis', + '/\s\s+/', + ); + $repl = array( + '$1 MINUS $2', + '$1 PLUS $2', + '$1 TIMES $2', + '$1 TIMES $2', + '$1 DIVIDEDBY $2', + ' ', + ' ', + ); + + $normalized_text = preg_replace($srch, $repl, $text); + $normalized_text = ($convert_case) ? _strtoupper($normalized_text) : $normalized_text; + $normalized_text = trim($normalized_text); + + runDebug(__FILE__, __FUNCTION__, __LINE__, "Normalization complete. Text = '$normalized_text'", 4); + + return $normalized_text; +} + +/** + * Function getFooter + * + * + * @return string + */ +function getFooter() +{ + $ip = $_SERVER['REMOTE_ADDR']; + + $name = (isset($_SESSION['poadmin']['name'])) ? $_SESSION['poadmin']['name'] : 'unknown'; + $lip = (isset($_SESSION['poadmin']['lip'])) ? $_SESSION['poadmin']['lip'] : 'unknown'; + $last = (isset($_SESSION['poadmin']['last_login'])) ? $_SESSION['poadmin']['last_login'] : 'unknown'; + $llast = (isset($_SESSION['poadmin']['prior_login'])) ? $_SESSION['poadmin']['prior_login'] : 'unknown'; + + $admess = "You are logged in as: $name from $ip since: $last"; + $admess .= "
      You last logged in from $lip on $llast"; + $today = date("Y"); + + $out = <<© $today My Program-O
      $admess

      +endFooter; + + return $out; +} + +/* + * function pgo_session_gc + * Performs garbage collection on expired session files + * @return void + */ + + + function pgo_session_gc() + { + global $session_lifetime; + $session_files = glob(_SESSION_PATH_ . 'sess_*'); + clearstatcache(); + foreach($session_files as $file) + { + $gcRand = mt_rand(0,10000); // random number from 0 to 10,000 + $lastAccessed = fileatime($file); + if ($gcRand >= 10 && $lastAccessed < (time() - $session_lifetime)) unlink($file); + } + } + +/** + * function addUnknownInput + * Adds previously unknown inputs to the database for later examination, and possible creation of new AIML categories + * @param array $convoArr + * @param string $input + * @param int $bot_id + * @param string $user_id + * @return void + */ + +function addUnknownInput($convoArr, $input, $bot_id, $user_id) +{ + global $dbn; + + $default_aiml_pattern = _strtolower(get_convo_var($convoArr, 'conversation', 'default_aiml_pattern')); + $lcInput = _strtolower($input); + + if ($lcInput == $default_aiml_pattern) { + runDebug(__FILE__, __FUNCTION__, __LINE__, "The input ({$lcInput}) matched the default pattern, so no entry was made.", 2); + return; + } + + /** @noinspection SqlDialectInspection */ + $sql = "INSERT INTO `$dbn`.`unknown_inputs` (`id`, `bot_id`, `input`, `user_id`, `timestamp`) VALUES(null, :bot_id, :input, :user_id, CURRENT_TIMESTAMP);"; + + $params = array( + ':bot_id' => $bot_id, + ':input' => $input, + ':user_id' => $user_id, + ); + $numRows = db_write($sql, $params, false, __FILE__, __FUNCTION__, __LINE__); + if ($numRows > 0) runDebug(__FILE__, __FUNCTION__, __LINE__, 'Entry successfully added!', 2); +} + +/** + * function pretty_print_r + * outputs a formatted text string from a print_r() statement + * @param mixed $var + * @return string $out + */ + +function pretty_print_r($var, $returnString = false) +{ + switch (true) + { + case (is_array($var)): + //$out = implode_recursive(",\n", $var, __FILE__, __FUNCTION__, __LINE__); + $out = ''; + foreach ($var as $key => $value) + { + $message = (is_array($value)) ? print_r($value, true) : $value; + $out .= "[{$key}]\n{$message}\n--------------------------------------\n"; + } + break; + default: + $out = $var; + } + switch ($returnString) + { + case true: return trim($out); + } + echo trim($out); +} + +function pretty_print_XML($element) +{ + $dom = dom_import_simplexml($element); + $dom = new DOMDocument("1.0"); + $dom->preserveWhiteSpace = false; + $dom->formatOutput = true; + $dom->loadXML($element->asXML()); + return $dom->saveXML(); +} + +function clean_inputs($allowed_vars = null) +{ + $formVars = array(); + if (!empty($allowed_vars)) + { + foreach ($allowed_vars as $key => $value){ + if (!isset($_REQUEST[$key])) continue; + $curVar = $_REQUEST[$key]; + $val = (is_array($curVar))? filter_var_array($curVar, $value) : filter_var(trim($curVar), $value); + $formVars[$key] = $val; + } + $out = $formVars; + } + else $out = filter_var_array($_REQUEST); + return $out; +} diff --git a/library/reference/aiml tag list.txt b/library/reference/aiml tag list.txt new file mode 100644 index 0000000..2e7bee5 --- /dev/null +++ b/library/reference/aiml tag list.txt @@ -0,0 +1,37 @@ + + + + + (pattern-side - no index) + (template-side - with index) +