{"action":"closed","issue":{"url":"https://api.github.com/repos/gen0cide/gscript/issues/45","repository_url":"https://api.github.com/repos/gen0cide/gscript","labels_url":"https://api.github.com/repos/gen0cide/gscript/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/gen0cide/gscript/issues/45/comments","events_url":"https://api.github.com/repos/gen0cide/gscript/issues/45/events","html_url":"https://github.com/gen0cide/gscript/issues/45","id":298716501,"number":45,"title":"gscript 0.1.0 Feature List","user":{"login":"gen0cide","id":1515437,"avatar_url":"https://avatars1.githubusercontent.com/u/1515437?v=4","gravatar_id":"","url":"https://api.github.com/users/gen0cide","html_url":"https://github.com/gen0cide","followers_url":"https://api.github.com/users/gen0cide/followers","following_url":"https://api.github.com/users/gen0cide/following{/other_user}","gists_url":"https://api.github.com/users/gen0cide/gists{/gist_id}","starred_url":"https://api.github.com/users/gen0cide/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gen0cide/subscriptions","organizations_url":"https://api.github.com/users/gen0cide/orgs","repos_url":"https://api.github.com/users/gen0cide/repos","events_url":"https://api.github.com/users/gen0cide/events{/privacy}","received_events_url":"https://api.github.com/users/gen0cide/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"ahhh","id":836166,"avatar_url":"https://avatars0.githubusercontent.com/u/836166?v=4","gravatar_id":"","url":"https://api.github.com/users/ahhh","html_url":"https://github.com/ahhh","followers_url":"https://api.github.com/users/ahhh/followers","following_url":"https://api.github.com/users/ahhh/following{/other_user}","gists_url":"https://api.github.com/users/ahhh/gists{/gist_id}","starred_url":"https://api.github.com/users/ahhh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahhh/subscriptions","organizations_url":"https://api.github.com/users/ahhh/orgs","repos_url":"https://api.github.com/users/ahhh/repos","events_url":"https://api.github.com/users/ahhh/events{/privacy}","received_events_url":"https://api.github.com/users/ahhh/received_events","type":"User","site_admin":false},"assignees":[{"login":"ahhh","id":836166,"avatar_url":"https://avatars0.githubusercontent.com/u/836166?v=4","gravatar_id":"","url":"https://api.github.com/users/ahhh","html_url":"https://github.com/ahhh","followers_url":"https://api.github.com/users/ahhh/followers","following_url":"https://api.github.com/users/ahhh/following{/other_user}","gists_url":"https://api.github.com/users/ahhh/gists{/gist_id}","starred_url":"https://api.github.com/users/ahhh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahhh/subscriptions","organizations_url":"https://api.github.com/users/ahhh/orgs","repos_url":"https://api.github.com/users/ahhh/repos","events_url":"https://api.github.com/users/ahhh/events{/privacy}","received_events_url":"https://api.github.com/users/ahhh/received_events","type":"User","site_admin":false},{"login":"gen0cide","id":1515437,"avatar_url":"https://avatars1.githubusercontent.com/u/1515437?v=4","gravatar_id":"","url":"https://api.github.com/users/gen0cide","html_url":"https://github.com/gen0cide","followers_url":"https://api.github.com/users/gen0cide/followers","following_url":"https://api.github.com/users/gen0cide/following{/other_user}","gists_url":"https://api.github.com/users/gen0cide/gists{/gist_id}","starred_url":"https://api.github.com/users/gen0cide/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gen0cide/subscriptions","organizations_url":"https://api.github.com/users/gen0cide/orgs","repos_url":"https://api.github.com/users/gen0cide/repos","events_url":"https://api.github.com/users/gen0cide/events{/privacy}","received_events_url":"https://api.github.com/users/gen0cide/received_events","type":"User","site_admin":false}],"milestone":null,"comments":2,"created_at":"2018-02-20T19:21:15Z","updated_at":"2018-03-11T05:38:34Z","closed_at":"2018-03-11T05:38:34Z","author_association":"OWNER","body":"I wanted to document some of my thoughts on what features I'd like to see in gscript for us to take it to v0.1.0, the first \"stable\" release I'd like to ship.\r\n\r\n# New Functions\r\n\r\n- [x] `FilePerms(path, 0755, recursive)` - allows a script to change the permissions of files and directories, including recursively.\r\n- [x] `FileStat(path)` - retrieve the modified/access/create times for a given file or directory.\r\n- [x] `SetModTime(path, timestamp)` - Set the modified time of a file.\r\n- [x] `SetAccessTime(path, timestamp)` - Set the access time of a file.\r\n- [x] `SetCreateTime(path, timestamp)` - Set the create time of a file.\r\n- [x] `FindProcess(searchterm)` - Find processes that match a specific regular expression.\r\n- [ ] `DetectSandbox()` - Detect if the value is running in a sandbox.\r\n- [ ] `DetectAV()` - Detect AntiVirus that might be running on the machine.\r\n- [x] `SelfPath()` - Get current path to the running gscript executable.\r\n- [x] `InstallSystemService(svc_config)` - Allows a system service to be installed (cross platform). `svc_config` is a new data structure that will need to be defined.\r\n- [ ] `RenderTemplate(template_bytes, vars)` - Allows the user to embed a golang template and render it at runtime.\r\n\r\n# Compiler Enhancements\r\n\r\n- [x] Move compiler and runtime into their own sub packages. This will reduce final binary size.\r\n- [x] Minify gscript's before embedding script into final binary.\r\n- [x] Implement better embedded compression to reduce binary size.\r\n- [x] Strip symbols from final binary.\r\n- [x] Create new subcommand `new` that writes a gscript template to a location of your choice.\r\n- [x] Add `--upx` flag to `compile` command to UPX the final binary to the smallest possible size.\r\n- [ ] Implement simple encryption for payloads.\r\n- [ ] Port GOTTI binary obfuscation to the gscript compiler.\r\n\r\n# New Macros\r\n\r\n- [ ] `//require:/path/to/lib.gs` - This will allow a gscript to reference custom functions from a javascript file. The gscript library should NOT implement the hook functions and the compiler will return an error if it does.\r\n- [x] `//priority:$VAL` - Allows the user to specify lexical ordering of scripts. Scripts without priority will default to priority of 100. All gscripts of a similar priority will be executed concurrently.\r\n- [ ] `//os:windows` - Allows the user to specify what OS this gscript is intended for, preventing bundling of incompatible gscripts into the final binary.\r\n- [ ] `//arch:386` - Same as `//os` but for architecture.\r\n- [x] `//timeout:30` - Allows the user to set a timeout for this gscript to prevent it from hanging during execution. Default will be set to 10 seconds.\r\n\r\n# Bug Fixes\r\n\r\n- [x] Fix shell incompatibility with windows terminals.\r\n- [x] Change compiler output prefix from GENESIS to GSE.\r\n- [x] Fix Halt() command to stop the entire gscript binary including all goroutines and VMs.\r\n- [x] Implement a file not found timeout on the `//import_url` macro.\r\n- [ ] Migrate process injection to an interface that gets satisfied for all platform types.\r\n\r\n# Tech Debt\r\n\r\n- [x] TBD, but definitely will be some.\r\n- [x] More documentation needed.\r\n- [x] README.md redesign to improve user learning.\r\n\r\n"}}
{"actor":{"display_login":"gen0cide"}}