diff --git a/py-kms/pykms_WebUI.py b/py-kms/pykms_WebUI.py index 43285a5a..70581bdb 100644 --- a/py-kms/pykms_WebUI.py +++ b/py-kms/pykms_WebUI.py @@ -138,4 +138,11 @@ def products(): count_products_windows=countProductsWindows, count_products_office=countProductsOffice ) - \ No newline at end of file + +@app.route('/instructions') +def instructions(): + _increase_serve_count() + return render_template( + 'instructions.html', + path='/instructions/' + ) diff --git a/py-kms/static/css/styles.css b/py-kms/static/css/styles.css new file mode 100644 index 00000000..3019547f --- /dev/null +++ b/py-kms/static/css/styles.css @@ -0,0 +1,32 @@ +/* styles.css */ + +/* Styles for the scroll-to-top button */ +.scroll-to-top { + position: fixed; + bottom: 1em; + right: 1em; + background-color: #3273dc; + color: white; + border: none; + border-radius: 50%; + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + font-size: 20px; + cursor: pointer; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); + transition: background-color 0.3s; +} + +.dynamic-width-block { + width: 50%; + margin-left: 0; + padding: 20px; + box-sizing: border-box; +} + + + + diff --git a/py-kms/static/img/off1.webp b/py-kms/static/img/off1.webp new file mode 100644 index 00000000..60faabe6 Binary files /dev/null and b/py-kms/static/img/off1.webp differ diff --git a/py-kms/static/img/off2.webp b/py-kms/static/img/off2.webp new file mode 100644 index 00000000..698480a3 Binary files /dev/null and b/py-kms/static/img/off2.webp differ diff --git a/py-kms/static/img/off3.webp b/py-kms/static/img/off3.webp new file mode 100644 index 00000000..eb4677ed Binary files /dev/null and b/py-kms/static/img/off3.webp differ diff --git a/py-kms/static/img/off4.webp b/py-kms/static/img/off4.webp new file mode 100644 index 00000000..61c0162d Binary files /dev/null and b/py-kms/static/img/off4.webp differ diff --git a/py-kms/static/img/win1.webp b/py-kms/static/img/win1.webp new file mode 100644 index 00000000..6d68ef7b Binary files /dev/null and b/py-kms/static/img/win1.webp differ diff --git a/py-kms/static/img/win2.webp b/py-kms/static/img/win2.webp new file mode 100644 index 00000000..431889e1 Binary files /dev/null and b/py-kms/static/img/win2.webp differ diff --git a/py-kms/static/scripts/2.0.8/clipboard.min.js b/py-kms/static/scripts/2.0.8/clipboard.min.js new file mode 100644 index 00000000..947f2e76 --- /dev/null +++ b/py-kms/static/scripts/2.0.8/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={134:function(t,e,n){"use strict";n.d(e,{default:function(){return r}});var e=n(279),i=n.n(e),e=n(370),a=n.n(e),e=n(817),o=n.n(e);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n py-kms {% block title %}{% endblock %} - + + + +
{% block content %}{% endblock %} @@ -39,7 +50,7 @@

py-kms is online since {{ start_time }}. - This instance was accessed {{ get_serve_count() }} times. View this softwares license here. + This instance was accessed {{ get_serve_count() }} times. View this software's license here. {% if version_info %}
This instance is running version "{{ version_info['hash'] }}" from branch "{{ version_info['branch'] }}" of py-kms. {% endif %} @@ -47,10 +58,15 @@

+ + + - \ No newline at end of file + diff --git a/py-kms/templates/instructions.html b/py-kms/templates/instructions.html new file mode 100644 index 00000000..79497777 --- /dev/null +++ b/py-kms/templates/instructions.html @@ -0,0 +1,147 @@ +{% extends 'base.html' %} + +{% block title %}Instructions{% endblock %} + +{% block content %} +
+ +
+

Documentation

+

+ The wiki is available on readthedocs.io. It should provide you all the necessary information about how to set + up and use py-kms, without cluttering this readme. The documentation also includes more details about + activation with py-kms and how to get GVLK keys. +

+
+ +
+

Getting Started

+

+ The //nologo option of cscript was used only to hide the startup logo. +

+
    +
  1. Windows
  2. +
  3. Office
  4. + +
+
+ +
+

Windows

+
    +
  1. Run a Command Prompt as Administrator (you are directly in C:\Windows\System32 path); +
      +
    • cscript //nologo slmgr.vbs /upk
    • +
    +
  2. +
  3. This is optional, it's for uninstalling any existing product key; +
      +
    • cscript //nologo slmgr.vbs /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
    • +
    +
  4. +
  5. Then put in your product's GVLK; +
      +
    • cscript //nologo slmgr.vbs /skms ip_adress:1688
    • +
    +
  6. +
  7. Set connection parameters; +
      +
    • cscript //nologo slmgr.vbs /ato
    • +
    +
  8. +
  9. Try online activation, but if that fails with error… +
      +
    • * 0xC004F074 You'll most likely have to configure your firewall to accept incoming + connections on TCP port 1688. So for Linux users (server-side with + pykms_Server.py running): sudo ufw allow 1688 (revert this rule + sudo ufw delete allow 1688) should fix that.
    • +
    • * 0xC004F069 Take a look at the issue here, it may + help you…
    • +
    +
      +
    • cscript //nologo slmgr.vbs /ato
    • +
    +
  10. +
  11. Attempt online activation (now with traffic on 1688 enabled); +
      +
    • cscript //nologo slmgr.vbs /dlv
    • +
    +
  12. +
  13. View license information (optional).
  14. + +
+
+ win1 + win2 +
+
+ +
+

Office

+

+ Note that you'll have to install a volume license (VL) version of Office. Office versions downloaded from + MSDN and / or Technet are non-VL. +

+
    +
  1. Run a Command Prompt as Administrator and navigate to Office folder + cd C:\ProgramFiles\Microsoft Office\OfficeXX (64-bit path) or + cd C:\ProgramFiles(x86)\Microsoft Office\OfficeXX (32-bit path), where XX = 14 + for Office 2010, 15 for Office 2013, 16 for Office 2016 or Office 2019 or + Office 2021;
  2. +
  3. As you can see, running /dstatus, my Office is expiring (14 days remaining); +
      +
    • cscript //nologo ossp.vbs /dstatus
    • +
    +
  4. +
  5. Only for example, let's go to uninstall this product; +
      +
    • cscript //nologo ossp.vbs /unpkey:WFG99
    • +
    +
  6. +
  7. This is confirmed running /dstatus again; +
      +
    • cscript //nologo ossp.vbs /dstatus
    • +
    +
  8. +
  9. Now i put my product's GVLK (and you your key); +
      +
    • cscript //nologo ossp.vbs /inpkey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
    • +
    +
  10. +
  11. Set the connection parameter KMS server address; +
      +
    • cscript //nologo ossp.vbs /sethst:ip_adres
    • +
    +
  12. +
  13. Set the connection parameter KMS server port; +
      +
    • cscript //nologo ossp.vbs /setprt:1688
    • +
    +
  14. +
  15. Activate installed Office product key; +
      +
    • cscript //nologo ossp.vbs /act
    • +
    +
  16. +
  17. View license informations (in my case product is now licensed and remaining grace 180 days as expected). +
      +
    • cscript //nologo ossp.vbs /dstatus
    • +
    +
  18. + +
+
+ off1 + off2 + off3 + off4 +
+
+
+{% endblock %} diff --git a/py-kms/templates/products.html b/py-kms/templates/products.html index 96653045..f648037b 100644 --- a/py-kms/templates/products.html +++ b/py-kms/templates/products.html @@ -1,6 +1,6 @@ {% extends 'base.html' %} -{% block title %}clients{% endblock %} +{% block title %}Clients{% endblock %} {% block content %}